aboutsummaryrefslogtreecommitdiff
path: root/dw/fltkviewbase.cc
diff options
context:
space:
mode:
authorcorvid <corvid@lavabit.com>2009-10-18 01:36:19 +0000
committercorvid <corvid@lavabit.com>2009-10-18 01:36:19 +0000
commit2a77f76cbd4d6136953893437d67fe752a751361 (patch)
tree9b137430dc44abec750cb434679324ee278a908b /dw/fltkviewbase.cc
parenta37f4d8c45f82a8d17b830ab7a4abfb8b137b0ef (diff)
use letter spacing when drawing
Diffstat (limited to 'dw/fltkviewbase.cc')
-rw-r--r--dw/fltkviewbase.cc19
1 files changed, 17 insertions, 2 deletions
diff --git a/dw/fltkviewbase.cc b/dw/fltkviewbase.cc
index 7969665f..97a78edb 100644
--- a/dw/fltkviewbase.cc
+++ b/dw/fltkviewbase.cc
@@ -479,8 +479,23 @@ void FltkWidgetView::drawText (core::style::Font *font,
FltkFont *ff = (FltkFont*)font;
setfont(ff->font, ff->size);
setcolor(((FltkColor*)color)->colors[shading]);
- drawtext(text, len,
- translateCanvasXToViewX (x), translateCanvasYToViewY (y));
+
+ if (!font->letterSpacing) {
+ drawtext(text, len,
+ translateCanvasXToViewX (x), translateCanvasYToViewY (y));
+ } else {
+ /* Nonzero letter spacing adjustment, draw each glyph individually */
+ int viewX = translateCanvasXToViewX (x),
+ viewY = translateCanvasYToViewY (y);
+ int curr = 0, next = 0;
+
+ while (next < len) {
+ next = theLayout->nextGlyph(text, curr);
+ drawtext(text + curr, next - curr, viewX, viewY);
+ viewX += font->letterSpacing + (int)getwidth(text + curr,next - curr);
+ curr = next;
+ }
+ }
}
void FltkWidgetView::drawImage (core::Imgbuf *imgbuf, int xRoot, int yRoot,