1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 14:25:08 +00:00
serenity/Libraries/LibWeb/DOM/CanvasRenderingContext2D.cpp
Andreas Kling 9d099835f9 LibWeb: Add CanvasRenderingContext2D scale() and translate() stubs
These don't do anything for now.
2020-04-04 23:54:58 +02:00

72 lines
1.8 KiB
C++

#include <AK/OwnPtr.h>
#include <LibGfx/Painter.h>
#include <LibWeb/DOM/CanvasRenderingContext2D.h>
#include <LibWeb/DOM/HTMLCanvasElement.h>
namespace Web {
CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement& element)
: m_element(element.make_weak_ptr())
{
}
CanvasRenderingContext2D::~CanvasRenderingContext2D()
{
}
void CanvasRenderingContext2D::set_fill_style(String style)
{
m_fill_style = Gfx::Color::from_string(style).value_or(Color::Black);
}
String CanvasRenderingContext2D::fill_style() const
{
return m_fill_style.to_string();
}
void CanvasRenderingContext2D::fill_rect(int x, int y, int width, int height)
{
auto painter = this->painter();
if (!painter)
return;
Gfx::Rect rect(x, y, width, height);
painter->fill_rect(rect, m_fill_style);
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.
if (!m_element)
return;
if (!m_element->layout_node())
return;
m_element->layout_node()->set_needs_display();
}
OwnPtr<Gfx::Painter> CanvasRenderingContext2D::painter()
{
if (!m_element)
return nullptr;
return make<Gfx::Painter>(m_element->ensure_bitmap());
}
}