summaryrefslogtreecommitdiffstats
path: root/svgio/qa/cppunit/data
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 05:54:39 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 05:54:39 +0000
commit267c6f2ac71f92999e969232431ba04678e7437e (patch)
tree358c9467650e1d0a1d7227a21dac2e3d08b622b2 /svgio/qa/cppunit/data
parentInitial commit. (diff)
downloadlibreoffice-267c6f2ac71f92999e969232431ba04678e7437e.tar.xz
libreoffice-267c6f2ac71f92999e969232431ba04678e7437e.zip
Adding upstream version 4:24.2.0.upstream/4%24.2.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'svgio/qa/cppunit/data')
-rw-r--r--svgio/qa/cppunit/data/47446.svg19
-rw-r--r--svgio/qa/cppunit/data/47446b.svg18
-rw-r--r--svgio/qa/cppunit/data/ClipPathAndParentStyle.svg10
-rw-r--r--svgio/qa/cppunit/data/ClipPathAndStyle.svg13
-rw-r--r--svgio/qa/cppunit/data/ClipPathUsingClipPath.svg24
-rw-r--r--svgio/qa/cppunit/data/ClipRule.svg18
-rw-r--r--svgio/qa/cppunit/data/CssClassRedefinition.svg13
-rw-r--r--svgio/qa/cppunit/data/Drawing_NoWidthHeight.svg12
-rw-r--r--svgio/qa/cppunit/data/Drawing_WithWidthHeight.svg14
-rw-r--r--svgio/qa/cppunit/data/FillRule.svg6
-rw-r--r--svgio/qa/cppunit/data/FontsizeKeywords.svg14
-rw-r--r--svgio/qa/cppunit/data/FontsizePercentage.svg3
-rw-r--r--svgio/qa/cppunit/data/FontsizeRelative.svg6
-rw-r--r--svgio/qa/cppunit/data/MarkerOrient.svg22
-rw-r--r--svgio/qa/cppunit/data/RGBAColor.svg4
-rw-r--r--svgio/qa/cppunit/data/RGBColor.svg4
-rw-r--r--svgio/qa/cppunit/data/Rect.svg4
-rw-r--r--svgio/qa/cppunit/data/RectWithParentStyles.svg13
-rw-r--r--svgio/qa/cppunit/data/RectWithStyles.svg4
-rw-r--r--svgio/qa/cppunit/data/RectWithStylesByGroup.svg18
-rw-r--r--svgio/qa/cppunit/data/ShapeWithClipPath.svg13
-rw-r--r--svgio/qa/cppunit/data/ShapeWithClipPathAndCssStyle.svg13
-rw-r--r--svgio/qa/cppunit/data/VisiotorTest-Rect.svg4
-rw-r--r--svgio/qa/cppunit/data/em_units.svg14
-rw-r--r--svgio/qa/cppunit/data/filterFeColorMatrix.svg59
-rw-r--r--svgio/qa/cppunit/data/filterFeDropShadow.svg10
-rw-r--r--svgio/qa/cppunit/data/filterFeFlood.svg16
-rw-r--r--svgio/qa/cppunit/data/filterFeGaussianBlur.svg11
-rw-r--r--svgio/qa/cppunit/data/filterFeImage.svg16
-rw-r--r--svgio/qa/cppunit/data/filterFeOffset.svg18
-rw-r--r--svgio/qa/cppunit/data/i125329.svg12
-rw-r--r--svgio/qa/cppunit/data/markerInCssStyle.svg14
-rw-r--r--svgio/qa/cppunit/data/markerInPresentation.svg12
-rw-r--r--svgio/qa/cppunit/data/maskText.svg26
-rw-r--r--svgio/qa/cppunit/data/masking-path-07-b.svg147
-rw-r--r--svgio/qa/cppunit/data/noneColor.svg3
-rw-r--r--svgio/qa/cppunit/data/path.svg3
-rw-r--r--svgio/qa/cppunit/data/symbol.svg11
-rw-r--r--svgio/qa/cppunit/data/tdf101237.svg11
-rw-r--r--svgio/qa/cppunit/data/tdf103888.svg11
-rw-r--r--svgio/qa/cppunit/data/tdf104339.svg31
-rw-r--r--svgio/qa/cppunit/data/tdf117920.svg7
-rw-r--r--svgio/qa/cppunit/data/tdf123926.svg14
-rw-r--r--svgio/qa/cppunit/data/tdf129356.svg34
-rw-r--r--svgio/qa/cppunit/data/tdf145896.svg12
-rw-r--r--svgio/qa/cppunit/data/tdf149673.svg7
-rw-r--r--svgio/qa/cppunit/data/tdf149880.svg11
-rw-r--r--svgio/qa/cppunit/data/tdf149893.svg3
-rw-r--r--svgio/qa/cppunit/data/tdf150124.svg12
-rw-r--r--svgio/qa/cppunit/data/tdf151103.svg18
-rw-r--r--svgio/qa/cppunit/data/tdf155733.svg20
-rw-r--r--svgio/qa/cppunit/data/tdf155814.svg25
-rw-r--r--svgio/qa/cppunit/data/tdf155819.svg15
-rw-r--r--svgio/qa/cppunit/data/tdf155833.svg31
-rw-r--r--svgio/qa/cppunit/data/tdf155932.svg22
-rw-r--r--svgio/qa/cppunit/data/tdf156018.svg11
-rw-r--r--svgio/qa/cppunit/data/tdf156034.svg34
-rw-r--r--svgio/qa/cppunit/data/tdf156038.svg34
-rw-r--r--svgio/qa/cppunit/data/tdf156167.svg18
-rw-r--r--svgio/qa/cppunit/data/tdf156168.svg34
-rw-r--r--svgio/qa/cppunit/data/tdf156201.svg36
-rw-r--r--svgio/qa/cppunit/data/tdf156236.svg7
-rw-r--r--svgio/qa/cppunit/data/tdf156251.svg17
-rw-r--r--svgio/qa/cppunit/data/tdf156269.svg8
-rw-r--r--svgio/qa/cppunit/data/tdf156271.svg6
-rw-r--r--svgio/qa/cppunit/data/tdf156283.svg4
-rw-r--r--svgio/qa/cppunit/data/tdf156569.svg4
-rw-r--r--svgio/qa/cppunit/data/tdf156577.svg8
-rw-r--r--svgio/qa/cppunit/data/tdf156616.svg29
-rw-r--r--svgio/qa/cppunit/data/tdf156777.svg14
-rw-r--r--svgio/qa/cppunit/data/tdf156834.svg7
-rw-r--r--svgio/qa/cppunit/data/tdf156837.svg13
-rw-r--r--svgio/qa/cppunit/data/tdf45771.svg5
-rw-r--r--svgio/qa/cppunit/data/tdf79163.svg8
-rw-r--r--svgio/qa/cppunit/data/tdf85770.svg7
-rw-r--r--svgio/qa/cppunit/data/tdf86938.svg13
-rw-r--r--svgio/qa/cppunit/data/tdf87309.svg4
-rw-r--r--svgio/qa/cppunit/data/tdf93583.svg7
-rw-r--r--svgio/qa/cppunit/data/tdf94765.svg14
-rw-r--r--svgio/qa/cppunit/data/tdf95400.svg8
-rw-r--r--svgio/qa/cppunit/data/tdf97542_1.svg15
-rw-r--r--svgio/qa/cppunit/data/tdf97542_2.svg15
-rw-r--r--svgio/qa/cppunit/data/tdf97543.svg4
-rw-r--r--svgio/qa/cppunit/data/tdf97710.svg8
-rw-r--r--svgio/qa/cppunit/data/tdf97717.svg11
-rw-r--r--svgio/qa/cppunit/data/tdf97936.svg5
-rw-r--r--svgio/qa/cppunit/data/tdf97941.svg6
-rw-r--r--svgio/qa/cppunit/data/tdf99115.svg40
-rw-r--r--svgio/qa/cppunit/data/tdf99994.svg8
-rw-r--r--svgio/qa/cppunit/data/textXmlSpace.svg16
-rw-r--r--svgio/qa/cppunit/data/tspan-fill-opacity.svg15
91 files changed, 1418 insertions, 0 deletions
diff --git a/svgio/qa/cppunit/data/47446.svg b/svgio/qa/cppunit/data/47446.svg
new file mode 100644
index 0000000000..aec66b9bdc
--- /dev/null
+++ b/svgio/qa/cppunit/data/47446.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="no" ?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="12cm" height="4cm" viewBox="0 0 1200 400"
+ xmlns="http://www.w3.org/2000/svg" version="1.1">
+<defs>
+ <marker id="Triangle"
+ markerUnits="strokeWidth" refY="3"
+ markerWidth="6" markerHeight="6"
+ orient="auto">
+ <path d="M 0 0 L 6 3 L 0 6 z"
+ stroke-width="0.5" stroke="black"/>
+ </marker>
+</defs>
+
+<polyline fill="none" stroke="red" stroke-width="10"
+ points="450,50 550,50 650,150"
+ marker-end="url(#Triangle)" />
+</svg>
diff --git a/svgio/qa/cppunit/data/47446b.svg b/svgio/qa/cppunit/data/47446b.svg
new file mode 100644
index 0000000000..29cfce5d84
--- /dev/null
+++ b/svgio/qa/cppunit/data/47446b.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="no" ?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="12cm" height="4cm" viewBox="0 0 1200 400"
+ xmlns="http://www.w3.org/2000/svg" version="1.1">
+<defs fill="yellow">
+ <marker id="Triangle"
+ markerUnits="strokeWidth" refY="3"
+ markerWidth="6" markerHeight="6"
+ orient="auto">
+ <path d="M 0 0 L 6 3 L 0 6 z"
+ stroke-width="0.5" stroke="black"/>
+ </marker>
+</defs>
+<polyline fill="none" stroke="red" stroke-width="10"
+ points="450,50 550,50 650,150"
+ marker-end="url(#Triangle)" />
+</svg>
diff --git a/svgio/qa/cppunit/data/ClipPathAndParentStyle.svg b/svgio/qa/cppunit/data/ClipPathAndParentStyle.svg
new file mode 100644
index 0000000000..d85a95995c
--- /dev/null
+++ b/svgio/qa/cppunit/data/ClipPathAndParentStyle.svg
@@ -0,0 +1,10 @@
+<svg version="1.1" baseProfile="basic" 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">
+ <clipPath>
+ <circle id="c1" cx="100" cy="100" r="50"/>
+ </clipPath>
+
+ <use xlink:href="#c1" style="fill:red" stroke-width="5px" stroke="black"/>
+
+</svg>
diff --git a/svgio/qa/cppunit/data/ClipPathAndStyle.svg b/svgio/qa/cppunit/data/ClipPathAndStyle.svg
new file mode 100644
index 0000000000..f3b1777fa5
--- /dev/null
+++ b/svgio/qa/cppunit/data/ClipPathAndStyle.svg
@@ -0,0 +1,13 @@
+<svg version="1.1" baseProfile="basic" 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">
+ <clipPath>
+ <circle id="c1" cx="100" cy="100" r="50"
+ style="stroke: #0000cc;
+ stroke-width: 2px;
+ fill : #ccccff;"/>
+ </clipPath>
+
+ <use href="#c1" style="fill:red" stroke-width="5px" stroke="black"/>
+
+</svg>
diff --git a/svgio/qa/cppunit/data/ClipPathUsingClipPath.svg b/svgio/qa/cppunit/data/ClipPathUsingClipPath.svg
new file mode 100644
index 0000000000..5eaa7928cb
--- /dev/null
+++ b/svgio/qa/cppunit/data/ClipPathUsingClipPath.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+
+<clipPath id="clip1">
+ <polygon id="clip1Shape" points="100,10 40,180 190,60 10,60 160,180 100,10" stroke="blue" />
+</clipPath>
+
+<clipPath id="clip2">
+ <circle id="clip2Shape" cx="100" cy="100" r="65" />
+</clipPath>
+
+
+<clipPath id="clipIntersection" clip-path="url(#clip1)">
+ <use x="0" y="0" width="200" height="200" xlink:href="#clip2Shape" />
+</clipPath>
+
+</defs>
+
+<rect x="10" y="10" width="180" height="180" fill="red"
+ clip-path="url(#clipIntersection)" transform="translate(200)" />
+
+</svg>
diff --git a/svgio/qa/cppunit/data/ClipRule.svg b/svgio/qa/cppunit/data/ClipRule.svg
new file mode 100644
index 0000000000..55f0cb9eee
--- /dev/null
+++ b/svgio/qa/cppunit/data/ClipRule.svg
@@ -0,0 +1,18 @@
+<svg version="1.1" baseProfile="basic" 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">
+ <!-- Define star path -->
+ <defs>
+ <path d="M50,0 21,90 98,35 2,35 79,90z" id="star" />
+ </defs>
+ <clipPath id="emptyStar">
+ <use xlink:href="#star" clip-rule="evenodd" />
+ </clipPath>
+ <rect clip-path="url(#emptyStar)" width="50" height="90" fill="blue" />
+
+ <clipPath id="filledStar">
+ <use xlink:href="#star" clip-rule="evenodd" />
+ </clipPath>
+ <rect clip-path="url(#filledStar)" width="50" height="90" x="50" fill="red" />
+</svg>
+
diff --git a/svgio/qa/cppunit/data/CssClassRedefinition.svg b/svgio/qa/cppunit/data/CssClassRedefinition.svg
new file mode 100644
index 0000000000..591f07f8b4
--- /dev/null
+++ b/svgio/qa/cppunit/data/CssClassRedefinition.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="50 px" height="100 px">
+ <style type="text/css">
+ .c1 {fill:#00ff00}
+ <!-- this redefinition should be appended -->
+ .c1 {font-family:Open Symbol}
+ <!-- this redefinition should change the color to red, replacing the first definition -->
+ .c1 {fill:#ff0000}
+ <!-- finally c1 should be equal to fill:#ff0000 and font-family:Sans -->
+ </style>
+ <text x="20" y="20" >
+ <tspan class="c1">012</tspan>
+ </text>
+</svg>
diff --git a/svgio/qa/cppunit/data/Drawing_NoWidthHeight.svg b/svgio/qa/cppunit/data/Drawing_NoWidthHeight.svg
new file mode 100644
index 0000000000..59520d6ab9
--- /dev/null
+++ b/svgio/qa/cppunit/data/Drawing_NoWidthHeight.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ viewBox="0 0 10 10">
+ <rect
+ width="3"
+ height="3"
+ x="6"
+ y="6"
+ style="fill:#008000;stroke-width:0.15288568" />
+</svg>
diff --git a/svgio/qa/cppunit/data/Drawing_WithWidthHeight.svg b/svgio/qa/cppunit/data/Drawing_WithWidthHeight.svg
new file mode 100644
index 0000000000..bc5afb553e
--- /dev/null
+++ b/svgio/qa/cppunit/data/Drawing_WithWidthHeight.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ viewBox="0 0 10 10"
+ height="10"
+ width="10">
+ <rect
+ width="3"
+ height="3"
+ x="6"
+ y="6"
+ style="fill:#008000;stroke-width:0.15288568" />
+</svg>
diff --git a/svgio/qa/cppunit/data/FillRule.svg b/svgio/qa/cppunit/data/FillRule.svg
new file mode 100644
index 0000000000..c406065fbe
--- /dev/null
+++ b/svgio/qa/cppunit/data/FillRule.svg
@@ -0,0 +1,6 @@
+<svg viewBox="-10 -10 320 120" xmlns="http://www.w3.org/2000/svg">
+ <path fill-rule="evenodd" stroke="red"
+ d="M110,0 h90 v90 h-90 z
+ M130,20 h50 v50 h-50 z"/>
+</svg>
+
diff --git a/svgio/qa/cppunit/data/FontsizeKeywords.svg b/svgio/qa/cppunit/data/FontsizeKeywords.svg
new file mode 100644
index 0000000000..9a97983c01
--- /dev/null
+++ b/svgio/qa/cppunit/data/FontsizeKeywords.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="600" width="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+<text x="5" y="15" font-size="xx-small" fill="black">Sample</text>
+<text x="5" y="50" font-size="x-small" fill="white">Sample</text>
+<text x="5" y="100" font-size="small" fill="gold">Sample</text>
+<text x="5" y="150" font-size="medium" fill="red">Sample</text>
+<text x="5" y="200" font-size="large" fill="yellow">Sample</text>
+<text x="5" y="250" font-size="x-large" fill="blue">Sample</text>
+<text x="5" y="300" font-size="xx-large" fill="green">Sample</text>
+<text x="5" y="350" font-size="smaller" fill="coral">Sample</text>
+<text x="5" y="400" font-size="larger" fill="pink">Sample</text>
+<text x="5" y="450" font-size="initial" fill="ivory">Sample</text>
+</svg>
diff --git a/svgio/qa/cppunit/data/FontsizePercentage.svg b/svgio/qa/cppunit/data/FontsizePercentage.svg
new file mode 100644
index 0000000000..fc7c9fa61c
--- /dev/null
+++ b/svgio/qa/cppunit/data/FontsizePercentage.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?> <svg height="600" width="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" font-size="100%">
+ <text x="5" y="15">Sample</text>
+</svg>
diff --git a/svgio/qa/cppunit/data/FontsizeRelative.svg b/svgio/qa/cppunit/data/FontsizeRelative.svg
new file mode 100644
index 0000000000..4b74aa692b
--- /dev/null
+++ b/svgio/qa/cppunit/data/FontsizeRelative.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?> <svg height="600" width="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g font-size="5px" font-family="DejaVu Serif">
+ <text x="10" y="150" font-size="10em" font-family="inherit">Sample</text>
+ <text x="200" y="150" font-size="10em" font-family="DejaVu Serif">Sample</text>
+</g>
+</svg>
diff --git a/svgio/qa/cppunit/data/MarkerOrient.svg b/svgio/qa/cppunit/data/MarkerOrient.svg
new file mode 100644
index 0000000000..7997e1cce9
--- /dev/null
+++ b/svgio/qa/cppunit/data/MarkerOrient.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <!-- arrowhead marker definition -->
+ <marker id="arrow" viewBox="0 0 10 10" refX="5" refY="5"
+ markerWidth="6" markerHeight="6"
+ orient="auto-start-reverse">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+
+ <marker id="arrow2" viewBox="0 0 10 10" refX="5" refY="5"
+ markerWidth="6" markerHeight="6"
+ orient="auto-start-reverse">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+
+ </defs>
+
+ <!-- Coordinate axes with a arrowhead in both direction -->
+ <polyline points="10,10 10,90 90,90" fill="none" stroke="black"
+ marker-start="url(#arrow)" marker-end="url(#arrow2)" />
+</svg>
diff --git a/svgio/qa/cppunit/data/RGBAColor.svg b/svgio/qa/cppunit/data/RGBAColor.svg
new file mode 100644
index 0000000000..ddd7a3cc03
--- /dev/null
+++ b/svgio/qa/cppunit/data/RGBAColor.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <rect x="10" y="10" width="100" height="100" rx="10" ry="10" fill="rgba(20,10,100,0.5)" visibility="inherit" />
+</svg>
diff --git a/svgio/qa/cppunit/data/RGBColor.svg b/svgio/qa/cppunit/data/RGBColor.svg
new file mode 100644
index 0000000000..ad60d5b55a
--- /dev/null
+++ b/svgio/qa/cppunit/data/RGBColor.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <rect x="10" y="10" width="100" height="100" rx="10" ry="10" fill="rgb(100,100,100)" visibility="inherit" />
+</svg>
diff --git a/svgio/qa/cppunit/data/Rect.svg b/svgio/qa/cppunit/data/Rect.svg
new file mode 100644
index 0000000000..7567cdfb5b
--- /dev/null
+++ b/svgio/qa/cppunit/data/Rect.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <rect x="10" y="10" width="100" height="100" rx="10" ry="10" stroke="#ff0000" fill="#00cc00" stroke-width="3" />
+</svg>
diff --git a/svgio/qa/cppunit/data/RectWithParentStyles.svg b/svgio/qa/cppunit/data/RectWithParentStyles.svg
new file mode 100644
index 0000000000..a01ba3ff5b
--- /dev/null
+++ b/svgio/qa/cppunit/data/RectWithParentStyles.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <style type="text/css" >
+ <![CDATA[
+ svg
+ {
+ stroke: #ff0000;
+ fill: #00cc00;
+ }
+ ]]>
+ </style>
+ <rect x="10" y="10" width="100" height="100" rx="10" ry="10" style="stroke-width: 3;" />
+</svg>
diff --git a/svgio/qa/cppunit/data/RectWithStyles.svg b/svgio/qa/cppunit/data/RectWithStyles.svg
new file mode 100644
index 0000000000..b7068499be
--- /dev/null
+++ b/svgio/qa/cppunit/data/RectWithStyles.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <rect x="10" y="10" width="100" height="100" rx="10" ry="10" style="stroke: #ff0000; fill: #00cc00; stroke-width: 3" />
+</svg>
diff --git a/svgio/qa/cppunit/data/RectWithStylesByGroup.svg b/svgio/qa/cppunit/data/RectWithStylesByGroup.svg
new file mode 100644
index 0000000000..0a3b1e3cd8
--- /dev/null
+++ b/svgio/qa/cppunit/data/RectWithStylesByGroup.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <style type="text/css">
+ <![CDATA[
+ g
+ {
+ stroke: #ff0000;
+ fill: #00cc00;
+ }
+ ]]>
+ </style>
+ </defs>
+ <g>
+ <rect x="10" y="10" width="100" height="100" rx="10" ry="10" style="stroke-width: 3;" />
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/ShapeWithClipPath.svg b/svgio/qa/cppunit/data/ShapeWithClipPath.svg
new file mode 100644
index 0000000000..28c51b4dfb
--- /dev/null
+++ b/svgio/qa/cppunit/data/ShapeWithClipPath.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<svg width="120" height="120"
+ viewPort="0 0 120 120" version="1.1"
+ xmlns="http://www.w3.org/2000/svg">
+
+ <clipPath id="myClip">
+ <rect x="30" y="30" width="20" height="20"/>
+ <rect x="70" y="70" width="20" height="20"/>
+ </clipPath>
+
+ <rect x="10" y="10" width="100" height="100" fill="#00D000"
+ clip-path="url(#myClip)"/>
+</svg>
diff --git a/svgio/qa/cppunit/data/ShapeWithClipPathAndCssStyle.svg b/svgio/qa/cppunit/data/ShapeWithClipPathAndCssStyle.svg
new file mode 100644
index 0000000000..4b6455c649
--- /dev/null
+++ b/svgio/qa/cppunit/data/ShapeWithClipPathAndCssStyle.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<svg width="120" height="120"
+ viewPort="0 0 120 120" version="1.1"
+ xmlns="http://www.w3.org/2000/svg">
+
+ <clipPath id="myClip">
+ <rect x="30" y="30" width="20" height="20"/>
+ <rect x="70" y="70" width="20" height="20"/>
+ </clipPath>
+
+ <rect x="10" y="10" width="100" height="100" style="fill:#00D000"
+ clip-path="url(#myClip)"/>
+</svg>
diff --git a/svgio/qa/cppunit/data/VisiotorTest-Rect.svg b/svgio/qa/cppunit/data/VisiotorTest-Rect.svg
new file mode 100644
index 0000000000..4cd2d3602e
--- /dev/null
+++ b/svgio/qa/cppunit/data/VisiotorTest-Rect.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <rect x="10" y="10" width="100" height="100" rx="10" ry="10" stroke="#ff0000" opacity="0.1" fill="#00cc00" stroke-width="3" />
+</svg>
diff --git a/svgio/qa/cppunit/data/em_units.svg b/svgio/qa/cppunit/data/em_units.svg
new file mode 100644
index 0000000000..6a7947cb3c
--- /dev/null
+++ b/svgio/qa/cppunit/data/em_units.svg
@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="10cm" height="10cm">
+
+ <style>
+ text {font-family: 'DejaVu Sans'; font-size: 36pt;}
+ new {font-family: 'DejaVu Sans'; font-size: 1em;}
+ </style>
+
+ <line x1="5cm" y1="5cm" x2="8cm" y2="5cm" stroke="black" />
+ <!-- 0.5in = 1.27cm = 36pt !-->
+ <line x1="5cm" y1="6.27cm" x2="8cm" y2="6.27cm" stroke="black" />
+ <text x="5cm" y="5cm" class="new">AWlll<tspan x="5cm" dy="1em">AWlll</tspan>
+ </text>
+</svg>
+
diff --git a/svgio/qa/cppunit/data/filterFeColorMatrix.svg b/svgio/qa/cppunit/data/filterFeColorMatrix.svg
new file mode 100644
index 0000000000..a86c2debc2
--- /dev/null
+++ b/svgio/qa/cppunit/data/filterFeColorMatrix.svg
@@ -0,0 +1,59 @@
+<svg
+ width="100%"
+ height="100%"
+ viewBox="0 0 150 500"
+ preserveAspectRatio="xMidYMid meet"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- ref -->
+ <defs>
+ <g id="circles">
+ <circle cx="30" cy="30" r="20" fill="blue" fill-opacity="0.5" />
+ </g>
+ </defs>
+ <use href="#circles" />
+ <text x="70" y="50">Reference</text>
+
+ <!-- Combine RGB into green matrix -->
+ <filter id="colorMeGreen">
+ <feColorMatrix
+ in="SourceGraphic"
+ values="0 0 0 0 0
+ 1 1 1 1 0
+ 0 0 0 0 0
+ 0 0 0 1 0" />
+ </filter>
+ <use
+ href="#circles"
+ transform="translate(0 70)"
+ filter="url(#colorMeGreen)" />
+ <text x="70" y="120">rgbToGreen</text>
+
+ <!-- saturate -->
+ <filter id="colorMeSaturate">
+ <feColorMatrix in="SourceGraphic" type="saturate" values="0.2" />
+ </filter>
+ <use
+ href="#circles"
+ transform="translate(0 140)"
+ filter="url(#colorMeSaturate)" />
+ <text x="70" y="190">saturate</text>
+
+ <!-- hueRotate -->
+ <filter id="colorMeHueRotate">
+ <feColorMatrix in="SourceGraphic" type="hueRotate" values="180" />
+ </filter>
+ <use
+ href="#circles"
+ transform="translate(0 210)"
+ filter="url(#colorMeHueRotate)" />
+ <text x="70" y="260">hueRotate</text>
+
+ <!-- luminanceToAlpha -->
+ <filter id="colorMeLTA">
+ <feColorMatrix in="SourceGraphic" type="luminanceToAlpha" />
+ </filter>
+ <use href="#circles" transform="translate(0 280)" filter="url(#colorMeLTA)" />
+ <text x="70" y="330">luminanceToAlpha</text>
+</svg>
+
diff --git a/svgio/qa/cppunit/data/filterFeDropShadow.svg b/svgio/qa/cppunit/data/filterFeDropShadow.svg
new file mode 100644
index 0000000000..a6405c93af
--- /dev/null
+++ b/svgio/qa/cppunit/data/filterFeDropShadow.svg
@@ -0,0 +1,10 @@
+<svg viewBox="0 0 30 10" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <filter id="shadow">
+ <feDropShadow dx="0.6" dy="0.4" stdDeviation="0.2" flood-color="blue" flood-opacity="0.5" />
+ </filter>
+ </defs>
+
+ <circle cx="5" cy="50%" r="4" style="fill:pink; filter:url(#shadow);" />
+</svg>
+
diff --git a/svgio/qa/cppunit/data/filterFeFlood.svg b/svgio/qa/cppunit/data/filterFeFlood.svg
new file mode 100644
index 0000000000..2c438ad1a9
--- /dev/null
+++ b/svgio/qa/cppunit/data/filterFeFlood.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">
+ <defs>
+ <filter id="floodFilter" filterUnits="userSpaceOnUse">
+ <feFlood
+ x="50"
+ y="50"
+ width="100"
+ height="100"
+ flood-color="green"
+ flood-opacity="0.5" />
+ </filter>
+ </defs>
+
+ <use filter="url(#floodFilter)" />
+</svg>
+
diff --git a/svgio/qa/cppunit/data/filterFeGaussianBlur.svg b/svgio/qa/cppunit/data/filterFeGaussianBlur.svg
new file mode 100644
index 0000000000..e8fd73068a
--- /dev/null
+++ b/svgio/qa/cppunit/data/filterFeGaussianBlur.svg
@@ -0,0 +1,11 @@
+<svg
+ width="230"
+ height="120"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <filter id="blurMe">
+ <feGaussianBlur in="SourceGraphic" stdDeviation="5"/>
+ </filter>
+ <circle cx="170" cy="60" r="50" fill="green" filter="url(#blurMe)" />
+</svg>
+
diff --git a/svgio/qa/cppunit/data/filterFeImage.svg b/svgio/qa/cppunit/data/filterFeImage.svg
new file mode 100644
index 0000000000..5682dbf469
--- /dev/null
+++ b/svgio/qa/cppunit/data/filterFeImage.svg
@@ -0,0 +1,16 @@
+<svg
+ viewBox="0 0 200 200"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="200"
+ height="200">
+ <defs>
+ <filter id="image">
+ <feImage
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIEAAACBCAYAAADnoNlQAAAABHNCSVQICAgIfAhkiAAAAUJJREFUeJzt3EENAkEQRcG3aMAjMpYzBgjqSDCyWJhbZ5IqBf/w0sc+6rzaxnN6wLpzesC62/QA5okAESACEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAiojvv12+at7aPP9IRlO211CRABIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAdVzvtnlr22t6wLrnd3rBOpcAESACEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBFR/ALUM7y9VYLsAAAAASUVORK5CYII="/>
+ </filter>
+ </defs>
+
+ <rect x="10%" y="10%" width="80%" height="80%" style="filter:url(#image);" />
+</svg>
+
diff --git a/svgio/qa/cppunit/data/filterFeOffset.svg b/svgio/qa/cppunit/data/filterFeOffset.svg
new file mode 100644
index 0000000000..89bb40eef8
--- /dev/null
+++ b/svgio/qa/cppunit/data/filterFeOffset.svg
@@ -0,0 +1,18 @@
+<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <filter id="offset" width="180" height="180">
+ <feOffset in="SourceGraphic" dx="44" dy="66" />
+ </filter>
+ </defs>
+
+ <rect x="0" y="0" width="100" height="100" stroke="black" fill="green" />
+ <rect
+ x="0"
+ y="0"
+ width="100"
+ height="100"
+ stroke="black"
+ fill="green"
+ filter="url(#offset)" />
+</svg>
+
diff --git a/svgio/qa/cppunit/data/i125329.svg b/svgio/qa/cppunit/data/i125329.svg
new file mode 100644
index 0000000000..86e3bd8393
--- /dev/null
+++ b/svgio/qa/cppunit/data/i125329.svg
@@ -0,0 +1,12 @@
+<svg version="1.1" baseProfile="full" id="svg-root"
+ width="12cm" height="6cm" viewBox="0 0 120 60"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <title id="test-title">all selector</title>
+ <style type="text/css">
+ * {fill:silver; stroke-width:1;stroke-miterlimit:100000;}
+ rect {stroke:green;}
+ #test-frame {stroke:blue; fill:none;}
+ </style>
+ <rect x="15" y="15" width="50" height="30" stroke-width="10"/>
+</svg>
diff --git a/svgio/qa/cppunit/data/markerInCssStyle.svg b/svgio/qa/cppunit/data/markerInCssStyle.svg
new file mode 100644
index 0000000000..a7a8374f6e
--- /dev/null
+++ b/svgio/qa/cppunit/data/markerInCssStyle.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<svg width="500" height="500" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<marker style="overflow:visible;" id="bip" refX="0" refY="0" orient="auto">
+ <path style="stroke: green" d="M 0,-3 v 6" />
+</marker>
+</defs>
+
+<style>
+path.boundary {stroke: red; fill: #ccc; stroke-width: 3; marker-mid: url(#bip); marker-end: url(#bip)}
+</style>
+
+<path class="boundary" d="m 20,20 v 90 90 90 90 90 h 90 90 90 90 90 v -90 -90 -90 -90 -90 h -90 -90 -90 -90 z" />
+</svg>
diff --git a/svgio/qa/cppunit/data/markerInPresentation.svg b/svgio/qa/cppunit/data/markerInPresentation.svg
new file mode 100644
index 0000000000..5071544e39
--- /dev/null
+++ b/svgio/qa/cppunit/data/markerInPresentation.svg
@@ -0,0 +1,12 @@
+<svg version="1.1" baseProfile="full" 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">
+ <defs>
+ <marker id="marker2" markerUnits="strokeWidth" refX="100" refY="100" markerWidth="15" markerHeight="15" viewBox="0 0 200 200">
+ <rect width="200" height="200" fill="red" stroke="none"/>
+ </marker>
+ </defs>
+ <g marker="url(#marker2)" fill="gold" stroke="black" fill-rule="evenodd" transform="translate(50,20)">
+ <line x1="370" x2="280" y1="60" y2="140"/>
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/maskText.svg b/svgio/qa/cppunit/data/maskText.svg
new file mode 100644
index 0000000000..7405f6a569
--- /dev/null
+++ b/svgio/qa/cppunit/data/maskText.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<svg width="200" height="80"
+ viewBox="0 0 200 80" version="1.1"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <defs>
+ <mask id="myMask"
+ x="0" y="0" width="200" height="80">
+ <rect x="0" y="0" width="100" height="80" fill="white"/>
+ </mask>
+
+ <text id="Text" x="100" y="48"
+ font-size="26" font-weight="bold" text-anchor="middle">
+ Black White
+ </text>
+ </defs>
+
+ <!-- Draw black rectangle in the background -->
+ <rect x="100" y="10" width="95" height="60" />
+
+ <!-- Draw the text string twice. First, the white text without mask.
+ Second, the black text with the mask applied-->
+ <use xlink:href="#Text" fill="white"/>
+ <use xlink:href="#Text" fill="black" mask="url(#myMask)"/>
+</svg>
diff --git a/svgio/qa/cppunit/data/masking-path-07-b.svg b/svgio/qa/cppunit/data/masking-path-07-b.svg
new file mode 100644
index 0000000000..eca3660bab
--- /dev/null
+++ b/svgio/qa/cppunit/data/masking-path-07-b.svg
@@ -0,0 +1,147 @@
+<svg version="1.1" baseProfile="basic" 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">
+ <!--======================================================================-->
+ <!--= SVG 1.1 2nd Edition Test Case =-->
+ <!--======================================================================-->
+ <!--= Copyright 2009 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.3" reviewer="CM" author="ED" status="accepted"
+ version="$Revision: 1.11 $" testname="$RCSfile: masking-path-07-b.svg,v $">
+ <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/masking.html#ClippingPaths">
+ <p>
+ This tests that 'clipPath' elements can be used together and how the clipping paths are intersected.
+ </p>
+ <p>
+ There is a gray-white pattern as a background for the two subtest rectangles. This is to show that the holes that are cut out using clip-paths are transparent.
+ The first subtest verifies that when you use the 'clip-path' property on a child element inside a 'clipPath' element the child element is clipped correctly.
+ The second subtest verifies that when a 'clipPath' element has a 'clip-path' property the result is the intersection of the two clip paths.
+ </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 has passed if the following conditions are met:
+ </p>
+ <ul>
+ <li>There is no red visible.</li>
+ <li>No shapes extend outside of the rects that have a thick black border.</li>
+ <li>For the left subtest:
+ <ul>
+ <li>There must be a large blue rect with a transparent smaller rect in it, and the intersection of two circles.</li>
+ <li>The borders of the clipregions are shown with black stroke.</li>
+ <li>The blue shapes must be visible only inside of these stroked regions.</li>
+ </ul>
+ </li>
+ <li>For the right subtest:
+ <ul>
+ <li>The test on the right must show part of the large blue rect shape with a transparent rect in it, and part of a circle.</li>
+ <li>The blue shapes must only be visible inside of the circle that has black stroke.</li>
+ </ul>
+ </li>
+ </ul>
+ </d:passCriteria>
+ </d:SVGTestCase>
+ <title id="test-title">$RCSfile: masking-path-07-b.svg,v $</title>
+ <defs>
+ <font-face font-family="DejaVu Sans" 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="DejaVu Sans" font-size="18">
+
+ <defs>
+ <clipPath id="clipCircle1">
+ <circle id="c1" cx="100" cy="100" r="50"/>
+ </clipPath>
+
+ <clipPath id="clipCircle2">
+ <circle id="c2" cx="150" cy="150" r="50"/>
+ </clipPath>
+
+ <clipPath id="clipPath1">
+ <path id="p1" d="M10 10l100 0 0 100 -100 0ZM50 50l40 0 0 40 -40 0Z" clip-rule="evenodd"/>
+ </clipPath>
+
+ <!-- "If a valid 'clip-path' reference is placed on one of the children of a 'clipPath' element,
+ then the given child element is clipped by the referenced clipping path before OR'ing the
+ silhouette of the child element with the silhouettes of the other child elements." -->
+ <clipPath id="clipRects1">
+ <rect x="50" y="30" width="25" height="100"/>
+ <rect x="25" y="50" width="10" height="10" clip-path="url(#clipTwoCircles)"/>
+ </clipPath>
+
+ <!-- Test use in a clipPath -->
+ <clipPath id="clipTwoCircles">
+ <use xlink:href="#c1"/>
+ <use xlink:href="#c2"/>
+ </clipPath>
+
+ <clipPath id="clipInClip1">
+ <use xlink:href="#c2" clip-path="url(#clipCircle1)"/>
+ <use xlink:href="#p1"/>
+ </clipPath>
+
+ <clipPath id="clipOnClip1" clip-path="url(#clipCircle1)">
+ <use xlink:href="#c2"/>
+ <use xlink:href="#p1"/>
+ </clipPath>
+
+ <pattern patternUnits="userSpaceOnUse" id="pattern" x="0" y="0" width="20" height="20">
+ <rect x="0" y="0" width="10" height="10" fill="gray"/>
+ <rect x="10" y="10" width="10" height="10" fill="gray"/>
+ </pattern>
+ </defs>
+
+ <rect x="20" y="70" width="210" height="210" fill="url(#pattern)" stroke="black" stroke-width="4"/>
+ <rect x="250" y="70" width="210" height="210" fill="url(#pattern)" stroke="black" stroke-width="4"/>
+
+ <text x="240" y="2em" text-anchor="middle">Test clip unions and intersections</text>
+
+ <g transform="translate(20, 70)">
+ <g id="subtest1">
+ <use xlink:href="#p1" fill="red" fill-rule="evenodd"/>
+ <use xlink:href="#c2" fill="red" clip-path="url(#clipCircle1)"/>
+ <use xlink:href="#c1" fill="red" clip-path="url(#clipCircle2)"/>
+
+ <rect width="200" height="200" fill="blue" clip-path="url(#clipInClip1)"/>
+
+ <use xlink:href="#c2" fill="none" clip-path="url(#clipCircle1)" stroke="black"/>
+ <use xlink:href="#c1" fill="none" clip-path="url(#clipCircle2)" stroke="black"/>
+ <use xlink:href="#p1" fill="none" stroke="black"/>
+ </g>
+
+ <g id="subtest2" transform="translate(230,0)">
+ <g clip-path="url(#clipCircle1)">
+ <use xlink:href="#c2" fill="red"/>
+ <use xlink:href="#p1" fill="red" fill-rule="evenodd"/>
+ </g>
+
+ <rect width="300" height="300" fill="blue" clip-path="url(#clipOnClip1)"/>
+
+ <use xlink:href="#c1" fill="none" stroke="black"/>
+ </g>
+ </g>
+ </g>
+ <g font-family="DejaVu Sans" font-size="32">
+ <text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.11 $</text>
+ </g>
+ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
+ <!-- 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="DejaVu Sans" 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>
diff --git a/svgio/qa/cppunit/data/noneColor.svg b/svgio/qa/cppunit/data/noneColor.svg
new file mode 100644
index 0000000000..552a1cf5af
--- /dev/null
+++ b/svgio/qa/cppunit/data/noneColor.svg
@@ -0,0 +1,3 @@
+<svg width="400" height="110">
+ <rect width="300" height="100" style="fill:none;stroke-width:3;stroke:rgb(0,0,0)" />
+</svg>
diff --git a/svgio/qa/cppunit/data/path.svg b/svgio/qa/cppunit/data/path.svg
new file mode 100644
index 0000000000..559ceec6d5
--- /dev/null
+++ b/svgio/qa/cppunit/data/path.svg
@@ -0,0 +1,3 @@
+<svg width="44" height="26" xmlns="http://www.w3.org/2000/svg">
+ <path d="M1 1 H 43 V 25 H 1 L 1 1 Z" fill="#007aff" stroke="#fff" opacity="0.1" stroke-width="0"/>
+</svg>
diff --git a/svgio/qa/cppunit/data/symbol.svg b/svgio/qa/cppunit/data/symbol.svg
new file mode 100644
index 0000000000..55110f3740
--- /dev/null
+++ b/svgio/qa/cppunit/data/symbol.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<svg width="120" height="120"
+ viewPort="0 0 120 120" version="1.1"
+ xmlns="http://www.w3.org/2000/svg">
+
+ <symbol>
+ <rect x="10" y="10" width="100" height="100" fill="red"/>
+ </symbol>
+
+ <rect x="10" y="10" width="10" height="10" fill="#00D000"/>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf101237.svg b/svgio/qa/cppunit/data/tdf101237.svg
new file mode 100644
index 0000000000..e5afa37384
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf101237.svg
@@ -0,0 +1,11 @@
+<svg version="1.1" baseProfile="basic" 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" fill="none">
+
+ <clipPath id="p.0">
+ <path
+ d="m0 0l437.0 0l0 487.0l-437.0 0l0 -487.0z"
+ clip-rule="nonzero"/>
+ </clipPath>
+ <circle clip-path="url(#p.0)" id="c1" cx="100" cy="100" r="50" style="fill:red" stroke-width="5px" stroke="black"/>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf103888.svg b/svgio/qa/cppunit/data/tdf103888.svg
new file mode 100644
index 0000000000..157bb12571
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf103888.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
+ width="75mm"
+ height="15mm"
+ viewBox="0 0 250 50">
+ <text
+ style="font-size:30px;font-family:'DejaVu Sans';fill:#000000;stroke:none"
+ x="20"
+ y="30">Her<tspan style="font-weight:bold">vor</tspan>hebung</text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf104339.svg b/svgio/qa/cppunit/data/tdf104339.svg
new file mode 100644
index 0000000000..fe55c7bfc1
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf104339.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ id="svg2"
+ version="1.1"
+ xml:space="preserve"
+ width="565.10504"
+ height="132.81749"
+ viewBox="0 0 565.10504 132.8175">
+ <defs>
+ <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
+ <path d="M 0,612 792,612 792,0 0,0 0,612 Z"/>
+ </clipPath>
+ </defs>
+ <g transform="matrix(1.25,0,0,-1.25,-221.64057,456.20243)">
+ <g transform="translate(16.855932,5.8347458)">
+ <g clip-path="url(#clipPath16)">
+ <g transform="translate(403.16803,288.82005)">
+ <path
+ d="m 0,0 v -7.675 h -34.756 v 51.656 h 8.19 V 0 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf117920.svg b/svgio/qa/cppunit/data/tdf117920.svg
new file mode 100644
index 0000000000..487e0f6cb9
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf117920.svg
@@ -0,0 +1,7 @@
+<svg width="100%" height="100%" viewBox="0 0 100 100"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <switch transform="translate(-18,-6)">
+ <rect width="13" height="13" x="18" y="6" />
+ </switch>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf123926.svg b/svgio/qa/cppunit/data/tdf123926.svg
new file mode 100644
index 0000000000..085b736b53
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf123926.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" version="1.1" class="highcharts-root" style="font-family:&quot;DejaVu Sans&quot;font-size:12px;" width="600" height="400" viewBox="0 0 600 400">
+ <defs>
+ <clipPath id="highcharts-qkip48v-39">
+ <rect x="0" y="0" width="505" height="283" fill="none"/>
+ </clipPath>
+ </defs>
+ <g class="highcharts-series-group" data-z-index="3">
+ <g data-z-index="0.1" class="highcharts-series highcharts-series-0 highcharts-bubble-series highcharts-color-0 " transform="translate(85,61) scale(1 1)" clip-path="url(#highcharts-qkip48v-39)">
+ <path fill="rgb(124,181,236)" fill-opacity="0.5" d="M 501 123.5 A 13.5 13.5 0 1 1 500.99999325000056 123.48650000225 Z" stroke="#7cb5ec" stroke-width="1" class="highcharts-point highcharts-color-0"/>
+ </g>
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf129356.svg b/svgio/qa/cppunit/data/tdf129356.svg
new file mode 100644
index 0000000000..46bd6935da
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf129356.svg
@@ -0,0 +1,34 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-0 0 800 800">
+
+ <style>
+ g.g1 rect {fill:green;}
+ g#g3 rect {fill:green;}
+ g.g4 #r1 {fill:green;}
+ g#g3 .r5 {fill:green;}
+ </style>
+
+ <g class="g4 g1">
+ <g class="g2">
+ <rect x="0" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect x="60" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <g id="g3">
+ <g id="g4">
+ <rect x="120" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect x="180" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <g class="g4 g1">
+ <g>
+ <rect id="r1" x="240" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect id="r1" x="300" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <g id="g3">
+ <g id="g4">
+ <rect class="r5" x="360" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect class="r5" x="420" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf145896.svg b/svgio/qa/cppunit/data/tdf145896.svg
new file mode 100644
index 0000000000..d434a961b9
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf145896.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-0 0 300 300">
+
+ <style id="style2">
+ .st0{fill:yellow;}.st1{fill:green;}
+ </style>
+ <style type="text/some-unknown-styling-language">
+ .st2{fill:red;}
+ </style>
+ <rect x="0" y="0" height="50" width="50" class="st0" fill="blue"></rect>
+ <rect x="60" y="0" height="50" width="50" class="st1" fill="blue"></rect>
+ <rect x="120" y="0" height="50" width="50" class="st2" fill="blue"></rect>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf149673.svg b/svgio/qa/cppunit/data/tdf149673.svg
new file mode 100644
index 0000000000..f73b9959d3
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf149673.svg
@@ -0,0 +1,7 @@
+<svg id="svg1" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
+ <g id="g1" opacity=".1">
+ <circle id="circle1" cx="100" cy="60" fill="#f00" r="40"/>
+ <circle id="circle2" cx="70" cy="100" fill="#0f0" r="40"/>
+ <circle id="circle3" cx="130" cy="100" fill="#00f" r="40"/>
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf149880.svg b/svgio/qa/cppunit/data/tdf149880.svg
new file mode 100644
index 0000000000..08ba748487
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf149880.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg" version="1.1">
+ <defs>
+ <pattern id="Pattern" x=".05" y=".05" width=".25" height=".25">
+ <rect x="0" y="0" width="50" height="50" fill="skyblue"/>
+ </pattern>
+
+ </defs>
+
+ <rect fill='url("#Pattern")' stroke="black" x="0" y="0" width="200" height="200"/>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf149893.svg b/svgio/qa/cppunit/data/tdf149893.svg
new file mode 100644
index 0000000000..b6b241566d
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf149893.svg
@@ -0,0 +1,3 @@
+<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
+ <rect x="0" y="0" width="100%" height="100%" fill=" GREEN"></rect>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf150124.svg b/svgio/qa/cppunit/data/tdf150124.svg
new file mode 100644
index 0000000000..29b2a1e3fd
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf150124.svg
@@ -0,0 +1,12 @@
+<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">
+ <invented>
+ <rect id='r1' x='0' y='0' width='50' height='50' fill='red'/>
+ <g>
+ <rect id='r2' x='60' y='0' width='50' height='50' fill='green'/>
+ </g>
+ <circle id="myCircle" cx="50" cy="50" r="40" stroke="blue" />
+ </invented>
+ <use href="myCircle" x="20" fill="white" stroke="red" />
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf151103.svg b/svgio/qa/cppunit/data/tdf151103.svg
new file mode 100644
index 0000000000..664253f8df
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf151103.svg
@@ -0,0 +1,18 @@
+<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
+ <text text-anchor="start" x="60" y="40">ABC</text>
+ <text text-anchor="middle" x="60" y="50">ABC</text>
+ <text text-anchor="end" x="60" y="60">ABC</text>
+
+ <text><tspan text-anchor="start" x="60" y="40">ABC</tspan></text>
+ <text><tspan text-anchor="middle" x="60" y="50">ABC</tspan></text>
+ <text><tspan text-anchor="end" x="60" y="60">ABC</tspan></text>
+
+ <text text-anchor="start" x="60" y="40"><tspan>ABC</tspan></text>
+ <text text-anchor="middle" x="60" y="50"><tspan>ABC</tspan></text>
+ <text text-anchor="end" x="60" y="60"><tspan>ABC</tspan></text>
+
+ <text text-anchor="start" x="60" y="40">A<tspan>B</tspan>C</text>
+ <text text-anchor="middle" x="60" y="50">A<tspan>B</tspan>C</text>
+ <text text-anchor="end" x="60" y="60">A<tspan>B</tspan>C</text>
+</svg>
+
diff --git a/svgio/qa/cppunit/data/tdf155733.svg b/svgio/qa/cppunit/data/tdf155733.svg
new file mode 100644
index 0000000000..db04ba9afd
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf155733.svg
@@ -0,0 +1,20 @@
+<svg
+ width="100%"
+ height="100%"
+ viewBox="0 0 150 500"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <g id="circles">
+ <circle cx="30" cy="30" r="20" fill="blue" fill-opacity="0.5" />
+ </g>
+ </defs>
+
+ <filter id="myFilter">
+ <feGaussianBlur in="SourceGraphic" stdDeviation="5"/>
+ </filter>
+
+ <use href="#circles" transform="translate(0 50)" filter="url(#myFilter)" />
+ <use href="#circles" transform="translate(0 100)"/>
+</svg>
+
diff --git a/svgio/qa/cppunit/data/tdf155814.svg b/svgio/qa/cppunit/data/tdf155814.svg
new file mode 100644
index 0000000000..5ac2e82973
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf155814.svg
@@ -0,0 +1,25 @@
+<svg
+ width="100%"
+ height="100%"
+ viewBox="0 0 150 500"
+ preserveAspectRatio="xMidYMid meet"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- ref -->
+ <defs>
+ <g id="circles">
+ <circle cx="30" cy="30" r="20" fill="blue" fill-opacity="0.5" />
+ </g>
+ </defs>
+ <clipPath id="myClip">
+ <!--
+ Everything outside the circle will be
+ clipped and therefore invisible.
+ -->
+ <circle r="35" />
+ </clipPath>
+
+ <use xlink:href="#circles" transform="translate(0 50)" clip-path="url(#myClip)" />
+ <use xlink:href="#circles" transform="translate(0 100)" />
+</svg>
+
diff --git a/svgio/qa/cppunit/data/tdf155819.svg b/svgio/qa/cppunit/data/tdf155819.svg
new file mode 100644
index 0000000000..30c2da4d1a
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf155819.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
+ <style>
+ path {
+ fill: none;
+ stroke-width: 4px;
+ marker: url(#diamond);
+ }
+ </style>
+ <path d="M 10,50 v -20 h 40 v -20" stroke="red"/>
+ <marker id="diamond" markerWidth="12" markerHeight="12" refX="6" refY="6" markerUnits="userSpaceOnUse">
+ <circle cx="6" cy="6" r="3"
+ fill="white" stroke="context-stroke" stroke-width="2"/>
+ </marker>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf155833.svg b/svgio/qa/cppunit/data/tdf155833.svg
new file mode 100644
index 0000000000..8cc908424a
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf155833.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="32.677876mm"
+ height="32.677876mm"
+ viewBox="0 0 32.677876 32.677876"
+ version="1.1"
+ id="svg1126"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <g
+ id="layer1"
+ transform="translate(-80.317197,-107.43993)">
+ <g
+ id="g18033"
+ transform="matrix(0.35277777,0,0,-0.35277777,71.799819,211.06676)">
+ <g
+ id="g18041"
+ transform="matrix(92.88,0,0,92.88,24.14375,201.11516)">
+ <image
+ width="1"
+ height="1"
+ transform="matrix(1,0,0,-1,0,1)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIEAAACBCAYAAADnoNlQAAAABHNCSVQICAgIfAhkiAAAAUJJREFUeJzt3EENAkEQRcG3aMAjMpYzBgjqSDCyWJhbZ5IqBf/w0sc+6rzaxnN6wLpzesC62/QA5okAESACEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAiojvv12+at7aPP9IRlO211CRABIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAdVzvtnlr22t6wLrnd3rBOpcAESACEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARkAhIBFR/ALUM7y9VYLsAAAAASUVORK5CYII="
+ id="image18043" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf155932.svg b/svgio/qa/cppunit/data/tdf155932.svg
new file mode 100644
index 0000000000..b533eda3cd
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf155932.svg
@@ -0,0 +1,22 @@
+<svg
+ width="100%"
+ height="100%"
+ viewBox="0 0 150 500"
+ preserveAspectRatio="xMidYMid meet"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- ref -->
+ <defs>
+ <g id="circles">
+ <circle cx="30" cy="30" r="20" fill="blue" fill-opacity="0.5" />
+ </g>
+ </defs>
+ <clipPath id="myClip">
+ <circle r="35" />
+ </clipPath>
+
+ <g clip-path="url(#myClip)">
+ <circle cx="30" cy="30" r="20" fill="blue" fill-opacity="0.5" />
+ </g>
+</svg>
+
diff --git a/svgio/qa/cppunit/data/tdf156018.svg b/svgio/qa/cppunit/data/tdf156018.svg
new file mode 100644
index 0000000000..cff3f924a5
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156018.svg
@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-0 0 300 300">
+
+ <style id="style2">
+ g rect {fill:green;}
+ </style>
+
+ <g>
+ <rect x="00" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect x="60" y="0" height="50" width="50" fill="blue"></rect>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156034.svg b/svgio/qa/cppunit/data/tdf156034.svg
new file mode 100644
index 0000000000..1cd3a82b78
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156034.svg
@@ -0,0 +1,34 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-0 0 800 800">
+
+ <style>
+ .g1 rect {fill:green;}
+ #g3 rect {fill:green;}
+ .g4 #r1 {fill:green;}
+ #g3 .r5 {fill:green;}
+ </style>
+
+ <g class="g4 g1">
+ <g class="g2">
+ <rect x="0" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect x="60" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <g id="g3">
+ <g id="g4">
+ <rect x="120" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect x="180" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <g class="g4 g1">
+ <g>
+ <rect id="r1" x="240" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect id="r1" x="300" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <g id="g3">
+ <g id="g4">
+ <rect class="r5" x="360" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect class="r5" x="420" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156038.svg b/svgio/qa/cppunit/data/tdf156038.svg
new file mode 100644
index 0000000000..9835453e7f
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156038.svg
@@ -0,0 +1,34 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-0 0 800 800">
+
+ <style>
+ .g1 > rect {fill:green;}
+ #g3 > rect {fill:green;}
+ .g4 > #r1 {fill:green;}
+ #g3 > .r5 {fill:green;}
+ </style>
+
+ <g class="g4 g1">
+ <g class="g2">
+ <rect x="0" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect x="60" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <g id="g3">
+ <g id="g4">
+ <rect x="120" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect x="180" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <g class="g4 g1">
+ <g>
+ <rect id="r1" x="240" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect id="r1" x="300" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <g id="g3">
+ <g id="g4">
+ <rect class="r5" x="360" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+ <rect class="r5" x="420" y="0" height="50" width="50" fill="blue"></rect>
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156167.svg b/svgio/qa/cppunit/data/tdf156167.svg
new file mode 100644
index 0000000000..034f86563d
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156167.svg
@@ -0,0 +1,18 @@
+<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">
+ <g id="test-body-content" font-family="DejaVu Sans" font-size="18">
+
+ <g fill="orange">
+ <circle id="a" FiLl="red" cx="140" cy="100" r="50"/>
+ </g>
+ <circle id="b" fill="red" style="FiLl: oRaNgE" cx="340" cy="100" r="50"/>
+ <circle id="c" fill="blue" cx="140" cy="220" r="50"/>
+
+ <style type="text/css">
+ #c {fill: red }
+ #c {FiLl: oRaNgE }
+ </style>
+
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156168.svg b/svgio/qa/cppunit/data/tdf156168.svg
new file mode 100644
index 0000000000..352de2be31
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156168.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<svg version="1.2" baseProfile="tiny"
+ width="100%" height="100%" viewBox="0 0 200 500"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ style="font-family: 'DejaVu Serif';
+ font-size:large" >
+<title>stroke enabled</title>
+
+ <style type="text/css">
+ #MyRed {
+ fill: red;
+ }
+ #MyBlue {
+ fill: blue;
+ }
+ .MyLime {
+ stroke: lime;
+ stroke-width: 5;
+ }
+ </style>
+
+<g id="MyBlue">
+<rect x="10" y="0" height="50" width="50"></rect>
+<rect x="10" y="60" height="50" width="50" class="MyLime"></rect>
+<rect id="MyRed" x="10" y="120" height="50" width="50"></rect>
+<rect id="MyRed" x="10" y="180" height="50" width="50" class="MyLime"></rect>
+</g>
+<rect x="10" y="240" height="50" width="50"></rect>
+<rect x="10" y="300" height="50" width="50" class="MyLime"></rect>
+<rect id="MyRed" x="10" y="360" height="50" width="50"></rect>
+<rect id="MyRed" x="10" y="420" height="50" width="50" class="MyLime"></rect>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156201.svg b/svgio/qa/cppunit/data/tdf156201.svg
new file mode 100644
index 0000000000..3000e17f45
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156201.svg
@@ -0,0 +1,36 @@
+<svg style="width: 100%; height: 100%;" height="492pt" version="1.1" viewBox="0 0 500 492" width="500pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g id="PathCollection_1">
+ <defs>
+ <path d="
+M52.0418 -266.565
+L54.1695 -266.795
+L54.1955 -266.832
+L54.2469 -266.844
+L56.3492 -268.627
+L57.4099 -268.849
+L59.524 -270.389
+L60.4641 -271.625
+L62.5433 -273.716
+L62.8642 -275.66
+L63.198 -277.417
+L62.6856 -278.465
+L60.8035 -281.602
+L60.4975 -281.91
+L59.9992 -282.386
+L57.6251 -284.681
+L56.2525 -285.174
+L54.6591 -286.742
+L54.5155 -286.797
+L52.0418 -279.184
+L52.0418 -270.892" id="C0_0_32ce96eee2"></path>
+ </defs>
+ <g clip-path="url(#p65124e5d4c)">
+ <use style="fill:#2f3ba1;" x="0.0" xlink:href="#C0_0_32ce96eee2" y="492.3555"></use>
+ </g>
+ </g>
+ <defs>
+ <clipPath id="p65124e5d4c">
+ <rect height="446.4" width="446.4" x="38.27125" y="23.14175"></rect>
+ </clipPath>
+ </defs>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156236.svg b/svgio/qa/cppunit/data/tdf156236.svg
new file mode 100644
index 0000000000..12268652c0
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156236.svg
@@ -0,0 +1,7 @@
+<svg viewBox="0 0 500 200" xmlns="http://www.w3.org/2000/svg">
+ <rect x="20" y="120" width="60" height="60" rx="0" ry="15" />
+ <rect x="120" y="120" width="60" height="60" ry="15" />
+ <rect x="220" y="120" width="60" height="60" rx="-150" ry="15" />
+ <rect x="320" y="120" width="60" height="60" rx="150" ry="15" />
+</svg>
+
diff --git a/svgio/qa/cppunit/data/tdf156251.svg b/svgio/qa/cppunit/data/tdf156251.svg
new file mode 100644
index 0000000000..201a0aa69e
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156251.svg
@@ -0,0 +1,17 @@
+<svg viewBox="0 0 240 70" xmlns="http://www.w3.org/2000/svg">
+ <style>
+ tspan {
+ fill: red;
+ }
+ </style>
+
+ <text x="10" y="30" class="small">
+ You are
+ <tspan>not</tspan>
+ a banana!
+ </text>
+ <text x="10" y="60" class="small">
+ You are<tspan> not </tspan>a banana!
+ </text>
+</svg>
+
diff --git a/svgio/qa/cppunit/data/tdf156269.svg b/svgio/qa/cppunit/data/tdf156269.svg
new file mode 100644
index 0000000000..e840b351d1
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156269.svg
@@ -0,0 +1,8 @@
+<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
+ <!-- Some reference text -->
+ <text x="10%" y="50%" fill="grey">one</text>
+
+ <!-- The same text with a shift -->
+ <text dx="50%" dy="50%" x="10%" y="50%">two</text>
+</svg>
+
diff --git a/svgio/qa/cppunit/data/tdf156271.svg b/svgio/qa/cppunit/data/tdf156271.svg
new file mode 100644
index 0000000000..ff0267f35c
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156271.svg
@@ -0,0 +1,6 @@
+<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
+ <text x="40 10" y="10">AB</text>
+ <text x="10 10" dx="30" y="20">AB</text>
+ <text x="0 0" dx="40 10" y="30">AB</text>
+ <text x="10" dx="30 0" y="40">AB</text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156283.svg b/svgio/qa/cppunit/data/tdf156283.svg
new file mode 100644
index 0000000000..ee8c46ef5c
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156283.svg
@@ -0,0 +1,4 @@
+<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
+ <text x="30 71" y="20">ABC</text>
+ <text x="0" dx="30 29" y="30">ABC</text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156569.svg b/svgio/qa/cppunit/data/tdf156569.svg
new file mode 100644
index 0000000000..ea9b3f513a
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156569.svg
@@ -0,0 +1,4 @@
+<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
+ <text x="0,40,80" y="20%">ABC</text>
+ <text x="0 40% 80%" y="30%">ABC</text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156577.svg b/svgio/qa/cppunit/data/tdf156577.svg
new file mode 100644
index 0000000000..de12f36667
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156577.svg
@@ -0,0 +1,8 @@
+<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
+ <text x="30" y="20">
+ <tspan x="30" y="20">ABC</tspan>
+ </text>
+ <text x="30" y="30">
+ <tspan x="30" y="30" dx="0 10 20 30 40">ABC</tspan>
+ </text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156616.svg b/svgio/qa/cppunit/data/tdf156616.svg
new file mode 100644
index 0000000000..6b3bb3c6c6
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156616.svg
@@ -0,0 +1,29 @@
+<svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
+ <text
+ style="text-anchor:start"
+ x="114"
+ y="103"><tspan
+ x="114"
+ y="103"><tspan>First </tspan>line </tspan><tspan
+ x="114"
+ y="122">Second line</tspan>
+ </text>
+ <text
+ style="text-anchor:middle"
+ x="114"
+ y="153"><tspan
+ x="114"
+ y="153"><tspan>First </tspan>line </tspan><tspan
+ x="114"
+ y="172">Second line</tspan>
+ </text>
+ <text
+ style="text-anchor:end"
+ x="114"
+ y="203"><tspan
+ x="114"
+ y="203"><tspan>First </tspan>line </tspan><tspan
+ x="114"
+ y="222">Second line</tspan>
+ </text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156777.svg b/svgio/qa/cppunit/data/tdf156777.svg
new file mode 100644
index 0000000000..9ce1dd8cd3
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156777.svg
@@ -0,0 +1,14 @@
+<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
+ <path
+ id="path1"
+ fill="none"
+ stroke="red"
+ d="M10,90 Q90,90 90,45 Q90,10 50,10 Q10,10 10,40 Q10,70 45,70 Q70,70 75,50" />
+
+ <text>
+ <textPath href="#path1" startOffset="40%" style="fill:green">
+ Quick brown fox jumps over the lazy dog.
+ </textPath>
+ </text>
+</svg>
+
diff --git a/svgio/qa/cppunit/data/tdf156834.svg b/svgio/qa/cppunit/data/tdf156834.svg
new file mode 100644
index 0000000000..74dc154818
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156834.svg
@@ -0,0 +1,7 @@
+<svg viewBox="0 0 200 120" xmlns="http://www.w3.org/2000/svg">
+ <path d="M20,20 L180,20 M20,50 L180,50 M20,80 L180,80" stroke="grey" />
+
+ <text dominant-baseline="auto" x="30" y="20" font-size="20">Auto</text>
+ <text dominant-baseline="middle" x="30" y="50" font-size="20">Middle</text>
+ <text dominant-baseline="Hanging" x="30" y="80" font-size="20">Hanging</text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf156837.svg b/svgio/qa/cppunit/data/tdf156837.svg
new file mode 100644
index 0000000000..f04cb015d3
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf156837.svg
@@ -0,0 +1,13 @@
+<svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
+
+<defs><style type="text/css">
+.super{
+ font-size: 65%;
+}
+</style></defs>
+
+ <text>
+ <tspan x="114" y="103">x </tspan>
+ <tspan class="super" baseline-shift="super">3</tspan>
+ </text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf45771.svg b/svgio/qa/cppunit/data/tdf45771.svg
new file mode 100644
index 0000000000..f49e0f5691
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf45771.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="600" width="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+<text x="5" y="100" font-size="2em">Sample</text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf79163.svg b/svgio/qa/cppunit/data/tdf79163.svg
new file mode 100644
index 0000000000..0153037236
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf79163.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <rect x="50" y="50" height="110" width="110"
+ style="fill: #ccccff" opacity="0.5"
+ >
+ </rect>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf85770.svg b/svgio/qa/cppunit/data/tdf85770.svg
new file mode 100644
index 0000000000..b1cf9eb3c2
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf85770.svg
@@ -0,0 +1,7 @@
+<svg id="svg-root"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="13cm" height="11cm">
+<text x="5" y="35" font-size="x-small">Start Middle End</text>
+<text x="5" y="65" font-size="x-small">Start <tspan visibility="hidden">Middle</tspan> End</text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf86938.svg b/svgio/qa/cppunit/data/tdf86938.svg
new file mode 100644
index 0000000000..40287a39de
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf86938.svg
@@ -0,0 +1,13 @@
+<svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
+ <text
+ x="290"
+ y="183"> line </text>
+ <text
+ x="290"
+ y="183"
+ baseline-shift="24"> above </text>
+ <text
+ x="290"
+ y="183"
+ baseline-shift="-24"> below </text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf87309.svg b/svgio/qa/cppunit/data/tdf87309.svg
new file mode 100644
index 0000000000..af8a7df254
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf87309.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <rect x="10" y="10" width="100" height="100" fill="currentColor"/>
+</svg> \ No newline at end of file
diff --git a/svgio/qa/cppunit/data/tdf93583.svg b/svgio/qa/cppunit/data/tdf93583.svg
new file mode 100644
index 0000000000..13e63e677f
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf93583.svg
@@ -0,0 +1,7 @@
+<svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
+ <text
+ style="text-anchor:end"
+ x="214"
+ y="303"><tspan>This is the<tspan style="font-size:200%"> first </tspan>line</tspan>
+ </text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf94765.svg b/svgio/qa/cppunit/data/tdf94765.svg
new file mode 100644
index 0000000000..009bfc8ed1
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf94765.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="841.9px" height="595.3px" viewBox="0 0 841.9 595.3" style="enable-background:new 0 0 841.9 595.3;" xml:space="preserve"
+ >
+<style type="text/css">
+ .st1{fill:url(#SVGID_1_);stroke:#000000;stroke-miterlimit:10;}
+</style>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="432.1587" y1="340.3492" x2="770.254" y2="340.3492">
+ <stop offset="0" style="stop-color:#DBDBDB"/>
+ <stop offset="1" style="stop-color:#737373"/>
+</linearGradient>
+<rect x="70.3" y="48.3" fill="url(#SVGID_1_)" width="338.1" height="252.4"/>
+<rect x="432.2" y="214.2" class="st1" width="338.1" height="252.4"/>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf95400.svg b/svgio/qa/cppunit/data/tdf95400.svg
new file mode 100644
index 0000000000..378100a212
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf95400.svg
@@ -0,0 +1,8 @@
+<svg viewBox="0 0 150 100" xmlns="http://www.w3.org/2000/svg">
+ <text x="30" y="20" textLength="102" lengthAdjust="spacing">
+ ABC
+ </text>
+ <text x="30" y="30" textLength="102" lengthAdjust="spacingAndGlyphs">
+ ABC
+ </text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf97542_1.svg b/svgio/qa/cppunit/data/tdf97542_1.svg
new file mode 100644
index 0000000000..7ade92dd94
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf97542_1.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<svg width="200" height="50" xmlns="http://www.w3.org/2000/svg">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+ <radialGradient id="svg_2" cx="0.5" cy="0.5" r="0.5">
+ <stop offset="0" stop-color="#ff0000"/>
+ <stop offset="1" stop-color="#000000"/>
+ </radialGradient>
+ </defs>
+ <g fill="url(#svg_2)" >
+ <title>Layer 1</title>
+ <rect id="svg_1" height="50" width="200" y="0" x="0"/>
+ <text x="50" y="40" id="svg_12" font-size="48" font-family="DejaVu Serif" fill="#ffff00">Text</text>
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf97542_2.svg b/svgio/qa/cppunit/data/tdf97542_2.svg
new file mode 100644
index 0000000000..4a4c7e1276
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf97542_2.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<svg width="200" height="50" xmlns="http://www.w3.org/2000/svg">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+ <radialGradient id="svg_2" cx="1" cy="1" r="3">
+ <stop offset="0" stop-color="#ff0000"/>
+ <stop offset="1" stop-color="#000000"/>
+ </radialGradient>
+ </defs>
+ <g fill="#ffff00">
+ <title>Layer 1</title>
+ <rect id="svg_1" height="50" width="200" y="0" x="0" />
+ <text x="50" y="40" id="svg_12" font-size="48" font-family="DejaVu Serif" fill="url(#svg_2)">Text</text>
+ </g>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf97543.svg b/svgio/qa/cppunit/data/tdf97543.svg
new file mode 100644
index 0000000000..fa30b22447
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf97543.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <rect x="10" y="10" width="100" height="100" rx="10" ry="10" fill="#00cc00" visibility="inherit" />
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf97710.svg b/svgio/qa/cppunit/data/tdf97710.svg
new file mode 100644
index 0000000000..bbd9a91a9b
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf97710.svg
@@ -0,0 +1,8 @@
+<svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg">
+ <!-- Example of a polyline with the default fill -->
+ <polyline points="0,100 50,25 50,75 100,0" />
+
+ <!-- Example of the same polyline shape with stroke and no fill -->
+ <polyline points="100,100 150,25 150,75 200,0" fill="green" stroke="black" />
+</svg>
+
diff --git a/svgio/qa/cppunit/data/tdf97717.svg b/svgio/qa/cppunit/data/tdf97717.svg
new file mode 100644
index 0000000000..c354e44168
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf97717.svg
@@ -0,0 +1,11 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-0 0 300 300">
+
+ <g opacity="0.5">
+ <rect x="0" y="0" height="50" width="50"
+ style="fill: #ccccff">
+ </rect>
+ </g>
+ <rect x="60" y="0" height="50" width="50"
+ style="fill: #ccccff" opacity="0.5">
+ </rect>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf97936.svg b/svgio/qa/cppunit/data/tdf97936.svg
new file mode 100644
index 0000000000..6c059ec5db
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf97936.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+<rect x="70" y="50" height="50" width="50" style="fill: #ccccff"></rect>
+<rect x="10" y="50" height="50" width="50" style="fill: #ccccff"></rect>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf97941.svg b/svgio/qa/cppunit/data/tdf97941.svg
new file mode 100644
index 0000000000..cfe1ca8c47
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf97941.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg height="600" width="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+<text x="5" y="100">
+ <tspan font-size="3em">Sample</tspan></text>
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf99115.svg b/svgio/qa/cppunit/data/tdf99115.svg
new file mode 100644
index 0000000000..6d4b5e9c1b
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf99115.svg
@@ -0,0 +1,40 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="200 px" height="100 px">
+<style type="text/css" id="style1">
+* {font-size:18px;}
+#tspan6 {fill:blue}
+.c1 {fill:green}
+.c2 {fill:red}
+#tspan8 {fill:green}
+#text9 {fill:green}
+</style>
+<text id="text1" style="" x="1" y="20" >
+ <tspan id="tspan1" fill="red">red 1</tspan>
+</text>
+<text id="text2" style="fill:red" x="1" y="40" >
+ <tspan id="tspan2">red 2</tspan>
+</text>
+<text id="text3" style="" x="1" y="60" >
+ <tspan id="tspan3" style="fill:red">red 3</tspan>
+</text>
+
+<text id="text4" style="fill:red" x="60" y="20" >
+ <tspan id="tspan4" fill="blue">blue 4</tspan>
+</text>
+<text id="text5" x="60" y="40" >
+ <tspan id="tspan5" style="fill:blue" fill="red">blue 5</tspan>
+</text>
+<text id="text6" style="fill:red" x="60" y="60" >
+ <tspan id="tspan6">blue 6</tspan>
+</text>
+
+<text id="text7" x="130" y="20" >
+ <tspan id="tspan7" class="c1" fill="blue">green 7</tspan>
+</text>
+<text id="text8" x="130" y="40" >
+ <tspan id="tspan8" class="c2" fill="red">green 8</tspan>
+</text>
+<text id="text9" x="130" y="60" class="c2">
+ <tspan id="tspan9">green 9</tspan>
+</text>
+
+</svg>
diff --git a/svgio/qa/cppunit/data/tdf99994.svg b/svgio/qa/cppunit/data/tdf99994.svg
new file mode 100644
index 0000000000..b948338c14
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf99994.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<style type="text/css" id="style1">
+*{fill:blue;}
+</style>
+<text id="text1" style="font-family:DejaVu Sans;">
+ <tspan id="tspan1">test</tspan>
+</text>
+</svg>
diff --git a/svgio/qa/cppunit/data/textXmlSpace.svg b/svgio/qa/cppunit/data/textXmlSpace.svg
new file mode 100644
index 0000000000..fe1bc8ceeb
--- /dev/null
+++ b/svgio/qa/cppunit/data/textXmlSpace.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
+ viewBox="0 0 250 250">
+ <text y="10" xml:space="default"> a b </text>
+ <text y="30" xml:space="default">a b</text>
+ <text y="50" xml:space="default">a
+ b</text>
+ <text y="70" xml:space="default">a
+b</text>
+ <text y="90" xml:space="preserve"> a b </text>
+ <text y="110" xml:space="preserve">a b</text>
+ <text y="130" xml:space="preserve">a
+ b</text>
+ <text y="150" xml:space="preserve">a
+b</text>
+</svg>
+
diff --git a/svgio/qa/cppunit/data/tspan-fill-opacity.svg b/svgio/qa/cppunit/data/tspan-fill-opacity.svg
new file mode 100644
index 0000000000..0fe6a1cd8d
--- /dev/null
+++ b/svgio/qa/cppunit/data/tspan-fill-opacity.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.2" width="210mm" height="297mm" viewBox="0 0 21000 29700" preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:presentation="http://sun.com/xmlns/staroffice/presentation" xmlns:smil="http://www.w3.org/2001/SMIL20/" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xml:space="preserve">
+ <g class="ClosedBezierShape">
+ <rect stroke="none" fill="none" x="9737" y="6537" width="7527" height="3527"/>
+ <g style="opacity: 0.30">
+ <path fill="none" stroke="rgb(255,0,0)" stroke-width="25" stroke-linejoin="round" d="M 9875,6550 C 9806,6550 9750,6606 9750,6675 L 9750,9925 C 9750,9994 9806,10050 9875,10050 L 17125,10050 C 17194,10050 17250,9994 17250,9925 L 17250,6675 C 17250,6606 17194,6550 17125,6550 L 17000,6550 9875,6550 Z"/>
+ </g>
+ </g>
+ <g class="TextShape">
+ <rect stroke="none" fill="none" x="9825" y="6550" width="4076" height="955"/>
+ <text>
+ <tspan x="9825" y="7939" font-family="DejaVu Sans" font-size="800px" fill-opacity="0.30" fill="rgb(255,0,0)" stroke="none">hello</tspan>
+ </text>
+ </g>
+</svg>