diff options
-rw-r--r-- | rsvg_internals/src/filters/context.rs | 5 | ||||
-rw-r--r-- | tests/fixtures/reftests/test-filter-effects-region-ref.png | bin | 1624 -> 1636 bytes | |||
-rw-r--r-- | tests/fixtures/reftests/test-filter-effects-region.svg | 14 |
3 files changed, 12 insertions, 7 deletions
diff --git a/rsvg_internals/src/filters/context.rs b/rsvg_internals/src/filters/context.rs index f7335fc1..40edaf6b 100644 --- a/rsvg_internals/src/filters/context.rs +++ b/rsvg_internals/src/filters/context.rs @@ -437,9 +437,8 @@ impl FilterContext { where for<'a> F: FnOnce(Box<Fn(&RsvgLength) -> f64 + 'a>) -> T, { - // TODO: shouldn't the values be from the target node rather than from the filter node - // itself? - let cascaded = self.node.get_cascaded_values(); + // Filters use the properties of the target node. + let cascaded = self.node_being_filtered.get_cascaded_values(); let values = cascaded.get(); let filter = self.node.get_impl::<NodeFilter>().unwrap(); diff --git a/tests/fixtures/reftests/test-filter-effects-region-ref.png b/tests/fixtures/reftests/test-filter-effects-region-ref.png Binary files differindex 9193d442..52ffd374 100644 --- a/tests/fixtures/reftests/test-filter-effects-region-ref.png +++ b/tests/fixtures/reftests/test-filter-effects-region-ref.png diff --git a/tests/fixtures/reftests/test-filter-effects-region.svg b/tests/fixtures/reftests/test-filter-effects-region.svg index 6e11828e..7cf4eaca 100644 --- a/tests/fixtures/reftests/test-filter-effects-region.svg +++ b/tests/fixtures/reftests/test-filter-effects-region.svg @@ -28,27 +28,33 @@ <feFlood flood-color="green"/> </filter> + <!-- Same as above but for the primitive subregion. --> + <filter id="cascading-primitive" style="font-size: 30pt"> + <feFlood x="1em" y="1em" flood-color="green"/> + </filter> + <g transform="translate(30 20)"> <rect fill="red" x="1" y="1" width="50" height="50"/> <rect fill="red" x="1" y="1" width="50" height="50" filter="url(#defaults)"/> - <rect fill="red" x="1" y="100" width="50" height="50"/> </g> <g transform="translate(100 20)"> <rect fill="red" x="1" y="1" width="50" height="50"/> <rect fill="red" x="1" y="1" width="50" height="50" filter="url(#fractions)"/> - <rect fill="red" x="1" y="100" width="50" height="50"/> </g> <g transform="translate(170 20)" style="font-size: 7pt"> <rect fill="red" x="1" y="1" width="50" height="50"/> <rect fill="red" x="1" y="1" width="50" height="50" filter="url(#cascading)"/> - <rect fill="red" x="1" y="100" width="50" height="50"/> + </g> + + <g transform="translate(170 100)" style="font-size: 7pt"> + <rect fill="red" x="1" y="1" width="50" height="50"/> + <rect fill="red" x="1" y="1" width="50" height="50" filter="url(#cascading-primitive)"/> </g> <g transform="translate(300 20)"> <rect fill="red" x="1" y="1" width="50" height="50"/> <rect fill="red" x="1" y="1" width="50" height="50" filter="url(#usou-defaults)"/> - <rect fill="red" x="1" y="100" width="50" height="50"/> </g> </svg> |