Index: Source/core/svg/graphics/SVGImage.cpp |
=================================================================== |
--- Source/core/svg/graphics/SVGImage.cpp (revision 162906) |
+++ Source/core/svg/graphics/SVGImage.cpp (working copy) |
@@ -52,8 +52,9 @@ |
namespace WebCore { |
-SVGImage::SVGImage(ImageObserver* observer) |
+SVGImage::SVGImage(ImageObserver* observer, float deviceScaleFactor) |
: Image(observer) |
+ , m_deviceScaleFactor(deviceScaleFactor) |
{ |
} |
@@ -187,16 +188,20 @@ |
draw(context, dstRect, scaledSrc, compositeOp, blendMode); |
} |
-PassRefPtr<NativeImageSkia> SVGImage::nativeImageForCurrentFrame() |
+PassRefPtr<NativeImageSkia> SVGImage::nativeImageForCurrentFrame(ScaleHint hint) |
{ |
if (!m_page) |
return 0; |
- OwnPtr<ImageBuffer> buffer = ImageBuffer::create(size(), 1); |
+ IntSize scaledSize = size(); |
+ float scale = hint == PreferDeviceScale ? m_deviceScaleFactor : 1; |
+ scaledSize.scale(scale); |
+ |
+ OwnPtr<ImageBuffer> buffer = ImageBuffer::create(scaledSize, 1); |
if (!buffer) // failed to allocate image |
return 0; |
- drawForContainer(buffer->context(), size(), 1, rect(), rect(), CompositeSourceOver, blink::WebBlendModeNormal); |
+ drawForContainer(buffer->context(), size(), 1, FloatRect(IntRect(IntPoint(), scaledSize)), rect(), CompositeSourceOver, blink::WebBlendModeNormal); |
// FIXME: WK(Bug 113657): We should use DontCopyBackingStore here. |
return buffer->copyImage(CopyBackingStore)->nativeImageForCurrentFrame(); |