/* GTK - The GIMP Toolkit * Copyright (C) 2011 Benjamin Otte * * 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 . */ #ifndef __GTK_CSS_TYPES_PRIVATE_H__ #define __GTK_CSS_TYPES_PRIVATE_H__ #include #include G_BEGIN_DECLS typedef union _GtkCssMatcher GtkCssMatcher; typedef struct _GtkCssNode GtkCssNode; typedef struct _GtkCssNodeDeclaration GtkCssNodeDeclaration; typedef struct _GtkCssStyle GtkCssStyle; typedef struct _GtkStyleProviderPrivate GtkStyleProviderPrivate; /* dummy typedef */ typedef enum { /*< skip >*/ GTK_CSS_CHANGE_CLASS = (1ULL << 0), GTK_CSS_CHANGE_NAME = (1ULL << 1), GTK_CSS_CHANGE_ID = GTK_CSS_CHANGE_NAME, GTK_CSS_CHANGE_REGION = GTK_CSS_CHANGE_NAME, GTK_CSS_CHANGE_FIRST_CHILD = (1ULL << 2), GTK_CSS_CHANGE_LAST_CHILD = (1ULL << 3), GTK_CSS_CHANGE_NTH_CHILD = (1ULL << 4), GTK_CSS_CHANGE_NTH_LAST_CHILD = (1ULL << 5), GTK_CSS_CHANGE_STATE = (1ULL << 6), GTK_CSS_CHANGE_SIBLING_CLASS = (1ULL << 7), GTK_CSS_CHANGE_SIBLING_NAME = (1ULL << 8), GTK_CSS_CHANGE_SIBLING_FIRST_CHILD = (1ULL << 9), GTK_CSS_CHANGE_SIBLING_LAST_CHILD = (1ULL << 10), GTK_CSS_CHANGE_SIBLING_NTH_CHILD = (1ULL << 11), GTK_CSS_CHANGE_SIBLING_NTH_LAST_CHILD = (1ULL << 12), GTK_CSS_CHANGE_SIBLING_STATE = (1ULL << 13), GTK_CSS_CHANGE_PARENT_CLASS = (1ULL << 14), GTK_CSS_CHANGE_PARENT_NAME = (1ULL << 15), GTK_CSS_CHANGE_PARENT_REGION = GTK_CSS_CHANGE_PARENT_NAME, GTK_CSS_CHANGE_PARENT_POSITION = (1ULL << 16), GTK_CSS_CHANGE_PARENT_FIRST_CHILD = (1ULL << 17), GTK_CSS_CHANGE_PARENT_LAST_CHILD = (1ULL << 18), GTK_CSS_CHANGE_PARENT_NTH_CHILD = (1ULL << 19), GTK_CSS_CHANGE_PARENT_NTH_LAST_CHILD = (1ULL << 20), GTK_CSS_CHANGE_PARENT_STATE = (1ULL << 21), GTK_CSS_CHANGE_PARENT_SIBLING_CLASS = (1ULL << 22), GTK_CSS_CHANGE_PARENT_SIBLING_NAME = (1ULL << 23), GTK_CSS_CHANGE_PARENT_SIBLING_FIRST_CHILD = (1ULL << 24), GTK_CSS_CHANGE_PARENT_SIBLING_LAST_CHILD = (1ULL << 25), GTK_CSS_CHANGE_PARENT_SIBLING_NTH_CHILD = (1ULL << 26), GTK_CSS_CHANGE_PARENT_SIBLING_NTH_LAST_CHILD = (1ULL << 27), GTK_CSS_CHANGE_PARENT_SIBLING_POSITION = (1ULL << 28), GTK_CSS_CHANGE_PARENT_SIBLING_STATE = (1ULL << 29), /* add more */ GTK_CSS_CHANGE_SOURCE = (1ULL << 30), GTK_CSS_CHANGE_PARENT_STYLE = (1ULL << 31), GTK_CSS_CHANGE_TIMESTAMP = (1ULL << 32), GTK_CSS_CHANGE_ANIMATIONS = (1ULL << 33), GTK_CSS_CHANGE_RESERVED_BIT = (1ULL << 62) /* Used internally in gtkcssselector.c */ } GtkCssChange; /* if this complains we need to use defines instead of an enum */ G_STATIC_ASSERT(sizeof (GtkCssChange) >= 8); #define GTK_CSS_CHANGE_POSITION (GTK_CSS_CHANGE_FIRST_CHILD | GTK_CSS_CHANGE_LAST_CHILD | \ GTK_CSS_CHANGE_NTH_CHILD | GTK_CSS_CHANGE_NTH_LAST_CHILD) #define GTK_CSS_CHANGE_SIBLING_POSITION (GTK_CSS_CHANGE_SIBLING_FIRST_CHILD | GTK_CSS_CHANGE_SIBLING_LAST_CHILD | \ GTK_CSS_CHANGE_SIBLING_NTH_CHILD | GTK_CSS_CHANGE_SIBLING_NTH_LAST_CHILD) #define GTK_CSS_CHANGE_PARENT_POSITION (GTK_CSS_CHANGE_PARENT_FIRST_CHILD | GTK_CSS_CHANGE_PARENT_LAST_CHILD | \ GTK_CSS_CHANGE_PARENT_NTH_CHILD | GTK_CSS_CHANGE_PARENT_NTH_LAST_CHILD) #define GTK_CSS_CHANGE_PARENT_SIBLING_POSITION (GTK_CSS_CHANGE_PARENT_SIBLING_FIRST_CHILD | GTK_CSS_CHANGE_PARENT_SIBLING_LAST_CHILD | \ GTK_CSS_CHANGE_PARENT_SIBLING_NTH_CHILD | GTK_CSS_CHANGE_PARENT_SIBLING_NTH_LAST_CHILD) #define GTK_CSS_CHANGE_ANY ((1 << 19) - 1) #define GTK_CSS_CHANGE_ANY_SELF (GTK_CSS_CHANGE_CLASS | GTK_CSS_CHANGE_NAME | GTK_CSS_CHANGE_POSITION | GTK_CSS_CHANGE_STATE) #define GTK_CSS_CHANGE_ANY_SIBLING (GTK_CSS_CHANGE_SIBLING_CLASS | GTK_CSS_CHANGE_SIBLING_NAME | \ GTK_CSS_CHANGE_SIBLING_POSITION | GTK_CSS_CHANGE_SIBLING_STATE) #define GTK_CSS_CHANGE_ANY_PARENT (GTK_CSS_CHANGE_PARENT_CLASS | GTK_CSS_CHANGE_PARENT_SIBLING_CLASS | \ GTK_CSS_CHANGE_PARENT_NAME | GTK_CSS_CHANGE_PARENT_SIBLING_NAME | \ GTK_CSS_CHANGE_PARENT_POSITION | GTK_CSS_CHANGE_PARENT_SIBLING_POSITION | \ GTK_CSS_CHANGE_PARENT_STATE | GTK_CSS_CHANGE_PARENT_SIBLING_STATE) /* * GtkCssAffects: * @GTK_CSS_AFFECTS_FOREGROUND: The foreground rendering is affected. * This does not include things that affect the font. For those, * see @GTK_CSS_AFFECTS_FONT. * @GTK_CSS_AFFECTS_BACKGROUND: The background rendering is affected. * @GTK_CSS_AFFECTS_BORDER: The border styling is affected. * @GTK_CSS_AFFECTS_PANGO_LAYOUT: Font rendering is affected. * @GTK_CSS_AFFECTS_FONT: The font is affected and should be reloaded * if it was cached. * @GTK_CSS_AFFECTS_TEXT: Text rendering is affected. * @GTK_CSS_AFFECTS_TEXT_ATTRS: Text attributes are affected. * @GTK_CSS_AFFECTS_ICON: Icons and icon rendering is affected. * @GTK_CSS_AFFECTS_OUTLINE: The outline styling is affected. Outlines * only affect elements that can be focused. * @GTK_CSS_AFFECTS_CLIP: Changes in this property may have an effect * on the clipping area of the element. Changes in these properties * should cause a reevaluation of the element's clip area. * @GTK_CSS_AFFECTS_SIZE: Changes in this property may have an effect * on the allocated size of the element. Changes in these properties * should cause a recomputation of the element's allocated size. * * The generic effects that a CSS property can have. If a value is * set, then the property will have an influence on that feature. * * Note that multiple values can be set. */ typedef enum { GTK_CSS_AFFECTS_FOREGROUND = (1 << 0), GTK_CSS_AFFECTS_BACKGROUND = (1 << 1), GTK_CSS_AFFECTS_BORDER = (1 << 2), GTK_CSS_AFFECTS_FONT = (1 << 3), GTK_CSS_AFFECTS_TEXT = (1 << 4), GTK_CSS_AFFECTS_TEXT_ATTRS = (1 << 5), GTK_CSS_AFFECTS_ICON = (1 << 6), GTK_CSS_AFFECTS_OUTLINE = (1 << 7), GTK_CSS_AFFECTS_CLIP = (1 << 8), GTK_CSS_AFFECTS_SIZE = (1 << 9) } GtkCssAffects; #define GTK_CSS_AFFECTS_REDRAW (GTK_CSS_AFFECTS_FOREGROUND | \ GTK_CSS_AFFECTS_BACKGROUND | \ GTK_CSS_AFFECTS_BORDER | \ GTK_CSS_AFFECTS_FONT | \ GTK_CSS_AFFECTS_TEXT | \ GTK_CSS_AFFECTS_TEXT_ATTRS | \ GTK_CSS_AFFECTS_ICON | \ GTK_CSS_AFFECTS_OUTLINE) enum { /*< skip >*/ GTK_CSS_PROPERTY_COLOR, GTK_CSS_PROPERTY_DPI, GTK_CSS_PROPERTY_FONT_SIZE, GTK_CSS_PROPERTY_ICON_THEME, GTK_CSS_PROPERTY_BACKGROUND_COLOR, GTK_CSS_PROPERTY_FONT_FAMILY, GTK_CSS_PROPERTY_FONT_STYLE, GTK_CSS_PROPERTY_FONT_VARIANT, GTK_CSS_PROPERTY_FONT_WEIGHT, GTK_CSS_PROPERTY_FONT_STRETCH, GTK_CSS_PROPERTY_LETTER_SPACING, GTK_CSS_PROPERTY_TEXT_DECORATION_LINE, GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR, GTK_CSS_PROPERTY_TEXT_DECORATION_STYLE, GTK_CSS_PROPERTY_TEXT_SHADOW, GTK_CSS_PROPERTY_BOX_SHADOW, GTK_CSS_PROPERTY_MARGIN_TOP, GTK_CSS_PROPERTY_MARGIN_LEFT, GTK_CSS_PROPERTY_MARGIN_BOTTOM, GTK_CSS_PROPERTY_MARGIN_RIGHT, GTK_CSS_PROPERTY_PADDING_TOP, GTK_CSS_PROPERTY_PADDING_LEFT, GTK_CSS_PROPERTY_PADDING_BOTTOM, GTK_CSS_PROPERTY_PADDING_RIGHT, GTK_CSS_PROPERTY_BORDER_TOP_STYLE, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH, GTK_CSS_PROPERTY_BORDER_LEFT_STYLE, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH, GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH, GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH, GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS, GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS, GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS, GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS, GTK_CSS_PROPERTY_OUTLINE_STYLE, GTK_CSS_PROPERTY_OUTLINE_WIDTH, GTK_CSS_PROPERTY_OUTLINE_OFFSET, GTK_CSS_PROPERTY_OUTLINE_TOP_LEFT_RADIUS, GTK_CSS_PROPERTY_OUTLINE_TOP_RIGHT_RADIUS, GTK_CSS_PROPERTY_OUTLINE_BOTTOM_RIGHT_RADIUS, GTK_CSS_PROPERTY_OUTLINE_BOTTOM_LEFT_RADIUS, GTK_CSS_PROPERTY_BACKGROUND_CLIP, GTK_CSS_PROPERTY_BACKGROUND_ORIGIN, GTK_CSS_PROPERTY_BACKGROUND_SIZE, GTK_CSS_PROPERTY_BACKGROUND_POSITION, GTK_CSS_PROPERTY_BORDER_TOP_COLOR, GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR, GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR, GTK_CSS_PROPERTY_BORDER_LEFT_COLOR, GTK_CSS_PROPERTY_OUTLINE_COLOR, GTK_CSS_PROPERTY_BACKGROUND_REPEAT, GTK_CSS_PROPERTY_BACKGROUND_IMAGE, GTK_CSS_PROPERTY_BORDER_IMAGE_SOURCE, GTK_CSS_PROPERTY_BORDER_IMAGE_REPEAT, GTK_CSS_PROPERTY_BORDER_IMAGE_SLICE, GTK_CSS_PROPERTY_BORDER_IMAGE_WIDTH, GTK_CSS_PROPERTY_ICON_SOURCE, GTK_CSS_PROPERTY_ICON_SHADOW, GTK_CSS_PROPERTY_ICON_STYLE, GTK_CSS_PROPERTY_ICON_TRANSFORM, GTK_CSS_PROPERTY_TRANSITION_PROPERTY, GTK_CSS_PROPERTY_TRANSITION_DURATION, GTK_CSS_PROPERTY_TRANSITION_TIMING_FUNCTION, GTK_CSS_PROPERTY_TRANSITION_DELAY, GTK_CSS_PROPERTY_ANIMATION_NAME, GTK_CSS_PROPERTY_ANIMATION_DURATION, GTK_CSS_PROPERTY_ANIMATION_TIMING_FUNCTION, GTK_CSS_PROPERTY_ANIMATION_ITERATION_COUNT, GTK_CSS_PROPERTY_ANIMATION_DIRECTION, GTK_CSS_PROPERTY_ANIMATION_PLAY_STATE, GTK_CSS_PROPERTY_ANIMATION_DELAY, GTK_CSS_PROPERTY_ANIMATION_FILL_MODE, GTK_CSS_PROPERTY_OPACITY, GTK_CSS_PROPERTY_GTK_IMAGE_EFFECT, GTK_CSS_PROPERTY_ENGINE, GTK_CSS_PROPERTY_GTK_KEY_BINDINGS, /* add more */ GTK_CSS_PROPERTY_N_PROPERTIES }; typedef enum /*< skip >*/ { GTK_CSS_AREA_BORDER_BOX, GTK_CSS_AREA_PADDING_BOX, GTK_CSS_AREA_CONTENT_BOX } GtkCssArea; typedef enum /*< skip >*/ { GTK_CSS_DIRECTION_NORMAL, GTK_CSS_DIRECTION_REVERSE, GTK_CSS_DIRECTION_ALTERNATE, GTK_CSS_DIRECTION_ALTERNATE_REVERSE } GtkCssDirection; typedef enum /*< skip >*/ { GTK_CSS_PLAY_STATE_RUNNING, GTK_CSS_PLAY_STATE_PAUSED } GtkCssPlayState; typedef enum /*< skip >*/ { GTK_CSS_FILL_NONE, GTK_CSS_FILL_FORWARDS, GTK_CSS_FILL_BACKWARDS, GTK_CSS_FILL_BOTH } GtkCssFillMode; typedef enum /*< skip >*/ { GTK_CSS_IMAGE_EFFECT_NONE, GTK_CSS_IMAGE_EFFECT_HIGHLIGHT, GTK_CSS_IMAGE_EFFECT_DIM } GtkCssImageEffect; typedef enum /*< skip >*/ { GTK_CSS_ICON_STYLE_REQUESTED, GTK_CSS_ICON_STYLE_REGULAR, GTK_CSS_ICON_STYLE_SYMBOLIC } GtkCssIconStyle; typedef enum /*< skip >*/ { /* relative font sizes */ GTK_CSS_FONT_SIZE_SMALLER, GTK_CSS_FONT_SIZE_LARGER, /* absolute font sizes */ GTK_CSS_FONT_SIZE_XX_SMALL, GTK_CSS_FONT_SIZE_X_SMALL, GTK_CSS_FONT_SIZE_SMALL, GTK_CSS_FONT_SIZE_MEDIUM, GTK_CSS_FONT_SIZE_LARGE, GTK_CSS_FONT_SIZE_X_LARGE, GTK_CSS_FONT_SIZE_XX_LARGE } GtkCssFontSize; typedef enum /*< skip >*/ { GTK_CSS_TEXT_DECORATION_LINE_NONE, GTK_CSS_TEXT_DECORATION_LINE_UNDERLINE, GTK_CSS_TEXT_DECORATION_LINE_LINE_THROUGH } GtkTextDecorationLine; typedef enum /*< skip >*/ { GTK_CSS_TEXT_DECORATION_STYLE_SOLID, GTK_CSS_TEXT_DECORATION_STYLE_DOUBLE, GTK_CSS_TEXT_DECORATION_STYLE_WAVY } GtkTextDecorationStyle; /* for the order in arrays */ typedef enum /*< skip >*/ { GTK_CSS_TOP, GTK_CSS_RIGHT, GTK_CSS_BOTTOM, GTK_CSS_LEFT } GtkCssSide; typedef enum /*< skip >*/ { GTK_CSS_TOP_LEFT, GTK_CSS_TOP_RIGHT, GTK_CSS_BOTTOM_RIGHT, GTK_CSS_BOTTOM_LEFT } GtkCssCorner; typedef enum /*< skip >*/ { /* CSS term: */ GTK_CSS_NUMBER, /* CSS term: */ GTK_CSS_PERCENT, /* CSS term: */ GTK_CSS_PX, GTK_CSS_PT, GTK_CSS_EM, GTK_CSS_EX, GTK_CSS_PC, GTK_CSS_IN, GTK_CSS_CM, GTK_CSS_MM, /* CSS term: */ GTK_CSS_RAD, GTK_CSS_DEG, GTK_CSS_GRAD, GTK_CSS_TURN, /* CSS term: