aboutsummaryrefslogtreecommitdiffstats
path: root/src/gwin/checkbox.c
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2013-07-06 01:45:24 +1000
committerinmarket <andrewh@inmarket.com.au>2013-07-06 01:45:24 +1000
commitab44f32859ac61072a561869787089e13adaf509 (patch)
tree4a3e03305b94638d90dff64127abc6c9a1c7c4df /src/gwin/checkbox.c
parentf3f9b7dc015b5afc82fba6682e780dcc72f9241d (diff)
downloaduGFX-ab44f32859ac61072a561869787089e13adaf509.tar.gz
uGFX-ab44f32859ac61072a561869787089e13adaf509.tar.bz2
uGFX-ab44f32859ac61072a561869787089e13adaf509.zip
Remove widget structure members when they are not needed for input tracking
Also doco update for Enabled Flag
Diffstat (limited to 'src/gwin/checkbox.c')
-rw-r--r--src/gwin/checkbox.c122
1 files changed, 63 insertions, 59 deletions
diff --git a/src/gwin/checkbox.c b/src/gwin/checkbox.c
index 62f4c55b..74d612d2 100644
--- a/src/gwin/checkbox.c
+++ b/src/gwin/checkbox.c
@@ -24,42 +24,6 @@
// Our checked state
#define GCHECKBOX_FLG_CHECKED (GWIN_FIRST_CONTROL_FLAG<<0)
-// Prototypes for button VMT functions
-static void MouseDown(GWidgetObject *gw, coord_t x, coord_t y);
-static void ToggleOn(GWidgetObject *gw, uint16_t role);
-static void ToggleAssign(GWidgetObject *gw, uint16_t role, uint16_t instance);
-static uint16_t ToggleGet(GWidgetObject *gw, uint16_t role);
-
-// The button VMT table
-static const gwidgetVMT checkboxVMT = {
- {
- "Checkbox", // The classname
- sizeof(GCheckboxObject),// The object size
- _gwidgetDestroy, // The destroy routine
- _gwidgetRedraw, // The redraw routine
- 0, // The after-clear routine
- },
- gwinCheckboxDraw_CheckOnLeft, // The default drawing routine
- {
- MouseDown, // Process mouse down events
- 0, // Process mouse up events (NOT USED)
- 0, // Process mouse move events (NOT USED)
- },
- {
- 1, // 1 toggle role
- ToggleAssign, // Assign Toggles
- ToggleGet, // Get Toggles
- 0, // Process toggle off events (NOT USED)
- ToggleOn, // Process toggle on events
- },
- {
- 0, // No dial roles
- 0, // Assign Dials (NOT USED)
- 0, // Get Dials (NOT USED)
- 0, // Process dial move events (NOT USED)
- }
-};
-
static const GCheckboxColors defaultColors = {
Black, // border
Grey, // selected
@@ -87,37 +51,77 @@ static void SendCheckboxEvent(GWidgetObject *gw) {
#undef pce
}
-// A mouse down has occurred over the checkbox
-static void MouseDown(GWidgetObject *gw, coord_t x, coord_t y) {
- (void) x; (void) y;
- gw->g.flags ^= GCHECKBOX_FLG_CHECKED;
- _gwidgetRedraw((GHandle)gw);
- SendCheckboxEvent(gw);
-}
+#if GINPUT_NEED_MOUSE
+ static void MouseDown(GWidgetObject *gw, coord_t x, coord_t y) {
+ (void) x; (void) y;
+ gw->g.flags ^= GCHECKBOX_FLG_CHECKED;
+ _gwidgetRedraw((GHandle)gw);
+ SendCheckboxEvent(gw);
+ }
+#endif
+
+#if GINPUT_NEED_TOGGLE
+ static void ToggleOn(GWidgetObject *gw, uint16_t role) {
+ (void) role;
+ gw->g.flags ^= GCHECKBOX_FLG_CHECKED;
+ _gwidgetRedraw((GHandle)gw);
+ SendCheckboxEvent(gw);
+ }
-// A toggle on has occurred
-static void ToggleOn(GWidgetObject *gw, uint16_t role) {
- (void) role;
- gw->g.flags ^= GCHECKBOX_FLG_CHECKED;
- _gwidgetRedraw((GHandle)gw);
- SendCheckboxEvent(gw);
-}
+ static void ToggleAssign(GWidgetObject *gw, uint16_t role, uint16_t instance) {
+ (void) role;
+ ((GCheckboxObject *)gw)->toggle = instance;
+ }
-static void ToggleAssign(GWidgetObject *gw, uint16_t role, uint16_t instance) {
- (void) role;
- ((GCheckboxObject *)gw)->toggle = instance;
-}
+ static uint16_t ToggleGet(GWidgetObject *gw, uint16_t role) {
+ (void) role;
+ return ((GCheckboxObject *)gw)->toggle;
+ }
+#endif
-static uint16_t ToggleGet(GWidgetObject *gw, uint16_t role) {
- (void) role;
- return ((GCheckboxObject *)gw)->toggle;
-}
+// The checkbox VMT table
+static const gwidgetVMT checkboxVMT = {
+ {
+ "Checkbox", // The classname
+ sizeof(GCheckboxObject),// The object size
+ _gwidgetDestroy, // The destroy routine
+ _gwidgetRedraw, // The redraw routine
+ 0, // The after-clear routine
+ },
+ gwinCheckboxDraw_CheckOnLeft, // The default drawing routine
+ #if GINPUT_NEED_MOUSE
+ {
+ MouseDown, // Process mouse down events
+ 0, // Process mouse up events (NOT USED)
+ 0, // Process mouse move events (NOT USED)
+ },
+ #endif
+ #if GINPUT_NEED_TOGGLE
+ {
+ 1, // 1 toggle role
+ ToggleAssign, // Assign Toggles
+ ToggleGet, // Get Toggles
+ 0, // Process toggle off events (NOT USED)
+ ToggleOn, // Process toggle on events
+ },
+ #endif
+ #if GINPUT_NEED_DIAL
+ {
+ 0, // No dial roles
+ 0, // Assign Dials (NOT USED)
+ 0, // Get Dials (NOT USED)
+ 0, // Process dial move events (NOT USED)
+ },
+ #endif
+};
GHandle gwinCreateCheckbox(GCheckboxObject *gb, const GWidgetInit *pInit) {
if (!(gb = (GCheckboxObject *)_gwidgetCreate(&gb->w, pInit, &checkboxVMT)))
return 0;
- gb->toggle = (uint16_t) -1;
+ #if GINPUT_NEED_TOGGLE
+ gb->toggle = GWIDGET_NO_INSTANCE;
+ #endif
gb->c = defaultColors; // assign the default colors
gwinSetVisible((GHandle)gb, pInit->g.show);
return (GHandle)gb;