瀏覽代碼

LibWeb: Implement CanvasRenderingContext2D.restore()

Linus Groh 3 年之前
父節點
當前提交
3e0e965f24

+ 9 - 0
Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp

@@ -320,4 +320,13 @@ void CanvasRenderingContext2D::save()
     m_drawing_state_stack.append(m_drawing_state);
     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 put_image_data(const ImageData&, float x, float y);
 
 
     void save();
     void save();
+    void restore();
 
 
     HTMLCanvasElement* canvas() { return m_element; }
     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 putImageData(ImageData imagedata, double dx, double dy);
 
 
     undefined save();
     undefined save();
+    undefined restore();
 
 
     readonly attribute HTMLCanvasElement canvas;
     readonly attribute HTMLCanvasElement canvas;