1 /* 2 * Copyright © 2011 Red Hat Inc. 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 16 * 17 * Authors: Benjamin Otte <otte@gnome.org> 18 */ 19 20 #ifndef __GTK_CSS_STYLE_PROPERTY_PRIVATE_H__ 21 #define __GTK_CSS_STYLE_PROPERTY_PRIVATE_H__ 22 23 #include "gtk/gtkstylepropertyprivate.h" 24 25 G_BEGIN_DECLS 26 27 #define GTK_TYPE_CSS_STYLE_PROPERTY (_gtk_css_style_property_get_type ()) 28 #define GTK_CSS_STYLE_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_CAST (obj, GTK_TYPE_CSS_STYLE_PROPERTY, GtkCssStyleProperty)) 29 #define GTK_CSS_STYLE_PROPERTY_CLASS(cls) (G_TYPE_CHECK_CLASS_CAST (cls, GTK_TYPE_CSS_STYLE_PROPERTY, GtkCssStylePropertyClass)) 30 #define GTK_IS_CSS_STYLE_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, GTK_TYPE_CSS_STYLE_PROPERTY)) 31 #define GTK_IS_CSS_STYLE_PROPERTY_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE (obj, GTK_TYPE_CSS_STYLE_PROPERTY)) 32 #define GTK_CSS_STYLE_PROPERTY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CSS_STYLE_PROPERTY, GtkCssStylePropertyClass)) 33 34 typedef struct _GtkCssStyleProperty GtkCssStyleProperty; 35 typedef struct _GtkCssStylePropertyClass GtkCssStylePropertyClass; 36 37 typedef GtkCssValue * (* GtkCssStylePropertyParseFunc) (GtkCssStyleProperty *property, 38 GtkCssParser *parser); 39 typedef void (* GtkCssStylePropertyQueryFunc) (GtkCssStyleProperty *property, 40 const GtkCssValue *cssvalue, 41 GValue *value); 42 typedef GtkCssValue * (* GtkCssStylePropertyAssignFunc) (GtkCssStyleProperty *property, 43 const GValue *value); 44 struct _GtkCssStyleProperty 45 { 46 GtkStyleProperty parent; 47 48 GtkCssValue *initial_value; 49 guint id; 50 GtkCssAffects affects; 51 guint inherit :1; 52 guint animated :1; 53 54 GtkCssStylePropertyParseFunc parse_value; 55 GtkCssStylePropertyQueryFunc query_value; 56 GtkCssStylePropertyAssignFunc assign_value; 57 }; 58 59 struct _GtkCssStylePropertyClass 60 { 61 GtkStylePropertyClass parent_class; 62 63 GPtrArray *style_properties; 64 }; 65 66 GType _gtk_css_style_property_get_type (void) G_GNUC_CONST; 67 68 void _gtk_css_style_property_init_properties (void); 69 70 guint _gtk_css_style_property_get_n_properties(void); 71 GtkCssStyleProperty * _gtk_css_style_property_lookup_by_id (guint id); 72 73 gboolean _gtk_css_style_property_is_inherit (GtkCssStyleProperty *property); 74 gboolean _gtk_css_style_property_is_animated (GtkCssStyleProperty *property); 75 GtkCssAffects _gtk_css_style_property_get_affects (GtkCssStyleProperty *property); 76 gboolean _gtk_css_style_property_affects_size (GtkCssStyleProperty *property); 77 gboolean _gtk_css_style_property_affects_font (GtkCssStyleProperty *property); 78 guint _gtk_css_style_property_get_id (GtkCssStyleProperty *property); 79 GtkCssValue * _gtk_css_style_property_get_initial_value 80 (GtkCssStyleProperty *property); 81 82 void _gtk_css_style_property_print_value (GtkCssStyleProperty *property, 83 GtkCssValue *value, 84 GString *string); 85 86 GtkBitmask * _gtk_css_style_property_get_mask_affecting 87 (GtkCssAffects affects); 88 89 /* XXX - find a better place for these */ 90 GtkCssValue * gtk_css_font_family_value_parse (GtkCssParser *parser); 91 GtkCssValue * gtk_css_font_size_value_parse (GtkCssParser *parser); 92 93 G_END_DECLS 94 95 #endif /* __GTK_CSS_STYLE_PROPERTY_PRIVATE_H__ */ 96