diff options
author | Benjamin Otte <otte@redhat.com> | 2012-03-30 17:47:26 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-04-17 08:59:15 +0200 |
commit | 1a9dfab825eb18ee101b579743a47ebb55e06a35 (patch) | |
tree | f20cbc616f04045ec1f4c89eab598760f704929b /gtk/gtkcssnumbervalue.c | |
parent | bf92f2f7ac5ac55b7ae4b59d8cd3a449d9ab5b20 (diff) | |
download | gtk+-1a9dfab825eb18ee101b579743a47ebb55e06a35.tar.gz |
cssvalue: Add _gtk_css_value_transition()
Returns a value that transitions between start and end or %NULL if the
values cannot be transitioned.
So far, all implementations but numbers and rgba return NULL.
Diffstat (limited to 'gtk/gtkcssnumbervalue.c')
-rw-r--r-- | gtk/gtkcssnumbervalue.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gtk/gtkcssnumbervalue.c b/gtk/gtkcssnumbervalue.c index 19e4c1d198..106fd76378 100644 --- a/gtk/gtkcssnumbervalue.c +++ b/gtk/gtkcssnumbervalue.c @@ -41,6 +41,20 @@ gtk_css_value_number_equal (const GtkCssValue *number1, number1->value == number2->value; } +static GtkCssValue * +gtk_css_value_number_transition (GtkCssValue *start, + GtkCssValue *end, + double progress) +{ + /* FIXME: This needs to be supported at least for percentages, + * but for that we kinda need to support calc(5px + 50%) */ + if (start->unit != end->unit) + return NULL; + + return _gtk_css_number_value_new (start->value + (end->value - start->value) * progress, + start->unit); +} + static void gtk_css_value_number_print (const GtkCssValue *number, GString *string) @@ -73,6 +87,7 @@ gtk_css_value_number_print (const GtkCssValue *number, static const GtkCssValueClass GTK_CSS_VALUE_NUMBER = { gtk_css_value_number_free, gtk_css_value_number_equal, + gtk_css_value_number_transition, gtk_css_value_number_print }; |