| Index: third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp
|
| diff --git a/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp b/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp
|
| index ba9e7486e5d8f444a03d613f4aed4800ff2de75d..963a50470f2e3d747f1107e4a0d38317f0f9b141 100644
|
| --- a/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp
|
| +++ b/third_party/WebKit/Source/modules/csspaint/CSSPaintDefinition.cpp
|
| @@ -21,6 +21,19 @@
|
|
|
| namespace blink {
|
|
|
| +namespace {
|
| +
|
| +IntSize getSpecifiedSize(const IntSize& size, float zoom)
|
| +{
|
| + float unZoomFactor = 1 / zoom;
|
| + auto unZoomFn = [unZoomFactor](int a) -> int {
|
| + return round(a * unZoomFactor);
|
| + };
|
| + return IntSize(unZoomFn(size.width()), unZoomFn(size.height()));
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| CSSPaintDefinition* CSSPaintDefinition::create(ScriptState* scriptState, v8::Local<v8::Function> constructor, v8::Local<v8::Function> paint, Vector<CSSPropertyID>& nativeInvalidationProperties, Vector<AtomicString>& customInvalidationProperties, bool hasAlpha)
|
| {
|
| return new CSSPaintDefinition(scriptState, constructor, paint, nativeInvalidationProperties, customInvalidationProperties, hasAlpha);
|
| @@ -41,8 +54,10 @@ CSSPaintDefinition::~CSSPaintDefinition()
|
| {
|
| }
|
|
|
| -PassRefPtr<Image> CSSPaintDefinition::paint(const LayoutObject& layoutObject, const IntSize& size)
|
| +PassRefPtr<Image> CSSPaintDefinition::paint(const LayoutObject& layoutObject, const IntSize& size, float zoom)
|
| {
|
| + const IntSize specifiedSize = getSpecifiedSize(size, zoom);
|
| +
|
| ScriptState::Scope scope(m_scriptState.get());
|
|
|
| maybeCreatePaintInstance();
|
| @@ -58,8 +73,8 @@ PassRefPtr<Image> CSSPaintDefinition::paint(const LayoutObject& layoutObject, co
|
| DCHECK(layoutObject.node());
|
|
|
| PaintRenderingContext2D* renderingContext = PaintRenderingContext2D::create(
|
| - ImageBuffer::create(wrapUnique(new RecordingImageBufferSurface(size, nullptr /* fallbackFactory */, m_hasAlpha ? NonOpaque : Opaque))), m_hasAlpha);
|
| - PaintSize* paintSize = PaintSize::create(size);
|
| + ImageBuffer::create(wrapUnique(new RecordingImageBufferSurface(size, nullptr /* fallbackFactory */, m_hasAlpha ? NonOpaque : Opaque))), m_hasAlpha, zoom);
|
| + PaintSize* paintSize = PaintSize::create(specifiedSize);
|
| StylePropertyMap* styleMap = FilteredComputedStylePropertyMap::create(
|
| CSSComputedStyleDeclaration::create(layoutObject.node()),
|
| m_nativeInvalidationProperties, m_customInvalidationProperties);
|
| @@ -83,7 +98,7 @@ PassRefPtr<Image> CSSPaintDefinition::paint(const LayoutObject& layoutObject, co
|
| return nullptr;
|
| }
|
|
|
| - return PaintGeneratedImage::create(renderingContext->imageBuffer()->getPicture(), size);
|
| + return PaintGeneratedImage::create(renderingContext->imageBuffer()->getPicture(), specifiedSize);
|
| }
|
|
|
| void CSSPaintDefinition::maybeCreatePaintInstance()
|
|
|