 Chromium Code Reviews
 Chromium Code Reviews Issue 21430003:
  Implement interfaces in PaintInfo and make it a class.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/blink.git@getterPaintInfo01
    
  
    Issue 21430003:
  Implement interfaces in PaintInfo and make it a class.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/blink.git@getterPaintInfo01| Index: Source/core/rendering/svg/SVGRenderingContext.cpp | 
| diff --git a/Source/core/rendering/svg/SVGRenderingContext.cpp b/Source/core/rendering/svg/SVGRenderingContext.cpp | 
| index 33f2a3c8d34d884b23243ecb614f369a949c2f09..1d3579466fbe53eb186f8f4f28c53fdda84f6c30 100644 | 
| --- a/Source/core/rendering/svg/SVGRenderingContext.cpp | 
| +++ b/Source/core/rendering/svg/SVGRenderingContext.cpp | 
| @@ -58,16 +58,17 @@ SVGRenderingContext::~SVGRenderingContext() | 
| if (m_renderingFlags & EndFilterLayer) { | 
| ASSERT(m_filter); | 
| - m_filter->postApplyResource(m_object, m_paintInfo->context, ApplyToDefaultMode, 0, 0); | 
| - m_paintInfo->context = m_savedContext; | 
| - m_paintInfo->rect = m_savedPaintRect; | 
| + GraphicsContext* context = m_paintInfo->getContext(); | 
| 
do-not-use
2013/08/05 11:16:30
Useless new local variable?
 | 
| + m_filter->postApplyResource(m_object, context, ApplyToDefaultMode, 0, 0); | 
| + m_paintInfo->setContext(m_savedContext); | 
| + m_paintInfo->setRect(m_savedPaintRect); | 
| } | 
| if (m_renderingFlags & EndOpacityLayer) | 
| - m_paintInfo->context->endTransparencyLayer(); | 
| + m_paintInfo->getContext()->endTransparencyLayer(); | 
| if (m_renderingFlags & RestoreGraphicsContext) | 
| - m_paintInfo->context->restore(); | 
| + m_paintInfo->getContext()->restore(); | 
| } | 
| void SVGRenderingContext::prepareToRenderSVGContent(RenderObject* object, PaintInfo& paintInfo, NeedsGraphicsContextSave needsGraphicsContextSave) | 
| @@ -86,7 +87,7 @@ void SVGRenderingContext::prepareToRenderSVGContent(RenderObject* object, PaintI | 
| // We need to save / restore the context even if the initialization failed. | 
| if (needsGraphicsContextSave == SaveGraphicsContext) { | 
| - m_paintInfo->context->save(); | 
| + m_paintInfo->getContext()->save(); | 
| m_renderingFlags |= RestoreGraphicsContext; | 
| } | 
| @@ -104,15 +105,15 @@ void SVGRenderingContext::prepareToRenderSVGContent(RenderObject* object, PaintI | 
| FloatRect repaintRect = m_object->repaintRectInLocalCoordinates(); | 
| if (opacity < 1 || blendMode != BlendModeNormal) { | 
| - m_paintInfo->context->clip(repaintRect); | 
| + m_paintInfo->getContext()->clip(repaintRect); | 
| if (blendMode != BlendModeNormal) { | 
| if (!(m_renderingFlags & RestoreGraphicsContext)) { | 
| - m_paintInfo->context->save(); | 
| + m_paintInfo->getContext()->save(); | 
| m_renderingFlags |= RestoreGraphicsContext; | 
| } | 
| - m_paintInfo->context->setCompositeOperation(CompositeSourceOver, blendMode); | 
| + m_paintInfo->getContext()->setCompositeOperation(CompositeSourceOver, blendMode); | 
| } | 
| - m_paintInfo->context->beginTransparencyLayer(opacity); | 
| + m_paintInfo->getContext()->beginTransparencyLayer(opacity); | 
| m_renderingFlags |= EndOpacityLayer; | 
| } | 
| } | 
| @@ -120,7 +121,7 @@ void SVGRenderingContext::prepareToRenderSVGContent(RenderObject* object, PaintI | 
| ClipPathOperation* clipPathOperation = style->clipPath(); | 
| if (clipPathOperation && clipPathOperation->getOperationType() == ClipPathOperation::SHAPE) { | 
| ShapeClipPathOperation* clipPath = static_cast<ShapeClipPathOperation*>(clipPathOperation); | 
| - m_paintInfo->context->clipPath(clipPath->path(object->objectBoundingBox()), clipPath->windRule()); | 
| + m_paintInfo->getContext()->clipPath(clipPath->path(object->objectBoundingBox()), clipPath->windRule()); | 
| } | 
| SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(m_object); | 
| @@ -134,33 +135,45 @@ void SVGRenderingContext::prepareToRenderSVGContent(RenderObject* object, PaintI | 
| if (!isRenderingMask) { | 
| if (RenderSVGResourceMasker* masker = resources->masker()) { | 
| - if (!masker->applyResource(m_object, style, m_paintInfo->context, ApplyToDefaultMode)) | 
| + GraphicsContext* context = m_paintInfo->getContext(); | 
| + if (!masker->applyResource(m_object, style, context, ApplyToDefaultMode)) { | 
| + m_paintInfo->setContext(context); | 
| 
do-not-use
2013/08/05 11:16:30
IMHO, this results in less readable code. Maybe th
 | 
| return; | 
| + } | 
| + m_paintInfo->setContext(context); | 
| } | 
| } | 
| RenderSVGResourceClipper* clipper = resources->clipper(); | 
| if (!clipPathOperation && clipper) { | 
| - if (!clipper->applyResource(m_object, style, m_paintInfo->context, ApplyToDefaultMode)) | 
| + GraphicsContext* context = m_paintInfo->getContext(); | 
| + if (!clipper->applyResource(m_object, style, context, ApplyToDefaultMode)) { | 
| + m_paintInfo->setContext(context); | 
| return; | 
| + } | 
| + m_paintInfo->setContext(context); | 
| } | 
| if (!isRenderingMask) { | 
| m_filter = resources->filter(); | 
| if (m_filter) { | 
| - m_savedContext = m_paintInfo->context; | 
| - m_savedPaintRect = m_paintInfo->rect; | 
| + m_savedContext = m_paintInfo->getContext(); | 
| + m_savedPaintRect = m_paintInfo->getRect(); | 
| // Return with false here may mean that we don't need to draw the content | 
| // (because it was either drawn before or empty) but we still need to apply the filter. | 
| m_renderingFlags |= EndFilterLayer; | 
| - if (!m_filter->applyResource(m_object, style, m_paintInfo->context, ApplyToDefaultMode)) | 
| + GraphicsContext* context = m_paintInfo->getContext(); | 
| + if (!m_filter->applyResource(m_object, style, context, ApplyToDefaultMode)) { | 
| + m_paintInfo->setContext(context); | 
| return; | 
| + } | 
| + m_paintInfo->setContext(context); | 
| // Since we're caching the resulting bitmap and do not invalidate it on repaint rect | 
| // changes, we need to paint the whole filter region. Otherwise, elements not visible | 
| // at the time of the initial paint (due to scrolling, window size, etc.) will never | 
| // be drawn. | 
| - m_paintInfo->rect = IntRect(m_filter->drawingRegion(m_object)); | 
| + m_paintInfo->setRect(IntRect(m_filter->drawingRegion(m_object))); | 
| } | 
| } | 
| @@ -321,7 +334,7 @@ bool SVGRenderingContext::bufferForeground(OwnPtr<ImageBuffer>& imageBuffer) | 
| // Invalidate an existing buffer if the scale is not correct. | 
| if (imageBuffer) { | 
| - AffineTransform transform = m_paintInfo->context->getCTM(GraphicsContext::DefinitelyIncludeDeviceScale); | 
| + AffineTransform transform = m_paintInfo->getContext()->getCTM(GraphicsContext::DefinitelyIncludeDeviceScale); | 
| IntSize expandedBoundingBox = expandedIntSize(boundingBox.size()); | 
| IntSize bufferSize(static_cast<int>(ceil(expandedBoundingBox.width() * transform.xScale())), static_cast<int>(ceil(expandedBoundingBox.height() * transform.yScale()))); | 
| if (bufferSize != imageBuffer->internalSize()) | 
| @@ -330,17 +343,17 @@ bool SVGRenderingContext::bufferForeground(OwnPtr<ImageBuffer>& imageBuffer) | 
| // Create a new buffer and paint the foreground into it. | 
| if (!imageBuffer) { | 
| - if ((imageBuffer = m_paintInfo->context->createCompatibleBuffer(expandedIntSize(boundingBox.size()), true))) { | 
| + if ((imageBuffer = m_paintInfo->getContext()->createCompatibleBuffer(expandedIntSize(boundingBox.size()), true))) { | 
| GraphicsContext* bufferedRenderingContext = imageBuffer->context(); | 
| bufferedRenderingContext->translate(-boundingBox.x(), -boundingBox.y()); | 
| PaintInfo bufferedInfo(*m_paintInfo); | 
| - bufferedInfo.context = bufferedRenderingContext; | 
| + bufferedInfo.setContext(bufferedRenderingContext); | 
| toRenderSVGImage(m_object)->paintForeground(bufferedInfo); | 
| } else | 
| return false; | 
| } | 
| - m_paintInfo->context->drawImageBuffer(imageBuffer.get(), boundingBox); | 
| + m_paintInfo->getContext()->drawImageBuffer(imageBuffer.get(), boundingBox); | 
| return true; | 
| } |