diff options
author | Matthias Clasen <mclasen@redhat.com> | 2022-01-24 23:21:54 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2022-01-25 15:31:25 -0500 |
commit | 2b6067c726947c074b1b5ae0d9d17e9671757f13 (patch) | |
tree | 12a69cbad1efd3df45eedf7252fa6f539facf6bd | |
parent | 3164c9756406ea4261827c1e7a88cc88e9238c0e (diff) | |
download | pango-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.c | 23 | ||||
-rw-r--r-- | pango/pango-lines.c | 10 |
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; |