static void gtk_css_image_radial_print (GtkCssImage *image, GString *string) { GtkCssImageRadial *radial = GTK_CSS_IMAGE_RADIAL (image); guint i; const gchar *names[] = { NULL, "closest-side", "farthest-side", "closest-corner", "farthest-corner" }; if (radial->repeating) g_string_append (string, "repeating-radial-gradient("); else g_string_append (string, "radial-gradient("); if (radial->circle) g_string_append (string, "circle "); else g_string_append (string, "ellipse "); if (radial->size != 0) g_string_append (string, names[radial->size]); else { if (radial->sizes[0]) _gtk_css_value_print (radial->sizes[0], string); g_string_append (string, " "); if (radial->sizes[1]) _gtk_css_value_print (radial->sizes[1], string); } g_string_append (string, " at "); _gtk_css_value_print (radial->position, string); g_string_append (string, ", "); for (i = 0; i < radial->stops->len; i++) { GtkCssImageRadialColorStop *stop; if (i > 0) g_string_append (string, ", "); stop = &g_array_index (radial->stops, GtkCssImageRadialColorStop, i); _gtk_css_value_print (stop->color, string); if (stop->offset) { g_string_append (string, " "); _gtk_css_value_print (stop->offset, string); } } g_string_append (string, ")"); }
static void gtk_css_image_linear_print (GtkCssImage *image, GString *string) { GtkCssImageLinear *linear = GTK_CSS_IMAGE_LINEAR (image); guint i; if (linear->repeating) g_string_append (string, "repeating-linear-gradient("); else g_string_append (string, "linear-gradient("); if (_gtk_css_number_value_get_unit (linear->angle) == GTK_CSS_NUMBER) { guint side = _gtk_css_number_value_get (linear->angle, 100); if (side != (1 << GTK_CSS_BOTTOM)) { g_string_append (string, "to"); if (side & (1 << GTK_CSS_TOP)) g_string_append (string, " top"); else if (side & (1 << GTK_CSS_BOTTOM)) g_string_append (string, " bottom"); if (side & (1 << GTK_CSS_LEFT)) g_string_append (string, " left"); else if (side & (1 << GTK_CSS_RIGHT)) g_string_append (string, " right"); g_string_append (string, ", "); } } else { _gtk_css_value_print (linear->angle, string); g_string_append (string, ", "); } for (i = 0; i < linear->stops->len; i++) { GtkCssImageLinearColorStop *stop; if (i > 0) g_string_append (string, ", "); stop = &g_array_index (linear->stops, GtkCssImageLinearColorStop, i); _gtk_css_value_print (stop->color, string); if (stop->offset) { g_string_append (string, " "); _gtk_css_value_print (stop->offset, string); } } g_string_append (string, ")"); }
void gtk_css_style_print (GtkCssStyle *style, GString *string) { guint i; g_return_if_fail (GTK_IS_CSS_STYLE (style)); g_return_if_fail (string != NULL); for (i = 0; i < _gtk_css_style_property_get_n_properties (); i++) { GtkCssSection *section = gtk_css_style_get_section (style, i); g_string_append (string, _gtk_style_property_get_name (GTK_STYLE_PROPERTY (_gtk_css_style_property_lookup_by_id (i)))); g_string_append (string, ": "); _gtk_css_value_print (gtk_css_style_get_value (style, i), string); g_string_append (string, ";"); if (section) { g_string_append (string, " /* "); _gtk_css_section_print (section, string); g_string_append (string, " */"); } g_string_append (string, "\n"); } }
void gtk_css_computed_values_print (GtkCssComputedValues *values, GString *string) { guint i; g_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values)); g_return_if_fail (string != NULL); for (i = 0; i < _gtk_css_style_property_get_n_properties (); i++) { GtkCssSection *section = _gtk_css_computed_values_get_section (values, i); g_string_append (string, _gtk_style_property_get_name (GTK_STYLE_PROPERTY (_gtk_css_style_property_lookup_by_id (i)))); g_string_append (string, ": "); _gtk_css_value_print (_gtk_css_computed_values_get_value (values, i), string); g_string_append (string, ";"); if (section) { g_string_append (string, " /* "); _gtk_css_section_print (section, string); g_string_append (string, " */"); } g_string_append (string, "\n"); } }
static void gtk_css_value_bg_size_print (const GtkCssValue *value, GString *string) { if (value->cover) g_string_append (string, "cover"); else if (value->contain) g_string_append (string, "contain"); else { if (value->x == NULL) g_string_append (string, "auto"); else _gtk_css_value_print (value->x, string); if (value->y) { g_string_append_c (string, ' '); _gtk_css_value_print (value->y, string); } } }
/* * gtk_css_style_print: * @style: a #GtkCssStyle * @string: the #GString to print to * @indent: level of indentation to use * @skip_initial: %TRUE to skip properties that have their initial value * * Print the @style to @string, in CSS format. Every property is printed * on a line by itself, indented by @indent spaces. If @skip_initial is * %TRUE, properties are only printed if their value in @style is different * from the initial value of the property. * * Returns: %TRUE is any properties have been printed */ gboolean gtk_css_style_print (GtkCssStyle *style, GString *string, guint indent, gboolean skip_initial) { guint i; gboolean retval = FALSE; g_return_val_if_fail (GTK_IS_CSS_STYLE (style), FALSE); g_return_val_if_fail (string != NULL, FALSE); for (i = 0; i < _gtk_css_style_property_get_n_properties (); i++) { GtkCssSection *section; GtkCssStyleProperty *prop; GtkCssValue *value; const char *name; section = gtk_css_style_get_section (style, i); if (!section && skip_initial) continue; prop = _gtk_css_style_property_lookup_by_id (i); name = _gtk_style_property_get_name (GTK_STYLE_PROPERTY (prop)); value = gtk_css_style_get_value (style, i); g_string_append_printf (string, "%*s%s: ", indent, "", name); _gtk_css_value_print (value, string); g_string_append_c (string, ';'); if (section) { g_string_append (string, " /* "); _gtk_css_section_print (section, string); g_string_append (string, " */"); } g_string_append_c (string, '\n'); retval = TRUE; } return retval; }
static void gtk_css_value_shadows_print (const GtkCssValue *value, GString *string) { guint i; if (value->len == 0) { g_string_append (string, "none"); return; } for (i = 0; i < value->len; i++) { if (i > 0) g_string_append (string, ", "); _gtk_css_value_print (value->values[i], string); } }
static void gtk_css_image_fallback_print (GtkCssImage *image, GString *string) { GtkCssImageFallback *fallback = GTK_CSS_IMAGE_FALLBACK (image); int i; g_string_append (string, "image("); for (i = 0; i < fallback->n_images; i++) { if (i > 0) g_string_append (string, ","); _gtk_css_image_print (fallback->images[i], string); } if (fallback->color) { g_string_append (string, ","); _gtk_css_value_print (fallback->color, string); } g_string_append (string, ")"); }