1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 02:47:34 +00:00

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

These don't do anything for now.
This commit is contained in:
Andreas Kling 2020-04-04 23:54:58 +02:00
parent 2db8716a6f
commit 9d099835f9
4 changed files with 48 additions and 0 deletions

View file

@ -45,6 +45,8 @@ CanvasRenderingContext2DWrapper::CanvasRenderingContext2DWrapper(CanvasRendering
{
put_native_property("fillStyle", fill_style_getter, fill_style_setter);
put_native_function("fillRect", fill_rect, 4);
put_native_function("scale", scale, 2);
put_native_function("translate", translate, 2);
}
CanvasRenderingContext2DWrapper::~CanvasRenderingContext2DWrapper()
@ -71,6 +73,28 @@ JS::Value CanvasRenderingContext2DWrapper::fill_rect(JS::Interpreter& interprete
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)
{
auto* impl = impl_from(interpreter);

View file

@ -43,6 +43,8 @@ private:
virtual const char* class_name() const override { return "CanvasRenderingContext2DWrapper"; }
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 void fill_style_setter(JS::Interpreter&, JS::Value);

View file

@ -35,6 +35,22 @@ void CanvasRenderingContext2D::fill_rect(int x, int y, int width, int height)
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&)
{
// FIXME: Make use of the rect to reduce the invalidated area when possible.

View file

@ -24,6 +24,8 @@ public:
String fill_style() const;
void fill_rect(int x, int y, int width, int height);
void scale(double sx, double sy);
void translate(double x, double y);
private:
explicit CanvasRenderingContext2D(HTMLCanvasElement&);
@ -34,6 +36,10 @@ private:
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;
};