[librsvg] Oops, actually allow recursive fallbacks for patterns and gradients.
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] Oops, actually allow recursive fallbacks for patterns and gradients.
- Date: Wed, 8 Feb 2017 19:48:34 +0000 (UTC)
commit 0da1da04567336bbf2c76afc754b32e474db3f89
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Feb 8 13:47:47 2017 -0600
Oops, actually allow recursive fallbacks for patterns and gradients.
Include a new test file for this in patterns.
rust/src/gradient.rs | 4 +-
rust/src/pattern.rs | 4 +-
.../reftests/svg1.1/pservers-pattern-05-f-ref.png | Bin 0 -> 7148 bytes
.../reftests/svg1.1/pservers-pattern-05-f.svg | 64 ++++++++++++++++++++
4 files changed, 66 insertions(+), 6 deletions(-)
---
diff --git a/rust/src/gradient.rs b/rust/src/gradient.rs
index f3f7ce8..db73346 100644
--- a/rust/src/gradient.rs
+++ b/rust/src/gradient.rs
@@ -106,9 +106,7 @@ impl GradientCommon {
if self.spread.is_none () { self.spread = fallback.spread; }
if self.stops.is_none () { self.stops = fallback.clone_stops (); }
- if self.fallback.is_none () {
- self.fallback = clone_fallback_name (&fallback.fallback);
- }
+ self.fallback = clone_fallback_name (&fallback.fallback);
}
fn add_color_stop (&mut self, mut offset: f64, rgba: u32) {
diff --git a/rust/src/pattern.rs b/rust/src/pattern.rs
index ea08818..4759e88 100644
--- a/rust/src/pattern.rs
+++ b/rust/src/pattern.rs
@@ -103,9 +103,7 @@ impl Pattern {
if self.width.is_none () { self.width = fallback.width; }
if self.height.is_none () { self.height = fallback.height; }
- if self.fallback.is_none () {
- self.fallback = clone_fallback_name (&fallback.fallback);
- }
+ self.fallback = clone_fallback_name (&fallback.fallback);
if !pattern_node_has_children (self.c_node) {
self.c_node = fallback.c_node;
diff --git a/tests/fixtures/reftests/svg1.1/pservers-pattern-05-f-ref.png
b/tests/fixtures/reftests/svg1.1/pservers-pattern-05-f-ref.png
new file mode 100644
index 0000000..e58959f
Binary files /dev/null and b/tests/fixtures/reftests/svg1.1/pservers-pattern-05-f-ref.png differ
diff --git a/tests/fixtures/reftests/svg1.1/pservers-pattern-05-f.svg
b/tests/fixtures/reftests/svg1.1/pservers-pattern-05-f.svg
new file mode 100644
index 0000000..4fe22ab
--- /dev/null
+++ b/tests/fixtures/reftests/svg1.1/pservers-pattern-05-f.svg
@@ -0,0 +1,64 @@
+<svg id="svg-root" width="100%" height="100%" viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!--======================================================================-->
+ <!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
+ <!--= Institute of Technology, European Research Consortium for =-->
+ <!--= Informatics and Mathematics (ERCIM), Keio University). =-->
+ <!--= All Rights Reserved. =-->
+ <!--= See http://www.w3.org/Consortium/Legal/. =-->
+ <!--======================================================================-->
+ <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/" template-version="1.4"
reviewer="CM" author="Microsoft" status="reviewed" version="$Revision: 1.3 $" testname="$RCSfile:
pservers-pattern-05-f.svg,v $">
+ <d:testDescription xmlns="http://www.w3.org/1999/xhtml"
href="http://www.w3.org/TR/SVG/pservers.html#Patterns">
+ <p>
+ Test that a 'pattern' element can inherit attributes through multiple levels of
+ 'xlink:href' referencing.
+ </p>
+ <p>
+ The test defines a pattern 'pattern1' with some attributes that scale the contents. The attributes on
+ 'pattern1' are inherited into 'pattern2' and then inherited from 'pattern2'
+ into 'pattern3'. 'pattern3' has a green circle as its graphical content.
+ A 'rect' uses 'pattern3' as its fill, if the attributes are correctly inherited into
+ 'pattern3', then the green circle will occlude a red circle in the same position.
+ </p>
+ </d:testDescription>
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <p>Run the test. No interaction required.</p>
+ </d:operatorScript>
+ <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
+ <p>
+ The test passed if there is no red visible on the page.
+ </p>
+ </d:passCriteria>
+ </d:SVGTestCase>
+ <title id="test-title">$RCSfile: pservers-pattern-05-f.svg,v $</title>
+ <defs>
+ <font-face
+ font-family="SVGFreeSansASCII"
+ unicode-range="U+0-7F">
+ <font-face-src>
+ <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
+ </font-face-src>
+ </font-face>
+ </defs>
+ <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
+ <defs>
+ <pattern id="Pattern1" patternUnits="userSpaceOnUse" width="100" height="100" viewBox="0 0 10 10" />
+ <pattern id="Pattern2" xlink:href="#Pattern1" />
+ <pattern id="Pattern3" xlink:href="#Pattern2">
+ <circle cx="5" cy="5" r="2" fill="green"/>
+ </pattern>
+ </defs>
+ <circle cx="50" cy="50" r="20" fill="red" />
+ <rect fill="url(#Pattern3)" width="100" height="100" />
+ </g>
+ <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
+ <text id="revision" x="10" y="340" stroke="none"
+ fill="black">$Revision: 1.3 $</text>
+ </g>
+ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
+ <!-- comment out this watermark once the test is approved -->
+ <g id="draft-watermark">
+ <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
+ </g>
+</svg>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]