Browse Source

LibWeb: Add CanvasRenderingContext2D scale() and translate() stubs

These don't do anything for now.
Andreas Kling 5 years ago
parent
commit
9d099835f9

+ 24 - 0
Libraries/LibWeb/Bindings/CanvasRenderingContext2DWrapper.cpp

@@ -45,6 +45,8 @@ CanvasRenderingContext2DWrapper::CanvasRenderingContext2DWrapper(CanvasRendering
 {
 {
     put_native_property("fillStyle", fill_style_getter, fill_style_setter);
     put_native_property("fillStyle", fill_style_getter, fill_style_setter);
     put_native_function("fillRect", fill_rect, 4);
     put_native_function("fillRect", fill_rect, 4);
+    put_native_function("scale", scale, 2);
+    put_native_function("translate", translate, 2);
 }
 }
 
 
 CanvasRenderingContext2DWrapper::~CanvasRenderingContext2DWrapper()
 CanvasRenderingContext2DWrapper::~CanvasRenderingContext2DWrapper()
@@ -71,6 +73,28 @@ JS::Value CanvasRenderingContext2DWrapper::fill_rect(JS::Interpreter& interprete
     return JS::js_undefined();
     return JS::js_undefined();
 }
 }
 
 
+JS::Value CanvasRenderingContext2DWrapper::scale(JS::Interpreter& interpreter)
+{
+    auto* impl = impl_from(interpreter);
+    if (!impl)
+        return {};
+    auto& arguments = interpreter.call_frame().arguments;
+    if (arguments.size() >= 2)
+        impl->scale(arguments[0].to_number().as_double(), arguments[1].to_number().as_double());
+    return JS::js_undefined();
+}
+
+JS::Value CanvasRenderingContext2DWrapper::translate(JS::Interpreter& interpreter)
+{
+    auto* impl = impl_from(interpreter);
+    if (!impl)
+        return {};
+    auto& arguments = interpreter.call_frame().arguments;
+    if (arguments.size() >= 2)
+        impl->translate(arguments[0].to_number().as_double(), arguments[1].to_number().as_double());
+    return JS::js_undefined();
+}
+
 JS::Value CanvasRenderingContext2DWrapper::fill_style_getter(JS::Interpreter& interpreter)
 JS::Value CanvasRenderingContext2DWrapper::fill_style_getter(JS::Interpreter& interpreter)
 {
 {
     auto* impl = impl_from(interpreter);
     auto* impl = impl_from(interpreter);

+ 2 - 0
Libraries/LibWeb/Bindings/CanvasRenderingContext2DWrapper.h

@@ -43,6 +43,8 @@ private:
     virtual const char* class_name() const override { return "CanvasRenderingContext2DWrapper"; }
     virtual const char* class_name() const override { return "CanvasRenderingContext2DWrapper"; }
 
 
     static JS::Value fill_rect(JS::Interpreter&);
     static JS::Value fill_rect(JS::Interpreter&);
+    static JS::Value scale(JS::Interpreter&);
+    static JS::Value translate(JS::Interpreter&);
     static JS::Value fill_style_getter(JS::Interpreter&);
     static JS::Value fill_style_getter(JS::Interpreter&);
     static void fill_style_setter(JS::Interpreter&, JS::Value);
     static void fill_style_setter(JS::Interpreter&, JS::Value);
 
 

+ 16 - 0
Libraries/LibWeb/DOM/CanvasRenderingContext2D.cpp

@@ -35,6 +35,22 @@ void CanvasRenderingContext2D::fill_rect(int x, int y, int width, int height)
     did_draw(rect);
     did_draw(rect);
 }
 }
 
 
+void CanvasRenderingContext2D::scale(double sx, double sy)
+{
+    // FIXME: Actually do something with the scale factor!
+    dbg() << "CanvasRenderingContext2D::scale(): " << String::format("%f", sx) << ", " << String::format("%f", sy);
+    m_scale_x = sx;
+    m_scale_y = sy;
+}
+
+void CanvasRenderingContext2D::translate(double x, double y)
+{
+    // FIXME: Actually do something with the translation!
+    dbg() << "CanvasRenderingContext2D::translate(): " << String::format("%f", x) << ", " << String::format("%f", y);
+    m_translate_x = x;
+    m_translate_y = y;
+}
+
 void CanvasRenderingContext2D::did_draw(const Gfx::Rect&)
 void CanvasRenderingContext2D::did_draw(const Gfx::Rect&)
 {
 {
     // FIXME: Make use of the rect to reduce the invalidated area when possible.
     // FIXME: Make use of the rect to reduce the invalidated area when possible.

+ 6 - 0
Libraries/LibWeb/DOM/CanvasRenderingContext2D.h

@@ -24,6 +24,8 @@ public:
     String fill_style() const;
     String fill_style() const;
 
 
     void fill_rect(int x, int y, int width, int height);
     void fill_rect(int x, int y, int width, int height);
+    void scale(double sx, double sy);
+    void translate(double x, double y);
 
 
 private:
 private:
     explicit CanvasRenderingContext2D(HTMLCanvasElement&);
     explicit CanvasRenderingContext2D(HTMLCanvasElement&);
@@ -34,6 +36,10 @@ private:
 
 
     WeakPtr<HTMLCanvasElement> m_element;
     WeakPtr<HTMLCanvasElement> m_element;
 
 
+    double m_scale_x { 1 };
+    double m_scale_y { 1 };
+    double m_translate_x { 0 };
+    double m_translate_y { 0 };
     Gfx::Color m_fill_style;
     Gfx::Color m_fill_style;
 };
 };