summaryrefslogtreecommitdiff
path: root/gtk/gtkcssvalue.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2012-03-26 17:24:02 +0200
committerBenjamin Otte <otte@redhat.com>2012-04-17 08:59:11 +0200
commit9b7640b898c61eb4ff49140880f2bb2b70eb9f0b (patch)
tree8549d2c0d73a7a70859210283ade4802e4d2f41e /gtk/gtkcssvalue.c
parent718ceaec450947b77a52318647a972591d183b5c (diff)
downloadgtk+-9b7640b898c61eb4ff49140880f2bb2b70eb9f0b.tar.gz
styleproperty: Make _gtk_style_property_parse_value() return a CssValue
Also split out initial/inherit handling into a custom GtkCssValue class.
Diffstat (limited to 'gtk/gtkcssvalue.c')
-rw-r--r--gtk/gtkcssvalue.c82
1 files changed, 69 insertions, 13 deletions
diff --git a/gtk/gtkcssvalue.c b/gtk/gtkcssvalue.c
index 7bd1a55e45..a797f65534 100644
--- a/gtk/gtkcssvalue.c
+++ b/gtk/gtkcssvalue.c
@@ -183,6 +183,31 @@ _gtk_css_value_new_from_int (gint val)
}
GtkCssValue *
+_gtk_css_value_new_from_enum (GType type,
+ gint val)
+{
+ GtkCssValue *value;
+
+ g_return_val_if_fail (g_type_is_a (type, G_TYPE_ENUM), NULL);
+
+ value = gtk_css_value_new (type);
+ value->u.gint = val;
+
+ return value;
+}
+
+GtkCssValue *
+_gtk_css_value_new_from_double (double d)
+{
+ GtkCssValue *value;
+
+ value = gtk_css_value_new (G_TYPE_DOUBLE);
+ value->u.dbl = d;
+
+ return value;
+}
+
+GtkCssValue *
_gtk_css_value_new_take_string (char *string)
{
GtkCssValue *value;
@@ -193,6 +218,17 @@ _gtk_css_value_new_take_string (char *string)
return value;
}
+GtkCssValue *
+_gtk_css_value_new_take_strv (char **strv)
+{
+ GtkCssValue *value;
+
+ value = gtk_css_value_new (G_TYPE_STRV);
+ value->u.ptr = strv;
+
+ return value;
+}
+
static gpointer
g_boxed_copy0 (GType boxed_type,
gconstpointer src_boxed)
@@ -236,6 +272,17 @@ _gtk_css_value_new_take_image (GtkCssImage *v)
}
GtkCssValue *
+_gtk_css_value_new_take_binding_sets (GPtrArray *array)
+{
+ GtkCssValue *value;
+
+ value = gtk_css_value_new (G_TYPE_PTR_ARRAY);
+ value->u.ptr = array;
+
+ return value;
+}
+
+GtkCssValue *
_gtk_css_value_new_from_number (const GtkCssNumber *v)
{
GtkCssValue *value;
@@ -323,6 +370,28 @@ _gtk_css_value_new_from_background_position (const GtkCssBackgroundPosition *v)
}
GtkCssValue *
+_gtk_css_value_new_from_border_corner_radius (const GtkCssBorderCornerRadius *v)
+{
+ GtkCssValue *value;
+
+ value = gtk_css_value_new (GTK_TYPE_CSS_BORDER_CORNER_RADIUS);
+ value->u.ptr = g_boxed_copy0 (GTK_TYPE_CSS_BORDER_CORNER_RADIUS, v);
+
+ return value;
+}
+
+GtkCssValue *
+_gtk_css_value_new_from_border_style (GtkBorderStyle style)
+{
+ GtkCssValue *value;
+
+ value = gtk_css_value_new (GTK_TYPE_BORDER_STYLE);
+ value->u.gint = style;
+
+ return value;
+}
+
+GtkCssValue *
_gtk_css_value_new_take_symbolic_color (GtkSymbolicColor *v)
{
GtkCssValue *value;
@@ -434,19 +503,6 @@ _gtk_css_value_init_gvalue (const GtkCssValue *value,
}
}
-gboolean
-_gtk_css_value_is_special (const GtkCssValue *value)
-{
- return _gtk_css_value_holds (value, GTK_TYPE_CSS_SPECIAL_VALUE);
-}
-
-GtkCssSpecialValue
-_gtk_css_value_get_special_kind (const GtkCssValue *value)
-{
- g_return_val_if_fail (_gtk_css_value_holds (value, GTK_TYPE_CSS_SPECIAL_VALUE), 0);
- return value->u.gint;
-}
-
const GtkCssNumber *
_gtk_css_value_get_number (const GtkCssValue *value)
{