Improve filter logging
authorsimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Dec 2017 00:05:11 +0000 (00:05 +0000)
committersimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Dec 2017 00:05:11 +0000 (00:05 +0000)
https://bugs.webkit.org/show_bug.cgi?id=180182

Reviewed by Sam Weinig.

Source/WebCore:

Add a parameter to FilterEffect::externalRepresentation() so that we can log extra
data without breaking layout tests.

Add TextStream output for ColorSpace.

Improve logging of FEComponentTransfer ComponentTransferFunctions by logging the data
that's appropriate for the function type, and rebaseline affected tests.

* platform/graphics/Color.cpp:
(WebCore::operator<<):
* platform/graphics/Color.h:
* platform/graphics/filters/FEBlend.cpp:
(WebCore::FEBlend::externalRepresentation const):
* platform/graphics/filters/FEBlend.h:
* platform/graphics/filters/FEColorMatrix.cpp:
(WebCore::FEColorMatrix::externalRepresentation const):
* platform/graphics/filters/FEColorMatrix.h:
* platform/graphics/filters/FEComponentTransfer.cpp:
(WebCore::operator<<):
(WebCore::FEComponentTransfer::externalRepresentation const):
* platform/graphics/filters/FEComponentTransfer.h:
* platform/graphics/filters/FEComposite.cpp:
(WebCore::FEComposite::externalRepresentation const):
* platform/graphics/filters/FEComposite.h:
* platform/graphics/filters/FEConvolveMatrix.cpp:
(WebCore::FEConvolveMatrix::externalRepresentation const):
* platform/graphics/filters/FEConvolveMatrix.h:
* platform/graphics/filters/FEDiffuseLighting.cpp:
(WebCore::FEDiffuseLighting::externalRepresentation const):
* platform/graphics/filters/FEDiffuseLighting.h:
* platform/graphics/filters/FEDisplacementMap.cpp:
(WebCore::FEDisplacementMap::externalRepresentation const):
* platform/graphics/filters/FEDisplacementMap.h:
* platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::externalRepresentation const):
* platform/graphics/filters/FEDropShadow.h:
* platform/graphics/filters/FEFlood.cpp:
(WebCore::FEFlood::externalRepresentation const):
* platform/graphics/filters/FEFlood.h:
* platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::externalRepresentation const):
* platform/graphics/filters/FEGaussianBlur.h:
* platform/graphics/filters/FEMerge.cpp:
(WebCore::FEMerge::externalRepresentation const):
* platform/graphics/filters/FEMerge.h:
* platform/graphics/filters/FEMorphology.cpp:
(WebCore::FEMorphology::externalRepresentation const):
* platform/graphics/filters/FEMorphology.h:
* platform/graphics/filters/FEOffset.cpp:
(WebCore::FEOffset::externalRepresentation const):
* platform/graphics/filters/FEOffset.h:
* platform/graphics/filters/FESpecularLighting.cpp:
(WebCore::FESpecularLighting::externalRepresentation const):
* platform/graphics/filters/FESpecularLighting.h:
* platform/graphics/filters/FETile.cpp:
(WebCore::FETile::externalRepresentation const):
* platform/graphics/filters/FETile.h:
* platform/graphics/filters/FETurbulence.cpp:
(WebCore::FETurbulence::externalRepresentation const):
* platform/graphics/filters/FETurbulence.h:
* platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::externalRepresentation const):
(WebCore::operator<<):
* platform/graphics/filters/FilterEffect.h:
* platform/graphics/filters/SourceAlpha.cpp:
(WebCore::SourceAlpha::externalRepresentation const):
* platform/graphics/filters/SourceAlpha.h:
* platform/graphics/filters/SourceGraphic.cpp:
(WebCore::SourceGraphic::externalRepresentation const):
* platform/graphics/filters/SourceGraphic.h:
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
* svg/graphics/filters/SVGFEImage.cpp:
(WebCore::FEImage::externalRepresentation const):
* svg/graphics/filters/SVGFEImage.h:

LayoutTests:

Improve logging of FEComponentTransfer ComponentTransferFunctions by logging the data
that's appropriate for the function type, and rebaseline affected tests.

* css3/filters/effect-reference-expected.txt:
* css3/filters/effect-reference-hw-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.txt:
* platform/mac/svg/custom/feComponentTransfer-Discrete-expected.txt:
* platform/mac/svg/custom/feComponentTransfer-Gamma-expected.txt:
* platform/mac/svg/custom/feComponentTransfer-Linear-expected.txt:
* platform/mac/svg/custom/feComponentTransfer-Table-expected.txt:
* svg/filters/filter-refresh-expected.txt:

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

60 files changed:
LayoutTests/ChangeLog
LayoutTests/css3/filters/effect-reference-expected.txt
LayoutTests/css3/filters/effect-reference-hw-expected.txt
LayoutTests/platform/ios/css3/filters/effect-reference-expected.txt
LayoutTests/platform/ios/css3/filters/effect-reference-hw-expected.txt
LayoutTests/platform/ios/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.txt
LayoutTests/platform/ios/svg/custom/feComponentTransfer-Discrete-expected.txt
LayoutTests/platform/ios/svg/custom/feComponentTransfer-Gamma-expected.txt
LayoutTests/platform/ios/svg/custom/feComponentTransfer-Linear-expected.txt
LayoutTests/platform/ios/svg/custom/feComponentTransfer-Table-expected.txt
LayoutTests/platform/mac/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.txt
LayoutTests/platform/mac/svg/custom/feComponentTransfer-Discrete-expected.txt
LayoutTests/platform/mac/svg/custom/feComponentTransfer-Gamma-expected.txt
LayoutTests/platform/mac/svg/custom/feComponentTransfer-Linear-expected.txt
LayoutTests/platform/mac/svg/custom/feComponentTransfer-Table-expected.txt
LayoutTests/svg/filters/filter-refresh-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/Color.cpp
Source/WebCore/platform/graphics/Color.h
Source/WebCore/platform/graphics/filters/FEBlend.cpp
Source/WebCore/platform/graphics/filters/FEBlend.h
Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp
Source/WebCore/platform/graphics/filters/FEColorMatrix.h
Source/WebCore/platform/graphics/filters/FEComponentTransfer.cpp
Source/WebCore/platform/graphics/filters/FEComponentTransfer.h
Source/WebCore/platform/graphics/filters/FEComposite.cpp
Source/WebCore/platform/graphics/filters/FEComposite.h
Source/WebCore/platform/graphics/filters/FEConvolveMatrix.cpp
Source/WebCore/platform/graphics/filters/FEConvolveMatrix.h
Source/WebCore/platform/graphics/filters/FEDiffuseLighting.cpp
Source/WebCore/platform/graphics/filters/FEDiffuseLighting.h
Source/WebCore/platform/graphics/filters/FEDisplacementMap.cpp
Source/WebCore/platform/graphics/filters/FEDisplacementMap.h
Source/WebCore/platform/graphics/filters/FEDropShadow.cpp
Source/WebCore/platform/graphics/filters/FEDropShadow.h
Source/WebCore/platform/graphics/filters/FEFlood.cpp
Source/WebCore/platform/graphics/filters/FEFlood.h
Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp
Source/WebCore/platform/graphics/filters/FEGaussianBlur.h
Source/WebCore/platform/graphics/filters/FEMerge.cpp
Source/WebCore/platform/graphics/filters/FEMerge.h
Source/WebCore/platform/graphics/filters/FEMorphology.cpp
Source/WebCore/platform/graphics/filters/FEMorphology.h
Source/WebCore/platform/graphics/filters/FEOffset.cpp
Source/WebCore/platform/graphics/filters/FEOffset.h
Source/WebCore/platform/graphics/filters/FESpecularLighting.cpp
Source/WebCore/platform/graphics/filters/FESpecularLighting.h
Source/WebCore/platform/graphics/filters/FETile.cpp
Source/WebCore/platform/graphics/filters/FETile.h
Source/WebCore/platform/graphics/filters/FETurbulence.cpp
Source/WebCore/platform/graphics/filters/FETurbulence.h
Source/WebCore/platform/graphics/filters/FilterEffect.cpp
Source/WebCore/platform/graphics/filters/FilterEffect.h
Source/WebCore/platform/graphics/filters/SourceAlpha.cpp
Source/WebCore/platform/graphics/filters/SourceAlpha.h
Source/WebCore/platform/graphics/filters/SourceGraphic.cpp
Source/WebCore/platform/graphics/filters/SourceGraphic.h
Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp
Source/WebCore/svg/graphics/filters/SVGFEImage.cpp
Source/WebCore/svg/graphics/filters/SVGFEImage.h

index 21a39d7..f0b92b6 100644 (file)
@@ -1,3 +1,22 @@
+2017-11-30  Simon Fraser  <simon.fraser@apple.com>
+
+        Improve filter logging
+        https://bugs.webkit.org/show_bug.cgi?id=180182
+
+        Reviewed by Sam Weinig.
+
+        Improve logging of FEComponentTransfer ComponentTransferFunctions by logging the data
+        that's appropriate for the function type, and rebaseline affected tests.
+
+        * css3/filters/effect-reference-expected.txt:
+        * css3/filters/effect-reference-hw-expected.txt:
+        * platform/mac/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.txt:
+        * platform/mac/svg/custom/feComponentTransfer-Discrete-expected.txt:
+        * platform/mac/svg/custom/feComponentTransfer-Gamma-expected.txt:
+        * platform/mac/svg/custom/feComponentTransfer-Linear-expected.txt:
+        * platform/mac/svg/custom/feComponentTransfer-Table-expected.txt:
+        * svg/filters/filter-refresh-expected.txt:
+
 2017-11-30  Chris Dumez  <cdumez@apple.com>
 
         Unreviewed, unskip service worker test that no longer times out after r225346.
index e023322..7a73d62 100644 (file)
@@ -12,11 +12,11 @@ layer at (0,0) size 800x600
             [feMorphology operator="DILATE" radius="10.00, 10.00"]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="componenttransfer"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="LINEAR" slope="0.50" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="LINEAR" slope="0.50" intercept="0.00"}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="blurY"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
             [feGaussianBlur stdDeviation="0.00, 5.00"]
index 393bec4..9cc50c0 100644 (file)
@@ -12,11 +12,11 @@ layer at (0,0) size 800x600
             [feMorphology operator="DILATE" radius="10.00, 10.00"]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="componenttransfer"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="LINEAR" slope="0.50" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="LINEAR" slope="0.50" intercept="0.00"}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="blurY"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
             [feGaussianBlur stdDeviation="0.00, 5.00"]
index 1a6d9a7..4bcb6c8 100644 (file)
@@ -12,11 +12,11 @@ layer at (0,0) size 800x600
             [feMorphology operator="DILATE" radius="10.00, 10.00"]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="componenttransfer"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="LINEAR" slope="0.50" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="LINEAR" slope="0.50" intercept="0.00"}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="blurY"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
             [feGaussianBlur stdDeviation="0.00, 5.00"]
index 16fe77d..4d8497a 100644 (file)
@@ -12,11 +12,11 @@ layer at (0,0) size 800x600
             [feMorphology operator="DILATE" radius="10.00, 10.00"]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="componenttransfer"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="LINEAR" slope="0.50" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="LINEAR" slope="0.50" intercept="0.00"}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="blurY"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
             [feGaussianBlur stdDeviation="0.00, 5.00"]
index 548c9a5..891abe0 100644 (file)
@@ -11,32 +11,32 @@ layer at (0,0) size 480x360
             RenderSVGGradientStop {stop} [offset=0.67] [color=#0000FF]
             RenderSVGGradientStop {stop} [offset=1.00] [color=#000000]
           RenderSVGResourceFilter {filter} [id="Identity"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {alpha: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="IDENTITY}
+                {green: type="IDENTITY}
+                {blue: type="IDENTITY}
+                {alpha: type="IDENTITY}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="Table"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="TABLE [0.00, 0.00, 1.00, 1.00]}
+                {green: type="TABLE [1.00, 1.00, 0.00, 0.00]}
+                {blue: type="TABLE [0.00, 1.00, 1.00, 0.00]}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="Linear"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="LINEAR" slope="0.50" intercept="0.25" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="LINEAR" slope="0.50" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="LINEAR" slope="0.50" intercept="0.50" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="LINEAR" slope="0.50" intercept="0.25"}
+                {green: type="LINEAR" slope="0.50" intercept="0.00"}
+                {blue: type="LINEAR" slope="0.50" intercept="0.50"}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="Gamma"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="GAMMA" slope="1.00" intercept="0.00" amplitude="2.00" exponent="5.00" offset="0.00"}
-                {green: type="GAMMA" slope="1.00" intercept="0.00" amplitude="2.00" exponent="3.00" offset="0.00"}
-                {blue: type="GAMMA" slope="1.00" intercept="0.00" amplitude="2.00" exponent="1.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="GAMMA" amplitude="2.00" exponent="5.00" offset="0.00"}
+                {green: type="GAMMA" amplitude="2.00" exponent="3.00" offset="0.00"}
+                {blue: type="GAMMA" amplitude="2.00" exponent="1.00" offset="0.00"}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
         RenderSVGRect {rect} at (15,5) size 450x300 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=628.00] [height=418.00]
         RenderSVGContainer {g} at (15,5) size 450x300
index 4c7a8c2..db64e27 100644 (file)
@@ -9,32 +9,32 @@ layer at (0,0) size 800x600
             RenderSVGGradientStop {stop} [offset=0.00] [color=#00FF00]
             RenderSVGGradientStop {stop} [offset=1.00] [color=#000000]
           RenderSVGResourceFilter {filter} [id="Identity"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="IDENTITY}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteBlank"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="DISCRETE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="DISCRETE [0.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteFull"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="DISCRETE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="DISCRETE [1.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteOrd"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="DISCRETE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="DISCRETE [0.00, 0.25, 0.50, 0.75, 1.00, 1.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
         RenderSVGRect {rect} at (25,16) size 750x485 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=648.00] [height=418.00]
         RenderSVGContainer {g} at (25,16) size 750x485
index 344ee88..36b8ba0 100644 (file)
@@ -9,32 +9,32 @@ layer at (0,0) size 800x600
             RenderSVGGradientStop {stop} [offset=0.00] [color=#00FF00]
             RenderSVGGradientStop {stop} [offset=1.00] [color=#000000]
           RenderSVGResourceFilter {filter} [id="Identity"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="IDENTITY}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="GammaBlank"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="GAMMA" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="GAMMA" amplitude="1.00" exponent="1.00" offset="0.00"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="GammaFull"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="GAMMA" slope="1.00" intercept="0.00" amplitude="1.00" exponent="0.50" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="GAMMA" amplitude="1.00" exponent="0.50" offset="0.00"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="GammaOrd"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="GAMMA" slope="1.00" intercept="0.00" amplitude="1.00" exponent="2.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="GAMMA" amplitude="1.00" exponent="2.00" offset="0.00"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
         RenderSVGRect {rect} at (25,16) size 750x485 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=648.00] [height=418.00]
         RenderSVGContainer {g} at (25,16) size 750x485
index 008b7a5..3735d4e 100644 (file)
@@ -9,32 +9,32 @@ layer at (0,0) size 800x600
             RenderSVGGradientStop {stop} [offset=0.00] [color=#00FF00]
             RenderSVGGradientStop {stop} [offset=1.00] [color=#000000]
           RenderSVGResourceFilter {filter} [id="Identity"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="IDENTITY}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteBlank"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="LINEAR" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="LINEAR" slope="1.00" intercept="0.00"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteFull"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="LINEAR" slope="-1.00" intercept="1.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="LINEAR" slope="-1.00" intercept="1.00"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteOrd"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="LINEAR" slope="0.50" intercept="0.25" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="LINEAR" slope="0.50" intercept="0.25"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
         RenderSVGRect {rect} at (25,16) size 750x485 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=648.00] [height=418.00]
         RenderSVGContainer {g} at (25,16) size 750x485
index 52d9320..f22ab1c 100644 (file)
@@ -9,32 +9,32 @@ layer at (0,0) size 800x600
             RenderSVGGradientStop {stop} [offset=0.00] [color=#00FF00]
             RenderSVGGradientStop {stop} [offset=1.00] [color=#000000]
           RenderSVGResourceFilter {filter} [id="Identity"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="IDENTITY}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="TableBlank"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="TABLE [0.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="TableFull"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="TABLE [1.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="TableOrd"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="TABLE [0.00, 0.00, 1.00, 1.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
         RenderSVGRect {rect} at (25,16) size 750x485 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=648.00] [height=418.00]
         RenderSVGContainer {g} at (25,16) size 750x485
index 06412ca..d25e3b5 100644 (file)
@@ -11,32 +11,32 @@ layer at (0,0) size 480x360
             RenderSVGGradientStop {stop} [offset=0.67] [color=#0000FF]
             RenderSVGGradientStop {stop} [offset=1.00] [color=#000000]
           RenderSVGResourceFilter {filter} [id="Identity"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {alpha: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="IDENTITY}
+                {green: type="IDENTITY}
+                {blue: type="IDENTITY}
+                {alpha: type="IDENTITY}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="Table"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="TABLE [0.00, 0.00, 1.00, 1.00]}
+                {green: type="TABLE [1.00, 1.00, 0.00, 0.00]}
+                {blue: type="TABLE [0.00, 1.00, 1.00, 0.00]}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="Linear"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="LINEAR" slope="0.50" intercept="0.25" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="LINEAR" slope="0.50" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="LINEAR" slope="0.50" intercept="0.50" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="LINEAR" slope="0.50" intercept="0.25"}
+                {green: type="LINEAR" slope="0.50" intercept="0.00"}
+                {blue: type="LINEAR" slope="0.50" intercept="0.50"}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="Gamma"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="GAMMA" slope="1.00" intercept="0.00" amplitude="2.00" exponent="5.00" offset="0.00"}
-                {green: type="GAMMA" slope="1.00" intercept="0.00" amplitude="2.00" exponent="3.00" offset="0.00"}
-                {blue: type="GAMMA" slope="1.00" intercept="0.00" amplitude="2.00" exponent="1.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="GAMMA" amplitude="2.00" exponent="5.00" offset="0.00"}
+                {green: type="GAMMA" amplitude="2.00" exponent="3.00" offset="0.00"}
+                {blue: type="GAMMA" amplitude="2.00" exponent="1.00" offset="0.00"}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
         RenderSVGRect {rect} at (15,5) size 450x300 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=628.00] [height=418.00]
         RenderSVGContainer {g} at (15,5) size 450x300
index e08ef61..5941670 100644 (file)
@@ -9,32 +9,32 @@ layer at (0,0) size 800x600
             RenderSVGGradientStop {stop} [offset=0.00] [color=#00FF00]
             RenderSVGGradientStop {stop} [offset=1.00] [color=#000000]
           RenderSVGResourceFilter {filter} [id="Identity"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="IDENTITY}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteBlank"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="DISCRETE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="DISCRETE [0.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteFull"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="DISCRETE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="DISCRETE [1.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteOrd"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="DISCRETE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="DISCRETE [0.00, 0.25, 0.50, 0.75, 1.00, 1.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
         RenderSVGRect {rect} at (25,16) size 750x485 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=648.00] [height=418.00]
         RenderSVGContainer {g} at (25,16) size 750x485
index 888831b..c49db3e 100644 (file)
@@ -9,32 +9,32 @@ layer at (0,0) size 800x600
             RenderSVGGradientStop {stop} [offset=0.00] [color=#00FF00]
             RenderSVGGradientStop {stop} [offset=1.00] [color=#000000]
           RenderSVGResourceFilter {filter} [id="Identity"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="IDENTITY}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="GammaBlank"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="GAMMA" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="GAMMA" amplitude="1.00" exponent="1.00" offset="0.00"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="GammaFull"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="GAMMA" slope="1.00" intercept="0.00" amplitude="1.00" exponent="0.50" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="GAMMA" amplitude="1.00" exponent="0.50" offset="0.00"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="GammaOrd"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="GAMMA" slope="1.00" intercept="0.00" amplitude="1.00" exponent="2.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="GAMMA" amplitude="1.00" exponent="2.00" offset="0.00"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
         RenderSVGRect {rect} at (25,16) size 750x485 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=648.00] [height=418.00]
         RenderSVGContainer {g} at (25,16) size 750x485
index 72ea653..be31e6e 100644 (file)
@@ -9,32 +9,32 @@ layer at (0,0) size 800x600
             RenderSVGGradientStop {stop} [offset=0.00] [color=#00FF00]
             RenderSVGGradientStop {stop} [offset=1.00] [color=#000000]
           RenderSVGResourceFilter {filter} [id="Identity"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="IDENTITY}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteBlank"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="LINEAR" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="LINEAR" slope="1.00" intercept="0.00"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteFull"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="LINEAR" slope="-1.00" intercept="1.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="LINEAR" slope="-1.00" intercept="1.00"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="DiscreteOrd"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="LINEAR" slope="0.50" intercept="0.25" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="LINEAR" slope="0.50" intercept="0.25"}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
         RenderSVGRect {rect} at (25,16) size 750x485 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=648.00] [height=418.00]
         RenderSVGContainer {g} at (25,16) size 750x485
index ebac199..466cc38 100644 (file)
@@ -9,32 +9,32 @@ layer at (0,0) size 800x600
             RenderSVGGradientStop {stop} [offset=0.00] [color=#00FF00]
             RenderSVGGradientStop {stop} [offset=1.00] [color=#000000]
           RenderSVGResourceFilter {filter} [id="Identity"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="IDENTITY" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {green: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="IDENTITY}
+                {green: type="UNKNOWN}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="TableBlank"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="TABLE [0.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="TableFull"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="TABLE [1.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
           RenderSVGResourceFilter {filter} [id="TableOrd"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-            [feComponentTransfer 
-                {red: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {green: type="TABLE" slope="1.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-                {blue: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}
-                {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+            [feComponentTransfer
+                {red: type="UNKNOWN}
+                {green: type="TABLE [0.00, 0.00, 1.00, 1.00]}
+                {blue: type="UNKNOWN}
+                {alpha: type="UNKNOWN}]
               [SourceGraphic]
         RenderSVGRect {rect} at (25,16) size 750x485 [stroke={[type=SOLID] [color=#0000FF]}] [x=1.00] [y=1.00] [width=648.00] [height=418.00]
         RenderSVGContainer {g} at (25,16) size 750x485
index 9359314..1b28bd8 100644 (file)
@@ -10,11 +10,11 @@ layer at (0,0) size 300x400
         [feOffset dx="0.00" dy="0.00"]
           [SourceGraphic]
       RenderSVGResourceFilter {filter} [id="toGreen"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
-        [feComponentTransfer 
-            {red: type="LINEAR" slope="0.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-            {green: type="LINEAR" slope="0.00" intercept="0.25" amplitude="1.00" exponent="1.00" offset="0.00"}
-            {blue: type="LINEAR" slope="0.00" intercept="0.00" amplitude="1.00" exponent="1.00" offset="0.00"}
-            {alpha: type="UNKNOWN" slope="0.00" intercept="0.00" amplitude="0.00" exponent="0.00" offset="0.00"}]
+        [feComponentTransfer
+            {red: type="LINEAR" slope="0.00" intercept="0.00"}
+            {green: type="LINEAR" slope="0.00" intercept="0.25"}
+            {blue: type="LINEAR" slope="0.00" intercept="0.00"}
+            {alpha: type="UNKNOWN}]
           [SourceGraphic]
       RenderSVGRect {rect} at (0,10) size 30x30 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=10.00] [width=30.00] [height=30.00]
     RenderSVGContainer {g} at (10,50) size 166x156
index 3b2c8b7..8191c61 100644 (file)
@@ -1,3 +1,86 @@
+2017-11-30  Simon Fraser  <simon.fraser@apple.com>
+
+        Improve filter logging
+        https://bugs.webkit.org/show_bug.cgi?id=180182
+
+        Reviewed by Sam Weinig.
+
+        Add a parameter to FilterEffect::externalRepresentation() so that we can log extra
+        data without breaking layout tests.
+
+        Add TextStream output for ColorSpace.
+        
+        Improve logging of FEComponentTransfer ComponentTransferFunctions by logging the data
+        that's appropriate for the function type, and rebaseline affected tests.
+
+        * platform/graphics/Color.cpp:
+        (WebCore::operator<<):
+        * platform/graphics/Color.h:
+        * platform/graphics/filters/FEBlend.cpp:
+        (WebCore::FEBlend::externalRepresentation const):
+        * platform/graphics/filters/FEBlend.h:
+        * platform/graphics/filters/FEColorMatrix.cpp:
+        (WebCore::FEColorMatrix::externalRepresentation const):
+        * platform/graphics/filters/FEColorMatrix.h:
+        * platform/graphics/filters/FEComponentTransfer.cpp:
+        (WebCore::operator<<):
+        (WebCore::FEComponentTransfer::externalRepresentation const):
+        * platform/graphics/filters/FEComponentTransfer.h:
+        * platform/graphics/filters/FEComposite.cpp:
+        (WebCore::FEComposite::externalRepresentation const):
+        * platform/graphics/filters/FEComposite.h:
+        * platform/graphics/filters/FEConvolveMatrix.cpp:
+        (WebCore::FEConvolveMatrix::externalRepresentation const):
+        * platform/graphics/filters/FEConvolveMatrix.h:
+        * platform/graphics/filters/FEDiffuseLighting.cpp:
+        (WebCore::FEDiffuseLighting::externalRepresentation const):
+        * platform/graphics/filters/FEDiffuseLighting.h:
+        * platform/graphics/filters/FEDisplacementMap.cpp:
+        (WebCore::FEDisplacementMap::externalRepresentation const):
+        * platform/graphics/filters/FEDisplacementMap.h:
+        * platform/graphics/filters/FEDropShadow.cpp:
+        (WebCore::FEDropShadow::externalRepresentation const):
+        * platform/graphics/filters/FEDropShadow.h:
+        * platform/graphics/filters/FEFlood.cpp:
+        (WebCore::FEFlood::externalRepresentation const):
+        * platform/graphics/filters/FEFlood.h:
+        * platform/graphics/filters/FEGaussianBlur.cpp:
+        (WebCore::FEGaussianBlur::externalRepresentation const):
+        * platform/graphics/filters/FEGaussianBlur.h:
+        * platform/graphics/filters/FEMerge.cpp:
+        (WebCore::FEMerge::externalRepresentation const):
+        * platform/graphics/filters/FEMerge.h:
+        * platform/graphics/filters/FEMorphology.cpp:
+        (WebCore::FEMorphology::externalRepresentation const):
+        * platform/graphics/filters/FEMorphology.h:
+        * platform/graphics/filters/FEOffset.cpp:
+        (WebCore::FEOffset::externalRepresentation const):
+        * platform/graphics/filters/FEOffset.h:
+        * platform/graphics/filters/FESpecularLighting.cpp:
+        (WebCore::FESpecularLighting::externalRepresentation const):
+        * platform/graphics/filters/FESpecularLighting.h:
+        * platform/graphics/filters/FETile.cpp:
+        (WebCore::FETile::externalRepresentation const):
+        * platform/graphics/filters/FETile.h:
+        * platform/graphics/filters/FETurbulence.cpp:
+        (WebCore::FETurbulence::externalRepresentation const):
+        * platform/graphics/filters/FETurbulence.h:
+        * platform/graphics/filters/FilterEffect.cpp:
+        (WebCore::FilterEffect::externalRepresentation const):
+        (WebCore::operator<<):
+        * platform/graphics/filters/FilterEffect.h:
+        * platform/graphics/filters/SourceAlpha.cpp:
+        (WebCore::SourceAlpha::externalRepresentation const):
+        * platform/graphics/filters/SourceAlpha.h:
+        * platform/graphics/filters/SourceGraphic.cpp:
+        (WebCore::SourceGraphic::externalRepresentation const):
+        * platform/graphics/filters/SourceGraphic.h:
+        * rendering/svg/RenderSVGResourceFilter.cpp:
+        (WebCore::RenderSVGResourceFilter::applyResource):
+        * svg/graphics/filters/SVGFEImage.cpp:
+        (WebCore::FEImage::externalRepresentation const):
+        * svg/graphics/filters/SVGFEImage.h:
+
 2017-11-30  Ryan Haddad  <ryanhaddad@apple.com>
 
         Unreviewed build fix, removed unused lambda captures.
index 7bf363a..c2ebab5 100644 (file)
@@ -649,11 +649,6 @@ Color blend(const Color& from, const Color& to, double progress, bool blendPremu
         blend(from.alpha(), to.alpha(), progress));
 }
 
-TextStream& operator<<(TextStream& ts, const Color& color)
-{
-    return ts << color.nameForRenderTreeAsText();
-}
-
 void Color::tagAsValid()
 {
     m_colorData.rgbaAndFlags |= validRGBAColor;
@@ -665,4 +660,28 @@ ExtendedColor& Color::asExtended() const
     return *m_colorData.extendedColor;
 }
 
+TextStream& operator<<(TextStream& ts, const Color& color)
+{
+    return ts << color.nameForRenderTreeAsText();
+}
+
+TextStream& operator<<(TextStream& ts, ColorSpace colorSpace)
+{
+    switch (colorSpace) {
+    case ColorSpaceDeviceRGB:
+        ts << "DeviceRGB";
+        break;
+    case ColorSpaceSRGB:
+        ts << "sRGB";
+        break;
+    case ColorSpaceLinearRGB:
+        ts << "LinearRGB";
+        break;
+    case ColorSpaceDisplayP3:
+        ts << "DisplayP3";
+        break;
+    }
+    return ts;
+}
+
 } // namespace WebCore
index c103962..fbf8eef 100644 (file)
@@ -434,8 +434,6 @@ inline void Color::setRGB(RGBA32 rgb)
     tagAsValid();
 }
 
-WEBCORE_EXPORT WTF::TextStream& operator<<(WTF::TextStream&, const Color&);
-
 inline bool Color::isBlackColor(const Color& color)
 {
     if (color.isExtended()) {
@@ -456,4 +454,7 @@ inline bool Color::isWhiteColor(const Color& color)
     return color.isValid() && color.rgb() == Color::white;
 }
 
+WEBCORE_EXPORT WTF::TextStream& operator<<(WTF::TextStream&, const Color&);
+WEBCORE_EXPORT WTF::TextStream& operator<<(WTF::TextStream&, ColorSpace);
+
 } // namespace WebCore
index 3904a2b..3957ac3 100644 (file)
@@ -75,15 +75,15 @@ void FEBlend::platformApplySoftware()
 }
 #endif
 
-TextStream& FEBlend::externalRepresentation(TextStream& ts) const
+TextStream& FEBlend::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feBlend";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " mode=\"" << (m_mode == BlendModeNormal ? "normal" : compositeOperatorName(CompositeSourceOver, m_mode)) << "\"]\n";
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
-    inputEffect(1)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
+    inputEffect(1)->externalRepresentation(ts, representation);
     return ts;
 }
 
index e120d3d..70e8407 100644 (file)
@@ -44,7 +44,7 @@ private:
     void platformApplyNEON(unsigned char* srcPixelArrayA, unsigned char* srcPixelArrayB, unsigned char* dstPixelArray,
                            unsigned colorArrayLength);
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     FEBlend(Filter&, BlendMode);
 
index dc8fa1e..a90171b 100644 (file)
@@ -335,10 +335,10 @@ static TextStream& operator<<(TextStream& ts, const ColorMatrixType& type)
     return ts;
 }
 
-TextStream& FEColorMatrix::externalRepresentation(TextStream& ts) const
+TextStream& FEColorMatrix::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feColorMatrix";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " type=\"" << m_type << "\"";
     if (!m_values.isEmpty()) {
         ts << " values=\"";
@@ -355,7 +355,7 @@ TextStream& FEColorMatrix::externalRepresentation(TextStream& ts) const
     ts << "]\n";
     
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
     return ts;
 }
 
index cb63e68..090e682 100644 (file)
@@ -56,7 +56,7 @@ private:
 
     void platformApplySoftware() override;
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     ColorMatrixType m_type;
     Vector<float> m_values;
index f5028c8..47c8dea 100644 (file)
@@ -185,30 +185,45 @@ static TextStream& operator<<(TextStream& ts, ComponentTransferType type)
 
 static TextStream& operator<<(TextStream& ts, const ComponentTransferFunction& function)
 {
-    ts << "type=\"" << function.type 
-       << "\" slope=\"" << function.slope
-       << "\" intercept=\"" << function.intercept
-       << "\" amplitude=\"" << function.amplitude
-       << "\" exponent=\"" << function.exponent
-       << "\" offset=\"" << function.offset << "\"";
+    ts << "type=\"" << function.type;
+
+    switch (function.type) {
+    case FECOMPONENTTRANSFER_TYPE_UNKNOWN:
+        break;
+    case FECOMPONENTTRANSFER_TYPE_IDENTITY:
+        break;
+    case FECOMPONENTTRANSFER_TYPE_TABLE:
+        ts << " " << function.tableValues;
+        break;
+    case FECOMPONENTTRANSFER_TYPE_DISCRETE:
+        ts << " " << function.tableValues;
+        break;
+    case FECOMPONENTTRANSFER_TYPE_LINEAR:
+        ts << "\" slope=\"" << function.slope << "\" intercept=\"" << function.intercept << "\"";
+        break;
+    case FECOMPONENTTRANSFER_TYPE_GAMMA:
+        ts << "\" amplitude=\"" << function.amplitude << "\" exponent=\"" << function.exponent << "\" offset=\"" << function.offset << "\"";
+        break;
+    }
+
     return ts;
 }
 
-TextStream& FEComponentTransfer::externalRepresentation(TextStream& ts) const
+TextStream& FEComponentTransfer::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feComponentTransfer";
-    FilterEffect::externalRepresentation(ts);
-    ts << " \n";
+    FilterEffect::externalRepresentation(ts, representation);
+    ts << "\n";
     {
         TextStream::IndentScope indentScope(ts, 2);
         ts << indent << "{red: " << m_redFunction << "}\n";
-        ts << indent <<"{green: " << m_greenFunction << "}\n";
-        ts << indent <<"{blue: " << m_blueFunction << "}\n";
-        ts << indent <<"{alpha: " << m_alphaFunction << "}]\n";
+        ts << indent << "{green: " << m_greenFunction << "}\n";
+        ts << indent << "{blue: " << m_blueFunction << "}\n";
+        ts << indent << "{alpha: " << m_alphaFunction << "}]\n";
     }
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
     return ts;
 }
 
index 0f18401..fcf4ec2 100644 (file)
@@ -79,7 +79,7 @@ private:
 
     void platformApplySoftware() override;
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     ComponentTransferFunction m_redFunction;
     ComponentTransferFunction m_greenFunction;
index c0e9b54..2c98614 100644 (file)
@@ -327,18 +327,18 @@ static TextStream& operator<<(TextStream& ts, const CompositeOperationType& type
     return ts;
 }
 
-TextStream& FEComposite::externalRepresentation(TextStream& ts) const
+TextStream& FEComposite::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feComposite";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " operation=\"" << m_type << "\"";
     if (m_type == FECOMPOSITE_OPERATOR_ARITHMETIC)
         ts << " k1=\"" << m_k1 << "\" k2=\"" << m_k2 << "\" k3=\"" << m_k3 << "\" k4=\"" << m_k4 << "\"";
     ts << "]\n";
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
-    inputEffect(1)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
+    inputEffect(1)->externalRepresentation(ts, representation);
     return ts;
 }
 
index decb629..7d08e1f 100644 (file)
@@ -70,7 +70,7 @@ private:
     void determineAbsolutePaintRect() override;
 
     void platformApplySoftware() override;
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     inline void platformArithmeticSoftware(const Uint8ClampedArray& source, Uint8ClampedArray& destination, float k1, float k2, float k3, float k4);
 
index 3abe8b7..b21db1c 100644 (file)
@@ -455,10 +455,10 @@ static TextStream& operator<<(TextStream& ts, const EdgeModeType& type)
     return ts;
 }
 
-TextStream& FEConvolveMatrix::externalRepresentation(TextStream& ts) const
+TextStream& FEConvolveMatrix::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feConvolveMatrix";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " order=\"" << m_kernelSize << "\" "
        << "kernelMatrix=\"" << m_kernelMatrix  << "\" "
        << "divisor=\"" << m_divisor << "\" "
@@ -469,7 +469,7 @@ TextStream& FEConvolveMatrix::externalRepresentation(TextStream& ts) const
        << "preserveAlpha=\"" << m_preserveAlpha << "\"]\n";
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
     return ts;
 }
 
index 5878116..67d4c65 100644 (file)
@@ -86,7 +86,7 @@ private:
 
     void platformApplySoftware() override;
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     template<bool preserveAlphaValues>
     ALWAYS_INLINE void fastSetInteriorPixels(PaintingData&, int clipRight, int clipBottom, int yStart, int yEnd);
index 9bd2451..6633ea2 100644 (file)
@@ -47,16 +47,16 @@ bool FEDiffuseLighting::setDiffuseConstant(float diffuseConstant)
     return true;
 }
 
-TextStream& FEDiffuseLighting::externalRepresentation(TextStream& ts) const
+TextStream& FEDiffuseLighting::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feDiffuseLighting";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " surfaceScale=\"" << m_surfaceScale << "\" "
        << "diffuseConstant=\"" << m_diffuseConstant << "\" "
        << "kernelUnitLength=\"" << m_kernelUnitLengthX << ", " << m_kernelUnitLengthY << "\"]\n";
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
     return ts;
 }
 
index 3f75504..df6114d 100644 (file)
@@ -35,7 +35,7 @@ public:
     float diffuseConstant() const { return m_diffuseConstant; }
     bool setDiffuseConstant(float);
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
 private:
     FEDiffuseLighting(Filter&, const Color&, float, float, float, float, Ref<LightSource>&&);
index d008f68..75ad784 100644 (file)
@@ -166,17 +166,17 @@ static TextStream& operator<<(TextStream& ts, const ChannelSelectorType& type)
     return ts;
 }
 
-TextStream& FEDisplacementMap::externalRepresentation(TextStream& ts) const
+TextStream& FEDisplacementMap::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feDisplacementMap";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " scale=\"" << m_scale << "\" "
        << "xChannelSelector=\"" << m_xChannelSelector << "\" "
        << "yChannelSelector=\"" << m_yChannelSelector << "\"]\n";
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
-    inputEffect(1)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
+    inputEffect(1)->externalRepresentation(ts, representation);
     return ts;
 }
 
index c4e434b..e69ec71 100644 (file)
@@ -63,7 +63,7 @@ private:
     int xChannelIndex() const { return m_xChannelSelector - 1; }
     int yChannelIndex() const { return m_yChannelSelector - 1; }
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     ChannelSelectorType m_xChannelSelector;
     ChannelSelectorType m_yChannelSelector;
index cb04574..c7482e2 100644 (file)
@@ -114,14 +114,14 @@ void FEDropShadow::platformApplySoftware()
     resultImage->context().drawImageBuffer(*sourceImage, drawingRegion);
 }
 
-TextStream& FEDropShadow::externalRepresentation(TextStream& ts) const
+TextStream& FEDropShadow::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent <<"[feDropShadow";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " stdDeviation=\"" << m_stdX << ", " << m_stdY << "\" dx=\"" << m_dx << "\" dy=\"" << m_dy << "\" flood-color=\"" << m_shadowColor.nameForRenderTreeAsText() <<"\" flood-opacity=\"" << m_shadowOpacity << "]\n";
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
     return ts;
 }
     
index 1412471..57a2677 100644 (file)
@@ -56,7 +56,7 @@ private:
 
     void determineAbsolutePaintRect() override;
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     float m_stdX;
     float m_stdY;
index db39b9d..7840aae 100644 (file)
@@ -67,10 +67,10 @@ void FEFlood::platformApplySoftware()
     resultImage->context().fillRect(FloatRect(FloatPoint(), absolutePaintRect().size()), color);
 }
 
-TextStream& FEFlood::externalRepresentation(TextStream& ts) const
+TextStream& FEFlood::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feFlood";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " flood-color=\"" << floodColor().nameForRenderTreeAsText() << "\" "
        << "flood-opacity=\"" << floodOpacity() << "\"]\n";
     return ts;
index e1cc3ce..48c31a0 100644 (file)
@@ -53,7 +53,7 @@ private:
 
     void determineAbsolutePaintRect() override { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); }
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     Color m_floodColor;
     float m_floodOpacity;
index ccab073..0896e66 100644 (file)
@@ -539,14 +539,14 @@ void FEGaussianBlur::platformApplySoftware()
     platformApply(*resultPixelArray, *tmpImageData, kernelSize.width(), kernelSize.height(), paintSize);
 }
 
-TextStream& FEGaussianBlur::externalRepresentation(TextStream& ts) const
+TextStream& FEGaussianBlur::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feGaussianBlur";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " stdDeviation=\"" << m_stdX << ", " << m_stdY << "\"]\n";
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
     return ts;
 }
 
index 74ab4f7..f7c7c3b 100644 (file)
@@ -67,7 +67,7 @@ private:
 
     void determineAbsolutePaintRect() override;
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     static void platformApplyWorker(PlatformApplyParameters*);
     void platformApply(Uint8ClampedArray& ioBuffer, Uint8ClampedArray& tempBuffer, unsigned kernelSizeX, unsigned kernelSizeY, IntSize& paintSize);
index 0e30899..d7c7106 100644 (file)
@@ -56,17 +56,17 @@ void FEMerge::platformApplySoftware()
     }
 }
 
-TextStream& FEMerge::externalRepresentation(TextStream& ts) const
+TextStream& FEMerge::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feMerge";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     unsigned size = numberOfEffectInputs();
     ASSERT(size > 0);
     ts << " mergeNodes=\"" << size << "\"]\n";
 
     TextStream::IndentScope indentScope(ts);
     for (unsigned i = 0; i < size; ++i)
-        inputEffect(i)->externalRepresentation(ts);
+        inputEffect(i)->externalRepresentation(ts, representation);
     return ts;
 }
 
index 0f965f0..5cfc5cb 100644 (file)
@@ -37,7 +37,7 @@ private:
 
     void platformApplySoftware() override;
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 };
 
 } // namespace WebCore
index 740eac6..8d96798 100644 (file)
@@ -289,15 +289,15 @@ static TextStream& operator<<(TextStream& ts, const MorphologyOperatorType& type
     return ts;
 }
 
-TextStream& FEMorphology::externalRepresentation(TextStream& ts) const
+TextStream& FEMorphology::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feMorphology";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " operator=\"" << morphologyOperator() << "\" "
        << "radius=\"" << radiusX() << ", " << radiusY() << "\"]\n";
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
     return ts;
 }
 
index 5da495e..48fc354 100644 (file)
@@ -54,7 +54,7 @@ private:
 
     void determineAbsolutePaintRect() override;
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     bool platformApplyDegenerate(Uint8ClampedArray& dstPixelArray, const IntRect& imageRect, int radiusX, int radiusY);
 
index 4f29324..0cf15af 100644 (file)
@@ -81,14 +81,14 @@ void FEOffset::platformApplySoftware()
     resultImage->context().drawImageBuffer(*inBuffer, drawingRegion);
 }
 
-TextStream& FEOffset::externalRepresentation(TextStream& ts) const
+TextStream& FEOffset::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feOffset";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " dx=\"" << dx() << "\" dy=\"" << dy() << "\"]\n";
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
     return ts;
 }
 
index 5d6454d..65abda9 100644 (file)
@@ -45,7 +45,7 @@ private:
     
     void determineAbsolutePaintRect() override;
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     float m_dx;
     float m_dy;
index ad683a6..b76af04 100644 (file)
@@ -55,16 +55,16 @@ bool FESpecularLighting::setSpecularExponent(float specularExponent)
     return true;
 }
 
-TextStream& FESpecularLighting::externalRepresentation(TextStream& ts) const
+TextStream& FESpecularLighting::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feSpecularLighting";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " surfaceScale=\"" << m_surfaceScale << "\" "
        << "specualConstant=\"" << m_specularConstant << "\" "
        << "specularExponent=\"" << m_specularExponent << "\"]\n";
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
     return ts;
 }
 
index cbeded0..e998a76 100644 (file)
@@ -36,7 +36,7 @@ public:
     float specularExponent() const { return m_specularExponent; }
     bool setSpecularExponent(float);
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
 private:
     FESpecularLighting(Filter&, const Color&, float, float, float, float, float, Ref<LightSource>&&);
index bf4b7ef..707c6eb 100644 (file)
@@ -86,14 +86,14 @@ void FETile::platformApplySoftware()
     filterContext.fillRect(FloatRect(FloatPoint(), absolutePaintRect().size()));
 }
 
-TextStream& FETile::externalRepresentation(TextStream& ts) const
+TextStream& FETile::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feTile";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << "]\n";
 
     TextStream::IndentScope indentScope(ts);
-    inputEffect(0)->externalRepresentation(ts);
+    inputEffect(0)->externalRepresentation(ts, representation);
 
     return ts;
 }
index 199e698..49bd99f 100644 (file)
@@ -41,7 +41,7 @@ private:
 
     void determineAbsolutePaintRect() override { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); }
 
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 };
 
 } // namespace WebCore
index feb3b42..73a8eb7 100644 (file)
@@ -467,10 +467,10 @@ static TextStream& operator<<(TextStream& ts, TurbulenceType type)
     return ts;
 }
 
-TextStream& FETurbulence::externalRepresentation(TextStream& ts) const
+TextStream& FETurbulence::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     ts << indent << "[feTurbulence";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " type=\"" << type() << "\" "
        << "baseFrequency=\"" << baseFrequencyX() << ", " << baseFrequencyY() << "\" "
        << "seed=\"" << seed() << "\" "
index cadd13e..5e60904 100644 (file)
@@ -112,7 +112,7 @@ private:
 
     void platformApplySoftware() override;
     void determineAbsolutePaintRect() override { setAbsolutePaintRect(enclosingIntRect(maxEffectRect())); }
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     void initPaint(PaintingData&);
     StitchData computeStitching(IntSize tileSize, float& baseFrequencyX, float& baseFrequencyY) const;
index 9b4c1f0..4d38e1b 100644 (file)
@@ -503,11 +503,28 @@ void FilterEffect::transformResultColorSpace(ColorSpace dstColorSpace)
 #endif
 }
 
-TextStream& FilterEffect::externalRepresentation(TextStream& ts) const
+TextStream& FilterEffect::externalRepresentation(TextStream& ts, RepresentationType representationType) const
 {
     // FIXME: We should dump the subRegions of the filter primitives here later. This isn't
     // possible at the moment, because we need more detailed informations from the target object.
+    
+    if (representationType == RepresentationType::Debugging) {
+        TextStream::IndentScope indentScope(ts);
+        ts.dumpProperty("alpha image", m_alphaImage);
+        ts.dumpProperty("operating colorspace", m_operatingColorSpace);
+        ts.dumpProperty("result colorspace", m_resultColorSpace);
+        ts << "\n" << indent;
+    }
     return ts;
 }
 
+TextStream& operator<<(TextStream& ts, const FilterEffect& filter)
+{
+    // Use a new stream because we want multiline mode for logging filters.
+    TextStream filterStream;
+    filter.externalRepresentation(filterStream, FilterEffect::RepresentationType::Debugging);
+    
+    return ts << filterStream.release();
+}
+
 } // namespace WebCore
index 498e6d5..56f0829 100644 (file)
@@ -114,7 +114,8 @@ public:
 
     virtual FilterEffectType filterEffectType() const { return FilterEffectTypeUnknown; }
 
-    virtual WTF::TextStream& externalRepresentation(WTF::TextStream&) const;
+    enum class RepresentationType { TestOutput, Debugging };
+    virtual WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType = RepresentationType::TestOutput) const;
 
     // The following functions are SVG specific and will move to RenderSVGResourceFilterPrimitive.
     // See bug https://bugs.webkit.org/show_bug.cgi?id=45614.
@@ -221,5 +222,7 @@ private:
     ColorSpace m_resultColorSpace { ColorSpaceSRGB };
 };
 
+WEBCORE_EXPORT WTF::TextStream& operator<<(WTF::TextStream&, const FilterEffect&);
+
 } // namespace WebCore
 
index 735788a..acb7382 100644 (file)
@@ -63,7 +63,7 @@ void SourceAlpha::platformApplySoftware()
     filterContext.drawImageBuffer(*imageBuffer, IntPoint(), CompositeDestinationIn);
 }
 
-TextStream& SourceAlpha::externalRepresentation(TextStream& ts) const
+TextStream& SourceAlpha::externalRepresentation(TextStream& ts, RepresentationType) const
 {
     ts << indent << "[SourceAlpha]\n";
     return ts;
index fa7b873..7d1a311 100644 (file)
@@ -38,7 +38,7 @@ private:
 
     void platformApplySoftware() override;
     void determineAbsolutePaintRect() override;
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 };
 
 } //namespace WebCore
index 18608f7..7521a5e 100644 (file)
@@ -60,7 +60,7 @@ void SourceGraphic::platformApplySoftware()
     resultImage->context().drawImageBuffer(*sourceImage, IntPoint());
 }
 
-TextStream& SourceGraphic::externalRepresentation(TextStream& ts) const
+TextStream& SourceGraphic::externalRepresentation(TextStream& ts, RepresentationType) const
 {
     ts << indent << "[SourceGraphic]\n";
     return ts;
index 9b58897..1a0e9c8 100644 (file)
@@ -43,7 +43,7 @@ private:
 
     void determineAbsolutePaintRect() override;
     void platformApplySoftware() override;
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const override;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const override;
 
     FilterEffectType filterEffectType() const override { return FilterEffectTypeSourceInput; }
 };
index 2594c1d..2c2a49b 100644 (file)
@@ -173,6 +173,8 @@ bool RenderSVGResourceFilter::applyResource(RenderElement& renderer, const Rende
     if (!lastEffect || lastEffect->totalNumberOfEffectInputs() > maxTotalOfEffectInputs)
         return false;
 
+    LOG_WITH_STREAM(Filters, stream << "RenderSVGResourceFilter::applyResource\n" << *filterData->builder->lastEffect());
+
     RenderSVGResourceFilterPrimitive::determineFilterPrimitiveSubregion(*lastEffect);
     FloatRect subRegion = lastEffect->maxEffectRect();
     // At least one FilterEffect has a too big image size,
index 25564f8..2be6c75 100644 (file)
@@ -137,7 +137,7 @@ void FEImage::platformApplySoftware()
     resultImage->context().drawImage(*m_image, destRect, srcRect);
 }
 
-TextStream& FEImage::externalRepresentation(TextStream& ts) const
+TextStream& FEImage::externalRepresentation(TextStream& ts, RepresentationType representation) const
 {
     FloatSize imageSize;
     if (m_image)
@@ -145,7 +145,7 @@ TextStream& FEImage::externalRepresentation(TextStream& ts) const
     else if (RenderObject* renderer = referencedRenderer())
         imageSize = enclosingIntRect(renderer->repaintRectInLocalCoordinates()).size();
     ts << indent << "[feImage";
-    FilterEffect::externalRepresentation(ts);
+    FilterEffect::externalRepresentation(ts, representation);
     ts << " image-size=\"" << imageSize.width() << "x" << imageSize.height() << "\"]\n";
     // FIXME: should this dump also object returned by SVGFEImage::image() ?
     return ts;
index bf8ce8b..67a868d 100644 (file)
@@ -49,7 +49,7 @@ private:
 
     void platformApplySoftware() final;
     void determineAbsolutePaintRect() final;
-    WTF::TextStream& externalRepresentation(WTF::TextStream&) const final;
+    WTF::TextStream& externalRepresentation(WTF::TextStream&, RepresentationType) const final;
 
     RefPtr<Image> m_image;