summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-08-30 01:31:09 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-08-30 01:31:09 +0000
commit46ab19d84e72171ca9c90b2cf39ab272c3b3ad5e (patch)
treea897aca71c7be2fe232da129bfa61fbebc5c4c42
parentf7a99fd86067f0ed9baa466d0f612365462cca20 (diff)
parent1dee72bfc9597b5564d2f46e704f547fab89b9e8 (diff)
downloadpango-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.c16
-rw-r--r--pango/pango-layout.h2
-rw-r--r--utils/viewer-pangocairo.c5
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;