diff options
Diffstat (limited to 'vgui2/src/VGUI_Border.h')
| -rw-r--r-- | vgui2/src/VGUI_Border.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/vgui2/src/VGUI_Border.h b/vgui2/src/VGUI_Border.h new file mode 100644 index 0000000..9c2f2e5 --- /dev/null +++ b/vgui2/src/VGUI_Border.h @@ -0,0 +1,82 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Core implementation of vgui +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef VGUI_BORDER_H +#define VGUI_BORDER_H + +#ifdef _WIN32 +#pragma once +#endif + +#include <vgui/VGUI.h> +#include <vgui/IBorder.h> +#include <vgui/IScheme.h> +#include <Color.h> + +class KeyValues; + +namespace vgui +{ + +//----------------------------------------------------------------------------- +// Purpose: Interface to panel borders +// Borders have a close relationship with panels +//----------------------------------------------------------------------------- +class Border : public IBorder +{ +public: + Border(); + ~Border(); + + virtual void Paint(VPANEL panel); + virtual void Paint(int x0, int y0, int x1, int y1); + virtual void Paint(int x0, int y0, int x1, int y1, int breakSide, int breakStart, int breakStop); + virtual void SetInset(int left, int top, int right, int bottom); + virtual void GetInset(int &left, int &top, int &right, int &bottom); + + virtual void ApplySchemeSettings(IScheme *pScheme, KeyValues *inResourceData); + + virtual const char *GetName(); + virtual void SetName(const char *name); + virtual backgroundtype_e GetBackgroundType(); + + virtual bool PaintFirst( void ) { return false; } + +protected: + int _inset[4]; + +private: + // protected copy constructor to prevent use + Border(Border&); + + void ParseSideSettings(int side_index, KeyValues *inResourceData, IScheme *pScheme); + + char *_name; + + // border drawing description + struct line_t + { + Color col; + int startOffset; + int endOffset; + }; + + struct side_t + { + int count; + line_t *lines; + }; + + side_t _sides[4]; // left, top, right, bottom + backgroundtype_e m_eBackgroundType; + + friend class VPanel; +}; + +} // namespace vgui + +#endif // VGUI_BORDER_H |