summaryrefslogtreecommitdiffstats
path: root/grapher/CairoWidget.cxx
diff options
context:
space:
mode:
authorTim Moore <timoore@redhat.com>2009-12-04 14:11:25 +0100
committerTim Moore <timoore@redhat.com>2009-12-04 14:11:25 +0100
commit52cf0905d93c33f7d6f768478572ea08df4c8af0 (patch)
tree5fa6111add3d1a18e0edcef84bc189371b4efa6e /grapher/CairoWidget.cxx
parent5ddc5963ce06ecea574e90ca503a3ee598522d8f (diff)
downloadsystemtap-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/CairoWidget.cxx')
-rw-r--r--grapher/CairoWidget.cxx20
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();
}