Commit e71d1897 authored by krit@webkit.org's avatar krit@webkit.org

2010-02-17 Dirk Schulze <krit@webkit.org>

        Reviewed by Nikolas Zimmermann.

        Move SVGResources to Renderers, starting with Masker
        https://bugs.webkit.org/show_bug.cgi?id=35020

        We have rendering specific code in WebCore/svg/graphics. The goal is to move
        this code into suitable Renderers. This helps us to clean up the code and makes
        maintenance easier. It also makes it possible to remove rendering specific code
        from SVG*Elements into this renderers. So the Renderer contains everything that
        is needed to use the resource.
        RenderSVGResource will be the base class for all new resource render classes like
        RenderSVGResourceMasker, RenderSVGResourceClipper and the other resources.

        This patch starts moving SVGResourceMasker to RenderSVGResourceMasker.
        Another benefit is the much more useful result in DRT on using masker.

        * Android.mk:
        * GNUmakefile.am:
        * WebCore.gypi:
        * WebCore.pro:
        * WebCore.vcproj/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * rendering/RenderObject.cpp:
        (WebCore::RenderObject::toRenderSVGResource): Conversion to RenderSVGResource base class.
        * rendering/RenderObject.h:
        (WebCore::RenderObject::isSVGResource): Check if renderer is a resource.
        * rendering/RenderPath.cpp:
        * rendering/RenderSVGImage.cpp:
        (WebCore::RenderSVGImage::destroy): Renderer gets destroyed, unregister it from it's resources.
        * rendering/RenderSVGImage.h: Some code clean up according to the webkit style.
        (WebCore::RenderSVGImage::toSVGRenderBase):
        (WebCore::RenderSVGImage::renderName):
        (WebCore::RenderSVGImage::isSVGImage):
        (WebCore::RenderSVGImage::localToParentTransform):
        (WebCore::RenderSVGImage::strokeBoundingBox):
        (WebCore::RenderSVGImage::requiresLayer):
        (WebCore::RenderSVGImage::localTransform):
        * rendering/RenderSVGInlineText.h:
        (WebCore::RenderSVGInlineText::objectBoundingBox): Needed for SVGRenderTreeAsText
        * rendering/RenderSVGModelObject.cpp:
        (WebCore::RenderSVGModelObject::destroy): Renderer gets destroyed, unregister it from it's resources.
        * rendering/RenderSVGModelObject.h:
        * rendering/RenderSVGResource.h: Added.
        (WebCore::): Base class for all Resource renderers like masker, clipper and others.
        (WebCore::RenderSVGResource::RenderSVGResource):
        (WebCore::RenderSVGResource::cast):
        (WebCore::RenderSVGResource::toRenderSVGResource):
        (WebCore::RenderSVGResource::isSVGResource): 
        (WebCore::RenderSVGResource::drawsContents):
        (WebCore::getRenderSVGResourceById):
        * rendering/RenderSVGResourceMasker.cpp: Added.
        (WebCore::RenderSVGResourceMasker::RenderSVGResourceMasker):
        (WebCore::RenderSVGResourceMasker::~RenderSVGResourceMasker):
        (WebCore::RenderSVGResourceMasker::invalidateClients): Status of masker changed, remove all clients.
        (WebCore::RenderSVGResourceMasker::invalidateClient): Status of an object changed, remove pending client.
        (WebCore::RenderSVGResourceMasker::applyResource): Apply masker to object.
        (WebCore::RenderSVGResourceMasker::resourceBoundingBox): boundingBox of the resource, depending on the object.
        (WebCore::RenderSVGResourceMasker::createMaskImage): Creates the mask image, the context gets clipped with.
        * rendering/RenderSVGResourceMasker.h: Added.
        (WebCore::MaskerData::MaskerData):
        (WebCore::RenderSVGResourceMasker::renderName):
        (WebCore::RenderSVGResourceMasker::maskUnits): Unit of mask for DRT.
        (WebCore::RenderSVGResourceMasker::maskContentUnits): Unit of childs from mask for DRT.
        (WebCore::RenderSVGResourceMasker::resourceType):
        * rendering/RenderSVGRoot.cpp:
        (WebCore::RenderSVGRoot::destroy): Renderer gets destroyed, unregister it from it's resources.
        * rendering/RenderSVGRoot.h:
        * rendering/RenderSVGText.cpp:
        (WebCore::RenderSVGText::destroy): dito.
        * rendering/RenderSVGText.h:
        * rendering/RenderTreeAsText.cpp:
        (WebCore::write):
        * rendering/SVGRenderSupport.cpp:
        (WebCore::SVGRenderBase::prepareToRenderSVGContent):
        (WebCore::SVGRenderBase::maskerBoundingBoxForRenderer):
        (WebCore::SVGRenderBase::deregisterFromResources): Unregister object from all it's resources after status changed.
        * rendering/SVGRenderSupport.h:
        (WebCore::SVGRenderBase::toSVGRenderBase):
        (WebCore::SVGRenderBase::strokeBoundingBox):
        (WebCore::SVGRenderBase::markerBoundingBox):
        * rendering/SVGRenderTreeAsText.cpp: Update TreeAsText to dump maskers correctly.
        (WebCore::operator<<):
        (WebCore::writeSVGResource):
        (WebCore::writeSVGContainer):
        (WebCore::writeSVGText):
        (WebCore::writeSVGInlineText):
        (WebCore::writeSVGImage):
        (WebCore::write):
        (WebCore::writeResourcesToObject):
        * rendering/SVGRenderTreeAsText.h:
        * svg/SVGMaskElement.cpp: Update Masker to use the new renderer.
        (WebCore::SVGMaskElement::svgAttributeChanged):
        (WebCore::SVGMaskElement::childrenChanged):
        (WebCore::SVGMaskElement::maskBoundingBox):
        (WebCore::SVGMaskElement::createRenderer):
        * svg/SVGMaskElement.h:
        * svg/SVGStyledElement.cpp: We need to tell the renderer to unregister object, after the status changed.
        (WebCore::SVGStyledElement::invalidateResources):
        (WebCore::SVGStyledElement::invalidateResourcesInAncestorChain):
        * svg/SVGUnitTypes.h: Conversion of integer to SVGUnitType.
        (WebCore::toUnitType):
        * svg/graphics/SVGResource.h:
        (WebCore::):
        (WebCore::SVGResource::isMarker):
        * svg/graphics/SVGResourceMasker.cpp: Removed.
        * svg/graphics/SVGResourceMasker.h: Removed.

2010-02-17  Dirk Schulze  <krit@webkit.org>

        Reviewed by Nikolas Zimmermann.

        Move SVGResources to Renderers, starting with Masker
        https://bugs.webkit.org/show_bug.cgi?id=35020

        With the move from SVGResourceMasker to RenderSVGResourceMasker, I changed
        the way DRT dumps resources. DRT is now able to dump multi-access
        of resources.
        Also the size of a Mask resource (depending of the object) and the access of
        the resource (togeter with the resource name) is pointed out as an insertion
        under the object.

        * platform/mac/svg/W3C-SVG-1.1/masking-intro-01-f-expected.txt:
        * platform/mac/svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt:
        * platform/mac/svg/batik/masking/maskRegions-expected.txt:
        * platform/mac/svg/css/circle-in-mask-with-shadow-expected.txt:
        * platform/mac/svg/css/mask-with-shadow-expected.txt:
        * platform/mac/svg/custom/empty-mask-expected.txt:
        * platform/mac/svg/custom/grayscale-gradient-mask-expected.txt:
        * platform/mac/svg/custom/js-late-mask-and-object-creation-expected.txt:
        * platform/mac/svg/custom/js-late-mask-creation-expected.txt:
        * platform/mac/svg/custom/mask-changes-expected.txt:
        * platform/mac/svg/custom/mask-child-changes-expected.txt:
        * platform/mac/svg/custom/mask-excessive-malloc-expected.txt:
        * platform/mac/svg/custom/mask-inside-defs-expected.txt:
        * platform/mac/svg/custom/mask-invalidation-expected.txt:
        * platform/mac/svg/custom/mask-on-multiple-objects-expected.txt:
        * platform/mac/svg/custom/mask-with-all-units-expected.txt:
        * platform/mac/svg/custom/mask-with-default-value-expected.txt:
        * platform/mac/svg/custom/resource-invalidate-on-target-update-expected.txt:
        * platform/mac/svg/custom/visibility-override-mask-expected.txt:
        * platform/mac/svg/filters/filter-clip-expected.txt:
        * svg/custom/transformedMaskFails-expected.txt:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@54909 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent ec77e33a
2010-02-17 Dirk Schulze <krit@webkit.org>
Reviewed by Nikolas Zimmermann.
Move SVGResources to Renderers, starting with Masker
https://bugs.webkit.org/show_bug.cgi?id=35020
With the move from SVGResourceMasker to RenderSVGResourceMasker, I changed
the way DRT dumps resources. DRT is now able to dump multi-access
of resources.
Also the size of a Mask resource (depending of the object) and the access of
the resource (togeter with the resource name) is pointed out as an insertion
under the object.
* platform/mac/svg/W3C-SVG-1.1/masking-intro-01-f-expected.txt:
* platform/mac/svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt:
* platform/mac/svg/batik/masking/maskRegions-expected.txt:
* platform/mac/svg/css/circle-in-mask-with-shadow-expected.txt:
* platform/mac/svg/css/mask-with-shadow-expected.txt:
* platform/mac/svg/custom/empty-mask-expected.txt:
* platform/mac/svg/custom/grayscale-gradient-mask-expected.txt:
* platform/mac/svg/custom/js-late-mask-and-object-creation-expected.txt:
* platform/mac/svg/custom/js-late-mask-creation-expected.txt:
* platform/mac/svg/custom/mask-changes-expected.txt:
* platform/mac/svg/custom/mask-child-changes-expected.txt:
* platform/mac/svg/custom/mask-excessive-malloc-expected.txt:
* platform/mac/svg/custom/mask-inside-defs-expected.txt:
* platform/mac/svg/custom/mask-invalidation-expected.txt:
* platform/mac/svg/custom/mask-on-multiple-objects-expected.txt:
* platform/mac/svg/custom/mask-with-all-units-expected.txt:
* platform/mac/svg/custom/mask-with-default-value-expected.txt:
* platform/mac/svg/custom/resource-invalidate-on-target-update-expected.txt:
* platform/mac/svg/custom/visibility-override-mask-expected.txt:
* platform/mac/svg/filters/filter-clip-expected.txt:
* svg/custom/transformedMaskFails-expected.txt:
2010-02-17 Kenneth Russell <kbr@google.com>
Reviewed by Oliver Hunt.
......
KCanvasResource {id="one" [type=CLIPPER] [clip data=[[winding=NON-ZERO] [bounding box mode=1] [path=M0.50,0.50 L0.50,0.51 L0.50,0.53 L0.50,0.54 L0.49,0.55 L0.49,0.56 L0.49,0.57 L0.48,0.59 L0.48,0.60 L0.47,0.61 L0.46,0.62 L0.45,0.63 L0.45,0.64 L0.44,0.65 L0.43,0.65 L0.42,0.66 L0.41,0.67 L0.40,0.68 L0.39,0.68 L0.37,0.69 L0.36,0.69 L0.35,0.69 L0.34,0.70 L0.33,0.70 L0.31,0.70 L0.30,0.70 L0.29,0.70 L0.27,0.70 L0.26,0.70 L0.25,0.69 L0.24,0.69 L0.23,0.69 L0.21,0.68 L0.20,0.68 L0.19,0.67 L0.18,0.66 L0.17,0.65 L0.16,0.65 L0.15,0.64 L0.15,0.63 L0.14,0.62 L0.13,0.61 L0.12,0.60 L0.12,0.59 L0.11,0.57 L0.11,0.56 L0.11,0.55 L0.10,0.54 L0.10,0.53 L0.10,0.51 L0.10,0.50 L0.10,0.49 L0.10,0.47 L0.10,0.46 L0.11,0.45 L0.11,0.44 L0.11,0.43 L0.12,0.41 L0.12,0.40 L0.13,0.39 L0.14,0.38 L0.15,0.37 L0.15,0.36 L0.16,0.35 L0.17,0.35 L0.18,0.34 L0.19,0.33 L0.20,0.32 L0.21,0.32 L0.23,0.31 L0.24,0.31 L0.25,0.31 L0.26,0.30 L0.27,0.30 L0.29,0.30 L0.30,0.30 L0.31,0.30 L0.33,0.30 L0.34,0.30 L0.35,0.31 L0.36,0.31 L0.37,0.31 L0.39,0.32 L0.40,0.32 L0.41,0.33 L0.42,0.34 L0.43,0.35 L0.44,0.35 L0.45,0.36 L0.45,0.37 L0.46,0.38 L0.47,0.39 L0.48,0.40 L0.48,0.41 L0.49,0.43 L0.49,0.44 L0.49,0.45 L0.50,0.46 L0.50,0.47 L0.50,0.49 Z], [winding=NON-ZERO] [bounding box mode=1] [path=M0.90,0.50 L0.90,0.51 L0.90,0.53 L0.90,0.54 L0.89,0.55 L0.89,0.56 L0.89,0.57 L0.88,0.59 L0.88,0.60 L0.87,0.61 L0.86,0.62 L0.85,0.63 L0.85,0.64 L0.84,0.65 L0.83,0.65 L0.82,0.66 L0.81,0.67 L0.80,0.68 L0.79,0.68 L0.77,0.69 L0.76,0.69 L0.75,0.69 L0.74,0.70 L0.73,0.70 L0.71,0.70 L0.70,0.70 L0.69,0.70 L0.67,0.70 L0.66,0.70 L0.65,0.69 L0.64,0.69 L0.63,0.69 L0.61,0.68 L0.60,0.68 L0.59,0.67 L0.58,0.66 L0.57,0.65 L0.56,0.65 L0.55,0.64 L0.55,0.63 L0.54,0.62 L0.53,0.61 L0.52,0.60 L0.52,0.59 L0.51,0.57 L0.51,0.56 L0.51,0.55 L0.50,0.54 L0.50,0.53 L0.50,0.51 L0.50,0.50 L0.50,0.49 L0.50,0.47 L0.50,0.46 L0.51,0.45 L0.51,0.44 L0.51,0.43 L0.52,0.41 L0.52,0.40 L0.53,0.39 L0.54,0.38 L0.55,0.37 L0.55,0.36 L0.56,0.35 L0.57,0.35 L0.58,0.34 L0.59,0.33 L0.60,0.32 L0.61,0.32 L0.63,0.31 L0.64,0.31 L0.65,0.31 L0.66,0.30 L0.67,0.30 L0.69,0.30 L0.70,0.30 L0.71,0.30 L0.73,0.30 L0.74,0.30 L0.75,0.31 L0.76,0.31 L0.77,0.31 L0.79,0.32 L0.80,0.32 L0.81,0.33 L0.82,0.34 L0.83,0.35 L0.84,0.35 L0.85,0.36 L0.85,0.37 L0.86,0.38 L0.87,0.39 L0.88,0.40 L0.88,0.41 L0.89,0.43 L0.89,0.44 L0.89,0.45 L0.90,0.46 L0.90,0.47 L0.90,0.49 Z]]]}
KCanvasResource {id="two" [type=MASKER]}
layer at (0,0) size 480x360
RenderView at (0,0) size 480x360
layer at (0,0) size 480x360
......@@ -16,10 +15,11 @@ layer at (0,0) size 480x360
RenderSVGInlineText {#text} at (0,-14) size 111x18
chunk 1 text run 1 at (50.00,110.00) startOffset 0 endOffset 19 width 111.00: "With a 'clip-path':"
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGContainer {mask} at (0,0) size 1x1
RenderSVGResourceMasker {mask} [id="two"] [maskUnits=objectBoundingBox] [maskContentUnits=objectBoundingBox]
RenderPath {circle} at (0,0) size 1x1 [stroke={[type=SOLID] [color=#FF0000] [stroke width=0.15]}] [fill={[type=SOLID] [color=#0000FF]}] [data="M0.50,0.50 L0.50,0.51 L0.50,0.53 L0.50,0.54 L0.49,0.55 L0.49,0.56 L0.49,0.57 L0.48,0.59 L0.48,0.60 L0.47,0.61 L0.46,0.62 L0.45,0.63 L0.45,0.64 L0.44,0.65 L0.43,0.65 L0.42,0.66 L0.41,0.67 L0.40,0.68 L0.39,0.68 L0.37,0.69 L0.36,0.69 L0.35,0.69 L0.34,0.70 L0.33,0.70 L0.31,0.70 L0.30,0.70 L0.29,0.70 L0.27,0.70 L0.26,0.70 L0.25,0.69 L0.24,0.69 L0.23,0.69 L0.21,0.68 L0.20,0.68 L0.19,0.67 L0.18,0.66 L0.17,0.65 L0.16,0.65 L0.15,0.64 L0.15,0.63 L0.14,0.62 L0.13,0.61 L0.12,0.60 L0.12,0.59 L0.11,0.57 L0.11,0.56 L0.11,0.55 L0.10,0.54 L0.10,0.53 L0.10,0.51 L0.10,0.50 L0.10,0.49 L0.10,0.47 L0.10,0.46 L0.11,0.45 L0.11,0.44 L0.11,0.43 L0.12,0.41 L0.12,0.40 L0.13,0.39 L0.14,0.38 L0.15,0.37 L0.15,0.36 L0.16,0.35 L0.17,0.35 L0.18,0.34 L0.19,0.33 L0.20,0.32 L0.21,0.32 L0.23,0.31 L0.24,0.31 L0.25,0.31 L0.26,0.30 L0.27,0.30 L0.29,0.30 L0.30,0.30 L0.31,0.30 L0.33,0.30 L0.34,0.30 L0.35,0.31 L0.36,0.31 L0.37,0.31 L0.39,0.32 L0.40,0.32 L0.41,0.33 L0.42,0.34 L0.43,0.35 L0.44,0.35 L0.45,0.36 L0.45,0.37 L0.46,0.38 L0.47,0.39 L0.48,0.40 L0.48,0.41 L0.49,0.43 L0.49,0.44 L0.49,0.45 L0.50,0.46 L0.50,0.47 L0.50,0.49 Z"]
RenderPath {circle} at (0,0) size 1x1 [fill={[type=SOLID] [color=#0000FF]}] [data="M0.90,0.50 L0.90,0.51 L0.90,0.53 L0.90,0.54 L0.89,0.55 L0.89,0.56 L0.89,0.57 L0.88,0.59 L0.88,0.60 L0.87,0.61 L0.86,0.62 L0.85,0.63 L0.85,0.64 L0.84,0.65 L0.83,0.65 L0.82,0.66 L0.81,0.67 L0.80,0.68 L0.79,0.68 L0.77,0.69 L0.76,0.69 L0.75,0.69 L0.74,0.70 L0.73,0.70 L0.71,0.70 L0.70,0.70 L0.69,0.70 L0.67,0.70 L0.66,0.70 L0.65,0.69 L0.64,0.69 L0.63,0.69 L0.61,0.68 L0.60,0.68 L0.59,0.67 L0.58,0.66 L0.57,0.65 L0.56,0.65 L0.55,0.64 L0.55,0.63 L0.54,0.62 L0.53,0.61 L0.52,0.60 L0.52,0.59 L0.51,0.57 L0.51,0.56 L0.51,0.55 L0.50,0.54 L0.50,0.53 L0.50,0.51 L0.50,0.50 L0.50,0.49 L0.50,0.47 L0.50,0.46 L0.51,0.45 L0.51,0.44 L0.51,0.43 L0.52,0.41 L0.52,0.40 L0.53,0.39 L0.54,0.38 L0.55,0.37 L0.55,0.36 L0.56,0.35 L0.57,0.35 L0.58,0.34 L0.59,0.33 L0.60,0.32 L0.61,0.32 L0.63,0.31 L0.64,0.31 L0.65,0.31 L0.66,0.30 L0.67,0.30 L0.69,0.30 L0.70,0.30 L0.71,0.30 L0.73,0.30 L0.74,0.30 L0.75,0.31 L0.76,0.31 L0.77,0.31 L0.79,0.32 L0.80,0.32 L0.81,0.33 L0.82,0.34 L0.83,0.35 L0.84,0.35 L0.85,0.36 L0.85,0.37 L0.86,0.38 L0.87,0.39 L0.88,0.40 L0.88,0.41 L0.89,0.43 L0.89,0.44 L0.89,0.45 L0.90,0.46 L0.90,0.47 L0.90,0.49 Z"]
RenderPath {rect} at (150,150) size 200x200 [fill={[type=SOLID] [color=#00008B]}] [data="M150.00,150.00 L350.00,150.00 L350.00,350.00 L150.00,350.00 Z"]
[masker="two"] RenderSVGResourceMasker {mask} at (130,130) size 240x240
RenderSVGText {text} at (50,260) size 89x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 89x18
chunk 1 text run 1 at (50.00,260.00) startOffset 0 endOffset 14 width 89.00: "With a 'mask':"
......
KCanvasResource {id="mask1" [type=MASKER]}
KRenderingPaintServer {id="Grad1" [type=LINEAR-GRADIENT] [stops=[(0.00,#FFFFFF), (1.00,#FFFFFF7F)]] [bounding box mode=0] [start=(60,50)] [end=(60,120)]}
KCanvasResource {id="mask2" [type=MASKER]}
KCanvasResource {id="mask3" [type=MASKER]}
layer at (0,0) size 480x360
RenderView at (0,0) size 480x360
layer at (0,0) size 480x360
......@@ -12,22 +9,24 @@ layer at (0,0) size 480x360
RenderSVGInlineText {#text} at (0,-13) size 139x16
chunk 1 text run 1 at (10.00,20.00) startOffset 0 endOffset 21 width 139.00: "Test for mask support"
RenderPath {rect} at (10,30) size 100x260 [fill={[type=SOLID] [color=#FF0000]}] [data="M10.00,30.00 L110.00,30.00 L110.00,290.00 L10.00,290.00 Z"]
RenderSVGContainer {mask} at (60,50) size 100x60
RenderSVGResourceMasker {mask} [id="mask1"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGHiddenContainer {linearGradient} at (0,0) size 0x0
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderPath {rect} at (60,50) size 100x60 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#FFFFFF), (1.00,#FFFFFF7F)]] [bounding box mode=0] [start=(60,50)] [end=(60,120)]}] [data="M60.00,50.00 L160.00,50.00 L160.00,110.00 L60.00,110.00 Z"]
RenderPath {rect} at (60,50) size 100x60 [fill={[type=SOLID] [color=#00FF00]}] [data="M60.00,50.00 L160.00,50.00 L160.00,110.00 L60.00,110.00 Z"]
[masker="mask1"] RenderSVGResourceMasker {mask} at (60,50) size 100x60
RenderSVGText {text} at (200,65) size 163x14 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-11) size 163x14
chunk 1 text run 1 at (200.00,65.00) startOffset 0 endOffset 30 width 163.00: "Mask with linear gradient from"
RenderSVGText {text} at (200,80) size 135x14 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-11) size 135x14
chunk 1 text run 1 at (200.00,80.00) startOffset 0 endOffset 25 width 135.00: "opacity=1 to opactity=0.5"
RenderSVGContainer {mask} at (60,120) size 100x30
RenderSVGResourceMasker {mask} [id="mask2"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (60,120) size 100x30 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.50]}] [data="M60.00,120.00 L160.00,120.00 L160.00,150.00 L60.00,150.00 Z"]
RenderPath {rect} at (60,120) size 100x30 [fill={[type=SOLID] [color=#00FF00]}] [data="M60.00,120.00 L160.00,120.00 L160.00,150.00 L60.00,150.00 Z"]
[masker="mask2"] RenderSVGResourceMasker {mask} at (60,120) size 100x30
RenderSVGText {text} at (200,135) size 173x14 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-11) size 173x14
chunk 1 text run 1 at (200.00,135.00) startOffset 0 endOffset 32 width 173.00: "Mask with uniform opacity of 0.5"
......@@ -35,13 +34,15 @@ layer at (0,0) size 480x360
RenderSVGText {text} at (200,175) size 200x14 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-11) size 200x14
chunk 1 text run 1 at (200.00,175.00) startOffset 0 endOffset 37 width 200.00: "Rectangle with uniform opacity of 0.5"
RenderSVGContainer {mask} at (60,200) size 200x100
RenderSVGResourceMasker {mask} [id="mask3"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (60,200) size 200x25 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.50]}] [data="M60.00,200.00 L260.00,200.00 L260.00,225.00 L60.00,225.00 Z"]
RenderPath {rect} at (60,225) size 200x25 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.20]}] [data="M60.00,225.00 L260.00,225.00 L260.00,250.00 L60.00,250.00 Z"]
RenderPath {rect} at (60,250) size 200x25 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M60.00,250.00 L260.00,250.00 L260.00,275.00 L60.00,275.00 Z"]
RenderPath {rect} at (60,275) size 200x25 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.70]}] [data="M60.00,275.00 L260.00,275.00 L260.00,300.00 L60.00,300.00 Z"]
RenderSVGText {text} at (60,280) size 162x110 contains 1 chunk(s)
[masker="mask3"] RenderSVGResourceMasker {mask} at (60,200) size 200x100
RenderSVGInlineText {#text} at (0,-77) size 162x110
[masker="mask3"] RenderSVGResourceMasker {mask} at (60,200) size 200x100
chunk 1 text run 1 at (60.00,280.00) startOffset 0 endOffset 3 width 121.33: "SVG"
RenderSVGText {text} at (200,225) size 200x14 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-11) size 200x14
......
KRenderingPaintServer {id="maskedGradient" [type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}
KCanvasResource {id="mask_1" [type=MASKER]}
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 450x500
......@@ -10,12 +9,13 @@ layer at (0,0) size 450x500
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderPath {rect} at (0,0) size 300x300 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}] [data="M0.00,0.00 L300.00,0.00 L300.00,300.00 L0.00,300.00 Z"]
RenderSVGContainer {mask} at (5,5) size 220x220
RenderSVGResourceMasker {mask} [id="mask_1"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
RenderPath {circle} at (5,5) size 120x120 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M105.00,55.00 L104.90,58.14 L104.61,61.27 L104.11,64.37 L103.43,67.43 L102.55,70.45 L101.49,73.41 L100.24,76.29 L98.82,79.09 L97.22,81.79 L95.45,84.39 L93.53,86.87 L91.45,89.23 L89.23,91.45 L86.87,93.53 L84.39,95.45 L81.79,97.22 L79.09,98.82 L76.29,100.24 L73.41,101.49 L70.45,102.55 L67.43,103.43 L64.37,104.11 L61.27,104.61 L58.14,104.90 L55.00,105.00 L51.86,104.90 L48.73,104.61 L45.63,104.11 L42.57,103.43 L39.55,102.55 L36.59,101.49 L33.71,100.24 L30.91,98.82 L28.21,97.22 L25.61,95.45 L23.13,93.53 L20.77,91.45 L18.55,89.23 L16.47,86.87 L14.55,84.39 L12.78,81.79 L11.18,79.09 L9.76,76.29 L8.51,73.41 L7.45,70.45 L6.57,67.43 L5.89,64.37 L5.39,61.27 L5.10,58.14 L5.00,55.00 L5.10,51.86 L5.39,48.73 L5.89,45.63 L6.57,42.57 L7.45,39.55 L8.51,36.59 L9.76,33.71 L11.18,30.91 L12.78,28.21 L14.55,25.61 L16.47,23.13 L18.55,20.77 L20.77,18.55 L23.13,16.47 L25.61,14.55 L28.21,12.78 L30.91,11.18 L33.71,9.76 L36.59,8.51 L39.55,7.45 L42.57,6.57 L45.63,5.89 L48.73,5.39 L51.86,5.10 L55.00,5.00 L58.14,5.10 L61.27,5.39 L64.37,5.89 L67.43,6.57 L70.45,7.45 L73.41,8.51 L76.29,9.76 L79.09,11.18 L81.79,12.78 L84.39,14.55 L86.87,16.47 L89.23,18.55 L91.45,20.77 L93.53,23.13 L95.45,25.61 L97.22,28.21 L98.82,30.91 L100.24,33.71 L101.49,36.59 L102.55,39.55 L103.43,42.57 L104.11,45.63 L104.61,48.73 L104.90,51.86 Z"]
RenderPath {circle} at (5,115) size 120x120 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M105.00,165.00 L104.90,168.14 L104.61,171.27 L104.11,174.37 L103.43,177.43 L102.55,180.45 L101.49,183.41 L100.24,186.29 L98.82,189.09 L97.22,191.79 L95.45,194.39 L93.53,196.87 L91.45,199.23 L89.23,201.45 L86.87,203.53 L84.39,205.45 L81.79,207.22 L79.09,208.82 L76.29,210.24 L73.41,211.49 L70.45,212.55 L67.43,213.43 L64.37,214.11 L61.27,214.61 L58.14,214.90 L55.00,215.00 L51.86,214.90 L48.73,214.61 L45.63,214.11 L42.57,213.43 L39.55,212.55 L36.59,211.49 L33.71,210.24 L30.91,208.82 L28.21,207.22 L25.61,205.45 L23.13,203.53 L20.77,201.45 L18.55,199.23 L16.47,196.87 L14.55,194.39 L12.78,191.79 L11.18,189.09 L9.76,186.29 L8.51,183.41 L7.45,180.45 L6.57,177.43 L5.89,174.37 L5.39,171.27 L5.10,168.14 L5.00,165.00 L5.10,161.86 L5.39,158.73 L5.89,155.63 L6.57,152.57 L7.45,149.55 L8.51,146.59 L9.76,143.71 L11.18,140.91 L12.78,138.21 L14.55,135.61 L16.47,133.13 L18.55,130.77 L20.77,128.55 L23.13,126.47 L25.61,124.55 L28.21,122.78 L30.91,121.18 L33.71,119.76 L36.59,118.51 L39.55,117.45 L42.57,116.57 L45.63,115.89 L48.73,115.39 L51.86,115.10 L55.00,115.00 L58.14,115.10 L61.27,115.39 L64.37,115.89 L67.43,116.57 L70.45,117.45 L73.41,118.51 L76.29,119.76 L79.09,121.18 L81.79,122.78 L84.39,124.55 L86.87,126.47 L89.23,128.55 L91.45,130.77 L93.53,133.13 L95.45,135.61 L97.22,138.21 L98.82,140.91 L100.24,143.71 L101.49,146.59 L102.55,149.55 L103.43,152.57 L104.11,155.63 L104.61,158.73 L104.90,161.86 Z"]
RenderPath {circle} at (115,5) size 120x120 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M215.00,55.00 L214.90,58.14 L214.61,61.27 L214.11,64.37 L213.43,67.43 L212.55,70.45 L211.49,73.41 L210.24,76.29 L208.82,79.09 L207.22,81.79 L205.45,84.39 L203.53,86.87 L201.45,89.23 L199.23,91.45 L196.87,93.53 L194.39,95.45 L191.79,97.22 L189.09,98.82 L186.29,100.24 L183.41,101.49 L180.45,102.55 L177.43,103.43 L174.37,104.11 L171.27,104.61 L168.14,104.90 L165.00,105.00 L161.86,104.90 L158.73,104.61 L155.63,104.11 L152.57,103.43 L149.55,102.55 L146.59,101.49 L143.71,100.24 L140.91,98.82 L138.21,97.22 L135.61,95.45 L133.13,93.53 L130.77,91.45 L128.55,89.23 L126.47,86.87 L124.55,84.39 L122.78,81.79 L121.18,79.09 L119.76,76.29 L118.51,73.41 L117.45,70.45 L116.57,67.43 L115.89,64.37 L115.39,61.27 L115.10,58.14 L115.00,55.00 L115.10,51.86 L115.39,48.73 L115.89,45.63 L116.57,42.57 L117.45,39.55 L118.51,36.59 L119.76,33.71 L121.18,30.91 L122.78,28.21 L124.55,25.61 L126.47,23.13 L128.55,20.77 L130.77,18.55 L133.13,16.47 L135.61,14.55 L138.21,12.78 L140.91,11.18 L143.71,9.76 L146.59,8.51 L149.55,7.45 L152.57,6.57 L155.63,5.89 L158.73,5.39 L161.86,5.10 L165.00,5.00 L168.14,5.10 L171.27,5.39 L174.37,5.89 L177.43,6.57 L180.45,7.45 L183.41,8.51 L186.29,9.76 L189.09,11.18 L191.79,12.78 L194.39,14.55 L196.87,16.47 L199.23,18.55 L201.45,20.77 L203.53,23.13 L205.45,25.61 L207.22,28.21 L208.82,30.91 L210.24,33.71 L211.49,36.59 L212.55,39.55 L213.43,42.57 L214.11,45.63 L214.61,48.73 L214.90,51.86 Z"]
RenderPath {circle} at (115,115) size 120x120 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M215.00,165.00 L214.90,168.14 L214.61,171.27 L214.11,174.37 L213.43,177.43 L212.55,180.45 L211.49,183.41 L210.24,186.29 L208.82,189.09 L207.22,191.79 L205.45,194.39 L203.53,196.87 L201.45,199.23 L199.23,201.45 L196.87,203.53 L194.39,205.45 L191.79,207.22 L189.09,208.82 L186.29,210.24 L183.41,211.49 L180.45,212.55 L177.43,213.43 L174.37,214.11 L171.27,214.61 L168.14,214.90 L165.00,215.00 L161.86,214.90 L158.73,214.61 L155.63,214.11 L152.57,213.43 L149.55,212.55 L146.59,211.49 L143.71,210.24 L140.91,208.82 L138.21,207.22 L135.61,205.45 L133.13,203.53 L130.77,201.45 L128.55,199.23 L126.47,196.87 L124.55,194.39 L122.78,191.79 L121.18,189.09 L119.76,186.29 L118.51,183.41 L117.45,180.45 L116.57,177.43 L115.89,174.37 L115.39,171.27 L115.10,168.14 L115.00,165.00 L115.10,161.86 L115.39,158.73 L115.89,155.63 L116.57,152.57 L117.45,149.55 L118.51,146.59 L119.76,143.71 L121.18,140.91 L122.78,138.21 L124.55,135.61 L126.47,133.13 L128.55,130.77 L130.77,128.55 L133.13,126.47 L135.61,124.55 L138.21,122.78 L140.91,121.18 L143.71,119.76 L146.59,118.51 L149.55,117.45 L152.57,116.57 L155.63,115.89 L158.73,115.39 L161.86,115.10 L165.00,115.00 L168.14,115.10 L171.27,115.39 L174.37,115.89 L177.43,116.57 L180.45,117.45 L183.41,118.51 L186.29,119.76 L189.09,121.18 L191.79,122.78 L194.39,124.55 L196.87,126.47 L199.23,128.55 L201.45,130.77 L203.53,133.13 L205.45,135.61 L207.22,138.21 L208.82,140.91 L210.24,143.71 L211.49,146.59 L212.55,149.55 L213.43,152.57 L214.11,155.63 L214.61,158.73 L214.90,161.86 Z"]
RenderSVGContainer {g} at (0,0) size 300x300
RenderSVGContainer {use} at (0,0) size 300x300
[masker="mask_1"] RenderSVGResourceMasker {mask} at (-30,-30) size 360x360
RenderSVGContainer {g} at (0,0) size 300x300
RenderPath {rect} at (0,0) size 300x300 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}] [data="M0.00,0.00 L300.00,0.00 L300.00,300.00 L0.00,300.00 Z"]
KRenderingPaintServer {id="maskedGradient" [type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}
KCanvasResource {id="mask_1" [type=MASKER]}
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 450x500
......@@ -10,12 +9,13 @@ layer at (0,0) size 450x500
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderPath {rect} at (0,0) size 300x300 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}] [data="M0.00,0.00 L300.00,0.00 L300.00,300.00 L0.00,300.00 Z"]
RenderSVGContainer {mask} at (5,5) size 230x230
RenderSVGResourceMasker {mask} [id="mask_1"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
RenderPath {circle} at (5,5) size 110x110 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M105.00,55.00 L104.90,58.14 L104.61,61.27 L104.11,64.37 L103.43,67.43 L102.55,70.45 L101.49,73.41 L100.24,76.29 L98.82,79.09 L97.22,81.79 L95.45,84.39 L93.53,86.87 L91.45,89.23 L89.23,91.45 L86.87,93.53 L84.39,95.45 L81.79,97.22 L79.09,98.82 L76.29,100.24 L73.41,101.49 L70.45,102.55 L67.43,103.43 L64.37,104.11 L61.27,104.61 L58.14,104.90 L55.00,105.00 L51.86,104.90 L48.73,104.61 L45.63,104.11 L42.57,103.43 L39.55,102.55 L36.59,101.49 L33.71,100.24 L30.91,98.82 L28.21,97.22 L25.61,95.45 L23.13,93.53 L20.77,91.45 L18.55,89.23 L16.47,86.87 L14.55,84.39 L12.78,81.79 L11.18,79.09 L9.76,76.29 L8.51,73.41 L7.45,70.45 L6.57,67.43 L5.89,64.37 L5.39,61.27 L5.10,58.14 L5.00,55.00 L5.10,51.86 L5.39,48.73 L5.89,45.63 L6.57,42.57 L7.45,39.55 L8.51,36.59 L9.76,33.71 L11.18,30.91 L12.78,28.21 L14.55,25.61 L16.47,23.13 L18.55,20.77 L20.77,18.55 L23.13,16.47 L25.61,14.55 L28.21,12.78 L30.91,11.18 L33.71,9.76 L36.59,8.51 L39.55,7.45 L42.57,6.57 L45.63,5.89 L48.73,5.39 L51.86,5.10 L55.00,5.00 L58.14,5.10 L61.27,5.39 L64.37,5.89 L67.43,6.57 L70.45,7.45 L73.41,8.51 L76.29,9.76 L79.09,11.18 L81.79,12.78 L84.39,14.55 L86.87,16.47 L89.23,18.55 L91.45,20.77 L93.53,23.13 L95.45,25.61 L97.22,28.21 L98.82,30.91 L100.24,33.71 L101.49,36.59 L102.55,39.55 L103.43,42.57 L104.11,45.63 L104.61,48.73 L104.90,51.86 Z"]
RenderPath {circle} at (5,115) size 110x110 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M105.00,165.00 L104.90,168.14 L104.61,171.27 L104.11,174.37 L103.43,177.43 L102.55,180.45 L101.49,183.41 L100.24,186.29 L98.82,189.09 L97.22,191.79 L95.45,194.39 L93.53,196.87 L91.45,199.23 L89.23,201.45 L86.87,203.53 L84.39,205.45 L81.79,207.22 L79.09,208.82 L76.29,210.24 L73.41,211.49 L70.45,212.55 L67.43,213.43 L64.37,214.11 L61.27,214.61 L58.14,214.90 L55.00,215.00 L51.86,214.90 L48.73,214.61 L45.63,214.11 L42.57,213.43 L39.55,212.55 L36.59,211.49 L33.71,210.24 L30.91,208.82 L28.21,207.22 L25.61,205.45 L23.13,203.53 L20.77,201.45 L18.55,199.23 L16.47,196.87 L14.55,194.39 L12.78,191.79 L11.18,189.09 L9.76,186.29 L8.51,183.41 L7.45,180.45 L6.57,177.43 L5.89,174.37 L5.39,171.27 L5.10,168.14 L5.00,165.00 L5.10,161.86 L5.39,158.73 L5.89,155.63 L6.57,152.57 L7.45,149.55 L8.51,146.59 L9.76,143.71 L11.18,140.91 L12.78,138.21 L14.55,135.61 L16.47,133.13 L18.55,130.77 L20.77,128.55 L23.13,126.47 L25.61,124.55 L28.21,122.78 L30.91,121.18 L33.71,119.76 L36.59,118.51 L39.55,117.45 L42.57,116.57 L45.63,115.89 L48.73,115.39 L51.86,115.10 L55.00,115.00 L58.14,115.10 L61.27,115.39 L64.37,115.89 L67.43,116.57 L70.45,117.45 L73.41,118.51 L76.29,119.76 L79.09,121.18 L81.79,122.78 L84.39,124.55 L86.87,126.47 L89.23,128.55 L91.45,130.77 L93.53,133.13 L95.45,135.61 L97.22,138.21 L98.82,140.91 L100.24,143.71 L101.49,146.59 L102.55,149.55 L103.43,152.57 L104.11,155.63 L104.61,158.73 L104.90,161.86 Z"]
RenderPath {circle} at (115,5) size 110x110 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M215.00,55.00 L214.90,58.14 L214.61,61.27 L214.11,64.37 L213.43,67.43 L212.55,70.45 L211.49,73.41 L210.24,76.29 L208.82,79.09 L207.22,81.79 L205.45,84.39 L203.53,86.87 L201.45,89.23 L199.23,91.45 L196.87,93.53 L194.39,95.45 L191.79,97.22 L189.09,98.82 L186.29,100.24 L183.41,101.49 L180.45,102.55 L177.43,103.43 L174.37,104.11 L171.27,104.61 L168.14,104.90 L165.00,105.00 L161.86,104.90 L158.73,104.61 L155.63,104.11 L152.57,103.43 L149.55,102.55 L146.59,101.49 L143.71,100.24 L140.91,98.82 L138.21,97.22 L135.61,95.45 L133.13,93.53 L130.77,91.45 L128.55,89.23 L126.47,86.87 L124.55,84.39 L122.78,81.79 L121.18,79.09 L119.76,76.29 L118.51,73.41 L117.45,70.45 L116.57,67.43 L115.89,64.37 L115.39,61.27 L115.10,58.14 L115.00,55.00 L115.10,51.86 L115.39,48.73 L115.89,45.63 L116.57,42.57 L117.45,39.55 L118.51,36.59 L119.76,33.71 L121.18,30.91 L122.78,28.21 L124.55,25.61 L126.47,23.13 L128.55,20.77 L130.77,18.55 L133.13,16.47 L135.61,14.55 L138.21,12.78 L140.91,11.18 L143.71,9.76 L146.59,8.51 L149.55,7.45 L152.57,6.57 L155.63,5.89 L158.73,5.39 L161.86,5.10 L165.00,5.00 L168.14,5.10 L171.27,5.39 L174.37,5.89 L177.43,6.57 L180.45,7.45 L183.41,8.51 L186.29,9.76 L189.09,11.18 L191.79,12.78 L194.39,14.55 L196.87,16.47 L199.23,18.55 L201.45,20.77 L203.53,23.13 L205.45,25.61 L207.22,28.21 L208.82,30.91 L210.24,33.71 L211.49,36.59 L212.55,39.55 L213.43,42.57 L214.11,45.63 L214.61,48.73 L214.90,51.86 Z"]
RenderPath {circle} at (115,115) size 110x110 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M215.00,165.00 L214.90,168.14 L214.61,171.27 L214.11,174.37 L213.43,177.43 L212.55,180.45 L211.49,183.41 L210.24,186.29 L208.82,189.09 L207.22,191.79 L205.45,194.39 L203.53,196.87 L201.45,199.23 L199.23,201.45 L196.87,203.53 L194.39,205.45 L191.79,207.22 L189.09,208.82 L186.29,210.24 L183.41,211.49 L180.45,212.55 L177.43,213.43 L174.37,214.11 L171.27,214.61 L168.14,214.90 L165.00,215.00 L161.86,214.90 L158.73,214.61 L155.63,214.11 L152.57,213.43 L149.55,212.55 L146.59,211.49 L143.71,210.24 L140.91,208.82 L138.21,207.22 L135.61,205.45 L133.13,203.53 L130.77,201.45 L128.55,199.23 L126.47,196.87 L124.55,194.39 L122.78,191.79 L121.18,189.09 L119.76,186.29 L118.51,183.41 L117.45,180.45 L116.57,177.43 L115.89,174.37 L115.39,171.27 L115.10,168.14 L115.00,165.00 L115.10,161.86 L115.39,158.73 L115.89,155.63 L116.57,152.57 L117.45,149.55 L118.51,146.59 L119.76,143.71 L121.18,140.91 L122.78,138.21 L124.55,135.61 L126.47,133.13 L128.55,130.77 L130.77,128.55 L133.13,126.47 L135.61,124.55 L138.21,122.78 L140.91,121.18 L143.71,119.76 L146.59,118.51 L149.55,117.45 L152.57,116.57 L155.63,115.89 L158.73,115.39 L161.86,115.10 L165.00,115.00 L168.14,115.10 L171.27,115.39 L174.37,115.89 L177.43,116.57 L180.45,117.45 L183.41,118.51 L186.29,119.76 L189.09,121.18 L191.79,122.78 L194.39,124.55 L196.87,126.47 L199.23,128.55 L201.45,130.77 L203.53,133.13 L205.45,135.61 L207.22,138.21 L208.82,140.91 L210.24,143.71 L211.49,146.59 L212.55,149.55 L213.43,152.57 L214.11,155.63 L214.61,158.73 L214.90,161.86 Z"]
RenderSVGContainer {g} at (0,0) size 300x300
RenderSVGContainer {use} at (0,0) size 300x300
[masker="mask_1"] RenderSVGResourceMasker {mask} at (-30,-30) size 360x360
RenderSVGContainer {g} at (0,0) size 300x300
RenderPath {rect} at (0,0) size 300x300 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#0000FF), (1.00,#FF0000)]] [start=(0,0)] [end=(1,1)]}] [data="M0.00,0.00 L300.00,0.00 L300.00,300.00 L0.00,300.00 Z"]
KCanvasResource {id="mask" [type=MASKER]}
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
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGContainer {mask} at (0,0) size 0x0
RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (0,0) size 0x0 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M-0.50,-0.50 L-0.40,-0.50 L-0.40,-0.40 L-0.50,-0.40 Z"]
RenderPath {rect} at (20,20) size 100x100 [fill={[type=SOLID] [color=#008000]}] [data="M20.00,20.00 L120.00,20.00 L120.00,120.00 L20.00,120.00 Z"]
[masker="mask"] RenderSVGResourceMasker {mask} at (10,10) size 120x120
RenderSVGText {text} at (60,60) size 21x18 contains 1 chunk(s)
[masker="mask"] RenderSVGResourceMasker {mask} at (57.90,44.20) size 25.20x21.60
RenderSVGTSpan {tspan} at (0,0) size 21x18
RenderSVGInlineText {#text} at (0,-14) size 21x18
chunk 1 text run 1 at (60.00,60.00) startOffset 0 endOffset 4 width 21.00: "test"
KRenderingPaintServer {id="Gradient" [type=LINEAR-GRADIENT] [stops=[(0.00,#FFFFFF), (1.00,#000000)]] [bounding box mode=0] [start=(0,0)] [end=(800,0)]}
KCanvasResource {id="Mask" [type=MASKER]}
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
......@@ -8,7 +7,8 @@ layer at (0,0) size 800x600
RenderSVGHiddenContainer {linearGradient} at (0,0) size 0x0
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderSVGGradientStop {stop} at (0,0) size 0x0
RenderSVGContainer {mask} at (0,143) size 781x294
RenderSVGResourceMasker {mask} [id="Mask"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (0,143) size 781x294 [fill={[type=LINEAR-GRADIENT] [stops=[(0.00,#FFFFFF), (1.00,#000000)]] [bounding box mode=0] [start=(0,0)] [end=(800,0)]}] [data="M0.00,0.00 L800.00,0.00 L800.00,300.00 L0.00,300.00 Z"]
RenderPath {rect} at (0,143) size 781x294 [fill={[type=SOLID] [color=#FF8080]}] [data="M0.00,0.00 L800.00,0.00 L800.00,300.00 L0.00,300.00 Z"]
RenderPath {rect} at (0,241) size 781x99 [fill={[type=SOLID] [color=#0000FF]}] [data="M0.00,100.00 L800.00,100.00 L800.00,200.00 L0.00,200.00 Z"]
[masker="Mask"] RenderSVGResourceMasker {mask} at (0,0) size 800x300
KCanvasResource {id="dynMask" [type=MASKER]}
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
RenderSVGContainer {g} at (0,0) size 800x300
RenderSVGContainer {g} at (0,100) size 800x100
RenderPath {rect} at (0,100) size 800x100 [fill={[type=SOLID] [color=#0000FF]}] [data="M0.00,100.00 L800.00,100.00 L800.00,200.00 L0.00,200.00 Z"]
RenderSVGContainer {mask} at (0,0) size 800x300
[masker="dynMask"] RenderSVGResourceMasker {mask} at (0,0) size 800x300
RenderSVGResourceMasker {mask} [id="dynMask"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (0,0) size 800x300 [fill={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00 L800.00,0.00 L800.00,300.00 L0.00,300.00 Z"]
KCanvasResource {id="dynMask" [type=MASKER]}
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
RenderPath {rect} at (0,100) size 800x100 [fill={[type=SOLID] [color=#0000FF]}] [data="M0.00,100.00 L800.00,100.00 L800.00,200.00 L0.00,200.00 Z"]
RenderSVGContainer {g} at (0,0) size 800x300
RenderSVGContainer {mask} at (0,0) size 800x300
[masker="dynMask"] RenderSVGResourceMasker {mask} at (0,0) size 800x300
RenderSVGContainer {g} at (0,0) size 0x0
RenderSVGResourceMasker {mask} [id="dynMask"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (0,0) size 800x300 [fill={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00 L800.00,0.00 L800.00,300.00 L0.00,300.00 Z"]
KCanvasResource {id="Mask" [type=MASKER]}
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
RenderSVGContainer {mask} at (0,0) size 800x300
RenderSVGResourceMasker {mask} [id="Mask"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (0,0) size 800x300 [fill={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00 L800.00,0.00 L800.00,300.00 L0.00,300.00 Z"]
RenderSVGContainer {g} at (0,100) size 800x100
RenderPath {rect} at (0,100) size 800x100 [fill={[type=SOLID] [color=#0000FF]}] [data="M0.00,100.00 L800.00,100.00 L800.00,200.00 L0.00,200.00 Z"]
[masker="Mask"] RenderSVGResourceMasker {mask} at (0,0) size 800x300
KCanvasResource {id="Mask" [type=MASKER]}
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
RenderSVGContainer {mask} at (0,0) size 800x300
RenderSVGResourceMasker {mask} [id="Mask"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (0,0) size 800x300 [fill={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00 L800.00,0.00 L800.00,300.00 L0.00,300.00 Z"]
RenderPath {rect} at (0,100) size 800x100 [fill={[type=SOLID] [color=#0000FF]}] [data="M0.00,100.00 L800.00,100.00 L800.00,200.00 L0.00,200.00 Z"]
[masker="Mask"] RenderSVGResourceMasker {mask} at (0,0) size 800x300
KCanvasResource {id="mask" [type=MASKER]}
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
RenderSVGContainer {mask} at (0,0) size 0x0
RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (0,0) size 0x0 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.00,0.00 L2147483648.00,0.00 L2147483648.00,2147483648.00 L0.00,2147483648.00 Z"]
RenderPath {path} at (200,200) size 100x200 [fill={[type=SOLID] [color=#0000FF]}] [data="M200.00,200.00 L300.00,200.00 L300.00,400.00 L200.00,400.00 Z"]
[masker="mask"] RenderSVGResourceMasker {mask} at (190,180) size 214748364800.00x429496729600.00
KCanvasResource {id="mymask" [type=MASKER]}
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
RenderSVGContainer {mask} at (0,0) size 100x100
RenderSVGResourceMasker {mask} [id="mymask"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.00,0.00 L100.00,0.00 L100.00,100.00 L0.00,100.00 Z"]
RenderSVGContainer {g} at (0,0) size 200x200
[masker="mymask"] RenderSVGResourceMasker {mask} at (-20,-20) size 240x240
RenderPath {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00 L200.00,0.00 L200.00,200.00 L0.00,200.00 Z"]
RenderPath {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [data="M0.00,0.00 L100.00,0.00 L100.00,100.00 L0.00,100.00 Z"]
KCanvasResource {id="mask" [type=MASKER]}
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
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGContainer {mask} at (50,50) size 460x316
RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (50,50) size 460x316 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M50.00,50.00 L510.00,50.00 L510.00,366.00 L50.00,366.00 Z"]
RenderSVGContainer {g} at (50,50) size 453x299
RenderPath {rect} at (50,50) size 453x299 [fill={[type=SOLID] [color=#008000]}] [data="M50.00,50.00 L503.00,50.00 L503.00,349.00 L50.00,349.00 Z"]
[masker="mask"] RenderSVGResourceMasker {mask} at (-80,-60) size 960x720
RenderSVGText {text} at (14,20) size 83x18 contains 1 chunk(s)
RenderSVGInlineText {#text} at (0,-14) size 83x18
chunk 1 text run 1 at (14.00,20.00) startOffset 0 endOffset 11 width 83.00: "Move Object"
......
KCanvasResource {id="mask" [type=MASKER]}
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
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGContainer {mask} at (0,0) size 1x1
RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=objectBoundingBox] [maskContentUnits=objectBoundingBox]
RenderPath {circle} at (0,0) size 1x1 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M1.00,0.50 L1.00,0.53 L1.00,0.56 L0.99,0.59 L0.98,0.62 L0.98,0.65 L0.96,0.68 L0.95,0.71 L0.94,0.74 L0.92,0.77 L0.90,0.79 L0.89,0.82 L0.86,0.84 L0.84,0.86 L0.82,0.89 L0.79,0.90 L0.77,0.92 L0.74,0.94 L0.71,0.95 L0.68,0.96 L0.65,0.98 L0.62,0.98 L0.59,0.99 L0.56,1.00 L0.53,1.00 L0.50,1.00 L0.47,1.00 L0.44,1.00 L0.41,0.99 L0.38,0.98 L0.35,0.98 L0.32,0.96 L0.29,0.95 L0.26,0.94 L0.23,0.92 L0.21,0.90 L0.18,0.89 L0.16,0.86 L0.14,0.84 L0.11,0.82 L0.10,0.79 L0.08,0.77 L0.06,0.74 L0.05,0.71 L0.04,0.68 L0.02,0.65 L0.02,0.62 L0.01,0.59 L0.00,0.56 L0.00,0.53 L0.00,0.50 L0.00,0.47 L0.00,0.44 L0.01,0.41 L0.02,0.38 L0.02,0.35 L0.04,0.32 L0.05,0.29 L0.06,0.26 L0.08,0.23 L0.10,0.21 L0.11,0.18 L0.14,0.16 L0.16,0.14 L0.18,0.11 L0.21,0.10 L0.23,0.08 L0.26,0.06 L0.29,0.05 L0.32,0.04 L0.35,0.02 L0.38,0.02 L0.41,0.01 L0.44,0.00 L0.47,0.00 L0.50,0.00 L0.53,0.00 L0.56,0.00 L0.59,0.01 L0.62,0.02 L0.65,0.02 L0.68,0.04 L0.71,0.05 L0.74,0.06 L0.77,0.08 L0.79,0.10 L0.82,0.11 L0.84,0.14 L0.86,0.16 L0.89,0.18 L0.90,0.21 L0.92,0.23 L0.94,0.26 L0.95,0.29 L0.96,0.32 L0.98,0.35 L0.98,0.38 L0.99,0.41 L1.00,0.44 L1.00,0.47 Z"]
RenderPath {rect} at (20,20) size 100x100 [fill={[type=SOLID] [color=#008000]}] [data="M20.00,20.00 L120.00,20.00 L120.00,120.00 L20.00,120.00 Z"]
[masker="mask"] RenderSVGResourceMasker {mask} at (20,20) size 100x100
RenderPath {rect} at (140,50) size 100x40 [fill={[type=SOLID] [color=#008000]}] [data="M140.00,50.00 L240.00,50.00 L240.00,90.00 L140.00,90.00 Z"]
[masker="mask"] RenderSVGResourceMasker {mask} at (140,50) size 100x40
KCanvasResource {id="mask1" [type=MASKER]}
KCanvasResource {id="mask2" [type=MASKER]}
KCanvasResource {id="mask3" [type=MASKER]}
KCanvasResource {id="mask4" [type=MASKER]}
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 250x250
RenderSVGRoot {svg} at (0,0) size 250x250
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGContainer {mask} at (60,60) size 50x50
RenderSVGResourceMasker {mask} [id="mask1"] [maskUnits=userSpaceOnUse] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (60,60) size 50x50 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.50]}] [data="M60.00,60.00 L110.00,60.00 L110.00,110.00 L60.00,110.00 Z"]
RenderSVGContainer {mask} at (0,0) size 126x1
RenderSVGResourceMasker {mask} [id="mask2"] [maskUnits=objectBoundingBox] [maskContentUnits=objectBoundingBox]
RenderPath {rect} at (0,0) size 126x1 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.50]}] [data="M0.50,0.50 L125.50,0.50 L125.50,1.00 L0.50,1.00 Z"]
RenderSVGContainer {mask} at (60,170) size 50x50
RenderSVGResourceMasker {mask} [id="mask3"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (60,170) size 50x50 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.50]}] [data="M60.00,170.00 L110.00,170.00 L110.00,220.00 L60.00,220.00 Z"]
RenderSVGContainer {mask} at (0,0) size 1x1
RenderSVGResourceMasker {mask} [id="mask4"] [maskUnits=userSpaceOnUse] [maskContentUnits=objectBoundingBox]
RenderPath {rect} at (0,0) size 1x1 [fill={[type=SOLID] [color=#FFFFFF] [opacity=0.50]}] [data="M0.50,0.50 L1.00,0.50 L1.00,1.00 L0.50,1.00 Z"]
RenderPath {rect} at (10,10) size 100x100 [fill={[type=SOLID] [color=#008000]}] [data="M10.00,10.00 L110.00,10.00 L110.00,110.00 L10.00,110.00 Z"]
[masker="mask1"] RenderSVGResourceMasker {mask} at (10,10) size 100x100
RenderPath {rect} at (120,10) size 100x100 [fill={[type=SOLID] [color=#008000]}] [data="M120.00,10.00 L220.00,10.00 L220.00,110.00 L120.00,110.00 Z"]
[masker="mask2"] RenderSVGResourceMasker {mask} at (110,0) size 120x120
RenderPath {rect} at (10,170) size 100x50 [fill={[type=SOLID] [color=#008000]}] [data="M10.00,120.00 L110.00,120.00 L110.00,220.00 L10.00,220.00 Z"]
[masker="mask3"] RenderSVGResourceMasker {mask} at (0,170) size 120x120
RenderPath {rect} at (120,120) size 100x100 [fill={[type=SOLID] [color=#008000]}] [data="M120.00,120.00 L220.00,120.00 L220.00,220.00 L120.00,220.00 Z"]
[masker="mask4"] RenderSVGResourceMasker {mask} at (120,120) size 100x100
KCanvasResource {id="m1" [type=MASKER]}
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
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGContainer {mask} at (0,0) size 800x600
RenderSVGResourceMasker {mask} [id="m1"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (0,0) size 800x600 [fill={[type=SOLID] [color=#000000]}] [data="M0.00,0.00 L800.00,0.00 L800.00,600.00 L0.00,600.00 Z"]
RenderPath {rect} at (0,0) size 120x120 [fill={[type=SOLID] [color=#008000]}] [data="M0.00,0.00 L120.00,0.00 L120.00,120.00 L0.00,120.00 Z"]
RenderPath {rect} at (10,10) size 100x100 [fill={[type=SOLID] [color=#FF0000]}] [data="M10.00,10.00 L110.00,10.00 L110.00,110.00 L10.00,110.00 Z"]
[masker="m1"] RenderSVGResourceMasker {mask} at (0,0) size 120x120
KCanvasResource {id="filter" [type=FILTER] [bounding box=at (-10.00%,-10.00%) size 120.00%x120.00%]}
KCanvasResource {id="clip" [type=CLIPPER] [clip data=[[winding=NON-ZERO] [bounding box mode=1] [path=M1.00,0.50 L1.00,0.53 L1.00,0.56 L0.99,0.59 L0.98,0.62 L0.98,0.65 L0.96,0.68 L0.95,0.71 L0.94,0.74 L0.92,0.77 L0.90,0.79 L0.89,0.82 L0.86,0.84 L0.84,0.86 L0.82,0.89 L0.79,0.90 L0.77,0.92 L0.74,0.94 L0.71,0.95 L0.68,0.96 L0.65,0.98 L0.62,0.98 L0.59,0.99 L0.56,1.00 L0.53,1.00 L0.50,1.00 L0.47,1.00 L0.44,1.00 L0.41,0.99 L0.38,0.98 L0.35,0.98 L0.32,0.96 L0.29,0.95 L0.26,0.94 L0.23,0.92 L0.21,0.90 L0.18,0.89 L0.16,0.86 L0.14,0.84 L0.11,0.82 L0.10,0.79 L0.08,0.77 L0.06,0.74 L0.05,0.71 L0.04,0.68 L0.02,0.65 L0.02,0.62 L0.01,0.59 L0.00,0.56 L0.00,0.53 L0.00,0.50 L0.00,0.47 L0.00,0.44 L0.01,0.41 L0.02,0.38 L0.02,0.35 L0.04,0.32 L0.05,0.29 L0.06,0.26 L0.08,0.23 L0.10,0.21 L0.11,0.18 L0.14,0.16 L0.16,0.14 L0.18,0.11 L0.21,0.10 L0.23,0.08 L0.26,0.06 L0.29,0.05 L0.32,0.04 L0.35,0.02 L0.38,0.02 L0.41,0.01 L0.44,0.00 L0.47,0.00 L0.50,0.00 L0.53,0.00 L0.56,0.00 L0.59,0.01 L0.62,0.02 L0.65,0.02 L0.68,0.04 L0.71,0.05 L0.74,0.06 L0.77,0.08 L0.79,0.10 L0.82,0.11 L0.84,0.14 L0.86,0.16 L0.89,0.18 L0.90,0.21 L0.92,0.23 L0.94,0.26 L0.95,0.29 L0.96,0.32 L0.98,0.35 L0.98,0.38 L0.99,0.41 L1.00,0.44 L1.00,0.47 Z]]]}
KCanvasResource {id="mask" [type=MASKER]}
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
......@@ -8,9 +7,10 @@ layer at (0,0) size 800x600
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGHiddenContainer {clipPath} at (0,0) size 0x0
RenderPath {circle} at (0,0) size 1x1 [fill={[type=SOLID] [color=#000000]}] [data="M1.00,0.50 L1.00,0.53 L1.00,0.56 L0.99,0.59 L0.98,0.62 L0.98,0.65 L0.96,0.68 L0.95,0.71 L0.94,0.74 L0.92,0.77 L0.90,0.79 L0.89,0.82 L0.86,0.84 L0.84,0.86 L0.82,0.89 L0.79,0.90 L0.77,0.92 L0.74,0.94 L0.71,0.95 L0.68,0.96 L0.65,0.98 L0.62,0.98 L0.59,0.99 L0.56,1.00 L0.53,1.00 L0.50,1.00 L0.47,1.00 L0.44,1.00 L0.41,0.99 L0.38,0.98 L0.35,0.98 L0.32,0.96 L0.29,0.95 L0.26,0.94 L0.23,0.92 L0.21,0.90 L0.18,0.89 L0.16,0.86 L0.14,0.84 L0.11,0.82 L0.10,0.79 L0.08,0.77 L0.06,0.74 L0.05,0.71 L0.04,0.68 L0.02,0.65 L0.02,0.62 L0.01,0.59 L0.00,0.56 L0.00,0.53 L0.00,0.50 L0.00,0.47 L0.00,0.44 L0.01,0.41 L0.02,0.38 L0.02,0.35 L0.04,0.32 L0.05,0.29 L0.06,0.26 L0.08,0.23 L0.10,0.21 L0.11,0.18 L0.14,0.16 L0.16,0.14 L0.18,0.11 L0.21,0.10 L0.23,0.08 L0.26,0.06 L0.29,0.05 L0.32,0.04 L0.35,0.02 L0.38,0.02 L0.41,0.01 L0.44,0.00 L0.47,0.00 L0.50,0.00 L0.53,0.00 L0.56,0.00 L0.59,0.01 L0.62,0.02 L0.65,0.02 L0.68,0.04 L0.71,0.05 L0.74,0.06 L0.77,0.08 L0.79,0.10 L0.82,0.11 L0.84,0.14 L0.86,0.16 L0.89,0.18 L0.90,0.21 L0.92,0.23 L0.94,0.26 L0.95,0.29 L0.96,0.32 L0.98,0.35 L0.98,0.38 L0.99,0.41 L1.00,0.44 L1.00,0.47 Z"]
RenderSVGContainer {mask} at (0,0) size 1x1
RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=objectBoundingBox] [maskContentUnits=objectBoundingBox]
RenderPath {circle} at (0,0) size 1x1 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M1.00,0.50 L1.00,0.53 L1.00,0.56 L0.99,0.59 L0.98,0.62 L0.98,0.65 L0.96,0.68 L0.95,0.71 L0.94,0.74 L0.92,0.77 L0.90,0.79 L0.89,0.82 L0.86,0.84 L0.84,0.86 L0.82,0.89 L0.79,0.90 L0.77,0.92 L0.74,0.94 L0.71,0.95 L0.68,0.96 L0.65,0.98 L0.62,0.98 L0.59,0.99 L0.56,1.00 L0.53,1.00 L0.50,1.00 L0.47,1.00 L0.44,1.00 L0.41,0.99 L0.38,0.98 L0.35,0.98 L0.32,0.96 L0.29,0.95 L0.26,0.94 L0.23,0.92 L0.21,0.90 L0.18,0.89 L0.16,0.86 L0.14,0.84 L0.11,0.82 L0.10,0.79 L0.08,0.77 L0.06,0.74 L0.05,0.71 L0.04,0.68 L0.02,0.65 L0.02,0.62 L0.01,0.59 L0.00,0.56 L0.00,0.53 L0.00,0.50 L0.00,0.47 L0.00,0.44 L0.01,0.41 L0.02,0.38 L0.02,0.35 L0.04,0.32 L0.05,0.29 L0.06,0.26 L0.08,0.23 L0.10,0.21 L0.11,0.18 L0.14,0.16 L0.16,0.14 L0.18,0.11 L0.21,0.10 L0.23,0.08 L0.26,0.06 L0.29,0.05 L0.32,0.04 L0.35,0.02 L0.38,0.02 L0.41,0.01 L0.44,0.00 L0.47,0.00 L0.50,0.00 L0.53,0.00 L0.56,0.00 L0.59,0.01 L0.62,0.02 L0.65,0.02 L0.68,0.04 L0.71,0.05 L0.74,0.06 L0.77,0.08 L0.79,0.10 L0.82,0.11 L0.84,0.14 L0.86,0.16 L0.89,0.18 L0.90,0.21 L0.92,0.23 L0.94,0.26 L0.95,0.29 L0.96,0.32 L0.98,0.35 L0.98,0.38 L0.99,0.41 L1.00,0.44 L1.00,0.47 Z"]
RenderSVGContainer {g} at (0,10) size 121x350
RenderPath {rect} at (10,10) size 100x100 [fill={[type=SOLID] [color=#008000]}] [data="M10.00,10.00 L110.00,10.00 L110.00,110.00 L10.00,110.00 Z"]
[masker="mask"] RenderSVGResourceMasker {mask} at (0,0) size 120x120
RenderPath {rect} at (10,130) size 100x100 [fill={[type=SOLID] [color=#008000]}] [clip path="clip"] [data="M10.00,130.00 L110.00,130.00 L110.00,230.00 L10.00,230.00 Z"]
RenderPath {rect} at (0,240) size 121x120 [fill={[type=SOLID] [color=#008000]}] [filter=filter] [data="M10.00,250.00 L110.00,250.00 L110.00,350.00 L10.00,350.00 Z"]
KCanvasResource {id="mymask" [type=MASKER]}
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
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGContainer {mask} at (0,0) size 100x100
RenderSVGResourceMasker {mask} [id="mymask"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.00,0.00 L100.00,0.00 L100.00,100.00 L0.00,100.00 Z"]
RenderPath {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#0000FF]}] [data="M0.00,0.00 L100.00,0.00 L100.00,100.00 L0.00,100.00 Z"]
RenderSVGContainer {g} at (0,0) size 200x200
[masker="mymask"] RenderSVGResourceMasker {mask} at (-20,-20) size 240x240
RenderSVGContainer {g} at (0,0) size 200x200
RenderPath {rect} at (0,0) size 200x200 [fill={[type=SOLID] [color=#FF0000]}] [data="M0.00,0.00 L200.00,0.00 L200.00,200.00 L0.00,200.00 Z"]
RenderPath {rect} at (0,0) size 100x100 [fill={[type=SOLID] [color=#008000]}] [data="M0.00,0.00 L100.00,0.00 L100.00,100.00 L0.00,100.00 Z"]
......
KCanvasResource {id="mask" [type=MASKER]}
KCanvasResource {id="blur" [type=FILTER] [bounding box=at (-20.00%,-20.00%) size 140.00%x140.00%]}
KCanvasResource {id="clip" [type=CLIPPER] [clip data=[[winding=NON-ZERO] [path=M120.00,70.00 L119.90,73.14 L119.61,76.27 L119.11,79.37 L118.43,82.43 L117.55,85.45 L116.49,88.41 L115.24,91.29 L113.82,94.09 L112.22,96.79 L110.45,99.39 L108.53,101.87 L106.45,104.23 L104.23,106.45 L101.87,108.53 L99.39,110.45 L96.79,112.22 L94.09,113.82 L91.29,115.24 L88.41,116.49 L85.45,117.55 L82.43,118.43 L79.37,119.11 L76.27,119.61 L73.14,119.90 L70.00,120.00 L66.86,119.90 L63.73,119.61 L60.63,119.11 L57.57,118.43 L54.55,117.55 L51.59,116.49 L48.71,115.24 L45.91,113.82 L43.21,112.22 L40.61,110.45 L38.13,108.53 L35.77,106.45 L33.55,104.23 L31.47,101.87 L29.55,99.39 L27.78,96.79 L26.18,94.09 L24.76,91.29 L23.51,88.41 L22.45,85.45 L21.57,82.43 L20.89,79.37 L20.39,76.27 L20.10,73.14 L20.00,70.00 L20.10,66.86 L20.39,63.73 L20.89,60.63 L21.57,57.57 L22.45,54.55 L23.51,51.59 L24.76,48.71 L26.18,45.91 L27.78,43.21 L29.55,40.61 L31.47,38.13 L33.55,35.77 L35.77,33.55 L38.13,31.47 L40.61,29.55 L43.21,27.78 L45.91,26.18 L48.71,24.76 L51.59,23.51 L54.55,22.45 L57.57,21.57 L60.63,20.89 L63.73,20.39 L66.86,20.10 L70.00,20.00 L73.14,20.10 L76.27,20.39 L79.37,20.89 L82.43,21.57 L85.45,22.45 L88.41,23.51 L91.29,24.76 L94.09,26.18 L96.79,27.78 L99.39,29.55 L101.87,31.47 L104.23,33.55 L106.45,35.77 L108.53,38.13 L110.45,40.61 L112.22,43.21 L113.82,45.91 L115.24,48.71 L116.49,51.59 L117.55,54.55 L118.43,57.57 L119.11,60.63 L119.61,63.73 L119.90,66.86 Z]]]}
layer at (0,0) size 800x600
......@@ -6,9 +5,10 @@ layer at (0,0) size 800x600
layer at (0,0) size 800x600
RenderSVGRoot {svg} at (0,0) size 800x600
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGContainer {mask} at (0,0) size 140x140
RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
RenderPath {rect} at (0,0) size 140x140 [fill={[type=SOLID] [color=#008000]}] [data="M0.00,0.00 L140.00,0.00 L140.00,140.00 L0.00,140.00 Z"]
RenderPath {circle} at (30,30) size 80x80 [fill={[type=SOLID] [color=#FFFF00]}] [data="M110.00,70.00 L109.92,72.51 L109.68,75.01 L109.29,77.50 L108.74,79.95 L108.04,82.36 L107.19,84.72 L106.19,87.03 L105.05,89.27 L103.77,91.43 L102.36,93.51 L100.82,95.50 L99.16,97.38 L97.38,99.16 L95.50,100.82 L93.51,102.36 L91.43,103.77 L89.27,105.05 L87.03,106.19 L84.72,107.19 L82.36,108.04 L79.95,108.74 L77.50,109.29 L75.01,109.68 L72.51,109.92 L70.00,110.00 L67.49,109.92 L64.99,109.68 L62.50,109.29 L60.05,108.74 L57.64,108.04 L55.28,107.19 L52.97,106.19 L50.73,105.05 L48.57,103.77 L46.49,102.36 L44.50,100.82 L42.62,99.16 L40.84,97.38 L39.18,95.50 L37.64,93.51 L36.23,91.43 L34.95,89.27 L33.81,87.03 L32.81,84.72 L31.96,82.36 L31.26,79.95 L30.71,77.50 L30.32,75.01 L30.08,72.51 L30.00,70.00 L30.08,67.49 L30.32,64.99 L30.71,62.50 L31.26,60.05 L31.96,57.64 L32.81,55.28 L33.81,52.97 L34.95,50.73 L36.23,48.57 L37.64,46.49 L39.18,44.50 L40.84,42.62 L42.62,40.84 L44.50,39.18 L46.49,37.64 L48.57,36.23 L50.73,34.95 L52.97,33.81 L55.28,32.81 L57.64,31.96 L60.05,31.26 L62.50,30.71 L64.99,30.32 L67.49,30.08 L70.00,30.00 L72.51,30.08 L75.01,30.32 L77.50,30.71 L79.95,31.26 L82.36,31.96 L84.72,32.81 L87.03,33.81 L89.27,34.95 L91.43,36.23 L93.51,37.64 L95.50,39.18 L97.38,40.84 L99.16,42.62 L100.82,44.50 L102.36,46.49 L103.77,48.57 L105.05,50.73 L106.19,52.97 L107.19,55.28 L108.04,57.64 L108.74,60.05 L109.29,62.50 L109.68,64.99 L109.92,67.49 Z"]
RenderSVGHiddenContainer {clipPath} at (0,0) size 0x0
RenderPath {circle} at (20,20) size 100x100 [fill={[type=SOLID] [color=#000000]}] [data="M120.00,70.00 L119.90,73.14 L119.61,76.27 L119.11,79.37 L118.43,82.43 L117.55,85.45 L116.49,88.41 L115.24,91.29 L113.82,94.09 L112.22,96.79 L110.45,99.39 L108.53,101.87 L106.45,104.23 L104.23,106.45 L101.87,108.53 L99.39,110.45 L96.79,112.22 L94.09,113.82 L91.29,115.24 L88.41,116.49 L85.45,117.55 L82.43,118.43 L79.37,119.11 L76.27,119.61 L73.14,119.90 L70.00,120.00 L66.86,119.90 L63.73,119.61 L60.63,119.11 L57.57,118.43 L54.55,117.55 L51.59,116.49 L48.71,115.24 L45.91,113.82 L43.21,112.22 L40.61,110.45 L38.13,108.53 L35.77,106.45 L33.55,104.23 L31.47,101.87 L29.55,99.39 L27.78,96.79 L26.18,94.09 L24.76,91.29 L23.51,88.41 L22.45,85.45 L21.57,82.43 L20.89,79.37 L20.39,76.27 L20.10,73.14 L20.00,70.00 L20.10,66.86 L20.39,63.73 L20.89,60.63 L21.57,57.57 L22.45,54.55 L23.51,51.59 L24.76,48.71 L26.18,45.91 L27.78,43.21 L29.55,40.61 L31.47,38.13 L33.55,35.77 L35.77,33.55 L38.13,31.47 L40.61,29.55 L43.21,27.78 L45.91,26.18 L48.71,24.76 L51.59,23.51 L54.55,22.45 L57.57,21.57 L60.63,20.89 L63.73,20.39 L66.86,20.10 L70.00,20.00 L73.14,20.10 L76.27,20.39 L79.37,20.89 L82.43,21.57 L85.45,22.45 L88.41,23.51 L91.29,24.76 L94.09,26.18 L96.79,27.78 L99.39,29.55 L101.87,31.47 L104.23,33.55 L106.45,35.77 L108.53,38.13 L110.45,40.61 L112.22,43.21 L113.82,45.91 L115.24,48.71 L116.49,51.59 L117.55,54.55 L118.43,57.57 L119.11,60.63 L119.61,63.73 L119.90,66.86 Z"]
RenderPath {rect} at (20,20) size 100x100 [fill={[type=SOLID] [color=#008000]}] [clip path="clip"] [filter=blur] [data="M20.00,20.00 L120.00,20.00 L120.00,120.00 L20.00,120.00 Z"]
[masker="mask"] RenderSVGResourceMasker {mask} at (10,10) size 120x120
KCanvasResource {id="mask" [type=MASKER]}
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
RenderSVGHiddenContainer {defs} at (0,0) size 0x0
RenderSVGContainer {mask} at (100,100) size 150x150
RenderSVGResourceMasker {mask} [id="mask"] [maskUnits=objectBoundingBox] [maskContentUnits=userSpaceOnUse]
RenderSVGContainer {g} at (100,100) size 150x150 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,100.00)}]
RenderPath {rect} at (100,100) size 150x150 [fill={[type=SOLID] [color=#FFFFFF]}] [data="M0.00,0.00 L150.00,0.00 L150.00,150.00 L0.00,150.00 Z"]
RenderPath {rect} at (100,100) size 100x100 [fill={[type=SOLID] [color=#FF0000]}] [data="M100.00,100.00 L200.00,100.00 L200.00,200.00 L100.00,200.00 Z"]
RenderPath {rect} at (100,100) size 100x100 [fill={[type=SOLID] [color=#008000]}] [data="M100.00,100.00 L200.00,100.00 L200.00,200.00 L100.00,200.00 Z"]
[masker="mask"] RenderSVGResourceMasker {mask} at (90,90) size 120x120
......@@ -602,6 +602,7 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
rendering/RenderSVGInline.cpp \
rendering/RenderSVGInlineText.cpp \
rendering/RenderSVGModelObject.cpp \
rendering/RenderSVGResourceMasker.cpp \
rendering/RenderSVGRoot.cpp \
rendering/RenderSVGShadowTreeRootContainer.cpp \
rendering/RenderSVGTSpan.cpp \
......@@ -857,7 +858,6 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
svg/graphics/SVGResourceClipper.cpp \
svg/graphics/SVGResourceFilter.cpp \
svg/graphics/SVGResourceMarker.cpp \
svg/graphics/SVGResourceMasker.cpp \
\
svg/graphics/filters/SVGFEConvolveMatrix.cpp \
svg/graphics/filters/SVGFEDiffuseLighting.cpp \
......
2010-02-17 Dirk Schulze <krit@webkit.org>
Reviewed by Nikolas Zimmermann.
Move SVGResources to Renderers, starting with Masker
https://bugs.webkit.org/show_bug.cgi?id=35020
We have rendering specific code in WebCore/svg/graphics. The goal is to move
this code into suitable Renderers. This helps us to clean up the code and makes
maintenance easier. It also makes it possible to remove rendering specific code
from SVG*Elements into this renderers. So the Renderer contains everything that
is needed to use the resource.
RenderSVGResource will be the base class for all new resource render classes like
RenderSVGResourceMasker, RenderSVGResourceClipper and the other resources.
This patch starts moving SVGResourceMasker to RenderSVGResourceMasker.
Another benefit is the much more useful result in DRT on using masker.
* Android.mk:
* GNUmakefile.am:
* WebCore.gypi:
* WebCore.pro:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.xcodeproj/project.pbxproj:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::toRenderSVGResource): Conversion to RenderSVGResource base class.
* rendering/RenderObject.h:
(WebCore::RenderObject::isSVGResource): Check if renderer is a resource.
* rendering/RenderPath.cpp:
* rendering/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::destroy): Renderer gets destroyed, unregister it from it's resources.
* rendering/RenderSVGImage.h: Some code clean up according to the webkit style.
(WebCore::RenderSVGImage::toSVGRenderBase):
(WebCore::RenderSVGImage::renderName):
(WebCore::RenderSVGImage::isSVGImage):
(WebCore::RenderSVGImage::localToParentTransform):
(WebCore::RenderSVGImage::strokeBoundingBox):
(WebCore::RenderSVGImage::requiresLayer):
(WebCore::RenderSVGImage::localTransform):
* rendering/RenderSVGInlineText.h:
(WebCore::RenderSVGInlineText::objectBoundingBox): Needed for SVGRenderTreeAsText
* rendering/RenderSVGModelObject.cpp:
(WebCore::RenderSVGModelObject::destroy): Renderer gets destroyed, unregister it from it's resources.
* rendering/RenderSVGModelObject.h:
* rendering/RenderSVGResource.h: Added.
(WebCore::): Base class for all Resource renderers like masker, clipper and others.
(WebCore::RenderSVGResource::RenderSVGResource):
(WebCore::RenderSVGResource::cast):
(WebCore::RenderSVGResource::toRenderSVGResource):
(WebCore::RenderSVGResource::isSVGResource):
(WebCore::RenderSVGResource::drawsContents):
(WebCore::getRenderSVGResourceById):
* rendering/RenderSVGResourceMasker.cpp: Added.
(WebCore::RenderSVGResourceMasker::RenderSVGResourceMasker):
(WebCore::RenderSVGResourceMasker::~RenderSVGResourceMasker):
(WebCore::RenderSVGResourceMasker::invalidateClients): Status of masker changed, remove all clients.
(WebCore::RenderSVGResourceMasker::invalidateClient): Status of an object changed, remove pending client.
(WebCore::RenderSVGResourceMasker::applyResource): Apply masker to object.
(WebCore::RenderSVGResourceMasker::resourceBoundingBox): boundingBox of the resource, depending on the object.
(WebCore::RenderSVGResourceMasker::createMaskImage): Creates the mask image, the context gets clipped with.
* rendering/RenderSVGResourceMasker.h: Added.
(WebCore::MaskerData::MaskerData):
(WebCore::RenderSVGResourceMasker::renderName):
(WebCore::RenderSVGResourceMasker::maskUnits): Unit of mask for DRT.
(WebCore::RenderSVGResourceMasker::maskContentUnits): Unit of childs from mask for DRT.
(WebCore::RenderSVGResourceMasker::resourceType):
* rendering/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::destroy): Renderer gets destroyed, unregister it from it's resources.
* rendering/RenderSVGRoot.h:
* rendering/RenderSVGText.cpp:
(WebCore::RenderSVGText::destroy): dito.
* rendering/RenderSVGText.h:
* rendering/RenderTreeAsText.cpp:
(WebCore::write):
* rendering/SVGRenderSupport.cpp:
(WebCore::SVGRenderBase::prepareToRenderSVGContent):
(WebCore::SVGRenderBase::maskerBoundingBoxForRenderer):
(WebCore::SVGRenderBase::deregisterFromResources): Unregister object from all it's resources after status changed.
* rendering/SVGRenderSupport.h:
(WebCore::SVGRenderBase::toSVGRenderBase):
(WebCore::SVGRenderBase::strokeBoundingBox):
(WebCore::SVGRenderBase::markerBoundingBox):
* rendering/SVGRenderTreeAsText.cpp: Update TreeAsText to dump maskers correctly.
(WebCore::operator<<):
(WebCore::writeSVGResource):
(WebCore::writeSVGContainer):
(WebCore::writeSVGText):
(WebCore::writeSVGInlineText):
(WebCore::writeSVGImage):
(WebCore::write):
(WebCore::writeResourcesToObject):
* rendering/SVGRenderTreeAsText.h:
* svg/SVGMaskElement.cpp: Update Masker to use the new renderer.
(WebCore::SVGMaskElement::svgAttributeChanged):
(WebCore::SVGMaskElement::childrenChanged):
(WebCore::SVGMaskElement::maskBoundingBox):
(WebCore::SVGMaskElement::createRenderer):
* svg/SVGMaskElement.h:
* svg/SVGStyledElement.cpp: We need to tell the renderer to unregister object, after the status changed.
(WebCore::SVGStyledElement::invalidateResources):
(WebCore::SVGStyledElement::invalidateResourcesInAncestorChain):
* svg/SVGUnitTypes.h: Conversion of integer to SVGUnitType.
(WebCore::toUnitType):
* svg/graphics/SVGResource.h:
(WebCore::):
(WebCore::SVGResource::isMarker):
* svg/graphics/SVGResourceMasker.cpp: Removed.
* svg/graphics/SVGResourceMasker.h: Removed.
2010-02-17 Kenneth Russell <kbr@google.com>
Reviewed by Oliver Hunt.
......
......@@ -2990,6 +2990,9 @@ webcore_sources += \
WebCore/rendering/RenderSVGInlineText.h \
WebCore/rendering/RenderSVGModelObject.cpp \
WebCore/rendering/RenderSVGModelObject.h \
WebCore/rendering/RenderSVGResource.h \
WebCore/rendering/RenderSVGResourceMasker.cpp \
WebCore/rendering/RenderSVGResourceMasker.h \
WebCore/rendering/RenderSVGRoot.cpp \
WebCore/rendering/RenderSVGRoot.h \
WebCore/rendering/RenderSVGShadowTreeRootContainer.cpp \
......@@ -3332,8 +3335,6 @@ webcore_sources += \
WebCore/svg/graphics/SVGResourceListener.h \
WebCore/svg/graphics/SVGResourceMarker.cpp \
WebCore/svg/graphics/SVGResourceMarker.h \
WebCore/svg/graphics/SVGResourceMasker.cpp \
WebCore/svg/graphics/SVGResourceMasker.h \
WebCore/svg/graphics/filters/SVGDistantLightSource.h \
WebCore/svg/graphics/filters/SVGFEConvolveMatrix.cpp \
WebCore/svg/graphics/filters/SVGFEConvolveMatrix.h \
......
......@@ -3098,6 +3098,9 @@
'rendering/RenderSVGInlineText.h',
'rendering/RenderSVGModelObject.cpp',
'rendering/RenderSVGModelObject.h',
'rendering/RenderSVGResource.h',
'rendering/RenderSVGResourceMasker.cpp',
'rendering/RenderSVGResourceMasker.h',
'rendering/RenderSVGRoot.cpp',
'rendering/RenderSVGRoot.h',
'rendering/RenderSVGShadowTreeRootContainer.cpp',
......@@ -3324,8 +3327,6 @@
'svg/graphics/SVGResourceListener.h',
'svg/graphics/SVGResourceMarker.cpp',
'svg/graphics/SVGResourceMarker.h',
'svg/graphics/SVGResourceMasker.cpp',
'svg/graphics/SVGResourceMasker.h',
'svg/ColorDistance.cpp',
'svg/ColorDistance.h',
'svg/ElementTimeControl.h',
......
......@@ -1656,6 +1656,8 @@ HEADERS += \
rendering/RenderSVGInline.h \
rendering/RenderSVGInlineText.h \
rendering/RenderSVGModelObject.h \
rendering/RenderSVGResource.h \
rendering/RenderSVGResourceMasker.h \
rendering/RenderSVGRoot.h \
rendering/RenderSVGShadowTreeRootContainer.h \
rendering/RenderSVGText.h \
......@@ -1747,7 +1749,6 @@ HEADERS += \
svg/graphics/SVGResourceFilter.h \
svg/graphics/SVGResource.h \
svg/graphics/SVGResourceMarker.h \
svg/graphics/SVGResourceMasker.h \
svg/SVGAElement.h \
svg/SVGAltGlyphElement.h \
svg/SVGAngle.h \
......@@ -2598,7 +2599,6 @@ contains(DEFINES, ENABLE_SVG=1) {
svg/graphics/SVGResource.cpp \
svg/graphics/SVGResourceFilter.cpp \
svg/graphics/SVGResourceMarker.cpp \
svg/graphics/SVGResourceMasker.cpp \
rendering/RenderForeignObject.cpp \
rendering/RenderPath.cpp \
rendering/RenderSVGBlock.cpp \
......@@ -2609,6 +2609,7 @@ contains(DEFINES, ENABLE_SVG=1) {
rendering/RenderSVGInline.cpp \
rendering/RenderSVGInlineText.cpp \
rendering/RenderSVGModelObject.cpp \
rendering/RenderSVGResourceMasker.cpp \
rendering/RenderSVGRoot.cpp \
rendering/RenderSVGShadowTreeRootContainer.cpp \