diff options
author | crupest <crupest@outlook.com> | 2022-02-08 16:53:51 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-02-08 16:53:51 +0800 |
commit | 74bb9cd27242b9320f99ff4d2b50c3051576cc14 (patch) | |
tree | 744bac5799c593d1d6f81e7b09581bea626f2cde /include/cru/osx/graphics/quartz/Geometry.h | |
parent | b90c398de829d1ba5329651d75bae82f5e4085fe (diff) | |
download | cru-74bb9cd27242b9320f99ff4d2b50c3051576cc14.tar.gz cru-74bb9cd27242b9320f99ff4d2b50c3051576cc14.tar.bz2 cru-74bb9cd27242b9320f99ff4d2b50c3051576cc14.zip |
...
Diffstat (limited to 'include/cru/osx/graphics/quartz/Geometry.h')
-rw-r--r-- | include/cru/osx/graphics/quartz/Geometry.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/include/cru/osx/graphics/quartz/Geometry.h b/include/cru/osx/graphics/quartz/Geometry.h new file mode 100644 index 00000000..8e42491b --- /dev/null +++ b/include/cru/osx/graphics/quartz/Geometry.h @@ -0,0 +1,48 @@ +#pragma once +#include "Resource.h" +#include "cru/platform/graphics/Geometry.h" + +#include <memory> + +#include <CoreGraphics/CoreGraphics.h> + +namespace cru::platform::graphics::osx::quartz { +class QuartzGeometry : public OsxQuartzResource, public virtual IGeometry { + public: + QuartzGeometry(IGraphicsFactory *graphics_factory, CGPathRef cg_path); + + CRU_DELETE_COPY(QuartzGeometry) + CRU_DELETE_MOVE(QuartzGeometry) + + ~QuartzGeometry() override; + + CGPathRef GetCGPath() const { return cg_path_; } + + bool FillContains(const Point &point) override; + + private: + CGPathRef cg_path_; +}; + +class QuartzGeometryBuilder : public OsxQuartzResource, + public virtual IGeometryBuilder { + public: + explicit QuartzGeometryBuilder(IGraphicsFactory *graphics_factory); + + CRU_DELETE_COPY(QuartzGeometryBuilder) + CRU_DELETE_MOVE(QuartzGeometryBuilder) + + ~QuartzGeometryBuilder() override; + + void BeginFigure(const Point &point) override; + void CloseFigure(bool close) override; + void LineTo(const Point &point) override; + void QuadraticBezierTo(const Point &control_point, + const Point &end_point) override; + + std::unique_ptr<IGeometry> Build() override; + + private: + CGMutablePathRef cg_mutable_path_; +}; +} // namespace cru::platform::graphics::osx::quartz |