Remove GtkCssRgbaValue
authorTimm Bäder <mail@baedert.org>
Fri, 10 Jan 2020 12:02:33 +0000 (13:02 +0100)
committerTimm Bäder <mail@baedert.org>
Sat, 18 Jan 2020 07:49:51 +0000 (08:49 +0100)
The differenciation between a literal color value and an RGBA value
caused problems in various situations. Just treat the two the same but
don't allow access to the rgba value of a non-literal color value.

This gets rid of around 1.6k rgba values in the widget-factory.

22 files changed:
gtk/gtkcsscolorvalue.c
gtk/gtkcsscolorvalueprivate.h
gtk/gtkcssimagefallback.c
gtk/gtkcssimageicontheme.c
gtk/gtkcssimagelinear.c
gtk/gtkcssimageradial.c
gtk/gtkcssimagerecolor.c
gtk/gtkcsspalettevalue.c
gtk/gtkcssrgbavalue.c [deleted file]
gtk/gtkcssrgbavalueprivate.h [deleted file]
gtk/gtkcssshadowvalue.c
gtk/gtkcssstyle.c
gtk/gtkcssstylepropertyimpl.c
gtk/gtkicontheme.c
gtk/gtkrender.c
gtk/gtkrenderbackground.c
gtk/gtkrenderborder.c
gtk/gtksnapshot.c
gtk/gtkstylecontext.c
gtk/gtktreeview.c
gtk/gtkwindow.c
gtk/meson.build

index de0c765bb012f91d52dbd266af9673a13e0cc427..28154002a56d612b9f9b6d946bca9413dd8450ae 100644 (file)
@@ -19,7 +19,6 @@
 
 #include "gtkcsscolorvalueprivate.h"
 
-#include "gtkcssrgbavalueprivate.h"
 #include "gtkcssstylepropertyprivate.h"
 #include "gtkhslaprivate.h"
 #include "gtkprivate.h"
@@ -45,6 +44,7 @@ struct _GtkCssValue
   union
   {
     gchar *name;
+    GdkRGBA rgba;
 
     struct
     {
@@ -104,7 +104,7 @@ gtk_css_value_color_get_fallback (guint             property_id,
       case GTK_CSS_PROPERTY_TEXT_SHADOW:
       case GTK_CSS_PROPERTY_ICON_SHADOW:
       case GTK_CSS_PROPERTY_BOX_SHADOW:
-        return _gtk_css_rgba_value_new_transparent ();
+        return gtk_css_color_value_new_transparent ();
       case GTK_CSS_PROPERTY_COLOR:
       case GTK_CSS_PROPERTY_BACKGROUND_COLOR:
       case GTK_CSS_PROPERTY_BORDER_TOP_COLOR:
@@ -125,7 +125,7 @@ gtk_css_value_color_get_fallback (guint             property_id,
         if (property_id < GTK_CSS_PROPERTY_N_PROPERTIES)
           g_warning ("No fallback color defined for property '%s'", 
                      _gtk_style_property_get_name (GTK_STYLE_PROPERTY (_gtk_css_style_property_lookup_by_id (property_id))));
-        return _gtk_css_rgba_value_new_transparent ();
+        return gtk_css_color_value_new_transparent ();
     }
 }
 
@@ -158,7 +158,7 @@ gtk_css_value_color_compute (GtkCssValue      *value,
     }
   else if (value->type == COLOR_TYPE_LITERAL)
     {
-      resolved = _gtk_css_value_ref (value->last_value);
+      resolved = _gtk_css_value_ref (value);
     }
   else
     {
@@ -186,7 +186,7 @@ gtk_css_value_color_equal (const GtkCssValue *value1,
   switch (value1->type)
     {
     case COLOR_TYPE_LITERAL:
-      return _gtk_css_value_equal (value1->last_value, value2->last_value);
+      return gdk_rgba_equal (&value1->sym_col.rgba, &value2->sym_col.rgba);
     case COLOR_TYPE_NAME:
       return g_str_equal (value1->sym_col.name, value2->sym_col.name);
     case COLOR_TYPE_SHADE:
@@ -227,7 +227,11 @@ gtk_css_value_color_print (const GtkCssValue *value,
   switch (value->type)
     {
     case COLOR_TYPE_LITERAL:
-      _gtk_css_value_print (value->last_value, string);
+      {
+        char *s = gdk_rgba_to_string (&value->sym_col.rgba);
+        g_string_append (string, s);
+        g_free (s);
+      }
       break;
     case COLOR_TYPE_NAME:
       g_string_append (string, "@");
@@ -313,16 +317,32 @@ apply_shade (const GdkRGBA *in,
   _gdk_rgba_init_from_hsla (out, &hsla);
 }
 
+static inline double
+transition (double start,
+            double end,
+             double progress)
+{
+  return start + (end - start) * progress;
+}
+
 static void
 apply_mix (const GdkRGBA *in1,
            const GdkRGBA *in2,
            GdkRGBA       *out,
            double         factor)
 {
-  out->red   = CLAMP (in1->red   + ((in2->red   - in1->red)   * factor), 0, 1);
-  out->green = CLAMP (in1->green + ((in2->green - in1->green) * factor), 0, 1);
-  out->blue  = CLAMP (in1->blue  + ((in2->blue  - in1->blue)  * factor), 0, 1);
-  out->alpha = CLAMP (in1->alpha + ((in2->alpha - in1->alpha) * factor), 0, 1);
+  out->alpha = CLAMP (transition (in1->alpha, in2->alpha, factor), 0, 1);
+
+  if (out->alpha <= 0.0)
+    {
+      out->red = out->green = out->blue = 0.0;
+    }
+  else
+    {
+      out->red   = CLAMP (transition (in1->red * in1->alpha, in2->red * in2->alpha, factor), 0,  1) / out->alpha;
+      out->green = CLAMP (transition (in1->green * in1->alpha, in2->green * in2->alpha, factor), 0,  1) / out->alpha;
+      out->blue  = CLAMP (transition (in1->blue * in1->alpha, in2->blue * in2->alpha, factor), 0,  1) / out->alpha;
+    }
 }
 
 GtkCssValue *
@@ -338,7 +358,7 @@ _gtk_css_color_value_resolve (GtkCssValue      *color,
   switch (color->type)
     {
     case COLOR_TYPE_LITERAL:
-      return _gtk_css_value_ref (color->last_value);
+      return _gtk_css_value_ref (color);
     case COLOR_TYPE_NAME:
       {
        GtkCssValue *named;
@@ -368,11 +388,11 @@ _gtk_css_color_value_resolve (GtkCssValue      *color,
        if (val == NULL)
          return NULL;
 
-        apply_shade (_gtk_css_rgba_value_get_rgba (val), &shade, color->sym_col.shade.factor);
+        apply_shade (gtk_css_color_value_get_rgba (val), &shade, color->sym_col.shade.factor);
 
        _gtk_css_value_unref (val);
 
-       value = _gtk_css_rgba_value_new_from_rgba (&shade);
+        value = _gtk_css_color_value_new_literal (&shade);
       }
 
       break;
@@ -385,12 +405,12 @@ _gtk_css_color_value_resolve (GtkCssValue      *color,
        if (val == NULL)
          return NULL;
 
-       alpha = *_gtk_css_rgba_value_get_rgba (val);
+       alpha = *gtk_css_color_value_get_rgba (val);
         apply_alpha (&alpha, &alpha, color->sym_col.alpha.factor);
 
        _gtk_css_value_unref (val);
 
-       value = _gtk_css_rgba_value_new_from_rgba (&alpha);
+        value = _gtk_css_color_value_new_literal (&alpha);
       }
       break;
 
@@ -402,18 +422,18 @@ _gtk_css_color_value_resolve (GtkCssValue      *color,
        val = _gtk_css_color_value_resolve (color->sym_col.mix.color1, provider, current, cycle_list);
        if (val == NULL)
          return NULL;
-       color1 = *_gtk_css_rgba_value_get_rgba (val);
+       color1 = *gtk_css_color_value_get_rgba (val);
        _gtk_css_value_unref (val);
 
        val = _gtk_css_color_value_resolve (color->sym_col.mix.color2, provider, current, cycle_list);
        if (val == NULL)
          return NULL;
-       color2 = *_gtk_css_rgba_value_get_rgba (val);
+       color2 = *gtk_css_color_value_get_rgba (val);
        _gtk_css_value_unref (val);
 
         apply_mix (&color1, &color2, &res, color->sym_col.mix.factor);
 
-       value =_gtk_css_rgba_value_new_from_rgba (&res);
+        value = _gtk_css_color_value_new_literal (&res);
       }
 
       break;
@@ -460,6 +480,24 @@ _gtk_css_color_value_resolve (GtkCssValue      *color,
   return value;
 }
 
+static GtkCssValue transparent_black_singleton = { &GTK_CSS_VALUE_COLOR, 1, COLOR_TYPE_LITERAL, NULL,
+                                                   .sym_col.rgba = {0, 0, 0, 0} };
+static GtkCssValue white_singleton             = { &GTK_CSS_VALUE_COLOR, 1, COLOR_TYPE_LITERAL, NULL,
+                                                   .sym_col.rgba = {1, 1, 1, 1} };
+
+
+GtkCssValue *
+gtk_css_color_value_new_transparent (void)
+{
+  return _gtk_css_value_ref (&transparent_black_singleton);
+}
+
+GtkCssValue *
+gtk_css_color_value_new_white (void)
+{
+  return _gtk_css_value_ref (&white_singleton);
+}
+
 GtkCssValue *
 _gtk_css_color_value_new_literal (const GdkRGBA *color)
 {
@@ -469,7 +507,7 @@ _gtk_css_color_value_new_literal (const GdkRGBA *color)
 
   value = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_COLOR);
   value->type = COLOR_TYPE_LITERAL;
-  value->last_value = _gtk_css_rgba_value_new_from_rgba (color);
+  value->sym_col.rgba = *color;
 
   return value;
 }
@@ -498,9 +536,9 @@ _gtk_css_color_value_new_shade (GtkCssValue *color,
 
   if (color->type == COLOR_TYPE_LITERAL)
     {
-      GdkRGBA c = *_gtk_css_rgba_value_get_rgba (color->last_value);
+      GdkRGBA c;
 
-      apply_shade (&c, &c, factor);
+      apply_shade (&color->sym_col.rgba, &c, factor);
 
       return _gtk_css_color_value_new_literal (&c);
     }
@@ -523,9 +561,9 @@ _gtk_css_color_value_new_alpha (GtkCssValue *color,
 
   if (color->type == COLOR_TYPE_LITERAL)
     {
-      GdkRGBA c = *_gtk_css_rgba_value_get_rgba (color->last_value);
+      GdkRGBA c;
 
-      apply_alpha (&c, &c, factor);
+      apply_alpha (&color->sym_col.rgba, &c, factor);
 
       return _gtk_css_color_value_new_literal (&c);
     }
@@ -551,11 +589,9 @@ _gtk_css_color_value_new_mix (GtkCssValue *color1,
   if (color1->type == COLOR_TYPE_LITERAL &&
       color2->type == COLOR_TYPE_LITERAL)
     {
-      GdkRGBA c1 = *_gtk_css_rgba_value_get_rgba (color1->last_value);
-      GdkRGBA c2 = *_gtk_css_rgba_value_get_rgba (color2->last_value);
       GdkRGBA result;
 
-      apply_mix (&c1, &c2, &result, factor);
+      apply_mix (&color1->sym_col.rgba, &color2->sym_col.rgba, &result, factor);
 
       return _gtk_css_color_value_new_literal (&result);
 
@@ -736,3 +772,11 @@ _gtk_css_color_value_parse (GtkCssParser *parser)
     return NULL;
 }
 
+const GdkRGBA *
+gtk_css_color_value_get_rgba (const GtkCssValue *color)
+{
+  g_assert (color->class == &GTK_CSS_VALUE_COLOR);
+  g_assert (color->type == COLOR_TYPE_LITERAL);
+
+  return &color->sym_col.rgba;
+}
index 1007b265821027a9eda0e514c9a0de8365be0247..ce490c898a30ff92a7f710b9e91794a8182d20d8 100644 (file)
@@ -24,6 +24,8 @@
 G_BEGIN_DECLS
 
 
+GtkCssValue *   gtk_css_color_value_new_transparent     (void);
+GtkCssValue *   gtk_css_color_value_new_white           (void);
 GtkCssValue *   _gtk_css_color_value_new_literal        (const GdkRGBA  *color);
 GtkCssValue *   _gtk_css_color_value_new_name           (const gchar    *name);
 GtkCssValue *   _gtk_css_color_value_new_shade          (GtkCssValue    *color,
@@ -42,6 +44,7 @@ GtkCssValue *   _gtk_css_color_value_resolve            (GtkCssValue      *color
                                                          GtkStyleProvider *provider,
                                                          GtkCssValue      *current,
                                                          GSList           *cycle_list);
+const GdkRGBA * gtk_css_color_value_get_rgba            (const GtkCssValue *color);
 
 
 G_END_DECLS
index 6536a8dd0a8754a264f41916fdff527dffa10da7..8d8ca30b5265fd63e858f0be7011fef43d6cbd10 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "gtkcssimagefallbackprivate.h"
 #include "gtkcsscolorvalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 
 #include "gtkstyleproviderprivate.h"
 
@@ -74,7 +74,7 @@ gtk_css_image_fallback_snapshot (GtkCssImage *image,
       const GdkRGBA *color;
 
       if (fallback->color)
-        color = _gtk_css_rgba_value_get_rgba (fallback->color);
+        color = gtk_css_color_value_get_rgba (fallback->color);
       else
         color = &red;
 
index 3832e8f34c3f6dabc0a4cab9bfcc9223d935d062..c2a21c41b9f739eea895295866a2d07b16703ae8 100644 (file)
@@ -24,7 +24,6 @@
 #include <math.h>
 
 #include "gtkcssiconthemevalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
 #include "gtksettingsprivate.h"
 #include "gtksnapshot.h"
 #include "gtkstyleproviderprivate.h"
index 16f52afe0f60341dd62720b1bdf94d92888ad4c4..df9efc8b6a3a257740daf6e44970a8382025684d 100644 (file)
@@ -25,7 +25,7 @@
 
 #include "gtkcsscolorvalueprivate.h"
 #include "gtkcssnumbervalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkcssprovider.h"
 
 G_DEFINE_TYPE (GtkCssImageLinear, _gtk_css_image_linear, GTK_TYPE_CSS_IMAGE)
@@ -194,7 +194,7 @@ gtk_css_image_linear_snapshot (GtkCssImage        *image,
                                                              linear->stops->len - 1);
 
           gtk_snapshot_append_color (snapshot,
-                                     _gtk_css_rgba_value_get_rgba (stop->color),
+                                     gtk_css_color_value_get_rgba (stop->color),
                                      &GRAPHENE_RECT_INIT (0, 0, width, height));
           return;
         }
@@ -240,7 +240,7 @@ gtk_css_image_linear_snapshot (GtkCssImage        *image,
           offset += step;
 
           stops[last].offset = (offset - start) / (end - start);
-          stops[last].color = *_gtk_css_rgba_value_get_rgba (stop->color);
+          stops[last].color = *gtk_css_color_value_get_rgba (stop->color);
         }
 
       offset = pos;
index 4dafe162ce5712ec77f5e54afa175f0461b04879..1fe21f62c5abe5dfd1da3c9310c72f0b4d9a36aa 100644 (file)
@@ -26,7 +26,7 @@
 #include "gtkcsscolorvalueprivate.h"
 #include "gtkcssnumbervalueprivate.h"
 #include "gtkcsspositionvalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkcssprovider.h"
 
 G_DEFINE_TYPE (GtkCssImageRadial, _gtk_css_image_radial, GTK_TYPE_CSS_IMAGE)
@@ -208,7 +208,7 @@ gtk_css_image_radial_snapshot (GtkCssImage *image,
 
           stop = &g_array_index (radial->stops, GtkCssImageRadialColorStop, last);
 
-          rgba = _gtk_css_rgba_value_get_rgba (stop->color);
+          rgba = gtk_css_color_value_get_rgba (stop->color);
           offset += step;
 
           cairo_pattern_add_color_stop_rgba (pattern,
index f9afa12f9eda87417df170f9e6356d887628a4b3..36cc7bd9c463b793855ecca5ab86987292376168 100644 (file)
@@ -22,7 +22,7 @@
 #include "gtkcssimagerecolorprivate.h"
 #include "gtkcssimageprivate.h"
 #include "gtkcsspalettevalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkiconthemeprivate.h"
 #include "gdkpixbufutilsprivate.h"
 
@@ -74,7 +74,7 @@ lookup_symbolic_colors (GtkCssStyle *style,
   const GdkRGBA *lookup;
 
   color = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR);
-  *color_out = *_gtk_css_rgba_value_get_rgba (color);
+  *color_out = *gtk_css_color_value_get_rgba (color);
 
   lookup = gtk_css_palette_value_get_color (palette, "success");
   if (lookup)
index 53866bae76412d4da564755e5a3bc0f31c321070..e7daca9a746e68a528c3474ab103eb5c9db5c51d 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "gtkcssiconthemevalueprivate.h"
 #include "gtkcsscolorvalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkprivate.h"
 
 struct _GtkCssValue {
@@ -349,7 +349,7 @@ gtk_css_palette_value_get_color (GtkCssValue *value,
   for (i = 0; i < value->n_colors; i ++)
     {
       if (strcmp (value->color_names[i], name) == 0)
-        return _gtk_css_rgba_value_get_rgba (value->color_values[i]);
+        return gtk_css_color_value_get_rgba (value->color_values[i]);
     }
 
   return NULL;
diff --git a/gtk/gtkcssrgbavalue.c b/gtk/gtkcssrgbavalue.c
deleted file mode 100644 (file)
index dad1f3e..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 2011 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "config.h"
-
-#include "gtkcssrgbavalueprivate.h"
-
-#include "gtkcssstylepropertyprivate.h"
-#include "gtkstylecontextprivate.h"
-
-struct _GtkCssValue {
-  GTK_CSS_VALUE_BASE
-  GdkRGBA rgba;
-};
-
-static void
-gtk_css_value_rgba_free (GtkCssValue *value)
-{
-  g_slice_free (GtkCssValue, value);
-}
-
-static GtkCssValue *
-gtk_css_value_rgba_compute (GtkCssValue      *value,
-                            guint             property_id,
-                            GtkStyleProvider *provider,
-                            GtkCssStyle      *style,
-                            GtkCssStyle      *parent_style)
-{
-  return _gtk_css_value_ref (value);
-}
-
-static gboolean
-gtk_css_value_rgba_equal (const GtkCssValue *rgba1,
-                          const GtkCssValue *rgba2)
-{
-  return gdk_rgba_equal (&rgba1->rgba, &rgba2->rgba);
-}
-
-static inline double
-transition (double start,
-            double end,
-            double progress)
-{
-  return start + (end - start) * progress;
-}
-
-static GtkCssValue *
-gtk_css_value_rgba_transition (GtkCssValue *start,
-                               GtkCssValue *end,
-                               guint        property_id,
-                               double       progress)
-{
-  GdkRGBA result;
-
-  progress = CLAMP (progress, 0, 1);
-  result.alpha = transition (start->rgba.alpha, end->rgba.alpha, progress);
-  if (result.alpha <= 0.0)
-    {
-      result.red = result.green = result.blue = 0.0;
-    }
-  else
-    {
-      result.red = transition (start->rgba.red * start->rgba.alpha,
-                               end->rgba.red * end->rgba.alpha,
-                               progress) / result.alpha;
-      result.green = transition (start->rgba.green * start->rgba.alpha,
-                                 end->rgba.green * end->rgba.alpha,
-                                 progress) / result.alpha;
-      result.blue = transition (start->rgba.blue * start->rgba.alpha,
-                                end->rgba.blue * end->rgba.alpha,
-                                progress) / result.alpha;
-    }
-
-  return _gtk_css_rgba_value_new_from_rgba (&result);
-}
-
-static void
-gtk_css_value_rgba_print (const GtkCssValue *rgba,
-                          GString           *string)
-{
-  char *s = gdk_rgba_to_string (&rgba->rgba);
-  g_string_append (string, s);
-  g_free (s);
-}
-
-static const GtkCssValueClass GTK_CSS_VALUE_RGBA = {
-  "GtkCssRgbaValue",
-  gtk_css_value_rgba_free,
-  gtk_css_value_rgba_compute,
-  gtk_css_value_rgba_equal,
-  gtk_css_value_rgba_transition,
-  NULL,
-  NULL,
-  gtk_css_value_rgba_print
-};
-
-static GtkCssValue transparent_black_singleton = { &GTK_CSS_VALUE_RGBA, 1, { 0, 0, 0, 0 }};
-static GtkCssValue transparent_white_singleton = { &GTK_CSS_VALUE_RGBA, 1, { 1, 1, 1, 0 }};
-static GtkCssValue opaque_white_singleton      = { &GTK_CSS_VALUE_RGBA, 1, { 1, 1, 1, 1 }};
-
-GtkCssValue *
-_gtk_css_rgba_value_new_from_rgba (const GdkRGBA *rgba)
-{
-  GtkCssValue *value;
-
-  g_return_val_if_fail (rgba != NULL, NULL);
-
-  if (gdk_rgba_is_clear (rgba))
-    {
-      if (rgba->red == 1 &&
-          rgba->green == 1 &&
-          rgba->blue == 1)
-        return _gtk_css_value_ref (&transparent_white_singleton);
-
-      if (rgba->red == 0 &&
-          rgba->green == 0 &&
-          rgba->blue == 0)
-        return _gtk_css_value_ref (&transparent_black_singleton);
-    }
-  else if (gdk_rgba_is_opaque (rgba))
-    {
-      if (rgba->red == 1 &&
-          rgba->green == 1 &&
-          rgba->blue == 1)
-        return _gtk_css_value_ref (&opaque_white_singleton);
-    }
-
-  value = _gtk_css_value_new (GtkCssValue, &GTK_CSS_VALUE_RGBA);
-  value->rgba = *rgba;
-
-  return value;
-}
-
-GtkCssValue *
-_gtk_css_rgba_value_new_transparent (void)
-{
-  return _gtk_css_value_ref (&transparent_black_singleton);
-}
-
-GtkCssValue *
-_gtk_css_rgba_value_new_white (void)
-{
-  return _gtk_css_value_ref (&opaque_white_singleton);
-}
-
-const GdkRGBA *
-_gtk_css_rgba_value_get_rgba (const GtkCssValue *rgba)
-{
-  g_return_val_if_fail (rgba->class == &GTK_CSS_VALUE_RGBA, NULL);
-
-  return &rgba->rgba;
-}
diff --git a/gtk/gtkcssrgbavalueprivate.h b/gtk/gtkcssrgbavalueprivate.h
deleted file mode 100644 (file)
index 6a1b185..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright © 2012 Red Hat Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: Alexander Larsson <alexl@gnome.org>
- */
-
-#ifndef __GTK_CSS_RGBA_VALUE_PRIVATE_H__
-#define __GTK_CSS_RGBA_VALUE_PRIVATE_H__
-
-#include "gtkcssparserprivate.h"
-#include "gtkcsstypesprivate.h"
-#include "gtkcssvalueprivate.h"
-
-G_BEGIN_DECLS
-
-GtkCssValue *   _gtk_css_rgba_value_new_from_rgba   (const GdkRGBA          *rgba);
-GtkCssValue *   _gtk_css_rgba_value_new_transparent (void);
-GtkCssValue *   _gtk_css_rgba_value_new_white       (void);
-
-const GdkRGBA * _gtk_css_rgba_value_get_rgba      (const GtkCssValue      *rgba) G_GNUC_PURE;
-
-
-G_END_DECLS
-
-#endif /* __GTK_CSS_RGBA_VALUE_PRIVATE_H__ */
index 79a2950b8e934471cbb3c1f7c80a0c63af81e703..709aff4023015555cc7a0f1e0fffddc1ea71866c 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "gtkcsscolorvalueprivate.h"
 #include "gtkcssnumbervalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtksnapshotprivate.h"
 #include "gtkstylecontextprivate.h"
 #include "gtkpango.h"
@@ -197,7 +197,7 @@ _gtk_css_shadow_value_new_for_transition (GtkCssValue *target)
                                    _gtk_css_number_value_new (0, GTK_CSS_PX),
                                    _gtk_css_number_value_new (0, GTK_CSS_PX),
                                    target->inset,
-                                   _gtk_css_rgba_value_new_transparent ());
+                                   gtk_css_color_value_new_transparent ());
 }
 
 enum {
@@ -360,7 +360,7 @@ void
 gtk_css_shadow_value_get_shadow (const GtkCssValue *value,
                                  GskShadow         *shadow)
 {
-  shadow->color = *_gtk_css_rgba_value_get_rgba (value->color);
+  shadow->color = *gtk_css_color_value_get_rgba (value->color);
   shadow->dx = _gtk_css_number_value_get (value->hoffset, 0);
   shadow->dy = _gtk_css_number_value_get (value->voffset, 0);
   shadow->radius = _gtk_css_number_value_get (value->radius, 0);
@@ -374,12 +374,12 @@ gtk_css_shadow_value_snapshot_outset (const GtkCssValue    *shadow,
   g_return_if_fail (shadow->class == &GTK_CSS_VALUE_SHADOW);
 
   /* We don't need to draw invisible shadows */
-  if (gdk_rgba_is_clear (_gtk_css_rgba_value_get_rgba (shadow->color)))
+  if (gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color)))
     return;
 
   gtk_snapshot_append_outset_shadow (snapshot,
                                      border_box,
-                                     _gtk_css_rgba_value_get_rgba (shadow->color),
+                                     gtk_css_color_value_get_rgba (shadow->color),
                                      _gtk_css_number_value_get (shadow->hoffset, 0),
                                      _gtk_css_number_value_get (shadow->voffset, 0),
                                      _gtk_css_number_value_get (shadow->spread, 0),
@@ -397,14 +397,14 @@ gtk_css_shadow_value_snapshot_inset (const GtkCssValue    *shadow,
   g_return_if_fail (shadow->class == &GTK_CSS_VALUE_SHADOW);
 
   /* We don't need to draw invisible shadows */
-  if (gdk_rgba_is_clear (_gtk_css_rgba_value_get_rgba (shadow->color)))
+  if (gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color)))
     return;
 
   dx = _gtk_css_number_value_get (shadow->hoffset, 0);
   dy = _gtk_css_number_value_get (shadow->voffset, 0);
   spread = _gtk_css_number_value_get (shadow->spread, 0);
   radius = _gtk_css_number_value_get (shadow->radius, 0);
-  color = _gtk_css_rgba_value_get_rgba (shadow->color);
+  color = gtk_css_color_value_get_rgba (shadow->color);
 
   /* These are trivial to do with a color node */
   if (spread == 0 && radius == 0 &&
@@ -470,6 +470,6 @@ gtk_css_shadow_value_snapshot_inset (const GtkCssValue    *shadow,
 gboolean
 gtk_css_shadow_value_is_clear (const GtkCssValue *shadow)
 {
-  return gdk_rgba_is_clear (_gtk_css_rgba_value_get_rgba (shadow->color));
+  return gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color));
 }
 
index a20ee043c3d6119fb6896bb232188e14715823cd..1456f1290d65e85996b19fda1710d8d90d3e29fa 100644 (file)
@@ -28,7 +28,7 @@
 #include "gtkcssinheritvalueprivate.h"
 #include "gtkcssinitialvalueprivate.h"
 #include "gtkcssnumbervalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkcssshorthandpropertyprivate.h"
 #include "gtkcssstringvalueprivate.h"
 #include "gtkcssfontfeaturesvalueprivate.h"
@@ -227,8 +227,8 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
   /* text-decoration */
   decoration_line = _gtk_css_text_decoration_line_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_TEXT_DECORATION_LINE));
   decoration_style = _gtk_css_text_decoration_style_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_TEXT_DECORATION_STYLE));
-  color = _gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR));
-  decoration_color = _gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR));
+  color = gtk_css_color_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR));
+  decoration_color = gtk_css_color_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR));
 
   switch (decoration_line)
     {
index 02e95214034dc524aad7d8525a78898099c5bb7e..eee5bfbde370c812a5a6a65f51726d2820b444eb 100644 (file)
@@ -53,7 +53,6 @@
 #include "gtkcsspalettevalueprivate.h"
 #include "gtkcsspositionvalueprivate.h"
 #include "gtkcssrepeatvalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
 #include "gtkcssshadowsvalueprivate.h"
 #include "gtkcssstringvalueprivate.h"
 #include "gtkcsstransformvalueprivate.h"
@@ -150,7 +149,7 @@ color_query (GtkCssStyleProperty *property,
              GValue              *value)
 {
   g_value_init (value, GDK_TYPE_RGBA);
-  g_value_set_boxed (value, _gtk_css_rgba_value_get_rgba (css_value));
+  g_value_set_boxed (value, gtk_css_color_value_get_rgba (css_value));
 }
 
 static GtkCssValue *
@@ -936,7 +935,7 @@ _gtk_css_style_property_init_properties (void)
                                           GTK_CSS_AFFECTS_CONTENT | GTK_CSS_AFFECTS_SYMBOLIC_ICON,
                                           color_parse,
                                           color_query,
-                                          _gtk_css_rgba_value_new_white ());
+                                          gtk_css_color_value_new_white ());
   gtk_css_style_property_register        ("-gtk-dpi",
                                           GTK_CSS_PROPERTY_DPI,
                                           G_TYPE_NONE,
@@ -980,7 +979,7 @@ _gtk_css_style_property_init_properties (void)
                                           GTK_CSS_AFFECTS_BACKGROUND,
                                           color_parse,
                                           color_query,
-                                          _gtk_css_rgba_value_new_transparent ());
+                                          gtk_css_color_value_new_transparent ());
 
   gtk_css_style_property_register        ("font-family",
                                           GTK_CSS_PROPERTY_FONT_FAMILY,
index 8a2231e6e15b015e54ddd354c552891032250870..5de6c07f394e88848c8f4d76fd14184ce051aa5e 100644 (file)
@@ -40,7 +40,7 @@
 
 #include "gtkiconthemeprivate.h"
 #include "gtkcsspalettevalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkdebug.h"
 #include "gtkiconcacheprivate.h"
 #include "gtkintl.h"
@@ -3868,7 +3868,7 @@ gtk_icon_theme_lookup_symbolic_colors (GtkCssStyle *style,
 
   color = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR);
   palette = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_PALETTE);
-  *color_out = *_gtk_css_rgba_value_get_rgba (color);
+  *color_out = *gtk_css_color_value_get_rgba (color);
 
   lookup = gtk_css_palette_value_get_color (palette, "success");
   if (lookup)
index 40e1a47467e12d5de622ac217119ea8675f1f9b4..ade2358bea05ef190db94fdd335214687092aea2 100644 (file)
@@ -24,7 +24,7 @@
 #include "gtkcsscornervalueprivate.h"
 #include "gtkcssimagevalueprivate.h"
 #include "gtkcssnumbervalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkcssshadowsvalueprivate.h"
 #include "gtkcsstransformvalueprivate.h"
 #include "gtkhslaprivate.h"
@@ -414,7 +414,7 @@ gtk_do_render_line (GtkStyleContext *context,
 
   cairo_save (cr);
 
-  color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
+  color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
 
   cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE);
   cairo_set_line_width (cr, 1);
index b241a7e61558d5be5ad0604f4ce7ed96e9c8e2ae..30d620c3ed70aab7adc10d622858be5270f2055a 100644 (file)
@@ -33,7 +33,7 @@
 #include "gtkcssshadowsvalueprivate.h"
 #include "gtkcsspositionvalueprivate.h"
 #include "gtkcssrepeatvalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkcssstyleprivate.h"
 #include "gtkcsstypesprivate.h"
 
@@ -278,7 +278,7 @@ gtk_css_style_snapshot_background (GtkCssBoxes *boxes,
   GskBlendMode *blend_mode_values;
 
   background_image = gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BACKGROUND_IMAGE);
-  bg_color = _gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BACKGROUND_COLOR));
+  bg_color = gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BACKGROUND_COLOR));
   box_shadow = gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BOX_SHADOW);
 
   /* This is the common default case of no background */
index 45c4e2532193894e7393013a45f91f7eef0292ec..232418ad649b907d5d52ea1215cf0412f9a7bec2 100644 (file)
@@ -31,7 +31,7 @@
 #include "gtkcssimagevalueprivate.h"
 #include "gtkcssnumbervalueprivate.h"
 #include "gtkcssrepeatvalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkcssstyleprivate.h"
 #include "gtkhslaprivate.h"
 #include "gtkroundedboxprivate.h"
@@ -683,10 +683,10 @@ gtk_css_style_snapshot_border (GtkCssBoxes *boxes,
                                gtk_css_boxes_get_padding_rect (boxes)))
         return;
 
-      colors[0] = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
-      colors[1] = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR));
-      colors[2] = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR));
-      colors[3] = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_LEFT_COLOR));
+      colors[0] = *gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
+      colors[1] = *gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR));
+      colors[2] = *gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR));
+      colors[3] = *gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_LEFT_COLOR));
 
       alpha_test_vector = graphene_simd4f_init (colors[0].alpha, colors[1].alpha, colors[2].alpha, colors[3].alpha);
       if (graphene_simd4f_is_zero4 (alpha_test_vector))
@@ -726,7 +726,7 @@ gtk_css_style_snapshot_outline (GtkCssBoxes *boxes,
       border_style[1] = border_style[2] = border_style[3] = border_style[0];
       border_width[0] = _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_WIDTH), 100);
       border_width[3] = border_width[2] = border_width[1] = border_width[0];
-      colors[0] = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_COLOR));
+      colors[0] = *gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_COLOR));
       colors[3] = colors[2] = colors[1] = colors[0];
 
       snapshot_border (snapshot,
index b1bee0fba9549a4dc3337262a60e799e162696c8..394d8980f2e26b046833236175618d7cc980ae11 100644 (file)
@@ -20,7 +20,7 @@
 #include "gtksnapshot.h"
 #include "gtksnapshotprivate.h"
 
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkcssshadowsvalueprivate.h"
 #include "gtkdebug.h"
 #include "gtkrenderbackgroundprivate.h"
@@ -1732,7 +1732,7 @@ gtk_snapshot_render_layout (GtkSnapshot     *snapshot,
   gtk_snapshot_save (snapshot);
   gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x, y));
 
-  fg_color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
+  fg_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
 
   shadows_value = _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_TEXT_SHADOW);
   has_shadow = gtk_css_shadows_value_push_snapshot (shadows_value, snapshot);
index 2072dd8a3bc82edfa91cac35ba66cf8d2faf814c..bacdf3ec33e93dd5cd9d803abbbd9b8b4c391d77 100644 (file)
@@ -31,7 +31,7 @@
 #include "gtkcssnodeprivate.h"
 #include "gtkcssnumbervalueprivate.h"
 #include "gtkcsspathnodeprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkcsscolorvalueprivate.h"
 #include "gtkcssstylepropertyprivate.h"
 #include "gtkcsstransientnodeprivate.h"
@@ -1346,7 +1346,7 @@ gtk_style_context_resolve_color (GtkStyleContext    *context,
   if (val == NULL)
     return FALSE;
 
-  *result = *_gtk_css_rgba_value_get_rgba (val);
+  *result = *gtk_css_color_value_get_rgba (val);
   _gtk_css_value_unref (val);
   return TRUE;
 }
index 56124d6296129f5e6829a452ff4166e787d7cf5a..e687a71e4b92c06f6ac9800e9b51a5c2a0cff91b 100644 (file)
@@ -29,7 +29,7 @@
 #include "gtkcellrenderer.h"
 #include "gtkcontainer.h"
 #include "gtkcssnumbervalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkcssstylepropertyprivate.h"
 #include "gtkdragdest.h"
 #include "gtkdragsource.h"
@@ -4216,7 +4216,7 @@ gtk_tree_view_snapshot_grid_line (GtkTreeView            *tree_view,
   const GdkRGBA *grid_line_color;
 
   context = gtk_widget_get_style_context (GTK_WIDGET (tree_view));
-  grid_line_color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context,
+  grid_line_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context,
                                                                                     GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
 
   if (!gdk_rgba_equal (grid_line_color, &tree_view->grid_line_color) ||
@@ -4290,7 +4290,7 @@ gtk_tree_view_snapshot_tree_line (GtkTreeView            *tree_view,
   const GdkRGBA *tree_line_color;
 
   context = gtk_widget_get_style_context (GTK_WIDGET (tree_view));
-  tree_line_color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context,
+  tree_line_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context,
                                                                                     GTK_CSS_PROPERTY_BORDER_LEFT_COLOR));
 
   if (!gdk_rgba_equal (tree_line_color, &tree_view->tree_line_color) ||
index c0a5067a52a2e2096ee5b98a4be6151ad48f030a..893c58ae5c615715c2df3fe864283acdc2f5f190 100644 (file)
@@ -37,7 +37,7 @@
 #include "gtkcontainerprivate.h"
 #include "gtkcsscornervalueprivate.h"
 #include "gtkcssiconthemevalueprivate.h"
-#include "gtkcssrgbavalueprivate.h"
+#include "gtkcsscolorvalueprivate.h"
 #include "gtkcssshadowsvalueprivate.h"
 #include "gtkcssstylepropertyprivate.h"
 #include "gtkdragdest.h"
@@ -5459,7 +5459,7 @@ update_opaque_region (GtkWindow           *window,
 
   context = gtk_widget_get_style_context (widget);
 
-  is_opaque = gdk_rgba_is_opaque (_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR)));
+  is_opaque = gdk_rgba_is_opaque (gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR)));
 
   if (gtk_widget_get_opacity (widget) < 1.0)
     is_opaque = FALSE;
index 6f498f54f0c7c22e263885343a3bf1be15223d5a..0efbd5fac0f1a694459a48a1c9d531aeeda04405 100644 (file)
@@ -82,7 +82,6 @@ gtk_private_sources = files([
   'gtkcsspathnode.c',
   'gtkcsspositionvalue.c',
   'gtkcssrepeatvalue.c',
-  'gtkcssrgbavalue.c',
   'gtkcssselector.c',
   'gtkcssshadowsvalue.c',
   'gtkcssshadowvalue.c',