diff options
Diffstat (limited to 'src/platform/graphics/web_canvas/Painter.cpp')
-rw-r--r-- | src/platform/graphics/web_canvas/Painter.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/platform/graphics/web_canvas/Painter.cpp b/src/platform/graphics/web_canvas/Painter.cpp index cd04a725..31c4a53d 100644 --- a/src/platform/graphics/web_canvas/Painter.cpp +++ b/src/platform/graphics/web_canvas/Painter.cpp @@ -1,5 +1,6 @@ #include "cru/platform/graphics/web_canvas/WebCanvasGraphicsFactory.h" #include "cru/platform/graphics/web_canvas/WebCanvasPainter.h" +#include "cru/platform/graphics/web_canvas/WebCanvasRef.h" #include "cru/platform/graphics/web_canvas/WebCanvasResource.h" #include <optional> @@ -7,9 +8,10 @@ namespace cru::platform::graphics::web_canvas { namespace { -void contextSetTransform(emscripten::val context, const Matrix& matrix) { - context.call<void>("setTransform", matrix.m11, matrix.m12, matrix.m21, - matrix.m22, matrix.m31, matrix.m32); +void contextDoTransform(emscripten::val context, const char* method, + const Matrix& matrix) { + context.call<void>(method, matrix.m11, matrix.m12, matrix.m21, matrix.m22, + matrix.m31, matrix.m32); } } // namespace @@ -19,7 +21,7 @@ WebCanvasPainter::WebCanvasPainter(WebCanvasGraphicsFactory* factory, : WebCanvasResource(factory), context_(context), current_transform_(current_transform.value_or(Matrix::Identity())) { - contextSetTransform(context_, current_transform_); + contextDoTransform(context_, "setTransform", current_transform_); } WebCanvasPainter::~WebCanvasPainter() {} @@ -28,6 +30,17 @@ Matrix WebCanvasPainter::GetTransform() { return current_transform_; } void WebCanvasPainter::SetTransform(const Matrix& transform) { current_transform_ = transform; - contextSetTransform(context_, transform); + contextDoTransform(context_, "setTransform", current_transform_); +} + +void WebCanvasPainter::ConcatTransform(const Matrix& transform) { + current_transform_ *= transform; + contextDoTransform(context_, "transform", transform); +} + +void WebCanvasPainter::Clear(const Color& color) {} + +WebCanvasRef WebCanvasPainter::GetCanvas() { + return WebCanvasRef(context_["canvas"]); } } // namespace cru::platform::graphics::web_canvas |