summaryrefslogtreecommitdiffstats
path: root/gfx/wr/wrench/reftests/boxshadow
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/blank.yaml2
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-blurred-overlapping-radii-ref.yaml20
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-blurred-overlapping-radii.yaml19
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-border-radii.pngbin0 -> 11567 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-border-radii.yaml36
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-cache.pngbin0 -> 33603 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-cache.yaml98
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-clip-ref.yaml59
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-clip.yaml32
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-clipped-corners-ref.yaml9
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-clipped-corners.yaml16
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-empty.yaml13
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-huge-radius.pngbin0 -> 15792 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-huge-radius.yaml120
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-2.pngbin0 -> 125598 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-2.yaml14
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-3.pngbin0 -> 56821 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-3.yaml14
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-ref.yaml13
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius.yaml13
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-non-uniform-corner.pngbin0 -> 2018 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-non-uniform-corner.yaml12
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-spread-radii-ref.yaml21
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-spread-radii.yaml18
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-spread.pngbin0 -> 7573 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-spread.yaml68
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-x.pngbin0 -> 13529 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-x.yaml8
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-y.pngbin0 -> 5612 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-y.yaml9
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-blur.pngbin0 -> 86873 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-blur.yaml154
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-no-blur.pngbin0 -> 21209 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-no-blur.yaml134
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/boxshadow-spread-only-ref.pngbin0 -> 19562 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/boxshadow-spread-only.yaml13
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-alpha.pngbin0 -> 1619 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-alpha.yaml14
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-border-radius-ref.yaml16
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-border-radius.pngbin0 -> 3016 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-border-radius.yaml11
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-downscale.pngbin0 -> 12980 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-downscale.yaml10
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-empty.yaml13
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-large-offset-ref.pngbin0 -> 4086 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-large-offset.yaml13
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-mask-region.pngbin0 -> 24233 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-mask-region.yaml11
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-neg-offset.pngbin0 -> 3048 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-neg-offset.yaml18
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-no-blur-radius-ref.pngbin0 -> 672 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-no-blur-radius.yaml13
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-offset.pngbin0 -> 3114 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-offset.yaml18
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-simple-ref.yaml9
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-simple.yaml13
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-spread-large-ref.yaml9
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-spread-large.yaml12
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-spread-ref.yaml10
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-spread.yaml12
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-subpx.pngbin0 -> 1809 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/inset-subpx.yaml12
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/invalid-ref.yaml5
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/invalid.yaml12
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/no-stretch.pngbin0 -> 4020 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/no-stretch.yaml21
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/overlap1.pngbin0 -> 10907 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/overlap1.yaml18
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/overlap2.pngbin0 -> 8491 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/overlap2.yaml19
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/reftest.list39
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/rounding-ref.yaml18
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/rounding.yaml15
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/scale.pngbin0 -> 13662 bytes
-rw-r--r--gfx/wr/wrench/reftests/boxshadow/scale.yaml183
75 files changed, 1459 insertions, 0 deletions
diff --git a/gfx/wr/wrench/reftests/boxshadow/blank.yaml b/gfx/wr/wrench/reftests/boxshadow/blank.yaml
new file mode 100644
index 0000000000..c4eb3ab673
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/blank.yaml
@@ -0,0 +1,2 @@
+---
+root:
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-blurred-overlapping-radii-ref.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-blurred-overlapping-radii-ref.yaml
new file mode 100644
index 0000000000..5e2da4fa8a
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-blurred-overlapping-radii-ref.yaml
@@ -0,0 +1,20 @@
+
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 0, 1, 265, 265 ]
+ color: red
+ clip-mode: outset
+ offset: 350 -1
+ blur-radius: 1
+ spread-radius: -80
+ border-radius:
+ top-left: [185, 185]
+ top-right: [0, 0]
+ bottom-left: [0, 0]
+ bottom-right: [185, 185]
+
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-blurred-overlapping-radii.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-blurred-overlapping-radii.yaml
new file mode 100644
index 0000000000..ebc4b263a1
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-blurred-overlapping-radii.yaml
@@ -0,0 +1,19 @@
+
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 0, 1, 265, 265 ]
+ color: red
+ clip-mode: outset
+ offset: 350 -1
+ blur-radius: 1
+ spread-radius: -80
+ border-radius:
+ top-left: [250, 250]
+ top-right: [0, 0]
+ bottom-left: [0, 0]
+ bottom-right: [250, 250]
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-border-radii.png b/gfx/wr/wrench/reftests/boxshadow/box-shadow-border-radii.png
new file mode 100644
index 0000000000..0741826160
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-border-radii.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-border-radii.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-border-radii.yaml
new file mode 100644
index 0000000000..d52601e019
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-border-radii.yaml
@@ -0,0 +1,36 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 50, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+ blur-radius: 10
+ border-radius: {
+ top-left: [20, 30],
+ top-right: [10, 30],
+ bottom-left: [50, 25],
+ bottom-right: [0, 0],
+ }
+
+ - type: box-shadow
+ bounds: [ 200, 50, 100, 100 ]
+ color: green
+ clip-mode: inset
+ blur-radius: 10
+ border-radius: {
+ top-left: [20, 30],
+ top-right: [10, 30],
+ bottom-left: [50, 25],
+ bottom-right: [0, 0],
+ }
+
+ - type: box-shadow
+ bounds: [ 350, 50, 100, 100 ]
+ color: blue
+ clip-mode: outset
+ blur-radius: 10
+ border-radius: [ 10, 20, 30, 40 ]
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-cache.png b/gfx/wr/wrench/reftests/boxshadow/box-shadow-cache.png
new file mode 100644
index 0000000000..96d2c7fed3
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-cache.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-cache.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-cache.yaml
new file mode 100644
index 0000000000..721c6fe4e0
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-cache.yaml
@@ -0,0 +1,98 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 50, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+ blur-radius: 10
+ border-radius: {
+ top-left: [20, 30],
+ top-right: [10, 30],
+ bottom-left: [50, 25],
+ bottom-right: [0, 0],
+ }
+
+ - type: box-shadow
+ bounds: [ 50, 200, 100, 100 ]
+ color: red
+ clip-mode: outset
+ blur-radius: 10
+ border-radius: {
+ top-left: [20, 30],
+ top-right: [10, 30],
+ bottom-left: [50, 25],
+ bottom-right: [0, 0],
+ }
+
+ - type: box-shadow
+ bounds: [ 50, 350, 100, 100 ]
+ color: red
+ clip-mode: outset
+ blur-radius: 10
+ border-radius: {
+ top-left: [20, 30],
+ top-right: [10, 30],
+ bottom-left: [50, 25],
+ bottom-right: [0, 0],
+ }
+
+ - type: box-shadow
+ bounds: [ 200, 50, 100, 100 ]
+ color: green
+ clip-mode: inset
+ blur-radius: 10
+ border-radius: {
+ top-left: [20, 30],
+ top-right: [10, 30],
+ bottom-left: [50, 25],
+ bottom-right: [0, 0],
+ }
+
+ - type: box-shadow
+ bounds: [ 200, 200, 100, 100 ]
+ color: green
+ clip-mode: inset
+ blur-radius: 10
+ border-radius: {
+ top-left: [20, 30],
+ top-right: [10, 30],
+ bottom-left: [50, 25],
+ bottom-right: [0, 0],
+ }
+
+ - type: box-shadow
+ bounds: [ 200, 350, 100, 100 ]
+ color: green
+ clip-mode: inset
+ blur-radius: 10
+ border-radius: {
+ top-left: [20, 30],
+ top-right: [10, 30],
+ bottom-left: [50, 25],
+ bottom-right: [0, 0],
+ }
+
+ - type: box-shadow
+ bounds: [ 350, 50, 100, 100 ]
+ color: blue
+ clip-mode: outset
+ blur-radius: 10
+ border-radius: [ 10, 20, 30, 40 ]
+
+ - type: box-shadow
+ bounds: [ 350, 200, 100, 100 ]
+ color: blue
+ clip-mode: outset
+ blur-radius: 10
+ border-radius: [ 10, 20, 30, 40 ]
+
+ - type: box-shadow
+ bounds: [ 350, 350, 100, 100 ]
+ color: blue
+ clip-mode: outset
+ blur-radius: 10
+ border-radius: [ 10, 20, 30, 40 ]
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-clip-ref.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-clip-ref.yaml
new file mode 100644
index 0000000000..cda90245c9
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-clip-ref.yaml
@@ -0,0 +1,59 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: clip
+ id: 2
+ bounds: [0, 0, 100, 200]
+ - type: clip-chain
+ id: 10
+ clips: [2]
+ - type: box-shadow
+ bounds: [ 20, 20, 200, 80 ]
+ color: blue
+ offset: [10, 20]
+ clip-mode: outset
+ clip-chain: 10
+
+ - type: clip
+ id: 3
+ bounds: [200, 0, 100, 200]
+ - type: clip-chain
+ id: 11
+ clips: [3]
+ - type: box-shadow
+ bounds: [ 220, 20, 200, 80 ]
+ color: red
+ offset: [10, 20]
+ blur-radius: 10
+ clip-mode: outset
+ clip-chain: 11
+
+ - type: clip
+ id: 4
+ bounds: [0, 200, 100, 200]
+ - type: clip-chain
+ id: 12
+ clips: [4]
+ - type: box-shadow
+ bounds: [ 20, 220, 200, 80 ]
+ color: green
+ offset: [10, 20]
+ clip-mode: inset
+ clip-chain: 12
+
+ - type: clip
+ id: 5
+ bounds: [200, 200, 100, 200]
+ - type: clip-chain
+ id: 13
+ clips: [5]
+ - type: box-shadow
+ bounds: [ 220, 220, 200, 80 ]
+ color: yellow
+ offset: [10, 20]
+ blur-radius: 10
+ clip-mode: inset
+ clip-chain: 13
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-clip.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-clip.yaml
new file mode 100644
index 0000000000..c027b54379
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-clip.yaml
@@ -0,0 +1,32 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 20, 20, 200, 80 ]
+ clip-rect: [0, 0, 100, 200]
+ color: blue
+ offset: [10, 20]
+ clip-mode: outset
+ - type: box-shadow
+ bounds: [ 220, 20, 200, 80 ]
+ clip-rect: [200, 0, 100, 200]
+ color: red
+ offset: [10, 20]
+ blur-radius: 10
+ clip-mode: outset
+ - type: box-shadow
+ bounds: [ 20, 220, 200, 80 ]
+ clip-rect: [0, 200, 100, 200]
+ color: green
+ offset: [10, 20]
+ clip-mode: inset
+ - type: box-shadow
+ bounds: [ 220, 220, 200, 80 ]
+ clip-rect: [200, 200, 100, 200]
+ color: yellow
+ offset: [10, 20]
+ blur-radius: 10
+ clip-mode: inset
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-clipped-corners-ref.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-clipped-corners-ref.yaml
new file mode 100644
index 0000000000..ce0bd28a5d
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-clipped-corners-ref.yaml
@@ -0,0 +1,9 @@
+---
+root:
+ items:
+ - type: rect
+ bounds: [ 40, 100, 10, 100 ]
+ color: red
+ - type: rect
+ bounds: [ 250, 100, 10, 100 ]
+ color: red
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-clipped-corners.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-clipped-corners.yaml
new file mode 100644
index 0000000000..dd457e7e4a
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-clipped-corners.yaml
@@ -0,0 +1,16 @@
+# Verify that if a clip results in all the corner segments of a box-shadow
+# (clip-out) primitive being culled, we still correctly clip-out and render
+# the inner segments
+---
+root:
+ items:
+ - type: clip
+ id: 2
+ bounds: [ 0, 100, 300, 100 ]
+
+ - type: box-shadow
+ bounds: [ 50, 50, 200, 200 ]
+ clip-chain: [2]
+ color: red
+ spread-radius: 10
+ border-radius: 10
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-empty.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-empty.yaml
new file mode 100644
index 0000000000..d3640d53f5
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-empty.yaml
@@ -0,0 +1,13 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 500, 500]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 400, 400 ]
+ blur-radius: 0
+ clip-mode: outset
+ offset: [0, 0]
+ spread-radius: 0
+ color: [255, 0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-huge-radius.png b/gfx/wr/wrench/reftests/boxshadow/box-shadow-huge-radius.png
new file mode 100644
index 0000000000..f2be685139
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-huge-radius.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-huge-radius.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-huge-radius.yaml
new file mode 100644
index 0000000000..28ac4a62a3
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-huge-radius.yaml
@@ -0,0 +1,120 @@
+---
+root:
+ items:
+ -
+ bounds: [0, 0, 0, 0]
+ "clip-rect": [0, 0, 0, 0]
+ "backface-visible": true
+ type: "stacking-context"
+ "transform-style": flat
+ "raster-space": screen
+ filters: []
+ items:
+ -
+ bounds: [0, 148, 1368, 588]
+ "clip-rect": [0, 148, 1368, 588]
+ "backface-visible": true
+ type: clip
+ id: 2
+ -
+ bounds: [0, 0, 0, 0]
+ "clip-rect": [0, 0, 0, 0]
+ "backface-visible": true
+ type: "clip-chain"
+ id: 3
+ clips: [2]
+ -
+ bounds: [16, 164, 16200, 200]
+ "clip-rect": [40, 188, 1328, 216]
+ clip-chain: 3
+ "backface-visible": true
+ type: "box-shadow"
+ "box-bounds": [16, 164, 16200, 200]
+ offset: [32, 32]
+ color: 0 0 255 1.0000
+ "blur-radius": 6
+ "spread-radius": 0
+ "border-radius":
+ "top-left": [16200, 200]
+ "top-right": [0, 0]
+ "bottom-left": [0, 0]
+ "bottom-right": [0, 0]
+ "clip-mode": outset
+ -
+ "clip-rect": [16, 164, 1352, 200]
+ "backface-visible": true
+ type: clip
+ id: 4
+ complex:
+ -
+ rect: [16, 164, 16200, 200]
+ radius:
+ "top-left": [16200, 200]
+ "top-right": [0, 0]
+ "bottom-left": [0, 0]
+ "bottom-right": [0, 0]
+ "clip-mode": clip
+ -
+ bounds: [0, 0, 0, 0]
+ "clip-rect": [0, 0, 0, 0]
+ clip-chain: 3
+ "backface-visible": true
+ type: "clip-chain"
+ id: 5
+ clips: [4]
+ parent: 3
+ -
+ bounds: [16, 164, 16200, 200]
+ "clip-rect": [16, 164, 16200, 200]
+ clip-chain: 5
+ "backface-visible": true
+ type: rect
+ color: 255 0 255 1.0000
+ -
+ bounds: [16, 402, 200, 200]
+ "clip-rect": [40, 426, 216, 216]
+ clip-chain: 3
+ "backface-visible": true
+ type: "box-shadow"
+ "box-bounds": [16, 402, 200, 200]
+ offset: [32, 32]
+ color: 0 255 255 1.0000
+ "blur-radius": 6
+ "spread-radius": 0
+ "border-radius":
+ "top-left": [0, 0]
+ "top-right": [200, 200]
+ "bottom-left": [0, 0]
+ "bottom-right": [0, 0]
+ "clip-mode": outset
+ -
+ "clip-rect": [16, 402, 200, 200]
+ "backface-visible": true
+ type: clip
+ id: 6
+ complex:
+ -
+ rect: [16, 402, 200, 200]
+ radius:
+ "top-left": [0, 0]
+ "top-right": [200, 200]
+ "bottom-left": [0, 0]
+ "bottom-right": [0, 0]
+ "clip-mode": clip
+ -
+ bounds: [0, 0, 0, 0]
+ "clip-rect": [0, 0, 0, 0]
+ "backface-visible": true
+ type: "clip-chain"
+ id: 7
+ clips: [6]
+ parent: 3
+ -
+ bounds: [16, 402, 200, 200]
+ "clip-rect": [16, 402, 200, 200]
+ clip-chain: 7
+ "backface-visible": true
+ type: rect
+ color: 0 128 0 1.0000
+ id: [0, 0]
+pipelines: []
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-2.png b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-2.png
new file mode 100644
index 0000000000..9111ca4413
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-2.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-2.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-2.yaml
new file mode 100644
index 0000000000..0a82cb5bee
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-2.yaml
@@ -0,0 +1,14 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 1500, 200]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 900, 900 ]
+ blur-radius: 5000
+ clip-mode: outset
+ offset: [10, 10]
+ spread-radius: 10
+ color: [255, 0, 0]
+ border-radius: 10
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-3.png b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-3.png
new file mode 100644
index 0000000000..2b95442280
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-3.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-3.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-3.yaml
new file mode 100644
index 0000000000..49d53e721f
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-3.yaml
@@ -0,0 +1,14 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 1500, 200]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 1500, 100 ]
+ blur-radius: 200
+ clip-mode: outset
+ offset: [10, 100]
+ spread-radius: 10
+ color: [255, 0, 0]
+ border-radius: 10
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-ref.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-ref.yaml
new file mode 100644
index 0000000000..29555c8f1d
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius-ref.yaml
@@ -0,0 +1,13 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 500, 500]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 400, 400 ]
+ blur-radius: 300
+ clip-mode: outset
+ offset: [0, 0]
+ spread-radius: 0
+ color: [255, 0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius.yaml
new file mode 100644
index 0000000000..13b2239658
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-large-blur-radius.yaml
@@ -0,0 +1,13 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 500, 500]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 400, 400 ]
+ blur-radius: 2000
+ clip-mode: outset
+ offset: [0, 0]
+ spread-radius: 0
+ color: [255, 0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-non-uniform-corner.png b/gfx/wr/wrench/reftests/boxshadow/box-shadow-non-uniform-corner.png
new file mode 100644
index 0000000000..84d7af5164
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-non-uniform-corner.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-non-uniform-corner.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-non-uniform-corner.yaml
new file mode 100644
index 0000000000..2dd7175d17
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-non-uniform-corner.yaml
@@ -0,0 +1,12 @@
+---
+root:
+ items:
+ - type: box-shadow
+ bounds: [ 50, 50, 500, 200 ]
+ color: red
+ clip-mode: outset
+ blur-radius: 0
+ spread-radius: 10
+ border-radius: {
+ top-left: 32,
+ }
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread-radii-ref.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread-radii-ref.yaml
new file mode 100644
index 0000000000..e44008fcb5
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread-radii-ref.yaml
@@ -0,0 +1,21 @@
+# This emulates the result of box-shadow-spread.yaml without with a spread
+# amount of 0 compensated by manually inflating and offsetting the rectangle
+# and border radii.
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 0, 0, 280, 280 ]
+ color: blue
+ clip-mode: outset
+ offset: 300 20
+ blur-radius: 4
+ spread-radius: 0
+ border-radius:
+ top-left: [0, 0]
+ top-right: [140, 140]
+ bottom-left: [140, 140]
+ bottom-right: [0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread-radii.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread-radii.yaml
new file mode 100644
index 0000000000..902c7d089b
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread-radii.yaml
@@ -0,0 +1,18 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 0, 0, 200, 200 ]
+ color: blue
+ clip-mode: outset
+ offset: 340 60
+ blur-radius: 4
+ spread-radius: 40
+ border-radius:
+ top-left: [0, 0]
+ top-right: [100, 100]
+ bottom-left: [100, 100]
+ bottom-right: [0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread.png b/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread.png
new file mode 100644
index 0000000000..7c1910aba4
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread.yaml
new file mode 100644
index 0000000000..0add751910
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-spread.yaml
@@ -0,0 +1,68 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 20, 20, 80, 80 ]
+ color: blue
+ clip-mode: inset
+ spread-radius: 10
+ border-radius: 20
+
+ - type: box-shadow
+ bounds: [ 120, 20, 80, 80 ]
+ color: blue
+ clip-mode: inset
+ spread-radius: 10
+ border-radius: 25
+
+ - type: box-shadow
+ bounds: [ 220, 20, 80, 80 ]
+ color: blue
+ clip-mode: inset
+ spread-radius: 10
+ border-radius: 10
+
+ - type: box-shadow
+ bounds: [ 320, 20, 80, 80 ]
+ color: blue
+ clip-mode: inset
+ spread-radius: 10
+ border-radius: 9
+
+ - type: box-shadow
+ bounds: [ 420, 20, 80, 80 ]
+ color: blue
+ clip-mode: inset
+ spread-radius: 10
+ border-radius: 8
+
+ - type: box-shadow
+ bounds: [ 520, 20, 80, 80 ]
+ color: blue
+ clip-mode: inset
+ spread-radius: 10
+ border-radius: 7
+
+ - type: box-shadow
+ bounds: [ 620, 20, 80, 80 ]
+ color: blue
+ clip-mode: inset
+ spread-radius: 10
+ border-radius: 6
+
+ - type: box-shadow
+ bounds: [ 720, 20, 80, 80 ]
+ color: blue
+ clip-mode: inset
+ spread-radius: 10
+ border-radius: 5
+
+ - type: box-shadow
+ bounds: [ 820, 20, 80, 80 ]
+ color: blue
+ clip-mode: inset
+ spread-radius: 10
+ border-radius: 4
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-x.png b/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-x.png
new file mode 100644
index 0000000000..5d631c182b
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-x.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-x.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-x.yaml
new file mode 100644
index 0000000000..225433e4fe
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-x.yaml
@@ -0,0 +1,8 @@
+---
+root:
+ items:
+ - type: box-shadow
+ bounds: [ 50, 50, 100, 800 ]
+ color: red
+ blur-radius: 16
+ border-radius: 32
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-y.png b/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-y.png
new file mode 100644
index 0000000000..d76f58e170
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-y.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-y.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-y.yaml
new file mode 100644
index 0000000000..f90366b79f
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-stretch-mode-y.yaml
@@ -0,0 +1,9 @@
+---
+root:
+ items:
+ - type: box-shadow
+ bounds: [ 50, 50, 800, 100 ]
+ color: green
+ clip-mode: inset
+ blur-radius: 16
+ border-radius: 32
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-blur.png b/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-blur.png
new file mode 100644
index 0000000000..67b46a609e
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-blur.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-blur.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-blur.yaml
new file mode 100644
index 0000000000..29ab5a2a43
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-blur.yaml
@@ -0,0 +1,154 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ # 1st row
+ - type: box-shadow
+ bounds: [ 50, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 200, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+ offset: 20 0
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 350, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+ offset: 0 -40
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 500, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+ spread-radius: 30
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 650, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+ spread-radius: 30
+ offset: 50 -10
+ blur-radius: 5
+
+ # 2nd row
+ - type: box-shadow
+ bounds: [ 50, 250, 100, 100 ]
+ color: green
+ border-radius: 32
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 200, 250, 100, 100 ]
+ color: green
+ offset: 20 0
+ border-radius: 32
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 350, 250, 100, 100 ]
+ color: green
+ offset: 0 -40
+ border-radius: 32
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 500, 250, 100, 100 ]
+ color: green
+ spread-radius: 30
+ border-radius: 32
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 650, 250, 100, 100 ]
+ color: green
+ spread-radius: 30
+ offset: 50 -10
+ border-radius: 32
+ blur-radius: 5
+
+ # 3rd row
+ - type: box-shadow
+ bounds: [ 50, 450, 100, 100 ]
+ color: red
+ clip-mode: inset
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 200, 450, 100, 100 ]
+ color: red
+ clip-mode: inset
+ offset: 20 0
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 350, 450, 100, 100 ]
+ color: red
+ clip-mode: inset
+ offset: 0 -40
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 500, 450, 100, 100 ]
+ color: red
+ clip-mode: inset
+ spread-radius: 30
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 650, 450, 100, 100 ]
+ color: red
+ clip-mode: inset
+ spread-radius: 30
+ offset: 50 -10
+ blur-radius: 5
+
+ # 4th row
+ - type: box-shadow
+ bounds: [ 50, 650, 100, 100 ]
+ color: red
+ clip-mode: inset
+ border-radius: 32
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 200, 650, 100, 100 ]
+ color: red
+ clip-mode: inset
+ offset: 20 0
+ border-radius: 32
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 350, 650, 100, 100 ]
+ color: red
+ clip-mode: inset
+ offset: 0 -40
+ border-radius: 32
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 500, 650, 100, 100 ]
+ color: red
+ clip-mode: inset
+ spread-radius: 30
+ border-radius: 32
+ blur-radius: 5
+
+ - type: box-shadow
+ bounds: [ 650, 650, 100, 100 ]
+ color: red
+ clip-mode: inset
+ spread-radius: 30
+ offset: 50 -10
+ border-radius: 32
+ blur-radius: 5
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-no-blur.png b/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-no-blur.png
new file mode 100644
index 0000000000..66e6dd9c38
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-no-blur.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-no-blur.yaml b/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-no-blur.yaml
new file mode 100644
index 0000000000..8544da8ccc
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/box-shadow-suite-no-blur.yaml
@@ -0,0 +1,134 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ # 1st row
+ - type: box-shadow
+ bounds: [ 50, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+
+ - type: box-shadow
+ bounds: [ 200, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+ offset: 20 0
+
+ - type: box-shadow
+ bounds: [ 350, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+ offset: 0 -40
+
+ - type: box-shadow
+ bounds: [ 500, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+ spread-radius: 30
+
+ - type: box-shadow
+ bounds: [ 650, 50, 100, 100 ]
+ color: red
+ clip-mode: outset
+ spread-radius: 30
+ offset: 50 -10
+
+ # 2nd row
+ - type: box-shadow
+ bounds: [ 50, 250, 100, 100 ]
+ color: green
+ border-radius: 32
+
+ - type: box-shadow
+ bounds: [ 200, 250, 100, 100 ]
+ color: green
+ offset: 20 0
+ border-radius: 32
+
+ - type: box-shadow
+ bounds: [ 350, 250, 100, 100 ]
+ color: green
+ offset: 0 -40
+ border-radius: 32
+
+ - type: box-shadow
+ bounds: [ 500, 250, 100, 100 ]
+ color: green
+ spread-radius: 30
+ border-radius: 32
+
+ - type: box-shadow
+ bounds: [ 650, 250, 100, 100 ]
+ color: green
+ spread-radius: 30
+ offset: 50 -10
+ border-radius: 32
+
+ # 3rd row
+ - type: box-shadow
+ bounds: [ 50, 450, 100, 100 ]
+ color: red
+ clip-mode: inset
+
+ - type: box-shadow
+ bounds: [ 200, 450, 100, 100 ]
+ color: red
+ clip-mode: inset
+ offset: 20 0
+
+ - type: box-shadow
+ bounds: [ 350, 450, 100, 100 ]
+ color: red
+ clip-mode: inset
+ offset: 0 -40
+
+ - type: box-shadow
+ bounds: [ 500, 450, 100, 100 ]
+ color: red
+ clip-mode: inset
+ spread-radius: 30
+
+ - type: box-shadow
+ bounds: [ 650, 450, 100, 100 ]
+ color: red
+ clip-mode: inset
+ spread-radius: 30
+ offset: 50 -10
+
+ # 4th row
+ - type: box-shadow
+ bounds: [ 50, 650, 100, 100 ]
+ color: red
+ clip-mode: inset
+ border-radius: 32
+
+ - type: box-shadow
+ bounds: [ 200, 650, 100, 100 ]
+ color: red
+ clip-mode: inset
+ offset: 20 0
+ border-radius: 32
+
+ - type: box-shadow
+ bounds: [ 350, 650, 100, 100 ]
+ color: red
+ clip-mode: inset
+ offset: 0 -40
+ border-radius: 32
+
+ - type: box-shadow
+ bounds: [ 500, 650, 100, 100 ]
+ color: red
+ clip-mode: inset
+ spread-radius: 30
+ border-radius: 32
+
+ - type: box-shadow
+ bounds: [ 650, 650, 100, 100 ]
+ color: red
+ clip-mode: inset
+ spread-radius: 30
+ offset: 50 -10
+ border-radius: 32
diff --git a/gfx/wr/wrench/reftests/boxshadow/boxshadow-spread-only-ref.png b/gfx/wr/wrench/reftests/boxshadow/boxshadow-spread-only-ref.png
new file mode 100644
index 0000000000..314b17f963
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/boxshadow-spread-only-ref.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/boxshadow-spread-only.yaml b/gfx/wr/wrench/reftests/boxshadow/boxshadow-spread-only.yaml
new file mode 100644
index 0000000000..d8dabde293
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/boxshadow-spread-only.yaml
@@ -0,0 +1,13 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 600, 600]
+ items:
+ - type: box-shadow
+ bounds: [ 40, 40, 400, 400 ]
+ blur-radius: 0
+ spread-radius: 20
+ clip-mode: outset
+ border-radius: 200
+ color: black
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-alpha.png b/gfx/wr/wrench/reftests/boxshadow/inset-alpha.png
new file mode 100644
index 0000000000..bc4c0a1f37
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-alpha.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-alpha.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-alpha.yaml
new file mode 100644
index 0000000000..7764f0a276
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-alpha.yaml
@@ -0,0 +1,14 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 100, 100]
+ items:
+ - type: rect
+ bounds: [ 0, 0, 100, 100 ]
+ color: [0, 255, 0]
+ - type: box-shadow
+ bounds: [ 0, 0, 100, 100 ]
+ clip-mode: inset
+ color: [255, 255, 255, 0.1]
+ blur-radius: 100
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-border-radius-ref.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-border-radius-ref.yaml
new file mode 100644
index 0000000000..62d5dd10c9
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-border-radius-ref.yaml
@@ -0,0 +1,16 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 100, 100]
+ items:
+ - type: clip
+ bounds: [0, 0, 100, 100]
+ complex:
+ - rect: [ 10, 10, 80, 80 ]
+ radius: 10
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 80, 80 ]
+ blur-radius: 25
+ clip-mode: inset
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-border-radius.png b/gfx/wr/wrench/reftests/boxshadow/inset-border-radius.png
new file mode 100644
index 0000000000..1572de5b77
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-border-radius.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-border-radius.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-border-radius.yaml
new file mode 100644
index 0000000000..cb5c274f5a
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-border-radius.yaml
@@ -0,0 +1,11 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 100, 100]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 80, 80 ]
+ blur-radius: 25
+ clip-mode: inset
+ border-radius: 10
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-downscale.png b/gfx/wr/wrench/reftests/boxshadow/inset-downscale.png
new file mode 100644
index 0000000000..aef7968600
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-downscale.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-downscale.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-downscale.yaml
new file mode 100644
index 0000000000..dd0c3abc2d
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-downscale.yaml
@@ -0,0 +1,10 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 400, 200]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 400, 200 ]
+ blur-radius: 50
+ clip-mode: inset
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-empty.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-empty.yaml
new file mode 100644
index 0000000000..85d2840546
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-empty.yaml
@@ -0,0 +1,13 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 500, 500]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 400, 400 ]
+ blur-radius: 0
+ clip-mode: inset
+ offset: [0, 0]
+ spread-radius: 0
+ color: [255, 0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-large-offset-ref.png b/gfx/wr/wrench/reftests/boxshadow/inset-large-offset-ref.png
new file mode 100644
index 0000000000..e1d189eaa0
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-large-offset-ref.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-large-offset.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-large-offset.yaml
new file mode 100644
index 0000000000..1cc2355d02
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-large-offset.yaml
@@ -0,0 +1,13 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 500, 500]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 400, 400 ]
+ blur-radius: 1
+ clip-mode: inset
+ offset: [0, 200]
+ spread-radius: 0
+ color: [255, 0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-mask-region.png b/gfx/wr/wrench/reftests/boxshadow/inset-mask-region.png
new file mode 100644
index 0000000000..b696cbfd41
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-mask-region.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-mask-region.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-mask-region.yaml
new file mode 100644
index 0000000000..08f52af181
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-mask-region.yaml
@@ -0,0 +1,11 @@
+---
+root:
+ items:
+ - type: stacking-context
+ items:
+ - type: box-shadow
+ bounds: [ 50, 50, 400.1, 400.1 ]
+ color: red
+ blur-radius: 10
+ clip-mode: inset
+ border-radius: 185
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-neg-offset.png b/gfx/wr/wrench/reftests/boxshadow/inset-neg-offset.png
new file mode 100644
index 0000000000..b6b232a1d0
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-neg-offset.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-neg-offset.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-neg-offset.yaml
new file mode 100644
index 0000000000..9fe63176c0
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-neg-offset.yaml
@@ -0,0 +1,18 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 22, 22, 200, 80 ]
+ color: blue
+ clip-mode: inset
+ offset: -2 -2
+ blur-radius: 20
+ spread-radius: 0
+ border-radius:
+ top-left: [0, 0]
+ top-right: [0, 0]
+ bottom-left: [0, 0]
+ bottom-right: [0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-no-blur-radius-ref.png b/gfx/wr/wrench/reftests/boxshadow/inset-no-blur-radius-ref.png
new file mode 100644
index 0000000000..9c6a8d4bcf
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-no-blur-radius-ref.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-no-blur-radius.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-no-blur-radius.yaml
new file mode 100644
index 0000000000..eb9c783718
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-no-blur-radius.yaml
@@ -0,0 +1,13 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 100, 100]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 80, 80 ]
+ blur-radius: 0
+ clip-mode: inset
+ border-radius: 10
+ offset: 10 10
+ color: [255, 0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-offset.png b/gfx/wr/wrench/reftests/boxshadow/inset-offset.png
new file mode 100644
index 0000000000..d5f41456fe
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-offset.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-offset.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-offset.yaml
new file mode 100644
index 0000000000..17fa232f3a
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-offset.yaml
@@ -0,0 +1,18 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 22, 22, 200, 80 ]
+ color: blue
+ clip-mode: inset
+ offset: 5 5
+ blur-radius: 20
+ spread-radius: 0
+ border-radius:
+ top-left: [0, 0]
+ top-right: [0, 0]
+ bottom-left: [0, 0]
+ bottom-right: [0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-simple-ref.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-simple-ref.yaml
new file mode 100644
index 0000000000..526a1fa4e0
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-simple-ref.yaml
@@ -0,0 +1,9 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 100, 100]
+ items:
+ - type: rect
+ bounds: [ 10, 10, 80, 80 ]
+ color: [0, 255, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-simple.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-simple.yaml
new file mode 100644
index 0000000000..78f6ef18c1
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-simple.yaml
@@ -0,0 +1,13 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 100, 100]
+ items:
+ - type: rect
+ bounds: [ 10, 10, 80, 80 ]
+ color: [0, 255, 0]
+ - type: box-shadow
+ bounds: [ 10, 10, 80, 80 ]
+ blur-radius: 25
+ clip-mode: inset
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-spread-large-ref.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-spread-large-ref.yaml
new file mode 100644
index 0000000000..bdeec79e35
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-spread-large-ref.yaml
@@ -0,0 +1,9 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 100, 100]
+ items:
+ - type: rect
+ bounds: [ 10, 10, 80, 80 ]
+ color: [255, 0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-spread-large.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-spread-large.yaml
new file mode 100644
index 0000000000..05cc5e40f2
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-spread-large.yaml
@@ -0,0 +1,12 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 100, 100]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 80, 80 ]
+ blur-radius: 5
+ clip-mode: inset
+ spread-radius: 200
+ color: [255, 0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-spread-ref.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-spread-ref.yaml
new file mode 100644
index 0000000000..76802f9db0
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-spread-ref.yaml
@@ -0,0 +1,10 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 100, 100]
+ items:
+ - type: rect
+ bounds: [ 10, 10, 80, 80 ]
+ color: [255, 255, 255]
+
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-spread.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-spread.yaml
new file mode 100644
index 0000000000..de09797dcf
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-spread.yaml
@@ -0,0 +1,12 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [50, 50, 100, 100]
+ items:
+ - type: box-shadow
+ bounds: [ 10, 10, 80, 80 ]
+ blur-radius: 5
+ clip-mode: inset
+ spread-radius: 20
+ color: [0, 0, 0]
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-subpx.png b/gfx/wr/wrench/reftests/boxshadow/inset-subpx.png
new file mode 100644
index 0000000000..89ca1e44b1
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-subpx.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/inset-subpx.yaml b/gfx/wr/wrench/reftests/boxshadow/inset-subpx.yaml
new file mode 100644
index 0000000000..22dc3f0959
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/inset-subpx.yaml
@@ -0,0 +1,12 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 76, 67.5, 59.016666, 39 ]
+ offset: [30, 9]
+ blur-radius: 7
+ color: blue
+ clip-mode: inset
diff --git a/gfx/wr/wrench/reftests/boxshadow/invalid-ref.yaml b/gfx/wr/wrench/reftests/boxshadow/invalid-ref.yaml
new file mode 100644
index 0000000000..4f2245ccaa
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/invalid-ref.yaml
@@ -0,0 +1,5 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
diff --git a/gfx/wr/wrench/reftests/boxshadow/invalid.yaml b/gfx/wr/wrench/reftests/boxshadow/invalid.yaml
new file mode 100644
index 0000000000..6c1fecb995
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/invalid.yaml
@@ -0,0 +1,12 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 100, 100, 200, 10 ]
+ blur-radius: 10.5
+ offset: [15, 15]
+ spread-radius: -15
+ color: red
diff --git a/gfx/wr/wrench/reftests/boxshadow/no-stretch.png b/gfx/wr/wrench/reftests/boxshadow/no-stretch.png
new file mode 100644
index 0000000000..e916a7d382
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/no-stretch.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/no-stretch.yaml b/gfx/wr/wrench/reftests/boxshadow/no-stretch.yaml
new file mode 100644
index 0000000000..4276ffa929
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/no-stretch.yaml
@@ -0,0 +1,21 @@
+# Test that box-shadows with overlapping corners
+# are drawn with simple mode (not stretched).
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 50, 50, 150, 150 ]
+ color: red
+ clip-mode: outset
+ blur-radius: 2.4
+ offset: [100, 0]
+ spread-radius: -40
+ border-radius: {
+ top-left: 112,
+ top-right: 48,
+ bottom-left: 48,
+ bottom-right: 112,
+ }
diff --git a/gfx/wr/wrench/reftests/boxshadow/overlap1.png b/gfx/wr/wrench/reftests/boxshadow/overlap1.png
new file mode 100644
index 0000000000..a47c3ad696
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/overlap1.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/overlap1.yaml b/gfx/wr/wrench/reftests/boxshadow/overlap1.yaml
new file mode 100644
index 0000000000..1744983da6
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/overlap1.yaml
@@ -0,0 +1,18 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 50, 10, 200, 80 ]
+ color: black
+ clip-mode: outset
+ offset: 0 150
+ blur-radius: 20
+ border-radius:
+ top-left: [100, 40]
+ top-right: [0, 0]
+ bottom-left: [100, 40]
+ bottom-right: [0, 0]
+
diff --git a/gfx/wr/wrench/reftests/boxshadow/overlap2.png b/gfx/wr/wrench/reftests/boxshadow/overlap2.png
new file mode 100644
index 0000000000..6b7b176011
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/overlap2.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/overlap2.yaml b/gfx/wr/wrench/reftests/boxshadow/overlap2.yaml
new file mode 100644
index 0000000000..59ffb2c438
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/overlap2.yaml
@@ -0,0 +1,19 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: box-shadow
+ bounds: [ 0, 0, 200, 200 ]
+ color: red
+ clip-mode: outset
+ offset: 200 0
+ blur-radius: 1
+ spread-radius: 0
+ border-radius:
+ top-left: [100, 100]
+ top-right: [0, 0]
+ bottom-left: [0, 0]
+ bottom-right: [150, 150]
+
diff --git a/gfx/wr/wrench/reftests/boxshadow/reftest.list b/gfx/wr/wrench/reftests/boxshadow/reftest.list
new file mode 100644
index 0000000000..279b9fb59a
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/reftest.list
@@ -0,0 +1,39 @@
+!= inset-simple.yaml inset-simple-ref.yaml
+!= inset-spread.yaml inset-spread-ref.yaml
+fuzzy-if(platform(swgl),3,2) == inset-no-blur-radius.yaml inset-no-blur-radius-ref.png
+== inset-spread-large.yaml inset-spread-large-ref.yaml
+platform(linux,mac) == inset-alpha.yaml inset-alpha.png
+platform(linux,mac) == boxshadow-spread-only.yaml boxshadow-spread-only-ref.png
+== box-shadow-clip.yaml box-shadow-clip-ref.yaml
+fuzzy(1,402) fuzzy-if(platform(swgl),2,1208) fuzzy-if(env(android,device),6,399) == inset-large-offset.yaml inset-large-offset-ref.png
+platform(linux,mac) == inset-border-radius.yaml inset-border-radius.png
+platform(linux,mac) == inset-offset.yaml inset-offset.png
+platform(linux,mac) == inset-neg-offset.yaml inset-neg-offset.png
+== box-shadow-empty.yaml blank.yaml
+platform(linux,mac) == box-shadow-suite-no-blur.yaml box-shadow-suite-no-blur.png
+platform(linux,mac) fuzzy(1,84) == box-shadow-suite-blur.yaml box-shadow-suite-blur.png
+fuzzy(1,8) == box-shadow-large-blur-radius.yaml box-shadow-large-blur-radius-ref.yaml
+fuzzy(1,6388) == rounding.yaml rounding-ref.yaml
+platform(linux,mac) == box-shadow-border-radii.yaml box-shadow-border-radii.png
+skip_on(android) fuzzy-if(platform(swgl),9,34) == box-shadow-spread.yaml box-shadow-spread.png # Too wide for Android
+== box-shadow-spread-radii.yaml box-shadow-spread-radii-ref.yaml
+== invalid.yaml invalid-ref.yaml
+== inset-empty.yaml blank.yaml
+platform(linux,mac) == inset-subpx.yaml inset-subpx.png
+platform(linux,mac) fuzzy(1,4) == inset-downscale.yaml inset-downscale.png
+platform(linux,mac) fuzzy(1,979) == box-shadow-cache.yaml box-shadow-cache.png
+platform(linux,mac) fuzzy(1,685) == overlap1.yaml overlap1.png
+fuzzy(2,757) fuzzy-if(platform(swgl),2,2414) == overlap2.yaml overlap2.png
+platform(linux,mac) fuzzy(1,48) == no-stretch.yaml no-stretch.png
+platform(linux,mac) fuzzy(1,9) == box-shadow-stretch-mode-x.yaml box-shadow-stretch-mode-x.png
+platform(linux,mac) fuzzy(1,41) == box-shadow-stretch-mode-y.yaml box-shadow-stretch-mode-y.png
+platform(linux,mac) fuzzy(1,14) == inset-mask-region.yaml inset-mask-region.png
+== box-shadow-blurred-overlapping-radii.yaml box-shadow-blurred-overlapping-radii-ref.yaml
+
+fuzzy(1,5) platform(linux,mac) == box-shadow-huge-radius.yaml box-shadow-huge-radius.png
+
+platform(linux,mac) == box-shadow-large-blur-radius-2.yaml box-shadow-large-blur-radius-2.png
+platform(linux,mac) fuzzy(1,8) == box-shadow-large-blur-radius-3.yaml box-shadow-large-blur-radius-3.png
+platform(linux,mac) fuzzy(1,79) == scale.yaml scale.png
+platform(linux,mac) fuzzy(1,4) == box-shadow-non-uniform-corner.yaml box-shadow-non-uniform-corner.png
+== box-shadow-clipped-corners.yaml box-shadow-clipped-corners-ref.yaml
diff --git a/gfx/wr/wrench/reftests/boxshadow/rounding-ref.yaml b/gfx/wr/wrench/reftests/boxshadow/rounding-ref.yaml
new file mode 100644
index 0000000000..e6e2fb8464
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/rounding-ref.yaml
@@ -0,0 +1,18 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: rect
+ bounds: [100, 100, 500, 500]
+ color: green
+ - type: rect
+ bounds: [200, 200, 300, 300]
+ color: black
+ - type: box-shadow
+ bounds: [200, 200, 300, 300]
+ blur-radius: 20
+ clip-mode: inset
+ spread-radius: 100
+ color: green
diff --git a/gfx/wr/wrench/reftests/boxshadow/rounding.yaml b/gfx/wr/wrench/reftests/boxshadow/rounding.yaml
new file mode 100644
index 0000000000..8078b2e1d6
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/rounding.yaml
@@ -0,0 +1,15 @@
+---
+root:
+ items:
+ - type: stacking-context
+ bounds: [0, 0, 1000, 1000]
+ items:
+ - type: rect
+ bounds: [100, 100, 500, 500]
+ color: black
+ - type: box-shadow
+ bounds: [100, 100, 500, 500]
+ blur-radius: 20
+ clip-mode: inset
+ spread-radius: 200
+ color: green
diff --git a/gfx/wr/wrench/reftests/boxshadow/scale.png b/gfx/wr/wrench/reftests/boxshadow/scale.png
new file mode 100644
index 0000000000..58505f2845
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/scale.png
Binary files differ
diff --git a/gfx/wr/wrench/reftests/boxshadow/scale.yaml b/gfx/wr/wrench/reftests/boxshadow/scale.yaml
new file mode 100644
index 0000000000..12263b4eb9
--- /dev/null
+++ b/gfx/wr/wrench/reftests/boxshadow/scale.yaml
@@ -0,0 +1,183 @@
+# Test that box shadows are drawn with correct symmetry in
+# a variety of cases. This test checks for various scale
+# factors, in combination with box shadows clipped by the
+# screen rect. It also has come large box shadows that check
+# the symmetry still works with segmentation enabled.
+---
+root:
+ items:
+ - type: stacking-context
+ transform: scale(0.3)
+ items:
+ - type: box-shadow
+ bounds: [ -70, 50, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.4)
+ items:
+ - type: box-shadow
+ bounds: [ -70, 150, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.5)
+ items:
+ - type: box-shadow
+ bounds: [ -70, 250, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.6)
+ items:
+ - type: box-shadow
+ bounds: [ -70, 350, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.7)
+ items:
+ - type: box-shadow
+ bounds: [ -70, 450, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.73)
+ items:
+ - type: box-shadow
+ bounds: [ -70, 550, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.75)
+ items:
+ - type: box-shadow
+ bounds: [ -70, 650, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.77)
+ items:
+ - type: box-shadow
+ bounds: [ -70, 750, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.8)
+ items:
+ - type: box-shadow
+ bounds: [ -70, 850, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ items:
+ - type: box-shadow
+ bounds: [ -70, 800, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+
+ - type: stacking-context
+ transform: scale(0.3)
+ items:
+ - type: box-shadow
+ bounds: [ 50, 50, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.4)
+ items:
+ - type: box-shadow
+ bounds: [ 50, 150, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.5)
+ items:
+ - type: box-shadow
+ bounds: [ 50, 250, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.6)
+ items:
+ - type: box-shadow
+ bounds: [ 50, 350, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.7)
+ items:
+ - type: box-shadow
+ bounds: [ 50, 450, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.73)
+ items:
+ - type: box-shadow
+ bounds: [ 50, 550, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.75)
+ items:
+ - type: box-shadow
+ bounds: [ 50, 650, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.77)
+ items:
+ - type: box-shadow
+ bounds: [ 50, 750, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ transform: scale(0.8)
+ items:
+ - type: box-shadow
+ bounds: [ 50, 850, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+ - type: stacking-context
+ items:
+ - type: box-shadow
+ bounds: [ 50, 800, 100, 100 ]
+ color: black
+ blur-radius: 1
+ clip-mode: inset
+
+ - type: stacking-context
+ items:
+ - type: box-shadow
+ bounds: [ 200, -100, 600, 200 ]
+ color: black
+ blur-radius: 5
+ clip-mode: inset
+
+ - type: stacking-context
+ items:
+ - type: box-shadow
+ bounds: [ 200, 200, 600, 200 ]
+ color: black
+ blur-radius: 5
+ clip-mode: outset