2010-05-10 Dirk Schulze <krit@webkit.org>
authorkrit@webkit.org <krit@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 May 2010 15:59:19 +0000 (15:59 +0000)
committerkrit@webkit.org <krit@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 May 2010 15:59:19 +0000 (15:59 +0000)
commit95f55f7391dc5d8aaed3649ecd764b793f124682
treec61744d6e17d06c83baa70f26fcf799c4cb9cd49
parent3b48dbb713bd03ab6cd5d66c8593335ac64f70e5
2010-05-10  Dirk Schulze  <krit@webkit.org>

        Reviewed by Nikolas Zimmermann.

        Further optimization for SVG's repaintRect calculation
        https://bugs.webkit.org/show_bug.cgi?id=38820

        This is a further optimization to get smaller repaintRects on SVG objects
        in combination with masker or clipper resources.
        Masker takes the unite of all stroke boundaries of it's childs.
        Both, clipper and masker, store this union to avoid multiple calls of the childs
        and the unite calculations now.
        The unite rect can be transformed to any targets objectBoundingBox, if the content
        unit of the resource is set to objectBoundingBoxMode.
        This speeds up the use of resources with multiple target objects.

        No behavior changes, the smaller repaintRects cause updates for DRT results.

        * rendering/RenderSVGResource.h:
        * rendering/RenderSVGResourceClipper.cpp:
        (WebCore::RenderSVGResourceClipper::invalidateClients):
        (WebCore::RenderSVGResourceClipper::calculateClipContentRepaintRect):
        (WebCore::RenderSVGResourceClipper::resourceBoundingBox):
        * rendering/RenderSVGResourceClipper.h:
        * rendering/RenderSVGResourceFilter.cpp:
        (WebCore::RenderSVGResourceFilter::resourceBoundingBox):
        * rendering/RenderSVGResourceFilter.h:
        * rendering/RenderSVGResourceGradient.h:
        (WebCore::RenderSVGResourceGradient::resourceBoundingBox):
        * rendering/RenderSVGResourceMarker.h:
        (WebCore::RenderSVGResourceMarker::resourceBoundingBox):
        * rendering/RenderSVGResourceMasker.cpp:
        (WebCore::RenderSVGResourceMasker::invalidateClients):
        (WebCore::RenderSVGResourceMasker::createMaskImage):
        (WebCore::RenderSVGResourceMasker::calculateMaskContentRepaintRect):
        (WebCore::RenderSVGResourceMasker::resourceBoundingBox):
        * rendering/RenderSVGResourceMasker.h:
        * rendering/RenderSVGResourcePattern.h:
        (WebCore::RenderSVGResourcePattern::resourceBoundingBox):
        * rendering/RenderSVGResourceSolidColor.h:
        (WebCore::RenderSVGResourceSolidColor::resourceBoundingBox):
2010-05-10  Dirk Schulze  <krit@webkit.org>

        Reviewed by Nikolas Zimmermann.

        Further optimization for SVG's repaintRect calculation
        https://bugs.webkit.org/show_bug.cgi?id=38820

        The repaintRect of SVG objects with masks got smaller. This made
        updates of some results necessary.

        * platform/mac/svg/W3C-SVG-1.1/masking-intro-01-f-expected.txt:
        * platform/mac/svg/batik/masking/maskRegions-expected.txt:
        * platform/mac/svg/clip-path/clip-path-with-invisibile-child-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/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-with-all-units-expected.txt:
        * platform/mac/svg/custom/resource-invalidate-on-target-update-expected.txt:
        * platform/mac/svg/custom/visibility-override-mask-expected.txt:
        * svg/custom/transformedMaskFails-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@59081 268f45cc-cd09-0410-ab3c-d52691b4dbfc
26 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/mac/svg/W3C-SVG-1.1/masking-intro-01-f-expected.txt
LayoutTests/platform/mac/svg/batik/masking/maskRegions-expected.txt
LayoutTests/platform/mac/svg/clip-path/clip-path-with-invisibile-child-expected.txt
LayoutTests/platform/mac/svg/css/circle-in-mask-with-shadow-expected.txt
LayoutTests/platform/mac/svg/css/mask-with-shadow-expected.txt
LayoutTests/platform/mac/svg/custom/empty-mask-expected.txt
LayoutTests/platform/mac/svg/custom/mask-excessive-malloc-expected.txt
LayoutTests/platform/mac/svg/custom/mask-inside-defs-expected.txt
LayoutTests/platform/mac/svg/custom/mask-invalidation-expected.txt
LayoutTests/platform/mac/svg/custom/mask-with-all-units-expected.txt
LayoutTests/platform/mac/svg/custom/resource-invalidate-on-target-update-expected.txt
LayoutTests/platform/mac/svg/custom/visibility-override-mask-expected.txt
LayoutTests/svg/custom/transformedMaskFails-expected.txt
WebCore/ChangeLog
WebCore/rendering/RenderSVGResource.h
WebCore/rendering/RenderSVGResourceClipper.cpp
WebCore/rendering/RenderSVGResourceClipper.h
WebCore/rendering/RenderSVGResourceFilter.cpp
WebCore/rendering/RenderSVGResourceFilter.h
WebCore/rendering/RenderSVGResourceGradient.h
WebCore/rendering/RenderSVGResourceMarker.h
WebCore/rendering/RenderSVGResourceMasker.cpp
WebCore/rendering/RenderSVGResourceMasker.h
WebCore/rendering/RenderSVGResourcePattern.h
WebCore/rendering/RenderSVGResourceSolidColor.h