]> Pileus Git - ~andy/gtk/blob - gtk/gtkcsstypesprivate.h
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gtk / gtkcsstypesprivate.h
1 /* GTK - The GIMP Toolkit
2  * Copyright (C) 2011 Benjamin Otte <otte@gnome.org>
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 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
18 #ifndef __GTK_CSS_TYPES_PRIVATE_H__
19 #define __GTK_CSS_TYPES_PRIVATE_H__
20
21 #include <glib-object.h>
22 #include <gtk/gtkstylecontext.h>
23
24 G_BEGIN_DECLS
25
26 /* forward declaration for GtkCssValue */
27 typedef struct _GtkCssComputedValues GtkCssComputedValues;
28 typedef struct _GtkStyleProviderPrivate GtkStyleProviderPrivate; /* dummy typedef */
29
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),
50   /* add more */
51   GTK_CSS_CHANGE_SOURCE                   = (1 << 16),
52   GTK_CSS_CHANGE_ANIMATE                  = (1 << 17),
53   GTK_CSS_CHANGE_FORCE_INVALIDATE         = (1 << 18),
54
55   GTK_CSS_CHANGE_RESERVED_BIT             = (1 << 31) /* Used internally in gtkcssselector.c */
56 } GtkCssChange;
57
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)
66
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)
72 } GtkCssDependencies;
73
74 enum { /*< skip >*/
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_OPACITY,
136   GTK_CSS_PROPERTY_ENGINE,
137   GTK_CSS_PROPERTY_GTK_KEY_BINDINGS,
138   /* add more */
139   GTK_CSS_PROPERTY_N_PROPERTIES
140 };
141
142 typedef enum /*< skip >*/ {
143   GTK_CSS_AREA_BORDER_BOX,
144   GTK_CSS_AREA_PADDING_BOX,
145   GTK_CSS_AREA_CONTENT_BOX
146 } GtkCssArea;
147
148 typedef enum /*< skip >*/ {
149   GTK_CSS_DIRECTION_NORMAL,
150   GTK_CSS_DIRECTION_REVERSE,
151   GTK_CSS_DIRECTION_ALTERNATE,
152   GTK_CSS_DIRECTION_ALTERNATE_REVERSE
153 } GtkCssDirection;
154
155 typedef enum /*< skip >*/ {
156   GTK_CSS_PLAY_STATE_RUNNING,
157   GTK_CSS_PLAY_STATE_PAUSED
158 } GtkCssPlayState;
159
160 typedef enum /*< skip >*/ {
161   GTK_CSS_FILL_NONE,
162   GTK_CSS_FILL_FORWARDS,
163   GTK_CSS_FILL_BACKWARDS,
164   GTK_CSS_FILL_BOTH
165 } GtkCssFillMode;
166
167 typedef enum /*< skip >*/ {
168   /* relative font sizes */
169   GTK_CSS_FONT_SIZE_SMALLER,
170   GTK_CSS_FONT_SIZE_LARGER,
171   /* absolute font sizes */
172   GTK_CSS_FONT_SIZE_XX_SMALL,
173   GTK_CSS_FONT_SIZE_X_SMALL,
174   GTK_CSS_FONT_SIZE_SMALL,
175   GTK_CSS_FONT_SIZE_MEDIUM,
176   GTK_CSS_FONT_SIZE_LARGE,
177   GTK_CSS_FONT_SIZE_X_LARGE,
178   GTK_CSS_FONT_SIZE_XX_LARGE
179 } GtkCssFontSize;
180
181 /* for the order in arrays */
182 typedef enum /*< skip >*/ {
183   GTK_CSS_TOP,
184   GTK_CSS_RIGHT,
185   GTK_CSS_BOTTOM,
186   GTK_CSS_LEFT
187 } GtkCssSide;
188
189 typedef enum /*< skip >*/ {
190   GTK_CSS_TOP_LEFT,
191   GTK_CSS_TOP_RIGHT,
192   GTK_CSS_BOTTOM_RIGHT,
193   GTK_CSS_BOTTOM_LEFT
194 } GtkCssCorner;
195
196 typedef enum /*< skip >*/ {
197   /* CSS term: <number> */
198   GTK_CSS_NUMBER,
199   /* CSS term: <percentage> */
200   GTK_CSS_PERCENT,
201   /* CSS term: <length> */
202   GTK_CSS_PX,
203   GTK_CSS_PT,
204   GTK_CSS_EM,
205   GTK_CSS_EX,
206   GTK_CSS_PC,
207   GTK_CSS_IN,
208   GTK_CSS_CM,
209   GTK_CSS_MM,
210   /* CSS term: <angle> */
211   GTK_CSS_RAD,
212   GTK_CSS_DEG,
213   GTK_CSS_GRAD,
214   GTK_CSS_TURN,
215   /* CSS term: <time> */
216   GTK_CSS_S,
217   GTK_CSS_MS,
218 } GtkCssUnit;
219
220 GtkCssChange            _gtk_css_change_for_sibling              (GtkCssChange       match);
221 GtkCssChange            _gtk_css_change_for_child                (GtkCssChange       match);
222 GtkCssDependencies      _gtk_css_dependencies_union              (GtkCssDependencies first,
223                                                                   GtkCssDependencies second);
224
225
226 G_END_DECLS
227
228 #endif /* __GTK_CSS_TYPES_PRIVATE_H__ */