diff options
author | crupest <crupest@outlook.com> | 2019-06-27 00:18:48 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2019-06-27 00:18:48 +0800 |
commit | baa7cf141b8121473edceae16c1a20a6d47bd202 (patch) | |
tree | 9349633a9d0bc286fe29f480bd70e4c2ad1f3075 /include/cru/platform/graph/geometry.hpp | |
parent | f404a3b2eb7bb9865d0c6f938538899996a53d8c (diff) | |
download | cru-baa7cf141b8121473edceae16c1a20a6d47bd202.tar.gz cru-baa7cf141b8121473edceae16c1a20a6d47bd202.tar.bz2 cru-baa7cf141b8121473edceae16c1a20a6d47bd202.zip |
......
Diffstat (limited to 'include/cru/platform/graph/geometry.hpp')
-rw-r--r-- | include/cru/platform/graph/geometry.hpp | 48 |
1 files changed, 37 insertions, 11 deletions
diff --git a/include/cru/platform/graph/geometry.hpp b/include/cru/platform/graph/geometry.hpp index 71bf8c73..d31b3b27 100644 --- a/include/cru/platform/graph/geometry.hpp +++ b/include/cru/platform/graph/geometry.hpp @@ -1,19 +1,45 @@ #pragma once -#include "cru/common/base.hpp" - -#include "cru/common/endable.hpp" -#include "cru/common/ui_base.hpp" +#include "../graphic_base.hpp" +#include "../native_resource.hpp" namespace cru::platform::graph { -struct IGeometry : virtual Interface { - virtual bool FillContains(const ui::Point& point) = 0; +class Geometry : public NativeResource { + protected: + Geometry() = default; + + public: + Geometry(const Geometry& other) = delete; + Geometry& operator=(const Geometry& other) = delete; + + Geometry(Geometry&& other) = delete; + Geometry& operator=(Geometry&& other) = delete; + + ~Geometry() override = default; + + public: + virtual bool FillContains(const Point& point) = 0; }; -struct IGeometryBuilder : virtual Interface, virtual IEndable<IGeometry*> { - virtual void BeginFigure(const ui::Point& point) = 0; - virtual void LineTo(const ui::Point& point) = 0; - virtual void QuadraticBezierTo(const ui::Point& control_point, - const ui::Point& end_point) = 0; +class GeometryBuilder : public NativeResource { + protected: + GeometryBuilder() = default; + + public: + GeometryBuilder(const GeometryBuilder& other) = delete; + GeometryBuilder& operator=(const GeometryBuilder& other) = delete; + + GeometryBuilder(GeometryBuilder&& other) = delete; + GeometryBuilder& operator=(GeometryBuilder&& other) = delete; + + ~GeometryBuilder() override = default; + + public: + virtual void BeginFigure(const Point& point) = 0; + virtual void LineTo(const Point& point) = 0; + virtual void QuadraticBezierTo(const Point& control_point, + const Point& end_point) = 0; virtual void CloseFigure(bool close) = 0; + + virtual Geometry* Build() = 0; }; } // namespace cru::platform::graph |