[gtk+/wip/pbor/css-text-attributes: 5/6] css: support text-decoration-color



commit 906e604c35cd94b50ad6048c604bd1ec8e36edbe
Author: Paolo Borelli <pborelli gnome org>
Date:   Sun Jul 5 22:05:33 2015 +0200

    css: support text-decoration-color

 gtk/gtkcssstylepropertyimpl.c |   10 ++++++++++
 gtk/gtkcsstypesprivate.h      |    1 +
 gtk/gtkstylecontext.c         |   12 ++++++++++++
 3 files changed, 23 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcssstylepropertyimpl.c b/gtk/gtkcssstylepropertyimpl.c
index 84af460..a155b98 100644
--- a/gtk/gtkcssstylepropertyimpl.c
+++ b/gtk/gtkcssstylepropertyimpl.c
@@ -1104,6 +1104,16 @@ _gtk_css_style_property_init_properties (void)
                                           NULL,
                                           _gtk_css_text_decoration_line_value_new 
(GTK_CSS_TEXT_DECORATION_LINE_NONE));
 
+  gtk_css_style_property_register        ("text-decoration-color",
+                                          GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR,
+                                          G_TYPE_NONE,
+                                          GTK_STYLE_PROPERTY_ANIMATED,
+                                          GTK_CSS_AFFECTS_TEXT | GTK_CSS_AFFECTS_TEXT_ATTRS,
+                                          color_parse,
+                                          NULL,
+                                          NULL,
+                                          _gtk_css_color_value_new_current_color ());
+
   gtk_css_style_property_register        ("text-shadow",
                                           GTK_CSS_PROPERTY_TEXT_SHADOW,
                                           G_TYPE_NONE,
diff --git a/gtk/gtkcsstypesprivate.h b/gtk/gtkcsstypesprivate.h
index cac528e..2f80491 100644
--- a/gtk/gtkcsstypesprivate.h
+++ b/gtk/gtkcsstypesprivate.h
@@ -120,6 +120,7 @@ enum { /*< skip >*/
   GTK_CSS_PROPERTY_FONT_STRETCH,
   GTK_CSS_PROPERTY_LETTER_SPACING,
   GTK_CSS_PROPERTY_TEXT_DECORATION_LINE,
+  GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR,
   GTK_CSS_PROPERTY_TEXT_SHADOW,
   GTK_CSS_PROPERTY_BOX_SHADOW,
   GTK_CSS_PROPERTY_MARGIN_TOP,
diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c
index 51c4a1c..70bc394 100644
--- a/gtk/gtkstylecontext.c
+++ b/gtk/gtkstylecontext.c
@@ -3164,18 +3164,30 @@ _gtk_style_context_get_pango_attributes (GtkStyleContext *context)
 {
   PangoAttrList *attrs = NULL;
   GtkTextDecorationLine decoration_line;
+  const GdkRGBA *color;
+  const GdkRGBA *decoration_color;
   gint letter_spacing;
 
   /* text-decoration */
   decoration_line = _gtk_css_text_decoration_line_value_get (_gtk_style_context_peek_property (context, 
GTK_CSS_PROPERTY_TEXT_DECORATION_LINE));
+  color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
+  decoration_color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, 
GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR));
 
   switch (decoration_line)
     {
     case GTK_CSS_TEXT_DECORATION_LINE_UNDERLINE:
       attrs = add_pango_attr (attrs, pango_attr_underline_new (PANGO_UNDERLINE_SINGLE));
+      if (!gdk_rgba_equal(color, decoration_color))
+        attrs = add_pango_attr (attrs, pango_attr_underline_color_new (decoration_color->red * 65535. + 0.5,
+                                                                       decoration_color->green * 65535. + 
0.5,
+                                                                       decoration_color->blue * 65535. + 
0.5));
       break;
     case GTK_CSS_TEXT_DECORATION_LINE_LINE_THROUGH:
       attrs = add_pango_attr (attrs, pango_attr_strikethrough_new (TRUE));
+      if (!gdk_rgba_equal(color, decoration_color))
+        attrs = add_pango_attr (attrs, pango_attr_strikethrough_color_new (decoration_color->red * 65535. + 
0.5,
+                                                                           decoration_color->green * 65535. 
+ 0.5,
+                                                                           decoration_color->blue * 65535. + 
0.5));
       break;
     case GTK_CSS_TEXT_DECORATION_LINE_NONE:
     default:


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