From 9945b011a9245907b5066565b396808d3d22c363 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Mon, 3 Jun 2013 17:36:39 +0200 Subject: [PATCH] added custom render interface for checkboxes --- include/gwin/checkbox.h | 11 +++++++++++ src/gwin/checkbox.c | 15 ++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/include/gwin/checkbox.h b/include/gwin/checkbox.h index a5f1e136..c0d8e90f 100644 --- a/include/gwin/checkbox.h +++ b/include/gwin/checkbox.h @@ -104,6 +104,17 @@ void gwinCheckboxDraw(GHandle gh); */ void gwinCheckboxSetEnabled(GHandle gh, bool_t enabled); +/** + * @brief Set the callback routine to perform a custom drawing. + * + * @param[in] gh The window handle (must be a checkbox window) + * @param[in] fn The function to use to draw the checkbox + * @param[in] param A parameter to pass to the checkbox drawing function + * + * @api + */ +void gwinCheckboxSetCustom(GHandle gh, GCheckboxDrawFunction fn, void *param); + /** * @brief Enable a checkbox * diff --git a/src/gwin/checkbox.c b/src/gwin/checkbox.c index df97a38d..0cc75622 100644 --- a/src/gwin/checkbox.c +++ b/src/gwin/checkbox.c @@ -122,6 +122,19 @@ GHandle gwinCheckboxCreate(GCheckboxObject *gb, coord_t x, coord_t y, coord_t wi return (GHandle)gb; } +void gwinCheckboxSetCustom(GHandle gh, GCheckboxDrawFunction fn, void *param) { + #define gcw ((GCheckboxObject *)gh) + + if (gh->type != GW_CHECKBOX) + return; + + gcw->fn = fn; + gcw->param = param; + + #undef gcw +} + + void gwinCheckboxSetEnabled(GHandle gh, bool_t enabled) { if (gh->type != GW_CHECKBOX) return; @@ -136,7 +149,7 @@ void gwinCheckboxDraw(GHandle gh) { return; #if GDISP_NEED_CLIP - gdispSetClip(gh->x, gh->y, gh->width, gh->height); + //gdispSetClip(gh->x, gh->y, gh->width, gh->height); #endif gcw->fn(gh,