-
darin authored
- 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: http://svn.webkit.org/repository/webkit/trunk@14102 268f45cc-cd09-0410-ab3c-d52691b4dbfc
77e2136b