diff options
Diffstat (limited to 'include/cru/platform/graphics/web_canvas')
-rw-r--r-- | include/cru/platform/graphics/web_canvas/WebCanvasGeometry.h | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/include/cru/platform/graphics/web_canvas/WebCanvasGeometry.h b/include/cru/platform/graphics/web_canvas/WebCanvasGeometry.h index af4cee91..dfb5bbe7 100644 --- a/include/cru/platform/graphics/web_canvas/WebCanvasGeometry.h +++ b/include/cru/platform/graphics/web_canvas/WebCanvasGeometry.h @@ -1,27 +1,36 @@ #pragma once #include "../Geometry.h" +#include "../SvgGeometryBuilderMixin.h" #include "WebCanvasResource.h" #include <emscripten/val.h> +#include <memory> namespace cru::platform::graphics::web_canvas { +class WebCanvasGeometry : public WebCanvasResource, public virtual IGeometry { + public: + WebCanvasGeometry(WebCanvasGraphicsFactory* factory, emscripten::val path2d); + ~WebCanvasGeometry() override; + + bool StrokeContains(float width, const Point& point) override; + virtual bool FillContains(const Point& point) = 0; + virtual Rect GetBounds() = 0; + virtual std::unique_ptr<IGeometry> Transform(const Matrix& matrix) = 0; + private: + emscripten::val path2d_; +}; + /** * \remarks See IGeometryBuilder for platform limitation. */ class WebCanvasGeometryBuilder : public WebCanvasResource, - public virtual IGeometryBuilder { + public SvgGeometryBuilderMixin { public: WebCanvasGeometryBuilder(WebCanvasGraphicsFactory* factory); ~WebCanvasGeometryBuilder() override; - Point GetCurrentPosition() override; - - void MoveTo(const Point& point) override; - - private: - Point current_postion_; - emscripten::val path2d_; + std::unique_ptr<IGeometry> Build() override; }; } // namespace cru::platform::graphics::web_canvas |