diff --git a/changelog.txt b/changelog.txt index 8b011a26..e11f0d81 100644 --- a/changelog.txt +++ b/changelog.txt @@ -23,8 +23,9 @@ CHANGE: Added type gPoint to replace V2.x point and point_t CHANGE: Added type gCoord to replace V2.x coord_t CHANGE: Added type gPixel to replace V2.x pixel_t CHANGE: Added type gColor to replace V2.x color_t -CHANGE: Added type gPowermode to replace V2.x powermode_t, and values gPowerXXX replace powerXXX -CHANGE: Added type gJustify to replace V2.x justify_t, and values gJustifyXXX replace justifyXXX +CHANGE: Added type gPowermode to replace V2.x powermode_t, and values gPowerXXX replace powerXXX +CHANGE: Added type gJustify to replace V2.x justify_t, and values gJustifyXXX replace justifyXXX +CHANGE: Added type gFontmetric to replace V2.x fontmetric_t, and values gFontXXX replace fontXXX FIX: Added gfxRealloc() to Qt port FIX: Fixed UC1610 driver private area initialisation FIX: Fixed ST7735 driver and added kapacuk changes diff --git a/demos/games/tetris/tetris.c b/demos/games/tetris/tetris.c index 5beae2e9..e24c5122 100644 --- a/demos/games/tetris/tetris.c +++ b/demos/games/tetris/tetris.c @@ -262,7 +262,7 @@ static void printGameOver(void) { } static void printTouchAreas(void) { - gdispDrawStringBox(0, 0, gdispGetWidth(), gdispGetFontMetric(font16, fontHeight), "Touch Area's", font16, GFX_WHITE, gJustifyCenter); + gdispDrawStringBox(0, 0, gdispGetWidth(), gdispGetFontMetric(font16, gFontHeight), "Touch Area's", font16, GFX_WHITE, gJustifyCenter); gdispDrawStringBox(0, 0, gdispGetWidth(), gdispGetHeight()/4, "Pause", font16, GFX_GRAY, gJustifyCenter); gdispDrawStringBox(0, gdispGetHeight()/4, gdispGetWidth(), gdispGetHeight()/2, "Rotate", font16, GFX_GRAY, gJustifyCenter); gdispDrawStringBox(0, gdispGetHeight()-(gdispGetHeight()/4), gdispGetWidth()/4, gdispGetHeight()/4, "Left", font16, GFX_GRAY, gJustifyCenter); diff --git a/demos/modules/gdisp/fonts/main.c b/demos/modules/gdisp/fonts/main.c index 9c351de8..ce66aabd 100644 --- a/demos/modules/gdisp/fonts/main.c +++ b/demos/modules/gdisp/fonts/main.c @@ -53,8 +53,8 @@ int main(void) { //font2 = gdispOpenFont("Apple*"); y = 0; - fheight1 = gdispGetFontMetric(font1, fontHeight)+2; - fheight2 = gdispGetFontMetric(font2, fontHeight)+2; + fheight1 = gdispGetFontMetric(font1, gFontHeight)+2; + fheight2 = gdispGetFontMetric(font2, gFontHeight)+2; line1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; line2 = "0123456789~!@#$%^&*_-+=(){}[]<>|/\\:;,.?'\"`"; diff --git a/demos/tools/touch_calibration_grabber/main.c b/demos/tools/touch_calibration_grabber/main.c index ac55f051..81032b83 100644 --- a/demos/tools/touch_calibration_grabber/main.c +++ b/demos/tools/touch_calibration_grabber/main.c @@ -55,7 +55,7 @@ int main(void) { // Create our title font = gdispOpenFont("UI2"); gwinSetDefaultFont(font); - bHeight = gdispGetFontMetric(font, fontHeight)+4; + bHeight = gdispGetFontMetric(font, gFontHeight)+4; gdispFillStringBox(0, 0, swidth, bHeight, "Touchscreen Calibration Grabber", font, GFX_RED, GFX_WHITE, gJustifyCenter); // Create our main display writing window diff --git a/demos/tools/touch_driver_test/main.c b/demos/tools/touch_driver_test/main.c index 08d6da3b..3915c2a8 100644 --- a/demos/tools/touch_driver_test/main.c +++ b/demos/tools/touch_driver_test/main.c @@ -115,7 +115,7 @@ int main(void) { bHeight = gdispGetStringWidth("-", font)*2; if (bHeight > bWidth2) bWidth2 = bHeight; bWidth2 += 4; - bHeight = gdispGetFontMetric(font, fontHeight)*2+2; + bHeight = gdispGetFontMetric(font, gFontHeight)*2+2; // Create our main display window { diff --git a/demos/tools/touch_raw_readings/main.c b/demos/tools/touch_raw_readings/main.c index 416b75a5..9077b1ac 100644 --- a/demos/tools/touch_raw_readings/main.c +++ b/demos/tools/touch_raw_readings/main.c @@ -60,7 +60,7 @@ int main(void) { // Create our title font = gdispOpenFont("UI2"); gwinSetDefaultFont(font); - bHeight = gdispGetFontMetric(font, fontHeight)+4; + bHeight = gdispGetFontMetric(font, gFontHeight)+4; gdispFillStringBox(0, 0, swidth, bHeight, "Raw Touch Readings", font, GFX_RED, GFX_WHITE, gJustifyCenter); // Create our main display writing window diff --git a/src/gdisp/gdisp.c b/src/gdisp/gdisp.c index 1dbd26b2..323699d2 100644 --- a/src/gdisp/gdisp.c +++ b/src/gdisp/gdisp.c @@ -3608,19 +3608,19 @@ void gdispGDrawBox(GDisplay *g, gCoord x, gCoord y, gCoord cx, gCoord cy, gColor MUTEX_EXIT(g); } - gCoord gdispGetFontMetric(font_t font, fontmetric_t metric) { + gCoord gdispGetFontMetric(font_t font, gFontmetric metric) { if (!font) return 0; /* No mutex required as we only read static data */ switch(metric) { - case fontHeight: return font->height; - case fontDescendersHeight: return font->height - font->baseline_y; - case fontLineSpacing: return font->line_height; - case fontCharPadding: return 0; - case fontMinWidth: return font->min_x_advance; - case fontMaxWidth: return font->max_x_advance; - case fontBaselineX: return font->baseline_x; - case fontBaselineY: return font->baseline_y; + case gFontHeight: return font->height; + case gFontDescendersHeight: return font->height - font->baseline_y; + case gFontLineSpacing: return font->line_height; + case gFontCharPadding: return 0; + case gFontMinWidth: return font->min_x_advance; + case gFontMaxWidth: return font->max_x_advance; + case gFontBaselineX: return font->baseline_x; + case gFontBaselineY: return font->baseline_y; } return 0; } diff --git a/src/gdisp/gdisp.h b/src/gdisp/gdisp.h index aac33e44..ed6e7c6a 100644 --- a/src/gdisp/gdisp.h +++ b/src/gdisp/gdisp.h @@ -73,19 +73,19 @@ typedef enum gJustify { #define JUSTIFYMASK_TOPBOTTOM (gJustifyTop|gJustifyMiddle|gJustifyBottom) /** - * @enum fontmetric + * @enum gFontmetric * @brief Type for the font metric. */ -typedef enum fontmetric { - fontHeight, /**< The height of the font */ - fontDescendersHeight, /**< The descenders height */ - fontLineSpacing, /**< The line spacing */ - fontCharPadding, /**< The char padding */ - fontMinWidth, /**< The minimum width */ - fontMaxWidth, /**< The maximum width */ - fontBaselineX, /**< The base line in x direction */ - fontBaselineY /**< The base line in y direction */ -} fontmetric_t; +typedef enum gFontmetric { + gFontHeight, /**< The height of the font */ + gFontDescendersHeight, /**< The descenders height */ + gFontLineSpacing, /**< The line spacing */ + gFontCharPadding, /**< The char padding */ + gFontMinWidth, /**< The minimum width */ + gFontMaxWidth, /**< The maximum width */ + gFontBaselineX, /**< The base line in x direction */ + gFontBaselineY /**< The base line in y direction */ +} gFontmetric; /** * @brief The type of a font. @@ -1013,7 +1013,7 @@ void gdispGDrawBox(GDisplay *g, gCoord x, gCoord y, gCoord cx, gCoord cy, gColor * * @api */ - gCoord gdispGetFontMetric(font_t font, fontmetric_t metric); + gCoord gdispGetFontMetric(font_t font, gFontmetric metric); /** * @brief Get the pixel width of a character. @@ -1230,6 +1230,10 @@ void gdispGDrawBox(GDisplay *g, gCoord x, gCoord y, gCoord cx, gCoord cy, gColor /* V2 compatibility */ #if GFX_COMPAT_V2 + typedef gColor color_t; + typedef gPixel pixel_t; + typedef gCoord coord_t; + typedef gPoint point, point_t; typedef gPowermode powermode_t; #define powerOff gPowerOff #define powerDeepSleep gPowerDeepSleep @@ -1246,10 +1250,15 @@ void gdispGDrawBox(GDisplay *g, gCoord x, gCoord y, gCoord cx, gCoord cy, gColor #define justifyNoWordWrap gJustifyNoWordWrap #define justifyPad gJustifyPad #define justifyNoPad gJustifyNoPad - typedef gColor color_t; - typedef gPixel pixel_t; - typedef gCoord coord_t; - typedef gPoint point, point_t; + typedef gFontmetric fontmetric_t; + #define fontHeight gFontHeight + #define fontDescendersHeight gFontDescendersHeight + #define fontLineSpacing gFontLineSpacing + #define fontCharPadding gFontCharPadding + #define fontMinWidth gFontMinWidth + #define fontMaxWidth gFontMaxWidth + #define fontBaselineX gFontBaselineX + #define fontBaselineY gFontBaselineY #endif #endif /* GFX_USE_GDISP */ diff --git a/src/gwin/gwin_console.c b/src/gwin/gwin_console.c index c5db3da8..668dd116 100644 --- a/src/gwin/gwin_console.c +++ b/src/gwin/gwin_console.c @@ -200,7 +200,7 @@ return; // Handle vertical size decrease - We have to scroll out first lines of the log - fy = gdispGetFontMetric(gh->font, fontHeight); + fy = gdispGetFontMetric(gh->font, gFontHeight); while (gcw->cy > gh->height) { scrollBuffer(gcw); gcw->cy -= fy; @@ -233,7 +233,7 @@ y = gcw->cy; if (gcw->cx) - y += gdispGetFontMetric(gh->font, fontHeight); + y += gdispGetFontMetric(gh->font, gFontHeight); if (y < gh->height) gdispGFillArea(gh->display, gh->x, gh->y+y, gh->width, gh->height-y, gh->bgcolor); } @@ -397,14 +397,14 @@ GHandle gwinGConsoleCreate(GDisplay *g, GConsoleObject *gc, const GWindowInit *p // Get the number of characters that fit in the x direction #if GWIN_CONSOLE_HISTORY_AVERAGING - gcw->bufsize = gh->width / ((2*gdispGetFontMetric(gh->font, fontMinWidth)+gdispGetFontMetric(gh->font, fontMaxWidth))/3); + gcw->bufsize = gh->width / ((2*gdispGetFontMetric(gh->font, gFontMinWidth)+gdispGetFontMetric(gh->font, gFontMaxWidth))/3); #else - gcw->bufsize = gh->width / gdispGetFontMetric(gh->font, fontMinWidth); + gcw->bufsize = gh->width / gdispGetFontMetric(gh->font, gFontMinWidth); #endif gcw->bufsize++; // Allow space for a newline on each line. // Multiply by the number of lines - gcw->bufsize *= gh->height / gdispGetFontMetric(gh->font, fontHeight); + gcw->bufsize *= gh->height / gdispGetFontMetric(gh->font, gFontHeight); // Allocate the buffer if (!(gcw->buffer = gfxAlloc(gcw->bufsize))) @@ -438,7 +438,7 @@ void gwinPutChar(GHandle gh, char c) { if (gh->vmt != &consoleVMT || !gh->font) return; - fy = gdispGetFontMetric(gh->font, fontHeight); + fy = gdispGetFontMetric(gh->font, gFontHeight); #if GWIN_CONSOLE_ESCSEQ /** @@ -603,8 +603,8 @@ void gwinPutChar(GHandle gh, char c) { #if GWIN_CONSOLE_ESCSEQ // Draw the underline if ((gcw->currattr & ESC_UNDERLINE)) - gdispGDrawLine(gh->display, gh->x + gcw->cx, gh->y + gcw->cy + fy - gdispGetFontMetric(gh->font, fontDescendersHeight), - gh->x + gcw->cx + width + gdispGetFontMetric(gh->font, fontCharPadding), gh->y + gcw->cy + fy - gdispGetFontMetric(gh->font, fontDescendersHeight), + gdispGDrawLine(gh->display, gh->x + gcw->cx, gh->y + gcw->cy + fy - gdispGetFontMetric(gh->font, gFontDescendersHeight), + gh->x + gcw->cx + width + gdispGetFontMetric(gh->font, gFontCharPadding), gh->y + gcw->cy + fy - gdispGetFontMetric(gh->font, gFontDescendersHeight), ESCPrintColor(gcw)); // Bold (very crude) if ((gcw->currattr & ESC_BOLD)) @@ -615,7 +615,7 @@ void gwinPutChar(GHandle gh, char c) { } // Update the cursor - gcw->cx += width + gdispGetFontMetric(gh->font, fontCharPadding); + gcw->cx += width + gdispGetFontMetric(gh->font, gFontCharPadding); #undef gcw } diff --git a/src/gwin/gwin_label.c b/src/gwin/gwin_label.c index 88573210..97b9f304 100644 --- a/src/gwin/gwin_label.c +++ b/src/gwin/gwin_label.c @@ -32,7 +32,7 @@ static gCoord getheight(const char *text, font_t font, gCoord maxwidth) { (void) text; (void) maxwidth; - return gdispGetFontMetric(font, fontHeight); + return gdispGetFontMetric(font, gFontHeight); } static const gwidgetVMT labelVMT = { diff --git a/src/gwin/gwin_list.c b/src/gwin/gwin_list.c index d832f99a..cd21623d 100644 --- a/src/gwin/gwin_list.c +++ b/src/gwin/gwin_list.c @@ -60,7 +60,7 @@ static void sendListEvent(GWidgetObject *gw, int item) { gCoord iheight; (void) x; - iheight = gdispGetFontMetric(gw->g.font, fontHeight) + LST_VERT_PAD; + iheight = gdispGetFontMetric(gw->g.font, gFontHeight) + LST_VERT_PAD; // Handle click over the list area item = (gw2obj->top + y) / iheight; @@ -101,7 +101,7 @@ static void sendListEvent(GWidgetObject *gw, int item) { return; // Some initial stuff - iheight = gdispGetFontMetric(gw->g.font, fontHeight) + LST_VERT_PAD; + iheight = gdispGetFontMetric(gw->g.font, gFontHeight) + LST_VERT_PAD; pgsz = gw->g.height-2; // Handle click over the scroll bar @@ -163,7 +163,7 @@ static void sendListEvent(GWidgetObject *gw, int item) { if (gw2obj->last_mouse_y != y) { oldtop = gw2obj->top; - iheight = gdispGetFontMetric(gw->g.font, fontHeight) + LST_VERT_PAD; + iheight = gdispGetFontMetric(gw->g.font, gFontHeight) + LST_VERT_PAD; gw2obj->top -= y - gw2obj->last_mouse_y; if (gw2obj->top >= gw2obj->cnt * iheight - (gw->g.height-2)) @@ -185,7 +185,7 @@ static void sendListEvent(GWidgetObject *gw, int item) { int i; gCoord iheight; - iheight = gdispGetFontMetric(gw->g.font, fontHeight) + LST_VERT_PAD; + iheight = gdispGetFontMetric(gw->g.font, gFontHeight) + LST_VERT_PAD; switch (role) { // select down @@ -664,7 +664,7 @@ void gwinListViewItem(GHandle gh, int item) { return; // Work out a possible new top for the list - iheight = gdispGetFontMetric(gh->font, fontHeight) + LST_VERT_PAD; + iheight = gdispGetFontMetric(gh->font, gFontHeight) + LST_VERT_PAD; gh2obj->top = iheight * item; // Adjust the list @@ -725,7 +725,7 @@ void gwinListDefaultDraw(GWidgetObject* gw, void* param) { return; ps = (gw->g.flags & GWIN_FLG_SYSENABLED) ? &gw->pstyle->enabled : &gw->pstyle->disabled; - iheight = gdispGetFontMetric(gw->g.font, fontHeight) + LST_VERT_PAD; + iheight = gdispGetFontMetric(gw->g.font, gFontHeight) + LST_VERT_PAD; x = 1; // the scroll area diff --git a/src/gwin/gwin_textedit.c b/src/gwin/gwin_textedit.c index 590780cf..3373ab34 100644 --- a/src/gwin/gwin_textedit.c +++ b/src/gwin/gwin_textedit.c @@ -307,8 +307,8 @@ void gwinTexteditDefaultDraw(GWidgetObject* gw, void* param) // Calculate cursor stuff // Draw cursor - tpos += gw->g.x + CURSOR_PADDING_LEFT + TEXT_PADDING_LEFT + gdispGetFontMetric(gw->g.font, fontBaselineX)/2; - cpos = (gw->g.height - gdispGetFontMetric(gw->g.font, fontHeight))/2 - CURSOR_EXTRA_HEIGHT; + tpos += gw->g.x + CURSOR_PADDING_LEFT + TEXT_PADDING_LEFT + gdispGetFontMetric(gw->g.font, gFontBaselineX)/2; + cpos = (gw->g.height - gdispGetFontMetric(gw->g.font, gFontHeight))/2 - CURSOR_EXTRA_HEIGHT; gdispGDrawLine(gw->g.display, tpos, gw->g.y + cpos, tpos, gw->g.y + gw->g.height - cpos, pcol->edge); }