summaryrefslogtreecommitdiffstats
path: root/grapher/CairoWidget.cxx
diff options
context:
space:
mode:
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();
}