GtkCssValue *value;
node = gtk_text_view_get_selection_node ((GtkTextView *)crenderer->widget);
- value = gtk_css_style_get_value (gtk_css_node_get_style (node), GTK_CSS_PROPERTY_COLOR);
+ value = gtk_css_node_get_style (node)->core->color;
fg_rgba = gtk_css_color_value_get_rgba (value);
}
else if (crenderer->state == GSK_PANGO_RENDERER_CURSOR && gtk_widget_has_focus (crenderer->widget))
GtkCssValue *value;
node = gtk_widget_get_css_node (crenderer->widget);
- value = gtk_css_style_get_value (gtk_css_node_get_style (node), GTK_CSS_PROPERTY_BACKGROUND_COLOR);
+ value = gtk_css_node_get_style (node)->background->background_color;
fg_rgba = gtk_css_color_value_get_rgba (value);
}
else
node = gtk_style_context_get_node (context);
gtk_icon_size_set_style_classes (node, priv->icon_size);
style = gtk_css_node_get_style (node);
- priv->size = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_SIZE), 100);
+ priv->size = _gtk_css_number_value_get (style->icon->icon_size, 100);
gtk_style_context_restore (context);
}
calc_indicator_size (GtkStyleContext *context)
{
GtkCssStyle *style = gtk_style_context_lookup_style (context);
- return _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_SIZE), 100);
+ return _gtk_css_number_value_get (style->icon->icon_size, 100);
}
static void
gboolean source_is_animated;
guint i;
- durations = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_TRANSITION_DURATION);
- delays = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_TRANSITION_DELAY);
- timing_functions = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_TRANSITION_TIMING_FUNCTION);
+ durations = base_style->transition->transition_duration;
+ delays = base_style->transition->transition_delay;
+ timing_functions = base_style->transition->transition_timing_function;
if (_gtk_css_array_value_get_n_values (durations) == 1 &&
_gtk_css_array_value_get_n_values (delays) == 1 &&
_gtk_css_number_value_get (_gtk_css_array_value_get_nth (delays, 0), 100) == 0)
return animations;
- transition_infos_set (transitions, gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_TRANSITION_PROPERTY));
+ transition_infos_set (transitions, base_style->transition->transition_property);
source_is_animated = GTK_IS_CSS_ANIMATED_STYLE (source);
for (i = 0; i < GTK_CSS_PROPERTY_N_PROPERTIES; i++)
GtkCssValue *iteration_counts, *directions, *play_states, *fill_modes;
guint i;
- animation_names = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_ANIMATION_NAME);
- durations = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_ANIMATION_DURATION);
- delays = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_ANIMATION_DELAY);
- timing_functions = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_ANIMATION_TIMING_FUNCTION);
- iteration_counts = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_ANIMATION_ITERATION_COUNT);
- directions = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_ANIMATION_DIRECTION);
- play_states = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_ANIMATION_PLAY_STATE);
- fill_modes = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_ANIMATION_FILL_MODE);
+ animation_names = base_style->animation->animation_name;
+ durations = base_style->animation->animation_duration;
+ delays = base_style->animation->animation_delay;
+ timing_functions = base_style->animation->animation_timing_function;
+ iteration_counts = base_style->animation->animation_iteration_count;
+ directions = base_style->animation->animation_direction;
+ play_states = base_style->animation->animation_play_state;
+ fill_modes = base_style->animation->animation_fill_mode;
for (i = 0; i < _gtk_css_array_value_get_n_values (animation_names); i++)
{
static inline void
gtk_css_boxes_rect_grow (GskRoundedRect *dest,
GskRoundedRect *src,
- GtkCssStyle *style,
- int top_property,
- int right_property,
- int bottom_property,
- int left_property)
+ GtkCssValue *top,
+ GtkCssValue *right,
+ GtkCssValue *bottom,
+ GtkCssValue *left)
{
- GtkCssValue *top = gtk_css_style_get_value (style, top_property);
- GtkCssValue *right = gtk_css_style_get_value (style, right_property);
- GtkCssValue *bottom = gtk_css_style_get_value (style, bottom_property);
- GtkCssValue *left = gtk_css_style_get_value (style, left_property);
-
if (gtk_css_dimension_value_is_zero (left))
{
dest->bounds.origin.x = src->bounds.origin.x;
static inline void
gtk_css_boxes_rect_shrink (GskRoundedRect *dest,
GskRoundedRect *src,
- GtkCssStyle *style,
- int top_property,
- int right_property,
- int bottom_property,
- int left_property)
+ GtkCssValue *top_value,
+ GtkCssValue *right_value,
+ GtkCssValue *bottom_value,
+ GtkCssValue *left_value)
{
- double top = _gtk_css_number_value_get (gtk_css_style_get_value (style, top_property), 100);
- double right = _gtk_css_number_value_get (gtk_css_style_get_value (style, right_property), 100);
- double bottom = _gtk_css_number_value_get (gtk_css_style_get_value (style, bottom_property), 100);
- double left = _gtk_css_number_value_get (gtk_css_style_get_value (style, left_property), 100);
+ double top = _gtk_css_number_value_get (top_value, 100);
+ double right = _gtk_css_number_value_get (right_value, 100);
+ double bottom = _gtk_css_number_value_get (bottom_value, 100);
+ double left = _gtk_css_number_value_get (left_value, 100);
/* FIXME: Do we need underflow checks here? */
dest->bounds.origin.x = src->bounds.origin.x + left;
gtk_css_boxes_rect_grow (&boxes->box[GTK_CSS_AREA_BORDER_BOX],
&boxes->box[GTK_CSS_AREA_PADDING_BOX],
- boxes->style,
- GTK_CSS_PROPERTY_BORDER_TOP_WIDTH,
- GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH,
- GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH,
- GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH);
+ boxes->style->border->border_top_width,
+ boxes->style->border->border_right_width,
+ boxes->style->border->border_bottom_width,
+ boxes->style->border->border_left_width);
boxes->has_rect[GTK_CSS_AREA_BORDER_BOX] = TRUE;
}
{
gtk_css_boxes_rect_shrink (&boxes->box[GTK_CSS_AREA_PADDING_BOX],
&boxes->box[GTK_CSS_AREA_BORDER_BOX],
- boxes->style,
- GTK_CSS_PROPERTY_BORDER_TOP_WIDTH,
- GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH,
- GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH,
- GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH);
+ boxes->style->border->border_top_width,
+ boxes->style->border->border_right_width,
+ boxes->style->border->border_bottom_width,
+ boxes->style->border->border_left_width);
}
else
{
gtk_css_boxes_rect_grow (&boxes->box[GTK_CSS_AREA_PADDING_BOX],
&boxes->box[GTK_CSS_AREA_CONTENT_BOX],
- boxes->style,
- GTK_CSS_PROPERTY_PADDING_TOP,
- GTK_CSS_PROPERTY_PADDING_RIGHT,
- GTK_CSS_PROPERTY_PADDING_BOTTOM,
- GTK_CSS_PROPERTY_PADDING_LEFT);
+ boxes->style->size->padding_top,
+ boxes->style->size->padding_right,
+ boxes->style->size->padding_bottom,
+ boxes->style->size->padding_left);
}
boxes->has_rect[GTK_CSS_AREA_PADDING_BOX] = TRUE;
gtk_css_boxes_rect_shrink (&boxes->box[GTK_CSS_AREA_CONTENT_BOX],
&boxes->box[GTK_CSS_AREA_PADDING_BOX],
- boxes->style,
- GTK_CSS_PROPERTY_PADDING_TOP,
- GTK_CSS_PROPERTY_PADDING_RIGHT,
- GTK_CSS_PROPERTY_PADDING_BOTTOM,
- GTK_CSS_PROPERTY_PADDING_LEFT);
+ boxes->style->size->padding_top,
+ boxes->style->size->padding_right,
+ boxes->style->size->padding_bottom,
+ boxes->style->size->padding_left);
boxes->has_rect[GTK_CSS_AREA_CONTENT_BOX] = TRUE;
}
gtk_css_boxes_rect_grow (&boxes->box[GTK_CSS_AREA_MARGIN_BOX],
&boxes->box[GTK_CSS_AREA_BORDER_BOX],
- boxes->style,
- GTK_CSS_PROPERTY_MARGIN_TOP,
- GTK_CSS_PROPERTY_MARGIN_RIGHT,
- GTK_CSS_PROPERTY_MARGIN_BOTTOM,
- GTK_CSS_PROPERTY_MARGIN_LEFT);
+ boxes->style->size->margin_top,
+ boxes->style->size->margin_right,
+ boxes->style->size->margin_bottom,
+ boxes->style->size->margin_left);
boxes->has_rect[GTK_CSS_AREA_MARGIN_BOX] = TRUE;
}
dest = &boxes->box[GTK_CSS_AREA_OUTLINE_BOX].bounds;
src = &boxes->box[GTK_CSS_AREA_BORDER_BOX].bounds;
- d = _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_OFFSET), 100) +
- _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_WIDTH), 100);
+ d = _gtk_css_number_value_get (boxes->style->outline->outline_offset, 100) +
+ _gtk_css_number_value_get (boxes->style->outline->outline_width, 100);
dest->origin.x = src->origin.x - d;
dest->origin.y = src->origin.y - d;
gtk_css_boxes_compute_border_rect (boxes);
gtk_css_boxes_apply_border_radius (&boxes->box[GTK_CSS_AREA_BORDER_BOX],
- gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS),
- gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS),
- gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS),
- gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS));
+ boxes->style->border->border_top_left_radius,
+ boxes->style->border->border_top_right_radius,
+ boxes->style->border->border_bottom_right_radius,
+ boxes->style->border->border_bottom_left_radius);
boxes->has_box[GTK_CSS_AREA_BORDER_BOX] = TRUE;
}
gtk_css_boxes_compute_outline_rect (boxes);
gtk_css_boxes_apply_border_radius (&boxes->box[GTK_CSS_AREA_OUTLINE_BOX],
- gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_TOP_LEFT_RADIUS),
- gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_TOP_RIGHT_RADIUS),
- gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_BOTTOM_RIGHT_RADIUS),
- gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_BOTTOM_LEFT_RADIUS));
+ boxes->style->outline->outline_top_left_radius,
+ boxes->style->outline->outline_top_right_radius,
+ boxes->style->outline->outline_bottom_right_radius,
+ boxes->style->outline->outline_bottom_left_radius);
boxes->has_box[GTK_CSS_AREA_OUTLINE_BOX] = TRUE;
}
style,
parent_style);
case GTK_CSS_PROPERTY_ICON_PALETTE:
- return _gtk_css_value_ref (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR));
+ return _gtk_css_value_ref (style->core->color);
default:
if (property_id < GTK_CSS_PROPERTY_N_PROPERTIES)
g_warning ("No fallback color defined for property '%s'",
GtkCssValue *current;
if (parent_style)
- current = gtk_css_style_get_value (parent_style, GTK_CSS_PROPERTY_COLOR);
+ current = parent_style->core->color;
else
current = NULL;
}
else
{
- GtkCssValue *current = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR);
+ GtkCssValue *current = style->core->color;
resolved = _gtk_css_color_value_resolve (value,
provider,
if (property_id == GTK_CSS_PROPERTY_FONT_SIZE)
{
if (parent_style)
- return _gtk_css_number_value_get (gtk_css_style_get_value (parent_style, GTK_CSS_PROPERTY_FONT_SIZE), 100);
+ return _gtk_css_number_value_get (parent_style->core->font_size, 100);
else
return gtk_css_font_size_get_default_px (provider, style);
}
- return _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_SIZE), 100);
+ return _gtk_css_number_value_get (style->core->font_size, 100);
}
static double
get_dpi (GtkCssStyle *style)
{
- return _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_DPI), 96);
+ return _gtk_css_number_value_get (style->core->dpi, 96);
}
static GtkCssValue *
static double
get_dpi (GtkCssStyle *style)
{
- return _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_DPI), 96);
+ return _gtk_css_number_value_get (style->core->dpi, 96);
}
/* XXX: Kinda bad to have that machinery here, nobody expects vital font
break;
case GTK_CSS_FONT_SIZE_SMALLER:
if (parent_style)
- font_size = _gtk_css_number_value_get (gtk_css_style_get_value (parent_style, GTK_CSS_PROPERTY_FONT_SIZE), 100);
+ font_size = _gtk_css_number_value_get (parent_style->core->font_size, 100);
else
font_size = gtk_css_font_size_get_default_px (provider, style);
/* XXX: This is what WebKit does... */
break;
case GTK_CSS_FONT_SIZE_LARGER:
if (parent_style)
- font_size = _gtk_css_number_value_get (gtk_css_style_get_value (parent_style, GTK_CSS_PROPERTY_FONT_SIZE), 100);
+ font_size = _gtk_css_number_value_get (parent_style->core->font_size, 100);
else
font_size = gtk_css_font_size_get_default_px (provider, style);
/* XXX: This is what WebKit does... */
return _gtk_css_value_ref (value);
if (parent_style)
- parent_value = _gtk_css_number_value_get (gtk_css_style_get_value (parent_style, property_id), 100);
+ parent_value = _gtk_css_number_value_get (parent_style->font->font_weight, 100);
else
parent_value = 400;
copy = g_object_new (GTK_TYPE_CSS_IMAGE_ICON_THEME, NULL);
copy->name = g_strdup (icon_theme->name);
- copy->icon_theme = gtk_css_icon_theme_value_get_icon_theme (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_THEME));
+ copy->icon_theme = gtk_css_icon_theme_value_get_icon_theme (style->core->icon_theme);
copy->scale = gtk_style_provider_get_scale (provider);
gtk_icon_theme_lookup_symbolic_colors (style, ©->color, ©->success, ©->warning, ©->error);
GdkRGBA *warning_out,
GdkRGBA *error_out)
{
- GtkCssValue *color;
const GdkRGBA *lookup;
- color = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR);
- *color_out = *gtk_css_color_value_get_rgba (color);
+ *color_out = *gtk_css_color_value_get_rgba (style->core->color);
lookup = gtk_css_palette_value_get_color (palette, "success");
if (lookup)
if (recolor->palette)
palette = _gtk_css_value_compute (recolor->palette, property_id, provider, style, parent_style);
else
- palette = _gtk_css_value_ref (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_PALETTE));
+ palette = _gtk_css_value_ref (style->core->icon_palette);
img = gtk_css_image_recolor_load (recolor, style, palette, scale, &error);
const GdkRGBA *color;
const GdkRGBA *decoration_color;
gint letter_spacing;
- GtkCssValue *value;
GtkCssFontVariantLigature ligatures;
GtkCssFontVariantNumeric numeric;
GtkCssFontVariantEastAsian east_asian;
char *settings;
/* text-decoration */
- decoration_line = _gtk_css_text_decoration_line_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_TEXT_DECORATION_LINE));
- decoration_style = _gtk_css_text_decoration_style_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_TEXT_DECORATION_STYLE));
- color = gtk_css_color_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR));
- decoration_color = gtk_css_color_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR));
+ decoration_line = _gtk_css_text_decoration_line_value_get (style->font_variant->text_decoration_line);
+ decoration_style = _gtk_css_text_decoration_style_value_get (style->font_variant->text_decoration_style);
+ color = gtk_css_color_value_get_rgba (style->core->color);
+ decoration_color = gtk_css_color_value_get_rgba (style->font_variant->text_decoration_color
+ ? style->font_variant->text_decoration_color
+ : style->core->color);
switch (decoration_line)
{
}
/* letter-spacing */
- letter_spacing = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_LETTER_SPACING), 100);
+ letter_spacing = _gtk_css_number_value_get (style->font->letter_spacing, 100);
if (letter_spacing != 0)
{
attrs = add_pango_attr (attrs, pango_attr_letter_spacing_new (letter_spacing * PANGO_SCALE));
s = g_string_new ("");
- value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_KERNING);
- switch (_gtk_css_font_kerning_value_get (value))
+ switch (_gtk_css_font_kerning_value_get (style->font_variant->font_kerning))
{
case GTK_CSS_FONT_KERNING_NORMAL:
append_separated (s, "kern 1");
break;
}
- value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_VARIANT_LIGATURES);
- ligatures = _gtk_css_font_variant_ligature_value_get (value);
+ ligatures = _gtk_css_font_variant_ligature_value_get (style->font_variant->font_variant_ligatures);
if (ligatures == GTK_CSS_FONT_VARIANT_LIGATURE_NORMAL)
{
/* all defaults */
append_separated (s, "calt 0");
}
- value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_VARIANT_POSITION);
- switch (_gtk_css_font_variant_position_value_get (value))
+ switch (_gtk_css_font_variant_position_value_get (style->font_variant->font_variant_position))
{
case GTK_CSS_FONT_VARIANT_POSITION_SUB:
append_separated (s, "subs 1");
break;
}
- value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_VARIANT_CAPS);
- switch (_gtk_css_font_variant_caps_value_get (value))
+ switch (_gtk_css_font_variant_caps_value_get (style->font_variant->font_variant_caps))
{
case GTK_CSS_FONT_VARIANT_CAPS_SMALL_CAPS:
append_separated (s, "smcp 1");
break;
}
- value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_VARIANT_NUMERIC);
- numeric = _gtk_css_font_variant_numeric_value_get (value);
+ numeric = _gtk_css_font_variant_numeric_value_get (style->font_variant->font_variant_numeric);
if (numeric == GTK_CSS_FONT_VARIANT_NUMERIC_NORMAL)
{
/* all defaults */
append_separated (s, "zero 1");
}
- value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_VARIANT_ALTERNATES);
- switch (_gtk_css_font_variant_alternate_value_get (value))
+ switch (_gtk_css_font_variant_alternate_value_get (style->font_variant->font_variant_alternates))
{
case GTK_CSS_FONT_VARIANT_ALTERNATE_HISTORICAL_FORMS:
append_separated (s, "hist 1");
break;
}
- value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_VARIANT_EAST_ASIAN);
- east_asian = _gtk_css_font_variant_east_asian_value_get (value);
+ east_asian = _gtk_css_font_variant_east_asian_value_get (style->font_variant->font_variant_east_asian);
if (east_asian == GTK_CSS_FONT_VARIANT_EAST_ASIAN_NORMAL)
{
/* all defaults */
append_separated (s, "ruby 1");
}
- value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS);
- settings = gtk_css_font_features_value_get_features (value);
+ settings = gtk_css_font_features_value_get_features (style->font->font_feature_settings);
if (settings)
{
append_separated (s, settings);
description = pango_font_description_new ();
- v = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_FAMILY);
+ v = style->font->font_family;
if (_gtk_css_array_value_get_n_values (v) > 1)
{
int i;
_gtk_css_string_value_get (_gtk_css_array_value_get_nth (v, 0)));
}
- v = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_SIZE);
+ v = style->core->font_size;
pango_font_description_set_absolute_size (description, round (_gtk_css_number_value_get (v, 100) * PANGO_SCALE));
- v = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_STYLE);
+ v = style->font->font_style;
pango_font_description_set_style (description, _gtk_css_font_style_value_get (v));
- v = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_WEIGHT);
+ v = style->font->font_weight;
pango_font_description_set_weight (description, _gtk_css_number_value_get (v, 100));
- v = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_STRETCH);
+ v = style->font->font_stretch;
pango_font_description_set_stretch (description, _gtk_css_font_stretch_value_get (v));
- v = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_VARIATION_SETTINGS);
+ v = style->font->font_variation_settings;
str = gtk_css_font_variations_value_get_variations (v);
pango_font_description_set_variations (description, str);
g_free (str);
GtkCssStyle *style;
style = gtk_css_node_get_style (gtk_widget_get_css_node (GTK_WIDGET (native)));
- *x = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_LEFT), 100) +
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100) +
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_LEFT), 100);
- *y = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_TOP), 100) +
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100) +
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_TOP), 100);
+ *x = _gtk_css_number_value_get (style->size->margin_left, 100) +
+ _gtk_css_number_value_get (style->border->border_left_width, 100) +
+ _gtk_css_number_value_get (style->size->padding_left, 100);
+ *y = _gtk_css_number_value_get (style->size->margin_top, 100) +
+ _gtk_css_number_value_get (style->border->border_top_width, 100) +
+ _gtk_css_number_value_get (style->size->padding_top, 100);
}
static void
if (self->pixel_size != -1 || self->force_scale_pixbuf)
flags |= GTK_ICON_LOOKUP_FORCE_SIZE;
- icon_style = _gtk_css_icon_style_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_STYLE));
+ icon_style = _gtk_css_icon_style_value_get (style->icon->icon_style);
switch (icon_style)
{
GtkIconLookupFlags flags;
GdkPaintable *paintable;
- icon_theme = gtk_css_icon_theme_value_get_icon_theme
- (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_THEME));
+ icon_theme = gtk_css_icon_theme_value_get_icon_theme (style->core->icon_theme);
flags = get_icon_lookup_flags (self, style, dir);
width = height = gtk_icon_helper_get_size (self);
return self->pixel_size;
style = gtk_css_node_get_style (self->node);
- return _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_SIZE), 100);
+ return _gtk_css_number_value_get (style->icon->icon_size, 100);
}
void
{
GtkCssValue *palette, *color;
const GdkRGBA *lookup;
-
- color = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR);
- palette = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_PALETTE);
+
+ color = style->core->color;
+ palette = style->core->icon_palette;
*color_out = *gtk_css_color_value_get_rgba (color);
lookup = gtk_css_palette_value_get_color (palette, "success");
int *natural_baseline)
{
GtkPicture *self = GTK_PICTURE (widget);
+ GtkCssStyle *style;
double min_width, min_height, nat_width, nat_height;
double default_size;
return;
}
- default_size = _gtk_css_number_value_get (gtk_css_style_get_value (gtk_css_node_get_style (gtk_widget_get_css_node (widget)), GTK_CSS_PROPERTY_ICON_SIZE), 100);
+ style = gtk_css_node_get_style (gtk_widget_get_css_node (widget));
+ default_size = _gtk_css_number_value_get (style->icon->icon_size, 100);
if (self->can_shrink)
{
GtkCssStyle *style;
style = gtk_css_node_get_style (gtk_widget_get_css_node (GTK_WIDGET (native)));
- *x = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_LEFT), 100) +
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100) +
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_LEFT), 100);
- *y = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_TOP), 100) +
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100) +
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_TOP), 100);
+ *x = _gtk_css_number_value_get (style->size->margin_left, 100) +
+ _gtk_css_number_value_get (style->border->border_left_width, 100) +
+ _gtk_css_number_value_get (style->size->padding_left, 100);
+ *y = _gtk_css_number_value_get (style->size->margin_top, 100) +
+ _gtk_css_number_value_get (style->border->border_top_width, 100) +
+ _gtk_css_number_value_get (style->size->padding_top, 100);
}
static void
pos = priv->final_position;
style = gtk_css_node_get_style (gtk_widget_get_css_node (priv->contents_widget));
- border_radius = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS), 100);
- border_top = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100);
- border_right = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100);
- border_bottom = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100);
+ border_radius = _gtk_css_number_value_get (style->border->border_top_left_radius, 100);
+ border_top = _gtk_css_number_value_get (style->border->border_top_width, 100);
+ border_right = _gtk_css_number_value_get (style->border->border_right_width, 100);
+ border_bottom = _gtk_css_number_value_get (style->border->border_bottom_width, 100);
if (pos == GTK_POS_BOTTOM || pos == GTK_POS_RIGHT)
{
style = gtk_css_node_get_style (gtk_widget_get_css_node (widget));
- border->top = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_TOP), 100);
- border->right = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_RIGHT), 100);
- border->bottom = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_BOTTOM), 100);
- border->left = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_LEFT), 100);
+ border->top = _gtk_css_number_value_get (style->size->margin_top, 100);
+ border->right = _gtk_css_number_value_get (style->size->margin_right, 100);
+ border->bottom = _gtk_css_number_value_get (style->size->margin_bottom, 100);
+ border->left = _gtk_css_number_value_get (style->size->margin_left, 100);
}
static void
style = gtk_css_node_get_style (node);
- border->top = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100);
- border->right = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100);
- border->bottom = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100);
- border->left = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100);
+ border->top = _gtk_css_number_value_get (style->border->border_top_width, 100);
+ border->right = _gtk_css_number_value_get (style->border->border_right_width, 100);
+ border->bottom = _gtk_css_number_value_get (style->border->border_bottom_width, 100);
+ border->left = _gtk_css_number_value_get (style->border->border_left_width, 100);
}
static void
GtkCssStyle *style;
style = gtk_css_node_get_style (gtk_widget_get_css_node (widget));
- return round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS), 100));
+ return round (_gtk_css_number_value_get (style->border->border_top_left_radius, 100));
}
static gint
/* Render the border of the arrow tip */
if (border.bottom > 0)
{
- GtkCssValue *value;
+ GtkCssStyle *style;
const GdkRGBA *border_color;
- value = gtk_css_style_get_value (gtk_css_node_get_style (priv->arrow_node), GTK_CSS_PROPERTY_BORDER_LEFT_COLOR);
- border_color = gtk_css_color_value_get_rgba (value);
+ style = gtk_css_node_get_style (priv->arrow_node);
+ border_color = gtk_css_color_value_get_rgba (style->border->border_left_color ? style->border->border_left_color : style->core->color);
gtk_popover_apply_tail_path (popover, cr);
gdk_cairo_set_source_rgba (cr, border_color);
GtkCssArea clip;
n_values = _gtk_css_array_value_get_n_values (background_image);
- clip = _gtk_css_area_value_get
- (_gtk_css_array_value_get_nth
- (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BACKGROUND_CLIP),
- n_values - 1));
+ clip = _gtk_css_area_value_get (_gtk_css_array_value_get_nth (boxes->style->background->background_clip, n_values - 1));
box = gtk_css_boxes_get_box (boxes, clip);
if (gsk_rounded_rect_is_rectilinear (box))
guint idx,
GtkSnapshot *snapshot)
{
+ GtkCssBackgroundValues *background = bg->style->background;
GtkCssRepeatStyle hrepeat, vrepeat;
const GtkCssValue *pos, *repeat;
GtkCssImage *image;
double width, height;
double x, y;
- image = _gtk_css_image_value_get_image (
- _gtk_css_array_value_get_nth (
- gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_IMAGE),
- idx));
+ image = _gtk_css_image_value_get_image (_gtk_css_array_value_get_nth (background->background_image, idx));
if (image == NULL)
return;
- pos = _gtk_css_array_value_get_nth (gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_POSITION), idx);
- repeat = _gtk_css_array_value_get_nth (gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_REPEAT), idx);
+ pos = _gtk_css_array_value_get_nth (background->background_position, idx);
+ repeat = _gtk_css_array_value_get_nth (background->background_repeat, idx);
hrepeat = _gtk_css_background_repeat_value_get_x (repeat);
vrepeat = _gtk_css_background_repeat_value_get_y (repeat);
origin = gtk_css_boxes_get_box (bg,
_gtk_css_area_value_get (
- _gtk_css_array_value_get_nth (
- gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_ORIGIN),
- idx)));
+ _gtk_css_array_value_get_nth (background->background_origin, idx)));
width = origin->bounds.size.width;
height = origin->bounds.size.height;
clip = gtk_css_boxes_get_box (bg,
_gtk_css_area_value_get (
- _gtk_css_array_value_get_nth (
- gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_CLIP),
- idx)));
+ _gtk_css_array_value_get_nth (background->background_clip, idx)));
- _gtk_css_bg_size_value_compute_size (_gtk_css_array_value_get_nth (gtk_css_style_get_value (bg->style, GTK_CSS_PROPERTY_BACKGROUND_SIZE), idx),
+ _gtk_css_bg_size_value_compute_size (_gtk_css_array_value_get_nth (background->background_size, idx),
image,
width,
height,
gtk_css_style_snapshot_background (GtkCssBoxes *boxes,
GtkSnapshot *snapshot)
{
- GtkCssValue *background_image = gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BACKGROUND_IMAGE);
- const GdkRGBA *bg_color = gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BACKGROUND_COLOR));
- const GtkCssValue *box_shadow = gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BOX_SHADOW);
+ GtkCssBackgroundValues *background = boxes->style->background;
+ GtkCssValue *background_image = background->background_image;
+ const GdkRGBA *bg_color = gtk_css_color_value_get_rgba (background->background_color);
+ const GtkCssValue *box_shadow = background->box_shadow;
const gboolean has_bg_color = !gdk_rgba_is_clear (bg_color);
const gboolean has_bg_image = _gtk_css_image_value_get_image (_gtk_css_array_value_get_nth (background_image, 0)) != NULL;
const gboolean has_shadow = !gtk_css_shadow_value_is_none (box_shadow);
if (has_bg_image)
{
- GtkCssValue *blend_modes = gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BACKGROUND_BLEND_MODE);
+ GtkCssValue *blend_modes = background->background_blend_mode;
const int number_of_layers = _gtk_css_array_value_get_n_values (background_image);
GskBlendMode *blend_mode_values = g_alloca (sizeof (GskBlendMode) * number_of_layers);
gtk_border_image_init (GtkBorderImage *image,
GtkCssStyle *style)
{
- image->source = _gtk_css_image_value_get_image (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_IMAGE_SOURCE));
+ image->source = _gtk_css_image_value_get_image (style->border->border_image_source);
if (image->source == NULL)
return FALSE;
- image->slice = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_IMAGE_SLICE);
- image->width = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_IMAGE_WIDTH);
- image->repeat = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_IMAGE_REPEAT);
+ image->slice = style->border->border_image_slice;
+ image->width = style->border->border_image_width;
+ image->repeat = style->border->border_image_repeat;
return TRUE;
}
gtk_css_style_snapshot_border (GtkCssBoxes *boxes,
GtkSnapshot *snapshot)
{
+ GtkCssBorderValues *border;
GtkBorderImage border_image;
float border_width[4];
+ border = boxes->style->border;
+
if (gtk_border_image_init (&border_image, boxes->style))
{
cairo_t *cr;
const graphene_rect_t *bounds;
- border_width[0] = _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100);
- border_width[1] = _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100);
- border_width[2] = _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100);
- border_width[3] = _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100);
+ border_width[0] = _gtk_css_number_value_get (border->border_top_width, 100);
+ border_width[1] = _gtk_css_number_value_get (border->border_right_width, 100);
+ border_width[2] = _gtk_css_number_value_get (border->border_bottom_width, 100);
+ border_width[3] = _gtk_css_number_value_get (border->border_left_width, 100);
bounds = gtk_css_boxes_get_border_rect (boxes);
gtk_css_boxes_get_padding_rect (boxes)))
return;
- colors[0] = *gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
- colors[1] = *gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR));
- colors[2] = *gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR));
- colors[3] = *gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_LEFT_COLOR));
+ colors[0] = *gtk_css_color_value_get_rgba (border->border_top_color ? border->border_top_color : boxes->style->core->color);
+ colors[1] = *gtk_css_color_value_get_rgba (border->border_right_color ? border->border_right_color : boxes->style->core->color);
+ colors[2] = *gtk_css_color_value_get_rgba (border->border_bottom_color ? border->border_bottom_color : boxes->style->core->color);
+ colors[3] = *gtk_css_color_value_get_rgba (border->border_left_color ? border->border_left_color : boxes->style->core->color);
alpha_test_vector = graphene_simd4f_init (colors[0].alpha, colors[1].alpha, colors[2].alpha, colors[3].alpha);
if (graphene_simd4f_is_zero4 (alpha_test_vector))
return;
- border_style[0] = _gtk_css_border_style_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_TOP_STYLE));
- border_style[1] = _gtk_css_border_style_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE));
- border_style[2] = _gtk_css_border_style_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE));
- border_style[3] = _gtk_css_border_style_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_LEFT_STYLE));
+ border_style[0] = _gtk_css_border_style_value_get (border->border_top_style);
+ border_style[1] = _gtk_css_border_style_value_get (border->border_right_style);
+ border_style[2] = _gtk_css_border_style_value_get (border->border_bottom_style);
+ border_style[3] = _gtk_css_border_style_value_get (border->border_left_style);
- border_width[0] = _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100);
- border_width[1] = _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100);
- border_width[2] = _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100);
- border_width[3] = _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100);
+ border_width[0] = _gtk_css_number_value_get (border->border_top_width, 100);
+ border_width[1] = _gtk_css_number_value_get (border->border_right_width, 100);
+ border_width[2] = _gtk_css_number_value_get (border->border_bottom_width, 100);
+ border_width[3] = _gtk_css_number_value_get (border->border_left_width, 100);
gtk_snapshot_push_debug (snapshot, "CSS border");
snapshot_border (snapshot,
gtk_css_style_snapshot_outline (GtkCssBoxes *boxes,
GtkSnapshot *snapshot)
{
+ GtkCssOutlineValues *outline = boxes->style->outline;
GtkBorderStyle border_style[4];
float border_width[4];
GdkRGBA colors[4];
- border_style[0] = _gtk_css_border_style_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_STYLE));
+ border_style[0] = _gtk_css_border_style_value_get (outline->outline_style);
if (border_style[0] != GTK_BORDER_STYLE_NONE)
{
border_style[1] = border_style[2] = border_style[3] = border_style[0];
- border_width[0] = _gtk_css_number_value_get (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_WIDTH), 100);
+ border_width[0] = _gtk_css_number_value_get (outline->outline_width, 100);
border_width[3] = border_width[2] = border_width[1] = border_width[0];
- colors[0] = *gtk_css_color_value_get_rgba (gtk_css_style_get_value (boxes->style, GTK_CSS_PROPERTY_OUTLINE_COLOR));
+ colors[0] = *gtk_css_color_value_get_rgba (outline->outline_color ? outline->outline_color : boxes->style->core->color);
colors[3] = colors[2] = colors[1] = colors[0];
snapshot_border (snapshot,
double width,
double height)
{
- const GtkCssValue *shadows_value, *transform_value, *filter_value;
GskTransform *transform;
GtkCssImage *image;
gboolean has_shadow;
if (width == 0.0 || height == 0.0)
return;
- image = _gtk_css_image_value_get_image (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_SOURCE));
+ image = _gtk_css_image_value_get_image (style->other->icon_source);
if (image == NULL)
return;
- shadows_value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_SHADOW);
- transform_value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_TRANSFORM);
- filter_value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_FILTER);
-
- transform = gtk_css_transform_value_get_transform (transform_value);
+ transform = gtk_css_transform_value_get_transform (style->other->icon_transform);
gtk_snapshot_push_debug (snapshot, "CSS Icon @ %gx%g", width, height);
- gtk_css_filter_value_push_snapshot (filter_value, snapshot);
+ gtk_css_filter_value_push_snapshot (style->other->icon_filter, snapshot);
- has_shadow = gtk_css_shadow_value_push_snapshot (shadows_value, snapshot);
+ has_shadow = gtk_css_shadow_value_push_snapshot (style->icon->icon_shadow, snapshot);
if (transform == NULL)
{
if (has_shadow)
gtk_snapshot_pop (snapshot);
- gtk_css_filter_value_pop_snapshot (filter_value, snapshot);
+ gtk_css_filter_value_pop_snapshot (style->other->icon_filter, snapshot);
gtk_snapshot_pop (snapshot);
double height,
gboolean recolor)
{
- const GtkCssValue *shadows_value, *transform_value, *filter_value;
GskTransform *transform;
gboolean has_shadow;
g_return_if_fail (width > 0);
g_return_if_fail (height > 0);
- shadows_value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_SHADOW);
- transform_value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_TRANSFORM);
- filter_value = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_FILTER);
-
- transform = gtk_css_transform_value_get_transform (transform_value);
+ transform = gtk_css_transform_value_get_transform (style->other->icon_transform);
- gtk_css_filter_value_push_snapshot (filter_value, snapshot);
+ gtk_css_filter_value_push_snapshot (style->other->icon_filter, snapshot);
- has_shadow = gtk_css_shadow_value_push_snapshot (shadows_value, snapshot);
+ has_shadow = gtk_css_shadow_value_push_snapshot (style->icon->icon_shadow, snapshot);
if (recolor)
{
if (has_shadow)
gtk_snapshot_pop (snapshot);
- gtk_css_filter_value_pop_snapshot (filter_value, snapshot);
+ gtk_css_filter_value_pop_snapshot (style->other->icon_filter, snapshot);
gsk_transform_unref (transform);
}
gsk_rounded_rect_init_from_rect (&box, &GRAPHENE_RECT_INIT (x, y, width, height), 0);
- corner[GSK_CORNER_TOP_LEFT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS);
- corner[GSK_CORNER_TOP_RIGHT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS);
- corner[GSK_CORNER_BOTTOM_LEFT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS);
- corner[GSK_CORNER_BOTTOM_RIGHT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS);
+ corner[GSK_CORNER_TOP_LEFT] = style->border->border_top_left_radius;
+ corner[GSK_CORNER_TOP_RIGHT] = style->border->border_top_right_radius;
+ corner[GSK_CORNER_BOTTOM_LEFT] = style->border->border_bottom_left_radius;
+ corner[GSK_CORNER_BOTTOM_RIGHT] = style->border->border_bottom_right_radius;
_gtk_rounded_box_apply_border_radius (&box, corner);
if (padding_box || content_box)
{
gsk_rounded_rect_shrink (&box,
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100),
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100),
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100),
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100));
+ _gtk_css_number_value_get (style->border->border_top_width, 100),
+ _gtk_css_number_value_get (style->border->border_right_width, 100),
+ _gtk_css_number_value_get (style->border->border_bottom_width, 100),
+ _gtk_css_number_value_get (style->border->border_left_width, 100));
if (padding_box)
gsk_rounded_rect_init_copy (padding_box, &box);
if (content_box)
{
gsk_rounded_rect_shrink (&box,
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_TOP), 100),
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_RIGHT), 100),
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_BOTTOM), 100),
- _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_LEFT), 100));
+ _gtk_css_number_value_get (style->size->padding_top, 100),
+ _gtk_css_number_value_get (style->size->padding_right, 100),
+ _gtk_css_number_value_get (style->size->padding_bottom, 100),
+ _gtk_css_number_value_get (style->size->padding_left, 100));
gsk_rounded_rect_init_copy (content_box, &box);
}
}
{
const GtkCssValue *corner[4];
- corner[GSK_CORNER_TOP_LEFT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_OUTLINE_TOP_LEFT_RADIUS);
- corner[GSK_CORNER_TOP_RIGHT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_OUTLINE_TOP_RIGHT_RADIUS);
- corner[GSK_CORNER_BOTTOM_LEFT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_OUTLINE_BOTTOM_LEFT_RADIUS);
- corner[GSK_CORNER_BOTTOM_RIGHT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_OUTLINE_BOTTOM_RIGHT_RADIUS);
+ corner[GSK_CORNER_TOP_LEFT] = style->outline->outline_top_left_radius;
+ corner[GSK_CORNER_TOP_RIGHT] = style->outline->outline_top_right_radius;
+ corner[GSK_CORNER_BOTTOM_LEFT] = style->outline->outline_bottom_left_radius;
+ corner[GSK_CORNER_BOTTOM_RIGHT] = style->outline->outline_bottom_right_radius;
_gtk_rounded_box_apply_border_radius (box, corner);
}
}
static gint
-get_number (GtkCssStyle *style,
- guint property)
+get_number (GtkCssValue *value)
{
- double d = _gtk_css_number_value_get (gtk_css_style_get_value (style, property), 100);
+ double d = _gtk_css_number_value_get (value, 100);
if (d < 1)
return ceil (d);
/* Special-case min-width|height to round upwards, to avoid underalloc by 1px */
static int
-get_number_ceil (GtkCssStyle *style,
- guint property)
+get_number_ceil (GtkCssValue *value)
{
- return ceil (_gtk_css_number_value_get (gtk_css_style_get_value (style, property), 100));
+ return ceil (_gtk_css_number_value_get (value, 100));
}
static void
get_box_margin (GtkCssStyle *style,
GtkBorder *margin)
{
- margin->top = get_number (style, GTK_CSS_PROPERTY_MARGIN_TOP);
- margin->left = get_number (style, GTK_CSS_PROPERTY_MARGIN_LEFT);
- margin->bottom = get_number (style, GTK_CSS_PROPERTY_MARGIN_BOTTOM);
- margin->right = get_number (style, GTK_CSS_PROPERTY_MARGIN_RIGHT);
+ margin->top = get_number (style->size->margin_top);
+ margin->left = get_number (style->size->margin_left);
+ margin->bottom = get_number (style->size->margin_bottom);
+ margin->right = get_number (style->size->margin_right);
}
static void
get_box_border (GtkCssStyle *style,
GtkBorder *border)
{
- border->top = get_number (style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH);
- border->left = get_number (style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH);
- border->bottom = get_number (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH);
- border->right = get_number (style, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH);
+ border->top = get_number (style->border->border_top_width);
+ border->left = get_number (style->border->border_left_width);
+ border->bottom = get_number (style->border->border_bottom_width);
+ border->right = get_number (style->border->border_right_width);
}
static void
get_box_padding (GtkCssStyle *style,
GtkBorder *border)
{
- border->top = get_number (style, GTK_CSS_PROPERTY_PADDING_TOP);
- border->left = get_number (style, GTK_CSS_PROPERTY_PADDING_LEFT);
- border->bottom = get_number (style, GTK_CSS_PROPERTY_PADDING_BOTTOM);
- border->right = get_number (style, GTK_CSS_PROPERTY_PADDING_RIGHT);
+ border->top = get_number (style->size->padding_top);
+ border->left = get_number (style->size->padding_left);
+ border->bottom = get_number (style->size->padding_bottom);
+ border->right = get_number (style->size->padding_right);
}
static void
{
css_extra_size = margin.left + margin.right + border.left + border.right + padding.left + padding.right;
css_extra_for_size = margin.top + margin.bottom + border.top + border.bottom + padding.top + padding.bottom;
- css_min_size = get_number_ceil (style, GTK_CSS_PROPERTY_MIN_WIDTH);
- css_min_for_size = get_number_ceil (style, GTK_CSS_PROPERTY_MIN_HEIGHT);
+ css_min_size = get_number_ceil (style->size->min_width);
+ css_min_for_size = get_number_ceil (style->size->min_height);
}
else
{
css_extra_size = margin.top + margin.bottom + border.top + border.bottom + padding.top + padding.bottom;
css_extra_for_size = margin.left + margin.right + border.left + border.right + padding.left + padding.right;
- css_min_size = get_number_ceil (style, GTK_CSS_PROPERTY_MIN_HEIGHT);
- css_min_for_size = get_number_ceil (style, GTK_CSS_PROPERTY_MIN_WIDTH);
+ css_min_size = get_number_ceil (style->size->min_height);
+ css_min_for_size = get_number_ceil (style->size->min_width);
}
GtkLayoutManager *layout_manager = gtk_widget_get_layout_manager (widget);
int *natural_baseline)
{
double min_size;
- guint property;
GtkCssStyle *style;
- if (orientation == GTK_ORIENTATION_HORIZONTAL)
- property = GTK_CSS_PROPERTY_MIN_WIDTH;
- else
- property = GTK_CSS_PROPERTY_MIN_HEIGHT;
-
style = gtk_css_node_get_style (gtk_widget_get_css_node (widget));
- min_size = _gtk_css_number_value_get (gtk_css_style_get_value (style, property), 100);
+ if (orientation == GTK_ORIENTATION_HORIZONTAL)
+ min_size = _gtk_css_number_value_get (style->size->min_width, 100);
+ else
+ min_size = _gtk_css_number_value_get (style->size->min_height, 100);
if (min_size > 0.0)
*minimum = *natural = min_size;
GtkBorder *border)
{
GtkCssStyle *style;
- double top, left, bottom, right;
g_return_if_fail (border != NULL);
g_return_if_fail (GTK_IS_STYLE_CONTEXT (context));
style = gtk_style_context_lookup_style (context);
- top = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100));
- right = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100));
- bottom = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100));
- left = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100));
-
- border->top = top;
- border->left = left;
- border->bottom = bottom;
- border->right = right;
+ border->top = round (_gtk_css_number_value_get (style->border->border_top_width, 100));
+ border->right = round (_gtk_css_number_value_get (style->border->border_right_width, 100));
+ border->bottom = round (_gtk_css_number_value_get (style->border->border_bottom_width, 100));
+ border->left = round (_gtk_css_number_value_get (style->border->border_left_width, 100));
}
/**
GtkBorder *padding)
{
GtkCssStyle *style;
- double top, left, bottom, right;
g_return_if_fail (padding != NULL);
g_return_if_fail (GTK_IS_STYLE_CONTEXT (context));
style = gtk_style_context_lookup_style (context);
- top = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_TOP), 100));
- right = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_RIGHT), 100));
- bottom = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_BOTTOM), 100));
- left = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_PADDING_LEFT), 100));
-
- padding->top = top;
- padding->left = left;
- padding->bottom = bottom;
- padding->right = right;
+ padding->top = round (_gtk_css_number_value_get (style->size->padding_top, 100));
+ padding->right = round (_gtk_css_number_value_get (style->size->padding_right, 100));
+ padding->bottom = round (_gtk_css_number_value_get (style->size->padding_bottom, 100));
+ padding->left = round (_gtk_css_number_value_get (style->size->padding_left, 100));
}
/**
GtkBorder *margin)
{
GtkCssStyle *style;
- double top, left, bottom, right;
g_return_if_fail (margin != NULL);
g_return_if_fail (GTK_IS_STYLE_CONTEXT (context));
style = gtk_style_context_lookup_style (context);
- top = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_TOP), 100));
- right = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_RIGHT), 100));
- bottom = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_BOTTOM), 100));
- left = round (_gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MARGIN_LEFT), 100));
-
- margin->top = top;
- margin->left = left;
- margin->bottom = bottom;
- margin->right = right;
+ margin->top = round (_gtk_css_number_value_get (style->size->margin_top, 100));
+ margin->right = round (_gtk_css_number_value_get (style->size->margin_right, 100));
+ margin->bottom = round (_gtk_css_number_value_get (style->size->margin_bottom, 100));
+ margin->left = round (_gtk_css_number_value_get (style->size->margin_left, 100));
}
void
GdkRGBA *primary_color,
GdkRGBA *secondary_color)
{
+ GtkCssStyle *style;
+
+ style = gtk_style_context_lookup_style (context);
+
if (primary_color)
- *primary_color = *gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_CARET_COLOR));
+ *primary_color = *gtk_css_color_value_get_rgba (style->font->caret_color ? style->font->caret_color : style->core->color);
if (secondary_color)
- *secondary_color = *gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_SECONDARY_CARET_COLOR));
+ *secondary_color = *gtk_css_color_value_get_rgba (style->font->secondary_caret_color ? style->font->secondary_caret_color : style->core->color);
}
static void
snapshot = gtk_snapshot_new ();
style = gtk_css_node_get_style (gtk_widget_get_css_node (widget));
- color = gtk_css_color_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_COLOR));
+ color = gtk_css_color_value_get_rgba (style->core->color);
gtk_snapshot_append_layout (snapshot, layout, color);
set_attributes_from_style (GtkWidget *widget,
GtkTextAttributes *values)
{
+ GtkCssStyle *style;
GtkStyleContext *context;
const GdkRGBA black = { 0, };
values->appearance.fg_rgba = gdk_rgba_copy (&black);
context = gtk_widget_get_style_context (widget);
- *values->appearance.bg_rgba = *gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR));
- *values->appearance.fg_rgba = *gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
+ style = gtk_style_context_lookup_style (context);
+
+ *values->appearance.bg_rgba = *gtk_css_color_value_get_rgba (style->background->background_color);
+ *values->appearance.fg_rgba = *gtk_css_color_value_get_rgba (style->core->color);
if (values->font)
pango_font_description_free (values->font);
- values->font = gtk_css_style_get_pango_font (gtk_style_context_lookup_style (context));
+ values->font = gtk_css_style_get_pango_font (style);
}
static gint
gtk_style_context_add_class (context, GTK_STYLE_CLASS_EXPANDER);
style = gtk_style_context_lookup_style (context);
- min_width = _gtk_css_number_value_get
- (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MIN_WIDTH), 100);
- min_height = _gtk_css_number_value_get
- (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MIN_HEIGHT), 100);
+ min_width = _gtk_css_number_value_get (style->size->min_width, 100);
+ min_height = _gtk_css_number_value_get (style->size->min_height, 100);
gtk_style_context_restore (context);
gtk_style_context_add_class (context, GTK_STYLE_CLASS_SEPARATOR);
style = gtk_style_context_lookup_style (context);
- d = _gtk_css_number_value_get
- (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_MIN_HEIGHT), 100);
+ d = _gtk_css_number_value_get (style->size->min_height, 100);
if (d < 1)
min_size = ceil (d);
}
static gint
-get_number (GtkCssStyle *style,
- guint property)
+get_number (GtkCssValue *value)
{
- double d = _gtk_css_number_value_get (gtk_css_style_get_value (style, property), 100);
+ double d = _gtk_css_number_value_get (value, 100);
if (d < 1)
return ceil (d);
get_box_margin (GtkCssStyle *style,
GtkBorder *margin)
{
- margin->top = get_number (style, GTK_CSS_PROPERTY_MARGIN_TOP);
- margin->left = get_number (style, GTK_CSS_PROPERTY_MARGIN_LEFT);
- margin->bottom = get_number (style, GTK_CSS_PROPERTY_MARGIN_BOTTOM);
- margin->right = get_number (style, GTK_CSS_PROPERTY_MARGIN_RIGHT);
+ margin->top = get_number (style->size->margin_top);
+ margin->left = get_number (style->size->margin_left);
+ margin->bottom = get_number (style->size->margin_bottom);
+ margin->right = get_number (style->size->margin_right);
}
static void
get_box_border (GtkCssStyle *style,
GtkBorder *border)
{
- border->top = get_number (style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH);
- border->left = get_number (style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH);
- border->bottom = get_number (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH);
- border->right = get_number (style, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH);
+ border->top = get_number (style->border->border_top_width);
+ border->left = get_number (style->border->border_left_width);
+ border->bottom = get_number (style->border->border_bottom_width);
+ border->right = get_number (style->border->border_right_width);
}
static void
get_box_padding (GtkCssStyle *style,
GtkBorder *border)
{
- border->top = get_number (style, GTK_CSS_PROPERTY_PADDING_TOP);
- border->left = get_number (style, GTK_CSS_PROPERTY_PADDING_LEFT);
- border->bottom = get_number (style, GTK_CSS_PROPERTY_PADDING_BOTTOM);
- border->right = get_number (style, GTK_CSS_PROPERTY_PADDING_RIGHT);
+ border->top = get_number (style->size->padding_top);
+ border->left = get_number (style->size->padding_left);
+ border->bottom = get_number (style->size->padding_bottom);
+ border->right = get_number (style->size->padding_right);
}
/**
adjusted.y += margin.top;
adjusted.width -= margin.left + margin.right;
adjusted.height -= margin.top + margin.bottom;
- css_transform = gtk_css_transform_value_get_transform (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_TRANSFORM));
+ css_transform = gtk_css_transform_value_get_transform (style->other->transform);
if (css_transform)
{
_gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ?
PANGO_DIRECTION_LTR : PANGO_DIRECTION_RTL);
- pango_cairo_context_set_resolution (context,
- _gtk_css_number_value_get (
- gtk_css_style_get_value (style, GTK_CSS_PROPERTY_DPI), 100));
+ pango_cairo_context_set_resolution (context, _gtk_css_number_value_get (style->core->dpi, 100));
settings = gtk_widget_get_settings (widget);
font_options = (cairo_font_options_t*)g_object_get_qdata (G_OBJECT (widget), quark_font_options);
gtk_widget_update_alpha (GtkWidget *widget)
{
GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
+ GtkCssStyle *style;
gdouble opacity;
guint8 alpha;
- opacity = _gtk_css_number_value_get (gtk_css_style_get_value (gtk_css_node_get_style (priv->cssnode),
- GTK_CSS_PROPERTY_OPACITY),
- 100);
-
+ style = gtk_css_node_get_style (priv->cssnode);
+ opacity = _gtk_css_number_value_get (style->other->opacity, 100);
opacity = CLAMP (opacity, 0.0, 1.0);
+
alpha = round (priv->user_alpha * opacity);
if (alpha == priv->alpha)
"RenderNode for %s %p",
G_OBJECT_TYPE_NAME (widget), widget);
- filter_value = gtk_css_style_get_value (gtk_css_node_get_style (priv->cssnode), GTK_CSS_PROPERTY_FILTER);
+ filter_value = gtk_css_node_get_style (priv->cssnode)->other->filter;
if (filter_value)
gtk_css_filter_value_push_snapshot (filter_value, snapshot);
static gint
-get_number (GtkCssStyle *style,
- guint property)
+get_number (GtkCssValue *value)
{
- double d = _gtk_css_number_value_get (gtk_css_style_get_value (style, property), 100);
+ double d = _gtk_css_number_value_get (value, 100);
if (d < 1)
return ceil (d);
get_box_margin (GtkCssStyle *style,
GtkBorder *margin)
{
- margin->top = get_number (style, GTK_CSS_PROPERTY_MARGIN_TOP);
- margin->left = get_number (style, GTK_CSS_PROPERTY_MARGIN_LEFT);
- margin->bottom = get_number (style, GTK_CSS_PROPERTY_MARGIN_BOTTOM);
- margin->right = get_number (style, GTK_CSS_PROPERTY_MARGIN_RIGHT);
+ margin->top = get_number (style->size->margin_top);
+ margin->left = get_number (style->size->margin_left);
+ margin->bottom = get_number (style->size->margin_bottom);
+ margin->right = get_number (style->size->margin_right);
}
static void
get_box_border (GtkCssStyle *style,
GtkBorder *border)
{
- border->top = get_number (style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH);
- border->left = get_number (style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH);
- border->bottom = get_number (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH);
- border->right = get_number (style, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH);
+ border->top = get_number (style->border->border_top_width);
+ border->left = get_number (style->border->border_left_width);
+ border->bottom = get_number (style->border->border_bottom_width);
+ border->right = get_number (style->border->border_right_width);
}
static void
get_box_padding (GtkCssStyle *style,
GtkBorder *border)
{
- border->top = get_number (style, GTK_CSS_PROPERTY_PADDING_TOP);
- border->left = get_number (style, GTK_CSS_PROPERTY_PADDING_LEFT);
- border->bottom = get_number (style, GTK_CSS_PROPERTY_PADDING_BOTTOM);
- border->right = get_number (style, GTK_CSS_PROPERTY_PADDING_RIGHT);
+ border->top = get_number (style->size->padding_top);
+ border->left = get_number (style->size->padding_left);
+ border->bottom = get_number (style->size->padding_bottom);
+ border->right = get_number (style->size->padding_right);
}
static void