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 typedef union _GtkCssMatcher GtkCssMatcher; 27 typedef struct _GtkCssNode GtkCssNode; 28 typedef struct _GtkCssNodeDeclaration GtkCssNodeDeclaration; 29 typedef struct _GtkCssStyle GtkCssStyle; 30 typedef struct _GtkStyleProviderPrivate GtkStyleProviderPrivate; /* dummy typedef */ 31 32 #define GTK_CSS_CHANGE_CLASS (1ULL << 0) 33 #define GTK_CSS_CHANGE_NAME (1ULL << 1) 34 #define GTK_CSS_CHANGE_ID (1ULL << 2) 35 #define GTK_CSS_CHANGE_FIRST_CHILD (1ULL << 3) 36 #define GTK_CSS_CHANGE_LAST_CHILD (1ULL << 4) 37 #define GTK_CSS_CHANGE_NTH_CHILD (1ULL << 5) 38 #define GTK_CSS_CHANGE_NTH_LAST_CHILD (1ULL << 6) 39 #define GTK_CSS_CHANGE_STATE (1ULL << 7) 40 #define GTK_CSS_CHANGE_SIBLING_CLASS (1ULL << 8) 41 #define GTK_CSS_CHANGE_SIBLING_NAME (1ULL << 9) 42 #define GTK_CSS_CHANGE_SIBLING_ID (1ULL << 10) 43 #define GTK_CSS_CHANGE_SIBLING_FIRST_CHILD (1ULL << 11) 44 #define GTK_CSS_CHANGE_SIBLING_LAST_CHILD (1ULL << 12) 45 #define GTK_CSS_CHANGE_SIBLING_NTH_CHILD (1ULL << 13) 46 #define GTK_CSS_CHANGE_SIBLING_NTH_LAST_CHILD (1ULL << 14) 47 #define GTK_CSS_CHANGE_SIBLING_STATE (1ULL << 15) 48 #define GTK_CSS_CHANGE_PARENT_CLASS (1ULL << 16) 49 #define GTK_CSS_CHANGE_PARENT_NAME (1ULL << 17) 50 #define GTK_CSS_CHANGE_PARENT_ID (1ULL << 18) 51 #define GTK_CSS_CHANGE_PARENT_FIRST_CHILD (1ULL << 19) 52 #define GTK_CSS_CHANGE_PARENT_LAST_CHILD (1ULL << 20) 53 #define GTK_CSS_CHANGE_PARENT_NTH_CHILD (1ULL << 21) 54 #define GTK_CSS_CHANGE_PARENT_NTH_LAST_CHILD (1ULL << 22) 55 #define GTK_CSS_CHANGE_PARENT_STATE (1ULL << 23) 56 #define GTK_CSS_CHANGE_PARENT_SIBLING_CLASS (1ULL << 24) 57 #define GTK_CSS_CHANGE_PARENT_SIBLING_ID (1ULL << 25) 58 #define GTK_CSS_CHANGE_PARENT_SIBLING_NAME (1ULL << 26) 59 #define GTK_CSS_CHANGE_PARENT_SIBLING_FIRST_CHILD (1ULL << 27) 60 #define GTK_CSS_CHANGE_PARENT_SIBLING_LAST_CHILD (1ULL << 28) 61 #define GTK_CSS_CHANGE_PARENT_SIBLING_NTH_CHILD (1ULL << 29) 62 #define GTK_CSS_CHANGE_PARENT_SIBLING_NTH_LAST_CHILD (1ULL << 30) 63 #define GTK_CSS_CHANGE_PARENT_SIBLING_STATE (1ULL << 31) 64 65 /* add more */ 66 #define GTK_CSS_CHANGE_SOURCE (1ULL << 32) 67 #define GTK_CSS_CHANGE_PARENT_STYLE (1ULL << 33) 68 #define GTK_CSS_CHANGE_TIMESTAMP (1ULL << 34) 69 #define GTK_CSS_CHANGE_ANIMATIONS (1ULL << 35) 70 71 #define GTK_CSS_CHANGE_RESERVED_BIT (1ULL << 62) /* Used internally in gtkcssselector.c */ 72 73 typedef guint64 GtkCssChange; 74 75 #define GTK_CSS_CHANGE_POSITION (GTK_CSS_CHANGE_FIRST_CHILD | GTK_CSS_CHANGE_LAST_CHILD | \ 76 GTK_CSS_CHANGE_NTH_CHILD | GTK_CSS_CHANGE_NTH_LAST_CHILD) 77 #define GTK_CSS_CHANGE_SIBLING_POSITION (GTK_CSS_CHANGE_SIBLING_FIRST_CHILD | GTK_CSS_CHANGE_SIBLING_LAST_CHILD | \ 78 GTK_CSS_CHANGE_SIBLING_NTH_CHILD | GTK_CSS_CHANGE_SIBLING_NTH_LAST_CHILD) 79 #define GTK_CSS_CHANGE_PARENT_POSITION (GTK_CSS_CHANGE_PARENT_FIRST_CHILD | GTK_CSS_CHANGE_PARENT_LAST_CHILD | \ 80 GTK_CSS_CHANGE_PARENT_NTH_CHILD | GTK_CSS_CHANGE_PARENT_NTH_LAST_CHILD) 81 #define GTK_CSS_CHANGE_PARENT_SIBLING_POSITION (GTK_CSS_CHANGE_PARENT_SIBLING_FIRST_CHILD | GTK_CSS_CHANGE_PARENT_SIBLING_LAST_CHILD | \ 82 GTK_CSS_CHANGE_PARENT_SIBLING_NTH_CHILD | GTK_CSS_CHANGE_PARENT_SIBLING_NTH_LAST_CHILD) 83 84 85 #define GTK_CSS_CHANGE_ANY ((1 << 19) - 1) 86 #define GTK_CSS_CHANGE_ANY_SELF (GTK_CSS_CHANGE_CLASS | GTK_CSS_CHANGE_NAME | GTK_CSS_CHANGE_ID | GTK_CSS_CHANGE_POSITION | GTK_CSS_CHANGE_STATE) 87 #define GTK_CSS_CHANGE_ANY_SIBLING (GTK_CSS_CHANGE_SIBLING_CLASS | GTK_CSS_CHANGE_SIBLING_NAME | \ 88 GTK_CSS_CHANGE_SIBLING_ID | \ 89 GTK_CSS_CHANGE_SIBLING_POSITION | GTK_CSS_CHANGE_SIBLING_STATE) 90 #define GTK_CSS_CHANGE_ANY_PARENT (GTK_CSS_CHANGE_PARENT_CLASS | GTK_CSS_CHANGE_PARENT_SIBLING_CLASS | \ 91 GTK_CSS_CHANGE_PARENT_NAME | GTK_CSS_CHANGE_PARENT_SIBLING_NAME | \ 92 GTK_CSS_CHANGE_PARENT_ID | GTK_CSS_CHANGE_PARENT_SIBLING_ID | \ 93 GTK_CSS_CHANGE_PARENT_POSITION | GTK_CSS_CHANGE_PARENT_SIBLING_POSITION | \ 94 GTK_CSS_CHANGE_PARENT_STATE | GTK_CSS_CHANGE_PARENT_SIBLING_STATE) 95 96 /* 97 * GtkCssAffects: 98 * @GTK_CSS_AFFECTS_FOREGROUND: The foreground rendering is affected. 99 * This does not include things that affect the font. For those, 100 * see @GTK_CSS_AFFECTS_FONT. 101 * @GTK_CSS_AFFECTS_BACKGROUND: The background rendering is affected. 102 * @GTK_CSS_AFFECTS_BORDER: The border styling is affected. 103 * @GTK_CSS_AFFECTS_PANGO_LAYOUT: Font rendering is affected. 104 * @GTK_CSS_AFFECTS_FONT: The font is affected and should be reloaded 105 * if it was cached. 106 * @GTK_CSS_AFFECTS_TEXT: Text rendering is affected. 107 * @GTK_CSS_AFFECTS_TEXT_ATTRS: Text attributes are affected. 108 * @GTK_CSS_AFFECTS_ICON: Fullcolor icons and their rendering is affected. 109 * @GTK_CSS_AFFECTS_SYMBOLIC_ICON: Symbolic icons and their rendering is affected. 110 * @GTK_CSS_AFFECTS_OUTLINE: The outline styling is affected. Outlines 111 * only affect elements that can be focused. 112 * @GTK_CSS_AFFECTS_CLIP: Changes in this property may have an effect 113 * on the clipping area of the element. Changes in these properties 114 * should cause a reevaluation of the element's clip area. 115 * @GTK_CSS_AFFECTS_SIZE: Changes in this property may have an effect 116 * on the allocated size of the element. Changes in these properties 117 * should cause a recomputation of the element's allocated size. 118 * 119 * The generic effects that a CSS property can have. If a value is 120 * set, then the property will have an influence on that feature. 121 * 122 * Note that multiple values can be set. 123 */ 124 typedef enum { 125 GTK_CSS_AFFECTS_FOREGROUND = (1 << 0), 126 GTK_CSS_AFFECTS_BACKGROUND = (1 << 1), 127 GTK_CSS_AFFECTS_BORDER = (1 << 2), 128 GTK_CSS_AFFECTS_FONT = (1 << 3), 129 GTK_CSS_AFFECTS_TEXT = (1 << 4), 130 GTK_CSS_AFFECTS_TEXT_ATTRS = (1 << 5), 131 GTK_CSS_AFFECTS_ICON = (1 << 6), 132 GTK_CSS_AFFECTS_SYMBOLIC_ICON = (1 << 7), 133 GTK_CSS_AFFECTS_OUTLINE = (1 << 8), 134 GTK_CSS_AFFECTS_CLIP = (1 << 9), 135 GTK_CSS_AFFECTS_SIZE = (1 << 10) 136 } GtkCssAffects; 137 138 #define GTK_CSS_AFFECTS_REDRAW (GTK_CSS_AFFECTS_FOREGROUND | \ 139 GTK_CSS_AFFECTS_BACKGROUND | \ 140 GTK_CSS_AFFECTS_BORDER | \ 141 GTK_CSS_AFFECTS_ICON | \ 142 GTK_CSS_AFFECTS_SYMBOLIC_ICON | \ 143 GTK_CSS_AFFECTS_OUTLINE) 144 145 enum { /*< skip >*/ 146 GTK_CSS_PROPERTY_COLOR, 147 GTK_CSS_PROPERTY_DPI, 148 GTK_CSS_PROPERTY_FONT_SIZE, 149 GTK_CSS_PROPERTY_ICON_THEME, 150 GTK_CSS_PROPERTY_ICON_PALETTE, 151 GTK_CSS_PROPERTY_BACKGROUND_COLOR, 152 GTK_CSS_PROPERTY_FONT_FAMILY, 153 GTK_CSS_PROPERTY_FONT_STYLE, 154 GTK_CSS_PROPERTY_FONT_VARIANT, 155 GTK_CSS_PROPERTY_FONT_WEIGHT, 156 GTK_CSS_PROPERTY_FONT_STRETCH, 157 GTK_CSS_PROPERTY_LETTER_SPACING, 158 GTK_CSS_PROPERTY_TEXT_DECORATION_LINE, 159 GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR, 160 GTK_CSS_PROPERTY_TEXT_DECORATION_STYLE, 161 GTK_CSS_PROPERTY_TEXT_SHADOW, 162 GTK_CSS_PROPERTY_BOX_SHADOW, 163 GTK_CSS_PROPERTY_MARGIN_TOP, 164 GTK_CSS_PROPERTY_MARGIN_LEFT, 165 GTK_CSS_PROPERTY_MARGIN_BOTTOM, 166 GTK_CSS_PROPERTY_MARGIN_RIGHT, 167 GTK_CSS_PROPERTY_PADDING_TOP, 168 GTK_CSS_PROPERTY_PADDING_LEFT, 169 GTK_CSS_PROPERTY_PADDING_BOTTOM, 170 GTK_CSS_PROPERTY_PADDING_RIGHT, 171 GTK_CSS_PROPERTY_BORDER_TOP_STYLE, 172 GTK_CSS_PROPERTY_BORDER_TOP_WIDTH, 173 GTK_CSS_PROPERTY_BORDER_LEFT_STYLE, 174 GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH, 175 GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE, 176 GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH, 177 GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE, 178 GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH, 179 GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS, 180 GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS, 181 GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS, 182 GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS, 183 GTK_CSS_PROPERTY_OUTLINE_STYLE, 184 GTK_CSS_PROPERTY_OUTLINE_WIDTH, 185 GTK_CSS_PROPERTY_OUTLINE_OFFSET, 186 GTK_CSS_PROPERTY_OUTLINE_TOP_LEFT_RADIUS, 187 GTK_CSS_PROPERTY_OUTLINE_TOP_RIGHT_RADIUS, 188 GTK_CSS_PROPERTY_OUTLINE_BOTTOM_RIGHT_RADIUS, 189 GTK_CSS_PROPERTY_OUTLINE_BOTTOM_LEFT_RADIUS, 190 GTK_CSS_PROPERTY_BACKGROUND_CLIP, 191 GTK_CSS_PROPERTY_BACKGROUND_ORIGIN, 192 GTK_CSS_PROPERTY_BACKGROUND_SIZE, 193 GTK_CSS_PROPERTY_BACKGROUND_POSITION, 194 GTK_CSS_PROPERTY_BORDER_TOP_COLOR, 195 GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR, 196 GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR, 197 GTK_CSS_PROPERTY_BORDER_LEFT_COLOR, 198 GTK_CSS_PROPERTY_OUTLINE_COLOR, 199 GTK_CSS_PROPERTY_BACKGROUND_REPEAT, 200 GTK_CSS_PROPERTY_BACKGROUND_IMAGE, 201 GTK_CSS_PROPERTY_BACKGROUND_BLEND_MODE, 202 GTK_CSS_PROPERTY_BORDER_IMAGE_SOURCE, 203 GTK_CSS_PROPERTY_BORDER_IMAGE_REPEAT, 204 GTK_CSS_PROPERTY_BORDER_IMAGE_SLICE, 205 GTK_CSS_PROPERTY_BORDER_IMAGE_WIDTH, 206 GTK_CSS_PROPERTY_ICON_SOURCE, 207 GTK_CSS_PROPERTY_ICON_SHADOW, 208 GTK_CSS_PROPERTY_ICON_STYLE, 209 GTK_CSS_PROPERTY_ICON_TRANSFORM, 210 GTK_CSS_PROPERTY_MIN_WIDTH, 211 GTK_CSS_PROPERTY_MIN_HEIGHT, 212 GTK_CSS_PROPERTY_TRANSITION_PROPERTY, 213 GTK_CSS_PROPERTY_TRANSITION_DURATION, 214 GTK_CSS_PROPERTY_TRANSITION_TIMING_FUNCTION, 215 GTK_CSS_PROPERTY_TRANSITION_DELAY, 216 GTK_CSS_PROPERTY_ANIMATION_NAME, 217 GTK_CSS_PROPERTY_ANIMATION_DURATION, 218 GTK_CSS_PROPERTY_ANIMATION_TIMING_FUNCTION, 219 GTK_CSS_PROPERTY_ANIMATION_ITERATION_COUNT, 220 GTK_CSS_PROPERTY_ANIMATION_DIRECTION, 221 GTK_CSS_PROPERTY_ANIMATION_PLAY_STATE, 222 GTK_CSS_PROPERTY_ANIMATION_DELAY, 223 GTK_CSS_PROPERTY_ANIMATION_FILL_MODE, 224 GTK_CSS_PROPERTY_OPACITY, 225 GTK_CSS_PROPERTY_ICON_EFFECT, 226 GTK_CSS_PROPERTY_ENGINE, 227 GTK_CSS_PROPERTY_GTK_KEY_BINDINGS, 228 GTK_CSS_PROPERTY_CARET_COLOR, 229 GTK_CSS_PROPERTY_SECONDARY_CARET_COLOR, 230 GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS, 231 /* add more */ 232 GTK_CSS_PROPERTY_N_PROPERTIES 233 }; 234 235 typedef enum /*< skip >*/ { 236 GTK_CSS_BLEND_MODE_COLOR, 237 GTK_CSS_BLEND_MODE_COLOR_BURN, 238 GTK_CSS_BLEND_MODE_COLOR_DODGE, 239 GTK_CSS_BLEND_MODE_DARKEN, 240 GTK_CSS_BLEND_MODE_DIFFERENCE, 241 GTK_CSS_BLEND_MODE_EXCLUSION, 242 GTK_CSS_BLEND_MODE_HARD_LIGHT, 243 GTK_CSS_BLEND_MODE_HUE, 244 GTK_CSS_BLEND_MODE_LIGHTEN, 245 GTK_CSS_BLEND_MODE_LUMINOSITY, 246 GTK_CSS_BLEND_MODE_MULTIPLY, 247 GTK_CSS_BLEND_MODE_NORMAL, 248 GTK_CSS_BLEND_MODE_OVERLAY, 249 GTK_CSS_BLEND_MODE_SATURATE, 250 GTK_CSS_BLEND_MODE_SCREEN, 251 GTK_CSS_BLEND_MODE_SOFT_LIGHT 252 } GtkCssBlendMode; 253 254 typedef enum /*< skip >*/ { 255 GTK_CSS_IMAGE_BUILTIN_NONE, 256 GTK_CSS_IMAGE_BUILTIN_CHECK, 257 GTK_CSS_IMAGE_BUILTIN_CHECK_INCONSISTENT, 258 GTK_CSS_IMAGE_BUILTIN_OPTION, 259 GTK_CSS_IMAGE_BUILTIN_OPTION_INCONSISTENT, 260 GTK_CSS_IMAGE_BUILTIN_ARROW_UP, 261 GTK_CSS_IMAGE_BUILTIN_ARROW_DOWN, 262 GTK_CSS_IMAGE_BUILTIN_ARROW_LEFT, 263 GTK_CSS_IMAGE_BUILTIN_ARROW_RIGHT, 264 GTK_CSS_IMAGE_BUILTIN_EXPANDER_HORIZONTAL_LEFT, 265 GTK_CSS_IMAGE_BUILTIN_EXPANDER_VERTICAL_LEFT, 266 GTK_CSS_IMAGE_BUILTIN_EXPANDER_HORIZONTAL_RIGHT, 267 GTK_CSS_IMAGE_BUILTIN_EXPANDER_VERTICAL_RIGHT, 268 GTK_CSS_IMAGE_BUILTIN_EXPANDER_HORIZONTAL_LEFT_EXPANDED, 269 GTK_CSS_IMAGE_BUILTIN_EXPANDER_VERTICAL_LEFT_EXPANDED, 270 GTK_CSS_IMAGE_BUILTIN_EXPANDER_HORIZONTAL_RIGHT_EXPANDED, 271 GTK_CSS_IMAGE_BUILTIN_EXPANDER_VERTICAL_RIGHT_EXPANDED, 272 GTK_CSS_IMAGE_BUILTIN_GRIP_TOPLEFT, 273 GTK_CSS_IMAGE_BUILTIN_GRIP_TOP, 274 GTK_CSS_IMAGE_BUILTIN_GRIP_TOPRIGHT, 275 GTK_CSS_IMAGE_BUILTIN_GRIP_RIGHT, 276 GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT, 277 GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOM, 278 GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMLEFT, 279 GTK_CSS_IMAGE_BUILTIN_GRIP_LEFT, 280 GTK_CSS_IMAGE_BUILTIN_PANE_SEPARATOR, 281 GTK_CSS_IMAGE_BUILTIN_HANDLE, 282 GTK_CSS_IMAGE_BUILTIN_SPINNER 283 } GtkCssImageBuiltinType; 284 285 typedef enum /*< skip >*/ { 286 GTK_CSS_AREA_BORDER_BOX, 287 GTK_CSS_AREA_PADDING_BOX, 288 GTK_CSS_AREA_CONTENT_BOX 289 } GtkCssArea; 290 291 typedef enum /*< skip >*/ { 292 GTK_CSS_DIRECTION_NORMAL, 293 GTK_CSS_DIRECTION_REVERSE, 294 GTK_CSS_DIRECTION_ALTERNATE, 295 GTK_CSS_DIRECTION_ALTERNATE_REVERSE 296 } GtkCssDirection; 297 298 typedef enum /*< skip >*/ { 299 GTK_CSS_PLAY_STATE_RUNNING, 300 GTK_CSS_PLAY_STATE_PAUSED 301 } GtkCssPlayState; 302 303 typedef enum /*< skip >*/ { 304 GTK_CSS_FILL_NONE, 305 GTK_CSS_FILL_FORWARDS, 306 GTK_CSS_FILL_BACKWARDS, 307 GTK_CSS_FILL_BOTH 308 } GtkCssFillMode; 309 310 typedef enum /*< skip >*/ { 311 GTK_CSS_ICON_EFFECT_NONE, 312 GTK_CSS_ICON_EFFECT_HIGHLIGHT, 313 GTK_CSS_ICON_EFFECT_DIM 314 } GtkCssIconEffect; 315 316 typedef enum /*< skip >*/ { 317 GTK_CSS_ICON_STYLE_REQUESTED, 318 GTK_CSS_ICON_STYLE_REGULAR, 319 GTK_CSS_ICON_STYLE_SYMBOLIC 320 } GtkCssIconStyle; 321 322 typedef enum /*< skip >*/ { 323 /* relative font sizes */ 324 GTK_CSS_FONT_SIZE_SMALLER, 325 GTK_CSS_FONT_SIZE_LARGER, 326 /* absolute font sizes */ 327 GTK_CSS_FONT_SIZE_XX_SMALL, 328 GTK_CSS_FONT_SIZE_X_SMALL, 329 GTK_CSS_FONT_SIZE_SMALL, 330 GTK_CSS_FONT_SIZE_MEDIUM, 331 GTK_CSS_FONT_SIZE_LARGE, 332 GTK_CSS_FONT_SIZE_X_LARGE, 333 GTK_CSS_FONT_SIZE_XX_LARGE 334 } GtkCssFontSize; 335 336 typedef enum /*< skip >*/ { 337 GTK_CSS_TEXT_DECORATION_LINE_NONE, 338 GTK_CSS_TEXT_DECORATION_LINE_UNDERLINE, 339 GTK_CSS_TEXT_DECORATION_LINE_LINE_THROUGH 340 } GtkTextDecorationLine; 341 342 typedef enum /*< skip >*/ { 343 GTK_CSS_TEXT_DECORATION_STYLE_SOLID, 344 GTK_CSS_TEXT_DECORATION_STYLE_DOUBLE, 345 GTK_CSS_TEXT_DECORATION_STYLE_WAVY 346 } GtkTextDecorationStyle; 347 348 /* for the order in arrays */ 349 typedef enum /*< skip >*/ { 350 GTK_CSS_TOP, 351 GTK_CSS_RIGHT, 352 GTK_CSS_BOTTOM, 353 GTK_CSS_LEFT 354 } GtkCssSide; 355 356 typedef enum /*< skip >*/ { 357 GTK_CSS_TOP_LEFT, 358 GTK_CSS_TOP_RIGHT, 359 GTK_CSS_BOTTOM_RIGHT, 360 GTK_CSS_BOTTOM_LEFT 361 } GtkCssCorner; 362 363 typedef enum /*< skip >*/ { 364 GTK_CSS_DIMENSION_PERCENTAGE, 365 GTK_CSS_DIMENSION_NUMBER, 366 GTK_CSS_DIMENSION_LENGTH, 367 GTK_CSS_DIMENSION_ANGLE, 368 GTK_CSS_DIMENSION_TIME 369 } GtkCssDimension; 370 371 typedef enum /*< skip >*/ { 372 /* CSS term: <number> */ 373 GTK_CSS_NUMBER, 374 /* CSS term: <percentage> */ 375 GTK_CSS_PERCENT, 376 /* CSS term: <length> */ 377 GTK_CSS_PX, 378 GTK_CSS_PT, 379 GTK_CSS_EM, 380 GTK_CSS_EX, 381 GTK_CSS_REM, 382 GTK_CSS_PC, 383 GTK_CSS_IN, 384 GTK_CSS_CM, 385 GTK_CSS_MM, 386 /* CSS term: <angle> */ 387 GTK_CSS_RAD, 388 GTK_CSS_DEG, 389 GTK_CSS_GRAD, 390 GTK_CSS_TURN, 391 /* CSS term: <time> */ 392 GTK_CSS_S, 393 GTK_CSS_MS, 394 } GtkCssUnit; 395 396 cairo_operator_t _gtk_css_blend_mode_get_operator (GtkCssBlendMode mode); 397 398 GtkCssChange _gtk_css_change_for_sibling (GtkCssChange match); 399 GtkCssChange _gtk_css_change_for_child (GtkCssChange match); 400 401 GtkCssDimension gtk_css_unit_get_dimension (GtkCssUnit unit); 402 403 char * gtk_css_change_to_string (GtkCssChange change); 404 void gtk_css_change_print (GtkCssChange change, 405 GString *string); 406 407 /* for lack of better place to put it */ 408 /* mirror what cairo does */ 409 #define gtk_rgba_is_clear(rgba) ((rgba)->alpha < ((double)0x00ff / (double)0xffff)) 410 411 G_END_DECLS 412 413 #endif /* __GTK_CSS_TYPES_PRIVATE_H__ */ 414