summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2018-06-13 11:14:43 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2018-06-13 11:14:43 +0300
commit0a370f5a6d4d2390fbb500362a6dc2ab326a7939 (patch)
tree7b67ca16d68a29265db906ef4ccba336b8a0bb08
parent62de56f91a43bad1f8e79169709aae373b294f72 (diff)
downloadlibrsvg-0a370f5a6d4d2390fbb500362a6dc2ab326a7939.tar.gz
Use correct CSS values in with_primitive_units()
-rw-r--r--rsvg_internals/src/filters/context.rs5
-rw-r--r--tests/fixtures/reftests/test-filter-effects-region-ref.pngbin1624 -> 1636 bytes
-rw-r--r--tests/fixtures/reftests/test-filter-effects-region.svg14
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
index 9193d442..52ffd374 100644
--- a/tests/fixtures/reftests/test-filter-effects-region-ref.png
+++ b/tests/fixtures/reftests/test-filter-effects-region-ref.png
Binary files differ
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>