summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-02-05 21:36:22 -0500
committerMatthias Clasen <mclasen@redhat.com>2021-02-05 21:36:22 -0500
commitde24b4f91b26627e01bb0c458cc5a229e85e2e51 (patch)
treef4b884ec83ca88e7a3ae002bf40c1d83ee0ccf19
parent60ff231fac3da797372165ba27dbbfc8602cef7d (diff)
downloadgtk+-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.c31
-rw-r--r--gtk/gtkcssshadowvalueprivate.h2
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);