ScummVM API documentation
button.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef HODJNPODJ_HNPLIBS_BUTTON_H
23 #define HODJNPODJ_HNPLIBS_BUTTON_H
24 
25 #include "bagel/afxwin.h"
26 #include "bagel/hodjnpodj/hnplibs/dibdoc.h"
27 #include "bagel/hodjnpodj/hnplibs/bitmaps.h"
28 #include "bagel/hodjnpodj/hnplibs/button.h"
29 
30 namespace Bagel {
31 namespace HodjNPodj {
32 
33 #define BUTTON_EDGE_WIDTH 3
34 #define FOCUS_RECT_DX 2
35 #define FOCUS_RECT_DY 1
36 #define SELECTED_TEXT_DX 1
37 #define SELECTED_TEXT_DY 1
38 #define CHECK_BOX_SIZE 13
39 #define CHECK_BOX_DX 4
40 #define CHECK_TEXT_DX 22
41 #define RADIO_BOX_SIZE 13
42 #define RADIO_BOX_DX 4
43 #define RADIO_TEXT_DX 22
44 
45 #define RGB_BUTTON_FACE PALETTERGB(199,167,139) // PALETTERGB(207,159,115)
46 #define RGB_BUTTON_HIGHLIGHT PALETTERGB(223,199,175)
47 #define RGB_BUTTON_SHADOW PALETTERGB(155,123,95)
48 #define RGB_BUTTON_TEXT PALETTERGB(51,31,19) // PALETTERGB(83,59,1)
49 #define RGB_BUTTON_TEXT_DISABLE PALETTERGB(155,139,123)
50 #define RGB_BUTTON_OUTLINE PALETTERGB(83,59,51) // PALETTERGB(83,59,1)
51 
52 #define RGB_CHECK_FACE PALETTERGB(199,167,139) // PALETTERGB(207,159,115)
53 #define RGB_CHECK_CONTROL PALETTERGB(99,15,7)
54 #define RGB_CHECK_TEXT PALETTERGB(51,31,19) // PALETTERGB(83,59,1)
55 #define RGB_CHECK_TEXT_DISABLE PALETTERGB(155,139,123)
56 #define RGB_CHECK_OUTLINE PALETTERGB(83,59,51) // PALETTERGB(207,159,115)
57 
58 #define RGB_RADIO_FACE PALETTERGB(199,167,139) // PALETTERGB(207,159,115)
59 #define RGB_RADIO_CONTROL PALETTERGB(99,15,7)
60 #define RGB_RADIO_TEXT PALETTERGB(51,31,19) // PALETTERGB(83,59,1)
61 #define RGB_RADIO_TEXT_DISABLE PALETTERGB(155,139,123)
62 #define RGB_RADIO_OUTLINE PALETTERGB(83,59,51) // PALETTERGB(207,159,115)
63 
64 
65 class CBmpButton : public CBitmapButton {
66  DECLARE_DYNCREATE(CBmpButton)
67 
68 // Constructors
69 public:
70  CBmpButton(); // use "new" operator to create buttons, then LoadButton
71 
72 // Destructors
73 public:
74  ~CBmpButton();
75 
76 // Implementation
77 public:
78  bool SetControl(unsigned int nID, CWnd * pParent);
79  bool AutoLoad(unsigned int nID, CWnd * pParent);
80 
81  bool LoadBitmaps(CPalette *pPalette, CBitmap *pBase, CBitmap *pSelected, CBitmap *pFocus, CBitmap *pDisabled);
82  bool LoadBitmaps(const char *lpszBase, const char *lpszSelected = nullptr, const char *lpszFocus = nullptr, const char *lpszDisabled = nullptr);
83  bool LoadBitmaps(const int nBase, const int nSelected = 0, const int nFocus = 0, const int nDisabled = 0);
84  bool LoadBmpBitmaps(const char *lpszBase, const char *lpszSelected = nullptr, const char *lpszFocus = nullptr, const char *lpszDisabled = nullptr);
85 
86 private:
87  CPalette *m_pPalette;
88  //bool m_bSharedPalette;
89 
90 private:
97  void ensureSize();
98 
99  void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) override;
100 
101  //{{AFX_MSG( CBmpButton )
102  afx_msg bool OnEraseBkgnd(CDC *pDC);
103  //}}AFX_MSG
104 
105  DECLARE_MESSAGE_MAP()
106 };
107 
109 
110 class CMaskedButton : public CBmpButton {
111  DECLARE_DYNCREATE(CMaskedButton)
112 
113 // Constructors
114 public:
115  CMaskedButton(); // use "new" operator to create buttons, then LoadButton
116 
117 // Destructors
118 public:
119  ~CMaskedButton();
120 
121 // Implementation
122 public:
123 
124 private:
125  CPalette *m_pPalette;
126  CBitmap *m_pBackground;
127 
128 private:
129 
130  virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) override;
131 
132  //{{AFX_MSG( CMaskedButton )
133  afx_msg bool OnEraseBkgnd(CDC *pDC);
134  //}}AFX_MSG
135 
136  DECLARE_MESSAGE_MAP()
137 };
138 
140 
141 class CColorButton : public CButton {
142  DECLARE_DYNCREATE(CColorButton)
143 
144 // Constructors
145 public:
146  CColorButton(); // use "new" operator to create buttons, then LoadButton
147 
148 // Destructors
149 public:
150  ~CColorButton();
151 
152 // Implementation
153 public:
154  bool SetControl(unsigned int nID, CWnd * pParent);
155  void SetPalette(CPalette *pPalette);
156  void SetColors(CPalette *pPalette, COLORREF cFace, COLORREF cHighlight, COLORREF cShadow, COLORREF cText, COLORREF cTextDisabled, COLORREF cOutline);
157 
158 private:
159  CPalette *m_pPalette;
160  COLORREF m_cButtonFace;
161  COLORREF m_cButtonHighlight;
162  COLORREF m_cButtonShadow;
163  COLORREF m_cButtonText;
164  COLORREF m_cButtonTextDisabled;
165  COLORREF m_cButtonOutline;
166 
167 private:
168 
169  void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) override;
170 
171  //{{AFX_MSG( CColorButton )
172  afx_msg bool OnEraseBkgnd(CDC *pDC);
173  //}}AFX_MSG
174 
175  DECLARE_MESSAGE_MAP()
176 };
177 
179 
180 class CCheckButton : public CButton {
181  DECLARE_DYNCREATE(CCheckButton)
182 
183 // Constructors
184 public:
185  CCheckButton(); // use "new" operator to create buttons, then LoadButton
186 
187 // Destructors
188 public:
189  ~CCheckButton();
190 
191 // Implementation
192 public:
193  bool SetControl(unsigned int nID, CWnd * pParent);
194  void SetPalette(CPalette *pPalette);
195  void SetColors(CPalette *pPalette, COLORREF cFace, COLORREF cControl, COLORREF cText, COLORREF cTextDisabled, COLORREF cOutline);
196 
197 private:
198  bool m_bCheckState;
199  CPalette *m_pPalette;
200  COLORREF m_cButtonFace;
201  COLORREF m_cButtonControl;
202  COLORREF m_cButtonText;
203  COLORREF m_cButtonTextDisabled;
204  COLORREF m_cButtonOutline;
205 
206 private:
207 
208  void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) override;
209 
210  //{{AFX_MSG( CCheckButton )
211  afx_msg bool OnEraseBkgnd(CDC *pDC);
212  afx_msg LRESULT OnSetCheck(WPARAM, LPARAM);
213  afx_msg LRESULT OnGetCheck(WPARAM, LPARAM);
214  //}}AFX_MSG
215 
216  DECLARE_MESSAGE_MAP()
217 };
218 
220 
221 class CRadioButton : public CButton {
222  DECLARE_DYNCREATE(CRadioButton)
223 
224 // Constructors
225 public:
226  CRadioButton(); // use "new" operator to create buttons, then LoadButton
227 
228 // Destructors
229 public:
230  ~CRadioButton();
231 
232 // Implementation
233 public:
234  bool SetControl(unsigned int nID, CWnd * pParent);
235  void SetPalette(CPalette *pPalette);
236  void SetColors(CPalette *pPalette, COLORREF cFace, COLORREF cControl, COLORREF cText, COLORREF cTextDisabled, COLORREF cOutline);
237 
238 private:
239  bool m_bCheckState;
240  CPalette *m_pPalette;
241  COLORREF m_cButtonFace;
242  COLORREF m_cButtonControl;
243  COLORREF m_cButtonText;
244  COLORREF m_cButtonTextDisabled;
245  COLORREF m_cButtonOutline;
246 
247 private:
248 
249  void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) override;
250 
251  //{{AFX_MSG( CRadioButton )
252  afx_msg bool OnEraseBkgnd(CDC *pDC);
253  afx_msg LRESULT OnSetCheck(WPARAM, LPARAM);
254  afx_msg LRESULT OnGetCheck(WPARAM, LPARAM);
255  //}}AFX_MSG
256 
257  DECLARE_MESSAGE_MAP()
258 };
259 
260 } // namespace HodjNPodj
261 } // namespace Bagel
262 
263 #endif
Definition: afxext.h:30
Definition: wingdi.h:714
Definition: afxwin.h:1125
Definition: button.h:180
Definition: afxwin.h:655
Definition: button.h:65
Definition: afxwin.h:1667
Definition: afxwin.h:27
Definition: button.h:221
Definition: button.h:110
Definition: afxwin.h:623
Definition: button.h:141
Definition: afxwin.h:708