| Index: Source/core/rendering/svg/RenderSVGImage.cpp
|
| diff --git a/Source/core/rendering/svg/RenderSVGImage.cpp b/Source/core/rendering/svg/RenderSVGImage.cpp
|
| index 292f2614835de40828487e1c23e9cf517cf315f9..e1f2d20fc3199e3d324a50f7c7d6e6adb21df2d3 100644
|
| --- a/Source/core/rendering/svg/RenderSVGImage.cpp
|
| +++ b/Source/core/rendering/svg/RenderSVGImage.cpp
|
| @@ -27,18 +27,16 @@
|
|
|
| #include "core/rendering/svg/RenderSVGImage.h"
|
|
|
| -#include "core/rendering/GraphicsContextAnnotator.h"
|
| +#include "core/paint/SVGImagePainter.h"
|
| #include "core/rendering/ImageQualityController.h"
|
| #include "core/rendering/PointerEventsHitRules.h"
|
| #include "core/rendering/RenderImageResource.h"
|
| #include "core/rendering/svg/RenderSVGResource.h"
|
| #include "core/rendering/svg/SVGRenderSupport.h"
|
| -#include "core/rendering/svg/SVGRenderingContext.h"
|
| #include "core/rendering/svg/SVGResources.h"
|
| #include "core/rendering/svg/SVGResourcesCache.h"
|
| #include "core/svg/SVGImageElement.h"
|
| #include "platform/LengthFunctions.h"
|
| -#include "platform/graphics/GraphicsContextStateSaver.h"
|
|
|
| namespace blink {
|
|
|
| @@ -148,58 +146,7 @@ void RenderSVGImage::layout()
|
|
|
| void RenderSVGImage::paint(PaintInfo& paintInfo, const LayoutPoint&)
|
| {
|
| - ANNOTATE_GRAPHICS_CONTEXT(paintInfo, this);
|
| -
|
| - if (paintInfo.phase != PaintPhaseForeground
|
| - || style()->visibility() == HIDDEN
|
| - || !m_imageResource->hasImage())
|
| - return;
|
| -
|
| - FloatRect boundingBox = paintInvalidationRectInLocalCoordinates();
|
| - if (!SVGRenderSupport::paintInfoIntersectsPaintInvalidationRect(boundingBox, m_localTransform, paintInfo))
|
| - return;
|
| -
|
| - PaintInfo childPaintInfo(paintInfo);
|
| - GraphicsContextStateSaver stateSaver(*childPaintInfo.context, false);
|
| -
|
| - if (!m_localTransform.isIdentity()) {
|
| - stateSaver.save();
|
| - childPaintInfo.applyTransform(m_localTransform, false);
|
| - }
|
| - if (!m_objectBoundingBox.isEmpty()) {
|
| - // SVGRenderingContext may taint the state - make sure we're always saving.
|
| - SVGRenderingContext renderingContext(this, childPaintInfo, stateSaver.saved() ?
|
| - SVGRenderingContext::DontSaveGraphicsContext : SVGRenderingContext::SaveGraphicsContext);
|
| -
|
| - if (renderingContext.isRenderingPrepared()) {
|
| - if (style()->svgStyle().bufferedRendering() == BR_STATIC && renderingContext.bufferForeground(m_bufferedForeground))
|
| - return;
|
| -
|
| - paintForeground(childPaintInfo);
|
| - }
|
| - }
|
| -
|
| - if (style()->outlineWidth())
|
| - paintOutline(childPaintInfo, IntRect(boundingBox));
|
| -}
|
| -
|
| -void RenderSVGImage::paintForeground(PaintInfo& paintInfo)
|
| -{
|
| - RefPtr<Image> image = m_imageResource->image();
|
| - FloatRect destRect = m_objectBoundingBox;
|
| - FloatRect srcRect(0, 0, image->width(), image->height());
|
| -
|
| - SVGImageElement* imageElement = toSVGImageElement(element());
|
| - imageElement->preserveAspectRatio()->currentValue()->transformRect(destRect, srcRect);
|
| -
|
| - InterpolationQuality interpolationQuality = InterpolationDefault;
|
| - if (style()->svgStyle().bufferedRendering() != BR_STATIC)
|
| - interpolationQuality = ImageQualityController::imageQualityController()->chooseInterpolationQuality(paintInfo.context, this, image.get(), image.get(), LayoutSize(destRect.size()));
|
| -
|
| - InterpolationQuality previousInterpolationQuality = paintInfo.context->imageInterpolationQuality();
|
| - paintInfo.context->setImageInterpolationQuality(interpolationQuality);
|
| - paintInfo.context->drawImage(image.get(), destRect, srcRect, CompositeSourceOver);
|
| - paintInfo.context->setImageInterpolationQuality(previousInterpolationQuality);
|
| + SVGImagePainter(*this).paint(paintInfo);
|
| }
|
|
|
| void RenderSVGImage::invalidateBufferedForeground()
|
|
|