diff options
author | Benjamin Otte <otte@redhat.com> | 2012-03-29 02:58:32 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-04-17 08:59:14 +0200 |
commit | 8c49cd97a78b8be91a132368e9bb41a2a77a885e (patch) | |
tree | 67c12aa189bee08218267350c05e9d806cdb05b5 /gtk/gtkcssimagevalue.c | |
parent | d63b11e56b0c1a9620d3a7f723baa24b02ff2867 (diff) | |
download | gtk+-8c49cd97a78b8be91a132368e9bb41a2a77a885e.tar.gz |
cssvalue: Add a cssvalue for images
Diffstat (limited to 'gtk/gtkcssimagevalue.c')
-rw-r--r-- | gtk/gtkcssimagevalue.c | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/gtk/gtkcssimagevalue.c b/gtk/gtkcssimagevalue.c new file mode 100644 index 0000000000..f9028ae55a --- /dev/null +++ b/gtk/gtkcssimagevalue.c @@ -0,0 +1,81 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 2011 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 <http://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include "gtkcssimagevalueprivate.h" + +#include "gtkstylepropertyprivate.h" + +struct _GtkCssValue { + GTK_CSS_VALUE_BASE + GtkCssImage *image; +}; + +static void +gtk_css_value_image_free (GtkCssValue *value) +{ + g_object_unref (value->image); + g_slice_free (GtkCssValue, value); +} + +static gboolean +gtk_css_value_image_equal (const GtkCssValue *value1, + const GtkCssValue *value2) +{ + return value1->image == value2->image; +} + +static void +gtk_css_value_image_print (const GtkCssValue *value, + GString *string) +{ + if (value->image) + _gtk_css_image_print (value->image, string); + else + g_string_append (string, "none"); +} + +static const GtkCssValueClass GTK_CSS_VALUE_IMAGE = { + gtk_css_value_image_free, + gtk_css_value_image_equal, + gtk_css_value_image_print +}; + +GtkCssValue * +_gtk_css_image_value_new (GtkCssImage *image) +{ + static GtkCssValue none_singleton = { >K_CSS_VALUE_IMAGE, 1, NULL }; + GtkCssValue *value; + + if (image == NULL) + return _gtk_css_value_ref (&none_singleton); + + value = _gtk_css_value_new (GtkCssValue, >K_CSS_VALUE_IMAGE); + value->image = image; + + return value; +} + +GtkCssImage * +_gtk_css_image_value_get_image (const GtkCssValue *value) +{ + g_return_val_if_fail (value->class == >K_CSS_VALUE_IMAGE, NULL); + + return value->image; +} + |