diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-02-05 21:36:22 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-02-05 21:36:22 -0500 |
commit | de24b4f91b26627e01bb0c458cc5a229e85e2e51 (patch) | |
tree | f4b884ec83ca88e7a3ae002bf40c1d83ee0ccf19 | |
parent | 60ff231fac3da797372165ba27dbbfc8602cef7d (diff) | |
download | gtk+-de24b4f91b26627e01bb0c458cc5a229e85e2e51.tar.gz |
cssshadowvalue: Add a parsing function
Add a variant of the parse function that parses
just a single (non-box) shadow, as required for
the drop-shadow filter.
-rw-r--r-- | gtk/gtkcssshadowvalue.c | 31 | ||||
-rw-r--r-- | gtk/gtkcssshadowvalueprivate.h | 2 |
2 files changed, 33 insertions, 0 deletions
diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c index 126e9af8f2..b7b409ca72 100644 --- a/gtk/gtkcssshadowvalue.c +++ b/gtk/gtkcssshadowvalue.c @@ -326,6 +326,21 @@ gtk_css_shadow_value_new (ShadowValue *shadows, return retval; } +GtkCssValue * +gtk_css_shadow_value_new_filter (void) +{ + ShadowValue value; + + value.inset = FALSE; + value.hoffset = _gtk_css_number_value_new (0, GTK_CSS_NUMBER); + value.voffset = _gtk_css_number_value_new (0, GTK_CSS_NUMBER); + value.radius = _gtk_css_number_value_new (0, GTK_CSS_NUMBER); + value.spread = _gtk_css_number_value_new (0, GTK_CSS_NUMBER); + value.color = _gtk_css_color_value_new_current_color (); + + return gtk_css_shadow_value_new (&value, 1); +} + enum { HOFFSET, VOFFSET, @@ -497,6 +512,22 @@ fail: return NULL; } +GtkCssValue * +_gtk_css_shadow_value_parse_filter (GtkCssParser *parser) +{ + GtkCssValue *result; + + result = _gtk_css_shadow_value_parse (parser, FALSE); + + if (result && result->n_shadows != 1) + { + gtk_css_parser_error_syntax (parser, "A single shadow is required"); + g_clear_pointer (&result, gtk_css_value_unref); + } + + return result; +} + void gtk_css_shadow_value_get_extents (const GtkCssValue *value, GtkBorder *border) diff --git a/gtk/gtkcssshadowvalueprivate.h b/gtk/gtkcssshadowvalueprivate.h index 5784dfa516..3f49963b5b 100644 --- a/gtk/gtkcssshadowvalueprivate.h +++ b/gtk/gtkcssshadowvalueprivate.h @@ -35,9 +35,11 @@ G_BEGIN_DECLS GtkCssValue * gtk_css_shadow_value_new_none (void); +GtkCssValue * gtk_css_shadow_value_new_filter (void); GtkCssValue * _gtk_css_shadow_value_parse (GtkCssParser *parser, gboolean box_shadow_mode); +GtkCssValue * _gtk_css_shadow_value_parse_filter (GtkCssParser *parser); void gtk_css_shadow_value_get_extents (const GtkCssValue *shadow, GtkBorder *border); |