Reviewed by Eric.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 28 Apr 2006 17:05:49 +0000 (17:05 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 28 Apr 2006 17:05:49 +0000 (17:05 +0000)
commit352f12e544337ef1ac1dabdcc3b858be5143ade6
tree79bd6fff456b7e8ad15674cefbbc422765c717ef
parent6acd962144a17a9153d2803a733fc7d78fc0d954
    Reviewed by Eric.

        - http://bugzilla.opendarwin.org/show_bug.cgi?id=8608
          make GraphicsContext more suitable for cross-platform use, step 2

        - Changed GraphicsContext to use NSGraphicsContext as little as possible.
        - Removed the printing flag from GraphicsContext.
        - Changed GraphicsContext to assume the NSGraphicsContext is always flipped,
          and got rid of parameters to pass the flipped boolean around.

        * WebCore.vcproj/WebCore/WebCore.vcproj: Add GraphicsTypes.h/cpp and remove
        CompositeOperator.h/cpp.
        * WebCore.xcodeproj/project.pbxproj: Ditto.

        * bridge/mac/FrameMac.mm: (WebCore::FrameMac::setDisplaysWithFocusAttributes):
        * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge drawRect:]):
        * html/CanvasPattern.cpp: (WebCore::patternCallback):
        * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::createDrawingContext):
        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
        (WebCore::KRenderingDeviceContextQuartz::createGraphicsContext):
        * platform/mac/WidgetMac.mm: (WebCore::Widget::lockDrawingFocus):
        Update for changes to GraphicsContext constructor (no flipped or printing boolean).

        * html/CanvasRenderingContext2D.h: Added a Path to the context state. Changed the
        LineCap and LineJoin types to use the new ones in GraphicsTypes.h instead of defining
        types here in this class. Changed m_platformContextStrokeStyleIsPattern and
        m_platformContextFillStyleIsPattern to be named m_appliedStrokePattern and
        m_appliedFillPattern and moved them outside the __APPLE__ ifdefs. Removed the
        platformContext() function. Moved applyStrokePattern and applyFillPattern out of
        the __APPLE__ ifdef.

        * html/CanvasRenderingContext2D.cpp:
        (WebCore::CanvasRenderingContext2D::State::State): Moved the stroke pattern
        booleans out of Mac-specific ifdef.
        (WebCore::CanvasRenderingContext2D::save): Changed to use GraphicsContext instead
        of using CGContext directly.
        (WebCore::CanvasRenderingContext2D::restore): Ditto.
        (WebCore::CanvasRenderingContext2D::setStrokeStyle): Ditto.
        (WebCore::CanvasRenderingContext2D::setFillStyle): Ditto.
        (WebCore::CanvasRenderingContext2D::setLineWidth): Ditto.
        (WebCore::CanvasRenderingContext2D::lineCap): Ditto.
        (WebCore::CanvasRenderingContext2D::setLineCap): Ditto.
        (WebCore::CanvasRenderingContext2D::lineJoin): Ditto.
        (WebCore::CanvasRenderingContext2D::setLineJoin): Ditto.
        (WebCore::CanvasRenderingContext2D::setMiterLimit): Ditto.
        (WebCore::CanvasRenderingContext2D::shadowColor): Ditto.
        (WebCore::CanvasRenderingContext2D::setGlobalAlpha): Ditto.
        (WebCore::CanvasRenderingContext2D::setGlobalCompositeOperation): Ditto.
        (WebCore::CanvasRenderingContext2D::scale): Update since platformContext() function
        no longer exists.
        (WebCore::CanvasRenderingContext2D::rotate): Ditto.
        (WebCore::CanvasRenderingContext2D::translate): Ditto.
        (WebCore::CanvasRenderingContext2D::beginPath): Changed to use GraphicsContext instead
        of using CGContext directly.
        (WebCore::CanvasRenderingContext2D::closePath): Ditto.
        (WebCore::CanvasRenderingContext2D::moveTo): Ditto.
        (WebCore::CanvasRenderingContext2D::lineTo): Ditto.
        (WebCore::CanvasRenderingContext2D::quadraticCurveTo): Ditto.
        (WebCore::CanvasRenderingContext2D::bezierCurveTo): Ditto.
        (WebCore::CanvasRenderingContext2D::arcTo): Ditto.
        (WebCore::CanvasRenderingContext2D::arc): Ditto.
        (WebCore::CanvasRenderingContext2D::rect): Ditto.
        (WebCore::CanvasRenderingContext2D::fill): Changed to use the current path from this class
        instead of relying on the CGContext's current path.
        (WebCore::CanvasRenderingContext2D::stroke): Ditto.
        (WebCore::CanvasRenderingContext2D::clip): Changed to use the current path and use the
        GraphicsContext instead of using CGContext directly.
        (WebCore::CanvasRenderingContext2D::clearRect): Changed to use GraphicsContext instead
        of using CGContext directly.
        (WebCore::CanvasRenderingContext2D::fillRect): Update since platformContext() function
        no longer exists.
        (WebCore::CanvasRenderingContext2D::strokeRect): Ditto.
        (WebCore::CanvasRenderingContext2D::setShadow): Ditto.
        (WebCore::CanvasRenderingContext2D::applyShadow): Ditto.
        (WebCore::CanvasRenderingContext2D::drawImage): Ditto.
        (WebCore::CanvasRenderingContext2D::drawImageFromRect): Ditto.
        (WebCore::CanvasRenderingContext2D::createPattern): Ditto.
        (WebCore::CanvasRenderingContext2D::applyStrokePattern): Made a tiny bit of this function
        cross-platform. The bulk is still Mac-specific.
        (WebCore::CanvasRenderingContext2D::applyFillPattern): Ditto.

        * html/CanvasStyle.h: Changed to use GraphicsContext instead of CGContext. Now the
        platform-specific stuff is in the implementation, not the header.
        * html/CanvasStyle.cpp:
        (WebCore::CanvasStyle::applyStrokeColor): Moved the ifdefs inside the function, getting
        us one step closer to platform independence.
        (WebCore::CanvasStyle::applyFillColor): Ditto.

        * html/html_imageimpl.cpp:
        (WebCore::HTMLAreaElement::getRect): Update for changes to the Path class.
        (WebCore::HTMLAreaElement::getRegion): Ditto.

        * page/Frame.cpp:
        (WebCore::Frame::paint): Change to check printing flag on the document, rather than on
        the GraphicsContext, since there is no printing flag for GraphicsContext any more.
        (WebCore::Frame::adjustPageHeight): Update for change to GraphicsContext constructor.

        * platform/GraphicsContext.h: Define a type called PlatformGraphicsContext so the
        platform-specific getter and constructor don't have to be ifdef'd. Added clearRect,
        strokeRect, setLineWidth, setLineCap, setLineJoin, setMiterLimit, setAlpha, setCompositeOperation,
        and clip functions. Removed the isForPrinting parameter from createGraphicsContextPrivate.
        * platform/GraphicsContext.cpp:
        (WebCore::GraphicsContextPrivate::GraphicsContextPrivate): Removed isForPrinting.
        (WebCore::GraphicsContext::createGraphicsContextPrivate): Ditto.
        * platform/mac/GraphicsContextMac.mm:
        (WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
        Removed NSGraphicsContext.
        (WebCore::GraphicsContextPlatformPrivate::~GraphicsContextPlatformPrivate):
        Ditto.
        (WebCore::GraphicsContext::GraphicsContext): Removed constructor that
        takes an NSGraphicsContext. Removed the flipText and forPrinting parameters
        to the other constructor.
        (WebCore::GraphicsContext::savePlatformState): Removed NSGraphicsContext code.
        (WebCore::GraphicsContext::restorePlatformState): Ditto.
        (WebCore::GraphicsContext::drawRect): Updated assertion to more-precisely
        reflect the limitation of the current version of this function.
        (WebCore::GraphicsContext::setColorFromFillColor): Ditto.
        (WebCore::GraphicsContext::setColorFromPen): Ditto.
        (WebCore::GraphicsContext::drawLine): Updated assertion to more-precisely
        reflect the limitation of the current version of this function.
        (WebCore::setCompositeOperation):
        (WebCore::GraphicsContext::fillRect): Ditto.
        (WebCore::GraphicsContext::setLineWidth): Added.
        (WebCore::GraphicsContext::setMiterLimit): Added.
        (WebCore::GraphicsContext::setAlpha): Added.
        (WebCore::GraphicsContext::setCompositeOperation): Added.
        (WebCore::GraphicsContext::clearRect): Added.
        (WebCore::GraphicsContext::strokeRect): Added.
        (WebCore::GraphicsContext::setLineCap): Added.
        (WebCore::GraphicsContext::setLineJoin): Added.
        (WebCore::GraphicsContext::clip): Added.

        * platform/CompositeOperator.cpp: Removed.
        * platform/CompositeOperator.h: Removed.
        * platform/GraphicsTypes.cpp: Added. Includes CompositeOperator, LineCap, and LineJoin.
        * platform/GraphicsTypes.h: Added.

        * platform/Image.h: Changed include to GraphicsTypes.h from CompositeOperator.h.

        * platform/Path.h: Removed constructors that take a Rect and an array of points. Made
        the Path mutable. Changed the types for contains and boundingRect to be float-based
        instead of int-based. Changed translate to take a FloatSize instead of two integers.
        Added clear, moveTo, addLineTo, addQuadCurveTo, addBezierCurveTo, addArcTo, closeSubpath,
        addArc, addRect, addEllipse, and platformPath functions. Defined a PlatformPath type
        so we don't have to ifdef the header so much.
        * platform/cg/PathCG.cpp:
        (WebCore::Path::Path): Changed class to always have a mutable path.
        (WebCore::Path::operator=): Changed to make a mutable copy.
        (WebCore::Path::contains): Changed to take a FloatPoint instead of IntPoint.
        (WebCore::Path::translate): Changed to use a FloatSize instead of two ints.
        (WebCore::Path::boundingRect): Changed to return a FloatRect.
        (WebCore::Path::moveTo): Added.
        (WebCore::Path::addLineTo): Added.
        (WebCore::Path::addQuadCurveTo): Added.
        (WebCore::Path::addBezierCurveTo): Added.
        (WebCore::Path::addArcTo): Added.
        (WebCore::Path::closeSubpath): Added.
        (WebCore::Path::addArc): Added.
        (WebCore::Path::addRect): Added.
        (WebCore::Path::addEllipse): Added.
        (WebCore::Path::clear): Added.

        * platform/mac/ImageMac.mm:
        (WebCore::fillSolidColorInRect): Changed to take a GraphicsContext instead of
        a CGContext.
        (WebCore::Image::checkForSolidColor): Changed to use the new setCompositeOperation
        in GraphicsContex.
        (WebCore::Image::draw): Changed to use the new PDF image and fillSolidColorInRect
        function that take GraphicsContext instead of CGContext.
        (WebCore::Image::drawTiled): Ditto.

        * platform/mac/PDFDocumentImage.h: Made most functions private. Changed to
        use GraphicsContext and FloatRect instead of CGContext and NSRect. Also
        removed the unused alpha and flipped booleans.
        * platform/mac/PDFDocumentImage.mm:
        (WebCore::PDFDocumentImage::bounds): Update for change in types.
        (WebCore::PDFDocumentImage::adjustCTM): Ditto.
        (WebCore::PDFDocumentImage::setCurrentPage): Ditto.
        (WebCore::PDFDocumentImage::draw): Ditto.

        * platform/win/TemporaryLinkStubs.cpp: Added lots of new stubs.

        * rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paint): Changed to get
        printing boolean from document instead graphics context.
        * rendering/RenderBlock.cpp:
        (WebCore::RenderBlock::paintChildren): Ditto.
        (WebCore::RenderBlock::paintObject): Ditto.
        * rendering/RenderFlow.cpp: (WebCore::RenderFlow::paintLines): Ditto.
        * rendering/RenderHTMLCanvas.cpp: (WebCore::RenderHTMLCanvas::paint): Ditto.
        * rendering/RenderImage.cpp: (WebCore::RenderImage::paint): Ditto.
        * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::paintButton): Ditto.
        * rendering/render_list.cpp: (WebCore::RenderListMarker::paint): Ditto.
        * rendering/render_replaced.cpp: (WebCore::RenderWidget::paint): Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@14102 268f45cc-cd09-0410-ab3c-d52691b4dbfc
36 files changed:
WebCore/ChangeLog
WebCore/WebCore.vcproj/WebCore/WebCore.vcproj
WebCore/WebCore.xcodeproj/project.pbxproj
WebCore/bridge/mac/FrameMac.mm
WebCore/bridge/mac/WebCoreFrameBridge.mm
WebCore/html/CanvasPattern.cpp
WebCore/html/CanvasRenderingContext2D.cpp
WebCore/html/CanvasRenderingContext2D.h
WebCore/html/CanvasStyle.cpp
WebCore/html/CanvasStyle.h
WebCore/html/HTMLCanvasElement.cpp
WebCore/html/html_imageimpl.cpp
WebCore/kcanvas/device/quartz/KRenderingDeviceQuartz.mm
WebCore/page/Frame.cpp
WebCore/platform/GraphicsContext.cpp
WebCore/platform/GraphicsContext.h
WebCore/platform/GraphicsTypes.cpp [moved from WebCore/platform/CompositeOperator.cpp with 62% similarity]
WebCore/platform/GraphicsTypes.h [moved from WebCore/platform/CompositeOperator.h with 87% similarity]
WebCore/platform/Image.cpp
WebCore/platform/Image.h
WebCore/platform/Path.h
WebCore/platform/cg/PathCG.cpp
WebCore/platform/mac/GraphicsContextMac.mm
WebCore/platform/mac/ImageMac.mm
WebCore/platform/mac/PDFDocumentImage.h
WebCore/platform/mac/PDFDocumentImage.mm
WebCore/platform/mac/WidgetMac.mm
WebCore/platform/win/TemporaryLinkStubs.cpp
WebCore/rendering/InlineTextBox.cpp
WebCore/rendering/RenderBlock.cpp
WebCore/rendering/RenderFlow.cpp
WebCore/rendering/RenderHTMLCanvas.cpp
WebCore/rendering/RenderImage.cpp
WebCore/rendering/RenderThemeMac.mm
WebCore/rendering/render_list.cpp
WebCore/rendering/render_replaced.cpp