aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2015-11-04 15:05:16 +1000
committerinmarket <andrewh@inmarket.com.au>2015-11-04 15:05:16 +1000
commit1ed7559ef0a3a34799dcc8af301638312bda3cc7 (patch)
tree9bb08d67c3ddefa237bb615b2e0db4fd56bba9f8 /src
parentd4f43afcd2309b0c6205826b571ecf7ab8f33071 (diff)
downloaduGFX-1ed7559ef0a3a34799dcc8af301638312bda3cc7.tar.gz
uGFX-1ed7559ef0a3a34799dcc8af301638312bda3cc7.tar.bz2
uGFX-1ed7559ef0a3a34799dcc8af301638312bda3cc7.zip
Handle antialiased font drawing when using word-wrap
Diffstat (limited to 'src')
-rw-r--r--src/gdisp/gdisp.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/gdisp/gdisp.c b/src/gdisp/gdisp.c
index ea9fcc7a..84215796 100644
--- a/src/gdisp/gdisp.c
+++ b/src/gdisp/gdisp.c
@@ -3169,7 +3169,15 @@ void gdispGDrawBox(GDisplay *g, coord_t x, coord_t y, coord_t cx, coord_t cy, co
/* Callback to render string boxes with word wrap. */
#if GDISP_NEED_TEXT_WORDWRAP
- static bool mf_line_callback(mf_str line, uint16_t count, void *state) {
+ static bool mf_drawline_callback(mf_str line, uint16_t count, void *state) {
+ wrapParameters_t* wrapParameters = (wrapParameters_t*)state;
+
+ mf_render_aligned(wrapParameters->font, wrapParameters->x, wrapParameters->y, wrapParameters->justify, line, count, drawcharglyph, wrapParameters->g);
+
+ wrapParameters->y += wrapParameters->font->line_height;
+ return TRUE;
+ }
+ static bool mf_fillline_callback(mf_str line, uint16_t count, void *state) {
wrapParameters_t* wrapParameters = (wrapParameters_t*)state;
mf_render_aligned(wrapParameters->font, wrapParameters->x, wrapParameters->y, wrapParameters->justify, line, count, fillcharglyph, wrapParameters->g);
@@ -3283,7 +3291,7 @@ void gdispGDrawBox(GDisplay *g, coord_t x, coord_t y, coord_t cx, coord_t cy, co
wrapParameters.justify = justify;
wrapParameters.g = g;
- mf_wordwrap(font, cx, str, mf_line_callback, &wrapParameters);
+ mf_wordwrap(font, cx, str, mf_drawline_callback, &wrapParameters);
#else
mf_render_aligned(font, x, y, justify, str, 0, drawcharglyph, g);
#endif
@@ -3336,7 +3344,7 @@ void gdispGDrawBox(GDisplay *g, coord_t x, coord_t y, coord_t cx, coord_t cy, co
wrapParameters.justify = justify;
wrapParameters.g = g;
- mf_wordwrap(font, cx, str, mf_line_callback, &wrapParameters);
+ mf_wordwrap(font, cx, str, mf_fillline_callback, &wrapParameters);
#else
mf_render_aligned(font, x, y, justify, str, 0, fillcharglyph, g);
#endif