GtkCssValue **values; /* 2D array: n_keyframes * n_properties of (value or NULL) for all the keyframes */
};
+#define KEYFRAMES_VALUE(keyframes, k, p) ((keyframes)->values[(k) * (keyframes)->n_properties + (p)])
+
GtkCssKeyframes *
_gtk_css_keyframes_ref (GtkCssKeyframes *keyframes)
{
void
_gtk_css_keyframes_unref (GtkCssKeyframes *keyframes)
{
+ guint k, p;
+
g_return_if_fail (keyframes != NULL);
keyframes->ref_count--;
g_free (keyframes->keyframe_progress);
g_free (keyframes->property_ids);
+
+ for (k = 0; k < keyframes->n_keyframes; k++)
+ {
+ for (p = 0; p < keyframes->n_properties; p++)
+ {
+ _gtk_css_value_unref (KEYFRAMES_VALUE (keyframes, k, p));
+ KEYFRAMES_VALUE (keyframes, k, p) = NULL;
+ }
+ }
g_free (keyframes->values);
g_slice_free (GtkCssKeyframes, keyframes);
}
-#define KEYFRAMES_VALUE(keyframes, k, p) ((keyframes)->values[(k) * (keyframes)->n_properties + (p)])
-
static guint
gtk_css_keyframes_add_keyframe (GtkCssKeyframes *keyframes,
double progress)
}
GtkCssKeyframes *
-_gtk_css_keyframes_compute (GtkCssKeyframes *keyframes,
- GtkStyleContext *context)
+_gtk_css_keyframes_compute (GtkCssKeyframes *keyframes,
+ GtkStyleProviderPrivate *provider,
+ GtkCssComputedValues *values,
+ GtkCssComputedValues *parent_values)
{
GtkCssKeyframes *resolved;
guint k, p;
g_return_val_if_fail (keyframes != NULL, NULL);
- g_return_val_if_fail (GTK_IS_STYLE_CONTEXT (context), NULL);
+ g_return_val_if_fail (GTK_IS_STYLE_PROVIDER_PRIVATE (provider), NULL);
+ g_return_val_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values), NULL);
+ g_return_val_if_fail (parent_values == NULL || GTK_IS_CSS_COMPUTED_VALUES (parent_values), NULL);
resolved = gtk_css_keyframes_new ();
resolved->n_keyframes = keyframes->n_keyframes;
KEYFRAMES_VALUE (resolved, k, p) = _gtk_css_value_compute (KEYFRAMES_VALUE (keyframes, k, p),
resolved->property_ids[p],
- context,
+ provider,
+ values,
+ parent_values,
NULL);
}
}