diff options
Diffstat (limited to 'examples/viewer-pangocairo.c')
-rw-r--r-- | examples/viewer-pangocairo.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/examples/viewer-pangocairo.c b/examples/viewer-pangocairo.c index 5638ffc9..53ee38ce 100644 --- a/examples/viewer-pangocairo.c +++ b/examples/viewer-pangocairo.c @@ -149,11 +149,11 @@ render_callback (PangoLayout *layout, { PangoRectangle ink, logical; double lw = cairo_get_line_width (cr); + PangoLayoutIter* iter; pango_layout_get_extents (layout, &ink, &logical); - cairo_set_source_rgba (cr, 1.0, 0.0, 0.0, 0.75); - + cairo_set_source_rgba (cr, 1.0, 0.0, 0.0, 0.5); cairo_rectangle (cr, (double)logical.x / PANGO_SCALE - lw / 2, (double)logical.y / PANGO_SCALE - lw / 2, @@ -161,14 +161,33 @@ render_callback (PangoLayout *layout, (double)logical.height / PANGO_SCALE + lw); cairo_stroke (cr); - cairo_set_source_rgba (cr, 0.0, 1.0, 0.0, 0.75); - + cairo_save (cr); + cairo_set_line_width (cr, lw / 2); + cairo_set_source_rgba (cr, 0.0, 0.0, 1.0, 0.5); + iter = pango_layout_get_iter (layout); + do + { + y = pango_layout_iter_get_baseline (iter); + cairo_move_to (cr, + (double)logical.x / PANGO_SCALE, + (double)y / PANGO_SCALE + lw / 4); + cairo_rel_line_to (cr, + (double)logical.width / PANGO_SCALE, + 0); + cairo_stroke (cr); + } + while (pango_layout_iter_next_line (iter)); + pango_layout_iter_free (iter); + cairo_restore (cr); + + cairo_set_source_rgba (cr, 0.0, 1.0, 0.0, 0.5); cairo_rectangle (cr, (double)ink.x / PANGO_SCALE - lw / 2, (double)ink.y / PANGO_SCALE - lw / 2, (double)ink.width / PANGO_SCALE + lw, (double)ink.height / PANGO_SCALE + lw); cairo_stroke (cr); + } cairo_restore (cr); } |