[pango/pango2: 60/135] Change trimming of extents




commit d6cbd296ed8b1c844abbeef9c8f6bd697719e830
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Jan 24 23:21:54 2022 -0500

    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.

 pango/pango-layout-line.c | 23 ++++-------------------
 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 c182ab5e..c025bf20 100644
--- a/pango/pango-layout-line.c
+++ b/pango/pango-layout-line.c
@@ -907,11 +907,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.
  */
@@ -922,17 +919,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;
@@ -966,14 +957,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 b7f9e761..5d2f60e1 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;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]