Selaa lähdekoodia

LibWeb: Implement CanvasRenderingContext2D.restore()

Linus Groh 3 vuotta sitten
vanhempi
commit
3e0e965f24

+ 9 - 0
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();
+}
+
 }

+ 1 - 0
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; }
 

+ 1 - 0
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;