diff options
author | crupest <crupest@outlook.com> | 2023-10-12 21:21:26 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-10-12 21:21:26 +0800 |
commit | 3c5aa6583d7ab2533ff721282d1efd52d07281c7 (patch) | |
tree | c545f412e970f96c8314300672dfa3b3217dbd1f /include/cru/platform/graphics/web_canvas | |
parent | ab484b2f0a8541cc5c5a172e4f5ea2620d91c8ba (diff) | |
download | cru-3c5aa6583d7ab2533ff721282d1efd52d07281c7.tar.gz cru-3c5aa6583d7ab2533ff721282d1efd52d07281c7.tar.bz2 cru-3c5aa6583d7ab2533ff721282d1efd52d07281c7.zip |
Make svg geometry builder a mixin. Record a lot of notes for geometry.
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 |