From 7d435b5adacdaa8f038669d10fba9f615265897a Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Mon, 27 Dec 2021 14:31:23 +0100 Subject: [PATCH] LibWeb: Implement CanvasRenderingContext2D.save() --- .../Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp | 7 +++++++ Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h | 3 +++ .../Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl | 2 ++ 3 files changed, 12 insertions(+) diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp index 1cade07f81..a7eab5c996 100644 --- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp +++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp @@ -313,4 +313,11 @@ void CanvasRenderingContext2D::put_image_data(const ImageData& image_data, float did_draw(Gfx::FloatRect(x, y, image_data.width(), image_data.height())); } +// https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-save +void CanvasRenderingContext2D::save() +{ + // The save() method steps are to push a copy of the current drawing state onto the drawing state stack. + m_drawing_state_stack.append(m_drawing_state); +} + } diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h index 90e7cf7c9b..7d2552a370 100644 --- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h +++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h @@ -69,6 +69,8 @@ public: RefPtr create_image_data(int width, int height) const; void put_image_data(const ImageData&, float x, float y); + void save(); + HTMLCanvasElement* canvas() { return m_element; } private: @@ -89,6 +91,7 @@ private: }; DrawingState m_drawing_state; + Vector m_drawing_state_stack; Gfx::Path m_path; }; diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl index c5a5b7bf6f..05b5870207 100644 --- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl +++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl @@ -31,6 +31,8 @@ interface CanvasRenderingContext2D { ImageData createImageData(double sw, double sh); undefined putImageData(ImageData imagedata, double dx, double dy); + undefined save(); + readonly attribute HTMLCanvasElement canvas; };