diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /vgui2/src/VPanel.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'vgui2/src/VPanel.h')
| -rw-r--r-- | vgui2/src/VPanel.h | 146 |
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 |