LibWeb: Add CanvasRenderingContext2D.rotate()

This is pretty limited since we don't have wholesale mapping through
the context transform, but we have to start somewhere. :^)
This commit is contained in:
Andreas Kling 2020-06-26 18:26:18 +02:00
parent dc22e59a1a
commit 9d8565cf9a
5 changed files with 21 additions and 0 deletions

View file

@ -0,0 +1,12 @@
<html>
<canvas id=c width=200 height=200></canvas>
<script>
c = document.getElementById('c');
x = c.getContext('2d');
x.strokeStyle = 'black';
for (i = 0; i < 8; ++i) {
x.strokeRect(50, 50, 50, 50);
x.rotate(0.05);
}
</script>
</html>

View file

@ -28,6 +28,7 @@ span#ua {
<p>Your user agent is: <b><span id="ua"></span></b></p>
<p>Some small test pages:</p>
<ul>
<li><a href="canvas-rotate.html">canvas rotate()</a></li>
<li><a href="margin-collapse-2.html">margin collapsing 2</a></li>
<li><a href="margin-collapse-1.html">margin collapsing 1</a></li>
<li><a href="position-absolute-from-edges.html">position: absolute, offset from edges</a></li>

View file

@ -123,6 +123,12 @@ void CanvasRenderingContext2D::translate(float tx, float ty)
m_transform.translate(tx, ty);
}
void CanvasRenderingContext2D::rotate(float radians)
{
dbg() << "CanvasRenderingContext2D::rotate(): " << radians;
m_transform.rotate_radians(radians);
}
void CanvasRenderingContext2D::did_draw(const Gfx::FloatRect&)
{
// FIXME: Make use of the rect to reduce the invalidated area when possible.

View file

@ -62,6 +62,7 @@ public:
void scale(float sx, float sy);
void translate(float x, float y);
void rotate(float degrees);
void set_line_width(float line_width) { m_line_width = line_width; }
float line_width() const { return m_line_width; }

View file

@ -5,6 +5,7 @@ interface CanvasRenderingContext2D {
void scale(double x, double y);
void translate(double x, double y);
void rotate(double radians);
void beginPath();
void closePath();