gtk_css_value_array_compute,
gtk_css_value_array_equal,
gtk_css_value_array_transition,
+ NULL,
+ NULL,
gtk_css_value_array_print
};
gtk_css_value_bg_size_compute,
gtk_css_value_bg_size_equal,
gtk_css_value_bg_size_transition,
+ NULL,
+ NULL,
gtk_css_value_bg_size_print
};
gtk_css_value_border_compute,
gtk_css_value_border_equal,
gtk_css_value_border_transition,
+ NULL,
+ NULL,
gtk_css_value_border_print
};
gtk_css_value_calc_compute,
gtk_css_value_calc_equal,
gtk_css_number_value_transition,
+ NULL,
+ NULL,
gtk_css_value_calc_print
},
gtk_css_value_calc_get,
gtk_css_value_color_compute,
gtk_css_value_color_equal,
gtk_css_value_color_transition,
+ NULL,
+ NULL,
gtk_css_value_color_print
};
gtk_css_value_corner_compute,
gtk_css_value_corner_equal,
gtk_css_value_corner_transition,
+ NULL,
+ NULL,
gtk_css_value_corner_print
};
gtk_css_value_dimension_compute,
gtk_css_value_dimension_equal,
gtk_css_number_value_transition,
+ NULL,
+ NULL,
gtk_css_value_dimension_print
},
gtk_css_value_dimension_get,
gtk_css_value_ease_compute,
gtk_css_value_ease_equal,
gtk_css_value_ease_transition,
+ NULL,
+ NULL,
gtk_css_value_ease_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_font_size_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_font_weight_compute,
gtk_css_value_enum_equal,
gtk_css_value_font_weight_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_enum_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_value_enum_print
};
gtk_css_value_enum_compute,
gtk_css_value_flags_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_font_variant_ligature_value_print
};
gtk_css_value_enum_compute,
gtk_css_value_flags_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_font_variant_numeric_value_print
};
gtk_css_value_enum_compute,
gtk_css_value_flags_equal,
gtk_css_value_enum_transition,
+ NULL,
+ NULL,
gtk_css_font_variant_east_asian_value_print
};
gtk_css_value_filter_compute,
gtk_css_value_filter_equal,
gtk_css_value_filter_transition,
+ NULL,
+ NULL,
gtk_css_value_filter_print
};
gtk_css_value_font_features_compute,
gtk_css_value_font_features_equal,
gtk_css_value_font_features_transition,
+ NULL,
+ NULL,
gtk_css_value_font_features_print
};
gtk_css_value_font_variations_compute,
gtk_css_value_font_variations_equal,
gtk_css_value_font_variations_transition,
+ NULL,
+ NULL,
gtk_css_value_font_variations_print
};
gtk_css_value_icon_theme_compute,
gtk_css_value_icon_theme_equal,
gtk_css_value_icon_theme_transition,
+ NULL,
+ NULL,
gtk_css_value_icon_theme_print
};
gtk_css_value_image_compute,
gtk_css_value_image_equal,
gtk_css_value_image_transition,
+ NULL,
+ NULL,
gtk_css_value_image_print
};
gtk_css_value_inherit_compute,
gtk_css_value_inherit_equal,
gtk_css_value_inherit_transition,
+ NULL,
+ NULL,
gtk_css_value_inherit_print
};
gtk_css_value_initial_compute,
gtk_css_value_initial_equal,
gtk_css_value_initial_transition,
+ NULL,
+ NULL,
gtk_css_value_initial_print
};
gtk_css_value_palette_compute,
gtk_css_value_palette_equal,
gtk_css_value_palette_transition,
+ NULL,
+ NULL,
gtk_css_value_palette_print
};
gtk_css_value_position_compute,
gtk_css_value_position_equal,
gtk_css_value_position_transition,
+ NULL,
+ NULL,
gtk_css_value_position_print
};
gtk_css_value_repeat_compute,
gtk_css_value_repeat_equal,
gtk_css_value_repeat_transition,
+ NULL,
+ NULL,
gtk_css_value_background_repeat_print
};
gtk_css_value_repeat_compute,
gtk_css_value_repeat_equal,
gtk_css_value_repeat_transition,
+ NULL,
+ NULL,
gtk_css_value_border_repeat_print
};
/* BACKGROUND REPEAT */
gtk_css_value_rgba_compute,
gtk_css_value_rgba_equal,
gtk_css_value_rgba_transition,
+ NULL,
+ NULL,
gtk_css_value_rgba_print
};
gtk_css_value_shadows_compute,
gtk_css_value_shadows_equal,
gtk_css_value_shadows_transition,
+ NULL,
+ NULL,
gtk_css_value_shadows_print
};
gtk_css_value_shadow_compute,
gtk_css_value_shadow_equal,
gtk_css_value_shadow_transition,
+ NULL,
+ NULL,
gtk_css_value_shadow_print
};
gtk_css_value_string_compute,
gtk_css_value_string_equal,
gtk_css_value_string_transition,
+ NULL,
+ NULL,
gtk_css_value_string_print
};
gtk_css_value_string_compute,
gtk_css_value_string_equal,
gtk_css_value_string_transition,
+ NULL,
+ NULL,
gtk_css_value_ident_print
};
gtk_css_value_transform_compute,
gtk_css_value_transform_equal,
gtk_css_value_transform_transition,
+ NULL,
+ NULL,
gtk_css_value_transform_print
};
gtk_css_value_unset_compute,
gtk_css_value_unset_equal,
gtk_css_value_unset_transition,
+ NULL,
+ NULL,
gtk_css_value_unset_print
};
}
GtkCssValue *
-_gtk_css_value_ref (GtkCssValue *value)
+gtk_css_value_ref (GtkCssValue *value)
{
gtk_internal_return_val_if_fail (value != NULL, NULL);
}
void
-_gtk_css_value_unref (GtkCssValue *value)
+gtk_css_value_unref (GtkCssValue *value)
{
if (value == NULL)
return;
value->class->print (value, string);
}
+/**
+ * gtk_css_value_is_dynamic:
+ * @value: a #GtkCssValue
+ *
+ * A "dynamic" value has a different value at different times. This means that
+ * the value needs to be animated when time is progressing.
+ *
+ * Examples of dynamic values are animated images, such as videos or dynamic shaders.
+ *
+ * Use gtk_css_value_get_dynamic_value() to get the value for a given timestamp.
+ *
+ * Returns %TRUE if the value is dynamic
+ */
+gboolean
+gtk_css_value_is_dynamic (GtkCssValue *value)
+{
+ gtk_internal_return_val_if_fail (value != NULL, FALSE);
+
+ if (!value->class->is_dynamic)
+ return FALSE;
+
+ return value->class->is_dynamic (value);
+}
+
+/**
+ * gtk_css_value_get_dynamic_value:
+ * @value: a #GtkCssValue
+ * @monotonic_time: the timestamp for which to get the dynamic value
+ *
+ * Gets the dynamic value for a given timestamp. If @monotonic_time is 0,
+ * the default value is returned.
+ *
+ * See gtk_css_value_is_dynamic() for details about dynamic values.
+ *
+ * Returns: (transfer full): The dynamic value for @value at the given
+ * timestamp
+ **/
+GtkCssValue *
+gtk_css_value_get_dynamic_value (GtkCssValue *value,
+ gint64 monotonic_time)
+{
+ gtk_internal_return_val_if_fail (value != NULL, NULL);
+
+ if (!value->class->get_dynamic_value)
+ return gtk_css_value_ref (value);
+
+ return value->class->get_dynamic_value (value, monotonic_time);
+}
GtkCssValue *end,
guint property_id,
double progress);
+ gboolean (* is_dynamic) (GtkCssValue *value);
+ GtkCssValue * (* get_dynamic_value) (GtkCssValue *value,
+ gint64 monotonic_time);
void (* print) (const GtkCssValue *value,
GString *string);
};
gsize size);
#define _gtk_css_value_new(_name, _klass) ((_name *) _gtk_css_value_alloc ((_klass), sizeof (_name)))
-GtkCssValue *_gtk_css_value_ref (GtkCssValue *value);
-void _gtk_css_value_unref (GtkCssValue *value);
+#define _gtk_css_value_ref gtk_css_value_ref
+GtkCssValue * gtk_css_value_ref (GtkCssValue *value);
+#define _gtk_css_value_unref gtk_css_value_unref
+void gtk_css_value_unref (GtkCssValue *value);
GtkCssValue *_gtk_css_value_compute (GtkCssValue *value,
guint property_id,
GtkCssValue *end,
guint property_id,
double progress);
+gboolean gtk_css_value_is_dynamic (GtkCssValue *value);
+GtkCssValue * gtk_css_value_get_dynamic_value (GtkCssValue *value,
+ gint64 monotonic_time);
char * _gtk_css_value_to_string (const GtkCssValue *value);
void _gtk_css_value_print (const GtkCssValue *value,
gtk_css_value_win32_size_compute,
gtk_css_value_win32_size_equal,
gtk_css_number_value_transition,
+ NULL,
+ NULL,
gtk_css_value_win32_size_print
},
gtk_css_value_win32_size_get,