summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2022-01-24 23:21:54 -0500
committerMatthias Clasen <mclasen@redhat.com>2022-01-25 15:31:25 -0500
commit2b6067c726947c074b1b5ae0d9d17e9671757f13 (patch)
tree12a69cbad1efd3df45eedf7252fa6f539facf6bd
parent3164c9756406ea4261827c1e7a88cc88e9238c0e (diff)
downloadpango-2b6067c726947c074b1b5ae0d9d17e9671757f13.tar.gz
Change trimming of extents
Make pango_layout_line_get_extents return untrimmed extents, and pango_lines_get_extents trim the extents at the start/end of paragraphs.
-rw-r--r--pango/pango-layout-line.c23
-rw-r--r--pango/pango-lines.c10
2 files changed, 13 insertions, 20 deletions
diff --git a/pango/pango-layout-line.c b/pango/pango-layout-line.c
index 6d69067f..f7150598 100644
--- a/pango/pango-layout-line.c
+++ b/pango/pango-layout-line.c
@@ -916,11 +916,8 @@ pango_layout_line_justify (PangoLayoutLine *line,
*
* Gets the extents of the line.
*
- * The logical extents returned by this function always have their leading
- * trimmed according to paragraph boundaries: if the line starts a paragraph,
- * it has its start leading trimmed; if it ends a paragraph, it has its end
- * leading trimmed. If you need other trimming, use
- * [method@Pango.LayoutLine.get_trimmed_extents].
+ * The logical extents returned by this function always include leading.
+ * If you need extents with trimmed leading, use [method@Pango.LayoutLine.get_trimmed_extents].
*
* Note that the origin is at the left end of the baseline.
*/
@@ -931,17 +928,11 @@ pango_layout_line_get_extents (PangoLayoutLine *line,
{
PangoRectangle ink = { 0, };
PangoRectangle logical = { 0, };
- PangoLeadingTrim trim = PANGO_LEADING_TRIM_NONE;
-
- if (line->starts_paragraph)
- trim |= PANGO_LEADING_TRIM_START;
- if (line->ends_paragraph)
- trim |= PANGO_LEADING_TRIM_END;
if (line->has_extents)
goto cached;
- compute_extents (line, trim, &ink, &logical);
+ compute_extents (line, PANGO_LEADING_TRIM_NONE, &ink, &logical);
line->ink_rect = ink;
line->logical_rect = logical;
@@ -975,14 +966,8 @@ pango_layout_line_get_trimmed_extents (PangoLayoutLine *line,
PangoRectangle *logical_rect)
{
PangoRectangle ink = { 0, };
- PangoLeadingTrim cached_trim = PANGO_LEADING_TRIM_NONE;
-
- if (line->starts_paragraph)
- cached_trim |= PANGO_LEADING_TRIM_START;
- if (line->ends_paragraph)
- cached_trim |= PANGO_LEADING_TRIM_END;
- if (line->has_extents && trim == cached_trim)
+ if (line->has_extents && trim == PANGO_LEADING_TRIM_NONE)
{
*logical_rect = line->logical_rect;
return;
diff --git a/pango/pango-lines.c b/pango/pango-lines.c
index 896a9dd8..38d2026c 100644
--- a/pango/pango-lines.c
+++ b/pango/pango-lines.c
@@ -430,8 +430,16 @@ pango_lines_get_extents (PangoLines *lines,
Line *l = &g_array_index (lines->lines, Line, i);
PangoRectangle line_ink;
PangoRectangle line_logical;
+ PangoLeadingTrim trim = PANGO_LEADING_TRIM_NONE;
+
+ if (l->line->starts_paragraph)
+ trim |= PANGO_LEADING_TRIM_START;
+ if (l->line->ends_paragraph)
+ trim |= PANGO_LEADING_TRIM_END;
+
+ pango_layout_line_get_extents (l->line, &line_ink, NULL);
+ pango_layout_line_get_trimmed_extents (l->line, trim, &line_logical);
- pango_layout_line_get_extents (l->line, &line_ink, &line_logical);
line_ink.x += l->x;
line_ink.y += l->y;
line_logical.x += l->x;