summaryrefslogtreecommitdiff
path: root/gtk/gtkcssnumbervalue.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2016-02-12 07:59:06 +0100
committerBenjamin Otte <otte@redhat.com>2016-02-13 04:49:08 +0100
commit65dd9da44a0a9d5ee211e36c6a779a682469e106 (patch)
tree949576a8d08be2e9dc5acaea132471729c7dbb2f /gtk/gtkcssnumbervalue.c
parentcd6dc954f2bd173903d805fe3c4810ae25e82490 (diff)
downloadgtk+-65dd9da44a0a9d5ee211e36c6a779a682469e106.tar.gz
css: Add support for sums to calc()
This requires adding code to do math on number values: gtk_css_number_value_multiply() and gtk_css_number_value_try_add() were added to achieve that. Some tests are included.
Diffstat (limited to 'gtk/gtkcssnumbervalue.c')
-rw-r--r--gtk/gtkcssnumbervalue.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/gtk/gtkcssnumbervalue.c b/gtk/gtkcssnumbervalue.c
index 12508db130..b7892c7603 100644
--- a/gtk/gtkcssnumbervalue.c
+++ b/gtk/gtkcssnumbervalue.c
@@ -43,6 +43,42 @@ gtk_css_number_value_has_percent (const GtkCssValue *value)
}
GtkCssValue *
+gtk_css_number_value_multiply (const GtkCssValue *value,
+ double factor)
+{
+ GtkCssNumberValueClass *number_value_class = (GtkCssNumberValueClass *) value->class;
+
+ return number_value_class->multiply (value, factor);
+}
+
+GtkCssValue *
+gtk_css_number_value_add (GtkCssValue *value1,
+ GtkCssValue *value2)
+{
+ GtkCssValue *sum;
+
+ sum = gtk_css_number_value_try_add (value1, value2);
+ if (sum == NULL)
+ sum = gtk_css_calc_value_new_sum (value1, value2);
+
+ return sum;
+}
+
+GtkCssValue *
+gtk_css_number_value_try_add (const GtkCssValue *value1,
+ const GtkCssValue *value2)
+{
+ GtkCssNumberValueClass *number_value_class;
+
+ if (value1->class != value2->class)
+ return NULL;
+
+ number_value_class = (GtkCssNumberValueClass *) value1->class;
+
+ return number_value_class->try_add (value1, value2);
+}
+
+GtkCssValue *
_gtk_css_number_value_new (double value,
GtkCssUnit unit)
{