[pango/pango-view-spacing-2] pango-viewer: Optionally show line rects
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pango/pango-view-spacing-2] pango-viewer: Optionally show line rects
- Date: Thu, 4 Jul 2019 19:34:53 +0000 (UTC)
commit 4a82a4890757576300abe5000a24ba36ec149d46
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Jul 4 19:33:49 2019 +0000
pango-viewer: Optionally show line rects
With --annotate 3, show the logical rects
for each line. This makes the spacing between
lines easily visible.
utils/viewer-pangocairo.c | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
---
diff --git a/utils/viewer-pangocairo.c b/utils/viewer-pangocairo.c
index 3e893207..9054b9fe 100644
--- a/utils/viewer-pangocairo.c
+++ b/utils/viewer-pangocairo.c
@@ -138,7 +138,7 @@ render_callback (PangoLayout *layout,
gpointer state)
{
cairo_t *cr = (cairo_t *) context;
- int annotate = (GPOINTER_TO_INT (state) + opt_annotate) % 3;
+ int annotate = (GPOINTER_TO_INT (state) + opt_annotate) % 4;
cairo_save (cr);
cairo_translate (cr, x, y);
@@ -252,6 +252,7 @@ render_callback (PangoLayout *layout,
/* draw the logical rect in red */
cairo_save (cr);
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,
@@ -270,6 +271,30 @@ render_callback (PangoLayout *layout,
(double)ink.height / PANGO_SCALE + lw);
cairo_stroke (cr);
cairo_restore (cr);
+
+ if (opt_annotate >= 3)
+ {
+ /* draw the logical rects for lines in red */
+ cairo_save (cr);
+ cairo_set_source_rgba (cr, 1.0, 0.0, 0.0, 0.5);
+
+ iter = pango_layout_get_iter (layout);
+ do
+ {
+ PangoRectangle rect;
+
+ pango_layout_iter_get_line_extents (iter, NULL, &rect);
+ cairo_rectangle (cr,
+ (double)rect.x / PANGO_SCALE - lw / 2,
+ (double)rect.y / PANGO_SCALE - lw / 2,
+ (double)rect.width / PANGO_SCALE + lw,
+ (double)rect.height / PANGO_SCALE + lw);
+ cairo_stroke (cr);
+ }
+ while (pango_layout_iter_next_line (iter));
+ pango_layout_iter_free (iter);
+ cairo_restore (cr);
+ }
}
cairo_move_to (cr, 0, 0);
@@ -416,7 +441,7 @@ pangocairo_view_get_option_group (const PangoViewer *klass G_GNUC_UNUSED)
GOptionEntry entries[] =
{
{"annotate", 0, 0, G_OPTION_ARG_INT, &opt_annotate,
- "Annotate the output", "1 or 2"},
+ "Annotate the output", "1, 2 or 3"},
{NULL}
};
GOptionGroup *group;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]