summaryrefslogtreecommitdiff
path: root/gtk/gtkcssstyle.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkcssstyle.c')
-rw-r--r--gtk/gtkcssstyle.c49
1 files changed, 21 insertions, 28 deletions
diff --git a/gtk/gtkcssstyle.c b/gtk/gtkcssstyle.c
index b05ccc0d20..6957e2b126 100644
--- a/gtk/gtkcssstyle.c
+++ b/gtk/gtkcssstyle.c
@@ -436,7 +436,6 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
const GdkRGBA *color;
const GdkRGBA *decoration_color;
gint letter_spacing;
- GtkCssValue *value;
GtkCssFontVariantLigature ligatures;
GtkCssFontVariantNumeric numeric;
GtkCssFontVariantEastAsian east_asian;
@@ -444,10 +443,12 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
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)
{
@@ -471,7 +472,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
}
/* 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));
@@ -481,8 +482,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
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");
@@ -495,8 +495,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
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 */
@@ -523,8 +522,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
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");
@@ -537,8 +535,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
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");
@@ -563,8 +560,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
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 */
@@ -589,8 +585,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
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");
@@ -600,8 +595,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
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 */
@@ -628,8 +622,7 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
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);
@@ -651,7 +644,7 @@ gtk_css_style_get_pango_font (GtkCssStyle *style)
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;
@@ -673,19 +666,19 @@ gtk_css_style_get_pango_font (GtkCssStyle *style)
_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);