]> Pileus Git - ~andy/gtk/blob - gtk/gtkcssvalue.c
cssstyleproperty: Get rid of unused API
[~andy/gtk] / gtk / gtkcssvalue.c
1 /* GTK - The GIMP Toolkit
2  * Copyright (C) 2011 Red Hat, Inc.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include "config.h"
19
20 #include "gtkcssvalueprivate.h"
21
22 struct _GtkCssValue {
23   GTK_CSS_VALUE_BASE
24 };
25
26 G_DEFINE_BOXED_TYPE (GtkCssValue, _gtk_css_value, _gtk_css_value_ref, _gtk_css_value_unref)
27
28 GtkCssValue *
29 _gtk_css_value_alloc (const GtkCssValueClass *klass,
30                       gsize                   size)
31 {
32   GtkCssValue *value;
33
34   value = g_slice_alloc0 (size);
35
36   value->class = klass;
37   value->ref_count = 1;
38
39   return value;
40 }
41
42 GtkCssValue *
43 _gtk_css_value_ref (GtkCssValue *value)
44 {
45   g_return_val_if_fail (value != NULL, NULL);
46
47   g_atomic_int_add (&value->ref_count, 1);
48
49   return value;
50 }
51
52 void
53 _gtk_css_value_unref (GtkCssValue *value)
54 {
55   if (value == NULL)
56     return;
57
58   if (!g_atomic_int_dec_and_test (&value->ref_count))
59     return;
60
61   value->class->free (value);
62 }
63
64 /**
65  * _gtk_css_value_compute:
66  * @value: the value to compute from
67  * @property_id: the ID of the property to compute
68  * @context: the context to use for resolving
69  *
70  * Converts the specified @value into the computed value for the CSS
71  * property given by @property_id using the information in @context.
72  * This step is explained in detail in
73  * <ulink url="http://www.w3.org/TR/css3-cascade/#computed>
74  * the CSS documentation</ulink>.
75  *
76  * Returns: the comptued value
77  **/
78 GtkCssValue *
79 _gtk_css_value_compute (GtkCssValue     *value,
80                         guint            property_id,
81                         GtkStyleContext *context)
82 {
83   g_return_val_if_fail (value != NULL, NULL);
84   g_return_val_if_fail (GTK_IS_STYLE_CONTEXT (context), NULL);
85
86   return value->class->compute (value, property_id, context);
87 }
88
89 gboolean
90 _gtk_css_value_equal (const GtkCssValue *value1,
91                       const GtkCssValue *value2)
92 {
93   g_return_val_if_fail (value1 != NULL, FALSE);
94   g_return_val_if_fail (value2 != NULL, FALSE);
95
96   if (value1->class != value2->class)
97     return FALSE;
98
99   return value1->class->equal (value1, value2);
100 }
101
102 gboolean
103 _gtk_css_value_equal0 (const GtkCssValue *value1,
104                        const GtkCssValue *value2)
105 {
106   if (value1 == NULL && value2 == NULL)
107     return TRUE;
108
109   if (value1 == NULL || value2 == NULL)
110     return FALSE;
111
112   return _gtk_css_value_equal (value1, value2);
113 }
114
115 GtkCssValue *
116 _gtk_css_value_transition (GtkCssValue *start,
117                            GtkCssValue *end,
118                            double       progress)
119 {
120   g_return_val_if_fail (start != NULL, FALSE);
121   g_return_val_if_fail (end != NULL, FALSE);
122
123   if (start->class != end->class)
124     return NULL;
125
126   return start->class->transition (start, end, progress);
127 }
128
129 char *
130 _gtk_css_value_to_string (const GtkCssValue *value)
131 {
132   GString *string;
133
134   g_return_val_if_fail (value != NULL, NULL);
135
136   string = g_string_new (NULL);
137   _gtk_css_value_print (value, string);
138   return g_string_free (string, FALSE);
139 }
140
141 /**
142  * _gtk_css_value_print:
143  * @value: the value to print
144  * @string: the string to print to
145  *
146  * Prints @value to the given @string in CSS format. The @value must be a
147  * valid specified value as parsed using the parse functions or as assigned
148  * via _gtk_style_property_assign().
149  **/
150 void
151 _gtk_css_value_print (const GtkCssValue *value,
152                       GString           *string)
153 {
154   g_return_if_fail (value != NULL);
155   g_return_if_fail (string != NULL);
156
157   value->class->print (value, string);
158 }
159