diff --git a/gsk/gskrendernodeparser.c b/gsk/gskrendernodeparser.c index ee7a48db04..53fe68dbdc 100644 --- a/gsk/gskrendernodeparser.c +++ b/gsk/gskrendernodeparser.c @@ -1878,20 +1878,25 @@ parse_inset_shadow_node (GtkCssParser *parser, Context *context) { GskRoundedRect outline = GSK_ROUNDED_RECT_INIT (0, 0, 50, 50); - GdkRGBA color = GDK_RGBA("000000"); + GdkColor color = GDK_COLOR_SRGB (0, 0, 0, 1); double dx = 1, dy = 1, blur = 0, spread = 0; const Declaration declarations[] = { { "outline", parse_rounded_rect, NULL, &outline }, - { "color", parse_color, NULL, &color }, + { "color", parse_color2, NULL, &color }, { "dx", parse_double, NULL, &dx }, { "dy", parse_double, NULL, &dy }, { "spread", parse_double, NULL, &spread }, { "blur", parse_positive_double, NULL, &blur } }; + GskRenderNode *node; parse_declarations (parser, context, declarations, G_N_ELEMENTS (declarations)); - return gsk_inset_shadow_node_new (&outline, &color, dx, dy, spread, blur); + node = gsk_inset_shadow_node_new2 (&outline, &color, dx, dy, spread, blur); + + gdk_color_finish (&color); + + return node; } G_GNUC_BEGIN_IGNORE_DEPRECATIONS @@ -2287,20 +2292,25 @@ parse_outset_shadow_node (GtkCssParser *parser, Context *context) { GskRoundedRect outline = GSK_ROUNDED_RECT_INIT (0, 0, 50, 50); - GdkRGBA color = GDK_RGBA("000000"); + GdkColor color = GDK_COLOR_SRGB (0, 0, 0, 1); double dx = 1, dy = 1, blur = 0, spread = 0; const Declaration declarations[] = { { "outline", parse_rounded_rect, NULL, &outline }, - { "color", parse_color, NULL, &color }, + { "color", parse_color2, NULL, &color }, { "dx", parse_double, NULL, &dx }, { "dy", parse_double, NULL, &dy }, { "spread", parse_double, NULL, &spread }, { "blur", parse_positive_double, NULL, &blur } }; + GskRenderNode *node; parse_declarations (parser, context, declarations, G_N_ELEMENTS (declarations)); - return gsk_outset_shadow_node_new (&outline, &color, dx, dy, spread, blur); + node = gsk_outset_shadow_node_new2 (&outline, &color, dx, dy, spread, blur); + + gdk_color_finish (&color); + + return node; } static GskRenderNode * @@ -3324,14 +3334,20 @@ printer_init_duplicates_for_node (Printer *printer, } break; + case GSK_INSET_SHADOW_NODE: + printer_init_check_color_state (printer, gsk_inset_shadow_node_get_color2 (node)->color_state); + break; + + case GSK_OUTSET_SHADOW_NODE: + printer_init_check_color_state (printer, gsk_outset_shadow_node_get_color2 (node)->color_state); + break; + case GSK_CAIRO_NODE: case GSK_LINEAR_GRADIENT_NODE: case GSK_REPEATING_LINEAR_GRADIENT_NODE: case GSK_RADIAL_GRADIENT_NODE: case GSK_REPEATING_RADIAL_GRADIENT_NODE: case GSK_CONIC_GRADIENT_NODE: - case GSK_INSET_SHADOW_NODE: - case GSK_OUTSET_SHADOW_NODE: /* no children */ break; @@ -4334,13 +4350,11 @@ render_node_print (Printer *p, case GSK_OUTSET_SHADOW_NODE: { - const GdkRGBA *color = gsk_outset_shadow_node_get_color (node); - start_node (p, "outset-shadow", node_name); append_float_param (p, "blur", gsk_outset_shadow_node_get_blur_radius (node), 0.0f); - if (!gdk_rgba_equal (color, &GDK_RGBA("000"))) - append_rgba_param (p, "color", color); + if (!gdk_color_equal (gsk_inset_shadow_node_get_color2 (node), &GDK_COLOR_SRGB (0, 0, 0, 1))) + append_color_param (p, "color", gsk_outset_shadow_node_get_color2 (node)); append_float_param (p, "dx", gsk_outset_shadow_node_get_dx (node), 1.0f); append_float_param (p, "dy", gsk_outset_shadow_node_get_dy (node), 1.0f); append_rounded_rect_param (p, "outline", gsk_outset_shadow_node_get_outline (node)); @@ -4539,12 +4553,11 @@ render_node_print (Printer *p, case GSK_INSET_SHADOW_NODE: { - const GdkRGBA *color = gsk_inset_shadow_node_get_color (node); start_node (p, "inset-shadow", node_name); append_float_param (p, "blur", gsk_inset_shadow_node_get_blur_radius (node), 0.0f); - if (!gdk_rgba_equal (color, &GDK_RGBA("000"))) - append_rgba_param (p, "color", color); + if (!gdk_color_equal (gsk_inset_shadow_node_get_color2 (node), &GDK_COLOR_SRGB (0, 0, 0, 1))) + append_color_param (p, "color", gsk_inset_shadow_node_get_color2 (node)); append_float_param (p, "dx", gsk_inset_shadow_node_get_dx (node), 1.0f); append_float_param (p, "dy", gsk_inset_shadow_node_get_dy (node), 1.0f); append_rounded_rect_param (p, "outline", gsk_inset_shadow_node_get_outline (node)); diff --git a/testsuite/gsk/meson.build b/testsuite/gsk/meson.build index 88c7a4a748..e914219bee 100644 --- a/testsuite/gsk/meson.build +++ b/testsuite/gsk/meson.build @@ -324,6 +324,7 @@ node_parser_tests = [ 'blend-unknown-mode.node', 'blend-unknown-mode.ref.node', 'border.node', + 'box-shadow.node', 'color.node', 'color2.node', 'color3.node', diff --git a/testsuite/gsk/nodeparser/box-shadow.node b/testsuite/gsk/nodeparser/box-shadow.node new file mode 100644 index 0000000000..2112f202b6 --- /dev/null +++ b/testsuite/gsk/nodeparser/box-shadow.node @@ -0,0 +1,4 @@ +outset-shadow { + blur: 2; + color: color(rec2100-pq 1 0.5 0 / 0.75); +} diff --git a/testsuite/gsk/nodeparser/box-shadow.ref.node b/testsuite/gsk/nodeparser/box-shadow.ref.node new file mode 100644 index 0000000000..f7238546d0 --- /dev/null +++ b/testsuite/gsk/nodeparser/box-shadow.ref.node @@ -0,0 +1,5 @@ +outset-shadow { + blur: 2; + color: color(rec2100-pq 1 0.5 0 / 0.75); + outline: 0 0 50 50; +}