2006-10-31 Nikolas Zimmermann <zimmermann@kde.org>
authoroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Oct 2006 01:46:33 +0000 (01:46 +0000)
committeroliver <oliver@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Oct 2006 01:46:33 +0000 (01:46 +0000)
commitd9d2401079771912c302f190d92c6fdf69a1770c
tree350eee58b13f1c81af30eaee4204ec3a8ecd0564
parent6a8e9e397dc27b0b7ea736f634c812f78bca557d
2006-10-31  Nikolas Zimmermann  <zimmermann@kde.org>

        Reviewed by Oliver.

Fixes: http://bugs.webkit.org/show_bug.cgi?id=11436
        Better SVG integration in WebKit, Part I.

        The patch is mostly about creating a new platform/graphics directory, and
        moving the kcanvas resources (clipper/masker/marker) there (in svg budir),
        with a new name (KCanvasClipper -> SVGResourceClipper). Also fix several ownership
        issues, by using ref counting (the SVG classes now store RefPtrs to the resources).

        KCanvasFilters is still left in kcanvas/ subdirectory, to be converted in a next patch.
        All details of the patch, and upcoming patches can be found in the bug report.

        * CMakeLists.txt:
        * WebCore.xcodeproj/project.pbxproj:
        * kcanvas/KCanvasClipper.cpp: Removed.
        * kcanvas/KCanvasClipper.h: Removed.
        * kcanvas/KCanvasCreator.cpp: Removed.
        * kcanvas/KCanvasCreator.h: Removed.
        * kcanvas/KCanvasFilters.cpp:
        (WebCore::getFilterById):
        * kcanvas/KCanvasFilters.h:
        * kcanvas/KCanvasImage.h: Removed.
        * kcanvas/KCanvasMarker.cpp: Removed.
        * kcanvas/KCanvasMarker.h: Removed.
        * kcanvas/KCanvasMasker.cpp: Removed.
        * kcanvas/KCanvasMasker.h: Removed.
        * kcanvas/KCanvasResource.cpp: Removed.
        * kcanvas/KCanvasResource.h: Removed.
        * kcanvas/KCanvasResourceListener.h: Removed.
        * kcanvas/KCanvasTreeDebug.cpp:
        (WebCore::writeRenderResources):
        * kcanvas/device/KRenderingDevice.h:
        * kcanvas/device/KRenderingPaintServer.h:
        (WebCore::KRenderingPaintServer::KRenderingPaintServer):
        * kcanvas/device/KRenderingPaintServerGradient.cpp:
        (WebCore::KRenderingPaintServerGradient::listener):
        (WebCore::KRenderingPaintServerGradient::setListener):
        * kcanvas/device/KRenderingPaintServerGradient.h:
        * kcanvas/device/KRenderingPaintServerPattern.cpp:
        (WebCore::KRenderingPaintServerPattern::KRenderingPaintServerPattern):
        (WebCore::KRenderingPaintServerPattern::~KRenderingPaintServerPattern):
        (WebCore::KRenderingPaintServerPattern::tile):
        (WebCore::KRenderingPaintServerPattern::setTile):
        (WebCore::KRenderingPaintServerPattern::listener):
        (WebCore::KRenderingPaintServerPattern::setListener):
        * kcanvas/device/KRenderingPaintServerPattern.h:
        * kcanvas/device/KRenderingPaintServerSolid.h:
        * kcanvas/device/qt/KCanvasClipperQt.cpp: Removed.
        * kcanvas/device/qt/KCanvasClipperQt.h: Removed.
        * kcanvas/device/qt/KRenderingDeviceQt.cpp:
        (WebCore::KRenderingDeviceQt::contextForImage):
        (WebCore::KRenderingDeviceQt::createResource):
        (WebCore::KRenderingDeviceQt::createPaintServer):
        * kcanvas/device/qt/KRenderingDeviceQt.h:
        * kcanvas/device/qt/KRenderingPaintServerGradientQt.cpp:
        * kcanvas/device/qt/KRenderingPaintServerPatternQt.cpp:
        * kcanvas/device/qt/KRenderingPaintServerQt.cpp:
        * kcanvas/device/qt/KRenderingPaintServerSolidQt.cpp:
        * kcanvas/device/qt/RenderPathQt.h: Removed.
        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
        (WebCore::KCanvasFilterQuartz::getCIFilterStack):
        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
        * kcanvas/device/quartz/KCanvasMaskerQuartz.h: Removed.
        * kcanvas/device/quartz/KCanvasMaskerQuartz.mm: Removed.
        * kcanvas/device/quartz/KCanvasResourcesQuartz.h: Removed.
        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm: Removed.
        * kcanvas/device/quartz/KRenderingDeviceQuartz.h:
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (WebCore::KRenderingDeviceQuartz::contextForImage):
        (WebCore::KRenderingDeviceQuartz::createPaintServer):
        (WebCore::KRenderingDeviceQuartz::createResource):
        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
        (WebCore::KRenderingPaintServerGradientQuartz::KRenderingPaintServerGradientQuartz):
        (WebCore::KRenderingPaintServerGradientQuartz::~KRenderingPaintServerGradientQuartz):
        (WebCore::KRenderingPaintServerGradientQuartz::setup):
        (WebCore::KRenderingPaintServerGradientQuartz::teardown):
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.h:
        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
        (WebCore::patternCallback):
        (WebCore::KRenderingPaintServerPatternQuartz::setup):
        * kcanvas/device/quartz/QuartzSupport.mm:
        * ksvg2/misc/KCanvasRenderingStyle.cpp:
        (WebCore::sharedSolidPaintServer):
        * ksvg2/svg/SVGClipPathElement.cpp:
        (WebCore::SVGClipPathElement::SVGClipPathElement):
        (WebCore::SVGClipPathElement::~SVGClipPathElement):
        (WebCore::SVGClipPathElement::canvasResource):
        * ksvg2/svg/SVGClipPathElement.h:
        * ksvg2/svg/SVGFEImageElement.cpp:
        * ksvg2/svg/SVGFilterElement.cpp:
        (WebCore::SVGFilterElement::SVGFilterElement):
        (WebCore::SVGFilterElement::~SVGFilterElement):
        (WebCore::SVGFilterElement::canvasResource):
        * ksvg2/svg/SVGFilterElement.h:
        * ksvg2/svg/SVGGradientElement.cpp:
        (WebCore::SVGGradientElement::SVGGradientElement):
        (WebCore::SVGGradientElement::~SVGGradientElement):
        (WebCore::SVGGradientElement::canvasResource):
        (WebCore::SVGGradientElement::resourceNotification):
        * ksvg2/svg/SVGGradientElement.h:
        * ksvg2/svg/SVGImageElement.cpp:
        * ksvg2/svg/SVGLinearGradientElement.cpp:
        (WebCore::SVGLinearGradientElement::buildGradient):
        * ksvg2/svg/SVGLinearGradientElement.h:
        * ksvg2/svg/SVGMarkerElement.cpp:
        (WebCore::SVGMarkerElement::SVGMarkerElement):
        (WebCore::SVGMarkerElement::~SVGMarkerElement):
        (WebCore::SVGMarkerElement::canvasResource):
        * ksvg2/svg/SVGMarkerElement.h:
        * ksvg2/svg/SVGMaskElement.cpp:
        (WebCore::SVGMaskElement::SVGMaskElement):
        (WebCore::SVGMaskElement::~SVGMaskElement):
        (WebCore::SVGMaskElement::drawMaskerContent):
        (WebCore::SVGMaskElement::canvasResource):
        * ksvg2/svg/SVGMaskElement.h:
        * ksvg2/svg/SVGPatternElement.cpp:
        (WebCore::SVGPatternElement::SVGPatternElement):
        (WebCore::SVGPatternElement::~SVGPatternElement):
        (WebCore::SVGPatternElement::fillAttributesFromReferencePattern):
        (WebCore::SVGPatternElement::drawPatternContentIntoTile):
        (WebCore::SVGPatternElement::canvasResource):
        * ksvg2/svg/SVGPatternElement.h:
        * ksvg2/svg/SVGRadialGradientElement.cpp:
        (WebCore::SVGRadialGradientElement::buildGradient):
        * ksvg2/svg/SVGRadialGradientElement.h:
        * ksvg2/svg/SVGStyledElement.h:
        (WebCore::SVGStyledElement::canvasResource):
        * platform/GraphicsContext.cpp: Removed.
        * platform/GraphicsContext.h: Removed.
        * platform/GraphicsTypes.cpp: Removed.
        * platform/GraphicsTypes.h: Removed.
        * platform/graphics/GraphicsContext.cpp: Added.
        (WebCore::GraphicsContextState::GraphicsContextState):
        (WebCore::GraphicsContextPrivate::GraphicsContextPrivate):
        (WebCore::GraphicsContext::createGraphicsContextPrivate):
        (WebCore::GraphicsContext::destroyGraphicsContextPrivate):
        (WebCore::GraphicsContext::save):
        (WebCore::GraphicsContext::restore):
        (WebCore::GraphicsContext::font):
        (WebCore::GraphicsContext::setFont):
        (WebCore::GraphicsContext::pen):
        (WebCore::GraphicsContext::setPen):
        (WebCore::GraphicsContext::setFillColor):
        (WebCore::GraphicsContext::fillColor):
        (WebCore::GraphicsContext::updatingControlTints):
        (WebCore::GraphicsContext::setUpdatingControlTints):
        (WebCore::GraphicsContext::setPaintingDisabled):
        (WebCore::GraphicsContext::paintingDisabled):
        (WebCore::GraphicsContext::drawImage):
        (WebCore::GraphicsContext::drawText):
        (WebCore::GraphicsContext::drawHighlightForText):
        (WebCore::GraphicsContext::initFocusRing):
        (WebCore::GraphicsContext::clearFocusRing):
        (WebCore::GraphicsContext::focusRingBoundingRect):
        (WebCore::GraphicsContext::addFocusRingRect):
        (WebCore::GraphicsContext::focusRingWidth):
        (WebCore::GraphicsContext::focusRingOffset):
        (WebCore::GraphicsContext::focusRingRects):
        (WebCore::GraphicsContext::drawTiledImage):
        * platform/graphics/GraphicsContext.h: Added.
        * platform/graphics/GraphicsTypes.cpp: Added.
        (WebCore::):
        (WebCore::parseCompositeOperator):
        (WebCore::compositeOperatorName):
        (WebCore::parseLineCap):
        (WebCore::lineCapName):
        (WebCore::parseLineJoin):
        (WebCore::lineJoinName):
        * platform/graphics/GraphicsTypes.h: Added.
        (WebCore::):
        * platform/graphics/svg/SVGResource.cpp: Added.
        (WebCore::SVGResource::SVGResource):
        (WebCore::SVGResource::~SVGResource):
        (WebCore::SVGResource::invalidate):
        (WebCore::SVGResource::addClient):
        (WebCore::SVGResource::clients):
        (WebCore::SVGResource::idInRegistry):
        (WebCore::SVGResource::setIdInRegistry):
        (WebCore::SVGResource::externalRepresentation):
        (WebCore::getResourceById):
        (WebCore::getPaintServerById):
        (WebCore::operator<<):
        * platform/graphics/svg/SVGResource.h: Added.
        (WebCore::):
        (WebCore::SVGResource::isPaintServer):
        (WebCore::SVGResource::isFilter):
        (WebCore::SVGResource::isClipper):
        (WebCore::SVGResource::isMarker):
        (WebCore::SVGResource::isMasker):
        (WebCore::SVGResourceListener::~SVGResourceListener):
        * platform/graphics/svg/SVGResourceClipper.cpp: Added.
        (WebCore::SVGResourceClipper::SVGResourceClipper):
        (WebCore::SVGResourceClipper::~SVGResourceClipper):
        (WebCore::SVGResourceClipper::resetClipData):
        (WebCore::SVGResourceClipper::addClipData):
        (WebCore::SVGResourceClipper::clipData):
        (WebCore::SVGResourceClipper::externalRepresentation):
        (WebCore::operator<<):
        (WebCore::getClipperById):
        * platform/graphics/svg/SVGResourceClipper.h: Added.
        (WebCore::ClipDataList::addPath):
        (WebCore::SVGResourceClipper::isClipper):
        * platform/graphics/svg/SVGResourceImage.h: Added.
        * platform/graphics/svg/SVGResourceMarker.cpp: Added.
        (WebCore::SVGResourceMarker::SVGResourceMarker):
        (WebCore::SVGResourceMarker::~SVGResourceMarker):
        (WebCore::SVGResourceMarker::setMarker):
        (WebCore::SVGResourceMarker::setRef):
        (WebCore::SVGResourceMarker::draw):
        (WebCore::SVGResourceMarker::externalRepresentation):
        (WebCore::getMarkerById):
        * platform/graphics/svg/SVGResourceMarker.h: Added.
        (WebCore::SVGResourceMarker::refX):
        (WebCore::SVGResourceMarker::refY):
        (WebCore::SVGResourceMarker::setAngle):
        (WebCore::SVGResourceMarker::setAutoAngle):
        (WebCore::SVGResourceMarker::angle):
        (WebCore::SVGResourceMarker::setUseStrokeWidth):
        (WebCore::SVGResourceMarker::useStrokeWidth):
        (WebCore::SVGResourceMarker::isMarker):
        * platform/graphics/svg/SVGResourceMasker.cpp: Added.
        (WebCore::SVGResourceMasker::SVGResourceMasker):
        (WebCore::SVGResourceMasker::~SVGResourceMasker):
        (WebCore::SVGResourceMasker::setMask):
        (WebCore::SVGResourceMasker::mask):
        (WebCore::SVGResourceMasker::externalRepresentation):
        (WebCore::getMaskerById):
        * platform/graphics/svg/SVGResourceMasker.h: Added.
        (WebCore::SVGResourceMasker::isMasker):
        * platform/graphics/svg/cg/SVGResourceClipperCg.mm: Added.
        (WebCore::SVGResourceClipper::applyClip):
        * platform/graphics/svg/cg/SVGResourceImageCg.mm: Added.
        (WebCore::SVGResourceImage::SVGResourceImage):
        (WebCore::SVGResourceImage::~SVGResourceImage):
        (WebCore::SVGResourceImage::init):
        (WebCore::SVGResourceImage::size):
        (WebCore::SVGResourceImage::cgLayer):
        (WebCore::SVGResourceImage::setCGLayer):
        * platform/graphics/svg/cg/SVGResourceMaskerCg.mm: Added.
        (WebCore::applyLuminanceToAlphaFilter):
        (WebCore::applyExpandAlphatoGrayscaleFilter):
        (WebCore::transformImageIntoGrayscaleMask):
        (WebCore::SVGResourceMasker::applyMask):
        * platform/graphics/svg/qt/SVGResourceClipperQt.cpp: Added.
        (WebCore::SVGResourceClipper::applyClip):
        * platform/graphics/svg/qt/SVGResourceImageQt.cpp: Added.
        (WebCore::SVGResourceImage::init):
        (WebCore::SVGResourceImage::size):
        * platform/graphics/svg/qt/SVGResourceMaskerQt.cpp: Added.
        (WebCore::SVGResourceMasker::applyMask):
        * platform/qt/GraphicsContextQt.cpp:
        * rendering/RenderPath.cpp:
        (WebCore::RenderPath::paint):
        (WebCore::DrawMarkersData::DrawMarkersData):
        (WebCore::RenderPath::drawMarkersIfNeeded):
        * rendering/RenderSVGContainer.cpp:
        (WebCore::RenderSVGContainer::paint):
        * rendering/RenderSVGImage.cpp:
        (WebCore::RenderSVGImage::paint):
        * rendering/SVGInlineFlowBox.cpp:
        (WebCore::paintSVGInlineFlow):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@17461 268f45cc-cd09-0410-ab3c-d52691b4dbfc
74 files changed:
WebCore/CMakeLists.txt
WebCore/ChangeLog
WebCore/WebCore.xcodeproj/project.pbxproj
WebCore/graphics/svg/SVGResource.cpp [moved from WebCore/kcanvas/KCanvasResource.cpp with 100% similarity]
WebCore/graphics/svg/SVGResourceClipper.cpp [moved from WebCore/kcanvas/KCanvasClipper.cpp with 100% similarity]
WebCore/graphics/svg/SVGResourceClipper.h [moved from WebCore/kcanvas/KCanvasClipper.h with 100% similarity]
WebCore/graphics/svg/SVGResourceImage.h [moved from WebCore/kcanvas/KCanvasImage.h with 100% similarity]
WebCore/graphics/svg/SVGResourceListener.h [moved from WebCore/kcanvas/KCanvasResourceListener.h with 100% similarity]
WebCore/graphics/svg/SVGResourceMarker.cpp [moved from WebCore/kcanvas/KCanvasMarker.cpp with 100% similarity]
WebCore/graphics/svg/SVGResourceMarker.h [moved from WebCore/kcanvas/KCanvasMarker.h with 100% similarity]
WebCore/graphics/svg/SVGResourceMasker.cpp [moved from WebCore/kcanvas/KCanvasMasker.cpp with 100% similarity]
WebCore/graphics/svg/SVGResourceMasker.h [moved from WebCore/kcanvas/KCanvasMasker.h with 100% similarity]
WebCore/kcanvas/KCanvasCreator.cpp [deleted file]
WebCore/kcanvas/KCanvasCreator.h [deleted file]
WebCore/kcanvas/KCanvasFilters.cpp
WebCore/kcanvas/KCanvasFilters.h
WebCore/kcanvas/KCanvasResource.h
WebCore/kcanvas/KCanvasTreeDebug.cpp
WebCore/kcanvas/device/KRenderingDevice.h
WebCore/kcanvas/device/KRenderingPaintServer.h
WebCore/kcanvas/device/KRenderingPaintServerGradient.cpp
WebCore/kcanvas/device/KRenderingPaintServerGradient.h
WebCore/kcanvas/device/KRenderingPaintServerPattern.cpp
WebCore/kcanvas/device/KRenderingPaintServerPattern.h
WebCore/kcanvas/device/KRenderingPaintServerSolid.h
WebCore/kcanvas/device/qt/KCanvasClipperQt.cpp
WebCore/kcanvas/device/qt/KCanvasClipperQt.h
WebCore/kcanvas/device/qt/KRenderingDeviceQt.cpp
WebCore/kcanvas/device/qt/KRenderingDeviceQt.h
WebCore/kcanvas/device/qt/KRenderingPaintServerGradientQt.cpp
WebCore/kcanvas/device/qt/KRenderingPaintServerPatternQt.cpp
WebCore/kcanvas/device/qt/KRenderingPaintServerQt.cpp
WebCore/kcanvas/device/qt/KRenderingPaintServerSolidQt.cpp
WebCore/kcanvas/device/quartz/KCanvasFilterQuartz.mm
WebCore/kcanvas/device/quartz/KCanvasItemQuartz.mm
WebCore/kcanvas/device/quartz/KCanvasMaskerQuartz.h
WebCore/kcanvas/device/quartz/KCanvasMaskerQuartz.mm
WebCore/kcanvas/device/quartz/KCanvasResourcesQuartz.h
WebCore/kcanvas/device/quartz/KCanvasResourcesQuartz.mm
WebCore/kcanvas/device/quartz/KRenderingDeviceQuartz.h
WebCore/kcanvas/device/quartz/KRenderingDeviceQuartz.mm
WebCore/kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm
WebCore/kcanvas/device/quartz/KRenderingPaintServerQuartz.h
WebCore/kcanvas/device/quartz/KRenderingPaintServerQuartz.mm
WebCore/kcanvas/device/quartz/QuartzSupport.mm
WebCore/ksvg2/misc/KCanvasRenderingStyle.cpp
WebCore/ksvg2/svg/SVGClipPathElement.cpp
WebCore/ksvg2/svg/SVGClipPathElement.h
WebCore/ksvg2/svg/SVGFEImageElement.cpp
WebCore/ksvg2/svg/SVGFilterElement.cpp
WebCore/ksvg2/svg/SVGFilterElement.h
WebCore/ksvg2/svg/SVGGradientElement.cpp
WebCore/ksvg2/svg/SVGGradientElement.h
WebCore/ksvg2/svg/SVGImageElement.cpp
WebCore/ksvg2/svg/SVGLinearGradientElement.cpp
WebCore/ksvg2/svg/SVGLinearGradientElement.h
WebCore/ksvg2/svg/SVGMarkerElement.cpp
WebCore/ksvg2/svg/SVGMarkerElement.h
WebCore/ksvg2/svg/SVGMaskElement.cpp
WebCore/ksvg2/svg/SVGMaskElement.h
WebCore/ksvg2/svg/SVGPatternElement.cpp
WebCore/ksvg2/svg/SVGPatternElement.h
WebCore/ksvg2/svg/SVGRadialGradientElement.cpp
WebCore/ksvg2/svg/SVGRadialGradientElement.h
WebCore/ksvg2/svg/SVGStyledElement.h
WebCore/platform/graphics/GraphicsContext.cpp [moved from WebCore/platform/GraphicsContext.cpp with 100% similarity]
WebCore/platform/graphics/GraphicsContext.h [moved from WebCore/platform/GraphicsContext.h with 99% similarity]
WebCore/platform/graphics/GraphicsTypes.cpp [moved from WebCore/platform/GraphicsTypes.cpp with 100% similarity]
WebCore/platform/graphics/GraphicsTypes.h [moved from WebCore/platform/GraphicsTypes.h with 100% similarity]
WebCore/platform/qt/GraphicsContextQt.cpp
WebCore/rendering/RenderPath.cpp
WebCore/rendering/RenderSVGContainer.cpp
WebCore/rendering/RenderSVGImage.cpp
WebCore/rendering/SVGInlineFlowBox.cpp