summaryrefslogtreecommitdiff
path: root/vgui2/src/VPanel.h
diff options
context:
space:
mode:
Diffstat (limited to 'vgui2/src/VPanel.h')
-rw-r--r--vgui2/src/VPanel.h146
1 files changed, 146 insertions, 0 deletions
diff --git a/vgui2/src/VPanel.h b/vgui2/src/VPanel.h
new file mode 100644
index 0000000..754fcfd
--- /dev/null
+++ b/vgui2/src/VPanel.h
@@ -0,0 +1,146 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//===========================================================================//
+
+#ifndef VPANEL_H
+#define VPANEL_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <vgui/Dar.h>
+#include <vgui/IPanel.h>
+
+#ifdef GetClassName
+#undef GetClassName
+#endif
+
+namespace vgui
+{
+
+ class SurfaceBase;
+ class IClientPanel;
+ struct SerialPanel_t;
+
+ //-----------------------------------------------------------------------------
+ // Purpose: VGUI private implementation of panel
+ //-----------------------------------------------------------------------------
+ class VPanel
+ {
+ public:
+ VPanel();
+ virtual ~VPanel();
+
+ virtual void Init(IClientPanel *attachedClientPanel);
+
+ virtual SurfacePlat *Plat();
+ virtual void SetPlat(SurfacePlat *pl);
+
+ virtual HPanel GetHPanel() { return _hPanel; } // safe pointer handling
+ virtual void SetHPanel(HPanel hPanel) { _hPanel = hPanel; }
+
+ virtual bool IsPopup();
+ virtual void SetPopup(bool state);
+ virtual bool IsFullyVisible();
+
+ virtual void SetPos(int x, int y);
+ virtual void GetPos(int &x, int &y);
+ virtual void SetSize(int wide,int tall);
+ virtual void GetSize(int& wide,int& tall);
+ virtual void SetMinimumSize(int wide,int tall);
+ virtual void GetMinimumSize(int& wide,int& tall);
+ virtual void SetZPos(int z);
+ virtual int GetZPos();
+
+ virtual void GetAbsPos(int &x, int &y);
+ virtual void GetClipRect(int &x0, int &y0, int &x1, int &y1);
+ virtual void SetInset(int left, int top, int right, int bottom);
+ virtual void GetInset(int &left, int &top, int &right, int &bottom);
+
+ virtual void Solve();
+
+ virtual void SetVisible(bool state);
+ virtual void SetEnabled(bool state);
+ virtual bool IsVisible();
+ virtual bool IsEnabled();
+ virtual void SetParent(VPanel *newParent);
+ virtual int GetChildCount();
+ virtual VPanel *GetChild(int index);
+ virtual VPanel *GetParent();
+ virtual void MoveToFront();
+ virtual void MoveToBack();
+ virtual bool HasParent(VPanel *potentialParent);
+
+ virtual CUtlVector< VPanel * > &GetChildren();
+
+ // gets names of the object (for debugging purposes)
+ virtual const char *GetName();
+ virtual const char *GetClassName();
+
+ virtual HScheme GetScheme();
+
+ // handles a message
+ virtual void SendMessage(KeyValues *params, VPANEL ifromPanel);
+
+ // wrapper to get Client panel interface
+ virtual IClientPanel *Client() { return _clientPanel; }
+
+ // input interest
+ virtual void SetKeyBoardInputEnabled(bool state);
+ virtual void SetMouseInputEnabled(bool state);
+ virtual bool IsKeyBoardInputEnabled();
+ virtual bool IsMouseInputEnabled();
+
+ virtual bool IsTopmostPopup() const;
+ virtual void SetTopmostPopup( bool bEnable );
+
+ // sibling pins
+ virtual void SetSiblingPin(VPanel *newSibling, byte iMyCornerToPin = 0, byte iSiblingCornerToPinTo = 0 );
+
+ public:
+ virtual void GetInternalAbsPos(int &x, int &y);
+ virtual void TraverseLevel( int val );
+
+ private:
+ Dar<VPanel*> _childDar;
+ VPanel *_parent;
+ SurfacePlat *_plat; // platform-specific data
+ HPanel _hPanel;
+
+ // our companion Client panel
+ IClientPanel *_clientPanel;
+
+ short _pos[2];
+ short _size[2];
+ short _minimumSize[2];
+
+ short _inset[4];
+ short _clipRect[4];
+ short _absPos[2];
+
+ short _zpos; // z-order position
+
+ bool _visible : 1;
+ bool _enabled : 1;
+ bool _popup : 1;
+ bool _mouseInput : 1; // used for popups
+ bool _kbInput : 1;
+ bool _isTopmostPopup : 1;
+
+ VPanel *_pinsibling;
+ byte _pinsibling_my_corner;
+ byte _pinsibling_their_corner;
+
+ int m_nMessageContextId;
+ int m_nThinkTraverseLevel;
+ HPanel _clientPanelHandle; // Temp to check if _clientPanel is valid.
+ };
+
+}
+
+
+#endif // VPANEL_H