+2008-12-12 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ REGRESSION: Canvas is broken in high dpi mode
+ <rdar://problem/6432739> <https://bugs.webkit.org/show_bug.cgi?id=22823>
+
+ Simply made sure that we correctly scale the graphics context to
+ account for the difference between logical and buffer resolution.
+
+ * html/HTMLCanvasElement.cpp:
+ (WebCore::HTMLCanvasElement::createImageBuffer):
+ (WebCore::HTMLCanvasElement::baseTransform):
+
2008-12-12 Tor Arne Vestbø <tavestbo@trolltech.com>
Rubber-stamped by Oliver Hunt.
IntSize size = convertLogicalToDevice(unscaledSize);
if (!size.width() || !size.height())
return;
- m_imageBuffer.set(ImageBuffer::create(size, false).release());
+ m_imageBuffer.set(ImageBuffer::create(size, false).release());
+ m_imageBuffer->context()->scale(FloatSize(size.width() / unscaledSize.width(), size.height() / unscaledSize.height()));
m_imageBuffer->context()->setShadowsIgnoreTransforms(true);
}
AffineTransform HTMLCanvasElement::baseTransform() const
{
ASSERT(m_createdImageBuffer);
- return m_imageBuffer->baseTransform();
+ FloatSize unscaledSize(width(), height());
+ IntSize size = convertLogicalToDevice(unscaledSize);
+ AffineTransform transform;
+ if (size.width() && size.height())
+ transform.scale(size.width() / unscaledSize.width(), size.height() / unscaledSize.height());
+ transform.multiply(m_imageBuffer->baseTransform());
+ return transform;
}
}