aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2014-05-09 21:25:31 +1000
committerinmarket <andrewh@inmarket.com.au>2014-05-09 21:25:31 +1000
commit9e8b38ba943b339b966b1011bab899720d6305fc (patch)
treef0b169569f380857e4ed7c3927d0197bcb5ec6ae /src
parentca1a83abca9ecc159ff6f0d9e27ab133fb947997 (diff)
downloaduGFX-9e8b38ba943b339b966b1011bab899720d6305fc.tar.gz
uGFX-9e8b38ba943b339b966b1011bab899720d6305fc.tar.bz2
uGFX-9e8b38ba943b339b966b1011bab899720d6305fc.zip
Add gwinClearInit() and gwinWidgetClearInit() to clear gwin initialisation structures.
Incorporate into demo's
Diffstat (limited to 'src')
-rw-r--r--src/gwin/gwidget.c8
-rw-r--r--src/gwin/gwidget.h16
-rw-r--r--src/gwin/gwin.c8
-rw-r--r--src/gwin/sys_defs.h18
4 files changed, 49 insertions, 1 deletions
diff --git a/src/gwin/gwidget.c b/src/gwin/gwidget.c
index 181b7425..c46520ea 100644
--- a/src/gwin/gwidget.c
+++ b/src/gwin/gwidget.c
@@ -297,6 +297,14 @@ void _gwidgetRedraw(GHandle gh) {
gw->fnDraw(gw, gw->fnParam);
}
+void gwinWidgetClearInit(GWidgetInit *pwi) {
+ char *p;
+ unsigned len;
+
+ for(p = (char *)pwi, len = sizeof(GWidgetInit); len; len--)
+ *p++ = 0;
+}
+
void gwinSetDefaultStyle(const GWidgetStyle *pstyle, bool_t updateAll) {
if (!pstyle)
pstyle = &BlackWidgetStyle;
diff --git a/src/gwin/gwidget.h b/src/gwin/gwidget.h
index 96832fe3..8373e2d0 100644
--- a/src/gwin/gwidget.h
+++ b/src/gwin/gwidget.h
@@ -78,6 +78,10 @@ typedef void (*CustomWidgetDrawFunction)(struct GWidgetObject *gw, void *param);
* @brief The structure to initialise a widget.
*
* @note Some widgets may have extra parameters.
+ * @note If you create this structure on the stack, you should always memset
+ * it to all zero's first in case a future version of the software
+ * add's extra fields. Alternatively you can use @p gwinWidgetClearInit()
+ * to clear it.
* @note The text element must be static string (not stack allocated). If you want to use
* a dynamic string (eg a stack allocated string) use NULL for this member and then call
* @p gwinSetText() with useAlloc set to TRUE.
@@ -127,6 +131,18 @@ extern "C" {
#endif
/**
+ * @brief Clear a GWidgetInit structure to all zero's
+ * @note This function is provided just to prevent problems
+ * on operating systems where using memset() causes issues
+ * in the users application.
+ *
+ * @param[in] pwi The GWidgetInit structure to clear
+ *
+ * @api
+ */
+void gwinWidgetClearInit(GWidgetInit *pwi);
+
+/**
* @brief Set the default style for widgets created hereafter.
*
* @param[in] pstyle The default style. Passing NULL uses the system compiled style.
diff --git a/src/gwin/gwin.c b/src/gwin/gwin.c
index 54f42077..93c17f3a 100644
--- a/src/gwin/gwin.c
+++ b/src/gwin/gwin.c
@@ -149,6 +149,14 @@ GHandle _gwindowCreate(GDisplay *g, GWindowObject *pgw, const GWindowInit *pInit
* Routines that affect all windows
*-----------------------------------------------*/
+void gwinClearInit(GWindowInit *pwi) {
+ char *p;
+ unsigned len;
+
+ for(p = (char *)pwi, len = sizeof(GWindowInit); len; len--)
+ *p++ = 0;
+}
+
void gwinSetDefaultColor(color_t clr) {
defaultFgColor = clr;
}
diff --git a/src/gwin/sys_defs.h b/src/gwin/sys_defs.h
index f4e1c2f7..fa5084a3 100644
--- a/src/gwin/sys_defs.h
+++ b/src/gwin/sys_defs.h
@@ -34,7 +34,7 @@
*/
typedef struct GWindowObject {
#if GWIN_NEED_WINDOWMANAGER
- // This MUST be the first member of the struct
+ // This MUST be the first member of the structure
gfxQueueASyncItem wmq; // @< The next window (for the window manager)
#endif
const struct gwinVMT *vmt; // @< The VMT for this GWIN
@@ -54,6 +54,10 @@ typedef struct GWindowObject {
*
* @note Some gwin's will need extra parameters.
* @note The dimensions and position may be changed to fit on the real screen.
+ * @note If you create this structure on the stack, you should always memset
+ * it to all zero's first in case a future version of the software
+ * add's extra fields. Alternatively you can use @p gwinClearInit()
+ * to clear it.
*
* @{
*/
@@ -103,6 +107,18 @@ extern "C" {
*-------------------------------------------------*/
/**
+ * @brief Clear a GWindowInit structure to all zero's
+ * @note This function is provided just to prevent problems
+ * on operating systems where using memset() causes issues
+ * in the users application.
+ *
+ * @param[in] pwi The GWindowInit structure to clear
+ *
+ * @api
+ */
+ void gwinClearInit(GWindowInit *pwi);
+
+ /**
* @brief Set the default foreground color for all new GWIN windows
*
* @param[in] clr The color to be set