diff options
author | Andrew Hannam <andrewh@inmarket.com.au> | 2012-08-05 00:46:43 +1000 |
---|---|---|
committer | Andrew Hannam <andrewh@inmarket.com.au> | 2012-08-05 00:46:43 +1000 |
commit | d61cff7a7976cd9097e5c3634ae4b1be64f736c3 (patch) | |
tree | 3d09c1c0e84ef7e2b92627e7bd535fdf15ba97a6 /halext/src | |
parent | c4f5dedfb8939b50405e8197f372e814ede8d06b (diff) | |
download | uGFX-d61cff7a7976cd9097e5c3634ae4b1be64f736c3.tar.gz uGFX-d61cff7a7976cd9097e5c3634ae4b1be64f736c3.tar.bz2 uGFX-d61cff7a7976cd9097e5c3634ae4b1be64f736c3.zip |
Many changes including scaled fonts.
Scaled fonts (independantly in x & y direction) based on normal sized
font. Effectively double sized and double height same width fonts come
free (or triple etc).
New routine for sending low level drivers hardware commands eg backlight
off/on
Power and Orientation moved to new routine.
Clean up on files to simplify low level driver file overheads.
Diffstat (limited to 'halext/src')
-rw-r--r-- | halext/src/gdisp.c | 262 | ||||
-rw-r--r-- | halext/src/gdisp_emulation.c | 135 | ||||
-rw-r--r-- | halext/src/gdisp_fonts.c | 51 |
3 files changed, 273 insertions, 175 deletions
diff --git a/halext/src/gdisp.c b/halext/src/gdisp.c index 195b01f2..4bbff695 100644 --- a/halext/src/gdisp.c +++ b/halext/src/gdisp.c @@ -32,7 +32,7 @@ #if HAL_USE_GDISP || defined(__DOXYGEN__)
#ifdef GDISP_NEED_TEXT
-#include "gdisp_fonts.h"
+ #include "gdisp_fonts.h"
#endif
#if GDISP_NEED_MULTITHREAD
@@ -92,25 +92,6 @@ #if GDISP_NEED_MULTITHREAD || defined(__DOXYGEN__)
/**
- * @brief Set the power mode for the display.
- * @pre The GDISP unit must have been initialised using @p gdispInit().
- * @note Depending on the hardware implementation this function may not
- * support powerSleep. If not powerSleep is treated the same as powerOn.
- * (sleep allows drawing to the display without the display updating).
- *
- * @param[in] powerMode The power mode to use
- *
- * @api
- */
- void gdispSetPowerMode(gdisp_powermode_t powerMode) {
- MUTEX_ENTER
- gdisp_lld_setpowermode(powerMode);
- MUTEX_EXIT
- }
-#endif
-
-#if GDISP_NEED_MULTITHREAD || defined(__DOXYGEN__)
- /**
* @brief Set the orientation of the display.
* @pre The GDISP unit must be in powerOn or powerSleep mode.
* @note Depending on the hardware implementation this function may clear
@@ -180,25 +161,6 @@ #if GDISP_NEED_MULTITHREAD || defined(__DOXYGEN__)
/**
- * @brief Draw a rectangular box.
- * @pre The GDISP unit must be in powerOn or powerSleep mode.
- *
- * @param[in] x0,y0 The start position
- * @param[in] cx,cy The size of the box (outside dimensions)
- * @param[in] color The color to use
- * @param[in] filled Should the box should be filled
- *
- * @api
- */
- void gdispDrawBox(coord_t x, coord_t y, coord_t cx, coord_t cy, color_t color) {
- MUTEX_ENTER
- gdisp_lld_drawbox(x, y, cx, cy, color);
- MUTEX_EXIT
- }
-#endif
-
-#if GDISP_NEED_MULTITHREAD || defined(__DOXYGEN__)
- /**
* @brief Fill an area with a color.
* @pre The GDISP unit must be in powerOn or powerSleep mode.
*
@@ -327,6 +289,46 @@ }
#endif
+#if (GDISP_NEED_PIXELREAD && GDISP_NEED_MULTITHREAD) || defined(__DOXYGEN__)
+ /**
+ * @brief Get the color of a pixel.
+ * @return The color of the pixel.
+ *
+ * @param[in] x,y The position of the pixel
+ *
+ * @api
+ */
+ color_t gdispGetPixelColor(coord_t x, coord_t y) {
+ color_t c;
+
+ MUTEX_ENTER
+ c = gdisp_lld_getpixelcolor(x, y);
+ MUTEX_EXIT
+
+ return c;
+ }
+#endif
+
+#if (GDISP_NEED_SCROLL && GDISP_NEED_MULTITHREAD) || defined(__DOXYGEN__)
+ /**
+ * @brief Scroll vertically a section of the screen.
+ * @note Optional.
+ * @note If lines is >= cy, it is equivelent to a area fill with bgcolor.
+ *
+ * @param[in] x, y The start of the area to be scrolled
+ * @param[in] cx, cy The size of the area to be scrolled
+ * @param[in] lines The number of lines to scroll (Can be positive or negative)
+ * @param[in] bgcolor The color to fill the newly exposed area.
+ *
+ * @api
+ */
+ void gdispVerticalScroll(coord_t x, coord_t y, coord_t cx, coord_t cy, int lines, color_t bgcolor) {
+ MUTEX_ENTER
+ gdisp_lld_verticalscroll(x, y, cx, cy, lines, bgcolor);
+ MUTEX_EXIT
+ }
+#endif
+
#if (GDISP_NEED_TEXT && GDISP_NEED_MULTITHREAD) || defined(__DOXYGEN__)
/**
* @brief Draw a text character with a filled background.
@@ -346,6 +348,68 @@ }
#endif
+#if (GDISP_NEED_CONTROL && GDISP_NEED_MULTITHREAD) || defined(__DOXYGEN__)
+ /**
+ * @brief Set the power mode for the display.
+ * @pre The GDISP unit must have been initialised using @p gdispInit().
+ * @note Depending on the hardware implementation this function may not
+ * support powerSleep. If not powerSleep is treated the same as powerOn.
+ * (sleep allows drawing to the display without the display updating).
+ *
+ * @param[in] powerMode The power mode to use
+ *
+ * @api
+ */
+ void gdispControl(int what, void *value) {
+ MUTEX_ENTER
+ gdisp_lld_control(what, value);
+ MUTEX_EXIT
+ }
+#endif
+
+/*===========================================================================*/
+/* High Level Driver Routines. */
+/*===========================================================================*/
+
+#if GDISP_NEED_MULTITHREAD || defined(__DOXYGEN__)
+ /**
+ * @brief Draw a rectangular box.
+ * @pre The GDISP unit must be in powerOn or powerSleep mode.
+ *
+ * @param[in] x0,y0 The start position
+ * @param[in] cx,cy The size of the box (outside dimensions)
+ * @param[in] color The color to use
+ * @param[in] filled Should the box should be filled
+ *
+ * @api
+ */
+ void gdispDrawBox(coord_t x, coord_t y, coord_t cx, coord_t cy, color_t color) {
+ /* No mutex required as we only call high level functions which have their own mutex */
+ coord_t x1, y1;
+
+ x1 = x+cx-1;
+ y1 = y+cy-1;
+
+ if (cx > 2) {
+ if (cy >= 1) {
+ gdisp_lld_drawline(x, y, x1, y, color);
+ if (cy >= 2) {
+ gdisp_lld_drawline(x, y1, x1, y1, color);
+ if (cy > 2) {
+ gdisp_lld_drawline(x, y+1, x, y1-1, color);
+ gdisp_lld_drawline(x1, y+1, x1, y1-1, color);
+ }
+ }
+ }
+ } else if (cx == 2) {
+ gdisp_lld_drawline(x, y, x, y1, color);
+ gdisp_lld_drawline(x1, y, x1, y1, color);
+ } else if (cx == 1) {
+ gdisp_lld_drawline(x, y, x, y1, color);
+ }
+ }
+#endif
+
#if GDISP_NEED_TEXT || defined(__DOXYGEN__)
/**
* @brief Draw a text string.
@@ -359,21 +423,22 @@ */
void gdispDrawString(coord_t x, coord_t y, const char *str, font_t font, color_t color) {
/* No mutex required as we only call high level functions which have their own mutex */
- coord_t w;
+ coord_t w, p;
char c;
int first;
first = 1;
+ p = font->charPadding * font->xscale;
while(*str) {
/* Get the next printable character */
c = *str++;
- w = _getCharWidth(font, c);
+ w = _getCharWidth(font, c) * font->xscale;
if (!w) continue;
/* Handle inter-character padding */
- if (font->charPadding) {
+ if (p) {
if (!first)
- x += font->charPadding;
+ x += p;
else
first = 0;
}
@@ -399,22 +464,24 @@ */
void gdispFillString(coord_t x, coord_t y, const char *str, font_t font, color_t color, color_t bgcolor) {
/* No mutex required as we only call high level functions which have their own mutex */
- coord_t w;
+ coord_t w, h, p;
char c;
int first;
first = 1;
+ h = font->height * font->yscale;
+ p = font->charPadding * font->xscale;
while(*str) {
/* Get the next printable character */
c = *str++;
- w = _getCharWidth(font, c);
+ w = _getCharWidth(font, c) * font->xscale;
if (!w) continue;
/* Handle inter-character padding */
- if (font->charPadding) {
+ if (p) {
if (!first) {
- gdispFillArea(x, y, font->charPadding, font->height, bgcolor);
- x += font->charPadding;
+ gdispFillArea(x, y, p, h, bgcolor);
+ x += p;
} else
first = 0;
}
@@ -442,16 +509,19 @@ */
void gdispFillStringBox(coord_t x, coord_t y, coord_t cx, coord_t cy, const char* str, font_t font, color_t color, color_t bgcolor, justify_t justify) {
/* No mutex required as we only call high level functions which have their own mutex */
- coord_t w, ypos, xpos;
+ coord_t w, h, p, ypos, xpos;
char c;
int first;
const char *rstr;
+ h = font->height * font->yscale;
+ p = font->charPadding * font->xscale;
+
/* Oops - font too large for the area */
- if (font->height > cy) return;
+ if (h > cy) return;
/* See if we need to fill above the font */
- ypos = (cy - font->height)/2;
+ ypos = (cy - h + 1)/2;
if (ypos > 0) {
gdispFillArea(x, y, cx, ypos, bgcolor);
y += ypos;
@@ -459,7 +529,7 @@ }
/* See if we need to fill below the font */
- ypos = cy - font->height;
+ ypos = cy - h;
if (ypos > 0) {
gdispFillArea(x, y+cy-ypos, cx, ypos, bgcolor);
cy -= ypos;
@@ -480,13 +550,13 @@ while(*str) {
/* Get the next printable character */
c = *str++;
- w = _getCharWidth(font, c);
+ w = _getCharWidth(font, c) * font->xscale;
if (!w) continue;
/* Handle inter-character padding */
- if (font->charPadding) {
+ if (p) {
if (!first) {
- xpos += font->charPadding;
+ xpos += p;
if (xpos > ypos) break;
} else
first = 0;
@@ -507,14 +577,14 @@ for(str--; str >= rstr; str--) {
/* Get the next printable character */
c = *str;
- w = _getCharWidth(font, c);
+ w = _getCharWidth(font, c) * font->xscale;
if (!w) continue;
/* Handle inter-character padding */
- if (font->charPadding) {
+ if (p) {
if (!first) {
- if (xpos - font->charPadding < x) break;
- xpos -= font->charPadding;
+ if (xpos - p < x) break;
+ xpos -= p;
} else
first = 0;
}
@@ -541,15 +611,15 @@ while(*str) {
/* Get the next printable character */
c = *str++;
- w = _getCharWidth(font, c);
+ w = _getCharWidth(font, c) * font->xscale;
if (!w) continue;
/* Handle inter-character padding */
- if (font->charPadding) {
+ if (p) {
if (!first) {
- if (xpos + font->charPadding > x+cx) break;
- gdispFillArea(xpos, y, font->charPadding, cy, bgcolor);
- xpos += font->charPadding;
+ if (xpos + p > x+cx) break;
+ gdispFillArea(xpos, y, p, cy, bgcolor);
+ xpos += p;
} else
first = 0;
}
@@ -579,12 +649,12 @@ coord_t gdispGetFontMetric(font_t font, fontmetric_t metric) {
/* No mutex required as we only read static data */
switch(metric) {
- case fontHeight: return font->height;
- case fontDescendersHeight: return font->descenderHeight;
- case fontLineSpacing: return font->lineSpacing;
- case fontCharPadding: return font->charPadding;
- case fontMinWidth: return font->minWidth;
- case fontMaxWidth: return font->maxWidth;
+ case fontHeight: return font->height * font->yscale;
+ case fontDescendersHeight: return font->descenderHeight * font->yscale;
+ case fontLineSpacing: return font->lineSpacing * font->yscale;
+ case fontCharPadding: return font->charPadding * font->xscale;
+ case fontMinWidth: return font->minWidth * font->xscale;
+ case fontMaxWidth: return font->maxWidth * font->xscale;
}
return 0;
}
@@ -602,7 +672,7 @@ */
coord_t gdispGetCharWidth(char c, font_t font) {
/* No mutex required as we only read static data */
- return _getCharWidth(font, c);
+ return _getCharWidth(font, c) * font->xscale;
}
#endif
@@ -618,22 +688,24 @@ */
coord_t gdispGetStringWidth(const char* str, font_t font) {
/* No mutex required as we only read static data */
- coord_t w, x;
+ coord_t w, h, p, x;
char c;
int first;
first = 1;
x = 0;
+ h = font->height * font->yscale;
+ p = font->charPadding * font->xscale;
while(*str) {
/* Get the next printable character */
c = *str++;
- w = _getCharWidth(font, c);
+ w = _getCharWidth(font, c) * font->xscale;
if (!w) continue;
/* Handle inter-character padding */
- if (font->charPadding) {
+ if (p) {
if (!first)
- x += font->charPadding;
+ x += p;
else
first = 0;
}
@@ -672,45 +744,5 @@ }
#endif
-#if (GDISP_NEED_PIXELREAD && GDISP_NEED_MULTITHREAD) || defined(__DOXYGEN__)
- /**
- * @brief Get the color of a pixel.
- * @return The color of the pixel.
- *
- * @param[in] x,y The position of the pixel
- *
- * @api
- */
- color_t gdispGetPixelColor(coord_t x, coord_t y) {
- color_t c;
-
- MUTEX_ENTER
- c = gdisp_lld_getpixelcolor(x, y);
- MUTEX_EXIT
-
- return c;
- }
-#endif
-
-#if (GDISP_NEED_SCROLL && GDISP_NEED_MULTITHREAD) || defined(__DOXYGEN__)
- /**
- * @brief Scroll vertically a section of the screen.
- * @note Optional.
- * @note If lines is >= cy, it is equivelent to a area fill with bgcolor.
- *
- * @param[in] x, y The start of the area to be scrolled
- * @param[in] cx, cy The size of the area to be scrolled
- * @param[in] lines The number of lines to scroll (Can be positive or negative)
- * @param[in] bgcolor The color to fill the newly exposed area.
- *
- * @api
- */
- void gdispVerticalScroll(coord_t x, coord_t y, coord_t cx, coord_t cy, int lines, color_t bgcolor) {
- MUTEX_ENTER
- gdisp_lld_verticalscroll(x, y, cx, cy, lines, bgcolor);
- MUTEX_EXIT
- }
-#endif
-
#endif /* HAL_USE_GDISP */
/** @} */
diff --git a/halext/src/gdisp_emulation.c b/halext/src/gdisp_emulation.c index 528986c9..26562e92 100644 --- a/halext/src/gdisp_emulation.c +++ b/halext/src/gdisp_emulation.c @@ -134,33 +134,6 @@ }
#endif
-#if !GDISP_HARDWARE_BOX
- void gdisp_lld_drawbox(coord_t x, coord_t y, coord_t cx, coord_t cy, color_t color) {
- coord_t x1, y1;
-
- x1 = x+cx-1;
- y1 = y+cy-1;
-
- if (cx > 2) {
- if (cy >= 1) {
- gdisp_lld_drawline(x, y, x1, y, color);
- if (cy >= 2) {
- gdisp_lld_drawline(x, y1, x1, y1, color);
- if (cy > 2) {
- gdisp_lld_drawline(x, y+1, x, y1-1, color);
- gdisp_lld_drawline(x1, y+1, x1, y1-1, color);
- }
- }
- }
- } else if (cx == 2) {
- gdisp_lld_drawline(x, y, x, y1, color);
- gdisp_lld_drawline(x1, y, x1, y1, color);
- } else if (cx == 1) {
- gdisp_lld_drawline(x, y, x, y1, color);
- }
- }
-#endif
-
#if !GDISP_HARDWARE_FILLS
void gdisp_lld_fillarea(coord_t x, coord_t y, coord_t cx, coord_t cy, color_t color) {
#if GDISP_HARDWARE_SCROLL
@@ -310,23 +283,32 @@ void gdisp_lld_drawchar(coord_t x, coord_t y, char c, font_t font, color_t color) {
const fontcolumn_t *ptr;
fontcolumn_t column;
- coord_t width, i, j;
+ coord_t width, height, xscale, yscale;
+ coord_t i, j, xs, ys;
/* Check we actually have something to print */
width = _getCharWidth(font, c);
if (!width) return;
+ xscale = font->xscale;
+ yscale = font->yscale;
+ height = font->height * yscale;
+ width *= xscale;
+
ptr = _getCharData(font, c);
/* Loop through the data and display. The font data is LSBit first, down the column */
- for(i = 0; i < width; i++) {
+ for(i=0; i < width; i+=xscale) {
/* Get the font bitmap data for the column */
column = *ptr++;
/* Draw each pixel */
- for(j = 0; j < font->height; j++, column >>= 1) {
- if (column & 0x01)
- gdisp_lld_drawpixel(x+i, y+j, color);
+ for(j=0; j < height; j+=yscale, column >>= 1) {
+ if (column & 0x01) {
+ for(xs=0; xs < xscale; xs++)
+ for(ys=0; ys < yscale; ys++)
+ gdisp_lld_drawpixel(x+i+xs, y+j+ys, color);
+ }
}
}
}
@@ -334,17 +316,23 @@ #if GDISP_NEED_TEXT && !GDISP_HARDWARE_TEXTFILLS
void gdisp_lld_fillchar(coord_t x, coord_t y, char c, font_t font, color_t color, color_t bgcolor) {
- coord_t width;
+ coord_t width, height;
+ coord_t xscale, yscale;
/* Check we actually have something to print */
width = _getCharWidth(font, c);
if (!width) return;
+ xscale = font->xscale;
+ yscale = font->yscale;
+ height = font->height * yscale;
+ width *= xscale;
+
/* Method 1: Use background fill and then draw the text */
#if GDISP_HARDWARE_TEXT || GDISP_SOFTWARE_TEXTFILLDRAW
/* Fill the area */
- gdisp_lld_fillarea(x, y, width, font->height, bgcolor);
+ gdisp_lld_fillarea(x, y, width, height, bgcolor);
/* Draw the text */
gdisp_lld_drawchar(x, y, c, font, color);
@@ -354,24 +342,39 @@ {
const fontcolumn_t *ptr;
fontcolumn_t column;
- coord_t i, j;
-
- /* Working buffer for fast non-transparent text rendering [patch by Badger] */
- static pixel_t buf[sizeof(fontcolumn_t)*8];
+ coord_t i, j, xs, ys;
+
+ /* Working buffer for fast non-transparent text rendering [patch by Badger]
+ This needs to be larger than the largest character we can print.
+ Assume the max is double sized by one column.
+ */
+ static pixel_t buf[sizeof(fontcolumn_t)*8*2];
+
+ #if GDISP_NEED_VALIDATION
+ /* Check our buffer is big enough */
+ if (height > sizeof(buf)/sizeof(buf[0])) return;
+ #endif
ptr = _getCharData(font, c);
/* Loop through the data and display. The font data is LSBit first, down the column */
- for(i = 0; i < width; i++) {
+ for(i = 0; i < width; i+=xscale) {
/* Get the font bitmap data for the column */
column = *ptr++;
/* Draw each pixel */
- for(j = 0; j < font->height; j++, column >>= 1) {
- gdispPackPixels(buf, 1, j, 0, (column & 0x01) ? color : bgcolor);
+ for(j = 0; j < height; j+=yscale, column >>= 1) {
+ if (column & 0x01) {
+ for(ys=0; ys < yscale; ys++)
+ gdispPackPixels(buf, 1, j+ys, 0, color);
+ } else {
+ for(ys=0; ys < yscale; ys++)
+ gdispPackPixels(buf, 1, j+ys, 0, bgcolor);
+ }
}
- gdisp_lld_blitarea(x+i, y, 1, font->height, buf);
+ for(xs=0; xs < xscale; xs++)
+ gdisp_lld_blitarea(x+i+xs, y, 1, height, buf);
}
}
@@ -380,33 +383,42 @@ {
const fontcolumn_t *ptr;
fontcolumn_t column;
- coord_t i, j;
+ coord_t i, j, xs, ys;
/* Working buffer for fast non-transparent text rendering [patch by Badger]
This needs to be larger than the largest character we can print.
+ Assume the max is double sized.
*/
- static pixel_t buf[20*(sizeof(fontcolumn_t)*8)];
+ static pixel_t buf[20*(sizeof(fontcolumn_t)*8)*2];
#if GDISP_NEED_VALIDATION
/* Check our buffer is big enough */
- if (width * font->height > sizeof(buf)/sizeof(buf[0])) return;
+ if (width * height > sizeof(buf)/sizeof(buf[0])) return;
#endif
ptr = _getCharData(font, c);
/* Loop through the data and display. The font data is LSBit first, down the column */
- for(i = 0; i < width; i++) {
+ for(i = 0; i < width; i+=xscale) {
/* Get the font bitmap data for the column */
column = *ptr++;
/* Draw each pixel */
- for(j = 0; j < font->height; j++, column >>= 1) {
- gdispPackPixels(buf, width, i, j, (column & 0x01) ? color : bgcolor);
+ for(j = 0; j < height; j+=yscale, column >>= 1) {
+ if (column & 0x01) {
+ for(xs=0; xs < xscale; xs++)
+ for(ys=0; ys < yscale; ys++)
+ gdispPackPixels(buf, width, i+xs, j+ys, color);
+ } else {
+ for(xs=0; xs < xscale; xs++)
+ for(ys=0; ys < yscale; ys++)
+ gdispPackPixels(buf, width, i+xs, j+ys, bgcolor);
+ }
}
}
/* [Patch by Badger] Write all in one stroke */
- gdisp_lld_blitarea(x, y, width, font->height, buf);
+ gdisp_lld_blitarea(x, y, width, height, buf);
}
/* Method 4: Draw pixel by pixel */
@@ -414,18 +426,26 @@ {
const fontcolumn_t *ptr;
fontcolumn_t column;
- coord_t i, j;
-
+ coord_t i, j, xs, ys;
+
ptr = _getCharData(font, c);
/* Loop through the data and display. The font data is LSBit first, down the column */
- for(i = 0; i < width; i++) {
+ for(i = 0; i < width; i+=xscale) {
/* Get the font bitmap data for the column */
column = *ptr++;
/* Draw each pixel */
- for(j = 0; j < font->height; j++, column >>= 1) {
- gdisp_lld_drawpixel(x+i, y+j, (column & 0x01) ? color : bgcolor);
+ for(j = 0; j < height; j+=yscale, column >>= 1) {
+ if (column & 0x01) {
+ for(xs=0; xs < xscale; xs++)
+ for(ys=0; ys < yscale; ys++)
+ gdisp_lld_drawpixel(x+i, y+j, color);
+ } else {
+ for(xs=0; xs < xscale; xs++)
+ for(ys=0; ys < yscale; ys++)
+ gdisp_lld_drawpixel(x+i, y+j, bgcolor);
+ }
}
}
}
@@ -433,4 +453,11 @@ }
#endif
+
+#if GDISP_NEED_CONTROL && !GDISP_HARDWARE_CONTROL
+ void gdisp_lld_control(int UNUSED(what), void *UNUSED(value)) {
+ /* Ignore everything */
+ }
+#endif
+
#endif /* HAL_USE_GDISP */
diff --git a/halext/src/gdisp_fonts.c b/halext/src/gdisp_fonts.c index 0037bcc8..25a56526 100644 --- a/halext/src/gdisp_fonts.c +++ b/halext/src/gdisp_fonts.c @@ -38,7 +38,15 @@ static const uint16_t fontSmall_Offsets[];
static const fontcolumn_t fontSmall_Data[];
- const struct font fontSmall = { 11, 0, 14, 2, 2, 12, ' ', '~',
+ const struct font fontSmall = { 11, 0, 14, 2, 2, 12, ' ', '~', 1, 1,
+ fontSmall_Widths,
+ fontSmall_Offsets,
+ fontSmall_Data};
+ const struct font fontSmallDouble = { 11, 0, 14, 2, 2, 12, ' ', '~', 2, 2,
+ fontSmall_Widths,
+ fontSmall_Offsets,
+ fontSmall_Data};
+ const struct font fontSmallNarrow = { 11, 0, 14, 2, 2, 12, ' ', '~', 1, 2,
fontSmall_Widths,
fontSmall_Offsets,
fontSmall_Data};
@@ -171,11 +179,18 @@ static const uint16_t fontLarger_Offsets[];
static const fontcolumn_t fontLarger_Data[];
- const struct font fontLarger = { 12, 1, 13, 2, 2, 13, ' ', '~',
+ const struct font fontLarger = { 12, 1, 13, 2, 2, 13, ' ', '~', 1, 1,
+ fontLarger_Widths,
+ fontLarger_Offsets,
+ fontLarger_Data};
+ const struct font fontLargerDouble = { 12, 1, 13, 2, 2, 13, ' ', '~', 2, 2,
+ fontLarger_Widths,
+ fontLarger_Offsets,
+ fontLarger_Data};
+ const struct font fontLargerNarrow = { 12, 1, 13, 2, 2, 13, ' ', '~', 1, 2,
fontLarger_Widths,
fontLarger_Offsets,
fontLarger_Data};
-
static const uint8_t fontLarger_Widths[] = {
2, 3, 5, 8, 7, 13, 8, 2, 4, 4, 7, 8, 3, 4, 3, 5,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 9, 8, 9, 6,
@@ -305,7 +320,15 @@ static const uint16_t fontUI1_Offsets[];
static const fontcolumn_t fontUI1_Data[];
- const struct font fontUI1 = { 13, 0, 15, 2, 3, 13, ' ', '~',
+ const struct font fontUI1 = { 13, 0, 15, 2, 3, 13, ' ', '~', 1, 1,
+ fontUI1_Widths,
+ fontUI1_Offsets,
+ fontUI1_Data};
+ const struct font fontUI1Double = { 13, 0, 15, 2, 3, 13, ' ', '~', 2, 2,
+ fontUI1_Widths,
+ fontUI1_Offsets,
+ fontUI1_Data};
+ const struct font fontUI1Narrow = { 13, 0, 15, 2, 3, 13, ' ', '~', 1, 2,
fontUI1_Widths,
fontUI1_Offsets,
fontUI1_Data};
@@ -439,7 +462,15 @@ static const uint16_t fontUI2_Offsets[];
static const fontcolumn_t fontUI2_Data[];
- const struct font fontUI2 = { 11, 1, 13, 2, 2, 12, ' ', '~',
+ const struct font fontUI2 = { 11, 1, 13, 2, 2, 12, ' ', '~', 1, 1,
+ fontUI2_Widths,
+ fontUI2_Offsets,
+ fontUI2_Data};
+ const struct font fontUI2Double = { 11, 1, 13, 2, 2, 12, ' ', '~', 2, 2,
+ fontUI2_Widths,
+ fontUI2_Offsets,
+ fontUI2_Data};
+ const struct font fontUI2Narrow = { 11, 1, 13, 2, 2, 12, ' ', '~', 1, 2,
fontUI2_Widths,
fontUI2_Offsets,
fontUI2_Data};
@@ -576,7 +607,15 @@ static const uint16_t fontLargeNumbers_Offsets[];
static const fontcolumn_t fontLargeNumbers_Data[];
- const struct font fontLargeNumbers = { 16, 2, 21, 1, 3, 15, '%', ':',
+ const struct font fontLargeNumbers = { 16, 2, 21, 1, 3, 15, '%', ':', 1, 1,
+ fontLargeNumbers_Widths,
+ fontLargeNumbers_Offsets,
+ fontLargeNumbers_Data};
+ const struct font fontLargeNumbersDouble = { 16, 2, 21, 1, 3, 15, '%', ':', 2, 2,
+ fontLargeNumbers_Widths,
+ fontLargeNumbers_Offsets,
+ fontLargeNumbers_Data};
+ const struct font fontLargeNumbersNarrow = { 16, 2, 21, 1, 3, 15, '%', ':', 1, 2,
fontLargeNumbers_Widths,
fontLargeNumbers_Offsets,
fontLargeNumbers_Data};
|