Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cXButton.h
Go to the documentation of this file.
1 //
4 //
5 #ifndef _INC_cXButton_H
6 #define _INC_cXButton_H
7 #pragma once
8 
9 #include "cXStatic.h"
10 #include "cXImage.h"
11 #include "../Style/cXIcon.h"
13 
14 namespace GrayGUI
15 {
16 #define BUTTON_ICON_INDENT 3
17 
19  {
27  };
28 
30  {
33  public:
37  public:
38  cXBlinkState();
39  bool isBlinkActive() const
40  {
41  return m_eBlinkStyle != WINDOWBLINKSTYLE_NONE ; // m_eBlinkStyle != WINDOWBLINKSTYLE_NONE
42  }
43  void UpdateBlink();
44  };
45 
46  class cXButton : public cXWindowText
47  {
50 
51  public:
57 
58  cXBlinkState m_Blink; // Blinking support.
59 
60  protected:
61  // Class type config data.
62  bool m_bDblClickNotification; // does this button sense double clicks?
63  D3DCOLOR m_ColorPressed; // cColorDX background color when pressed.
66 
67  // Various transient flags
68  bool m_bIsMouseOver; // draw as if the mouse is over it.
71 
72  bool m_bHighlighted; // whether this button is currently highlighted
73 
74  public:
75  cXButton(cXWindow* pParent, DLGID_t id, X_WNDCLASS_TYPE eXWClass = X_CTRL_Button);
76  virtual ~cXButton();
77 
78  virtual bool InitXWindow();
79 
80  virtual bool OnRender();
81 
82  virtual bool OnMouseDown(MBUTTON_TYPE uButton, PIXELS_t x, PIXELS_t y);
83  virtual bool OnMouseMove(MBUTTON_TYPE uButton, PIXELS_t x, PIXELS_t y);
84  virtual bool OnMouseUp(MBUTTON_TYPE uButton, PIXELS_t x, PIXELS_t y);
85  virtual bool OnMouseDblClk(MBUTTON_TYPE uButton, PIXELS_t x, PIXELS_t y);
86 
87  virtual bool OnKeyFocus(bool bActive);
88  virtual void OnSize(UINT uType, PIXELS_t Width, PIXELS_t Height);
89  virtual DWORD OnNCHitTest(PIXELS_t x, PIXELS_t y) const;
90 
91  virtual void onTick(void);
92 
93  DWORD get_StyleTypeMask() const
94  {
95  // BS_CHECKBOX etc
96  return(get_Style() & BS_TYPEMASK);
97  }
98  bool get_Pressed() const
99  {
100  return m_bIsPressed;
101  }
102 
103  virtual cString get_Text(void) const // virtual
104  {
105  return(m_Text.m_strText);
106  }
107  virtual void put_Text(const GChar_t* pszCaption);
108  void SetCaptionText(const GChar_t* pszCaption, D3DCOLOR TextColor = D3DCOLOR_Black, DWORD dwTextFormat = (DT_CENTER | DT_VCENTER), D3DCOLOR HoverTextColor = D3DCOLOR_XRGB(0, 0, 0));
109 
111  void CalcNeededRect(cRectI& rect);
112  void UpdateTextFormat();
113 
115  {
116  return m_ColorPressed;
117  }
119  {
120  m_ColorPressed = color;
121  }
122 
124  {
125  m_ColorEnabledText = TextColor;
126  }
128  {
129  m_ColorEnabledHoverText = TextColor;
130  }
131 
132  void put_CaptionAlignment(DWORD align)
133  {
134  ModifyStyle(align, 0x0F00);
135  }
136  DWORD get_CaptionAlignment() const
137  {
138  // BS_LEFT Where does the text appear in relation to the icon (if set)?
139  return(get_Style() & 0x0F00);
140  }
141 
142  void put_TextFormat(DWORD dwFormat)
143  {
144  m_Text.put_TextFormat(dwFormat); // DT_CENTER etc
145  }
146  bool get_TextEmbossed(void) const
147  {
148  return(m_Text.get_TextEmbossed());
149  }
150  void put_TextEmbossed(bool bEmbossed)
151  {
152  m_Text.put_TextEmbossed(bEmbossed);
153  }
154 
155  void put_DblClickNotify(bool bNotify)
156  {
157  m_bDblClickNotification = bNotify; // BN_DOUBLECLICKED
158  }
160  {
161  return(m_vUserData);
162  }
163  void put_UserData(cVariant& vUserData)
164  {
165  m_vUserData = vUserData;
166  }
167 
168  void SetIcon(SPRITEID_t iIconIndex, SPRITEID_t tBorder = SPRITEID_0)
169  {
170  m_Icon.SetIcon(iIconIndex, tBorder);
171  }
172  void put_SpriteFace(SPRITEID_t iIconIndex)
173  {
174  m_Icon.put_SpriteFace(iIconIndex);
175  }
176  void put_SpriteBorder(SPRITEID_t tBorder)
177  {
178  m_Icon.put_SpriteBorder(tBorder);
179  }
180 
181  bool put_IconControl(XSTYLE_ELEM_TYPE eStyleElem);
182 
183  void put_CheckedState(bool bState);
184  bool get_CheckedState() const
185  {
186  return(m_bIsChecked);
187  }
188 
189  void SizeTextToWindow();
190 
192  void put_BlinkStyle(WINDOWBLINKSTYLE_TYPE tBlinkStyle);
193 
194  void put_Highlighted(bool bHighlighted)
195  {
196  m_bHighlighted = bHighlighted;
197  }
198  bool get_Highlighted(void) const
199  {
200  return m_bHighlighted;
201  }
202  };
203 
205 };
206 #endif
DWORD D3DCOLOR
Stuff normally defined in windows.h or DirectX headers.
Definition: cColorRef.h:24
#define D3DCOLOR_XRGB(r, g, b)
0xff = COLOR_ALPHA_OPAQUE, but don't change it because it conflicts with DX9 "#define".
Definition: cColorRef.h:29
Definition: cXButton.h:30
cValueLerp< int > m_BlinkPhase
Phasing in or out?
Definition: cXButton.h:36
WINDOWBLINKSTYLE_TYPE m_eBlinkStyle
Definition: cXButton.h:34
cXBlinkState()
alpha level. COLOR_ELEM_t
Definition: cXButton.cpp:12
bool isBlinkActive() const
Definition: cXButton.h:39
bool m_bBlinkPhaseIn
Definition: cXButton.h:35
void UpdateBlink()
Definition: cXButton.cpp:18
Definition: cXButton.h:47
void put_Highlighted(bool bHighlighted)
Definition: cXButton.h:194
bool m_bDblClickNotification
Definition: cXButton.h:62
cVariant m_vUserData
Mostly for listboxes and droplists Menu flags. (if menu)
Definition: cXButton.h:55
void put_UserData(cVariant &vUserData)
Definition: cXButton.h:163
void CalcNeededRect(cRectI &rect)
Definition: cXButton.cpp:178
cXBlinkState m_Blink
Definition: cXButton.h:58
virtual ~cXButton()
Definition: cXButton.cpp:53
bool put_IconControl(XSTYLE_ELEM_TYPE eStyleElem)
Definition: cXButton.cpp:120
D3DCOLOR get_PressedColor() const
Definition: cXButton.h:114
TIMESYSD_t m_nRepeatTime
holding this down causes a repeat command over time. default to INT_MAX
Definition: cXButton.h:56
bool m_bIsPressed
Definition: cXButton.h:69
cWinSize m_sizeTextIndent
Text can be indented with this.
Definition: cXButton.h:54
virtual cString get_Text(void) const
Definition: cXButton.h:103
void UpdateTextFormat()
Definition: cXButton.cpp:57
bool m_bIsChecked
Definition: cXButton.h:70
D3DCOLOR m_ColorEnabledHoverText
Definition: cXButton.h:65
D3DCOLOR m_ColorEnabledText
Definition: cXButton.h:64
virtual bool OnMouseDblClk(MBUTTON_TYPE uButton, PIXELS_t x, PIXELS_t y)
Definition: cXButton.cpp:500
virtual DWORD OnNCHitTest(PIXELS_t x, PIXELS_t y) const
Definition: cXButton.cpp:256
void AdjustCaptionRect(cRectI &rect)
Definition: cXButton.cpp:143
D3DCOLOR m_ColorPressed
Definition: cXButton.h:63
virtual bool OnKeyFocus(bool bActive)
Definition: cXButton.cpp:405
void put_SpriteBorder(SPRITEID_t tBorder)
Definition: cXButton.h:176
void SetCaptionText(const GChar_t *pszCaption, D3DCOLOR TextColor=D3DCOLOR_Black, DWORD dwTextFormat=(DT_CENTER|DT_VCENTER), D3DCOLOR HoverTextColor=D3DCOLOR_XRGB(0, 0, 0))
Definition: cXButton.cpp:110
virtual bool OnRender()
Definition: cXButton.cpp:336
DWORD get_StyleTypeMask() const
Definition: cXButton.h:93
void put_BlinkStyle(WINDOWBLINKSTYLE_TYPE tBlinkStyle)
Definition: cXButton.cpp:198
void put_EnabledHoverTextColor(D3DCOLOR TextColor)
Definition: cXButton.h:127
bool m_bHighlighted
Definition: cXButton.h:72
void put_EnabledTextColor(D3DCOLOR TextColor)
Definition: cXButton.h:123
virtual void OnSize(UINT uType, PIXELS_t Width, PIXELS_t Height)
Definition: cXButton.cpp:265
cVariant & get_UserData(void)
Definition: cXButton.h:159
void put_CheckedState(bool bState)
Definition: cXButton.cpp:234
virtual void onTick(void)
Definition: cXButton.cpp:274
void put_TextFormat(DWORD dwFormat)
Definition: cXButton.h:142
virtual bool OnMouseDown(MBUTTON_TYPE uButton, PIXELS_t x, PIXELS_t y)
Definition: cXButton.cpp:411
virtual bool OnMouseUp(MBUTTON_TYPE uButton, PIXELS_t x, PIXELS_t y)
Definition: cXButton.cpp:457
virtual bool OnMouseMove(MBUTTON_TYPE uButton, PIXELS_t x, PIXELS_t y)
Definition: cXButton.cpp:489
cXButton(cXWindow *pParent, DLGID_t id, X_WNDCLASS_TYPE eXWClass=X_CTRL_Button)
Definition: cXButton.cpp:32
void put_PressedColor(D3DCOLOR color)
Definition: cXButton.h:118
void put_SpriteFace(SPRITEID_t iIconIndex)
Definition: cXButton.h:172
void put_CaptionAlignment(DWORD align)
Definition: cXButton.h:132
bool get_Pressed() const
Definition: cXButton.h:98
void put_DblClickNotify(bool bNotify)
Definition: cXButton.h:155
void SizeTextToWindow()
Definition: cXButton.cpp:241
cXIcon2 m_Icon
data describing an icon.
Definition: cXButton.h:52
virtual void put_Text(const GChar_t *pszCaption)
Definition: cXButton.cpp:84
bool m_bIsMouseOver
Definition: cXButton.h:68
DWORD get_CaptionAlignment() const
Definition: cXButton.h:136
bool get_CheckedState() const
Definition: cXButton.h:184
virtual bool InitXWindow()
Definition: cXButton.cpp:515
cXStaticTextData m_Text
data describing the text.
Definition: cXButton.h:53
bool get_Highlighted(void) const
Definition: cXButton.h:198
bool get_TextEmbossed(void) const
Definition: cXButton.h:146
void SetIcon(SPRITEID_t iIconIndex, SPRITEID_t tBorder=SPRITEID_0)
Definition: cXButton.h:168
D3DCOLOR UpdateBlinkColor(void)
Definition: cXButton.cpp:209
void put_TextEmbossed(bool bEmbossed)
Definition: cXButton.h:150
Definition: cXIcon.h:33
void put_SpriteBorder(SPRITEID_t tBorder)
Definition: cXIcon.cpp:36
void SetIcon(SPRITEID_t nSpriteFace, SPRITEID_t nSpriteBorder=SPRITEID_0)
Definition: cXIcon.cpp:19
void put_SpriteFace(SPRITEID_t iIconFace)
Definition: cXIcon.cpp:28
Definition: cXStatic.h:14
void put_TextFormat(DWORD dwTextFormat) noexcept
Definition: cXStatic.h:35
cString m_strText
What text to display.
Definition: cXStatic.h:63
void put_TextEmbossed(bool bTextEmbossed) noexcept
Definition: cXStatic.h:26
bool get_TextEmbossed(void) const noexcept
Definition: cXStatic.h:22
Definition: cXWindow.h:484
Definition: cXWindow.h:94
void ModifyStyle(DWORD dwStyleAdd, DWORD dwStyleRem=0)
Definition: cXWindow.h:209
DWORD get_Style(void) const noexcept
Definition: cXWindow.h:199
Definition: cRectI.h:22
Definition: cVariant.h:26
Definition: WinTypes.h:128
Definition: GrayGUI.cpp:11
WINDOWBLINKSTYLE_TYPE
Definition: cXButton.h:19
@ WINDOWBLINKSTYLE_PHASE_ALPHA
linear phase in and out of grey.
Definition: cXButton.h:25
@ WINDOWBLINKSTYLE_PHASE_GREY
discrete on/off cycle.
Definition: cXButton.h:24
@ WINDOWBLINKSTYLE_PHASE_COLOR
linear phase in and out
Definition: cXButton.h:26
@ WINDOWBLINKSTYLE_NONE
Definition: cXButton.h:22
@ WINDOWBLINKSTYLE_PULSE
Solid.
Definition: cXButton.h:23
cRefPtr< cXButton > cXButtonPtr
Definition: cXButton.h:204
X_WNDCLASS_TYPE
Definition: cXWindow.h:34
XSTYLE_ELEM_TYPE
Definition: cXStyleSheet.h:17
UINT DLGID_t
old window format this was a WORD, EX format this is UINT32.
Definition: cResDialog.h:68
MBUTTON_TYPE
Definition: cInputBase.h:40
interface const RECTQ_t & rect
Definition: cQuadtree.h:44
int PIXELS_t
Count of pixels in a dimension of some image/surface.
Definition: cSurfaceInfo.h:20
INT32 TIMESYSD_t
Time delta. signed milli-Seconds Span. cTimeSys::k_DMAX, cTimeSys::k_INF = MAILSLOT_WAIT_FOREVER.
Definition: cTimeSys.h:28
char GChar_t
My version of TCHAR, _TCHAR.
Definition: StrConst.h:26