#include "gtkcssimagevalueprivate.h"
-#include "gtkstylepropertyprivate.h"
+#include "gtkcssimagecrossfadeprivate.h"
struct _GtkCssValue {
GTK_CSS_VALUE_BASE
g_slice_free (GtkCssValue, value);
}
+static GtkCssValue *
+gtk_css_value_image_compute (GtkCssValue *value,
+ guint property_id,
+ GtkStyleProviderPrivate *provider,
+ GtkCssComputedValues *values,
+ GtkCssComputedValues *parent_values,
+ GtkCssDependencies *dependencies)
+{
+ GtkCssImage *image, *computed;
+
+ image = _gtk_css_image_value_get_image (value);
+
+ if (image == NULL)
+ return _gtk_css_value_ref (value);
+
+ computed = _gtk_css_image_compute (image, property_id, provider, values, parent_values, dependencies);
+
+ if (computed == image)
+ {
+ g_object_unref (computed);
+ return _gtk_css_value_ref (value);
+ }
+
+ return _gtk_css_image_value_new (computed);
+}
+
static gboolean
gtk_css_value_image_equal (const GtkCssValue *value1,
const GtkCssValue *value2)
{
- return value1->image == value2->image;
+ return _gtk_css_image_equal (value1->image, value2->image);
}
static GtkCssValue *
gtk_css_value_image_transition (GtkCssValue *start,
GtkCssValue *end,
+ guint property_id,
double progress)
{
- return NULL;
+ GtkCssImage *transition;
+
+ transition = _gtk_css_image_transition (_gtk_css_image_value_get_image (start),
+ _gtk_css_image_value_get_image (end),
+ property_id,
+ progress);
+
+ return _gtk_css_image_value_new (transition);
}
static void
static const GtkCssValueClass GTK_CSS_VALUE_IMAGE = {
gtk_css_value_image_free,
+ gtk_css_value_image_compute,
gtk_css_value_image_equal,
gtk_css_value_image_transition,
gtk_css_value_image_print