Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cXStyleSheet.h
Go to the documentation of this file.
1 //
4 //
5 #ifndef _INC_cXStyleSheet_H
6 #define _INC_cXStyleSheet_H
7 #pragma once
8 
9 #include "cXSpriteMap.h"
10 #include "cXStylePrefs.h"
12 
13 namespace GrayGUI
14 {
15 
17  {
21 
22 #define cXStyleSheetElement(a,b) XSTYLE_##a,
23 #include "cXStyleSheetElements.tbl"
24 #undef cXStyleSheetElement
25 
27  };
28 
30  {
34 
35 #define cXStyleSheetColor(a,b,c,d) XSTYLE_COLOR_##a,
36 #include "cXStyleSheetColors.tbl"
37 #undef cXStyleSheetColor
38 
40  };
41 
42  class cXStyleSheet : public cXSpriteMap
43  {
46  public:
47  cXStyleSheet();
48  virtual ~cXStyleSheet();
49 
50  bool isStyleValid() const noexcept
51  {
53  return this->get_ElemQty() >= XSTYLE_ELEM_REQUIRED ;
54  }
55  cRectI GetStyleRect(XSTYLE_ELEM_TYPE eStyleElem) const noexcept
56  {
57  return this->GetElemRectX(eStyleElem);
58  }
59  cWinSize GetStyleSize(XSTYLE_ELEM_TYPE eStyleElem) const noexcept
60  {
61  return this->GetElemSize(eStyleElem);
62  }
63  int GetStyleWidth(XSTYLE_ELEM_TYPE eStyleElem) const noexcept
64  {
65  return this->GetElemWidth(eStyleElem);
66  }
67  int GetStyleHeight(XSTYLE_ELEM_TYPE eStyleElem) const noexcept
68  {
69  return this->GetElemHeight(eStyleElem);
70  }
71 
72  cDXSpriteElem GetStyleElem(XSTYLE_ELEM_TYPE eStyleElem) const;
73  HRESULT SetStyleElemData(cVariant& vVal, bool bSize);
74 
75  virtual HRESULT LoadMapProp(cString sKey, const cVariant& vArgs, const char** ppEnumTags);
76  HRESULT LoadStyle(SPRITEMAP_t eXStyle);
77 
79  {
83  return m_aColors[eColorElem] ;
84  }
85 
86  static int GetStyleMetrics(int nIndex);
87 
88  public:
90 
91  private:
92  static const char* k_RectTags[XSTYLE_ELEM_QTY + 1];
93  };
94 
96  : public cSingletonStatic<cXStyleRenderer>
97  , public cDXSpriteDC
98  {
99  // Helper to draw the selected cXStyleSheet elements to cDXDevice
100  // Like DC (Drawing context)
101 
104 
105  SPRITEMAP_t get_XStyle(void) const noexcept
106  {
108  return(m_eXStyle);
109  }
110  void put_XStyle(SPRITEMAP_t XStyle);
112 
113  HRESULT DrawFrameP(const cPoint2i& ptAbsPos, int x, int y, XSTYLE_ELEM_TYPE eStyleElem);
114  HRESULT DrawFrameR(const cPoint2i& ptAbsPos, int x, int y, XSTYLE_ELEM_TYPE eStyleElem, SIZE szFramePart);
115  HRESULT DrawFrameTX(const cPoint2i& ptAbsPos, int xs, int xe, int ys, XSTYLE_ELEM_TYPE eStyleElem);
116  HRESULT DrawFrameTY(const cPoint2i& ptAbsPos, int ys, int ye, int x, XSTYLE_ELEM_TYPE eStyleElem);
117  void DrawFrame(const cPoint2i& ptAbsPos, int iWidth, int iHeight, XSTYLE_ELEM_TYPE eStyleElem);
118  HRESULT DrawFrameClient(const cPoint2i& ptAbsPos, cRectI& rectClientArea, XSTYLE_ELEM_TYPE eStyleElem);
119  HRESULT DrawFrameH3(const cPoint2i& ptAbsPos, int xs, int xe, int ys, int ye, XSTYLE_ELEM_TYPE eStyleElem);
120  HRESULT DrawFrameV3(const cPoint2i& ptAbsPos, int sx, int ex, int sy, int ey, XSTYLE_ELEM_TYPE eStyleElem);
121 
122  public:
123  static int sm_iQtyDraws;
124 
128  };
129 
130  extern cXStyleRenderer g_XStyle;
131 };
132 
133 #endif
#define IS_INDEX_GOOD(i, q)
cast the (likely) int to unsigned to check for negatives.
Definition: Index.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
DWORD D3DCOLOR
Stuff normally defined in windows.h or DirectX headers.
Definition: cColorRef.h:24
#define ASSERT(exp)
Definition: cDebugAssert.h:87
Definition: cXStyleSheet.h:43
HRESULT LoadStyle(SPRITEMAP_t eXStyle)
Definition: cXStyleSheet.cpp:59
cWinSize GetStyleSize(XSTYLE_ELEM_TYPE eStyleElem) const noexcept
Definition: cXStyleSheet.h:59
cXStyleSheet()
Definition: cXStyleSheet.cpp:21
int GetStyleWidth(XSTYLE_ELEM_TYPE eStyleElem) const noexcept
Definition: cXStyleSheet.h:63
cRectI GetStyleRect(XSTYLE_ELEM_TYPE eStyleElem) const noexcept
Definition: cXStyleSheet.h:55
int GetStyleHeight(XSTYLE_ELEM_TYPE eStyleElem) const noexcept
Definition: cXStyleSheet.h:67
bool isStyleValid() const noexcept
Definition: cXStyleSheet.h:50
static int GetStyleMetrics(int nIndex)
Definition: cXStyleSheet.cpp:129
HRESULT SetStyleElemData(cVariant &vVal, bool bSize)
Definition: cXStyleSheet.cpp:101
D3DCOLOR GetSkinColor(XSTYLE_COLOR_TYPE eColorElem) const
Definition: cXStyleSheet.h:78
cDXSpriteElem GetStyleElem(XSTYLE_ELEM_TYPE eStyleElem) const
Definition: cXStyleSheet.cpp:94
virtual HRESULT LoadMapProp(cString sKey, const cVariant &vArgs, const char **ppEnumTags)
Definition: cXStyleSheet.cpp:38
D3DCOLOR m_aColors[XSTYLE_COLOR_QTY]
Style colors.
Definition: cXStyleSheet.h:89
virtual ~cXStyleSheet()
Definition: cXStyleSheet.cpp:34
Definition: cPoint2.h:20
Definition: cRectI.h:22
Definition: cVariant.h:26
Definition: WinTypes.h:128
Definition: cRefPtr.h:225
Definition: cSingleton.h:30
Definition: GrayGUI.cpp:11
cXStyleRenderer g_XStyle
Definition: cXStyleSheet.cpp:11
XSTYLE_COLOR_TYPE
Definition: cXStyleSheet.h:30
@ XSTYLE_COLOR_QTY
Definition: cXStyleSheet.h:39
XSTYLE_ELEM_TYPE
Definition: cXStyleSheet.h:17
@ XSTYLE_ELEM_QTY
Definition: cXStyleSheet.h:26
SPRITEMAP_t
Definition: cXDesktopMgr.h:35
Definition: cXStyleSheet.h:98
HRESULT DrawFrameV3(const cPoint2i &ptAbsPos, int sx, int ex, int sy, int ey, XSTYLE_ELEM_TYPE eStyleElem)
Definition: cXStyleSheet.cpp:341
void DrawFrame(const cPoint2i &ptAbsPos, int iWidth, int iHeight, XSTYLE_ELEM_TYPE eStyleElem)
Definition: cXStyleSheet.cpp:257
SPRITEMAP_t get_XStyle(void) const noexcept
Definition: cXStyleSheet.h:105
HRESULT DrawFrameP(const cPoint2i &ptAbsPos, int x, int y, XSTYLE_ELEM_TYPE eStyleElem)
Definition: cXStyleSheet.cpp:149
void put_XStyle(SPRITEMAP_t XStyle)
Definition: cXStyleSheet.cpp:369
HRESULT DrawFrameTY(const cPoint2i &ptAbsPos, int ys, int ye, int x, XSTYLE_ELEM_TYPE eStyleElem)
Definition: cXStyleSheet.cpp:220
static int sm_iQtyDraws
Definition: cXStyleSheet.h:123
HRESULT DrawFrameH3(const cPoint2i &ptAbsPos, int xs, int xe, int ys, int ye, XSTYLE_ELEM_TYPE eStyleElem)
Definition: cXStyleSheet.cpp:315
HRESULT DrawFrameClient(const cPoint2i &ptAbsPos, cRectI &rectClientArea, XSTYLE_ELEM_TYPE eStyleElem)
Definition: cXStyleSheet.cpp:289
HRESULT UpdateXStyleQty()
Definition: cXStyleSheet.cpp:377
SPRITEMAP_t m_iXStyleQty
amount of available styles. dynamically detected how many there are.
Definition: cXStyleSheet.h:125
SPRITEMAP_t m_eXStyle
current loaded style.
Definition: cXStyleSheet.h:126
HRESULT DrawFrameR(const cPoint2i &ptAbsPos, int x, int y, XSTYLE_ELEM_TYPE eStyleElem, SIZE szFramePart)
Definition: cXStyleSheet.cpp:163
cRefPtr< cXStyleSheet > m_pXStyleSheet
current loaded style info.
Definition: cXStyleSheet.h:127
HRESULT DrawFrameTX(const cPoint2i &ptAbsPos, int xs, int xe, int ys, XSTYLE_ELEM_TYPE eStyleElem)
Definition: cXStyleSheet.cpp:179