[gtk/modern-testsuite: 19/22] rendernodeparser: Handle is_color attribute for glyphs




commit 576a434bf36429c1642e7dc994a4a1bf19568fc3
Author: Benjamin Otte <otte redhat com>
Date:   Thu Sep 16 07:39:21 2021 +0200

    rendernodeparser: Handle is_color attribute for glyphs

 gsk/gskrendernodeparser.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
---
diff --git a/gsk/gskrendernodeparser.c b/gsk/gskrendernodeparser.c
index 9aa091001f..c4c721e2e3 100644
--- a/gsk/gskrendernodeparser.c
+++ b/gsk/gskrendernodeparser.c
@@ -802,6 +802,11 @@ parse_glyphs (GtkCssParser *parser,
                 gi.attr.is_cluster_start = 0;
               else
                 gi.attr.is_cluster_start = 1;
+
+              if (gtk_css_parser_try_ident (parser, "color"))
+                gi.attr.is_color = 1;
+              else
+                gi.attr.is_color = 0;
             }
 
           pango_glyph_string_set_size (glyph_string, glyph_string->num_glyphs + 1);
@@ -2336,7 +2341,8 @@ gsk_text_node_serialize_glyphs (GskRenderNode *node,
                   glyphs[i].geometry.width == ascii->glyphs[j].geometry.width &&
                   glyphs[i].geometry.x_offset == 0 &&
                   glyphs[i].geometry.y_offset == 0 &&
-                  glyphs[i].attr.is_cluster_start)
+                  glyphs[i].attr.is_cluster_start &&
+                  !glyphs[i].attr.is_color)
                 {
                   switch (j + MIN_ASCII_GLYPH)
                     {
@@ -2366,6 +2372,7 @@ gsk_text_node_serialize_glyphs (GskRenderNode *node,
       g_string_append_printf (p, "%u ", glyphs[i].glyph);
       string_append_double (p, (double) glyphs[i].geometry.width / PANGO_SCALE);
       if (!glyphs[i].attr.is_cluster_start ||
+          glyphs[i].attr.is_color ||
           glyphs[i].geometry.x_offset != 0 ||
           glyphs[i].geometry.y_offset != 0)
         {
@@ -2375,6 +2382,8 @@ gsk_text_node_serialize_glyphs (GskRenderNode *node,
           string_append_double (p, (double) glyphs[i].geometry.y_offset / PANGO_SCALE);
           if (!glyphs[i].attr.is_cluster_start)
             g_string_append (p, " same-cluster");
+          if (!glyphs[i].attr.is_color)
+            g_string_append (p, " color");
         }
 
       if (i + 1 < n_glyphs)


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