| 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();
|
|
|