NXWidgets: cbutton.hxx Source File

NXWidgets 1.19

cbutton.hxx
Go to the documentation of this file.
1 /****************************************************************************
2 * NxWidgets/libnxwidgets/include/cbutton.hxx
3 *
4 * Copyright (C) 2012 Gregory Nutt. All rights reserved.
5 * Author: Gregory Nutt <gnutt@nuttx.org>
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
16 * distribution.
17 * 3. Neither the name NuttX, NxWidgets, nor the names of its contributors
18 * me be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
28 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 *
34 ****************************************************************************
35 *
36 * Portions of this package derive from Woopsi (http://woopsi.org/) and
37 * portions are original efforts. It is difficult to determine at this
38 * point what parts are original efforts and which parts derive from Woopsi.
39 * However, in any event, the work of Antony Dzeryn will be acknowledged
40 * in all NxWidget files. Thanks Antony!
41 *
42 * Copyright (c) 2007-2011, Antony Dzeryn
43 * All rights reserved.
44 *
45 * Redistribution and use in source and binary forms, with or without
46 * modification, are permitted provided that the following conditions are met:
47 *
48 * * Redistributions of source code must retain the above copyright
49 * notice, this list of conditions and the following disclaimer.
50 * * Redistributions in binary form must reproduce the above copyright
51 * notice, this list of conditions and the following disclaimer in the
52 * documentation and/or other materials provided with the distribution.
53 * * Neither the names "Woopsi", "Simian Zombie" nor the
54 * names of its contributors may be used to endorse or promote products
55 * derived from this software without specific prior written permission.
56 *
57 * THIS SOFTWARE IS PROVIDED BY Antony Dzeryn ``AS IS'' AND ANY
58 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
59 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
60 * DISCLAIMED. IN NO EVENT SHALL Antony Dzeryn BE LIABLE FOR ANY
61 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
62 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
63 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
64 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
65 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
66 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
67 *
68 ****************************************************************************/
69
70 #ifndef __INCLUDE_CBUTTON_HXX
71 #define __INCLUDE_CBUTTON_HXX
72
73 /****************************************************************************
74 * Included Files
75 ****************************************************************************/
76
77 #include <nuttx/config.h>
78
79 #include <stdint.h>
80 #include <stdbool.h>
81
82 #include <nuttx/nx/nxglib.h>
83
84 #include "clabel.hxx"
85 #include "cwidgetstyle.hxx"
86
87 /****************************************************************************
88 * Pre-Processor Definitions
89 ****************************************************************************/
90
91 /****************************************************************************
92 * Implementation Classes
93 ****************************************************************************/
94
95 #if defined(__cplusplus)
96
97 namespace NXWidgets
98 {
99 /**
100 * Forward references
101 */
102
103 class CWidgetControl;
104
105 /**
106 * Clickable button widget. Displays text within the button.
107 */
108
109 class CButton : public CLabel
110 {
111 protected:
112
113 /**
114 * Draws the outline of the button.
115 *
116 * @param port Graphics port to draw to.
117 */
118
119 virtual void drawOutline(CGraphicsPort *port);
120
121 /**
122 * Draws the outline of the button.
123 *
124 * @param port Graphics port to draw to.
125 * @param useClicked Present outline using the 'clicked' style
126 */
127
128 void drawOutline(CGraphicsPort *port, bool useClicked);
129
130 /**
131 * Draw the area of this widget that falls within the clipping region.
132 * Called by the redraw() function to draw all visible regions.
133 *
134 * @param port The CGraphicsPort to draw to.
135 * @see redraw()
136 */
137
138 virtual void drawContents(CGraphicsPort *port);
139
140 /**
141 * Draw the area of this widget that falls within the clipping region.
142 * Called by the redraw() function to draw all visible regions.
143 *
144 * @param port The CGraphicsPort to draw to.
145 * @param useClicked Present contents using the 'clicked' style
146 * @see redraw()
147 */
148
149 void drawContents(CGraphicsPort *port, bool useClicked);
150
151 /**
152 * Draw the area of this widget that falls within the clipping region.
153 * Called by the redraw() function to draw all visible regions.
154 *
155 * @param port The CGraphicsPort to draw to.
156 * @see redraw()
157 */
158
159 virtual void drawBorder(CGraphicsPort *port);
160
161 /**
162 * Draw the area of this widget that falls within the clipping region.
163 * Called by the redraw() function to draw all visible regions.
164 *
165 * @param port The CGraphicsPort to draw to.
166 * @param useClicked Present border using the 'clicked' style
167 * @see redraw()
168 */
169
170 void drawBorder(CGraphicsPort *port, bool useClicked);
171
172 /**
173 * Redraws the button.
174 *
175 * @param x The x coordinate of the click.
176 * @param y The y coordinate of the click.
177 */
178
179 virtual void onClick(nxgl_coord_t x, nxgl_coord_t y);
180
181 /**
182 * Raises an action.
183 *
184 * @param x The x coordinate of the mouse.
185 * @param y The y coordinate of the mouse.
186 */
187
188 virtual void onPreRelease(nxgl_coord_t x, nxgl_coord_t y);
189
190 /**
191 * Redraws the button.
192 *
193 * @param x The x coordinate of the mouse.
194 * @param y The y coordinate of the mouse.
195 */
196
197 virtual void onRelease(nxgl_coord_t x, nxgl_coord_t y);
198
199 /**
200 * Redraws the button.
201 *
202 * @param x The x coordinate of the mouse.
203 * @param y The y coordinate of the mouse.
204 */
205
206 virtual void onReleaseOutside(nxgl_coord_t x, nxgl_coord_t y);
207
208 /**
209 * Copy constructor is protected to prevent usage.
210 */
211
212 inline CButton(const CButton &button) : CLabel(button) { }
213
214 public:
215
216 /**
217 * Constructor for buttons that display a string.
218 *
219 * @param pWidgetControl The widget control for the display.
220 * @param x The x coordinate of the button, relative to its parent.
221 * @param y The y coordinate of the button, relative to its parent.
222 * @param width The width of the button.
223 * @param height The height of the button.
224 * @param text The text for the button to display.
225 * @param style The style that the button should use. If this is not
226 * specified, the button will use the global default widget
227 * style.
228 */
229
230 CButton(CWidgetControl *pWidgetControl, nxgl_coord_t x, nxgl_coord_t y,
231 nxgl_coord_t width, nxgl_coord_t height, const CNxString &text,
232 CWidgetStyle *style = (CWidgetStyle *)NULL);
233
234 /**
235 * CButton Destructor.
236 */
237
238 virtual inline ~CButton() { }
239 };
240 }
241
242 #endif // __cplusplus
243
244 #endif // __INCLUDE_CBUTTON_HXX
NXWidgets::CButton::CButton
CButton(const CButton &button)
Definition: cbutton.hxx:212
NXWidgets::CWidgetStyle
Definition: cwidgetstyle.hxx:125
clabel.hxx
NXWidgets::CWidgetControl
Definition: cwidgetcontrol.hxx:95
NXWidgets::CButton::onReleaseOutside
virtual void onReleaseOutside(nxgl_coord_t x, nxgl_coord_t y)
Definition: cbutton.cxx:308
NXWidgets::CButton::~CButton
virtual ~CButton()
Definition: cbutton.hxx:238
NXWidgets::CButton::drawBorder
virtual void drawBorder(CGraphicsPort *port)
Definition: cbutton.cxx:232
NXWidgets::CButton::drawOutline
virtual void drawOutline(CGraphicsPort *port)
Definition: cbutton.cxx:123
cwidgetstyle.hxx
NXWidgets::CButton::onClick
virtual void onClick(nxgl_coord_t x, nxgl_coord_t y)
Definition: cbutton.cxx:272
NXWidgets
Definition: cbgwindow.hxx:65
NXWidgets::CButton::onPreRelease
virtual void onPreRelease(nxgl_coord_t x, nxgl_coord_t y)
Definition: cbutton.cxx:284
NXWidgets::CButton::drawContents
virtual void drawContents(CGraphicsPort *port)
Definition: cbutton.cxx:175
NXWidgets::CNxString
Definition: cnxstring.hxx:121
NXWidgets::CLabel
Definition: clabel.hxx:112
NXWidgets::CButton::onRelease
virtual void onRelease(nxgl_coord_t x, nxgl_coord_t y)
Definition: cbutton.cxx:296
NXWidgets::CButton
Definition: cbutton.hxx:109
NXWidgets::CGraphicsPort
Definition: cgraphicsport.hxx:106