summaryrefslogtreecommitdiff
path: root/utils/viewer-pangocairo.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/viewer-pangocairo.c')
-rw-r--r--utils/viewer-pangocairo.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/utils/viewer-pangocairo.c b/utils/viewer-pangocairo.c
index a6a416ee..6918d2e9 100644
--- a/utils/viewer-pangocairo.c
+++ b/utils/viewer-pangocairo.c
@@ -346,8 +346,13 @@ render_callback (PangoLayout *layout,
iter = pango_layout_get_iter (layout);
do
{
+ PangoLayoutRun *run;
PangoRectangle rect;
+ run = pango_layout_iter_get_run (iter);
+ if (!run)
+ continue;
+
pango_layout_iter_get_run_extents (iter, NULL, &rect);
cairo_rectangle (cr,
(double)rect.x / PANGO_SCALE - lw / 2,
@@ -429,7 +434,8 @@ render_callback (PangoLayout *layout,
pango_layout_iter_get_run_extents (iter, NULL, &rect);
x_pos = rect.x;
- y_pos = rect.y + pango_layout_iter_get_baseline (iter);
+ /* FIXME: need a run baseline */
+ y_pos = pango_layout_iter_get_baseline (iter);
for (int i = 0; i < run->glyphs->num_glyphs; i++)
{
@@ -470,6 +476,7 @@ render_callback (PangoLayout *layout,
const PangoLogAttr *attrs;
int n_attrs;
int offset;
+ int num = 0;
/* draw the caret positions in purple */
cairo_save (cr);
@@ -519,7 +526,7 @@ render_callback (PangoLayout *layout,
cairo_close_path (cr);
cairo_fill (cr);
- char *s = g_strdup_printf ("%d", i + trailing);
+ char *s = g_strdup_printf ("%d", num);
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_move_to (cr, x / PANGO_SCALE - 5, y / PANGO_SCALE + 15);
cairo_show_text (cr, s);
@@ -527,9 +534,13 @@ render_callback (PangoLayout *layout,
}
if (i < run->item->num_chars)
- p = g_utf8_next_char (p);
+ {
+ num++;
+ p = g_utf8_next_char (p);
+ }
else
trailing = TRUE;
+
}
}
while (pango_layout_iter_next_run (iter));