From 3e0e965f244bb6ac4715ce9a5791ce6902f979a2 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Mon, 27 Dec 2021 14:32:31 +0100 Subject: LibWeb: Implement CanvasRenderingContext2D.restore() --- Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp | 9 +++++++++ Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h | 1 + Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl | 1 + 3 files changed, 11 insertions(+) (limited to 'Userland') diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp index a7eab5c996..5ec1a7a6c3 100644 --- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp +++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp @@ -320,4 +320,13 @@ void CanvasRenderingContext2D::save() m_drawing_state_stack.append(m_drawing_state); } +// https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-restore +void CanvasRenderingContext2D::restore() +{ + // The restore() method steps are to pop the top entry in the drawing state stack, and reset the drawing state it describes. If there is no saved state, then the method must do nothing. + if (m_drawing_state_stack.is_empty()) + return; + m_drawing_state = m_drawing_state_stack.take_last(); +} + } diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h index 7d2552a370..d0accdc0f2 100644 --- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h +++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.h @@ -70,6 +70,7 @@ public: void put_image_data(const ImageData&, float x, float y); void save(); + void restore(); HTMLCanvasElement* canvas() { return m_element; } diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl index 05b5870207..7f4b8dbc8d 100644 --- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl +++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl @@ -32,6 +32,7 @@ interface CanvasRenderingContext2D { undefined putImageData(ImageData imagedata, double dx, double dy); undefined save(); + undefined restore(); readonly attribute HTMLCanvasElement canvas; -- cgit v1.2.3