diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-08-30 01:31:09 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-08-30 01:31:09 +0000 |
commit | 46ab19d84e72171ca9c90b2cf39ab272c3b3ad5e (patch) | |
tree | a897aca71c7be2fe232da129bfa61fbebc5c4c42 | |
parent | f7a99fd86067f0ed9baa466d0f612365462cca20 (diff) | |
parent | 1dee72bfc9597b5564d2f46e704f547fab89b9e8 (diff) | |
download | pango-46ab19d84e72171ca9c90b2cf39ab272c3b3ad5e.tar.gz |
Merge branch 'matthiasc/for-main' into 'main'
Add pango_layout_iter_get_run_baseline
See merge request GNOME/pango!458
-rw-r--r-- | pango/pango-layout.c | 16 | ||||
-rw-r--r-- | pango/pango-layout.h | 2 | ||||
-rw-r--r-- | utils/viewer-pangocairo.c | 5 |
3 files changed, 20 insertions, 3 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c index 5aa9ee12..86c67020 100644 --- a/pango/pango-layout.c +++ b/pango/pango-layout.c @@ -7305,6 +7305,22 @@ pango_layout_iter_get_baseline (PangoLayoutIter *iter) return iter->line_extents[iter->line_index].baseline; } +int +pango_layout_iter_get_run_baseline (PangoLayoutIter *iter) +{ + ItemProperties properties; + + if (ITER_IS_INVALID (iter)) + return 0; + + if (!iter->run) + return iter->line_extents[iter->line_index].baseline; + + pango_layout_get_item_properties (iter->run->item, &properties); + + return iter->line_extents[iter->line_index].baseline - properties.rise; +} + /** * pango_layout_iter_get_layout_extents: * @iter: a `PangoLayoutIter` diff --git a/pango/pango-layout.h b/pango/pango-layout.h index 3b30a251..e28f9295 100644 --- a/pango/pango-layout.h +++ b/pango/pango-layout.h @@ -466,6 +466,8 @@ void pango_layout_iter_get_layout_extents (PangoLayoutIter *iter, PangoRectangle *logical_rect); PANGO_AVAILABLE_IN_ALL int pango_layout_iter_get_baseline (PangoLayoutIter *iter); +PANGO_AVAILABLE_IN_1_50 +int pango_layout_iter_get_run_baseline (PangoLayoutIter *iter); G_END_DECLS diff --git a/utils/viewer-pangocairo.c b/utils/viewer-pangocairo.c index 6918d2e9..b35f6f3b 100644 --- a/utils/viewer-pangocairo.c +++ b/utils/viewer-pangocairo.c @@ -434,8 +434,7 @@ render_callback (PangoLayout *layout, pango_layout_iter_get_run_extents (iter, NULL, &rect); x_pos = rect.x; - /* FIXME: need a run baseline */ - y_pos = pango_layout_iter_get_baseline (iter); + y_pos = pango_layout_iter_get_run_baseline (iter); for (int i = 0; i < run->glyphs->num_glyphs; i++) { @@ -504,7 +503,7 @@ render_callback (PangoLayout *layout, offset = g_utf8_strlen (text, start - text); - y = pango_layout_iter_get_baseline (iter); + y = pango_layout_iter_get_run_baseline (iter); trailing = FALSE; p = start; |