2011-02-20 Martin Robinson <mrobinson@igalia.com>
authormrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 Feb 2011 19:00:37 +0000 (19:00 +0000)
committermrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 Feb 2011 19:00:37 +0000 (19:00 +0000)
        Reviewed by Nikolas Zimmermann.

        [CAIRO] Support ImageBuffers clip operation on all Cairo ports
        https://bugs.webkit.org/show_bug.cgi?id=23526

        Update results for tests which are now passing and unskip them.

        * platform/gtk/Skipped: Unskip tests which are now passing.
        * platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.checksum: Added.
        * platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.png: Added.
        * platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.txt: Added.
        * platform/gtk/fast/backgrounds/svg-as-mask-expected.checksum: Added.
        * platform/gtk/fast/backgrounds/svg-as-mask-expected.png: Added.
        * platform/gtk/fast/backgrounds/svg-as-mask-expected.txt: Added.
        * platform/gtk/svg/W3C-SVG-1.1/filters-example-01-b-expected.checksum:
        * platform/gtk/svg/W3C-SVG-1.1/filters-example-01-b-expected.png:
        * platform/gtk/svg/W3C-SVG-1.1/filters-offset-01-b-expected.checksum:
        * platform/gtk/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png:
        * platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.checksum: Added.
        * platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.png: Added.
        * platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt: Added.
        * platform/gtk/svg/W3C-SVG-1.1/masking-intro-01-f-expected.checksum:
        * platform/gtk/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png:
        * platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.checksum:
        * platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png:
        * platform/gtk/svg/W3C-SVG-1.1/masking-path-01-b-expected.checksum:
        * platform/gtk/svg/W3C-SVG-1.1/masking-path-01-b-expected.png:
        * platform/gtk/svg/W3C-SVG-1.1/masking-path-04-b-expected.checksum:
        * platform/gtk/svg/W3C-SVG-1.1/masking-path-04-b-expected.png:
        * platform/gtk/svg/batik/masking/maskRegions-expected.checksum:
        * platform/gtk/svg/batik/masking/maskRegions-expected.png:
        * platform/gtk/svg/batik/text/textEffect2-expected.checksum:
        * platform/gtk/svg/batik/text/textEffect2-expected.png:
        * platform/gtk/svg/clip-path/clip-in-mask-expected.checksum:
        * platform/gtk/svg/clip-path/clip-in-mask-expected.png:
        * platform/gtk/svg/clip-path/clip-in-mask-objectBoundingBox-expected.checksum:
        * platform/gtk/svg/clip-path/clip-in-mask-objectBoundingBox-expected.png:
        * platform/gtk/svg/clip-path/clip-in-mask-userSpaceOnUse-expected.checksum:
        * platform/gtk/svg/clip-path/clip-in-mask-userSpaceOnUse-expected.png:
        * platform/gtk/svg/clip-path/clip-path-child-clipped-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-child-clipped-expected.png:
        * platform/gtk/svg/clip-path/clip-path-childs-clipped-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-childs-clipped-expected.png:
        * platform/gtk/svg/clip-path/clip-path-clipped-evenodd-twice-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-clipped-evenodd-twice-expected.png:
        * platform/gtk/svg/clip-path/clip-path-clipped-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-clipped-expected.png:
        * platform/gtk/svg/clip-path/clip-path-clipped-no-content-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-clipped-no-content-expected.png:
        * platform/gtk/svg/clip-path/clip-path-clipped-nonzero-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-clipped-nonzero-expected.png:
        * platform/gtk/svg/clip-path/clip-path-evenodd-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-evenodd-expected.png:
        * platform/gtk/svg/clip-path/clip-path-evenodd-nonzero-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-evenodd-nonzero-expected.png:
        * platform/gtk/svg/clip-path/clip-path-nonzero-evenodd-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-nonzero-evenodd-expected.png:
        * platform/gtk/svg/clip-path/clip-path-nonzero-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-nonzero-expected.png:
        * platform/gtk/svg/clip-path/clip-path-pixelation-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-pixelation-expected.png:
        * platform/gtk/svg/clip-path/clip-path-text-and-shape-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-text-and-shape-expected.png:
        * platform/gtk/svg/clip-path/clip-path-text-and-stroke-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-text-and-stroke-expected.png:
        * platform/gtk/svg/clip-path/clip-path-text-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-text-expected.png:
        * platform/gtk/svg/clip-path/clip-path-use-as-child2-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-use-as-child2-expected.png:
        * platform/gtk/svg/clip-path/clip-path-use-as-child3-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-use-as-child3-expected.png:
        * platform/gtk/svg/clip-path/clip-path-use-as-child4-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-use-as-child4-expected.png:
        * platform/gtk/svg/clip-path/clip-path-with-different-unittypes-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-with-different-unittypes-expected.png:
        * platform/gtk/svg/clip-path/clip-path-with-different-unittypes2-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-with-different-unittypes2-expected.png:
        * platform/gtk/svg/clip-path/clip-path-with-text-clipped-expected.checksum:
        * platform/gtk/svg/clip-path/clip-path-with-text-clipped-expected.png:
        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-different-unitTypes-expected.checksum:
        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-different-unitTypes-expected.png:
        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-expected.checksum:
        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-expected.png:
        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-panning-expected.checksum:
        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-panning-expected.png:
        * platform/gtk/svg/clip-path/nested-clip-in-mask-image-based-clipping-expected.checksum:
        * platform/gtk/svg/clip-path/nested-clip-in-mask-image-based-clipping-expected.png:
        * platform/gtk/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.checksum:
        * platform/gtk/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.png:
        * platform/gtk/svg/clip-path/nested-clip-in-mask-path-based-clipping-expected.checksum:
        * platform/gtk/svg/clip-path/nested-clip-in-mask-path-based-clipping-expected.png:
        * platform/gtk/svg/css/circle-in-mask-with-shadow-expected.checksum: Added.
        * platform/gtk/svg/css/circle-in-mask-with-shadow-expected.png: Added.
        * platform/gtk/svg/css/circle-in-mask-with-shadow-expected.txt: Added.
        * platform/gtk/svg/css/clippath-with-shadow-expected.checksum: Added.
        * platform/gtk/svg/css/clippath-with-shadow-expected.png: Added.
        * platform/gtk/svg/css/clippath-with-shadow-expected.txt: Added.
        * platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.checksum: Added.
        * platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.png: Added.
        * platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.txt: Added.
        * platform/gtk/svg/custom/circular-marker-reference-2-expected.txt:
        * platform/gtk/svg/custom/js-late-mask-and-object-creation-expected.checksum:
        * platform/gtk/svg/custom/js-late-mask-and-object-creation-expected.png:
        * platform/gtk/svg/custom/js-late-mask-creation-expected.checksum:
        * platform/gtk/svg/custom/js-late-mask-creation-expected.png:
        * platform/gtk/svg/custom/marker-child-changes-css-expected.checksum: Added.
        * platform/gtk/svg/custom/marker-child-changes-css-expected.png: Copied from LayoutTests/platform/gtk/svg/custom/mask-changes-expected.png.
        * platform/gtk/svg/custom/marker-child-changes-css-expected.txt: Added.
        * platform/gtk/svg/custom/mask-changes-expected.checksum:
        * platform/gtk/svg/custom/mask-changes-expected.png:
        * platform/gtk/svg/custom/mask-child-changes-expected.checksum:
        * platform/gtk/svg/custom/mask-child-changes-expected.png:
        * platform/gtk/svg/custom/mask-colorspace-expected.checksum: Added.
        * platform/gtk/svg/custom/mask-colorspace-expected.png: Added.
        * platform/gtk/svg/custom/mask-colorspace-expected.txt: Added.
        * platform/gtk/svg/custom/mask-inside-defs-expected.checksum:
        * platform/gtk/svg/custom/mask-inside-defs-expected.png:
        * platform/gtk/svg/custom/mask-on-multiple-objects-expected.checksum: Added.
        * platform/gtk/svg/custom/mask-on-multiple-objects-expected.png: Added.
        * platform/gtk/svg/custom/mask-on-multiple-objects-expected.txt: Added.
        * platform/gtk/svg/custom/mask-with-all-units-expected.checksum:
        * platform/gtk/svg/custom/mask-with-all-units-expected.png:
        * platform/gtk/svg/custom/non-circular-marker-reference-expected.txt:
        * platform/gtk/svg/custom/recursive-mask-expected.checksum: Added.
        * platform/gtk/svg/custom/recursive-mask-expected.png: Added.
        * platform/gtk/svg/custom/recursive-mask-expected.txt:
        * platform/gtk/svg/custom/visibility-override-mask-expected.checksum:
        * platform/gtk/svg/custom/visibility-override-mask-expected.png:
        * platform/gtk/svg/filters/feGaussianBlur-expected.checksum: Added.
        * platform/gtk/svg/filters/feGaussianBlur-expected.png: Added.
        * platform/gtk/svg/filters/feGaussianBlur-expected.txt: Added.
        * platform/gtk/svg/filters/filter-clip-expected.checksum: Added.
        * platform/gtk/svg/filters/filter-clip-expected.png: Added.
        * platform/gtk/svg/filters/filter-clip-expected.txt: Added.
        * platform/gtk/svg/filters/shadow-on-filter-expected.checksum: Added.
        * platform/gtk/svg/filters/shadow-on-filter-expected.png: Added.
        * platform/gtk/svg/filters/shadow-on-filter-expected.txt: Added.
        * platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.checksum: Added.
        * platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.png: Added.
        * platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.txt: Added.
        * platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.checksum: Added.
        * platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.png: Added.
        * platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.txt: Added.
        * platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.checksum: Added.
        * platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.png: Added.
        * platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.txt:
2011-02-20  Martin Robinson  <mrobinson@igalia.com>

        Reviewed by Nikolas Zimmermann.

        [CAIRO] Support ImageBuffers clip operation on all Cairo ports
        https://bugs.webkit.org/show_bug.cgi?id=23526

        Add support for ImageBuffer clipping on Cairo by emulating them with image
        masks. Since masking is immediate on Cairo, we must store the mask surfaces
        on a stack and apply them during restorePlatformState.

        * platform/graphics/GraphicsContext.h: Add pushImageMask.
        * platform/graphics/cairo/GraphicsContextCairo.cpp:
        (WebCore::GraphicsContext::savePlatformState): Push an empty mask onto the
        stack, so we can keep track of when to actually apply the image mask.
        (WebCore::GraphicsContext::restorePlatformState): When we are ready to apply
        an image mask, use cairo_mask_surface to mask the group that we pushed onto
        our surface.
        (WebCore::GraphicsContext::pushImageMask): Added. This method will push a surface
        onto the image mask stack and push a group onto the Cairo state, so that the masking
        only affects what we paint after this point.
        * platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h: Added a class to keep
        track of image masking information after calls to pushImageMask.
        (WebCore::ImageMaskInformation::update): Added
        (WebCore::ImageMaskInformation::valid): Added
        (WebCore::ImageMaskInformation::maskSurface): Added
        (WebCore::ImageMaskInformation::maskRect): Added
        * platform/graphics/cairo/ImageBufferCairo.cpp:
        (WebCore::ImageBuffer::clip): Call GraphicsContext::pushImageMask.

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

152 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/gtk/Skipped
LayoutTests/platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/fast/backgrounds/svg-as-mask-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/fast/backgrounds/svg-as-mask-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/fast/backgrounds/svg-as-mask-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-example-01-b-expected.checksum
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-example-01-b-expected.png
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-offset-01-b-expected.checksum
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-intro-01-f-expected.checksum
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.checksum
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-path-01-b-expected.checksum
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-path-01-b-expected.png
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-path-04-b-expected.checksum
LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-path-04-b-expected.png
LayoutTests/platform/gtk/svg/batik/masking/maskRegions-expected.checksum
LayoutTests/platform/gtk/svg/batik/masking/maskRegions-expected.png
LayoutTests/platform/gtk/svg/batik/text/textEffect2-expected.checksum
LayoutTests/platform/gtk/svg/batik/text/textEffect2-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-objectBoundingBox-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-objectBoundingBox-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-userSpaceOnUse-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-userSpaceOnUse-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-child-clipped-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-child-clipped-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-childs-clipped-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-childs-clipped-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-evenodd-twice-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-evenodd-twice-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-no-content-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-no-content-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-nonzero-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-nonzero-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-evenodd-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-evenodd-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-evenodd-nonzero-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-evenodd-nonzero-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-nonzero-evenodd-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-nonzero-evenodd-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-nonzero-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-nonzero-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-pixelation-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-pixelation-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-text-and-shape-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-text-and-shape-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-text-and-stroke-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-text-and-stroke-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-text-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-text-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child2-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child2-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child3-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child3-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child4-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child4-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-with-different-unittypes-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-with-different-unittypes-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-with-different-unittypes2-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-with-different-unittypes2-expected.png
LayoutTests/platform/gtk/svg/clip-path/clip-path-with-text-clipped-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/clip-path-with-text-clipped-expected.png
LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-different-unitTypes-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-different-unitTypes-expected.png
LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-expected.png
LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-panning-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-panning-expected.png
LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-image-based-clipping-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-image-based-clipping-expected.png
LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.png
LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-path-based-clipping-expected.checksum
LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-path-based-clipping-expected.png
LayoutTests/platform/gtk/svg/css/circle-in-mask-with-shadow-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/css/circle-in-mask-with-shadow-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/css/circle-in-mask-with-shadow-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/css/clippath-with-shadow-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/css/clippath-with-shadow-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/css/clippath-with-shadow-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/circular-marker-reference-2-expected.txt
LayoutTests/platform/gtk/svg/custom/js-late-mask-and-object-creation-expected.checksum
LayoutTests/platform/gtk/svg/custom/js-late-mask-and-object-creation-expected.png
LayoutTests/platform/gtk/svg/custom/js-late-mask-creation-expected.checksum
LayoutTests/platform/gtk/svg/custom/js-late-mask-creation-expected.png
LayoutTests/platform/gtk/svg/custom/marker-child-changes-css-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/marker-child-changes-css-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/marker-child-changes-css-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/mask-changes-expected.checksum
LayoutTests/platform/gtk/svg/custom/mask-changes-expected.png
LayoutTests/platform/gtk/svg/custom/mask-child-changes-expected.checksum
LayoutTests/platform/gtk/svg/custom/mask-child-changes-expected.png
LayoutTests/platform/gtk/svg/custom/mask-colorspace-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/mask-colorspace-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/mask-colorspace-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/mask-inside-defs-expected.checksum
LayoutTests/platform/gtk/svg/custom/mask-inside-defs-expected.png
LayoutTests/platform/gtk/svg/custom/mask-on-multiple-objects-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/mask-on-multiple-objects-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/mask-on-multiple-objects-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/mask-with-all-units-expected.checksum
LayoutTests/platform/gtk/svg/custom/mask-with-all-units-expected.png
LayoutTests/platform/gtk/svg/custom/mask-with-default-value-expected.checksum
LayoutTests/platform/gtk/svg/custom/mask-with-default-value-expected.png
LayoutTests/platform/gtk/svg/custom/non-circular-marker-reference-expected.txt
LayoutTests/platform/gtk/svg/custom/recursive-mask-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/recursive-mask-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/recursive-mask-expected.txt
LayoutTests/platform/gtk/svg/custom/use-on-clip-path-with-transformation-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/use-on-clip-path-with-transformation-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/custom/use-on-clip-path-with-transformation-expected.txt
LayoutTests/platform/gtk/svg/custom/visibility-override-mask-expected.checksum
LayoutTests/platform/gtk/svg/custom/visibility-override-mask-expected.png
LayoutTests/platform/gtk/svg/filters/feGaussianBlur-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/feGaussianBlur-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/feGaussianBlur-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/filter-clip-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/filter-clip-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/filter-clip-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/shadow-on-filter-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/shadow-on-filter-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/shadow-on-filter-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/filters/sourceAlpha-expected.checksum
LayoutTests/platform/gtk/svg/filters/sourceAlpha-expected.png
LayoutTests/platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.txt [new file with mode: 0644]
LayoutTests/platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.checksum [new file with mode: 0644]
LayoutTests/platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.png [new file with mode: 0644]
LayoutTests/platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/GraphicsContext.h
Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
Source/WebCore/platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h
Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp

index 696004d..683171e 100644 (file)
@@ -1,3 +1,152 @@
+2011-02-20  Martin Robinson  <mrobinson@igalia.com>
+
+        Reviewed by Nikolas Zimmermann.
+
+        [CAIRO] Support ImageBuffers clip operation on all Cairo ports
+        https://bugs.webkit.org/show_bug.cgi?id=23526
+
+        Update results for tests which are now passing and unskip them.
+
+        * platform/gtk/Skipped: Unskip tests which are now passing.
+        * platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.checksum: Added.
+        * platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.png: Added.
+        * platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.txt: Added.
+        * platform/gtk/fast/backgrounds/svg-as-mask-expected.checksum: Added.
+        * platform/gtk/fast/backgrounds/svg-as-mask-expected.png: Added.
+        * platform/gtk/fast/backgrounds/svg-as-mask-expected.txt: Added.
+        * platform/gtk/svg/W3C-SVG-1.1/filters-example-01-b-expected.checksum:
+        * platform/gtk/svg/W3C-SVG-1.1/filters-example-01-b-expected.png:
+        * platform/gtk/svg/W3C-SVG-1.1/filters-offset-01-b-expected.checksum:
+        * platform/gtk/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png:
+        * platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.checksum: Added.
+        * platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.png: Added.
+        * platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt: Added.
+        * platform/gtk/svg/W3C-SVG-1.1/masking-intro-01-f-expected.checksum:
+        * platform/gtk/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png:
+        * platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.checksum:
+        * platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png:
+        * platform/gtk/svg/W3C-SVG-1.1/masking-path-01-b-expected.checksum:
+        * platform/gtk/svg/W3C-SVG-1.1/masking-path-01-b-expected.png:
+        * platform/gtk/svg/W3C-SVG-1.1/masking-path-04-b-expected.checksum:
+        * platform/gtk/svg/W3C-SVG-1.1/masking-path-04-b-expected.png:
+        * platform/gtk/svg/batik/masking/maskRegions-expected.checksum:
+        * platform/gtk/svg/batik/masking/maskRegions-expected.png:
+        * platform/gtk/svg/batik/text/textEffect2-expected.checksum:
+        * platform/gtk/svg/batik/text/textEffect2-expected.png:
+        * platform/gtk/svg/clip-path/clip-in-mask-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-in-mask-expected.png:
+        * platform/gtk/svg/clip-path/clip-in-mask-objectBoundingBox-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-in-mask-objectBoundingBox-expected.png:
+        * platform/gtk/svg/clip-path/clip-in-mask-userSpaceOnUse-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-in-mask-userSpaceOnUse-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-child-clipped-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-child-clipped-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-childs-clipped-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-childs-clipped-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-clipped-evenodd-twice-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-clipped-evenodd-twice-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-clipped-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-clipped-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-clipped-no-content-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-clipped-no-content-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-clipped-nonzero-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-clipped-nonzero-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-evenodd-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-evenodd-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-evenodd-nonzero-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-evenodd-nonzero-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-nonzero-evenodd-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-nonzero-evenodd-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-nonzero-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-nonzero-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-pixelation-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-pixelation-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-text-and-shape-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-text-and-shape-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-text-and-stroke-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-text-and-stroke-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-text-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-text-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-use-as-child2-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-use-as-child2-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-use-as-child3-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-use-as-child3-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-use-as-child4-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-use-as-child4-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-with-different-unittypes-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-with-different-unittypes-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-with-different-unittypes2-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-with-different-unittypes2-expected.png:
+        * platform/gtk/svg/clip-path/clip-path-with-text-clipped-expected.checksum:
+        * platform/gtk/svg/clip-path/clip-path-with-text-clipped-expected.png:
+        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-different-unitTypes-expected.checksum:
+        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-different-unitTypes-expected.png:
+        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-expected.checksum:
+        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-expected.png:
+        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-panning-expected.checksum:
+        * platform/gtk/svg/clip-path/deep-nested-clip-in-mask-panning-expected.png:
+        * platform/gtk/svg/clip-path/nested-clip-in-mask-image-based-clipping-expected.checksum:
+        * platform/gtk/svg/clip-path/nested-clip-in-mask-image-based-clipping-expected.png:
+        * platform/gtk/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.checksum:
+        * platform/gtk/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.png:
+        * platform/gtk/svg/clip-path/nested-clip-in-mask-path-based-clipping-expected.checksum:
+        * platform/gtk/svg/clip-path/nested-clip-in-mask-path-based-clipping-expected.png:
+        * platform/gtk/svg/css/circle-in-mask-with-shadow-expected.checksum: Added.
+        * platform/gtk/svg/css/circle-in-mask-with-shadow-expected.png: Added.
+        * platform/gtk/svg/css/circle-in-mask-with-shadow-expected.txt: Added.
+        * platform/gtk/svg/css/clippath-with-shadow-expected.checksum: Added.
+        * platform/gtk/svg/css/clippath-with-shadow-expected.png: Added.
+        * platform/gtk/svg/css/clippath-with-shadow-expected.txt: Added.
+        * platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.checksum: Added.
+        * platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.png: Added.
+        * platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.txt: Added.
+        * platform/gtk/svg/custom/circular-marker-reference-2-expected.txt:
+        * platform/gtk/svg/custom/js-late-mask-and-object-creation-expected.checksum:
+        * platform/gtk/svg/custom/js-late-mask-and-object-creation-expected.png:
+        * platform/gtk/svg/custom/js-late-mask-creation-expected.checksum:
+        * platform/gtk/svg/custom/js-late-mask-creation-expected.png:
+        * platform/gtk/svg/custom/marker-child-changes-css-expected.checksum: Added.
+        * platform/gtk/svg/custom/marker-child-changes-css-expected.png: Copied from LayoutTests/platform/gtk/svg/custom/mask-changes-expected.png.
+        * platform/gtk/svg/custom/marker-child-changes-css-expected.txt: Added.
+        * platform/gtk/svg/custom/mask-changes-expected.checksum:
+        * platform/gtk/svg/custom/mask-changes-expected.png:
+        * platform/gtk/svg/custom/mask-child-changes-expected.checksum:
+        * platform/gtk/svg/custom/mask-child-changes-expected.png:
+        * platform/gtk/svg/custom/mask-colorspace-expected.checksum: Added.
+        * platform/gtk/svg/custom/mask-colorspace-expected.png: Added.
+        * platform/gtk/svg/custom/mask-colorspace-expected.txt: Added.
+        * platform/gtk/svg/custom/mask-inside-defs-expected.checksum:
+        * platform/gtk/svg/custom/mask-inside-defs-expected.png:
+        * platform/gtk/svg/custom/mask-on-multiple-objects-expected.checksum: Added.
+        * platform/gtk/svg/custom/mask-on-multiple-objects-expected.png: Added.
+        * platform/gtk/svg/custom/mask-on-multiple-objects-expected.txt: Added.
+        * platform/gtk/svg/custom/mask-with-all-units-expected.checksum:
+        * platform/gtk/svg/custom/mask-with-all-units-expected.png:
+        * platform/gtk/svg/custom/non-circular-marker-reference-expected.txt:
+        * platform/gtk/svg/custom/recursive-mask-expected.checksum: Added.
+        * platform/gtk/svg/custom/recursive-mask-expected.png: Added.
+        * platform/gtk/svg/custom/recursive-mask-expected.txt:
+        * platform/gtk/svg/custom/visibility-override-mask-expected.checksum:
+        * platform/gtk/svg/custom/visibility-override-mask-expected.png:
+        * platform/gtk/svg/filters/feGaussianBlur-expected.checksum: Added.
+        * platform/gtk/svg/filters/feGaussianBlur-expected.png: Added.
+        * platform/gtk/svg/filters/feGaussianBlur-expected.txt: Added.
+        * platform/gtk/svg/filters/filter-clip-expected.checksum: Added.
+        * platform/gtk/svg/filters/filter-clip-expected.png: Added.
+        * platform/gtk/svg/filters/filter-clip-expected.txt: Added.
+        * platform/gtk/svg/filters/shadow-on-filter-expected.checksum: Added.
+        * platform/gtk/svg/filters/shadow-on-filter-expected.png: Added.
+        * platform/gtk/svg/filters/shadow-on-filter-expected.txt: Added.
+        * platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.checksum: Added.
+        * platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.png: Added.
+        * platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.txt: Added.
+        * platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.checksum: Added.
+        * platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.png: Added.
+        * platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.txt: Added.
+        * platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.checksum: Added.
+        * platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.png: Added.
+        * platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.txt:
+
 2011-02-24  Peter Kasting  <pkasting@google.com>
 
         Reviewed by Eric Seidel.
index 5659f2e..47a3d07 100644 (file)
@@ -791,9 +791,6 @@ inspector/styles/styles-source-lines-inline.html
 #https://bugs.webkit.org/show_bug.cgi?id=37537
 plugins/npruntime/round-trip-npobject.html
 
-# https://bugs.webkit.org/show_bug.cgi?id=37539
-svg/custom/use-on-clip-path-with-transformation.svg
-
 # https://bugs.webkit.org/show_bug.cgi?id=37544
 svg/custom/use-instanceRoot-as-event-target.xhtml
 
@@ -918,45 +915,16 @@ http/tests/mime/uppercase-mime-type.html
 # SVG tests that seem to produce incorrect output
 svg/custom/marker-strokeWidth-changes.svg
 svg/zoom/text/zoom-hixie-mixed-009.xml
-svg/custom/mask-on-multiple-objects.svg
-svg/filters/filter-clip.svg
-fast/backgrounds/animated-svg-as-mask.html
-fast/backgrounds/svg-as-mask.html
-svg/W3C-SVG-1.1/filters-turb-02-f.svg
-svg/custom/absolute-sized-content-with-resources.xhtml
-svg/custom/marker-child-changes-css.svg
-svg/custom/mask-colorspace.svg
-svg/custom/recursive-mask.svg
-svg/filters/feGaussianBlur.svg
-svg/transforms/text-with-mask-with-svg-transform.svg
-svg/zoom/page/zoom-mask-with-percentages.svg
-svg/css/circle-in-mask-with-shadow.svg
-svg/filters/shadow-on-filter.svg
 svg/filters/shadow-on-rect-with-filter.svg
-svg/filters/sourceAlpha.svg
-svg/css/clippath-with-shadow.svg
-# The shadow in this image is square, while it should be shaped like the layer above.
-svg/W3C-SVG-1.1/filters-example-01-b.svg
-# This should show a series of circles, but instead shows a series of squares.
-svg/W3C-SVG-1.1/filters-offset-01-b.svg
-# The boxes here are totally opaque, but should be partially transparent.
-svg/W3C-SVG-1.1/masking-mask-01-b.svg
-# The text is not clipped properly in the following tests. Masking seem broken entirely.
-svg/W3C-SVG-1.1/masking-path-01-b.svg
-svg/W3C-SVG-1.1/masking-path-04-b.svg
-svg/W3C-SVG-1.1/masking-intro-01-f.svg
-svg/batik/masking/maskRegions.svg
-svg/batik/text/textEffect2.svg
-svg/custom/js-late-mask-creation.svg
-svg/custom/js-late-mask-and-object-creation.svg
-svg/custom/mask-changes.svg
-svg/custom/mask-child-changes.svg
 svg/custom/mask-excessive-malloc.svg
-svg/custom/mask-inside-defs.svg
-svg/custom/mask-with-all-units.svg
-svg/custom/mask-with-default-value.svg
-svg/custom/visibility-override-mask.svg
-svg/clip-path
+
+# There seem to be some bugs with path clipping.
+svg/clip-path/clip-path-use-as-child2.svg
+svg/clip-path/clip-path-use-as-child3.svg
+svg/clip-path/clip-path-use-as-child4.svg
+svg/clip-path/clip-path-with-different-unittypes.svg
+svg/clip-path/clip-path-with-different-unittypes2.svg
+
 # No matching language preference set
 svg/W3C-SVG-1.1/struct-cond-02-t.svg
 # The pixel output shows two broken images instead of the sunset.
diff --git a/LayoutTests/platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.checksum b/LayoutTests/platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.checksum
new file mode 100644 (file)
index 0000000..d69a371
--- /dev/null
@@ -0,0 +1 @@
+853de00567d121bea0b7bece66a5d61c
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.png b/LayoutTests/platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.png
new file mode 100644 (file)
index 0000000..f28241e
Binary files /dev/null and b/LayoutTests/platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.txt b/LayoutTests/platform/gtk/fast/backgrounds/animated-svg-as-mask-expected.txt
new file mode 100644 (file)
index 0000000..27e968d
--- /dev/null
@@ -0,0 +1,9 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {DIV} at (0,0) size 800x600 [bgcolor=#00FF00]
+    RenderText {#text} at (0,0) size 4x19
+      text run at (0,0) width 4: " "
diff --git a/LayoutTests/platform/gtk/fast/backgrounds/svg-as-mask-expected.checksum b/LayoutTests/platform/gtk/fast/backgrounds/svg-as-mask-expected.checksum
new file mode 100644 (file)
index 0000000..d69a371
--- /dev/null
@@ -0,0 +1 @@
+853de00567d121bea0b7bece66a5d61c
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/fast/backgrounds/svg-as-mask-expected.png b/LayoutTests/platform/gtk/fast/backgrounds/svg-as-mask-expected.png
new file mode 100644 (file)
index 0000000..f28241e
Binary files /dev/null and b/LayoutTests/platform/gtk/fast/backgrounds/svg-as-mask-expected.png differ
diff --git a/LayoutTests/platform/gtk/fast/backgrounds/svg-as-mask-expected.txt b/LayoutTests/platform/gtk/fast/backgrounds/svg-as-mask-expected.txt
new file mode 100644 (file)
index 0000000..27e968d
--- /dev/null
@@ -0,0 +1,9 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {DIV} at (0,0) size 800x600 [bgcolor=#00FF00]
+    RenderText {#text} at (0,0) size 4x19
+      text run at (0,0) width 4: " "
index abab1fe..83ccd3a 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-example-01-b-expected.png and b/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-example-01-b-expected.png differ
index 652054d..9ac8ccf 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png and b/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-offset-01-b-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.checksum b/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.checksum
new file mode 100644 (file)
index 0000000..c624b3a
--- /dev/null
@@ -0,0 +1 @@
+685e007d326b8629bb799b22b890f98d
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.png b/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.png
new file mode 100644 (file)
index 0000000..b4bae42
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt b/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt
new file mode 100644 (file)
index 0000000..cfcf7ff
--- /dev/null
@@ -0,0 +1,103 @@
+layer at (0,0) size 480x360
+  RenderView at (0,0) size 480x360
+layer at (0,0) size 480x360
+  RenderSVGRoot {svg} at (0,0) size 480x360
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+    RenderSVGContainer {g} at (59,28) size 362x268
+      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+        RenderSVGResourceFilter {filter} [id="turbneg1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.20" numOctaves="1" stitchTiles="0"]
+        RenderSVGResourceFilter {filter} [id="turbneg2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.50" numOctaves="1" stitchTiles="0"]
+        RenderSVGResourceFilter {filter} [id="turbneg3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-0.80" numOctaves="1" stitchTiles="0"]
+        RenderSVGResourceFilter {filter} [id="turbzero"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.00" numOctaves="1" stitchTiles="0"]
+        RenderSVGResourceFilter {filter} [id="turbpos1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.20" numOctaves="1" stitchTiles="0"]
+        RenderSVGResourceFilter {filter} [id="turbpos2"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="0.50" numOctaves="1" stitchTiles="0"]
+        RenderSVGResourceFilter {filter} [id="turbpos3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="1.50" numOctaves="1" stitchTiles="0"]
+        RenderSVGResourceFilter {filter} [id="turbneg4"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.00" numOctaves="1" stitchTiles="0"]
+        RenderSVGResourceFilter {filter} [id="turbneg5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-1.50" numOctaves="1" stitchTiles="0"]
+        RenderSVGResourceFilter {filter} [id="turbneg6"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.00" numOctaves="1" stitchTiles="0"]
+        RenderSVGResourceFilter {filter} [id="turbneg7"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+          [feTurbulence type="TURBULANCE" baseFrequency="0.01, 0.01" seed="-2.60" numOctaves="1" stitchTiles="0"]
+      RenderSVGText {text} at (141,28) size 198x25 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 198x25
+          chunk 1 (middle anchor) text run 1 at (141.89,48.00) startOffset 0 endOffset 1 width 6.67: "f"
+          chunk 1 (middle anchor) text run 2 at (148.20,48.00) startOffset 1 endOffset 3 width 28.01: "eT"
+          chunk 1 (middle anchor) text run 3 at (174.02,48.00) startOffset 3 endOffset 17 width 164.09: "urbulence seed"
+      RenderSVGContainer {g} at (59,74) size 362x222 [transform={m=((1.00,0.00)(0.00,1.00)) t=(65.00,80.00)}]
+        RenderSVGPath {rect} at (65,80) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+          [filter="turbneg3"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
+        RenderSVGText {text} at (9,65) size 32x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 32x19
+            chunk 1 (middle anchor) text run 1 at (9.49,80.00) startOffset 0 endOffset 4 width 31.01: "-0.8"
+        RenderSVGPath {rect} at (115,80) size 50x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,0.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+          [filter="turbneg2"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
+        RenderSVGText {text} at (59,65) size 32x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 32x19
+            chunk 1 (middle anchor) text run 1 at (59.49,80.00) startOffset 0 endOffset 4 width 31.01: "-0.5"
+        RenderSVGPath {rect} at (165,80) size 50x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,0.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+          [filter="turbneg1"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
+        RenderSVGText {text} at (109,65) size 32x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 32x19
+            chunk 1 (middle anchor) text run 1 at (109.49,80.00) startOffset 0 endOffset 4 width 31.01: "-0.2"
+        RenderSVGPath {rect} at (215,80) size 50x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,0.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+          [filter="turbzero"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
+        RenderSVGText {text} at (169,65) size 12x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 12x19
+            chunk 1 (middle anchor) text run 1 at (170.00,80.00) startOffset 0 endOffset 1 width 10.01: "0"
+        RenderSVGPath {rect} at (265,80) size 50x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(200.00,0.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+          [filter="turbpos1"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
+        RenderSVGText {text} at (212,65) size 26x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 26x19
+            chunk 1 (middle anchor) text run 1 at (212.49,80.00) startOffset 0 endOffset 3 width 25.02: "0.2"
+        RenderSVGPath {rect} at (315,80) size 50x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(250.00,0.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+          [filter="turbpos2"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
+        RenderSVGText {text} at (262,65) size 26x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 26x19
+            chunk 1 (middle anchor) text run 1 at (262.49,80.00) startOffset 0 endOffset 3 width 25.02: "0.5"
+        RenderSVGPath {rect} at (365,80) size 50x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,0.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+          [filter="turbpos3"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
+        RenderSVGText {text} at (313,65) size 24x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 24x19
+            chunk 1 (middle anchor) text run 1 at (313.16,80.00) startOffset 0 endOffset 1 width 10.01: "1"
+            chunk 1 (middle anchor) text run 2 at (321.83,80.00) startOffset 1 endOffset 3 width 15.01: ".5"
+        RenderSVGPath {rect} at (59,74) size 362x102 [stroke={[type=SOLID] [color=#000000]}] [x=-5.00] [y=-5.00] [width=360.00] [height=100.00]
+        RenderSVGPath {rect} at (65,200) size 50x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,120.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+          [filter="turbneg4"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
+        RenderSVGText {text} at (16,185) size 18x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 18x19
+            chunk 1 (middle anchor) text run 1 at (17.00,200.00) startOffset 0 endOffset 2 width 16.00: "-1"
+        RenderSVGPath {rect} at (115,200) size 50x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,120.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+          [filter="turbneg5"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
+        RenderSVGText {text} at (60,185) size 30x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 30x19
+            chunk 1 (middle anchor) text run 1 at (60.16,200.00) startOffset 0 endOffset 2 width 16.00: "-1"
+            chunk 1 (middle anchor) text run 2 at (74.83,200.00) startOffset 2 endOffset 4 width 15.01: ".5"
+        RenderSVGPath {rect} at (59,194) size 112x102 [stroke={[type=SOLID] [color=#000000]}] [x=-5.00] [y=115.00] [width=110.00] [height=100.00]
+        RenderSVGPath {rect} at (315,200) size 50x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(250.00,120.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+          [filter="turbneg6"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
+        RenderSVGText {text} at (266,185) size 18x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 18x19
+            chunk 1 (middle anchor) text run 1 at (267.00,200.00) startOffset 0 endOffset 2 width 16.00: "-2"
+        RenderSVGPath {rect} at (365,200) size 50x50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,120.00)}] [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+          [filter="turbneg7"] RenderSVGResourceFilter {filter} at (0,0) size 50x50
+        RenderSVGText {text} at (309,185) size 32x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 32x19
+            chunk 1 (middle anchor) text run 1 at (309.49,200.00) startOffset 0 endOffset 4 width 31.01: "-2.6"
+        RenderSVGPath {rect} at (309,194) size 112x102 [stroke={[type=SOLID] [color=#000000]}] [x=245.00] [y=115.00] [width=110.00] [height=100.00]
+    RenderSVGContainer {g} at (10,314) size 227x33
+      RenderSVGText {text} at (10,314) size 227x33 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 227x33
+          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 2 width 40.90: "$R"
+          chunk 1 text run 2 at (50.51,340.00) startOffset 2 endOffset 3 width 17.79: "e"
+          chunk 1 text run 3 at (67.82,340.00) startOffset 3 endOffset 12 width 117.38: "vision: 1"
+          chunk 1 text run 4 at (182.83,340.00) startOffset 12 endOffset 16 width 53.38: ".7 $"
+    RenderSVGPath {rect} at (0,0) size 480x360 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
index 391f70d..82428d9 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png and b/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-intro-01-f-expected.png differ
index e1227b5..1162114 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png and b/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png differ
index 8451744..be13ff4 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-path-01-b-expected.png and b/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-path-01-b-expected.png differ
index 3ad861d..39b9484 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-path-04-b-expected.png and b/LayoutTests/platform/gtk/svg/W3C-SVG-1.1/masking-path-04-b-expected.png differ
index 79b06b7..605a1ac 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/batik/masking/maskRegions-expected.png and b/LayoutTests/platform/gtk/svg/batik/masking/maskRegions-expected.png differ
index 515e0fa..b8418d9 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/batik/text/textEffect2-expected.png and b/LayoutTests/platform/gtk/svg/batik/text/textEffect2-expected.png differ
index 77184ca..88c6cfd 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-expected.png differ
index 206ad50..907381a 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-objectBoundingBox-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-objectBoundingBox-expected.png differ
index 206ad50..907381a 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-userSpaceOnUse-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-in-mask-userSpaceOnUse-expected.png differ
index 9551224..01ef153 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-child-clipped-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-child-clipped-expected.png differ
index 9551224..12e75b8 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-childs-clipped-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-childs-clipped-expected.png differ
index 9551224..f5513d7 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-evenodd-twice-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-evenodd-twice-expected.png differ
index 9551224..2275bb7 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-expected.png differ
index 9551224..f28241e 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-no-content-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-no-content-expected.png differ
index 9551224..465c944 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-nonzero-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-clipped-nonzero-expected.png differ
index 9551224..795f7a9 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-evenodd-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-evenodd-expected.png differ
index 9551224..9247b1c 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-evenodd-nonzero-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-evenodd-nonzero-expected.png differ
index 9551224..f6be4de 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-nonzero-evenodd-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-nonzero-evenodd-expected.png differ
index 9551224..9416531 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-nonzero-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-nonzero-expected.png differ
index a7df2c3..d41d771 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-pixelation-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-pixelation-expected.png differ
index 9551224..3858b52 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-text-and-shape-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-text-and-shape-expected.png differ
index 9551224..4cd8c2f 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-text-and-stroke-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-text-and-stroke-expected.png differ
index 9551224..8659297 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-text-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-text-expected.png differ
index 867ee6c..4207254 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child2-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child2-expected.png differ
index 867ee6c..4207254 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child3-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child3-expected.png differ
index 867ee6c..4207254 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child4-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-use-as-child4-expected.png differ
index 9551224..13bb4eb 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-with-different-unittypes-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-with-different-unittypes-expected.png differ
index 9551224..90cc9b8 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-with-different-unittypes2-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-with-different-unittypes2-expected.png differ
index 9551224..bfc1710 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/clip-path-with-text-clipped-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/clip-path-with-text-clipped-expected.png differ
index 062a141..8205c09 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-different-unitTypes-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-different-unitTypes-expected.png differ
index 062a141..8635c46 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-expected.png differ
index 27ba5b6..aced0fc 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-panning-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/deep-nested-clip-in-mask-panning-expected.png differ
index 77184ca..88c6cfd 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-image-based-clipping-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-image-based-clipping-expected.png differ
index 77184ca..88c6cfd 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-path-and-image-based-clipping-expected.png differ
index 77184ca..88c6cfd 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-path-based-clipping-expected.png and b/LayoutTests/platform/gtk/svg/clip-path/nested-clip-in-mask-path-based-clipping-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/css/circle-in-mask-with-shadow-expected.checksum b/LayoutTests/platform/gtk/svg/css/circle-in-mask-with-shadow-expected.checksum
new file mode 100644 (file)
index 0000000..b0d349d
--- /dev/null
@@ -0,0 +1 @@
+39cbc3a48a7968254b7675aa9780db28
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/css/circle-in-mask-with-shadow-expected.png b/LayoutTests/platform/gtk/svg/css/circle-in-mask-with-shadow-expected.png
new file mode 100644 (file)
index 0000000..9107592
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/css/circle-in-mask-with-shadow-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/css/circle-in-mask-with-shadow-expected.txt b/LayoutTests/platform/gtk/svg/css/circle-in-mask-with-shadow-expected.txt
new file mode 100644 (file)
index 0000000..031e25d
--- /dev/null
@@ -0,0 +1,20 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 450x500
+  RenderSVGRoot {svg} at (5,5) size 220x220
+    RenderSVGContainer {g} at (5,5) size 220x220
+      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+        RenderSVGResourceLinearGradient {linearGradient} [id="maskedGradient"] [gradientUnits=objectBoundingBox] [start=(0,0)] [end=(1,1)]
+          RenderSVGGradientStop {stop} [offset=0.00] [color=#0000FF]
+          RenderSVGGradientStop {stop} [offset=1.00] [color=#FF0000]
+        RenderSVGPath {rect} at (0,0) size 300x300 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [x=0.00] [y=0.00] [width=300.00] [height=300.00]
+        RenderSVGResourceMasker {mask} [id="mask_1"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
+          RenderSVGPath {circle} at (5,5) size 120x120 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=55.00] [cy=55.00] [r=50.00]
+          RenderSVGPath {circle} at (5,115) size 120x120 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=55.00] [cy=165.00] [r=50.00]
+          RenderSVGPath {circle} at (115,5) size 120x120 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=165.00] [cy=55.00] [r=50.00]
+          RenderSVGPath {circle} at (115,115) size 120x120 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=165.00] [cy=165.00] [r=50.00]
+      RenderSVGContainer {g} at (5,5) size 220x220
+        RenderSVGContainer {use} at (5,5) size 220x220
+          [masker="mask_1"] RenderSVGResourceMasker {mask} at (5,5) size 220x220
+          RenderSVGContainer {g} at (0,0) size 300x300
+            RenderSVGPath {rect} at (0,0) size 300x300 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [x=0.00] [y=0.00] [width=300.00] [height=300.00]
diff --git a/LayoutTests/platform/gtk/svg/css/clippath-with-shadow-expected.checksum b/LayoutTests/platform/gtk/svg/css/clippath-with-shadow-expected.checksum
new file mode 100644 (file)
index 0000000..215a511
--- /dev/null
@@ -0,0 +1 @@
+3aa16a092fe25416b039cd3ea92f1ead
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/css/clippath-with-shadow-expected.png b/LayoutTests/platform/gtk/svg/css/clippath-with-shadow-expected.png
new file mode 100644 (file)
index 0000000..4fd0d35
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/css/clippath-with-shadow-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/css/clippath-with-shadow-expected.txt b/LayoutTests/platform/gtk/svg/css/clippath-with-shadow-expected.txt
new file mode 100644 (file)
index 0000000..8f42f91
--- /dev/null
@@ -0,0 +1,12 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (0,0) size 200x200
+    RenderSVGPath {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=200.00] [height=200.00]
+    RenderSVGPath {rect} at (0,0) size 200x200 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-200.00,0.00)}] [x=200.00] [y=0.00] [width=200.00] [height=200.00]
+    RenderSVGResourceClipper {clipPath} [id="clip"] [clipPathUnits=userSpaceOnUse]
+      RenderSVGContainer {use} at (0,0) size 210x210
+        RenderSVGContainer {g} at (0,0) size 210x210
+          RenderSVGPath {rect} at (0,0) size 210x210 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-200.00,0.00)}] [x=200.00] [y=0.00] [width=200.00] [height=200.00]
+    RenderSVGPath {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=400.00] [height=200.00]
+      [clipPath="clip"] RenderSVGResourceClipper {clipPath} at (0,0) size 200x200
diff --git a/LayoutTests/platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.checksum b/LayoutTests/platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.checksum
new file mode 100644 (file)
index 0000000..b4c21e4
--- /dev/null
@@ -0,0 +1 @@
+7f180b04235f321e8b3eb5fbde8343cb
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.png b/LayoutTests/platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.png
new file mode 100644 (file)
index 0000000..3e12d3f
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.txt b/LayoutTests/platform/gtk/svg/custom/absolute-sized-content-with-resources-expected.txt
new file mode 100644 (file)
index 0000000..fda6ace
--- /dev/null
@@ -0,0 +1,24 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x461
+  RenderBlock {html} at (0,0) size 800x461
+    RenderBody {body} at (8,16) size 784x437
+      RenderBlock {p} at (0,0) size 784x19
+        RenderText {#text} at (0,0) size 763x19
+          text run at (0,0) width 763: "The svg area contained in the div element (red box), should contain four masked circles, that do not pixelate after resizing"
+      RenderBlock {div} at (0,35) size 402x402 [border: (1px solid #FF0000)]
+        RenderSVGRoot {svg} at (42,118) size 334x268
+          RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+            RenderSVGResourceLinearGradient {linearGradient} [id="gradient"] [gradientUnits=objectBoundingBox] [start=(0,0)] [end=(1,1)]
+              RenderSVGGradientStop {stop} [offset=0.00] [color=#0000FF]
+              RenderSVGGradientStop {stop} [offset=1.00] [color=#FF0000]
+            RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
+              RenderSVGPath {circle} at (9,52) size 167x200 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=25.00] [cy=20.00] [r=20.00]
+              RenderSVGPath {circle} at (9,252) size 167x200 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=25.00] [cy=60.00] [r=20.00]
+              RenderSVGPath {circle} at (242,52) size 167x200 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=75.00] [cy=20.00] [r=20.00]
+              RenderSVGPath {circle} at (242,252) size 167x200 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=75.00] [cy=60.00] [r=20.00]
+          RenderSVGContainer {g} at (42,118) size 334x268
+            RenderSVGPath {rect} at (42,118) size 334x268 [fill={[type=LINEAR-GRADIENT] [id="gradient"]}] [x=0.00] [y=0.00] [width=100.00] [height=80.00]
+              [masker="mask"] RenderSVGResourceMasker {mask} at (25,20) size 50x40
+        RenderText {#text} at (0,0) size 0x0
+caret: position 124 of child 0 {#text} of child 1 {p} of body
index 40f9a94..5f93646 100644 (file)
@@ -1,9 +1,9 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (190,180) size 420x240 [start marker=mark] [middle marker=mark] [end marker=mark]
+  RenderSVGRoot {svg} at (189,180) size 421x240 [start marker=mark] [middle marker=mark] [end marker=mark]
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0 [start marker=mark] [middle marker=mark] [end marker=mark]
       RenderSVGResourceMarker {marker} [id="mark"] [markerUnits=strokeWidth] [ref at (4,4)] [angle=0.00]
         RenderSVGPath {circle} at (400,300) size 90x90 [stroke={[type=SOLID] [color=#FF0000] [line cap=ROUND]}] [start marker=mark] [middle marker=mark] [end marker=mark] [cx=4.00] [cy=4.00] [r=3.00]
-    RenderSVGPath {path} at (190,180) size 420x120 [stroke={[type=SOLID] [color=#000000] [line cap=ROUND]}] [fill={[type=SOLID] [color=#000000]}] [start marker=mark] [middle marker=mark] [end marker=mark] [data="M -5 -2 L 0 -2 L 5 -2"]
-    RenderSVGPath {path} at (190,300) size 420x120 [stroke={[type=SOLID] [color=#000000] [line cap=ROUND]}] [fill={[type=SOLID] [color=#000000]}] [start marker=mark] [middle marker=mark] [end marker=mark] [data="M -5 2 L 0 2 L 5 2"]
+    RenderSVGPath {path} at (189,180) size 421x120 [stroke={[type=SOLID] [color=#000000] [line cap=ROUND]}] [fill={[type=SOLID] [color=#000000]}] [start marker=mark] [middle marker=mark] [end marker=mark] [data="M -5 -2 L 0 -2 L 5 -2"]
+    RenderSVGPath {path} at (189,300) size 421x120 [stroke={[type=SOLID] [color=#000000] [line cap=ROUND]}] [fill={[type=SOLID] [color=#000000]}] [start marker=mark] [middle marker=mark] [end marker=mark] [data="M -5 2 L 0 2 L 5 2"]
index af4acc7..7c258d0 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/custom/js-late-mask-and-object-creation-expected.png and b/LayoutTests/platform/gtk/svg/custom/js-late-mask-and-object-creation-expected.png differ
index af4acc7..7c258d0 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/custom/js-late-mask-creation-expected.png and b/LayoutTests/platform/gtk/svg/custom/js-late-mask-creation-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/custom/marker-child-changes-css-expected.checksum b/LayoutTests/platform/gtk/svg/custom/marker-child-changes-css-expected.checksum
new file mode 100644 (file)
index 0000000..5105b24
--- /dev/null
@@ -0,0 +1 @@
+c6c9c3bb0b0b0f86b012542c6db496c9
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/custom/marker-child-changes-css-expected.png b/LayoutTests/platform/gtk/svg/custom/marker-child-changes-css-expected.png
new file mode 100644 (file)
index 0000000..1126338
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/custom/marker-child-changes-css-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/custom/marker-child-changes-css-expected.txt b/LayoutTests/platform/gtk/svg/custom/marker-child-changes-css-expected.txt
new file mode 100644 (file)
index 0000000..51f1f1a
--- /dev/null
@@ -0,0 +1,13 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (122,127) size 66x66
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderSVGResourceMarker {marker} [id="markerStart"] [markerUnits=strokeWidth] [ref at (5,5)] [angle=0.00]
+        RenderSVGPath {rect} at (0,0) size 2x2 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=10.00] [height=10.00]
+      RenderSVGResourceMarker {marker} [id="markerMiddle"] [markerUnits=strokeWidth] [ref at (5,5)] [angle=0.00]
+        RenderSVGPath {circle} at (0,0) size 2x2 [fill={[type=SOLID] [color=#008000]}] [cx=5.00] [cy=5.00] [r=5.00]
+      RenderSVGResourceMarker {marker} [id="markerEnd"] [markerUnits=strokeWidth] [ref at (5,5)] [angle=0.00]
+        RenderSVGPath {path} at (0,0) size 2x2 [fill={[type=SOLID] [color=#0000FF]}] [data="M 5 0 L 10 10 L 0 10 Z"]
+    RenderSVGContainer {g} at (122,127) size 66x66
+      RenderSVGPath {path} at (122,127) size 66x66 [stroke={[type=SOLID] [color=#000000] [stroke width=8.00]}] [start marker=markerStart] [middle marker=markerMiddle] [end marker=markerEnd] [data="M 130 135 L 180 135 L 180 185"]
index 780bcb1..bf56a6d 100644 (file)
@@ -1 +1 @@
-542e40d253cf19bec2d96a95886d3cd5
\ No newline at end of file
+b2dce847408435a9016954a9e86fc30d
\ No newline at end of file
index af4acc7..7c258d0 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/custom/mask-changes-expected.png and b/LayoutTests/platform/gtk/svg/custom/mask-changes-expected.png differ
index af4acc7..7c258d0 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/custom/mask-child-changes-expected.png and b/LayoutTests/platform/gtk/svg/custom/mask-child-changes-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/custom/mask-colorspace-expected.checksum b/LayoutTests/platform/gtk/svg/custom/mask-colorspace-expected.checksum
new file mode 100644 (file)
index 0000000..6c5003b
--- /dev/null
@@ -0,0 +1 @@
+6af89987012834718872b760d89a0431
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/custom/mask-colorspace-expected.png b/LayoutTests/platform/gtk/svg/custom/mask-colorspace-expected.png
new file mode 100644 (file)
index 0000000..cff8326
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/custom/mask-colorspace-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/custom/mask-colorspace-expected.txt b/LayoutTests/platform/gtk/svg/custom/mask-colorspace-expected.txt
new file mode 100644 (file)
index 0000000..29c0226
--- /dev/null
@@ -0,0 +1,12 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (20,20) size 230x100
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
+        RenderSVGPath {rect} at (0,0) size 140x140 [fill={[type=SOLID] [color=#00E600]}] [x=0.00] [y=0.00] [width=140.00] [height=140.00]
+        RenderSVGPath {circle} at (30,30) size 80x80 [fill={[type=SOLID] [color=#00FD00]}] [cx=70.00] [cy=70.00] [r=40.00]
+    RenderSVGPath {rect} at (20,20) size 100x100 [fill={[type=SOLID] [color=#000000]}] [x=20.00] [y=20.00] [width=100.00] [height=100.00]
+      [masker="mask"] RenderSVGResourceMasker {mask} at (10,10) size 120x120
+    RenderSVGPath {rect} at (150,20) size 100x100 [fill={[type=SOLID] [color=#6F6F6F]}] [x=150.00] [y=20.00] [width=100.00] [height=100.00]
+    RenderSVGPath {circle} at (160,30) size 80x80 [fill={[type=SOLID] [color=#4C4C4C]}] [cx=200.00] [cy=70.00] [r=40.00]
index 593fe93..c424406 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/custom/mask-inside-defs-expected.png and b/LayoutTests/platform/gtk/svg/custom/mask-inside-defs-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/custom/mask-on-multiple-objects-expected.checksum b/LayoutTests/platform/gtk/svg/custom/mask-on-multiple-objects-expected.checksum
new file mode 100644 (file)
index 0000000..2f88fb1
--- /dev/null
@@ -0,0 +1 @@
+913b1a6d7a7025d71cd16497fadb0b53
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/custom/mask-on-multiple-objects-expected.png b/LayoutTests/platform/gtk/svg/custom/mask-on-multiple-objects-expected.png
new file mode 100644 (file)
index 0000000..eb2b8dc
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/custom/mask-on-multiple-objects-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/custom/mask-on-multiple-objects-expected.txt b/LayoutTests/platform/gtk/svg/custom/mask-on-multiple-objects-expected.txt
new file mode 100644 (file)
index 0000000..f7ad97f
--- /dev/null
@@ -0,0 +1,11 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (20,20) size 220x100
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=objectBoundingBox] [maskContentUnits=objectBoundingBox]
+        RenderSVGPath {circle} at (0,0) size 1x1 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=0.50] [cy=0.50] [r=0.50]
+    RenderSVGPath {rect} at (20,20) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=20.00] [y=20.00] [width=100.00] [height=100.00]
+      [masker="mask"] RenderSVGResourceMasker {mask} at (20,20) size 100x100
+    RenderSVGPath {rect} at (140,50) size 100x40 [fill={[type=SOLID] [color=#008000]}] [x=140.00] [y=50.00] [width=100.00] [height=40.00]
+      [masker="mask"] RenderSVGResourceMasker {mask} at (140,50) size 100x40
index 0b5ed1c..5e816a2 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/custom/mask-with-all-units-expected.png and b/LayoutTests/platform/gtk/svg/custom/mask-with-all-units-expected.png differ
index 6d3a216..7937ffc 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/custom/mask-with-default-value-expected.png and b/LayoutTests/platform/gtk/svg/custom/mask-with-default-value-expected.png differ
index e64defa..9e806bd 100644 (file)
@@ -1,9 +1,9 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (190,210) size 420x210
+  RenderSVGRoot {svg} at (189,210) size 421x210
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGResourceMarker {marker} [id="mark"] [markerUnits=strokeWidth] [ref at (4,4)] [angle=0.00]
         RenderSVGPath {circle} at (400,300) size 90x90 [stroke={[type=SOLID] [color=#FF0000] [line cap=ROUND]}] [cx=4.00] [cy=4.00] [r=3.00]
-    RenderSVGPath {path} at (220,210) size 360x60 [stroke={[type=SOLID] [color=#000000] [line cap=ROUND]}] [fill={[type=SOLID] [color=#000000]}] [data="M -5 -2 L 0 -2 L 5 -2"]
-    RenderSVGPath {path} at (190,300) size 420x120 [stroke={[type=SOLID] [color=#000000] [line cap=ROUND]}] [fill={[type=SOLID] [color=#000000]}] [start marker=mark] [middle marker=mark] [end marker=mark] [data="M -5 2 L 0 2 L 5 2"]
+    RenderSVGPath {path} at (219,210) size 361x60 [stroke={[type=SOLID] [color=#000000] [line cap=ROUND]}] [fill={[type=SOLID] [color=#000000]}] [data="M -5 -2 L 0 -2 L 5 -2"]
+    RenderSVGPath {path} at (189,300) size 421x120 [stroke={[type=SOLID] [color=#000000] [line cap=ROUND]}] [fill={[type=SOLID] [color=#000000]}] [start marker=mark] [middle marker=mark] [end marker=mark] [data="M -5 2 L 0 2 L 5 2"]
diff --git a/LayoutTests/platform/gtk/svg/custom/recursive-mask-expected.checksum b/LayoutTests/platform/gtk/svg/custom/recursive-mask-expected.checksum
new file mode 100644 (file)
index 0000000..3293e28
--- /dev/null
@@ -0,0 +1 @@
+540ba91fb4ce5aa63bcfa829e345b7d3
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/custom/recursive-mask-expected.png b/LayoutTests/platform/gtk/svg/custom/recursive-mask-expected.png
new file mode 100644 (file)
index 0000000..56c4778
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/custom/recursive-mask-expected.png differ
index ea9b503..783d8ec 100644 (file)
@@ -1,38 +1,38 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (0,0) size 350x205
+  RenderSVGRoot {svg} at (0,0) size 350x204
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGResourceMasker {mask} [id="mask1"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
-        RenderSVGPath {rect} at (0,0) size 50x50 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.00,0.00 L50.00,0.00 L50.00,50.00 L0.00,50.00 Z"]
+        RenderSVGPath {rect} at (0,0) size 50x50 [fill={[type=SOLID] [color=#FFFFFF]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
       RenderSVGResourceMasker {mask} [id="mask2"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
-        RenderSVGPath {rect} at (100,0) size 50x50 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M100.00,0.00 L150.00,0.00 L150.00,50.00 L100.00,50.00 Z"]
+        RenderSVGPath {rect} at (100,0) size 50x50 [fill={[type=SOLID] [color=#FFFFFF]}] [x=100.00] [y=0.00] [width=50.00] [height=50.00]
           [masker="mask2"] RenderSVGResourceMasker {mask} at (100,0) size 50x50
       RenderSVGResourceMasker {mask} [id="mask3"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
-        RenderSVGPath {rect} at (0,0) size 0x0 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.00,100.00 L50.00,100.00 L50.00,150.00 L0.00,150.00 Z"]
+        RenderSVGPath {rect} at (0,0) size 0x0 [fill={[type=SOLID] [color=#FFFFFF]}] [x=0.00] [y=100.00] [width=50.00] [height=50.00]
           [masker="mask1"] RenderSVGResourceMasker {mask} at (0,0) size 0x0
-        RenderSVGPath {rect} at (0,0) size 0x0 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M100.00,100.00 L150.00,100.00 L150.00,150.00 L100.00,150.00 Z"]
+        RenderSVGPath {rect} at (0,0) size 0x0 [fill={[type=SOLID] [color=#FFFFFF]}] [x=100.00] [y=100.00] [width=50.00] [height=50.00]
           [masker="mask2"] RenderSVGResourceMasker {mask} at (0,0) size 0x0
-      RenderSVGPath {rect} at (0,100) size 50x50 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.00,100.00 L50.00,100.00 L50.00,150.00 L0.00,150.00 Z"]
+      RenderSVGPath {rect} at (0,100) size 50x50 [fill={[type=SOLID] [color=#FFFFFF]}] [x=0.00] [y=100.00] [width=50.00] [height=50.00]
         [masker="mask4"] RenderSVGResourceMasker {mask} at (0,100) size 50x50
       RenderSVGResourceMasker {mask} [id="mask4"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
         RenderSVGContainer {use} at (0,100) size 50x50
           RenderSVGContainer {g} at (0,100) size 50x50
-            RenderSVGPath {rect} at (0,100) size 50x50 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.00,100.00 L50.00,100.00 L50.00,150.00 L0.00,150.00 Z"]
+            RenderSVGPath {rect} at (0,100) size 50x50 [fill={[type=SOLID] [color=#FFFFFF]}] [x=0.00] [y=100.00] [width=50.00] [height=50.00]
               [masker="mask4"] RenderSVGResourceMasker {mask} at (0,100) size 50x50
-    RenderSVGPath {rect} at (0,0) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [data="M0.00,0.00 L100.00,0.00 L100.00,100.00 L0.00,100.00 Z"]
+    RenderSVGPath {rect} at (0,0) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=0.00] [width=100.00] [height=100.00]
       [masker="mask1"] RenderSVGResourceMasker {mask} at (0,0) size 50x50
-    RenderSVGPath {rect} at (100,0) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [data="M100.00,0.00 L200.00,0.00 L200.00,100.00 L100.00,100.00 Z"]
+    RenderSVGPath {rect} at (100,0) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=100.00] [y=0.00] [width=100.00] [height=100.00]
       [masker="mask2"] RenderSVGResourceMasker {mask} at (100,0) size 50x50
-    RenderSVGPath {rect} at (0,0) size 0x0 [fill={[type=SOLID] [color=#0000FF]}] [data="M100.00,100.00 L200.00,100.00 L200.00,200.00 L100.00,200.00 Z"]
+    RenderSVGPath {rect} at (0,0) size 0x0 [fill={[type=SOLID] [color=#0000FF]}] [x=100.00] [y=100.00] [width=100.00] [height=100.00]
       [masker="mask3"] RenderSVGResourceMasker {mask} at (0,0) size 0x0
-    RenderSVGPath {rect} at (0,100) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [data="M0.00,100.00 L100.00,100.00 L100.00,200.00 L0.00,200.00 Z"]
+    RenderSVGPath {rect} at (0,100) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=100.00] [width=100.00] [height=100.00]
       [masker="mask4"] RenderSVGResourceMasker {mask} at (0,100) size 50x50
-    RenderSVGPath {line} at (174,0) size 2x150 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [data="M175.00,0.00 L175.00,150.00"]
-    RenderSVGText {text} at (29,185) size 292x20 contains 1 chunk(s)
-      RenderSVGInlineText {#text} at (0,0) size 292x20
+    RenderSVGPath {line} at (174,0) size 2x150 [stroke={[type=SOLID] [color=#FF0000]}] [fill={[type=SOLID] [color=#000000]}] [x1=175.00] [y1=0.00] [x2=175.00] [y2=150.00]
+    RenderSVGText {text} at (29,185) size 292x19 contains 1 chunk(s)
+      RenderSVGInlineText {#text} at (0,0) size 292x19
         chunk 1 (middle anchor) text run 1 at (29.00,200.00) startOffset 0 endOffset 48 width 292.00: "Both sides of the red line should look identical"
     RenderSVGContainer {g} at (200,0) size 150x150 [transform={m=((1.00,0.00)(0.00,1.00)) t=(200.00,0.00)}]
-      RenderSVGPath {rect} at (200,0) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [data="M0.00,0.00 L50.00,0.00 L50.00,50.00 L0.00,50.00 Z"]
-      RenderSVGPath {rect} at (300,0) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [data="M100.00,0.00 L150.00,0.00 L150.00,50.00 L100.00,50.00 Z"]
-      RenderSVGPath {rect} at (200,100) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [data="M0.00,100.00 L50.00,100.00 L50.00,150.00 L0.00,150.00 Z"]
+      RenderSVGPath {rect} at (200,0) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (300,0) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=100.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (200,100) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=0.00] [y=100.00] [width=50.00] [height=50.00]
diff --git a/LayoutTests/platform/gtk/svg/custom/use-on-clip-path-with-transformation-expected.checksum b/LayoutTests/platform/gtk/svg/custom/use-on-clip-path-with-transformation-expected.checksum
new file mode 100644 (file)
index 0000000..cc2f6bb
--- /dev/null
@@ -0,0 +1 @@
+378365438f98bb8a86bcfd7a1a13d87c
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/custom/use-on-clip-path-with-transformation-expected.png b/LayoutTests/platform/gtk/svg/custom/use-on-clip-path-with-transformation-expected.png
new file mode 100644 (file)
index 0000000..2fcf68d
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/custom/use-on-clip-path-with-transformation-expected.png differ
index f90aef6..44a10e4 100644 (file)
@@ -1,12 +1,12 @@
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
 layer at (0,0) size 800x600
-  RenderSVGRoot {svg} at (0,0) size 800x600
+  RenderSVGRoot {svg} at (107,107) size 86x86
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGPath {rect} at (0,0) size 1x1 [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00 L0.20,0.00 L0.20,0.20 L0.00,0.20 Z"]
+      RenderSVGPath {rect} at (0,0) size 1x1 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=0.20] [height=0.20]
       RenderSVGResourceClipper {clipPath} [id="clip"] [clipPathUnits=objectBoundingBox]
         RenderSVGContainer {use} at (0,0) size 2x2 [transform={m=((0.71,0.71)(-0.71,0.71)) t=(0.50,-0.21)}]
           RenderSVGContainer {g} at (0,0) size 2x3 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.40,0.40)}]
-            RenderSVGPath {rect} at (0,0) size 2x3 [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00 L0.20,0.00 L0.20,0.20 L0.00,0.20 Z"]
-    RenderSVGPath {rect} at (120,120) size 60x60 [fill={[type=SOLID] [color=#008000]}] [data="M0.00,0.00 L300.00,0.00 L300.00,300.00 L0.00,300.00 Z"]
-      [clipPath="clip"] RenderSVGResourceClipper {clipPath} at (120,120) size 59.77x59.77
+            RenderSVGPath {rect} at (0,0) size 2x3 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=0.20] [height=0.20]
+    RenderSVGPath {rect} at (107,107) size 86x86 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=300.00] [height=300.00]
+      [clipPath="clip"] RenderSVGResourceClipper {clipPath} at (107.74,107.57) size 84.52x84.52
index 593fe93..c424406 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/custom/visibility-override-mask-expected.png and b/LayoutTests/platform/gtk/svg/custom/visibility-override-mask-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/filters/feGaussianBlur-expected.checksum b/LayoutTests/platform/gtk/svg/filters/feGaussianBlur-expected.checksum
new file mode 100644 (file)
index 0000000..8130c31
--- /dev/null
@@ -0,0 +1 @@
+b17bf2ccd2bc72158f4109a6463e7013
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/filters/feGaussianBlur-expected.png b/LayoutTests/platform/gtk/svg/filters/feGaussianBlur-expected.png
new file mode 100644 (file)
index 0000000..e101445
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/filters/feGaussianBlur-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/filters/feGaussianBlur-expected.txt b/LayoutTests/platform/gtk/svg/filters/feGaussianBlur-expected.txt
new file mode 100644 (file)
index 0000000..699138d
--- /dev/null
@@ -0,0 +1,75 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (2,2) size 491x191
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderSVGResourceFilter {filter} [id="0x0"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+        [feGaussianBlur stdDeviation="0.00, 0.00"]
+          [SourceGraphic]
+      RenderSVGResourceFilter {filter} [id="0x5"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+        [feGaussianBlur stdDeviation="0.00, 5.00"]
+          [SourceGraphic]
+      RenderSVGResourceFilter {filter} [id="5x0"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+        [feGaussianBlur stdDeviation="5.00, 0.00"]
+          [SourceGraphic]
+      RenderSVGResourceFilter {filter} [id="3x3"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+        [feGaussianBlur stdDeviation="3.00, 3.00"]
+          [SourceGraphic]
+      RenderSVGResourceFilter {filter} [id="1x6"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+        [feGaussianBlur stdDeviation="1.00, 6.00"]
+          [SourceGraphic]
+      RenderSVGResourceFilter {filter} [id="6x1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+        [feGaussianBlur stdDeviation="6.00, 1.00"]
+          [SourceGraphic]
+      RenderSVGResourceFilter {filter} [id="2x10"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+        [feGaussianBlur stdDeviation="2.00, 10.00"]
+          [SourceGraphic]
+      RenderSVGResourceFilter {filter} [id="1x1"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+        [feGaussianBlur stdDeviation="1.00, 1.00"]
+          [SourceGraphic]
+      RenderSVGResourceFilter {filter} [id="10x100"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+        [feGaussianBlur stdDeviation="10.00, 100.00"]
+          [SourceGraphic]
+      RenderSVGResourceFilter {filter} [id="15x15"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+        [feGaussianBlur stdDeviation="15.00, 15.00"]
+          [SourceGraphic]
+    RenderSVGContainer {g} at (2,2) size 91x91 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,10.00)}]
+      [filter="0x0"] RenderSVGResourceFilter {filter} at (-7.50,-7.50) size 90x90
+      RenderSVGPath {rect} at (10,10) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (35,35) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=25.00] [y=25.00] [width=50.00] [height=50.00]
+    RenderSVGContainer {g} at (102,2) size 91x91 [transform={m=((1.00,0.00)(0.00,1.00)) t=(110.00,10.00)}]
+      [filter="0x5"] RenderSVGResourceFilter {filter} at (-7.50,-7.50) size 90x90
+      RenderSVGPath {rect} at (110,10) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (135,35) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=25.00] [y=25.00] [width=50.00] [height=50.00]
+    RenderSVGContainer {g} at (202,2) size 91x91 [transform={m=((1.00,0.00)(0.00,1.00)) t=(210.00,10.00)}]
+      [filter="5x0"] RenderSVGResourceFilter {filter} at (-7.50,-7.50) size 90x90
+      RenderSVGPath {rect} at (210,10) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (235,35) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=25.00] [y=25.00] [width=50.00] [height=50.00]
+    RenderSVGContainer {g} at (302,2) size 91x91 [transform={m=((1.00,0.00)(0.00,1.00)) t=(310.00,10.00)}]
+      [filter="3x3"] RenderSVGResourceFilter {filter} at (-7.50,-7.50) size 90x90
+      RenderSVGPath {rect} at (310,10) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (335,35) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=25.00] [y=25.00] [width=50.00] [height=50.00]
+    RenderSVGContainer {g} at (402,2) size 91x91 [transform={m=((1.00,0.00)(0.00,1.00)) t=(410.00,10.00)}]
+      [filter="1x6"] RenderSVGResourceFilter {filter} at (-7.50,-7.50) size 90x90
+      RenderSVGPath {rect} at (410,10) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (435,35) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=25.00] [y=25.00] [width=50.00] [height=50.00]
+    RenderSVGContainer {g} at (2,102) size 91x91 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,110.00)}]
+      [filter="6x1"] RenderSVGResourceFilter {filter} at (-7.50,-7.50) size 90x90
+      RenderSVGPath {rect} at (10,110) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (35,135) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=25.00] [y=25.00] [width=50.00] [height=50.00]
+    RenderSVGContainer {g} at (102,102) size 91x91 [transform={m=((1.00,0.00)(0.00,1.00)) t=(110.00,110.00)}]
+      [filter="2x10"] RenderSVGResourceFilter {filter} at (-7.50,-7.50) size 90x90
+      RenderSVGPath {rect} at (110,110) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (135,135) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=25.00] [y=25.00] [width=50.00] [height=50.00]
+    RenderSVGContainer {g} at (202,102) size 91x91 [transform={m=((1.00,0.00)(0.00,1.00)) t=(210.00,110.00)}]
+      [filter="1x1"] RenderSVGResourceFilter {filter} at (-7.50,-7.50) size 90x90
+      RenderSVGPath {rect} at (210,110) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (235,135) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=25.00] [y=25.00] [width=50.00] [height=50.00]
+    RenderSVGContainer {g} at (302,102) size 91x91 [transform={m=((1.00,0.00)(0.00,1.00)) t=(310.00,110.00)}]
+      [filter="10x100"] RenderSVGResourceFilter {filter} at (-7.50,-7.50) size 90x90
+      RenderSVGPath {rect} at (310,110) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (335,135) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=25.00] [y=25.00] [width=50.00] [height=50.00]
+    RenderSVGContainer {g} at (402,102) size 91x91 [transform={m=((1.00,0.00)(0.00,1.00)) t=(410.00,110.00)}]
+      [filter="15x15"] RenderSVGResourceFilter {filter} at (-7.50,-7.50) size 90x90
+      RenderSVGPath {rect} at (410,110) size 50x50 [fill={[type=SOLID] [color=#FF0000]}] [x=0.00] [y=0.00] [width=50.00] [height=50.00]
+      RenderSVGPath {rect} at (435,135) size 50x50 [fill={[type=SOLID] [color=#0000FF]}] [x=25.00] [y=25.00] [width=50.00] [height=50.00]
diff --git a/LayoutTests/platform/gtk/svg/filters/filter-clip-expected.checksum b/LayoutTests/platform/gtk/svg/filters/filter-clip-expected.checksum
new file mode 100644 (file)
index 0000000..bd7dd9a
--- /dev/null
@@ -0,0 +1 @@
+26d71a762a6fc013753427c7568d7c8c
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/filters/filter-clip-expected.png b/LayoutTests/platform/gtk/svg/filters/filter-clip-expected.png
new file mode 100644 (file)
index 0000000..ae54860
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/filters/filter-clip-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/filters/filter-clip-expected.txt b/LayoutTests/platform/gtk/svg/filters/filter-clip-expected.txt
new file mode 100644 (file)
index 0000000..e29d76f
--- /dev/null
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (20,20) size 100x100
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
+        RenderSVGPath {rect} at (0,0) size 140x140 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=140.00] [height=140.00]
+        RenderSVGPath {circle} at (30,30) size 80x80 [fill={[type=SOLID] [color=#FFFF00]}] [cx=70.00] [cy=70.00] [r=40.00]
+      RenderSVGResourceFilter {filter} [id="blur"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
+        [feGaussianBlur stdDeviation="10.00, 10.00"]
+          [SourceGraphic]
+      RenderSVGResourceClipper {clipPath} [id="clip"] [clipPathUnits=userSpaceOnUse]
+        RenderSVGPath {circle} at (20,20) size 100x100 [fill={[type=SOLID] [color=#000000]}] [cx=70.00] [cy=70.00] [r=50.00]
+    RenderSVGPath {rect} at (20,20) size 100x100 [fill={[type=SOLID] [color=#008000]}] [x=20.00] [y=20.00] [width=100.00] [height=100.00]
+      [masker="mask"] RenderSVGResourceMasker {mask} at (10,10) size 120x120
+      [clipPath="clip"] RenderSVGResourceClipper {clipPath} at (20,20) size 100x100
+      [filter="blur"] RenderSVGResourceFilter {filter} at (0,0) size 140x140
diff --git a/LayoutTests/platform/gtk/svg/filters/shadow-on-filter-expected.checksum b/LayoutTests/platform/gtk/svg/filters/shadow-on-filter-expected.checksum
new file mode 100644 (file)
index 0000000..9d6e317
--- /dev/null
@@ -0,0 +1 @@
+53e58b2ea3feca5795794ce29a43499b
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/filters/shadow-on-filter-expected.png b/LayoutTests/platform/gtk/svg/filters/shadow-on-filter-expected.png
new file mode 100644 (file)
index 0000000..81493c5
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/filters/shadow-on-filter-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/filters/shadow-on-filter-expected.txt b/LayoutTests/platform/gtk/svg/filters/shadow-on-filter-expected.txt
new file mode 100644 (file)
index 0000000..88a9ef7
--- /dev/null
@@ -0,0 +1,12 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (50,50) size 480x480
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
+        [feGaussianBlur stdDeviation="0.01, 0.01"]
+          [feComposite operation="OVER"]
+            [feFlood flood-color="#FF0000" flood-opacity="1.00"]
+            [feFlood flood-color="#008000" flood-opacity="1.00"]
+    RenderSVGPath {rect} at (50,50) size 480x480 [fill={[type=SOLID] [color=#008000]}] [x=200.00] [y=200.00] [width=300.00] [height=300.00]
+      [filter="filter"] RenderSVGResourceFilter {filter} at (50,50) size 480x480
diff --git a/LayoutTests/platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.checksum b/LayoutTests/platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.checksum
new file mode 100644 (file)
index 0000000..322fb56
--- /dev/null
@@ -0,0 +1 @@
+917f09d0750213358b374b389344d1fd
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.png b/LayoutTests/platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.png
new file mode 100644 (file)
index 0000000..ee64afa
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.txt b/LayoutTests/platform/gtk/svg/filters/shadow-on-rect-with-filter-expected.txt
new file mode 100644 (file)
index 0000000..5806e0a
--- /dev/null
@@ -0,0 +1,12 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (37,37) size 493x493
+    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderSVGResourceFilter {filter} [id="filter"] [filterUnits=objectBoundingBox] [primitiveUnits=objectBoundingBox]
+        [feGaussianBlur stdDeviation="0.01, 0.01"]
+          [feComposite operation="OVER"]
+            [feFlood flood-color="#FF0000" flood-opacity="1.00"]
+            [feFlood flood-color="#008000" flood-opacity="1.00"]
+    RenderSVGPath {rect} at (24,24) size 506x506 [fill={[type=SOLID] [color=#008000]}] [x=200.00] [y=200.00] [width=300.00] [height=300.00]
+      [filter="filter"] RenderSVGResourceFilter {filter} at (50,50) size 480x480
index d7b51f5..67d4255 100644 (file)
@@ -1 +1 @@
-de53db49a9877b76da7f8276617672fe
\ No newline at end of file
+aba9de302c94edc2cb0aee08399c120d
\ No newline at end of file
index a6fc98f..c24ead4 100644 (file)
Binary files a/LayoutTests/platform/gtk/svg/filters/sourceAlpha-expected.png and b/LayoutTests/platform/gtk/svg/filters/sourceAlpha-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.checksum b/LayoutTests/platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.checksum
new file mode 100644 (file)
index 0000000..f27296b
--- /dev/null
@@ -0,0 +1 @@
+3c793e36d3e168e60a250e9f706beaaf
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.png b/LayoutTests/platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.png
new file mode 100644 (file)
index 0000000..bfe19e1
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.png differ
diff --git a/LayoutTests/platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.txt b/LayoutTests/platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.txt
new file mode 100644 (file)
index 0000000..50c157d
--- /dev/null
@@ -0,0 +1,56 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (0,83) size 430x461
+    RenderSVGContainer {g} at (0,83) size 430x461 [transform={m=((0.43,0.25)(-0.25,0.43)) t=(50.00,50.00)}]
+      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+      RenderSVGText {text} at (10,6) size 140x18 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 140x18
+          chunk 1 text run 1 at (10.00,20.00) startOffset 0 endOffset 21 width 139.20: "Test for mask support"
+      RenderSVGPath {rect} at (0,108) size 152x232 [fill={[type=SOLID] [color=#FF0000]}] [x=10.00] [y=30.00] [width=100.00] [height=260.00]
+      RenderSVGResourceMasker {mask} [id="mask1"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
+        RenderSVGHiddenContainer {defs} at (0,0) size 0x0
+          RenderSVGResourceLinearGradient {linearGradient} [id="Grad1"] [gradientUnits=userSpaceOnUse] [start=(60,50)] [end=(60,120)]
+            RenderSVGGradientStop {stop} [offset=0.00] [color=#FFFFFF]
+            RenderSVGGradientStop {stop} [offset=1.00] [color=#FFFFFF80]
+        RenderSVGPath {rect} at (80,143) size 99x87 [fill={[type=LINEAR-GRADIENT] [id="Grad1"]}] [x=60.00] [y=50.00] [width=100.00] [height=60.00]
+      RenderSVGPath {rect} at (80,143) size 99x87 [fill={[type=SOLID] [color=#00FF00]}] [x=60.00] [y=50.00] [width=100.00] [height=60.00]
+        [masker="mask1"] RenderSVGResourceMasker {mask} at (60,50) size 100x60
+      RenderSVGText {text} at (200,53) size 165x16 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 165x16
+          chunk 1 text run 1 at (200.00,65.00) startOffset 0 endOffset 30 width 164.40: "Mask with linear gradient from"
+      RenderSVGText {text} at (200,68) size 141x16 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 141x16
+          chunk 1 text run 1 at (200.00,80.00) startOffset 0 endOffset 25 width 140.40: "opacity=1 to opactity=0.5"
+      RenderSVGResourceMasker {mask} [id="mask2"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
+        RenderSVGPath {rect} at (63,193) size 87x66 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.50]}] [x=60.00] [y=120.00] [width=100.00] [height=30.00]
+      RenderSVGPath {rect} at (63,193) size 87x66 [fill={[type=SOLID] [color=#00FF00]}] [x=60.00] [y=120.00] [width=100.00] [height=30.00]
+        [masker="mask2"] RenderSVGResourceMasker {mask} at (60,120) size 100x30
+      RenderSVGText {text} at (200,123) size 178x16 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 178x16
+          chunk 1 text run 1 at (200.00,135.00) startOffset 0 endOffset 32 width 177.60: "Mask with uniform opacity of 0.5"
+      RenderSVGPath {rect} at (46,223) size 88x66 [fill={[type=SOLID] [color=#00FF00] [opacity=0.50]}] [x=60.00] [y=160.00] [width=100.00] [height=30.00]
+      RenderSVGText {text} at (200,163) size 206x16 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 206x16
+          chunk 1 text run 1 at (200.00,175.00) startOffset 0 endOffset 37 width 205.20: "Rectangle with uniform opacity of 0.5"
+      RenderSVGResourceMasker {mask} [id="mask3"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
+        RenderSVGPath {rect} at (31,251) size 158x104 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.50]}] [x=60.00] [y=200.00] [width=200.00] [height=25.00]
+        RenderSVGPath {rect} at (21,270) size 158x104 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.20]}] [x=60.00] [y=225.00] [width=200.00] [height=25.00]
+        RenderSVGPath {rect} at (11,288) size 158x104 [fill={[type=SOLID] [color=#FFFFFF]}] [x=60.00] [y=250.00] [width=200.00] [height=25.00]
+        RenderSVGPath {rect} at (0,306) size 157x103 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.70]}] [x=60.00] [y=275.00] [width=200.00] [height=25.00]
+      RenderSVGText {text} at (60,202) size 126x112 contains 1 chunk(s)
+        [masker="mask3"] RenderSVGResourceMasker {mask} at (60,200) size 200x100
+        RenderSVGInlineText {#text} at (0,0) size 126x112
+          [masker="mask3"] RenderSVGResourceMasker {mask} at (60,200) size 200x100
+          chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 2 width 80.96: "SV"
+          chunk 1 text run 2 at (145.36,280.00) startOffset 2 endOffset 3 width 40.37: "G"
+      RenderSVGText {text} at (200,213) size 204x16 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 204x16
+          chunk 1 text run 1 at (200.00,225.00) startOffset 0 endOffset 36 width 204.00: "Text with mask containing rectangles"
+      RenderSVGText {text} at (200,228) size 107x16 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 107x16
+          chunk 1 text run 1 at (200.00,240.00) startOffset 0 endOffset 20 width 106.80: "of various opacities"
+      RenderSVGText {text} at (10,304) size 264x46 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 264x46
+          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 264.00: "$Revision: 1.7 $"
+      RenderSVGPath {rect} at (0,83) size 430x461 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
diff --git a/LayoutTests/platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.checksum b/LayoutTests/platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.checksum
new file mode 100644 (file)
index 0000000..a3ee726
--- /dev/null
@@ -0,0 +1 @@
+2a0489461a684efb7f9c4f032be3422e
\ No newline at end of file
diff --git a/LayoutTests/platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.png b/LayoutTests/platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.png
new file mode 100644 (file)
index 0000000..24b0fd2
Binary files /dev/null and b/LayoutTests/platform/gtk/svg/zoom/page/zoom-mask-with-percentages-expected.png differ
index 53377f3..eef756e 100644 (file)
@@ -3,71 +3,71 @@ layer at (0,0) size 933x1036
 layer at (0,0) size 933x1036
   RenderSVGRoot {svg} at (186,72) size 550x768
     RenderSVGContainer {g} at (186,72) size 550x768
-      RenderSVGText {text} at (179,35) size 92x20 contains 1 chunk(s)
-        RenderSVGInlineText {#text} at (0,0) size 92x20
-          chunk 1 (middle anchor) text run 1 at (179.50,50.00) startOffset 0 endOffset 12 width 91.00: "Mask Regions"
+      RenderSVGText {text} at (178,35) size 94x19 contains 1 chunk(s)
+        RenderSVGInlineText {#text} at (0,0) size 94x19
+          chunk 1 (middle anchor) text run 1 at (178.67,50.00) startOffset 0 endOffset 12 width 92.66: "Mask Regions"
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
         RenderSVGResourceLinearGradient {linearGradient} [id="maskedGradient"] [gradientUnits=objectBoundingBox] [start=(0,0)] [end=(1,1)]
           RenderSVGGradientStop {stop} [offset=0.00] [color=#0000FF]
           RenderSVGGradientStop {stop} [offset=1.00] [color=#FF0000]
-        RenderSVGPath {rect} at (0,0) size 208x166 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [data="M0.00,0.00 L100.00,0.00 L100.00,80.00 L0.00,80.00 Z"]
+        RenderSVGPath {rect} at (0,0) size 208x166 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [x=0.00] [y=0.00] [width=100.00] [height=80.00]
         RenderSVGResourceMasker {mask} [id="mask_1"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
-          RenderSVGPath {circle} at (10,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,20.00 L44.96,21.25 L44.84,22.51 L44.64,23.75 L44.37,24.97 L44.02,26.18 L43.59,27.36 L43.10,28.52 L42.53,29.64 L41.89,30.71 L41.18,31.75 L40.41,32.75 L39.58,33.69 L38.69,34.58 L37.75,35.41 L36.75,36.18 L35.71,36.89 L34.64,37.53 L33.52,38.10 L32.36,38.59 L31.18,39.02 L29.97,39.37 L28.75,39.64 L27.51,39.84 L26.25,39.96 L25.00,40.00 L23.75,39.96 L22.49,39.84 L21.25,39.64 L20.03,39.37 L18.82,39.02 L17.64,38.59 L16.48,38.10 L15.36,37.53 L14.29,36.89 L13.25,36.18 L12.25,35.41 L11.31,34.58 L10.42,33.69 L9.59,32.75 L8.82,31.75 L8.11,30.71 L7.47,29.64 L6.90,28.52 L6.41,27.36 L5.98,26.18 L5.63,24.97 L5.36,23.75 L5.16,22.51 L5.04,21.25 L5.00,20.00 L5.04,18.75 L5.16,17.49 L5.36,16.25 L5.63,15.03 L5.98,13.82 L6.41,12.64 L6.90,11.48 L7.47,10.36 L8.11,9.29 L8.82,8.25 L9.59,7.25 L10.42,6.31 L11.31,5.42 L12.25,4.59 L13.25,3.82 L14.29,3.11 L15.36,2.47 L16.48,1.90 L17.64,1.41 L18.82,0.98 L20.03,0.63 L21.25,0.36 L22.49,0.16 L23.75,0.04 L25.00,0.00 L26.25,0.04 L27.51,0.16 L28.75,0.36 L29.97,0.63 L31.18,0.98 L32.36,1.41 L33.52,1.90 L34.64,2.47 L35.71,3.11 L36.75,3.82 L37.75,4.59 L38.69,5.42 L39.58,6.31 L40.41,7.25 L41.18,8.25 L41.89,9.29 L42.53,10.36 L43.10,11.48 L43.59,12.64 L44.02,13.82 L44.37,15.03 L44.64,16.25 L44.84,17.49 L44.96,18.75 Z"]
-          RenderSVGPath {circle} at (10,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,60.00 L44.96,61.25 L44.84,62.51 L44.64,63.75 L44.37,64.97 L44.02,66.18 L43.59,67.36 L43.10,68.52 L42.53,69.64 L41.89,70.71 L41.18,71.75 L40.41,72.75 L39.58,73.69 L38.69,74.58 L37.75,75.41 L36.75,76.18 L35.71,76.89 L34.64,77.53 L33.52,78.10 L32.36,78.59 L31.18,79.02 L29.97,79.37 L28.75,79.64 L27.51,79.84 L26.25,79.96 L25.00,80.00 L23.75,79.96 L22.49,79.84 L21.25,79.64 L20.03,79.37 L18.82,79.02 L17.64,78.59 L16.48,78.10 L15.36,77.53 L14.29,76.89 L13.25,76.18 L12.25,75.41 L11.31,74.58 L10.42,73.69 L9.59,72.75 L8.82,71.75 L8.11,70.71 L7.47,69.64 L6.90,68.52 L6.41,67.36 L5.98,66.18 L5.63,64.97 L5.36,63.75 L5.16,62.51 L5.04,61.25 L5.00,60.00 L5.04,58.75 L5.16,57.49 L5.36,56.25 L5.63,55.03 L5.98,53.82 L6.41,52.64 L6.90,51.48 L7.47,50.36 L8.11,49.29 L8.82,48.25 L9.59,47.25 L10.42,46.31 L11.31,45.42 L12.25,44.59 L13.25,43.82 L14.29,43.11 L15.36,42.47 L16.48,41.90 L17.64,41.41 L18.82,40.98 L20.03,40.63 L21.25,40.36 L22.49,40.16 L23.75,40.04 L25.00,40.00 L26.25,40.04 L27.51,40.16 L28.75,40.36 L29.97,40.63 L31.18,40.98 L32.36,41.41 L33.52,41.90 L34.64,42.47 L35.71,43.11 L36.75,43.82 L37.75,44.59 L38.69,45.42 L39.58,46.31 L40.41,47.25 L41.18,48.25 L41.89,49.29 L42.53,50.36 L43.10,51.48 L43.59,52.64 L44.02,53.82 L44.37,55.03 L44.64,56.25 L44.84,57.49 L44.96,58.75 Z"]
-          RenderSVGPath {circle} at (114,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,20.00 L94.96,21.25 L94.84,22.51 L94.64,23.75 L94.37,24.97 L94.02,26.18 L93.59,27.36 L93.10,28.52 L92.53,29.64 L91.89,30.71 L91.18,31.75 L90.41,32.75 L89.58,33.69 L88.69,34.58 L87.75,35.41 L86.75,36.18 L85.71,36.89 L84.64,37.53 L83.52,38.10 L82.36,38.59 L81.18,39.02 L79.97,39.37 L78.75,39.64 L77.51,39.84 L76.25,39.96 L75.00,40.00 L73.75,39.96 L72.49,39.84 L71.25,39.64 L70.03,39.37 L68.82,39.02 L67.64,38.59 L66.48,38.10 L65.36,37.53 L64.29,36.89 L63.25,36.18 L62.25,35.41 L61.31,34.58 L60.42,33.69 L59.59,32.75 L58.82,31.75 L58.11,30.71 L57.47,29.64 L56.90,28.52 L56.41,27.36 L55.98,26.18 L55.63,24.97 L55.36,23.75 L55.16,22.51 L55.04,21.25 L55.00,20.00 L55.04,18.75 L55.16,17.49 L55.36,16.25 L55.63,15.03 L55.98,13.82 L56.41,12.64 L56.90,11.48 L57.47,10.36 L58.11,9.29 L58.82,8.25 L59.59,7.25 L60.42,6.31 L61.31,5.42 L62.25,4.59 L63.25,3.82 L64.29,3.11 L65.36,2.47 L66.48,1.90 L67.64,1.41 L68.82,0.98 L70.03,0.63 L71.25,0.36 L72.49,0.16 L73.75,0.04 L75.00,0.00 L76.25,0.04 L77.51,0.16 L78.75,0.36 L79.97,0.63 L81.18,0.98 L82.36,1.41 L83.52,1.90 L84.64,2.47 L85.71,3.11 L86.75,3.82 L87.75,4.59 L88.69,5.42 L89.58,6.31 L90.41,7.25 L91.18,8.25 L91.89,9.29 L92.53,10.36 L93.10,11.48 L93.59,12.64 L94.02,13.82 L94.37,15.03 L94.64,16.25 L94.84,17.49 L94.96,18.75 Z"]
-          RenderSVGPath {circle} at (114,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,60.00 L94.96,61.25 L94.84,62.51 L94.64,63.75 L94.37,64.97 L94.02,66.18 L93.59,67.36 L93.10,68.52 L92.53,69.64 L91.89,70.71 L91.18,71.75 L90.41,72.75 L89.58,73.69 L88.69,74.58 L87.75,75.41 L86.75,76.18 L85.71,76.89 L84.64,77.53 L83.52,78.10 L82.36,78.59 L81.18,79.02 L79.97,79.37 L78.75,79.64 L77.51,79.84 L76.25,79.96 L75.00,80.00 L73.75,79.96 L72.49,79.84 L71.25,79.64 L70.03,79.37 L68.82,79.02 L67.64,78.59 L66.48,78.10 L65.36,77.53 L64.29,76.89 L63.25,76.18 L62.25,75.41 L61.31,74.58 L60.42,73.69 L59.59,72.75 L58.82,71.75 L58.11,70.71 L57.47,69.64 L56.90,68.52 L56.41,67.36 L55.98,66.18 L55.63,64.97 L55.36,63.75 L55.16,62.51 L55.04,61.25 L55.00,60.00 L55.04,58.75 L55.16,57.49 L55.36,56.25 L55.63,55.03 L55.98,53.82 L56.41,52.64 L56.90,51.48 L57.47,50.36 L58.11,49.29 L58.82,48.25 L59.59,47.25 L60.42,46.31 L61.31,45.42 L62.25,44.59 L63.25,43.82 L64.29,43.11 L65.36,42.47 L66.48,41.90 L67.64,41.41 L68.82,40.98 L70.03,40.63 L71.25,40.36 L72.49,40.16 L73.75,40.04 L75.00,40.00 L76.25,40.04 L77.51,40.16 L78.75,40.36 L79.97,40.63 L81.18,40.98 L82.36,41.41 L83.52,41.90 L84.64,42.47 L85.71,43.11 L86.75,43.82 L87.75,44.59 L88.69,45.42 L89.58,46.31 L90.41,47.25 L91.18,48.25 L91.89,49.29 L92.53,50.36 L93.10,51.48 L93.59,52.64 L94.02,53.82 L94.37,55.03 L94.64,56.25 L94.84,57.49 L94.96,58.75 Z"]
+          RenderSVGPath {circle} at (10,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=25.00] [cy=20.00] [r=20.00]
+          RenderSVGPath {circle} at (10,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=25.00] [cy=60.00] [r=20.00]
+          RenderSVGPath {circle} at (114,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=75.00] [cy=20.00] [r=20.00]
+          RenderSVGPath {circle} at (114,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=75.00] [cy=60.00] [r=20.00]
         RenderSVGResourceMasker {mask} [id="mask_2"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
-          RenderSVGPath {circle} at (10,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,20.00 L44.96,21.25 L44.84,22.51 L44.64,23.75 L44.37,24.97 L44.02,26.18 L43.59,27.36 L43.10,28.52 L42.53,29.64 L41.89,30.71 L41.18,31.75 L40.41,32.75 L39.58,33.69 L38.69,34.58 L37.75,35.41 L36.75,36.18 L35.71,36.89 L34.64,37.53 L33.52,38.10 L32.36,38.59 L31.18,39.02 L29.97,39.37 L28.75,39.64 L27.51,39.84 L26.25,39.96 L25.00,40.00 L23.75,39.96 L22.49,39.84 L21.25,39.64 L20.03,39.37 L18.82,39.02 L17.64,38.59 L16.48,38.10 L15.36,37.53 L14.29,36.89 L13.25,36.18 L12.25,35.41 L11.31,34.58 L10.42,33.69 L9.59,32.75 L8.82,31.75 L8.11,30.71 L7.47,29.64 L6.90,28.52 L6.41,27.36 L5.98,26.18 L5.63,24.97 L5.36,23.75 L5.16,22.51 L5.04,21.25 L5.00,20.00 L5.04,18.75 L5.16,17.49 L5.36,16.25 L5.63,15.03 L5.98,13.82 L6.41,12.64 L6.90,11.48 L7.47,10.36 L8.11,9.29 L8.82,8.25 L9.59,7.25 L10.42,6.31 L11.31,5.42 L12.25,4.59 L13.25,3.82 L14.29,3.11 L15.36,2.47 L16.48,1.90 L17.64,1.41 L18.82,0.98 L20.03,0.63 L21.25,0.36 L22.49,0.16 L23.75,0.04 L25.00,0.00 L26.25,0.04 L27.51,0.16 L28.75,0.36 L29.97,0.63 L31.18,0.98 L32.36,1.41 L33.52,1.90 L34.64,2.47 L35.71,3.11 L36.75,3.82 L37.75,4.59 L38.69,5.42 L39.58,6.31 L40.41,7.25 L41.18,8.25 L41.89,9.29 L42.53,10.36 L43.10,11.48 L43.59,12.64 L44.02,13.82 L44.37,15.03 L44.64,16.25 L44.84,17.49 L44.96,18.75 Z"]
-          RenderSVGPath {circle} at (10,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,60.00 L44.96,61.25 L44.84,62.51 L44.64,63.75 L44.37,64.97 L44.02,66.18 L43.59,67.36 L43.10,68.52 L42.53,69.64 L41.89,70.71 L41.18,71.75 L40.41,72.75 L39.58,73.69 L38.69,74.58 L37.75,75.41 L36.75,76.18 L35.71,76.89 L34.64,77.53 L33.52,78.10 L32.36,78.59 L31.18,79.02 L29.97,79.37 L28.75,79.64 L27.51,79.84 L26.25,79.96 L25.00,80.00 L23.75,79.96 L22.49,79.84 L21.25,79.64 L20.03,79.37 L18.82,79.02 L17.64,78.59 L16.48,78.10 L15.36,77.53 L14.29,76.89 L13.25,76.18 L12.25,75.41 L11.31,74.58 L10.42,73.69 L9.59,72.75 L8.82,71.75 L8.11,70.71 L7.47,69.64 L6.90,68.52 L6.41,67.36 L5.98,66.18 L5.63,64.97 L5.36,63.75 L5.16,62.51 L5.04,61.25 L5.00,60.00 L5.04,58.75 L5.16,57.49 L5.36,56.25 L5.63,55.03 L5.98,53.82 L6.41,52.64 L6.90,51.48 L7.47,50.36 L8.11,49.29 L8.82,48.25 L9.59,47.25 L10.42,46.31 L11.31,45.42 L12.25,44.59 L13.25,43.82 L14.29,43.11 L15.36,42.47 L16.48,41.90 L17.64,41.41 L18.82,40.98 L20.03,40.63 L21.25,40.36 L22.49,40.16 L23.75,40.04 L25.00,40.00 L26.25,40.04 L27.51,40.16 L28.75,40.36 L29.97,40.63 L31.18,40.98 L32.36,41.41 L33.52,41.90 L34.64,42.47 L35.71,43.11 L36.75,43.82 L37.75,44.59 L38.69,45.42 L39.58,46.31 L40.41,47.25 L41.18,48.25 L41.89,49.29 L42.53,50.36 L43.10,51.48 L43.59,52.64 L44.02,53.82 L44.37,55.03 L44.64,56.25 L44.84,57.49 L44.96,58.75 Z"]
-          RenderSVGPath {circle} at (114,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,20.00 L94.96,21.25 L94.84,22.51 L94.64,23.75 L94.37,24.97 L94.02,26.18 L93.59,27.36 L93.10,28.52 L92.53,29.64 L91.89,30.71 L91.18,31.75 L90.41,32.75 L89.58,33.69 L88.69,34.58 L87.75,35.41 L86.75,36.18 L85.71,36.89 L84.64,37.53 L83.52,38.10 L82.36,38.59 L81.18,39.02 L79.97,39.37 L78.75,39.64 L77.51,39.84 L76.25,39.96 L75.00,40.00 L73.75,39.96 L72.49,39.84 L71.25,39.64 L70.03,39.37 L68.82,39.02 L67.64,38.59 L66.48,38.10 L65.36,37.53 L64.29,36.89 L63.25,36.18 L62.25,35.41 L61.31,34.58 L60.42,33.69 L59.59,32.75 L58.82,31.75 L58.11,30.71 L57.47,29.64 L56.90,28.52 L56.41,27.36 L55.98,26.18 L55.63,24.97 L55.36,23.75 L55.16,22.51 L55.04,21.25 L55.00,20.00 L55.04,18.75 L55.16,17.49 L55.36,16.25 L55.63,15.03 L55.98,13.82 L56.41,12.64 L56.90,11.48 L57.47,10.36 L58.11,9.29 L58.82,8.25 L59.59,7.25 L60.42,6.31 L61.31,5.42 L62.25,4.59 L63.25,3.82 L64.29,3.11 L65.36,2.47 L66.48,1.90 L67.64,1.41 L68.82,0.98 L70.03,0.63 L71.25,0.36 L72.49,0.16 L73.75,0.04 L75.00,0.00 L76.25,0.04 L77.51,0.16 L78.75,0.36 L79.97,0.63 L81.18,0.98 L82.36,1.41 L83.52,1.90 L84.64,2.47 L85.71,3.11 L86.75,3.82 L87.75,4.59 L88.69,5.42 L89.58,6.31 L90.41,7.25 L91.18,8.25 L91.89,9.29 L92.53,10.36 L93.10,11.48 L93.59,12.64 L94.02,13.82 L94.37,15.03 L94.64,16.25 L94.84,17.49 L94.96,18.75 Z"]
-          RenderSVGPath {circle} at (114,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,60.00 L94.96,61.25 L94.84,62.51 L94.64,63.75 L94.37,64.97 L94.02,66.18 L93.59,67.36 L93.10,68.52 L92.53,69.64 L91.89,70.71 L91.18,71.75 L90.41,72.75 L89.58,73.69 L88.69,74.58 L87.75,75.41 L86.75,76.18 L85.71,76.89 L84.64,77.53 L83.52,78.10 L82.36,78.59 L81.18,79.02 L79.97,79.37 L78.75,79.64 L77.51,79.84 L76.25,79.96 L75.00,80.00 L73.75,79.96 L72.49,79.84 L71.25,79.64 L70.03,79.37 L68.82,79.02 L67.64,78.59 L66.48,78.10 L65.36,77.53 L64.29,76.89 L63.25,76.18 L62.25,75.41 L61.31,74.58 L60.42,73.69 L59.59,72.75 L58.82,71.75 L58.11,70.71 L57.47,69.64 L56.90,68.52 L56.41,67.36 L55.98,66.18 L55.63,64.97 L55.36,63.75 L55.16,62.51 L55.04,61.25 L55.00,60.00 L55.04,58.75 L55.16,57.49 L55.36,56.25 L55.63,55.03 L55.98,53.82 L56.41,52.64 L56.90,51.48 L57.47,50.36 L58.11,49.29 L58.82,48.25 L59.59,47.25 L60.42,46.31 L61.31,45.42 L62.25,44.59 L63.25,43.82 L64.29,43.11 L65.36,42.47 L66.48,41.90 L67.64,41.41 L68.82,40.98 L70.03,40.63 L71.25,40.36 L72.49,40.16 L73.75,40.04 L75.00,40.00 L76.25,40.04 L77.51,40.16 L78.75,40.36 L79.97,40.63 L81.18,40.98 L82.36,41.41 L83.52,41.90 L84.64,42.47 L85.71,43.11 L86.75,43.82 L87.75,44.59 L88.69,45.42 L89.58,46.31 L90.41,47.25 L91.18,48.25 L91.89,49.29 L92.53,50.36 L93.10,51.48 L93.59,52.64 L94.02,53.82 L94.37,55.03 L94.64,56.25 L94.84,57.49 L94.96,58.75 Z"]
+          RenderSVGPath {circle} at (10,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=25.00] [cy=20.00] [r=20.00]
+          RenderSVGPath {circle} at (10,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=25.00] [cy=60.00] [r=20.00]
+          RenderSVGPath {circle} at (114,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=75.00] [cy=20.00] [r=20.00]
+          RenderSVGPath {circle} at (114,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=75.00] [cy=60.00] [r=20.00]
         RenderSVGResourceMasker {mask} [id="mask_3"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
-          RenderSVGPath {circle} at (10,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,20.00 L44.96,21.25 L44.84,22.51 L44.64,23.75 L44.37,24.97 L44.02,26.18 L43.59,27.36 L43.10,28.52 L42.53,29.64 L41.89,30.71 L41.18,31.75 L40.41,32.75 L39.58,33.69 L38.69,34.58 L37.75,35.41 L36.75,36.18 L35.71,36.89 L34.64,37.53 L33.52,38.10 L32.36,38.59 L31.18,39.02 L29.97,39.37 L28.75,39.64 L27.51,39.84 L26.25,39.96 L25.00,40.00 L23.75,39.96 L22.49,39.84 L21.25,39.64 L20.03,39.37 L18.82,39.02 L17.64,38.59 L16.48,38.10 L15.36,37.53 L14.29,36.89 L13.25,36.18 L12.25,35.41 L11.31,34.58 L10.42,33.69 L9.59,32.75 L8.82,31.75 L8.11,30.71 L7.47,29.64 L6.90,28.52 L6.41,27.36 L5.98,26.18 L5.63,24.97 L5.36,23.75 L5.16,22.51 L5.04,21.25 L5.00,20.00 L5.04,18.75 L5.16,17.49 L5.36,16.25 L5.63,15.03 L5.98,13.82 L6.41,12.64 L6.90,11.48 L7.47,10.36 L8.11,9.29 L8.82,8.25 L9.59,7.25 L10.42,6.31 L11.31,5.42 L12.25,4.59 L13.25,3.82 L14.29,3.11 L15.36,2.47 L16.48,1.90 L17.64,1.41 L18.82,0.98 L20.03,0.63 L21.25,0.36 L22.49,0.16 L23.75,0.04 L25.00,0.00 L26.25,0.04 L27.51,0.16 L28.75,0.36 L29.97,0.63 L31.18,0.98 L32.36,1.41 L33.52,1.90 L34.64,2.47 L35.71,3.11 L36.75,3.82 L37.75,4.59 L38.69,5.42 L39.58,6.31 L40.41,7.25 L41.18,8.25 L41.89,9.29 L42.53,10.36 L43.10,11.48 L43.59,12.64 L44.02,13.82 L44.37,15.03 L44.64,16.25 L44.84,17.49 L44.96,18.75 Z"]
-          RenderSVGPath {circle} at (10,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M45.00,60.00 L44.96,61.25 L44.84,62.51 L44.64,63.75 L44.37,64.97 L44.02,66.18 L43.59,67.36 L43.10,68.52 L42.53,69.64 L41.89,70.71 L41.18,71.75 L40.41,72.75 L39.58,73.69 L38.69,74.58 L37.75,75.41 L36.75,76.18 L35.71,76.89 L34.64,77.53 L33.52,78.10 L32.36,78.59 L31.18,79.02 L29.97,79.37 L28.75,79.64 L27.51,79.84 L26.25,79.96 L25.00,80.00 L23.75,79.96 L22.49,79.84 L21.25,79.64 L20.03,79.37 L18.82,79.02 L17.64,78.59 L16.48,78.10 L15.36,77.53 L14.29,76.89 L13.25,76.18 L12.25,75.41 L11.31,74.58 L10.42,73.69 L9.59,72.75 L8.82,71.75 L8.11,70.71 L7.47,69.64 L6.90,68.52 L6.41,67.36 L5.98,66.18 L5.63,64.97 L5.36,63.75 L5.16,62.51 L5.04,61.25 L5.00,60.00 L5.04,58.75 L5.16,57.49 L5.36,56.25 L5.63,55.03 L5.98,53.82 L6.41,52.64 L6.90,51.48 L7.47,50.36 L8.11,49.29 L8.82,48.25 L9.59,47.25 L10.42,46.31 L11.31,45.42 L12.25,44.59 L13.25,43.82 L14.29,43.11 L15.36,42.47 L16.48,41.90 L17.64,41.41 L18.82,40.98 L20.03,40.63 L21.25,40.36 L22.49,40.16 L23.75,40.04 L25.00,40.00 L26.25,40.04 L27.51,40.16 L28.75,40.36 L29.97,40.63 L31.18,40.98 L32.36,41.41 L33.52,41.90 L34.64,42.47 L35.71,43.11 L36.75,43.82 L37.75,44.59 L38.69,45.42 L39.58,46.31 L40.41,47.25 L41.18,48.25 L41.89,49.29 L42.53,50.36 L43.10,51.48 L43.59,52.64 L44.02,53.82 L44.37,55.03 L44.64,56.25 L44.84,57.49 L44.96,58.75 Z"]
-          RenderSVGPath {circle} at (114,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,20.00 L94.96,21.25 L94.84,22.51 L94.64,23.75 L94.37,24.97 L94.02,26.18 L93.59,27.36 L93.10,28.52 L92.53,29.64 L91.89,30.71 L91.18,31.75 L90.41,32.75 L89.58,33.69 L88.69,34.58 L87.75,35.41 L86.75,36.18 L85.71,36.89 L84.64,37.53 L83.52,38.10 L82.36,38.59 L81.18,39.02 L79.97,39.37 L78.75,39.64 L77.51,39.84 L76.25,39.96 L75.00,40.00 L73.75,39.96 L72.49,39.84 L71.25,39.64 L70.03,39.37 L68.82,39.02 L67.64,38.59 L66.48,38.10 L65.36,37.53 L64.29,36.89 L63.25,36.18 L62.25,35.41 L61.31,34.58 L60.42,33.69 L59.59,32.75 L58.82,31.75 L58.11,30.71 L57.47,29.64 L56.90,28.52 L56.41,27.36 L55.98,26.18 L55.63,24.97 L55.36,23.75 L55.16,22.51 L55.04,21.25 L55.00,20.00 L55.04,18.75 L55.16,17.49 L55.36,16.25 L55.63,15.03 L55.98,13.82 L56.41,12.64 L56.90,11.48 L57.47,10.36 L58.11,9.29 L58.82,8.25 L59.59,7.25 L60.42,6.31 L61.31,5.42 L62.25,4.59 L63.25,3.82 L64.29,3.11 L65.36,2.47 L66.48,1.90 L67.64,1.41 L68.82,0.98 L70.03,0.63 L71.25,0.36 L72.49,0.16 L73.75,0.04 L75.00,0.00 L76.25,0.04 L77.51,0.16 L78.75,0.36 L79.97,0.63 L81.18,0.98 L82.36,1.41 L83.52,1.90 L84.64,2.47 L85.71,3.11 L86.75,3.82 L87.75,4.59 L88.69,5.42 L89.58,6.31 L90.41,7.25 L91.18,8.25 L91.89,9.29 L92.53,10.36 L93.10,11.48 L93.59,12.64 L94.02,13.82 L94.37,15.03 L94.64,16.25 L94.84,17.49 L94.96,18.75 Z"]
-          RenderSVGPath {circle} at (114,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M95.00,60.00 L94.96,61.25 L94.84,62.51 L94.64,63.75 L94.37,64.97 L94.02,66.18 L93.59,67.36 L93.10,68.52 L92.53,69.64 L91.89,70.71 L91.18,71.75 L90.41,72.75 L89.58,73.69 L88.69,74.58 L87.75,75.41 L86.75,76.18 L85.71,76.89 L84.64,77.53 L83.52,78.10 L82.36,78.59 L81.18,79.02 L79.97,79.37 L78.75,79.64 L77.51,79.84 L76.25,79.96 L75.00,80.00 L73.75,79.96 L72.49,79.84 L71.25,79.64 L70.03,79.37 L68.82,79.02 L67.64,78.59 L66.48,78.10 L65.36,77.53 L64.29,76.89 L63.25,76.18 L62.25,75.41 L61.31,74.58 L60.42,73.69 L59.59,72.75 L58.82,71.75 L58.11,70.71 L57.47,69.64 L56.90,68.52 L56.41,67.36 L55.98,66.18 L55.63,64.97 L55.36,63.75 L55.16,62.51 L55.04,61.25 L55.00,60.00 L55.04,58.75 L55.16,57.49 L55.36,56.25 L55.63,55.03 L55.98,53.82 L56.41,52.64 L56.90,51.48 L57.47,50.36 L58.11,49.29 L58.82,48.25 L59.59,47.25 L60.42,46.31 L61.31,45.42 L62.25,44.59 L63.25,43.82 L64.29,43.11 L65.36,42.47 L66.48,41.90 L67.64,41.41 L68.82,40.98 L70.03,40.63 L71.25,40.36 L72.49,40.16 L73.75,40.04 L75.00,40.00 L76.25,40.04 L77.51,40.16 L78.75,40.36 L79.97,40.63 L81.18,40.98 L82.36,41.41 L83.52,41.90 L84.64,42.47 L85.71,43.11 L86.75,43.82 L87.75,44.59 L88.69,45.42 L89.58,46.31 L90.41,47.25 L91.18,48.25 L91.89,49.29 L92.53,50.36 L93.10,51.48 L93.59,52.64 L94.02,53.82 L94.37,55.03 L94.64,56.25 L94.84,57.49 L94.96,58.75 Z"]
+          RenderSVGPath {circle} at (10,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=25.00] [cy=20.00] [r=20.00]
+          RenderSVGPath {circle} at (10,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=25.00] [cy=60.00] [r=20.00]
+          RenderSVGPath {circle} at (114,0) size 84x83 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=75.00] [cy=20.00] [r=20.00]
+          RenderSVGPath {circle} at (114,82) size 84x84 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=75.00] [cy=60.00] [r=20.00]
         RenderSVGResourceMasker {mask} [id="mask_4"] [maskUnits=objectBoundingBox] [maskContentUnits=objectBoundingBox]
-          RenderSVGPath {circle} at (0,0) size 3x3 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.45,0.20 L0.45,0.21 L0.45,0.23 L0.45,0.24 L0.45,0.25 L0.44,0.26 L0.44,0.27 L0.43,0.29 L0.43,0.30 L0.42,0.31 L0.41,0.32 L0.40,0.33 L0.39,0.34 L0.39,0.35 L0.38,0.36 L0.37,0.36 L0.36,0.37 L0.35,0.38 L0.34,0.38 L0.32,0.39 L0.31,0.39 L0.30,0.39 L0.29,0.39 L0.27,0.40 L0.26,0.40 L0.25,0.40 L0.24,0.40 L0.23,0.40 L0.21,0.39 L0.20,0.39 L0.19,0.39 L0.18,0.39 L0.16,0.38 L0.15,0.38 L0.14,0.37 L0.13,0.36 L0.12,0.36 L0.11,0.35 L0.11,0.34 L0.10,0.33 L0.09,0.32 L0.08,0.31 L0.07,0.30 L0.07,0.29 L0.06,0.27 L0.06,0.26 L0.05,0.25 L0.05,0.24 L0.05,0.23 L0.05,0.21 L0.05,0.20 L0.05,0.19 L0.05,0.18 L0.05,0.16 L0.05,0.15 L0.06,0.14 L0.06,0.12 L0.07,0.11 L0.07,0.11 L0.08,0.09 L0.09,0.08 L0.10,0.07 L0.11,0.06 L0.11,0.05 L0.12,0.05 L0.13,0.04 L0.14,0.03 L0.15,0.02 L0.16,0.02 L0.18,0.02 L0.19,0.01 L0.20,0.01 L0.21,0.00 L0.23,0.00 L0.24,0.00 L0.25,0.00 L0.26,0.00 L0.27,0.00 L0.29,0.00 L0.30,0.01 L0.31,0.01 L0.32,0.02 L0.34,0.02 L0.35,0.02 L0.36,0.03 L0.37,0.04 L0.38,0.05 L0.39,0.05 L0.39,0.06 L0.40,0.07 L0.41,0.08 L0.42,0.09 L0.43,0.11 L0.43,0.11 L0.44,0.12 L0.44,0.14 L0.45,0.15 L0.45,0.16 L0.45,0.18 L0.45,0.19 Z"]
-          RenderSVGPath {circle} at (0,0) size 3x3 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.45,0.60 L0.45,0.61 L0.45,0.62 L0.45,0.64 L0.45,0.65 L0.44,0.66 L0.44,0.67 L0.43,0.68 L0.43,0.70 L0.42,0.71 L0.41,0.72 L0.40,0.73 L0.39,0.74 L0.39,0.75 L0.38,0.75 L0.37,0.76 L0.36,0.77 L0.35,0.77 L0.34,0.78 L0.32,0.79 L0.31,0.79 L0.30,0.79 L0.29,0.80 L0.27,0.80 L0.26,0.80 L0.25,0.80 L0.24,0.80 L0.23,0.80 L0.21,0.80 L0.20,0.79 L0.19,0.79 L0.18,0.79 L0.16,0.78 L0.15,0.77 L0.14,0.77 L0.13,0.76 L0.12,0.75 L0.11,0.75 L0.11,0.74 L0.10,0.73 L0.09,0.72 L0.08,0.71 L0.07,0.70 L0.07,0.68 L0.06,0.67 L0.06,0.66 L0.05,0.65 L0.05,0.64 L0.05,0.62 L0.05,0.61 L0.05,0.60 L0.05,0.59 L0.05,0.57 L0.05,0.56 L0.05,0.55 L0.06,0.54 L0.06,0.53 L0.07,0.52 L0.07,0.50 L0.08,0.49 L0.09,0.48 L0.10,0.47 L0.11,0.46 L0.11,0.45 L0.12,0.45 L0.13,0.44 L0.14,0.43 L0.15,0.43 L0.16,0.42 L0.18,0.41 L0.19,0.41 L0.20,0.41 L0.21,0.40 L0.23,0.40 L0.24,0.40 L0.25,0.40 L0.26,0.40 L0.27,0.40 L0.29,0.40 L0.30,0.41 L0.31,0.41 L0.32,0.41 L0.34,0.42 L0.35,0.43 L0.36,0.43 L0.37,0.44 L0.38,0.45 L0.39,0.45 L0.39,0.46 L0.40,0.47 L0.41,0.48 L0.42,0.49 L0.43,0.50 L0.43,0.52 L0.44,0.53 L0.44,0.54 L0.45,0.55 L0.45,0.56 L0.45,0.57 L0.45,0.59 Z"]
-          RenderSVGPath {circle} at (0,0) size 3x3 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.95,0.20 L0.95,0.21 L0.95,0.23 L0.95,0.24 L0.95,0.25 L0.94,0.26 L0.94,0.27 L0.93,0.29 L0.93,0.30 L0.92,0.31 L0.91,0.32 L0.90,0.33 L0.89,0.34 L0.89,0.35 L0.88,0.36 L0.87,0.36 L0.86,0.37 L0.85,0.38 L0.84,0.38 L0.82,0.39 L0.81,0.39 L0.80,0.39 L0.79,0.39 L0.77,0.40 L0.76,0.40 L0.75,0.40 L0.74,0.40 L0.73,0.40 L0.71,0.39 L0.70,0.39 L0.69,0.39 L0.68,0.39 L0.66,0.38 L0.65,0.38 L0.64,0.37 L0.63,0.36 L0.62,0.36 L0.61,0.35 L0.61,0.34 L0.60,0.33 L0.59,0.32 L0.58,0.31 L0.57,0.30 L0.57,0.29 L0.56,0.27 L0.56,0.26 L0.55,0.25 L0.55,0.24 L0.55,0.23 L0.55,0.21 L0.55,0.20 L0.55,0.19 L0.55,0.18 L0.55,0.16 L0.55,0.15 L0.56,0.14 L0.56,0.12 L0.57,0.11 L0.57,0.11 L0.58,0.09 L0.59,0.08 L0.60,0.07 L0.61,0.06 L0.61,0.05 L0.62,0.05 L0.63,0.04 L0.64,0.03 L0.65,0.02 L0.66,0.02 L0.68,0.02 L0.69,0.01 L0.70,0.01 L0.71,0.00 L0.73,0.00 L0.74,0.00 L0.75,0.00 L0.76,0.00 L0.77,0.00 L0.79,0.00 L0.80,0.01 L0.81,0.01 L0.82,0.02 L0.84,0.02 L0.85,0.02 L0.86,0.03 L0.87,0.04 L0.88,0.05 L0.89,0.05 L0.89,0.06 L0.90,0.07 L0.91,0.08 L0.92,0.09 L0.93,0.11 L0.93,0.11 L0.94,0.12 L0.94,0.14 L0.95,0.15 L0.95,0.16 L0.95,0.18 L0.95,0.19 Z"]
-          RenderSVGPath {circle} at (0,0) size 3x3 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.95,0.60 L0.95,0.61 L0.95,0.62 L0.95,0.64 L0.95,0.65 L0.94,0.66 L0.94,0.67 L0.93,0.68 L0.93,0.70 L0.92,0.71 L0.91,0.72 L0.90,0.73 L0.89,0.74 L0.89,0.75 L0.88,0.75 L0.87,0.76 L0.86,0.77 L0.85,0.77 L0.84,0.78 L0.82,0.79 L0.81,0.79 L0.80,0.79 L0.79,0.80 L0.77,0.80 L0.76,0.80 L0.75,0.80 L0.74,0.80 L0.73,0.80 L0.71,0.80 L0.70,0.79 L0.69,0.79 L0.68,0.79 L0.66,0.78 L0.65,0.77 L0.64,0.77 L0.63,0.76 L0.62,0.75 L0.61,0.75 L0.61,0.74 L0.60,0.73 L0.59,0.72 L0.58,0.71 L0.57,0.70 L0.57,0.68 L0.56,0.67 L0.56,0.66 L0.55,0.65 L0.55,0.64 L0.55,0.62 L0.55,0.61 L0.55,0.60 L0.55,0.59 L0.55,0.57 L0.55,0.56 L0.55,0.55 L0.56,0.54 L0.56,0.53 L0.57,0.52 L0.57,0.50 L0.58,0.49 L0.59,0.48 L0.60,0.47 L0.61,0.46 L0.61,0.45 L0.62,0.45 L0.63,0.44 L0.64,0.43 L0.65,0.43 L0.66,0.42 L0.68,0.41 L0.69,0.41 L0.70,0.41 L0.71,0.40 L0.73,0.40 L0.74,0.40 L0.75,0.40 L0.76,0.40 L0.77,0.40 L0.79,0.40 L0.80,0.41 L0.81,0.41 L0.82,0.41 L0.84,0.42 L0.85,0.43 L0.86,0.43 L0.87,0.44 L0.88,0.45 L0.89,0.45 L0.89,0.46 L0.90,0.47 L0.91,0.48 L0.92,0.49 L0.93,0.50 L0.93,0.52 L0.94,0.53 L0.94,0.54 L0.95,0.55 L0.95,0.56 L0.95,0.57 L0.95,0.59 Z"]
+          RenderSVGPath {circle} at (0,0) size 3x3 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=0.25] [cy=0.20] [r=0.20]
+          RenderSVGPath {circle} at (0,0) size 3x3 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=0.25] [cy=0.60] [r=0.20]
+          RenderSVGPath {circle} at (0,0) size 3x3 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=0.75] [cy=0.20] [r=0.20]
+          RenderSVGPath {circle} at (0,0) size 3x3 [fill={[type=SOLID] [color=#FFFFFF]}] [cx=0.75] [cy=0.60] [r=0.20]
       RenderSVGContainer {g} at (362,169) size 209x204 [transform={m=((1.00,0.00)(0.00,1.00)) t=(175.00,100.00)}]
         RenderSVGContainer {use} at (362,207) size 209x166
           RenderSVGContainer {g} at (362,207) size 209x166
-            RenderSVGPath {rect} at (362,207) size 209x166 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [data="M0.00,0.00 L100.00,0.00 L100.00,80.00 L0.00,80.00 Z"]
-        RenderSVGText {text} at (25,-18) size 50x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 50x20
-            chunk 1 (middle anchor) text run 1 at (25.00,-3.00) startOffset 0 endOffset 6 width 50.00: "Masked"
+            RenderSVGPath {rect} at (362,207) size 209x166 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [x=0.00] [y=0.00] [width=100.00] [height=80.00]
+        RenderSVGText {text} at (24,-18) size 52x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 52x19
+            chunk 1 (middle anchor) text run 1 at (24.42,-3.00) startOffset 0 endOffset 6 width 51.16: "Masked"
       RenderSVGContainer {g} at (186,418) size 188x204 [transform={m=((1.00,0.00)(0.00,1.00)) t=(85.00,220.00)}]
         RenderSVGContainer {use} at (186,455) size 188x167
           [masker="mask_1"] RenderSVGResourceMasker {mask} at (5,0) size 90x80
           RenderSVGContainer {g} at (176,455) size 208x167
-            RenderSVGPath {rect} at (176,455) size 208x167 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [data="M0.00,0.00 L100.00,0.00 L100.00,80.00 L0.00,80.00 Z"]
-        RenderSVGText {text} at (26,-18) size 48x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 48x20
-            chunk 1 (middle anchor) text run 1 at (26.50,-3.00) startOffset 0 endOffset 6 width 47.00: "Mask 1"
+            RenderSVGPath {rect} at (176,455) size 208x167 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [x=0.00] [y=0.00] [width=100.00] [height=80.00]
+        RenderSVGText {text} at (26,-18) size 48x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 48x19
+            chunk 1 (middle anchor) text run 1 at (26.11,-3.00) startOffset 0 endOffset 6 width 47.78: "Mask 1"
       RenderSVGContainer {g} at (228,667) size 104x162 [transform={m=((1.00,0.00)(0.00,1.00)) t=(85.00,340.00)}]
         RenderSVGContainer {use} at (228,745) size 104x84
           [masker="mask_2"] RenderSVGResourceMasker {mask} at (25,20) size 50x40
           RenderSVGContainer {g} at (176,704) size 208x167
-            RenderSVGPath {rect} at (176,704) size 208x167 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [data="M0.00,0.00 L100.00,0.00 L100.00,80.00 L0.00,80.00 Z"]
-        RenderSVGText {text} at (26,-18) size 48x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 48x20
-            chunk 1 (middle anchor) text run 1 at (26.50,-3.00) startOffset 0 endOffset 6 width 47.00: "Mask 2"
+            RenderSVGPath {rect} at (176,704) size 208x167 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [x=0.00] [y=0.00] [width=100.00] [height=80.00]
+        RenderSVGText {text} at (26,-18) size 48x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 48x19
+            chunk 1 (middle anchor) text run 1 at (26.11,-3.00) startOffset 0 endOffset 6 width 47.78: "Mask 2"
       RenderSVGContainer {g} at (590,418) size 105x163 [transform={m=((1.00,0.00)(0.00,1.00)) t=(260.00,220.00)}]
         RenderSVGContainer {use} at (590,497) size 105x84
           [masker="mask_3"] RenderSVGResourceMasker {mask} at (25,20) size 50x40
           RenderSVGContainer {g} at (539,455) size 208x167
-            RenderSVGPath {rect} at (539,455) size 208x167 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [data="M0.00,0.00 L100.00,0.00 L100.00,80.00 L0.00,80.00 Z"]
-        RenderSVGText {text} at (26,-18) size 48x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 48x20
-            chunk 1 (middle anchor) text run 1 at (26.50,-3.00) startOffset 0 endOffset 6 width 47.00: "Mask 3"
+            RenderSVGPath {rect} at (539,455) size 208x167 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [x=0.00] [y=0.00] [width=100.00] [height=80.00]
+        RenderSVGText {text} at (26,-18) size 48x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 48x19
+            chunk 1 (middle anchor) text run 1 at (26.11,-3.00) startOffset 0 endOffset 6 width 47.78: "Mask 3"
       RenderSVGContainer {g} at (549,667) size 187x173 [transform={m=((1.00,0.00)(0.00,1.00)) t=(260.00,340.00)}]
         RenderSVGContainer {use} at (549,704) size 187x136
           [masker="mask_4"] RenderSVGResourceMasker {mask} at (5.08,0) size 89.84x64.06
           RenderSVGContainer {g} at (539,704) size 208x167
-            RenderSVGPath {rect} at (539,704) size 208x167 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [data="M0.00,0.00 L100.00,0.00 L100.00,80.00 L0.00,80.00 Z"]
-        RenderSVGText {text} at (26,-18) size 48x20 contains 1 chunk(s)
-          RenderSVGInlineText {#text} at (0,0) size 48x20
-            chunk 1 (middle anchor) text run 1 at (26.50,-3.00) startOffset 0 endOffset 6 width 47.00: "Mask 4"
+            RenderSVGPath {rect} at (539,704) size 208x167 [fill={[type=LINEAR-GRADIENT] [id="maskedGradient"]}] [x=0.00] [y=0.00] [width=100.00] [height=80.00]
+        RenderSVGText {text} at (26,-18) size 48x19 contains 1 chunk(s)
+          RenderSVGInlineText {#text} at (0,0) size 48x19
+            chunk 1 (middle anchor) text run 1 at (26.11,-3.00) startOffset 0 endOffset 6 width 47.78: "Mask 4"
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
index 8e1270f..1c03331 100644 (file)
@@ -1,3 +1,33 @@
+2011-02-20  Martin Robinson  <mrobinson@igalia.com>
+
+        Reviewed by Nikolas Zimmermann.
+
+        [CAIRO] Support ImageBuffers clip operation on all Cairo ports
+        https://bugs.webkit.org/show_bug.cgi?id=23526
+
+        Add support for ImageBuffer clipping on Cairo by emulating them with image
+        masks. Since masking is immediate on Cairo, we must store the mask surfaces
+        on a stack and apply them during restorePlatformState.
+
+        * platform/graphics/GraphicsContext.h: Add pushImageMask.
+        * platform/graphics/cairo/GraphicsContextCairo.cpp:
+        (WebCore::GraphicsContext::savePlatformState): Push an empty mask onto the
+        stack, so we can keep track of when to actually apply the image mask.
+        (WebCore::GraphicsContext::restorePlatformState): When we are ready to apply
+        an image mask, use cairo_mask_surface to mask the group that we pushed onto
+        our surface.
+        (WebCore::GraphicsContext::pushImageMask): Added. This method will push a surface
+        onto the image mask stack and push a group onto the Cairo state, so that the masking
+        only affects what we paint after this point.
+        * platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h: Added a class to keep
+        track of image masking information after calls to pushImageMask.
+        (WebCore::ImageMaskInformation::update): Added
+        (WebCore::ImageMaskInformation::valid): Added
+        (WebCore::ImageMaskInformation::maskSurface): Added
+        (WebCore::ImageMaskInformation::maskRect): Added
+        * platform/graphics/cairo/ImageBufferCairo.cpp:
+        (WebCore::ImageBuffer::clip): Call GraphicsContext::pushImageMask.
+
 2011-02-24  Dimitri Glazkov  <dglazkov@chromium.org>
 
         Reviewed by Eric Carlson.
index 937da98..4f976b3 100644 (file)
@@ -486,6 +486,10 @@ namespace WebCore {
         ContextShadow* contextShadow();
 #endif
 
+#if PLATFORM(CAIRO)
+        void pushImageMask(cairo_surface_t*, const FloatRect&);
+#endif
+
 #if PLATFORM(GTK)
         void setGdkExposeEvent(GdkEventExpose*);
         GdkWindow* gdkWindow() const;
index 7b0b499..e69a7a5 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (C) 2008, 2009 Dirk Schulze <krit@webkit.org>
  * Copyright (C) 2008 Nuanti Ltd.
  * Copyright (C) 2009 Brent Fulgham <bfulgham@webkit.org>
- * Copyright (C) 2010 Igalia S.L.
+ * Copyright (C) 2010, 2011 Igalia S.L.
  * Copyright (C) Research In Motion Limited 2010. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -230,12 +230,19 @@ void GraphicsContext::savePlatformState()
     cairo_save(m_data->cr);
     m_data->save();
     m_data->shadowStack.append(m_data->shadow);
+    m_data->maskImageStack.append(ImageMaskInformation());
 }
 
 void GraphicsContext::restorePlatformState()
 {
-    cairo_restore(m_data->cr);
-    m_data->restore();
+    cairo_t* cr = m_data->cr;
+    const ImageMaskInformation& maskInformation = m_data->maskImageStack.last();
+    if (maskInformation.isValid()) {
+        const FloatRect& maskRect = maskInformation.maskRect();
+        cairo_pop_group_to_source(cr);
+        cairo_mask_surface(cr, maskInformation.maskSurface(), maskRect.x(), maskRect.y());
+    }
+    m_data->maskImageStack.removeLast();
 
     if (m_data->shadowStack.isEmpty())
         m_data->shadow = ContextShadow();
@@ -243,6 +250,9 @@ void GraphicsContext::restorePlatformState()
         m_data->shadow = m_data->shadowStack.last();
         m_data->shadowStack.removeLast();
     }
+
+    cairo_restore(m_data->cr);
+    m_data->restore();
 }
 
 // Draws a filled rectangle with a stroked border.
@@ -1172,6 +1182,33 @@ InterpolationQuality GraphicsContext::imageInterpolationQuality() const
     return InterpolationDefault;
 }
 
+void GraphicsContext::pushImageMask(cairo_surface_t* surface, const FloatRect& rect)
+{
+    // We must call savePlatformState at least once before we can use image masking,
+    // since we actually apply the mask in restorePlatformState.
+    ASSERT(!m_data->maskImageStack.isEmpty());
+    m_data->maskImageStack.last().update(surface, rect);
+
+    // Cairo doesn't support the notion of an image clip, so we push a group here
+    // and then paint it to the surface with an image mask (which is an immediate
+    // operation) during restorePlatformState.
+
+    // We want to allow the clipped elements to composite with the surface as it
+    // is now, but they are isolated in another group. To make this work, we're
+    // going to blit the current surface contents onto the new group once we push it.
+    cairo_t* cr = m_data->cr;
+    cairo_surface_t* currentTarget = cairo_get_target(cr);
+    cairo_surface_flush(currentTarget);
+
+    // Pushing a new group ensures that only things painted after this point are clipped.
+    cairo_push_group(cr);
+    cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
+
+    cairo_set_source_surface(cr, currentTarget, 0, 0);
+    cairo_rectangle(cr, rect.x(), rect.y(), rect.width(), rect.height());
+    cairo_fill(cr);
+}
+
 } // namespace WebCore
 
 #endif // PLATFORM(CAIRO)
index 2c5a160..924f69a 100644 (file)
@@ -31,6 +31,7 @@
 #include "GraphicsContext.h"
 
 #include "ContextShadow.h"
+#include "RefPtrCairo.h"
 #include <cairo.h>
 #include <math.h>
 #include <stdio.h>
@@ -45,6 +46,25 @@ typedef struct _GdkExposeEvent GdkExposeEvent;
 
 namespace WebCore {
 
+// In Cairo image masking is immediate, so to emulate image clipping we must save masking
+// details as part of the context state and apply it during platform restore.
+class ImageMaskInformation {
+public:
+    void update(cairo_surface_t* maskSurface, const FloatRect& maskRect)
+    {
+        m_maskSurface = maskSurface;
+        m_maskRect = maskRect;
+    }
+
+    bool isValid() const { return m_maskSurface; }
+    cairo_surface_t* maskSurface() const { return m_maskSurface.get(); }
+    const FloatRect& maskRect() const { return m_maskRect; }
+
+private:
+    RefPtr<cairo_surface_t> m_maskSurface;
+    FloatRect m_maskRect;
+};
+
 class GraphicsContextPlatformPrivate {
 public:
     GraphicsContextPlatformPrivate()
@@ -102,6 +122,7 @@ public:
 
     ContextShadow shadow;
     Vector<ContextShadow> shadowStack;
+    Vector<ImageMaskInformation> maskImageStack;
 
 #if PLATFORM(GTK)
     GdkEventExpose* expose;
index f7d6040..9ee8a94 100644 (file)
@@ -112,10 +112,9 @@ PassRefPtr<Image> ImageBuffer::copyImage() const
     return BitmapImage::create(copySurface(m_data.m_surface));
 }
 
-void ImageBuffer::clip(GraphicsContext*, const FloatRect&) const
+void ImageBuffer::clip(GraphicsContext* context, const FloatRect& maskRect) const
 {
-    notImplemented();
-    // See https://bugs.webkit.org/show_bug.cgi?id=23526 for why this is unimplemented.
+    context->pushImageMask(m_data.m_surface, maskRect);
 }
 
 void ImageBuffer::draw(GraphicsContext* context, ColorSpace styleColorSpace, const FloatRect& destRect, const FloatRect& srcRect,