Reviewed by Anders.
Fixes <rdar://problem/
4800518> -- needed to update existing
canvas path elements when transforms are performed on the
context.
* html/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::scale):
(WebCore::CanvasRenderingContext2D::rotate):
(WebCore::CanvasRenderingContext2D::translate):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@17334
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2006-10-26 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Anders.
+ Layout test for <rdar://problem/4800518>
+
+ * fast/canvas/canvas-transforms-during-path-expected.checksum: Added.
+ * fast/canvas/canvas-transforms-during-path-expected.png: Added.
+ * fast/canvas/canvas-transforms-during-path-expected.txt: Added.
+ * fast/canvas/canvas-transforms-during-path.html: Added.
+
2006-10-26 Darin Adler <darin@apple.com>
Reviewed by Anders.
--- /dev/null
+b9ab6d56266f079a01f8211fd443e221
\ No newline at end of file
--- /dev/null
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+ RenderBlock {HTML} at (0,0) size 800x600
+ RenderBody {BODY} at (8,8) size 784x584
+ RenderBlock (anonymous) at (0,0) size 784x100
+ RenderHTMLCanvas {CANVAS} at (0,0) size 100x100 [bgcolor=#008000]
+ RenderText {#text} at (0,0) size 0x0
+ RenderBlock {DIV} at (0,100) size 784x36
+ RenderText {#text} at (0,0) size 676x18
+ text run at (0,0) width 676: "This tests that transforms applied to a canvas, are correctly applied to the stroke path defined in the context. "
+ RenderBR {BR} at (676,14) size 0x0
+ RenderText {#text} at (0,18) size 525x18
+ text run at (0,18) width 525: "The above image should be a green square divided into quarters by two black lines."
--- /dev/null
+<html>
+ <head>
+ <script type="text/javascript">
+ function main() {
+ var g = document.getElementById("c").getContext("2d");
+ g.beginPath();
+ g.moveTo(50, 0);
+ g.lineTo(50,100);
+ g.translate(50, 50);
+ g.rotate(0.5*3.1415);
+ g.translate(-50, -50);
+ g.moveTo(50, 0);
+ g.lineTo(50,100);
+ g.stroke();
+ }
+ </script>
+ </head>
+ <body onload="main();">
+ <canvas id="c" width="100" height="100" style="background: green"></canvas>
+ <div>This tests that transforms applied to a canvas, are correctly applied to the stroke path defined in the context. <br> The above image should be a green square divided into quarters by two black lines.</div>
+ </body>
+</html>
+2006-10-26 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Anders.
+ Fixes <rdar://problem/4800518> -- needed to update existing
+ canvas path elements when transforms are performed on the
+ context.
+
+ * html/CanvasRenderingContext2D.cpp:
+ (WebCore::CanvasRenderingContext2D::scale):
+ (WebCore::CanvasRenderingContext2D::rotate):
+ (WebCore::CanvasRenderingContext2D::translate):
+
2006-10-26 Nikolas Zimmermann <zimmermann@kde.org>
Reviewed by Darin.
#include "HTMLNames.h"
#include "RenderHTMLCanvas.h"
#include "cssparser.h"
+#include "AffineTransform.h"
namespace WebCore {
if (!c)
return;
c->scale(FloatSize(sx, sy));
+ state().m_path.transform(AffineTransform().scale(1.0/sx, 1.0/sy));
}
void CanvasRenderingContext2D::rotate(float angleInRadians)
if (!c)
return;
c->rotate(angleInRadians);
+ state().m_path.transform(AffineTransform().rotate(-angleInRadians/M_PI*180));
}
void CanvasRenderingContext2D::translate(float tx, float ty)
if (!c)
return;
c->translate(tx, ty);
+ state().m_path.transform(AffineTransform().translate(-tx, -ty));
}
void CanvasRenderingContext2D::setStrokeColor(const String& color)