From e8a769c3823eef72a9e064d3bf992152ed261ad2 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Fri, 6 Nov 2015 22:47:42 +0100 Subject: [PATCH] Adding justification parameter to gwinLabelCreate() --- demos/applications/combo/main.c | 10 +++++----- demos/modules/gwin/frame/main.c | 2 +- demos/modules/gwin/label/main.c | 4 ++-- demos/modules/gwin/list/main.c | 4 ++-- demos/modules/gwin/tabset/main.c | 6 +++--- demos/modules/gwin/widgets/main.c | 10 +++++----- docs/releases.txt | 1 + src/gwin/gwin_label.c | 17 ++++++++++------- src/gwin/gwin_label.h | 7 +++++-- 9 files changed, 34 insertions(+), 27 deletions(-) diff --git a/demos/applications/combo/main.c b/demos/applications/combo/main.c index fba3d851..bf37d242 100644 --- a/demos/applications/combo/main.c +++ b/demos/applications/combo/main.c @@ -228,19 +228,19 @@ static void createWidgets(void) { wi.g.parent = ghPgLabels; wi.g.width = pagewidth-10; wi.g.height = LABEL_HEIGHT; wi.g.x = wi.g.y = 5; wi.text = "N/A"; - ghLabelSlider1 = gwinLabelCreate(0, &wi); + ghLabelSlider1 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabelSlider1, 100, "Slider 1:"); wi.g.y += LABEL_HEIGHT + 2; - ghLabelSlider2 = gwinLabelCreate(0, &wi); + ghLabelSlider2 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabelSlider2, 100, "Slider 2:"); wi.g.y += LABEL_HEIGHT + 2; - ghLabelSlider3 = gwinLabelCreate(0, &wi); + ghLabelSlider3 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabelSlider3, 100, "Slider 3:"); wi.g.y += LABEL_HEIGHT + 2; - ghLabelSlider4 = gwinLabelCreate(0, &wi); + ghLabelSlider4 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabelSlider4, 100, "Slider 4:"); wi.g.y += LABEL_HEIGHT + 2; - ghLabelRadio1 = gwinLabelCreate(0, &wi); + ghLabelRadio1 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabelRadio1, 100, "RadioButton 1:"); diff --git a/demos/modules/gwin/frame/main.c b/demos/modules/gwin/frame/main.c index a97525ab..9f4b2419 100644 --- a/demos/modules/gwin/frame/main.c +++ b/demos/modules/gwin/frame/main.c @@ -31,7 +31,7 @@ static void _createWidgets(void) { wi.g.y = 100; wi.g.x = 150; wi.text = "Surprise!"; - gwinLabelCreate(0, &wi); + gwinLabelCreate(0, &wi, justifyCenter); // Apply the frame parameters wi.g.width = 300; diff --git a/demos/modules/gwin/label/main.c b/demos/modules/gwin/label/main.c index 425436ea..8ddce320 100644 --- a/demos/modules/gwin/label/main.c +++ b/demos/modules/gwin/label/main.c @@ -42,13 +42,13 @@ static void createWidgets(void) { // Create the IP label wi.g.width = 200; wi.g.height = 20; wi.g.x = 10, wi.g.y = 80; wi.text = "192.168.1.42"; - ghLabel1 = gwinLabelCreate(0, &wi); + ghLabel1 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabel1, 100, "Current IP:"); // Create the DHCP label wi.g.width = 200; wi.g.height = 20; wi.g.x = 10, wi.g.y = 100; wi.text = "Off"; - ghLabel2 = gwinLabelCreate(0, &wi); + ghLabel2 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabel2, 100, "DHCP:"); } diff --git a/demos/modules/gwin/list/main.c b/demos/modules/gwin/list/main.c index 0102f276..ad999aa2 100644 --- a/demos/modules/gwin/list/main.c +++ b/demos/modules/gwin/list/main.c @@ -43,12 +43,12 @@ static void createWidgets(void) { // Create the label for the first list wi.g.width = 150; wi.g.height = 20; wi.g.x = 10, wi.g.y = 80; wi.text = "List 1: Default"; - ghLabel1 = gwinLabelCreate(0, &wi); + ghLabel1 = gwinLabelCreate(0, &wi, justifyCenter); // Create the label for the second list wi.g.width = 150; wi.g.height = 20; wi.g.x = 165, wi.g.y = 80; wi.text = "List 2: Smooth scrolling"; - ghLabel1 = gwinLabelCreate(0, &wi); + ghLabel1 = gwinLabelCreate(0, &wi, justifyCenter); // The first list widget wi.g.width = 150; diff --git a/demos/modules/gwin/tabset/main.c b/demos/modules/gwin/tabset/main.c index f70ab909..26c29ae4 100644 --- a/demos/modules/gwin/tabset/main.c +++ b/demos/modules/gwin/tabset/main.c @@ -52,19 +52,19 @@ static void createWidgets(void) { wi.g.width = 120; wi.g.height = 20; wi.g.x = 10; wi.g.y = 10; wi.g.parent = ghPage1; wi.text = "This is page Nr. 1"; - ghLabel1 = gwinLabelCreate(0, &wi); + ghLabel1 = gwinLabelCreate(0, &wi, justifyLeft); // Add some widgets to Page 2 wi.g.width = 120; wi.g.height = 20; wi.g.x = 10; wi.g.y = 50; wi.g.parent = ghPage2; wi.text = "This is page Nr. 2"; - ghLabel2 = gwinLabelCreate(0, &wi); + ghLabel2 = gwinLabelCreate(0, &wi, justifyLeft); // Add some widgets to Page 3 wi.g.width = 120; wi.g.height = 20; wi.g.x = 10; wi.g.y = 90; wi.g.parent = ghPage3; wi.text = "This is page Nr. 3"; - ghLabel3 = gwinLabelCreate(0, &wi); + ghLabel3 = gwinLabelCreate(0, &wi, justifyLeft); } int main(void) { diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index 8f5a6329..6f871ce2 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -325,19 +325,19 @@ static void createWidgets(void) { wi.g.parent = ghPgLabels; wi.g.width = pagewidth-10; wi.g.height = LABEL_HEIGHT; wi.g.x = wi.g.y = 5; wi.text = "N/A"; - ghLabelSlider1 = gwinLabelCreate(0, &wi); + ghLabelSlider1 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabelSlider1, 100, "Slider 1:"); wi.g.y += LABEL_HEIGHT + 2; - ghLabelSlider2 = gwinLabelCreate(0, &wi); + ghLabelSlider2 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabelSlider2, 100, "Slider 2:"); wi.g.y += LABEL_HEIGHT + 2; - ghLabelSlider3 = gwinLabelCreate(0, &wi); + ghLabelSlider3 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabelSlider3, 100, "Slider 3:"); wi.g.y += LABEL_HEIGHT + 2; - ghLabelSlider4 = gwinLabelCreate(0, &wi); + ghLabelSlider4 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabelSlider4, 100, "Slider 4:"); wi.g.y += LABEL_HEIGHT + 2; - ghLabelRadio1 = gwinLabelCreate(0, &wi); + ghLabelRadio1 = gwinLabelCreate(0, &wi, justifyLeft); gwinLabelSetAttribute(ghLabelRadio1, 100, "RadioButton 1:"); diff --git a/docs/releases.txt b/docs/releases.txt index b0d327ae..d2542b49 100644 --- a/docs/releases.txt +++ b/docs/releases.txt @@ -25,6 +25,7 @@ FEATURE: Added word-wrapping support for gdispDrawStringBox() and gdispFillStrin FIX: Fixing issue in touchscreen calibration code FEATURE: Added GFX_OS_PRE_INIT_FUNCTION for early hardware initialization FIX: Fixing GTIMER for high clock rate devices +FEATURE: Adding justification parameter to gwinLabelCreate() *** Release 2.3 *** diff --git a/src/gwin/gwin_label.c b/src/gwin/gwin_label.c index 9b62679f..c8a9a0f0 100644 --- a/src/gwin/gwin_label.c +++ b/src/gwin/gwin_label.c @@ -80,7 +80,7 @@ static const gwidgetVMT labelVMT = { #endif }; -GHandle gwinGLabelCreate(GDisplay *g, GLabelObject *widget, GWidgetInit *pInit) { +GHandle gwinGLabelCreate(GDisplay *g, GLabelObject *widget, GWidgetInit *pInit, justify_t justify) { uint16_t flags = 0; // auto assign width @@ -89,7 +89,7 @@ GHandle gwinGLabelCreate(GDisplay *g, GLabelObject *widget, GWidgetInit *pInit) flags |= GLABEL_FLG_WAUTO; pInit->g.width = getwidth(pInit->text, gwinGetDefaultFont(), gdispGGetWidth(g) - pInit->g.x); } - + // auto assign height if (pInit->g.height <= 0) { flags |= GLABEL_FLG_HAUTO; @@ -99,6 +99,8 @@ GHandle gwinGLabelCreate(GDisplay *g, GLabelObject *widget, GWidgetInit *pInit) if (!(widget = (GLabelObject *)_gwidgetCreate(g, &widget->w, pInit, &labelVMT))) return 0; + widget->justify = justify; + #if GWIN_LABEL_ATTRIBUTE widget->tab = 0; widget->attr = 0; @@ -163,12 +165,13 @@ void gwinLabelDefaultDraw(GWidgetObject *gw, void *param) { #if GWIN_LABEL_ATTRIBUTE if (gw2obj->attr) { - gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw2obj->tab, h, gw2obj->attr, gw->g.font, c, gw->pstyle->background, justifyLeft); - gdispGFillStringBox(gw->g.display, gw->g.x + gw2obj->tab, gw->g.y, w-gw2obj->tab, h, gw->text, gw->g.font, c, gw->pstyle->background, justifyLeft); - } else - gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, w, h, gw->text, gw->g.font, c, gw->pstyle->background, justifyLeft); + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, gw2obj->tab, h, gw2obj->attr, gw->g.font, c, gw->pstyle->background, gw2obj->justify); + gdispGFillStringBox(gw->g.display, gw->g.x + gw2obj->tab, gw->g.y, w-gw2obj->tab, h, gw->text, gw->g.font, c, gw->pstyle->background, gw2obj->justify); + } else { + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, w, h, gw->text, gw->g.font, c, gw->pstyle->background, gw2obj->justify); + } #else - gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, w, h, gw->text, gw->g.font, c, gw->pstyle->background, justifyLeft); + gdispGFillStringBox(gw->g.display, gw->g.x, gw->g.y, w, h, gw->text, gw->g.font, c, gw->pstyle->background, gw2obj->justify); #endif // render the border (if any) diff --git a/src/gwin/gwin_label.h b/src/gwin/gwin_label.h index 84836bf2..8c7c9fd5 100644 --- a/src/gwin/gwin_label.h +++ b/src/gwin/gwin_label.h @@ -38,6 +38,8 @@ typedef struct GLabelObject { GWidgetObject w; + justify_t justify; + #if GWIN_LABEL_ATTRIBUTE coord_t tab; const char* attr; @@ -55,13 +57,14 @@ extern "C" { * @param[in] g The GDisplay to display this window on * @param[in] widget The label structure to initialise. If this is NULL, the structure is dynamically allocated. * @param[in] pInit The initialisation parameters to use. + * @param[in] justify The justification. * * @return NULL if there is no resultat drawing area, otherwise the widget handle. * * @api */ -GHandle gwinGLabelCreate(GDisplay *g, GLabelObject *widget, GWidgetInit *pInit); -#define gwinLabelCreate(w, pInit) gwinGLabelCreate(GDISP, w, pInit) +GHandle gwinGLabelCreate(GDisplay *g, GLabelObject *widget, GWidgetInit *pInit, justify_t justify); +#define gwinLabelCreate(w, pInit, justify) gwinGLabelCreate(GDISP, w, pInit, justify) /** * @brief Border settings for the default rendering routine