From e2e8ba559b0e7a797c083684b382ac4cbb2fdd5f Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 20 Aug 2021 22:10:45 +0800 Subject: ... --- include/cru/osx/Exception.hpp | 10 +++---- include/cru/osx/Resource.hpp | 13 +++++++++ include/cru/osx/graphics/native/Factory.hpp | 1 - include/cru/osx/graphics/quartz/Factory.hpp | 1 + include/cru/osx/graphics/quartz/Painter.hpp | 41 ++++++++++++++++++++++++++++ include/cru/osx/graphics/quartz/Resource.hpp | 14 ++++++++++ 6 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 include/cru/osx/Resource.hpp delete mode 100644 include/cru/osx/graphics/native/Factory.hpp create mode 100644 include/cru/osx/graphics/quartz/Factory.hpp create mode 100644 include/cru/osx/graphics/quartz/Painter.hpp create mode 100644 include/cru/osx/graphics/quartz/Resource.hpp (limited to 'include') diff --git a/include/cru/osx/Exception.hpp b/include/cru/osx/Exception.hpp index 34c4a06c..5d057c65 100644 --- a/include/cru/osx/Exception.hpp +++ b/include/cru/osx/Exception.hpp @@ -2,8 +2,8 @@ #include "cru/platform/Exception.hpp" namespace cru::platform::osx { - class OsxException : PlatformException { - public: - using PlatformException::PlatformException; - }; -} +class OsxException : public PlatformException { + public: + using PlatformException::PlatformException; +}; +} // namespace cru::platform::osx diff --git a/include/cru/osx/Resource.hpp b/include/cru/osx/Resource.hpp new file mode 100644 index 00000000..b1f673f8 --- /dev/null +++ b/include/cru/osx/Resource.hpp @@ -0,0 +1,13 @@ +#pragma once +#include "cru/platform/Resource.hpp" + +namespace cru::platform::osx { +class OsxResource : public Object, public virtual IPlatformResource { + public: + CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(OsxResource) + CRU_DELETE_COPY(OsxResource) + CRU_DELETE_MOVE(OsxResource) + + String GetPlatformId() const override { return u"OSX"; } +}; +} // namespace cru::platform::osx diff --git a/include/cru/osx/graphics/native/Factory.hpp b/include/cru/osx/graphics/native/Factory.hpp deleted file mode 100644 index 6f70f09b..00000000 --- a/include/cru/osx/graphics/native/Factory.hpp +++ /dev/null @@ -1 +0,0 @@ -#pragma once diff --git a/include/cru/osx/graphics/quartz/Factory.hpp b/include/cru/osx/graphics/quartz/Factory.hpp new file mode 100644 index 00000000..6f70f09b --- /dev/null +++ b/include/cru/osx/graphics/quartz/Factory.hpp @@ -0,0 +1 @@ +#pragma once diff --git a/include/cru/osx/graphics/quartz/Painter.hpp b/include/cru/osx/graphics/quartz/Painter.hpp new file mode 100644 index 00000000..2d77ab3a --- /dev/null +++ b/include/cru/osx/graphics/quartz/Painter.hpp @@ -0,0 +1,41 @@ +#pragma once +#include "Resource.hpp" +#include "cru/platform/graphics/Painter.hpp" + +#include + +namespace cru::platform::graphics::osx::quartz { +class QuartzCGContextPainter : public OsxQuartzResource, + public virtual IPainter { + public: + explicit QuartzCGContextPainter(CGContext* cg_context) + : cg_context_(cg_context) {} + + public: + Matrix GetTransform() override; + void SetTransform(const Matrix& matrix) override; + + void Clear(const Color& color) override; + + void DrawLine(const Point& start, const Point& end, IBrush* brush, + float width) override; + void StrokeRectangle(const Rect& rectangle, IBrush* brush, + float width) override; + void FillRectangle(const Rect& rectangle, IBrush* brush) override; + + void StrokeGeometry(IGeometry* geometry, IBrush* brush, float width) override; + void FillGeometry(IGeometry* geometry, IBrush* brush) override; + + void DrawText(const Point& offset, ITextLayout* text_layout, + IBrush* brush) override; + + void PushLayer(const Rect& bounds) override; + + void PopLayer() override; + + void EndDraw() override; + + private: + CGContext* cg_context_; +}; +} // namespace cru::platform::graphics::osx::quartz diff --git a/include/cru/osx/graphics/quartz/Resource.hpp b/include/cru/osx/graphics/quartz/Resource.hpp new file mode 100644 index 00000000..b302c84c --- /dev/null +++ b/include/cru/osx/graphics/quartz/Resource.hpp @@ -0,0 +1,14 @@ +#pragma once +#include "cru/osx/Resource.hpp" + +namespace cru::platform::graphics::osx::quartz { +class OsxQuartzResource : public platform::osx::OsxResource { + public: + CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(OsxQuartzResource) + CRU_DELETE_COPY(OsxQuartzResource) + CRU_DELETE_MOVE(OsxQuartzResource) + + public: + String GetPlatformId() const override { return u"OSX Quartz"; } +}; +} // namespace cru::platform::graphics::osx::quartz -- cgit v1.2.3