diff options
author | Tim Moore <timoore@redhat.com> | 2009-12-04 14:11:25 +0100 |
---|---|---|
committer | Tim Moore <timoore@redhat.com> | 2009-12-04 14:11:25 +0100 |
commit | 52cf0905d93c33f7d6f768478572ea08df4c8af0 (patch) | |
tree | 5fa6111add3d1a18e0edcef84bc189371b4efa6e /grapher | |
parent | 5ddc5963ce06ecea574e90ca503a3ee598522d8f (diff) | |
download | systemtap-steved-52cf0905d93c33f7d6f768478572ea08df4c8af0.tar.gz systemtap-steved-52cf0905d93c33f7d6f768478572ea08df4c8af0.tar.xz systemtap-steved-52cf0905d93c33f7d6f768478572ea08df4c8af0.zip |
tweak multiline hover text to have proper interline spacing
* grapher/CairoWidget.cxx (CairoTextBox::draw): Use font information
to caculate legible spacing. Also change the font to something more
readable.
* testsuite/systemtap.examples/general/grapher.stp: Put carriage
returns in the right spots.
Diffstat (limited to 'grapher')
-rw-r--r-- | grapher/CairoWidget.cxx | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/grapher/CairoWidget.cxx b/grapher/CairoWidget.cxx index db0e464e..eefe3d28 100644 --- a/grapher/CairoWidget.cxx +++ b/grapher/CairoWidget.cxx @@ -50,6 +50,15 @@ namespace systemtap { if (!_visible) return; + cr->save(); + cr->select_font_face("Sans", Cairo::FONT_SLANT_NORMAL, + Cairo::FONT_WEIGHT_BOLD); + cr->set_font_size(10.0); + Cairo::FontExtents fontExtent; + cr->get_font_extents(fontExtent); + // Some naughty fonts have a height less than ascent + descent + double fontHeight = max(fontExtent.ascent + fontExtent.descent + 1.0, + fontExtent.height); vector<string> lines; split(lines, contents, is_any_of("\n")); vector<Cairo::TextExtents> extents; @@ -62,10 +71,8 @@ namespace systemtap cr->get_text_extents(*itr, extent); extents.push_back(extent); width = max(width, extent.width); - height += extent.height; + height += fontHeight; } - - cr->save(); cr->move_to(_x0 - 2, _y0 - 2); cr->line_to(_x0 + width + 2, _y0 - 2); cr->line_to(_x0 + width + 2, _y0 + height + 2); @@ -74,15 +81,14 @@ namespace systemtap cr->set_source_rgba(1.0, 1.0, 1.0, .8); cr->fill(); cr->set_source_rgba(0.0, 0.0, 0.0, 1.0); - vector<Cairo::TextExtents>::iterator titr = extents.begin(); double texty = _y0; for (vector<string>::iterator itr = lines.begin(), end = lines.end(); itr != end; - ++itr,++titr) + ++itr) { - cr->move_to(_x0, texty + titr->height); + cr->move_to(_x0, texty + fontExtent.ascent); cr->show_text(*itr); - texty += titr->height; + texty += fontHeight; } cr->restore(); } |