1 /* GTK - The GIMP Toolkit
2 * Copyright (C) 2011 Benjamin Otte <otte@gnome.org>
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 of the License, or (at your option) any later version.
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.
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/>.
18 #ifndef __GTK_CSS_TYPES_PRIVATE_H__
19 #define __GTK_CSS_TYPES_PRIVATE_H__
21 #include <glib-object.h>
22 #include <gtk/gtkstylecontext.h>
26 /* forward declaration for GtkCssValue */
27 typedef struct _GtkCssComputedValues GtkCssComputedValues;
28 typedef struct _GtkStyleProviderPrivate GtkStyleProviderPrivate; /* dummy typedef */
30 typedef enum { /*< skip >*/
31 GTK_CSS_CHANGE_CLASS = (1 << 0),
32 GTK_CSS_CHANGE_NAME = (1 << 1),
33 GTK_CSS_CHANGE_ID = GTK_CSS_CHANGE_NAME,
34 GTK_CSS_CHANGE_REGION = GTK_CSS_CHANGE_NAME,
35 GTK_CSS_CHANGE_POSITION = (1 << 2),
36 GTK_CSS_CHANGE_STATE = (1 << 3),
37 GTK_CSS_CHANGE_SIBLING_CLASS = (1 << 4),
38 GTK_CSS_CHANGE_SIBLING_NAME = (1 << 5),
39 GTK_CSS_CHANGE_SIBLING_POSITION = (1 << 6),
40 GTK_CSS_CHANGE_SIBLING_STATE = (1 << 7),
41 GTK_CSS_CHANGE_PARENT_CLASS = (1 << 8),
42 GTK_CSS_CHANGE_PARENT_NAME = (1 << 9),
43 GTK_CSS_CHANGE_PARENT_REGION = GTK_CSS_CHANGE_PARENT_NAME,
44 GTK_CSS_CHANGE_PARENT_POSITION = (1 << 10),
45 GTK_CSS_CHANGE_PARENT_STATE = (1 << 11),
46 GTK_CSS_CHANGE_PARENT_SIBLING_CLASS = (1 << 12),
47 GTK_CSS_CHANGE_PARENT_SIBLING_NAME = (1 << 13),
48 GTK_CSS_CHANGE_PARENT_SIBLING_POSITION = (1 << 14),
49 GTK_CSS_CHANGE_PARENT_SIBLING_STATE = (1 << 15),
51 GTK_CSS_CHANGE_SOURCE = (1 << 16),
52 GTK_CSS_CHANGE_ANIMATE = (1 << 17),
53 GTK_CSS_CHANGE_FORCE_INVALIDATE = (1 << 18),
55 GTK_CSS_CHANGE_RESERVED_BIT = (1 << 31) /* Used internally in gtkcssselector.c */
58 #define GTK_CSS_CHANGE_ANY ((1 << 19) - 1)
59 #define GTK_CSS_CHANGE_ANY_SELF (GTK_CSS_CHANGE_CLASS | GTK_CSS_CHANGE_NAME | GTK_CSS_CHANGE_POSITION | GTK_CSS_CHANGE_STATE)
60 #define GTK_CSS_CHANGE_ANY_SIBLING (GTK_CSS_CHANGE_SIBLING_CLASS | GTK_CSS_CHANGE_SIBLING_NAME | \
61 GTK_CSS_CHANGE_SIBLING_POSITION | GTK_CSS_CHANGE_SIBLING_STATE)
62 #define GTK_CSS_CHANGE_ANY_PARENT (GTK_CSS_CHANGE_PARENT_CLASS | GTK_CSS_CHANGE_PARENT_SIBLING_CLASS | \
63 GTK_CSS_CHANGE_PARENT_NAME | GTK_CSS_CHANGE_PARENT_SIBLING_NAME | \
64 GTK_CSS_CHANGE_PARENT_POSITION | GTK_CSS_CHANGE_PARENT_SIBLING_POSITION | \
65 GTK_CSS_CHANGE_PARENT_STATE | GTK_CSS_CHANGE_PARENT_SIBLING_STATE)
67 typedef enum /*< skip >*/ {
68 GTK_CSS_DEPENDS_ON_PARENT = (1 << 0),
69 GTK_CSS_EQUALS_PARENT = (1 << 1),
70 GTK_CSS_DEPENDS_ON_COLOR = (1 << 2),
71 GTK_CSS_DEPENDS_ON_FONT_SIZE = (1 << 3)
75 GTK_CSS_PROPERTY_COLOR,
76 GTK_CSS_PROPERTY_FONT_SIZE,
77 GTK_CSS_PROPERTY_BACKGROUND_COLOR,
78 GTK_CSS_PROPERTY_FONT_FAMILY,
79 GTK_CSS_PROPERTY_FONT_STYLE,
80 GTK_CSS_PROPERTY_FONT_VARIANT,
81 GTK_CSS_PROPERTY_FONT_WEIGHT,
82 GTK_CSS_PROPERTY_TEXT_SHADOW,
83 GTK_CSS_PROPERTY_ICON_SHADOW,
84 GTK_CSS_PROPERTY_BOX_SHADOW,
85 GTK_CSS_PROPERTY_MARGIN_TOP,
86 GTK_CSS_PROPERTY_MARGIN_LEFT,
87 GTK_CSS_PROPERTY_MARGIN_BOTTOM,
88 GTK_CSS_PROPERTY_MARGIN_RIGHT,
89 GTK_CSS_PROPERTY_PADDING_TOP,
90 GTK_CSS_PROPERTY_PADDING_LEFT,
91 GTK_CSS_PROPERTY_PADDING_BOTTOM,
92 GTK_CSS_PROPERTY_PADDING_RIGHT,
93 GTK_CSS_PROPERTY_BORDER_TOP_STYLE,
94 GTK_CSS_PROPERTY_BORDER_TOP_WIDTH,
95 GTK_CSS_PROPERTY_BORDER_LEFT_STYLE,
96 GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH,
97 GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE,
98 GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH,
99 GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE,
100 GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH,
101 GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS,
102 GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS,
103 GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS,
104 GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS,
105 GTK_CSS_PROPERTY_OUTLINE_STYLE,
106 GTK_CSS_PROPERTY_OUTLINE_WIDTH,
107 GTK_CSS_PROPERTY_OUTLINE_OFFSET,
108 GTK_CSS_PROPERTY_BACKGROUND_CLIP,
109 GTK_CSS_PROPERTY_BACKGROUND_ORIGIN,
110 GTK_CSS_PROPERTY_BACKGROUND_SIZE,
111 GTK_CSS_PROPERTY_BACKGROUND_POSITION,
112 GTK_CSS_PROPERTY_BORDER_TOP_COLOR,
113 GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR,
114 GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR,
115 GTK_CSS_PROPERTY_BORDER_LEFT_COLOR,
116 GTK_CSS_PROPERTY_OUTLINE_COLOR,
117 GTK_CSS_PROPERTY_BACKGROUND_REPEAT,
118 GTK_CSS_PROPERTY_BACKGROUND_IMAGE,
119 GTK_CSS_PROPERTY_BORDER_IMAGE_SOURCE,
120 GTK_CSS_PROPERTY_BORDER_IMAGE_REPEAT,
121 GTK_CSS_PROPERTY_BORDER_IMAGE_SLICE,
122 GTK_CSS_PROPERTY_BORDER_IMAGE_WIDTH,
123 GTK_CSS_PROPERTY_TRANSITION_PROPERTY,
124 GTK_CSS_PROPERTY_TRANSITION_DURATION,
125 GTK_CSS_PROPERTY_TRANSITION_TIMING_FUNCTION,
126 GTK_CSS_PROPERTY_TRANSITION_DELAY,
127 GTK_CSS_PROPERTY_ANIMATION_NAME,
128 GTK_CSS_PROPERTY_ANIMATION_DURATION,
129 GTK_CSS_PROPERTY_ANIMATION_TIMING_FUNCTION,
130 GTK_CSS_PROPERTY_ANIMATION_ITERATION_COUNT,
131 GTK_CSS_PROPERTY_ANIMATION_DIRECTION,
132 GTK_CSS_PROPERTY_ANIMATION_PLAY_STATE,
133 GTK_CSS_PROPERTY_ANIMATION_DELAY,
134 GTK_CSS_PROPERTY_ANIMATION_FILL_MODE,
135 GTK_CSS_PROPERTY_ENGINE,
136 GTK_CSS_PROPERTY_GTK_KEY_BINDINGS,
138 GTK_CSS_PROPERTY_N_PROPERTIES
141 typedef enum /*< skip >*/ {
142 GTK_CSS_AREA_BORDER_BOX,
143 GTK_CSS_AREA_PADDING_BOX,
144 GTK_CSS_AREA_CONTENT_BOX
147 typedef enum /*< skip >*/ {
148 GTK_CSS_DIRECTION_NORMAL,
149 GTK_CSS_DIRECTION_REVERSE,
150 GTK_CSS_DIRECTION_ALTERNATE,
151 GTK_CSS_DIRECTION_ALTERNATE_REVERSE
154 typedef enum /*< skip >*/ {
155 GTK_CSS_PLAY_STATE_RUNNING,
156 GTK_CSS_PLAY_STATE_PAUSED
159 typedef enum /*< skip >*/ {
161 GTK_CSS_FILL_FORWARDS,
162 GTK_CSS_FILL_BACKWARDS,
166 typedef enum /*< skip >*/ {
167 /* relative font sizes */
168 GTK_CSS_FONT_SIZE_SMALLER,
169 GTK_CSS_FONT_SIZE_LARGER,
170 /* absolute font sizes */
171 GTK_CSS_FONT_SIZE_XX_SMALL,
172 GTK_CSS_FONT_SIZE_X_SMALL,
173 GTK_CSS_FONT_SIZE_SMALL,
174 GTK_CSS_FONT_SIZE_MEDIUM,
175 GTK_CSS_FONT_SIZE_LARGE,
176 GTK_CSS_FONT_SIZE_X_LARGE,
177 GTK_CSS_FONT_SIZE_XX_LARGE
180 /* for the order in arrays */
181 typedef enum /*< skip >*/ {
188 typedef enum /*< skip >*/ {
191 GTK_CSS_BOTTOM_RIGHT,
195 typedef enum /*< skip >*/ {
196 /* CSS term: <number> */
198 /* CSS term: <percentage> */
200 /* CSS term: <length> */
209 /* CSS term: <angle> */
214 /* CSS term: <time> */
219 GtkCssChange _gtk_css_change_for_sibling (GtkCssChange match);
220 GtkCssChange _gtk_css_change_for_child (GtkCssChange match);
221 GtkCssDependencies _gtk_css_dependencies_union (GtkCssDependencies first,
222 GtkCssDependencies second);
227 #endif /* __GTK_CSS_TYPES_PRIVATE_H__ */