diff --git a/gtk/gtkcssunsetvalue.c b/gtk/gtkcssunsetvalue.c new file mode 100644 index 0000000000..dda5c73a7e --- /dev/null +++ b/gtk/gtkcssunsetvalue.c @@ -0,0 +1,102 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 2014 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#include "config.h" + +#include "gtkcssunsetvalueprivate.h" + +#include "gtkcssinheritvalueprivate.h" +#include "gtkcssinitialvalueprivate.h" +#include "gtkcssstylepropertyprivate.h" + +struct _GtkCssValue { + GTK_CSS_VALUE_BASE +}; + +static void +gtk_css_value_unset_free (GtkCssValue *value) +{ + /* Can only happen if the unique value gets unreffed too often */ + g_assert_not_reached (); +} + +static GtkCssValue * +gtk_css_value_unset_compute (GtkCssValue *value, + guint property_id, + GtkStyleProviderPrivate *provider, + int scale, + GtkCssComputedValues *values, + GtkCssComputedValues *parent_values, + GtkCssDependencies *dependencies) +{ + GtkCssStyleProperty *property; + GtkCssValue *unset_value; + + property = _gtk_css_style_property_lookup_by_id (property_id); + + if (_gtk_css_style_property_is_inherit (property)) + unset_value = _gtk_css_inherit_value_get (); + else + unset_value = _gtk_css_initial_value_get (); + + return _gtk_css_value_compute (unset_value, + property_id, + provider, + scale, + values, + parent_values, + dependencies); +} + +static gboolean +gtk_css_value_unset_equal (const GtkCssValue *value1, + const GtkCssValue *value2) +{ + return TRUE; +} + +static GtkCssValue * +gtk_css_value_unset_transition (GtkCssValue *start, + GtkCssValue *end, + guint property_id, + double progress) +{ + return NULL; +} + +static void +gtk_css_value_unset_print (const GtkCssValue *value, + GString *string) +{ + g_string_append (string, "unset"); +} + +static const GtkCssValueClass GTK_CSS_VALUE_UNSET = { + gtk_css_value_unset_free, + gtk_css_value_unset_compute, + gtk_css_value_unset_equal, + gtk_css_value_unset_transition, + gtk_css_value_unset_print +}; + +static GtkCssValue unset = { >K_CSS_VALUE_UNSET, 1 }; + +GtkCssValue * +_gtk_css_unset_value_new (void) +{ + return _gtk_css_value_ref (&unset); +} diff --git a/gtk/gtkcssunsetvalueprivate.h b/gtk/gtkcssunsetvalueprivate.h new file mode 100644 index 0000000000..830bcbca85 --- /dev/null +++ b/gtk/gtkcssunsetvalueprivate.h @@ -0,0 +1,31 @@ +/* + * Copyright © 2014 Red Hat Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + * Authors: Benjamin Otte + */ + +#ifndef __GTK_CSS_UNSET_VALUE_PRIVATE_H__ +#define __GTK_CSS_UNSET_VALUE_PRIVATE_H__ + +#include "gtkcssvalueprivate.h" + +G_BEGIN_DECLS + +GtkCssValue * _gtk_css_unset_value_new (void); + +G_END_DECLS + +#endif /* __GTK_CSS_UNSET_VALUE_PRIVATE_H__ */