Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Unified Diff: Source/WebCore/svg/graphics/SVGImage.cpp

Issue 12326167: Merge 143257 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1410/
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « LayoutTests/svg/as-background-image/tiled-background-image-expected.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/WebCore/svg/graphics/SVGImage.cpp
===================================================================
--- Source/WebCore/svg/graphics/SVGImage.cpp (revision 144237)
+++ Source/WebCore/svg/graphics/SVGImage.cpp (working copy)
@@ -144,15 +144,25 @@
void SVGImage::drawPatternForContainer(GraphicsContext* context, const FloatSize containerSize, float pageScale, float zoom, const FloatRect& srcRect,
const AffineTransform& patternTransform, const FloatPoint& phase, ColorSpace colorSpace, CompositeOperator compositeOp, const FloatRect& dstRect)
{
- FloatSize zoomedContainerSize(containerSize);
- zoomedContainerSize.scale(zoom);
- FloatRect zoomedContainerRect = FloatRect(FloatPoint(), zoomedContainerSize);
+ ASSERT(pageScale);
- OwnPtr<ImageBuffer> buffer = ImageBuffer::create(expandedIntSize(zoomedContainerSize), pageScale);
- drawForContainer(buffer->context(), containerSize, zoom, zoomedContainerRect, zoomedContainerRect, ColorSpaceDeviceRGB, CompositeSourceOver, BlendModeNormal);
+ FloatRect zoomedContainerRect = FloatRect(FloatPoint(), containerSize);
+ zoomedContainerRect.scale(zoom);
+ FloatRect zoomedAndScaledContainerRect = zoomedContainerRect;
+ zoomedAndScaledContainerRect.scale(pageScale);
- RefPtr<Image> image = buffer->copyImage(CopyBackingStore);
- image->drawPattern(context, srcRect, patternTransform, phase, colorSpace, compositeOp, dstRect);
+ // FIXME(WK110065): This should take advantage of the ImageBuffer resolution instead of scaling the buffer manually.
+ OwnPtr<ImageBuffer> buffer = ImageBuffer::create(expandedIntSize(zoomedAndScaledContainerRect.size()), 1);
+ drawForContainer(buffer->context(), containerSize, zoom, zoomedAndScaledContainerRect, zoomedContainerRect, ColorSpaceDeviceRGB, CompositeSourceOver, BlendModeNormal);
+ RefPtr<Image> image = buffer->copyImage(CopyBackingStore, Unscaled);
+
+ // Adjust the source rect and transform for image buffer scale due to pageScale.
+ FloatRect scaledSrcRect = srcRect;
+ scaledSrcRect.scale(pageScale);
+ AffineTransform unscaledPatternTransform(patternTransform);
+ unscaledPatternTransform.scale(1 / pageScale);
+
+ image->drawPattern(context, scaledSrcRect, unscaledPatternTransform, phase, colorSpace, compositeOp, dstRect);
}
void SVGImage::draw(GraphicsContext* context, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace, CompositeOperator compositeOp, BlendMode)
« no previous file with comments | « LayoutTests/svg/as-background-image/tiled-background-image-expected.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698