Reviewed by Oliver.
authoroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Oct 2007 13:57:06 +0000 (13:57 +0000)
committeroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Oct 2007 13:57:06 +0000 (13:57 +0000)
Fix <mask> in userSpaceOnUse coordinates. Verified by new testcase taken from Batik.

Reviewed by Anders.

Fix paths to css style sheets in the last added files. Enable smallFonts.svg as it doesn't crash anymore.
Fix paths to external <use> element reference, to make Batik happy. (We don't support it, yet.)

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@26447 268f45cc-cd09-0410-ab3c-d52691b4dbfc

16 files changed:
LayoutTests/ChangeLog
LayoutTests/svg/batik/filters/filterRegions-expected.checksum
LayoutTests/svg/batik/filters/filterRegions-expected.png
LayoutTests/svg/batik/filters/filterRegions-expected.txt
LayoutTests/svg/batik/filters/filterRegions.svg
LayoutTests/svg/batik/masking/maskRegions-expected.checksum [new file with mode: 0644]
LayoutTests/svg/batik/masking/maskRegions-expected.png [new file with mode: 0644]
LayoutTests/svg/batik/masking/maskRegions-expected.txt [new file with mode: 0644]
LayoutTests/svg/batik/masking/maskRegions.svg [new file with mode: 0644]
LayoutTests/svg/batik/text/smallFonts-expected.checksum [new file with mode: 0644]
LayoutTests/svg/batik/text/smallFonts-expected.png [new file with mode: 0644]
LayoutTests/svg/batik/text/smallFonts-expected.txt [new file with mode: 0644]
LayoutTests/svg/batik/text/smallFonts.svg [moved from LayoutTests/svg/batik/text/smallFonts.svg-disabled with 97% similarity]
LayoutTests/svg/batik/text/textDecoration.svg-disabled
WebCore/ChangeLog
WebCore/ksvg2/svg/SVGMaskElement.cpp

index 96eebaf..6c23966 100644 (file)
@@ -1,3 +1,238 @@
+2007-09-06  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Anders.
+
+        Fix paths to css style sheets in the last added files. Enable smallFonts.svg as it doesn't crash anymore.    
+        Fix paths to external <use> element reference, to make Batik happy. (We don't support it, yet.)
+
+        * svg/batik/coordinates/em-expected.checksum:
+        * svg/batik/coordinates/em-expected.png:
+        * svg/batik/coordinates/em-expected.txt:
+        * svg/batik/coordinates/em.svg:
+        * svg/batik/coordinates/percentagesAndUnits-expected.checksum:
+        * svg/batik/coordinates/percentagesAndUnits-expected.png:
+        * svg/batik/coordinates/percentagesAndUnits-expected.txt:
+        * svg/batik/coordinates/percentagesAndUnits.svg:
+        * svg/batik/filters/filterRegions-expected.checksum:
+        * svg/batik/filters/filterRegions-expected.png:
+        * svg/batik/filters/filterRegions-expected.txt:
+        * svg/batik/filters/filterRegions.svg:
+        * svg/batik/masking/maskRegions-expected.checksum:
+        * svg/batik/masking/maskRegions-expected.png:
+        * svg/batik/masking/maskRegions-expected.txt:
+        * svg/batik/masking/maskRegions.svg:
+        * svg/batik/text/smallFonts-expected.checksum: Added.
+        * svg/batik/text/smallFonts-expected.png: Added.
+        * svg/batik/text/smallFonts-expected.txt: Added.
+        * svg/batik/text/smallFonts.svg: Added.
+        * svg/batik/text/smallFonts.svg-disabled: Removed.
+        * svg/batik/text/textDecoration.svg-disabled:
+
+2007-09-05  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Oliver.
+
+        Fix <mask> in userSpaceOnUse coordinates. Verified by new testcase taken from Batik.
+
+        * svg/batik/masking/maskRegions-expected.checksum: Added.
+        * svg/batik/masking/maskRegions-expected.png: Added.
+        * svg/batik/masking/maskRegions-expected.txt: Added.
+        * svg/batik/masking/maskRegions.svg: Added.
+
+2007-09-04  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Oliver.
+
+        Update testcases after the SVG text painting rewrite.
+        Add new testcases from Batik 1.7 that we pass.
+
+        * svg/W3C-SVG-1.1/animate-elem-02-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-03-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-04-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-05-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-06-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-07-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-08-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-13-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-14-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-15-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-16-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-17-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-18-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-19-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-20-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-21-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-24-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-29-b-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-33-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-36-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-39-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-40-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-46-t-expected.txt:
+        * svg/W3C-SVG-1.1/animate-elem-77-t-expected.txt:
+        * svg/W3C-SVG-1.1/filters-blend-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/fonts-elem-02-t-expected.txt:
+        * svg/W3C-SVG-1.1/interact-cursor-01-f-expected.txt:
+        * svg/W3C-SVG-1.1/interact-events-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/linking-uri-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/linking-uri-02-b-expected.txt:
+        * svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/masking-path-04-b-expected.txt:
+        * svg/W3C-SVG-1.1/metadata-example-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/painting-fill-02-t-expected.txt:
+        * svg/W3C-SVG-1.1/painting-marker-03-f-expected.txt:
+        * svg/W3C-SVG-1.1/pservers-grad-05-b-expected.txt:
+        * svg/W3C-SVG-1.1/pservers-grad-08-b-expected.checksum:
+        * svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png:
+        * svg/W3C-SVG-1.1/pservers-grad-08-b-expected.txt:
+        * svg/W3C-SVG-1.1/pservers-grad-11-b-expected.checksum:
+        * svg/W3C-SVG-1.1/pservers-grad-11-b-expected.png:
+        * svg/W3C-SVG-1.1/pservers-grad-11-b-expected.txt:
+        * svg/W3C-SVG-1.1/render-elems-06-t-expected.txt:
+        * svg/W3C-SVG-1.1/render-elems-07-t-expected.txt:
+        * svg/W3C-SVG-1.1/render-elems-08-t-expected.txt:
+        * svg/W3C-SVG-1.1/script-handle-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/struct-frag-05-t-expected.txt:
+        * svg/W3C-SVG-1.1/struct-frag-06-t-expected.txt:
+        * svg/W3C-SVG-1.1/struct-use-01-t-expected.txt:
+        * svg/W3C-SVG-1.1/styling-css-06-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-align-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-align-02-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-align-03-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-align-04-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-align-05-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-align-06-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-altglyph-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-deco-01-b-expected.checksum:
+        * svg/W3C-SVG-1.1/text-deco-01-b-expected.png:
+        * svg/W3C-SVG-1.1/text-deco-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-fonts-01-t-expected.txt:
+        * svg/W3C-SVG-1.1/text-fonts-02-t-expected.txt:
+        * svg/W3C-SVG-1.1/text-path-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-text-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-text-03-b-expected.checksum:
+        * svg/W3C-SVG-1.1/text-text-03-b-expected.png:
+        * svg/W3C-SVG-1.1/text-text-03-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-text-07-t-expected.checksum:
+        * svg/W3C-SVG-1.1/text-text-07-t-expected.png:
+        * svg/W3C-SVG-1.1/text-text-08-b-expected.checksum:
+        * svg/W3C-SVG-1.1/text-text-08-b-expected.png:
+        * svg/W3C-SVG-1.1/text-text-08-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-tref-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-tselect-02-f-expected.txt:
+        * svg/W3C-SVG-1.1/text-tspan-01-b-expected.txt:
+        * svg/W3C-SVG-1.1/text-ws-01-t-expected.txt:
+        * svg/W3C-SVG-1.1/text-ws-02-t-expected.txt:
+        * svg/batik/coordinates/em-expected.checksum: Added.
+        * svg/batik/coordinates/em-expected.png: Added.
+        * svg/batik/coordinates/em-expected.txt: Added.
+        * svg/batik/coordinates/em.svg: Added.
+        * svg/batik/coordinates/percentagesAndUnits-expected.checksum: Added.
+        * svg/batik/coordinates/percentagesAndUnits-expected.png: Added.
+        * svg/batik/coordinates/percentagesAndUnits-expected.txt: Added.
+        * svg/batik/coordinates/percentagesAndUnits.svg: Added.
+        * svg/batik/text/textAnchor-expected.txt:
+        * svg/batik/text/textAnchor2-expected.txt:
+        * svg/batik/text/textAnchor3-expected.txt:
+        * svg/batik/text/textBiDi-expected.txt:
+        * svg/batik/text/textDecoration2-expected.checksum:
+        * svg/batik/text/textDecoration2-expected.png:
+        * svg/batik/text/textDecoration2-expected.txt:
+        * svg/batik/text/textEffect-expected.checksum:
+        * svg/batik/text/textEffect-expected.png:
+        * svg/batik/text/textEffect-expected.txt:
+        * svg/batik/text/textEffect3-expected.checksum:
+        * svg/batik/text/textEffect3-expected.png:
+        * svg/batik/text/textEffect3-expected.txt:
+        * svg/batik/text/textFeatures-expected.checksum:
+        * svg/batik/text/textFeatures-expected.png:
+        * svg/batik/text/textFeatures-expected.txt:
+        * svg/batik/text/textGlyphOrientationHorizontal-expected.txt:
+        * svg/batik/text/textLayout2-expected.txt:
+        * svg/batik/text/textOnPath-expected.txt:
+        * svg/batik/text/textOnPath2-expected.txt:
+        * svg/batik/text/textOnPath3-expected.txt:
+        * svg/batik/text/textPCDATA-expected.txt:
+        * svg/batik/text/textProperties-expected.checksum:
+        * svg/batik/text/textProperties-expected.png:
+        * svg/batik/text/textProperties-expected.txt:
+        * svg/batik/text/textProperties2-expected.checksum:
+        * svg/batik/text/textProperties2-expected.png:
+        * svg/batik/text/textProperties2-expected.txt:
+        * svg/batik/text/textStyles-expected.checksum:
+        * svg/batik/text/textStyles-expected.png:
+        * svg/batik/text/verticalText-expected.txt:
+        * svg/batik/text/verticalTextOnPath-expected.txt:
+        * svg/batik/text/xmlSpace-expected.txt:
+        * svg/carto.net/button-expected.txt:
+        * svg/carto.net/colourpicker-expected.txt:
+        * svg/carto.net/combobox-expected.txt:
+        * svg/carto.net/scrollbar-expected.txt:
+        * svg/carto.net/selectionlist-expected.txt:
+        * svg/carto.net/slider-expected.txt:
+        * svg/carto.net/tabgroup-expected.txt:
+        * svg/carto.net/textbox-expected.txt:
+        * svg/carto.net/window-expected.txt:
+        * svg/custom/feDisplacementMap-01-expected.txt:
+        * svg/custom/js-late-clipPath-and-object-creation-expected.txt:
+        * svg/custom/js-late-clipPath-creation-expected.txt:
+        * svg/custom/js-late-gradient-and-object-creation-expected.checksum:
+        * svg/custom/js-late-gradient-and-object-creation-expected.png:
+        * svg/custom/js-late-gradient-and-object-creation-expected.txt:
+        * svg/custom/js-late-gradient-creation-expected.checksum:
+        * svg/custom/js-late-gradient-creation-expected.png:
+        * svg/custom/non-opaque-filters-expected.txt:
+        * svg/custom/pointer-events-text-expected.txt:
+        * svg/custom/styledTextPath-expected.checksum: Added.
+        * svg/custom/styledTextPath-expected.png: Added.
+        * svg/custom/styledTextPath-expected.txt: Added.
+        * svg/custom/styledTextPath.svg: Added.
+        * svg/custom/text-clip-expected.txt:
+        * svg/custom/text-filter-expected.txt:
+        * svg/custom/text-image-opacity-expected.txt:
+        * svg/custom/text-letter-spacing-expected.txt:
+        * svg/custom/use-on-text-expected.txt:
+        * svg/hixie/error/002-expected.txt:
+        * svg/hixie/error/003-expected.txt:
+        * svg/hixie/error/010-expected.txt:
+        * svg/hixie/error/011-expected.txt:
+        * svg/hixie/error/017-expected.txt:
+        * svg/hixie/links/002-expected.txt:
+        * svg/hixie/perf/007-expected.txt:
+        * svg/hixie/text/001-broken-expected.txt:
+        * svg/hixie/text/002-expected.txt:
+        * svg/hixie/text/003a-expected.txt:
+        * svg/hixie/text/003b-expected.txt:
+        * svg/hixie/viewbox/preserveAspectRatio/001-expected.txt:
+        * svg/hixie/viewbox/preserveAspectRatio/002-expected.txt:
+        * svg/text/text-align-01-b-expected.txt:
+        * svg/text/text-align-02-b-expected.txt:
+        * svg/text/text-align-03-b-expected.txt:
+        * svg/text/text-align-04-b-expected.txt:
+        * svg/text/text-align-05-b-expected.txt:
+        * svg/text/text-align-06-b-expected.txt:
+        * svg/text/text-altglyph-01-b-expected.txt:
+        * svg/text/text-deco-01-b-expected.checksum:
+        * svg/text/text-deco-01-b-expected.png:
+        * svg/text/text-deco-01-b-expected.txt:
+        * svg/text/text-fonts-01-t-expected.txt:
+        * svg/text/text-fonts-02-t-expected.txt:
+        * svg/text/text-path-01-b-expected.txt:
+        * svg/text/text-text-01-b-expected.txt:
+        * svg/text/text-text-03-b-expected.checksum:
+        * svg/text/text-text-03-b-expected.png:
+        * svg/text/text-text-03-b-expected.txt:
+        * svg/text/text-text-07-t-expected.checksum:
+        * svg/text/text-text-07-t-expected.png:
+        * svg/text/text-text-08-b-expected.checksum:
+        * svg/text/text-text-08-b-expected.png:
+        * svg/text/text-text-08-b-expected.txt:
+        * svg/text/text-tref-01-b-expected.txt:
+        * svg/text/text-tselect-02-f-expected.txt:
+        * svg/text/text-tspan-01-b-expected.txt:
+        * svg/text/text-ws-01-t-expected.txt:
+        * svg/text/text-ws-02-t-expected.txt:
+
 2007-08-26  Nikolas Zimmermann  <zimmermann@kde.org>
 
         Rubberstamped by Mark.
index e5888f2..bc5a590 100644 (file)
@@ -1 +1 @@
-6244b77fe52506fc9cdcc643ff1f9cd2
\ No newline at end of file
+484e838838c3bb19f778745f7948c093
\ No newline at end of file
index cc14801..81f1d9a 100644 (file)
Binary files a/LayoutTests/svg/batik/filters/filterRegions-expected.png and b/LayoutTests/svg/batik/filters/filterRegions-expected.png differ
index a359947..bcff5f8 100644 (file)
@@ -19,9 +19,9 @@ layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 450x500
   RenderSVGRoot {svg} at (9,26) size 20000320x3124
-    RenderSVGText {text} at (225,40) size 89x18 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,-14) size 89x18
-        chunk 1 text run 1 at (225.00,40.00) startOffset 0 endOffset 14 width 89.00: "Filter Regions"
+    RenderSVGText {text} at (175,40) size 100x17 contains 1 chunk(s)
+      RenderSVGInlineText {#text} at (0,-14) size 100x17
+        chunk 1 (middle anchor) text run 1 at (175.00,40.00) startOffset 0 endOffset 14 width 100.00: "Filter Regions"
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
     RenderSVGContainer {g} at (9,59) size 20000320x3091 [transform={m=((1.00,0.00)(0.00,1.00)) t=(30.00,50.00)}]
       RenderSVGContainer {g} at (259,119) size 121.50x81.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(240.00,95.00)}]
index c22f2b0..1d3c1d7 100755 (executable)
@@ -30,7 +30,7 @@
 <!-- @version $Id: filterRegions.svg,v 1.5 2004/08/18 07:11:50 vhardy Exp $    -->
 <!-- ========================================================================= -->
 
-<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+<?xml-stylesheet type="text/css" href="../resources/test.css" ?>
 
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="body" width="450" height="500" viewBox="0 0 450 500">
 <title>FilterRegions test</title>
     <!-- ============================================================= -->
     <!-- Batik sample mark                                             -->
     <!-- ============================================================= -->
-    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />    
+    <use xlink:href="../resources/batikLogo.svg#Batik_Tag_Box" />    
 
 </svg>
diff --git a/LayoutTests/svg/batik/masking/maskRegions-expected.checksum b/LayoutTests/svg/batik/masking/maskRegions-expected.checksum
new file mode 100644 (file)
index 0000000..12d4f7c
--- /dev/null
@@ -0,0 +1 @@
+29a3b91a1fa1d3970c39024292e082c8
\ No newline at end of file
diff --git a/LayoutTests/svg/batik/masking/maskRegions-expected.png b/LayoutTests/svg/batik/masking/maskRegions-expected.png
new file mode 100644 (file)
index 0000000..b0d42d5
Binary files /dev/null and b/LayoutTests/svg/batik/masking/maskRegions-expected.png differ
diff --git a/LayoutTests/svg/batik/masking/maskRegions-expected.txt b/LayoutTests/svg/batik/masking/maskRegions-expected.txt
new file mode 100644 (file)
index 0000000..262bde7
--- /dev/null
@@ -0,0 +1,74 @@
+KRenderingPaintServer {id="maskedGradient" [type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}
+KCanvasResource {id="mask_1" [type=MASKER]}
+KCanvasResource {id="mask_2" [type=MASKER]}
+KCanvasResource {id="mask_3" [type=MASKER]}
+KCanvasResource {id="mask_4" [type=MASKER]}
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 450x500
+  RenderSVGRoot {svg} at (85,36) size 275x384
+    RenderSVGContainer {g} at (85,36) size 275x384
+      RenderSVGText {text} at (174,50) size 102x17 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-14) size 102x17
+          chunk 1 (middle anchor) text run 1 at (174.00,50.00) startOffset 0 endOffset 12 width 102.00: "Mask Regions"
+      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+        RenderSVGHiddenContainer {linearGradient} at (0,0) size 0x0
+          RenderSVGGradientStop {stop} at (0,0) size 0x0
+          RenderSVGGradientStop {stop} at (0,0) size 0x0
+        RenderPath {rect} at (0,0) size 100x80 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}] [data="M0.00,0.00L100.00,0.00L100.00,80.00L0.00,80.00"]
+        RenderSVGContainer {mask} at (5,0) size 90x80
+          RenderPath {circle} at (5,0) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,20.00L44.96,21.26L44.84,22.51L44.65,23.75L44.37,24.97L44.02,26.18L43.60,27.36L43.10,28.52L42.53,29.64L41.89,30.72L41.18,31.76L40.41,32.75L39.58,33.69L38.69,34.58L37.75,35.41L36.76,36.18L35.72,36.89L34.64,37.53L33.52,38.10L32.36,38.60L31.18,39.02L29.97,39.37L28.75,39.65L27.51,39.84L26.26,39.96L25.00,40.00L23.74,39.96L22.49,39.84L21.25,39.65L20.03,39.37L18.82,39.02L17.64,38.60L16.48,38.10L15.36,37.53L14.28,36.89L13.24,36.18L12.25,35.41L11.31,34.58L10.42,33.69L9.59,32.75L8.82,31.76L8.11,30.72L7.47,29.64L6.90,28.52L6.40,27.36L5.98,26.18L5.63,24.97L5.35,23.75L5.16,22.51L5.04,21.26L5.00,20.00L5.04,18.74L5.16,17.49L5.35,16.25L5.63,15.03L5.98,13.82L6.40,12.64L6.90,11.48L7.47,10.36L8.11,9.28L8.82,8.24L9.59,7.25L10.42,6.31L11.31,5.42L12.25,4.59L13.24,3.82L14.28,3.11L15.36,2.47L16.48,1.90L17.64,1.40L18.82,0.98L20.03,0.63L21.25,0.35L22.49,0.16L23.74,0.04L25.00,0.00L26.26,0.04L27.51,0.16L28.75,0.35L29.97,0.63L31.18,0.98L32.36,1.40L33.52,1.90L34.64,2.47L35.72,3.11L36.76,3.82L37.75,4.59L38.69,5.42L39.58,6.31L40.41,7.25L41.18,8.24L41.89,9.28L42.53,10.36L43.10,11.48L43.60,12.64L44.02,13.82L44.37,15.03L44.65,16.25L44.84,17.49L44.96,18.74"]
+          RenderPath {circle} at (5,40) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,60.00L44.96,61.26L44.84,62.51L44.65,63.75L44.37,64.97L44.02,66.18L43.60,67.36L43.10,68.52L42.53,69.64L41.89,70.72L41.18,71.76L40.41,72.75L39.58,73.69L38.69,74.58L37.75,75.41L36.76,76.18L35.72,76.89L34.64,77.53L33.52,78.10L32.36,78.60L31.18,79.02L29.97,79.37L28.75,79.65L27.51,79.84L26.26,79.96L25.00,80.00L23.74,79.96L22.49,79.84L21.25,79.65L20.03,79.37L18.82,79.02L17.64,78.60L16.48,78.10L15.36,77.53L14.28,76.89L13.24,76.18L12.25,75.41L11.31,74.58L10.42,73.69L9.59,72.75L8.82,71.76L8.11,70.72L7.47,69.64L6.90,68.52L6.40,67.36L5.98,66.18L5.63,64.97L5.35,63.75L5.16,62.51L5.04,61.26L5.00,60.00L5.04,58.74L5.16,57.49L5.35,56.25L5.63,55.03L5.98,53.82L6.40,52.64L6.90,51.48L7.47,50.36L8.11,49.28L8.82,48.24L9.59,47.25L10.42,46.31L11.31,45.42L12.25,44.59L13.24,43.82L14.28,43.11L15.36,42.47L16.48,41.90L17.64,41.40L18.82,40.98L20.03,40.63L21.25,40.35L22.49,40.16L23.74,40.04L25.00,40.00L26.26,40.04L27.51,40.16L28.75,40.35L29.97,40.63L31.18,40.98L32.36,41.40L33.52,41.90L34.64,42.47L35.72,43.11L36.76,43.82L37.75,44.59L38.69,45.42L39.58,46.31L40.41,47.25L41.18,48.24L41.89,49.28L42.53,50.36L43.10,51.48L43.60,52.64L44.02,53.82L44.37,55.03L44.65,56.25L44.84,57.49L44.96,58.74"]
+          RenderPath {circle} at (55,0) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,20.00L94.96,21.26L94.84,22.51L94.65,23.75L94.37,24.97L94.02,26.18L93.60,27.36L93.10,28.52L92.53,29.64L91.89,30.72L91.18,31.76L90.41,32.75L89.58,33.69L88.69,34.58L87.75,35.41L86.76,36.18L85.72,36.89L84.64,37.53L83.52,38.10L82.36,38.60L81.18,39.02L79.97,39.37L78.75,39.65L77.51,39.84L76.26,39.96L75.00,40.00L73.74,39.96L72.49,39.84L71.25,39.65L70.03,39.37L68.82,39.02L67.64,38.60L66.48,38.10L65.36,37.53L64.28,36.89L63.24,36.18L62.25,35.41L61.31,34.58L60.42,33.69L59.59,32.75L58.82,31.76L58.11,30.72L57.47,29.64L56.90,28.52L56.40,27.36L55.98,26.18L55.63,24.97L55.35,23.75L55.16,22.51L55.04,21.26L55.00,20.00L55.04,18.74L55.16,17.49L55.35,16.25L55.63,15.03L55.98,13.82L56.40,12.64L56.90,11.48L57.47,10.36L58.11,9.28L58.82,8.24L59.59,7.25L60.42,6.31L61.31,5.42L62.25,4.59L63.24,3.82L64.28,3.11L65.36,2.47L66.48,1.90L67.64,1.40L68.82,0.98L70.03,0.63L71.25,0.35L72.49,0.16L73.74,0.04L75.00,0.00L76.26,0.04L77.51,0.16L78.75,0.35L79.97,0.63L81.18,0.98L82.36,1.40L83.52,1.90L84.64,2.47L85.72,3.11L86.76,3.82L87.75,4.59L88.69,5.42L89.58,6.31L90.41,7.25L91.18,8.24L91.89,9.28L92.53,10.36L93.10,11.48L93.60,12.64L94.02,13.82L94.37,15.03L94.65,16.25L94.84,17.49L94.96,18.74"]
+          RenderPath {circle} at (55,40) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,60.00L94.96,61.26L94.84,62.51L94.65,63.75L94.37,64.97L94.02,66.18L93.60,67.36L93.10,68.52L92.53,69.64L91.89,70.72L91.18,71.76L90.41,72.75L89.58,73.69L88.69,74.58L87.75,75.41L86.76,76.18L85.72,76.89L84.64,77.53L83.52,78.10L82.36,78.60L81.18,79.02L79.97,79.37L78.75,79.65L77.51,79.84L76.26,79.96L75.00,80.00L73.74,79.96L72.49,79.84L71.25,79.65L70.03,79.37L68.82,79.02L67.64,78.60L66.48,78.10L65.36,77.53L64.28,76.89L63.24,76.18L62.25,75.41L61.31,74.58L60.42,73.69L59.59,72.75L58.82,71.76L58.11,70.72L57.47,69.64L56.90,68.52L56.40,67.36L55.98,66.18L55.63,64.97L55.35,63.75L55.16,62.51L55.04,61.26L55.00,60.00L55.04,58.74L55.16,57.49L55.35,56.25L55.63,55.03L55.98,53.82L56.40,52.64L56.90,51.48L57.47,50.36L58.11,49.28L58.82,48.24L59.59,47.25L60.42,46.31L61.31,45.42L62.25,44.59L63.24,43.82L64.28,43.11L65.36,42.47L66.48,41.90L67.64,41.40L68.82,40.98L70.03,40.63L71.25,40.35L72.49,40.16L73.74,40.04L75.00,40.00L76.26,40.04L77.51,40.16L78.75,40.35L79.97,40.63L81.18,40.98L82.36,41.40L83.52,41.90L84.64,42.47L85.72,43.11L86.76,43.82L87.75,44.59L88.69,45.42L89.58,46.31L90.41,47.25L91.18,48.24L91.89,49.28L92.53,50.36L93.10,51.48L93.60,52.64L94.02,53.82L94.37,55.03L94.65,56.25L94.84,57.49L94.96,58.74"]
+        RenderSVGContainer {mask} at (5,0) size 90x80
+          RenderPath {circle} at (5,0) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,20.00L44.96,21.26L44.84,22.51L44.65,23.75L44.37,24.97L44.02,26.18L43.60,27.36L43.10,28.52L42.53,29.64L41.89,30.72L41.18,31.76L40.41,32.75L39.58,33.69L38.69,34.58L37.75,35.41L36.76,36.18L35.72,36.89L34.64,37.53L33.52,38.10L32.36,38.60L31.18,39.02L29.97,39.37L28.75,39.65L27.51,39.84L26.26,39.96L25.00,40.00L23.74,39.96L22.49,39.84L21.25,39.65L20.03,39.37L18.82,39.02L17.64,38.60L16.48,38.10L15.36,37.53L14.28,36.89L13.24,36.18L12.25,35.41L11.31,34.58L10.42,33.69L9.59,32.75L8.82,31.76L8.11,30.72L7.47,29.64L6.90,28.52L6.40,27.36L5.98,26.18L5.63,24.97L5.35,23.75L5.16,22.51L5.04,21.26L5.00,20.00L5.04,18.74L5.16,17.49L5.35,16.25L5.63,15.03L5.98,13.82L6.40,12.64L6.90,11.48L7.47,10.36L8.11,9.28L8.82,8.24L9.59,7.25L10.42,6.31L11.31,5.42L12.25,4.59L13.24,3.82L14.28,3.11L15.36,2.47L16.48,1.90L17.64,1.40L18.82,0.98L20.03,0.63L21.25,0.35L22.49,0.16L23.74,0.04L25.00,0.00L26.26,0.04L27.51,0.16L28.75,0.35L29.97,0.63L31.18,0.98L32.36,1.40L33.52,1.90L34.64,2.47L35.72,3.11L36.76,3.82L37.75,4.59L38.69,5.42L39.58,6.31L40.41,7.25L41.18,8.24L41.89,9.28L42.53,10.36L43.10,11.48L43.60,12.64L44.02,13.82L44.37,15.03L44.65,16.25L44.84,17.49L44.96,18.74"]
+          RenderPath {circle} at (5,40) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,60.00L44.96,61.26L44.84,62.51L44.65,63.75L44.37,64.97L44.02,66.18L43.60,67.36L43.10,68.52L42.53,69.64L41.89,70.72L41.18,71.76L40.41,72.75L39.58,73.69L38.69,74.58L37.75,75.41L36.76,76.18L35.72,76.89L34.64,77.53L33.52,78.10L32.36,78.60L31.18,79.02L29.97,79.37L28.75,79.65L27.51,79.84L26.26,79.96L25.00,80.00L23.74,79.96L22.49,79.84L21.25,79.65L20.03,79.37L18.82,79.02L17.64,78.60L16.48,78.10L15.36,77.53L14.28,76.89L13.24,76.18L12.25,75.41L11.31,74.58L10.42,73.69L9.59,72.75L8.82,71.76L8.11,70.72L7.47,69.64L6.90,68.52L6.40,67.36L5.98,66.18L5.63,64.97L5.35,63.75L5.16,62.51L5.04,61.26L5.00,60.00L5.04,58.74L5.16,57.49L5.35,56.25L5.63,55.03L5.98,53.82L6.40,52.64L6.90,51.48L7.47,50.36L8.11,49.28L8.82,48.24L9.59,47.25L10.42,46.31L11.31,45.42L12.25,44.59L13.24,43.82L14.28,43.11L15.36,42.47L16.48,41.90L17.64,41.40L18.82,40.98L20.03,40.63L21.25,40.35L22.49,40.16L23.74,40.04L25.00,40.00L26.26,40.04L27.51,40.16L28.75,40.35L29.97,40.63L31.18,40.98L32.36,41.40L33.52,41.90L34.64,42.47L35.72,43.11L36.76,43.82L37.75,44.59L38.69,45.42L39.58,46.31L40.41,47.25L41.18,48.24L41.89,49.28L42.53,50.36L43.10,51.48L43.60,52.64L44.02,53.82L44.37,55.03L44.65,56.25L44.84,57.49L44.96,58.74"]
+          RenderPath {circle} at (55,0) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,20.00L94.96,21.26L94.84,22.51L94.65,23.75L94.37,24.97L94.02,26.18L93.60,27.36L93.10,28.52L92.53,29.64L91.89,30.72L91.18,31.76L90.41,32.75L89.58,33.69L88.69,34.58L87.75,35.41L86.76,36.18L85.72,36.89L84.64,37.53L83.52,38.10L82.36,38.60L81.18,39.02L79.97,39.37L78.75,39.65L77.51,39.84L76.26,39.96L75.00,40.00L73.74,39.96L72.49,39.84L71.25,39.65L70.03,39.37L68.82,39.02L67.64,38.60L66.48,38.10L65.36,37.53L64.28,36.89L63.24,36.18L62.25,35.41L61.31,34.58L60.42,33.69L59.59,32.75L58.82,31.76L58.11,30.72L57.47,29.64L56.90,28.52L56.40,27.36L55.98,26.18L55.63,24.97L55.35,23.75L55.16,22.51L55.04,21.26L55.00,20.00L55.04,18.74L55.16,17.49L55.35,16.25L55.63,15.03L55.98,13.82L56.40,12.64L56.90,11.48L57.47,10.36L58.11,9.28L58.82,8.24L59.59,7.25L60.42,6.31L61.31,5.42L62.25,4.59L63.24,3.82L64.28,3.11L65.36,2.47L66.48,1.90L67.64,1.40L68.82,0.98L70.03,0.63L71.25,0.35L72.49,0.16L73.74,0.04L75.00,0.00L76.26,0.04L77.51,0.16L78.75,0.35L79.97,0.63L81.18,0.98L82.36,1.40L83.52,1.90L84.64,2.47L85.72,3.11L86.76,3.82L87.75,4.59L88.69,5.42L89.58,6.31L90.41,7.25L91.18,8.24L91.89,9.28L92.53,10.36L93.10,11.48L93.60,12.64L94.02,13.82L94.37,15.03L94.65,16.25L94.84,17.49L94.96,18.74"]
+          RenderPath {circle} at (55,40) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,60.00L94.96,61.26L94.84,62.51L94.65,63.75L94.37,64.97L94.02,66.18L93.60,67.36L93.10,68.52L92.53,69.64L91.89,70.72L91.18,71.76L90.41,72.75L89.58,73.69L88.69,74.58L87.75,75.41L86.76,76.18L85.72,76.89L84.64,77.53L83.52,78.10L82.36,78.60L81.18,79.02L79.97,79.37L78.75,79.65L77.51,79.84L76.26,79.96L75.00,80.00L73.74,79.96L72.49,79.84L71.25,79.65L70.03,79.37L68.82,79.02L67.64,78.60L66.48,78.10L65.36,77.53L64.28,76.89L63.24,76.18L62.25,75.41L61.31,74.58L60.42,73.69L59.59,72.75L58.82,71.76L58.11,70.72L57.47,69.64L56.90,68.52L56.40,67.36L55.98,66.18L55.63,64.97L55.35,63.75L55.16,62.51L55.04,61.26L55.00,60.00L55.04,58.74L55.16,57.49L55.35,56.25L55.63,55.03L55.98,53.82L56.40,52.64L56.90,51.48L57.47,50.36L58.11,49.28L58.82,48.24L59.59,47.25L60.42,46.31L61.31,45.42L62.25,44.59L63.24,43.82L64.28,43.11L65.36,42.47L66.48,41.90L67.64,41.40L68.82,40.98L70.03,40.63L71.25,40.35L72.49,40.16L73.74,40.04L75.00,40.00L76.26,40.04L77.51,40.16L78.75,40.35L79.97,40.63L81.18,40.98L82.36,41.40L83.52,41.90L84.64,42.47L85.72,43.11L86.76,43.82L87.75,44.59L88.69,45.42L89.58,46.31L90.41,47.25L91.18,48.24L91.89,49.28L92.53,50.36L93.10,51.48L93.60,52.64L94.02,53.82L94.37,55.03L94.65,56.25L94.84,57.49L94.96,58.74"]
+        RenderSVGContainer {mask} at (5,0) size 90x80
+          RenderPath {circle} at (5,0) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,20.00L44.96,21.26L44.84,22.51L44.65,23.75L44.37,24.97L44.02,26.18L43.60,27.36L43.10,28.52L42.53,29.64L41.89,30.72L41.18,31.76L40.41,32.75L39.58,33.69L38.69,34.58L37.75,35.41L36.76,36.18L35.72,36.89L34.64,37.53L33.52,38.10L32.36,38.60L31.18,39.02L29.97,39.37L28.75,39.65L27.51,39.84L26.26,39.96L25.00,40.00L23.74,39.96L22.49,39.84L21.25,39.65L20.03,39.37L18.82,39.02L17.64,38.60L16.48,38.10L15.36,37.53L14.28,36.89L13.24,36.18L12.25,35.41L11.31,34.58L10.42,33.69L9.59,32.75L8.82,31.76L8.11,30.72L7.47,29.64L6.90,28.52L6.40,27.36L5.98,26.18L5.63,24.97L5.35,23.75L5.16,22.51L5.04,21.26L5.00,20.00L5.04,18.74L5.16,17.49L5.35,16.25L5.63,15.03L5.98,13.82L6.40,12.64L6.90,11.48L7.47,10.36L8.11,9.28L8.82,8.24L9.59,7.25L10.42,6.31L11.31,5.42L12.25,4.59L13.24,3.82L14.28,3.11L15.36,2.47L16.48,1.90L17.64,1.40L18.82,0.98L20.03,0.63L21.25,0.35L22.49,0.16L23.74,0.04L25.00,0.00L26.26,0.04L27.51,0.16L28.75,0.35L29.97,0.63L31.18,0.98L32.36,1.40L33.52,1.90L34.64,2.47L35.72,3.11L36.76,3.82L37.75,4.59L38.69,5.42L39.58,6.31L40.41,7.25L41.18,8.24L41.89,9.28L42.53,10.36L43.10,11.48L43.60,12.64L44.02,13.82L44.37,15.03L44.65,16.25L44.84,17.49L44.96,18.74"]
+          RenderPath {circle} at (5,40) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,60.00L44.96,61.26L44.84,62.51L44.65,63.75L44.37,64.97L44.02,66.18L43.60,67.36L43.10,68.52L42.53,69.64L41.89,70.72L41.18,71.76L40.41,72.75L39.58,73.69L38.69,74.58L37.75,75.41L36.76,76.18L35.72,76.89L34.64,77.53L33.52,78.10L32.36,78.60L31.18,79.02L29.97,79.37L28.75,79.65L27.51,79.84L26.26,79.96L25.00,80.00L23.74,79.96L22.49,79.84L21.25,79.65L20.03,79.37L18.82,79.02L17.64,78.60L16.48,78.10L15.36,77.53L14.28,76.89L13.24,76.18L12.25,75.41L11.31,74.58L10.42,73.69L9.59,72.75L8.82,71.76L8.11,70.72L7.47,69.64L6.90,68.52L6.40,67.36L5.98,66.18L5.63,64.97L5.35,63.75L5.16,62.51L5.04,61.26L5.00,60.00L5.04,58.74L5.16,57.49L5.35,56.25L5.63,55.03L5.98,53.82L6.40,52.64L6.90,51.48L7.47,50.36L8.11,49.28L8.82,48.24L9.59,47.25L10.42,46.31L11.31,45.42L12.25,44.59L13.24,43.82L14.28,43.11L15.36,42.47L16.48,41.90L17.64,41.40L18.82,40.98L20.03,40.63L21.25,40.35L22.49,40.16L23.74,40.04L25.00,40.00L26.26,40.04L27.51,40.16L28.75,40.35L29.97,40.63L31.18,40.98L32.36,41.40L33.52,41.90L34.64,42.47L35.72,43.11L36.76,43.82L37.75,44.59L38.69,45.42L39.58,46.31L40.41,47.25L41.18,48.24L41.89,49.28L42.53,50.36L43.10,51.48L43.60,52.64L44.02,53.82L44.37,55.03L44.65,56.25L44.84,57.49L44.96,58.74"]
+          RenderPath {circle} at (55,0) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,20.00L94.96,21.26L94.84,22.51L94.65,23.75L94.37,24.97L94.02,26.18L93.60,27.36L93.10,28.52L92.53,29.64L91.89,30.72L91.18,31.76L90.41,32.75L89.58,33.69L88.69,34.58L87.75,35.41L86.76,36.18L85.72,36.89L84.64,37.53L83.52,38.10L82.36,38.60L81.18,39.02L79.97,39.37L78.75,39.65L77.51,39.84L76.26,39.96L75.00,40.00L73.74,39.96L72.49,39.84L71.25,39.65L70.03,39.37L68.82,39.02L67.64,38.60L66.48,38.10L65.36,37.53L64.28,36.89L63.24,36.18L62.25,35.41L61.31,34.58L60.42,33.69L59.59,32.75L58.82,31.76L58.11,30.72L57.47,29.64L56.90,28.52L56.40,27.36L55.98,26.18L55.63,24.97L55.35,23.75L55.16,22.51L55.04,21.26L55.00,20.00L55.04,18.74L55.16,17.49L55.35,16.25L55.63,15.03L55.98,13.82L56.40,12.64L56.90,11.48L57.47,10.36L58.11,9.28L58.82,8.24L59.59,7.25L60.42,6.31L61.31,5.42L62.25,4.59L63.24,3.82L64.28,3.11L65.36,2.47L66.48,1.90L67.64,1.40L68.82,0.98L70.03,0.63L71.25,0.35L72.49,0.16L73.74,0.04L75.00,0.00L76.26,0.04L77.51,0.16L78.75,0.35L79.97,0.63L81.18,0.98L82.36,1.40L83.52,1.90L84.64,2.47L85.72,3.11L86.76,3.82L87.75,4.59L88.69,5.42L89.58,6.31L90.41,7.25L91.18,8.24L91.89,9.28L92.53,10.36L93.10,11.48L93.60,12.64L94.02,13.82L94.37,15.03L94.65,16.25L94.84,17.49L94.96,18.74"]
+          RenderPath {circle} at (55,40) size 40x40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,60.00L94.96,61.26L94.84,62.51L94.65,63.75L94.37,64.97L94.02,66.18L93.60,67.36L93.10,68.52L92.53,69.64L91.89,70.72L91.18,71.76L90.41,72.75L89.58,73.69L88.69,74.58L87.75,75.41L86.76,76.18L85.72,76.89L84.64,77.53L83.52,78.10L82.36,78.60L81.18,79.02L79.97,79.37L78.75,79.65L77.51,79.84L76.26,79.96L75.00,80.00L73.74,79.96L72.49,79.84L71.25,79.65L70.03,79.37L68.82,79.02L67.64,78.60L66.48,78.10L65.36,77.53L64.28,76.89L63.24,76.18L62.25,75.41L61.31,74.58L60.42,73.69L59.59,72.75L58.82,71.76L58.11,70.72L57.47,69.64L56.90,68.52L56.40,67.36L55.98,66.18L55.63,64.97L55.35,63.75L55.16,62.51L55.04,61.26L55.00,60.00L55.04,58.74L55.16,57.49L55.35,56.25L55.63,55.03L55.98,53.82L56.40,52.64L56.90,51.48L57.47,50.36L58.11,49.28L58.82,48.24L59.59,47.25L60.42,46.31L61.31,45.42L62.25,44.59L63.24,43.82L64.28,43.11L65.36,42.47L66.48,41.90L67.64,41.40L68.82,40.98L70.03,40.63L71.25,40.35L72.49,40.16L73.74,40.04L75.00,40.00L76.26,40.04L77.51,40.16L78.75,40.35L79.97,40.63L81.18,40.98L82.36,41.40L83.52,41.90L84.64,42.47L85.72,43.11L86.76,43.82L87.75,44.59L88.69,45.42L89.58,46.31L90.41,47.25L91.18,48.24L91.89,49.28L92.53,50.36L93.10,51.48L93.60,52.64L94.02,53.82L94.37,55.03L94.65,56.25L94.84,57.49L94.96,58.74"]
+        RenderSVGContainer {mask} at (0.05,0) size 0.90x0.80
+          RenderPath {circle} at (0.05,0) size 0.40x0.40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.45,0.20L0.45,0.21L0.45,0.23L0.45,0.24L0.44,0.25L0.44,0.26L0.44,0.27L0.43,0.29L0.43,0.30L0.42,0.31L0.41,0.32L0.40,0.33L0.40,0.34L0.39,0.35L0.38,0.35L0.37,0.36L0.36,0.37L0.35,0.38L0.34,0.38L0.32,0.39L0.31,0.39L0.30,0.39L0.29,0.40L0.28,0.40L0.26,0.40L0.25,0.40L0.24,0.40L0.22,0.40L0.21,0.40L0.20,0.39L0.19,0.39L0.18,0.39L0.16,0.38L0.15,0.38L0.14,0.37L0.13,0.36L0.12,0.35L0.11,0.35L0.10,0.34L0.10,0.33L0.09,0.32L0.08,0.31L0.07,0.30L0.07,0.29L0.06,0.27L0.06,0.26L0.06,0.25L0.05,0.24L0.05,0.23L0.05,0.21L0.05,0.20L0.05,0.19L0.05,0.17L0.05,0.16L0.06,0.15L0.06,0.14L0.06,0.13L0.07,0.11L0.07,0.10L0.08,0.09L0.09,0.08L0.10,0.07L0.10,0.06L0.11,0.05L0.12,0.05L0.13,0.04L0.14,0.03L0.15,0.02L0.16,0.02L0.18,0.01L0.19,0.01L0.20,0.01L0.21,0.00L0.22,0.00L0.24,0.00L0.25,0.00L0.26,0.00L0.28,0.00L0.29,0.00L0.30,0.01L0.31,0.01L0.32,0.01L0.34,0.02L0.35,0.02L0.36,0.03L0.37,0.04L0.38,0.05L0.39,0.05L0.40,0.06L0.40,0.07L0.41,0.08L0.42,0.09L0.43,0.10L0.43,0.11L0.44,0.13L0.44,0.14L0.44,0.15L0.45,0.16L0.45,0.17L0.45,0.19"]
+          RenderPath {circle} at (0.05,0.40) size 0.40x0.40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.45,0.60L0.45,0.61L0.45,0.63L0.45,0.64L0.44,0.65L0.44,0.66L0.44,0.67L0.43,0.69L0.43,0.70L0.42,0.71L0.41,0.72L0.40,0.73L0.40,0.74L0.39,0.75L0.38,0.75L0.37,0.76L0.36,0.77L0.35,0.78L0.34,0.78L0.32,0.79L0.31,0.79L0.30,0.79L0.29,0.80L0.28,0.80L0.26,0.80L0.25,0.80L0.24,0.80L0.22,0.80L0.21,0.80L0.20,0.79L0.19,0.79L0.18,0.79L0.16,0.78L0.15,0.78L0.14,0.77L0.13,0.76L0.12,0.75L0.11,0.75L0.10,0.74L0.10,0.73L0.09,0.72L0.08,0.71L0.07,0.70L0.07,0.69L0.06,0.67L0.06,0.66L0.06,0.65L0.05,0.64L0.05,0.63L0.05,0.61L0.05,0.60L0.05,0.59L0.05,0.57L0.05,0.56L0.06,0.55L0.06,0.54L0.06,0.53L0.07,0.51L0.07,0.50L0.08,0.49L0.09,0.48L0.10,0.47L0.10,0.46L0.11,0.45L0.12,0.45L0.13,0.44L0.14,0.43L0.15,0.42L0.16,0.42L0.18,0.41L0.19,0.41L0.20,0.41L0.21,0.40L0.22,0.40L0.24,0.40L0.25,0.40L0.26,0.40L0.28,0.40L0.29,0.40L0.30,0.41L0.31,0.41L0.32,0.41L0.34,0.42L0.35,0.42L0.36,0.43L0.37,0.44L0.38,0.45L0.39,0.45L0.40,0.46L0.40,0.47L0.41,0.48L0.42,0.49L0.43,0.50L0.43,0.51L0.44,0.53L0.44,0.54L0.44,0.55L0.45,0.56L0.45,0.57L0.45,0.59"]
+          RenderPath {circle} at (0.55,0) size 0.40x0.40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.95,0.20L0.95,0.21L0.95,0.23L0.95,0.24L0.94,0.25L0.94,0.26L0.94,0.27L0.93,0.29L0.93,0.30L0.92,0.31L0.91,0.32L0.90,0.33L0.90,0.34L0.89,0.35L0.88,0.35L0.87,0.36L0.86,0.37L0.85,0.38L0.84,0.38L0.82,0.39L0.81,0.39L0.80,0.39L0.79,0.40L0.78,0.40L0.76,0.40L0.75,0.40L0.74,0.40L0.72,0.40L0.71,0.40L0.70,0.39L0.69,0.39L0.68,0.39L0.66,0.38L0.65,0.38L0.64,0.37L0.63,0.36L0.62,0.35L0.61,0.35L0.60,0.34L0.60,0.33L0.59,0.32L0.58,0.31L0.57,0.30L0.57,0.29L0.56,0.27L0.56,0.26L0.56,0.25L0.55,0.24L0.55,0.23L0.55,0.21L0.55,0.20L0.55,0.19L0.55,0.17L0.55,0.16L0.56,0.15L0.56,0.14L0.56,0.13L0.57,0.11L0.57,0.10L0.58,0.09L0.59,0.08L0.60,0.07L0.60,0.06L0.61,0.05L0.62,0.05L0.63,0.04L0.64,0.03L0.65,0.02L0.66,0.02L0.68,0.01L0.69,0.01L0.70,0.01L0.71,0.00L0.72,0.00L0.74,0.00L0.75,0.00L0.76,0.00L0.78,0.00L0.79,0.00L0.80,0.01L0.81,0.01L0.82,0.01L0.84,0.02L0.85,0.02L0.86,0.03L0.87,0.04L0.88,0.05L0.89,0.05L0.90,0.06L0.90,0.07L0.91,0.08L0.92,0.09L0.93,0.10L0.93,0.11L0.94,0.13L0.94,0.14L0.94,0.15L0.95,0.16L0.95,0.17L0.95,0.19"]
+          RenderPath {circle} at (0.55,0.40) size 0.40x0.40 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.95,0.60L0.95,0.61L0.95,0.63L0.95,0.64L0.94,0.65L0.94,0.66L0.94,0.67L0.93,0.69L0.93,0.70L0.92,0.71L0.91,0.72L0.90,0.73L0.90,0.74L0.89,0.75L0.88,0.75L0.87,0.76L0.86,0.77L0.85,0.78L0.84,0.78L0.82,0.79L0.81,0.79L0.80,0.79L0.79,0.80L0.78,0.80L0.76,0.80L0.75,0.80L0.74,0.80L0.72,0.80L0.71,0.80L0.70,0.79L0.69,0.79L0.68,0.79L0.66,0.78L0.65,0.78L0.64,0.77L0.63,0.76L0.62,0.75L0.61,0.75L0.60,0.74L0.60,0.73L0.59,0.72L0.58,0.71L0.57,0.70L0.57,0.69L0.56,0.67L0.56,0.66L0.56,0.65L0.55,0.64L0.55,0.63L0.55,0.61L0.55,0.60L0.55,0.59L0.55,0.57L0.55,0.56L0.56,0.55L0.56,0.54L0.56,0.53L0.57,0.51L0.57,0.50L0.58,0.49L0.59,0.48L0.60,0.47L0.60,0.46L0.61,0.45L0.62,0.45L0.63,0.44L0.64,0.43L0.65,0.42L0.66,0.42L0.68,0.41L0.69,0.41L0.70,0.41L0.71,0.40L0.72,0.40L0.74,0.40L0.75,0.40L0.76,0.40L0.78,0.40L0.79,0.40L0.80,0.41L0.81,0.41L0.82,0.41L0.84,0.42L0.85,0.42L0.86,0.43L0.87,0.44L0.88,0.45L0.89,0.45L0.90,0.46L0.90,0.47L0.91,0.48L0.92,0.49L0.93,0.50L0.93,0.51L0.94,0.53L0.94,0.54L0.94,0.55L0.95,0.56L0.95,0.57L0.95,0.59"]
+      RenderSVGContainer {g} at (175,83) size 100x97 [transform={m=((1.00,0.00)(0.00,1.00)) t=(175.00,100.00)}]
+        RenderSVGContainer {use} at (175,100) size 100x80
+          RenderSVGContainer {g} at (175,100) size 100x80
+            RenderPath {rect} at (175,100) size 100x80 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}] [data="M0.00,0.00L100.00,0.00L100.00,80.00L0.00,80.00"]
+        RenderSVGText {text} at (22,-3) size 56x17 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-14) size 56x17
+            chunk 1 (middle anchor) text run 1 at (22.00,-3.00) startOffset 0 endOffset 6 width 56.00: "Masked"
+      RenderSVGContainer {g} at (85,203) size 100x97 [transform={m=((1.00,0.00)(0.00,1.00)) t=(85.00,220.00)}]
+        RenderSVGContainer {use} at (85,220) size 100x80
+          RenderSVGContainer {g} at (85,220) size 100x80
+            RenderPath {rect} at (85,220) size 100x80 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}] [data="M0.00,0.00L100.00,0.00L100.00,80.00L0.00,80.00"]
+        RenderSVGText {text} at (24,-3) size 52x17 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-14) size 52x17
+            chunk 1 (middle anchor) text run 1 at (24.50,-3.00) startOffset 0 endOffset 6 width 51.00: "Mask 1"
+      RenderSVGContainer {g} at (85,323) size 100x97 [transform={m=((1.00,0.00)(0.00,1.00)) t=(85.00,340.00)}]
+        RenderSVGContainer {use} at (85,340) size 100x80
+          RenderSVGContainer {g} at (85,340) size 100x80
+            RenderPath {rect} at (85,340) size 100x80 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}] [data="M0.00,0.00L100.00,0.00L100.00,80.00L0.00,80.00"]
+        RenderSVGText {text} at (24,-3) size 52x17 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-14) size 52x17
+            chunk 1 (middle anchor) text run 1 at (24.50,-3.00) startOffset 0 endOffset 6 width 51.00: "Mask 2"
+      RenderSVGContainer {g} at (260,203) size 100x97 [transform={m=((1.00,0.00)(0.00,1.00)) t=(260.00,220.00)}]
+        RenderSVGContainer {use} at (260,220) size 100x80
+          RenderSVGContainer {g} at (260,220) size 100x80
+            RenderPath {rect} at (260,220) size 100x80 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}] [data="M0.00,0.00L100.00,0.00L100.00,80.00L0.00,80.00"]
+        RenderSVGText {text} at (24,-3) size 52x17 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-14) size 52x17
+            chunk 1 (middle anchor) text run 1 at (24.50,-3.00) startOffset 0 endOffset 6 width 51.00: "Mask 3"
+      RenderSVGContainer {g} at (260,323) size 100x97 [transform={m=((1.00,0.00)(0.00,1.00)) t=(260.00,340.00)}]
+        RenderSVGContainer {use} at (260,340) size 100x80
+          RenderSVGContainer {g} at (260,340) size 100x80
+            RenderPath {rect} at (260,340) size 100x80 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}] [data="M0.00,0.00L100.00,0.00L100.00,80.00L0.00,80.00"]
+        RenderSVGText {text} at (24,-3) size 52x17 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-14) size 52x17
+            chunk 1 (middle anchor) text run 1 at (24.50,-3.00) startOffset 0 endOffset 6 width 51.00: "Mask 4"
+    RenderSVGContainer {use} at (0,0) size 0x0
diff --git a/LayoutTests/svg/batik/masking/maskRegions.svg b/LayoutTests/svg/batik/masking/maskRegions.svg
new file mode 100644 (file)
index 0000000..1b153e9
--- /dev/null
@@ -0,0 +1,139 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+   
+        http://www.apache.org/licenses/LICENSE-2.0
+   
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!-- ========================================================================= -->
+<!-- Validates processing of mask regions                                      -->
+<!--                                                                           -->
+<!-- @author vincent.hardy@eng.sun.com                                         -->
+<!-- @version $Id: maskRegions.svg 475477 2006-11-15 22:44:28Z cam $ -->
+<!-- ========================================================================= -->
+
+<?xml-stylesheet type="text/css" href="../resources/test.css" ?>
+
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="body" width="450" height="500" viewBox="0 0 450 500">
+<title>Mask</title>
+    <!-- ============================================================= -->
+    <!-- Test content                                                  -->
+    <!-- ============================================================= -->
+    <g id="testContent" class="legend" text-anchor="middle">
+        <text x="225" y="50" class="title">
+        Mask Regions
+        </text>
+
+        <defs>
+    
+        <!-- ======================================== -->
+        <!-- Masked object definition                 -->
+        <!-- ======================================== -->
+        <linearGradient id="maskedGradient" x1="0" x2="1" y1="0" y2="1" color-interpolation="linearRGB">
+            <stop offset="0" stop-color="blue" />
+            <stop offset="1" stop-color="red" />
+        </linearGradient>
+
+        <rect id="masked" width="100" height="80" fill="url(#maskedGradient)" />
+
+        <!-- ======================================= -->
+        <!-- maskUnits: default                      -->
+        <!-- maskContentUnits: default               -->
+        <!-- maskRegion: default (-.1, -.1, 1.2, 1.2)-->
+        <!-- ======================================= -->
+        <mask id="mask_1">
+            <circle cx="25" cy="20" r="20" fill="#ffffff" />
+            <circle cx="25" cy="60" r="20" fill="#ffffff" />
+            <circle cx="75" cy="20" r="20" fill="#ffffff" />
+            <circle cx="75" cy="60" r="20" fill="#ffffff" />
+        </mask>
+
+        <!-- ======================================= -->
+        <!-- maskUnits: objectBoundingBox            -->
+        <!-- maskContentUnits: default               -->
+        <!-- maskRegion: (.25, .25, .5, .5)          -->
+        <!-- ======================================= -->
+        <mask id="mask_2" maskUnits="objectBoundingBox"
+              x=".25" y="25%" width="50%" height=".5">
+            <circle cx="25" cy="20" r="20" fill="#ffffff" />
+            <circle cx="25" cy="60" r="20" fill="#ffffff" />
+            <circle cx="75" cy="20" r="20" fill="#ffffff" />
+            <circle cx="75" cy="60" r="20" fill="#ffffff" />
+        </mask>
+
+        <!-- ======================================= -->
+        <!-- maskUnits: userSpaceOnUse               -->
+        <!-- maskContentUnits: default               -->
+        <!-- maskRegion: (25, 25, 50, 50)            -->
+        <!-- ======================================= -->
+        <mask id="mask_3" maskUnits="userSpaceOnUse" 
+              x="25" y="20" width="11.11111111%" height="8%">
+            <circle cx="25" cy="20" r="20" fill="#ffffff" />
+            <circle cx="25" cy="60" r="20" fill="#ffffff" />
+            <circle cx="75" cy="20" r="20" fill="#ffffff" />
+            <circle cx="75" cy="60" r="20" fill="#ffffff" />
+        </mask>
+
+        <!-- ======================================= -->
+        <!-- maskUnits: objectBoundingBox            -->
+        <!-- maskContentUnits: default               -->
+        <!-- maskRegion: (25, 25, 50, 50)            -->
+        <!-- ======================================= -->
+        <mask id="mask_4" maskUnits="objectBoundingBox" 
+              maskContentUnits="objectBoundingBox"
+              x="0" y="0" width="100%" height="100%">
+            <circle cx=".25" cy=".2" r=".2" fill="#ffffff" />
+            <circle cx=".25" cy=".6" r=".2" fill="#ffffff" />
+            <circle cx=".75" cy=".2" r=".2" fill="#ffffff" />
+            <circle cx=".75" cy=".6" r=".2" fill="#ffffff" />
+        </mask>
+
+        </defs>
+
+        <g transform="translate(175, 100)">
+            <use xlink:href="#masked" />
+            <text x="50" y="-3">Masked</text>
+        </g>
+
+        <g transform="translate(85, 220)">
+            <use xlink:href="#masked" mask="url(#mask_1)"/>
+            <text x="50" y="-3">Mask 1</text>
+        </g>
+
+        <g transform="translate(85, 340)">
+            <use xlink:href="#masked" mask="url(#mask_2)"/>
+            <text x="50" y="-3">Mask 2</text>
+        </g>
+
+        <g transform="translate(260, 220)">
+            <use xlink:href="#masked" mask="url(#mask_3)"/>
+            <text x="50" y="-3">Mask 3</text>
+        </g>
+
+        <g transform="translate(260, 340)">
+            <use xlink:href="#masked" mask="url(#mask_4)"/>
+            <text x="50" y="-3">Mask 4</text>
+        </g>
+
+    </g>
+
+    <!-- ============================================================= -->
+    <!-- Batik sample mark                                             -->
+    <!-- ============================================================= -->
+    <use xlink:href="../resources/batikLogo.svg#Batik_Tag_Box" />
+    
+</svg>
diff --git a/LayoutTests/svg/batik/text/smallFonts-expected.checksum b/LayoutTests/svg/batik/text/smallFonts-expected.checksum
new file mode 100644 (file)
index 0000000..cd79761
--- /dev/null
@@ -0,0 +1 @@
+1a3f5896c490c774a7b96d6d2b342e55
\ No newline at end of file
diff --git a/LayoutTests/svg/batik/text/smallFonts-expected.png b/LayoutTests/svg/batik/text/smallFonts-expected.png
new file mode 100644 (file)
index 0000000..b681a1c
Binary files /dev/null and b/LayoutTests/svg/batik/text/smallFonts-expected.png differ
diff --git a/LayoutTests/svg/batik/text/smallFonts-expected.txt b/LayoutTests/svg/batik/text/smallFonts-expected.txt
new file mode 100644 (file)
index 0000000..77badd6
--- /dev/null
@@ -0,0 +1,152 @@
+KCanvasResource {id="blur" [type=FILTER]  [bounding box=at (0,-1.60) size 4x2] [bounding box mode=0] [effects=[[type=GAUSSIAN-BLUR]  [subregion="at (0,-1.60) size 4x2"] [std dev. x=0.04 y=0.04]]]}
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 450x500
+  RenderSVGRoot {svg} at (-150,0) size 1200x450.50
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderPath {path} at (0.29,0.13) size 2.41x0.63 [transform={m=((0.00,0.00)(0.00,0.00)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#008000] [stroke width=5.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
+    RenderSVGContainer {g} at (-150,0) size 1200x450.50
+      RenderSVGText {text} at (-3,1) size 15x1 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,-1) size 15x1
+          chunk 1 (middle anchor) text run 1 at (-3.00,1.00) startOffset 0 endOffset 41 width 15.00: "Small font size test (viewBox=\"0 0 9 10\")"
+      RenderSVGContainer {g} at (0,50) size 1050x400.50
+        RenderSVGText {text} at (0,2) size 12x2 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-1) size 7x1
+            chunk 1 text run 1 at (0.90,2.00) startOffset 0 endOffset 16 width 6.00: "Text can change "
+          RenderSVGTSpan {tspan} at (0,0) size 0x0
+            RenderSVGInlineText {#text} at (0,-2) size 0x0
+              chunk 1 text run 2 at (6.90,2.00) startOffset 0 endOffset 5 width 0.00: "size,"
+          RenderSVGInlineText {#text} at (0,-2) size 0x0
+            chunk 1 text run 3 at (6.90,2.00) startOffset 0 endOffset 1 width 0.00: " "
+          RenderSVGTSpan {tspan} at (0,0) size 3x1
+            RenderSVGInlineText {#text} at (6,-1) size 3x1
+              chunk 1 text run 4 at (6.90,2.00) startOffset 0 endOffset 9 width 2.00: "typeface,"
+          RenderSVGInlineText {#text} at (0,-2) size 0x0
+            chunk 1 text run 5 at (8.90,2.00) startOffset 0 endOffset 1 width 0.00: " "
+          RenderSVGTSpan {tspan} at (0,0) size 3x1
+            RenderSVGInlineText {#text} at (8,-1) size 3x1
+              chunk 1 text run 6 at (8.90,2.00) startOffset 0 endOffset 6 width 2.00: "color,"
+          RenderSVGInlineText {#text} at (0,-2) size 12x2
+            chunk 1 text run 7 at (10.90,2.00) startOffset 0 endOffset 1 width 0.00: " "
+            chunk 1 text run 8 at (10.90,2.00) startOffset 0 endOffset 3 width 1.00: "or "
+          RenderSVGTSpan {tspan} at (0,0) size 0x0
+            RenderSVGInlineText {#text} at (0,-2) size 0x0
+              chunk 1 text run 9 at (11.90,2.00) startOffset 0 endOffset 5 width 0.00: "style"
+          RenderSVGInlineText {#text} at (0,0) size 0x0
+        RenderSVGText {text} at (0,2) size 9x1 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-1) size 9x1
+            chunk 1 text run 1 at (0.90,2.40) startOffset 0 endOffset 29 width 8.00: "within a single text element."
+        RenderSVGText {text} at (0,3) size 19x3 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-1) size 9x1
+            chunk 1 text run 1 at (0.90,3.20) startOffset 0 endOffset 25 width 8.00: "Styling features include "
+          RenderSVGTSpan {tspan} at (0,0) size 4x1
+            RenderSVGInlineText {#text} at (8,-1) size 4x1
+              chunk 1 text run 2 at (8.90,3.20) startOffset 0 endOffset 7 width 3.00: "weight,"
+          RenderSVGInlineText {#text} at (0,-3) size 0x0
+            chunk 1 text run 3 at (11.90,3.20) startOffset 0 endOffset 1 width 0.00: " "
+          RenderSVGTSpan {tspan} at (0,0) size 4x1
+            RenderSVGInlineText {#text} at (11,-1) size 4x1
+              chunk 1 text run 4 at (11.90,3.20) startOffset 0 endOffset 8 width 3.00: "posture,"
+          RenderSVGInlineText {#text} at (14,-1) size 3x1
+            chunk 1 text run 5 at (14.90,3.20) startOffset 0 endOffset 5 width 2.00: " and "
+          RenderSVGTSpan {tspan} at (0,0) size 3x1
+            RenderSVGInlineText {#text} at (16,-1) size 3x1
+              chunk 1 text run 6 at (16.90,3.20) startOffset 0 endOffset 9 width 2.00: "typeface."
+          RenderSVGInlineText {#text} at (0,0) size 0x0
+        RenderPath {rect} at (45,175) size 202.50x50 [fill={[type=SOLID] [color=#1E90FF]}] [data="M0.90,3.50L4.95,3.50L4.95,4.50L0.90,4.50"]
+        RenderSVGText {text} at (0,4) size 16x1 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-1) size 8x1
+            chunk 1 text run 1 at (0.90,4.00) startOffset 0 endOffset 28 width 7.00: "Graphics attributes such as "
+          RenderSVGTSpan {tspan} at (0,0) size 4x1
+            RenderSVGInlineText {#text} at (7,-1) size 4x1
+              chunk 1 text run 2 at (7.90,4.00) startOffset 0 endOffset 7 width 3.00: "opacity"
+          RenderSVGInlineText {#text} at (10,-1) size 6x1
+            chunk 1 text run 3 at (10.90,4.00) startOffset 0 endOffset 16 width 5.00: " can be applied."
+        RenderSVGText {text} at (0,5) size 19x5 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-1) size 10x1
+            chunk 1 text run 1 at (0.90,5.00) startOffset 0 endOffset 30 width 9.00: "\"text decoration\" can include "
+          RenderSVGTSpan {tspan} at (0,0) size 5x1
+            RenderSVGInlineText {#text} at (9,-1) size 5x1
+              chunk 1 text run 2 at (9.90,5.00) startOffset 0 endOffset 10 width 4.00: "underline,"
+          RenderSVGInlineText {#text} at (0,-5) size 0x0
+            chunk 1 text run 3 at (13.90,5.00) startOffset 0 endOffset 1 width 0.00: " "
+          RenderSVGTSpan {tspan} at (0,0) size 4x1
+            RenderSVGInlineText {#text} at (13,-1) size 4x1
+              chunk 1 text run 4 at (13.90,5.00) startOffset 0 endOffset 9 width 3.00: "overline,"
+          RenderSVGInlineText {#text} at (16,-1) size 3x1
+            chunk 1 text run 5 at (16.90,5.00) startOffset 0 endOffset 4 width 2.00: " and"
+        RenderSVGText {text} at (0,4) size 17x3 contains 1 chunk(s)
+          RenderSVGTSpan {tspan} at (0,0) size 7x1
+            RenderSVGInlineText {#text} at (0,0) size 7x1
+              chunk 1 text run 1 at (0.90,5.40) startOffset 0 endOffset 15 width 6.00: "strikethrough. "
+          RenderSVGInlineText {#text} at (0,0) size 0x0
+          RenderSVGTSpan {tspan} at (0,0) size 3x2
+            RenderSVGInlineText {#text} at (7,-1) size 3x2
+              chunk 1 text run 2 at (7.00,4.90) startOffset 0 endOffset 5 width 3.00: "Super"
+          RenderSVGInlineText {#text} at (10,0) size 2x1
+            chunk 1 text run 3 at (10.00,5.40) startOffset 0 endOffset 5 width 2.00: " and "
+          RenderSVGTSpan {tspan} at (0,0) size 2x2
+            RenderSVGInlineText {#text} at (12,0) size 2x2
+              chunk 1 text run 4 at (12.00,5.90) startOffset 0 endOffset 3 width 2.00: "sub"
+          RenderSVGInlineText {#text} at (14,0) size 3x1
+            chunk 1 text run 5 at (14.00,5.40) startOffset 0 endOffset 23 width 3.00: " scripts are available."
+        RenderSVGText {text} at (0,6) size 17x1 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-1) size 4x1
+            chunk 1 text run 1 at (0.90,6.20) startOffset 0 endOffset 8 width 3.00: "Various "
+          RenderSVGTSpan {tspan} at (0,0) size 4x1
+            RenderSVGInlineText {#text} at (3,-1) size 4x1
+              chunk 1 text run 2 at (3.90,6.20) startOffset 0 endOffset 8 width 3.00: "outline "
+          RenderSVGInlineText {#text} at (6,-1) size 2x1
+            chunk 1 text run 3 at (6.90,6.20) startOffset 0 endOffset 8 width 1.00: "styles, "
+          RenderSVGTSpan {tspan} at (0,0) size 3x1
+            RenderSVGInlineText {#text} at (7,-1) size 3x1
+              chunk 1 text run 4 at (7.90,6.20) startOffset 0 endOffset 12 width 2.00: "fill colors "
+          RenderSVGInlineText {#text} at (9,-1) size 3x1
+            chunk 1 text run 5 at (9.90,6.20) startOffset 0 endOffset 4 width 2.00: "and "
+          RenderSVGTSpan {tspan} at (0,0) size 4x1
+            RenderSVGInlineText {#text} at (11,-1) size 4x1
+              chunk 1 text run 6 at (11.90,6.20) startOffset 0 endOffset 12 width 3.00: "thicknesses "
+          RenderSVGInlineText {#text} at (14,-1) size 3x1
+            chunk 1 text run 7 at (14.90,6.20) startOffset 0 endOffset 6 width 2.00: "can be"
+        RenderSVGText {text} at (0,6) size 21x7 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,-1) size 13x2
+            chunk 1 text run 1 at (0.90,6.60) startOffset 0 endOffset 36 width 12.00: "used, and the outline stroke can be "
+          RenderSVGTSpan {tspan} at (0,0) size 6x2
+            RenderSVGInlineText {#text} at (12,-1) size 6x2
+              chunk 1 text run 2 at (12.90,6.60) startOffset 0 endOffset 7 width 5.00: "rounded"
+          RenderSVGInlineText {#text} at (0,-6) size 19x7
+            chunk 1 text run 3 at (17.90,6.60) startOffset 0 endOffset 1 width 0.00: " "
+            chunk 1 text run 4 at (17.90,6.60) startOffset 0 endOffset 3 width 1.00: "or "
+          RenderSVGTSpan {tspan} at (0,0) size 3x2
+            RenderSVGInlineText {#text} at (18,-1) size 3x2
+              chunk 1 text run 5 at (18.90,6.60) startOffset 0 endOffset 8 width 2.00: "mitered."
+          RenderSVGInlineText {#text} at (0,0) size 0x0
+        RenderSVGText {text} at (0,7) size 13x2 contains 2 chunk(s)
+          RenderSVGInlineText {#text} at (0,-1) size 13x2
+            chunk 1 text run 1 at (0.90,7.50) startOffset 0 endOffset 48 width 12.00: "Text elements also can be filtered, transformed "
+          RenderSVGTSpan {tspan} at (0,0) size 9x2
+            RenderSVGInlineText {#text} at (0,-1) size 9x2
+              chunk 2 text run 1 at (0.90,7.90) startOffset 0 endOffset 21 width 8.00: "and placed on a path."
+        RenderSVGContainer {g} at (22.01,394) size 303.49x56.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(1.50,9.00)}]
+          RenderSVGText {text} at (0,0) size 5x1 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,-1) size 5x1
+              chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 6 width 5.00: "Shadow"
+          RenderSVGText {text} at (0,0) size 5x1 contains 1 chunk(s)
+            RenderSVGInlineText {#text} at (0,-1) size 5x1
+              chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 6 width 5.00: "Shadow"
+        RenderSVGContainer {g} at (250,400) size 350x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(5.00,8.00)}]
+          RenderSVGContainer {use} at (264.73,406.72) size 120.27x31.56
+            RenderSVGContainer {g} at (264.73,406.72) size 120.27x31.56
+              RenderPath {path} at (264.73,406.72) size 120.27x31.56 [transform={m=((0.00,0.00)(0.00,0.00)) t=(0.00,0.00)}] [stroke={[type=SOLID] [color=#008000] [stroke width=5.00]}] [data="M100.00,200.00C200.00,100.00,300.00,0.00,400.00,100.00C500.00,200.00,600.00,300.00,700.00,200.00C800.00,100.00,900.00,100.00,900.00,100.00"]
+          RenderSVGText {text} at (0,0) size 7x1 contains 1 chunk(s)
+            RenderSVGTextPath {textPath} at (0,0) size 7x1
+              RenderSVGInlineText {#text} at (0,0) size 3x1
+                chunk 1 text run 1 at (0.17,0.27) startOffset 0 endOffset 11 width 3.00: "Small text "
+              RenderSVGTSpan {tspan} at (0,0) size 3x0
+                RenderSVGInlineText {#text} at (2,0) size 3x0
+                  chunk 1 text run 2 at (2.87,0.30) startOffset 0 endOffset 2 width 2.00: "on"
+              RenderSVGTSpan {tspan} at (0,0) size 3x0
+                RenderSVGInlineText {#text} at (4,0) size 3x0
+                  chunk 1 text run 3 at (4.87,0.40) startOffset 0 endOffset 7 width 2.00: " a Path"
+            RenderSVGInlineText {#text} at (0,0) size 0x0
+    RenderSVGContainer {use} at (0,0) size 0x0 [transform={m=((0.02,0.00)(0.00,0.02)) t=(0.00,0.00)}]
similarity index 97%
rename from LayoutTests/svg/batik/text/smallFonts.svg-disabled
rename to LayoutTests/svg/batik/text/smallFonts.svg
index e636536..4720950 100755 (executable)
@@ -27,7 +27,7 @@
 <!-- @author bella.robinson@cmis.csiro.au                                     -->
 <!-- @version $Id: smallFonts.svg,v 1.4 2004/08/18 07:12:21 vhardy Exp $                                                             -->
 <!-- ========================================================================= -->
-<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>
+<?xml-stylesheet type="text/css" href="../resources/test.css" ?>
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="450" height="500" viewBox="0 0 9 10">
     <!-- ============================================================= -->
     <!-- Test content                                                  -->
     <!-- ============================================================= -->
     <!-- Batik sample mark                                             -->
     <!-- ============================================================= -->
-    <use transform="scale(0.02, 0.02)" xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    <use transform="scale(0.02, 0.02)" xlink:href="../resources/batikLogo.svg#Batik_Tag_Box" />
     
 </svg>
index 6740d37..e3d86fd 100755 (executable)
@@ -25,7 +25,7 @@
 <!-- @author bella.robinson@cmis.csiro.au                                      -->
 <!-- @version $Id: textDecoration.svg,v 1.4 2004/08/18 07:12:21 vhardy Exp $        -->
 <!-- ========================================================================= -->
-<?xml-stylesheet type="text/css" href="../../resources/style/test.css" ?>  
+<?xml-stylesheet type="text/css" href="../resources/test.css" ?>  
 
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="body" width="450" height="500" viewBox="0 0 450 500">
 <title>Text decoration test</title>
@@ -90,7 +90,7 @@
     <!-- ============================================================= -->
     <!-- Batik sample mark                                             -->
     <!-- ============================================================= -->
-    <use xlink:href="../../../batikLogo.svg#Batik_Tag_Box" />
+    <use xlink:href="../resources/batikLogo.svg#Batik_Tag_Box" />
 
 </svg>
 
index 0eea56e..a018bd9 100644 (file)
@@ -1,3 +1,12 @@
+2007-09-05  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Oliver.
+
+        Fix <mask> in userSpaceOnUse coordinates. Verified by new testcase taken from Batik.
+
+        * ksvg2/svg/SVGMaskElement.cpp:
+        (WebCore::SVGMaskElement::drawMaskerContent):
+
 2007-09-03  Nikolas Zimmermann  <zimmermann@kde.org>
 
         Reviewed by Oliver.
index 33ef7c0..b74f91e 100644 (file)
@@ -111,55 +111,60 @@ void SVGMaskElement::parseMappedAttribute(MappedAttribute* attr)
 auto_ptr<ImageBuffer> SVGMaskElement::drawMaskerContent(const FloatRect& targetRect, FloatRect& maskDestRect) const
 {    
     // Determine specified mask size
-    float xValue = x().valueAsPercentage();
-    float yValue = y().valueAsPercentage();
-    float widthValue = width().valueAsPercentage();
-    float heightValue = height().valueAsPercentage();
-    
+    float xValue;
+    float yValue;
+    float widthValue;
+    float heightValue;
+
     if (maskUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) {
-        xValue *= targetRect.width();
-        yValue *= targetRect.height();
-        widthValue *= targetRect.width();
-        heightValue *= targetRect.height();
-    }
+        xValue = x().valueAsPercentage() * targetRect.width();
+        yValue = y().valueAsPercentage() * targetRect.height();
+        widthValue = width().valueAsPercentage() * targetRect.width();
+        heightValue = height().valueAsPercentage() * targetRect.height();
+    } else {
+        xValue = x().value();
+        yValue = y().value();
+        widthValue = width().value();
+        heightValue = height().value();
+    } 
 
     auto_ptr<ImageBuffer> maskImage = ImageBuffer::create(IntSize(lroundf(widthValue), lroundf(heightValue)), false);
     if (!maskImage.get())
         return maskImage;
+
     maskDestRect = FloatRect(xValue, yValue, widthValue, heightValue);
     if (maskUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
         maskDestRect.move(targetRect.x(), targetRect.y());
 
     GraphicsContext* maskImageContext = maskImage->context();
     ASSERT(maskImageContext);
-    
+
     maskImageContext->save();
     maskImageContext->translate(-xValue, -yValue);
-    
+
     if (maskContentUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX) {
         maskImageContext->save();
         maskImageContext->scale(FloatSize(targetRect.width(), targetRect.height()));
     }
-    
+
     // Render subtree into ImageBuffer
     for (Node* n = firstChild(); n; n = n->nextSibling()) {
         SVGElement* elem = svg_dynamic_cast(n);
         if (!elem || !elem->isStyled())
             continue;
-        
+
         SVGStyledElement* e = static_cast<SVGStyledElement*>(elem);
         RenderObject* item = e->renderer();
         if (!item)
             continue;
-        
+
         ImageBuffer::renderSubtreeToImage(maskImage.get(), item);
     }
-    
+
     if (maskContentUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
         maskImageContext->restore();
-    
-    maskImageContext->restore();
 
+    maskImageContext->restore();
     return maskImage;
 }