aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/cru/osx/graphics/quartz/Brush.hpp38
-rw-r--r--include/cru/osx/graphics/quartz/Painter.hpp12
-rw-r--r--include/cru/osx/graphics/quartz/Resource.hpp15
-rw-r--r--include/cru/platform/Color.hpp5
4 files changed, 66 insertions, 4 deletions
diff --git a/include/cru/osx/graphics/quartz/Brush.hpp b/include/cru/osx/graphics/quartz/Brush.hpp
new file mode 100644
index 00000000..fa0ef18c
--- /dev/null
+++ b/include/cru/osx/graphics/quartz/Brush.hpp
@@ -0,0 +1,38 @@
+#pragma once
+#include "Resource.hpp"
+#include "cru/common/Base.hpp"
+#include "cru/platform/graphics/Base.hpp"
+#include "cru/platform/graphics/Brush.hpp"
+
+#include <CoreGraphics/CoreGraphics.h>
+
+namespace cru::platform::graphics::osx::quartz {
+class QuartzBrush : public OsxQuartzResource, public virtual IBrush {
+ public:
+ QuartzBrush(IGraphFactory* graphics_factory)
+ : OsxQuartzResource(graphics_factory) {}
+ CRU_DELETE_COPY(QuartzBrush)
+ CRU_DELETE_MOVE(QuartzBrush)
+ ~QuartzBrush() override = default;
+};
+
+class QuartzSolidColorBrush : public QuartzBrush,
+ public virtual ISolidColorBrush {
+ public:
+ QuartzSolidColorBrush(IGraphFactory* graphics_factory, const Color& color);
+
+ CRU_DELETE_COPY(QuartzSolidColorBrush)
+ CRU_DELETE_MOVE(QuartzSolidColorBrush)
+
+ ~QuartzSolidColorBrush() override;
+
+ Color GetColor() override { return color_; }
+ void SetColor(const Color& color) override;
+
+ CGColorRef GetCGColorRef() const { return cg_color_; }
+
+ private:
+ Color color_;
+ CGColorRef cg_color_;
+};
+} // namespace cru::platform::graphics::osx::quartz
diff --git a/include/cru/osx/graphics/quartz/Painter.hpp b/include/cru/osx/graphics/quartz/Painter.hpp
index 7f775210..5dcc49dc 100644
--- a/include/cru/osx/graphics/quartz/Painter.hpp
+++ b/include/cru/osx/graphics/quartz/Painter.hpp
@@ -1,5 +1,7 @@
#pragma once
#include "Resource.hpp"
+#include "cru/common/Base.hpp"
+#include "cru/platform/graphics/Base.hpp"
#include "cru/platform/graphics/Painter.hpp"
#include <CoreGraphics/CoreGraphics.h>
@@ -8,8 +10,14 @@ namespace cru::platform::graphics::osx::quartz {
class QuartzCGContextPainter : public OsxQuartzResource,
public virtual IPainter {
public:
- explicit QuartzCGContextPainter(CGContextRef cg_context)
- : cg_context_(cg_context) {}
+ explicit QuartzCGContextPainter(IGraphFactory* graphics_factory,
+ CGContextRef cg_context)
+ : OsxQuartzResource(graphics_factory), cg_context_(cg_context) {}
+
+ CRU_DELETE_COPY(QuartzCGContextPainter)
+ CRU_DELETE_MOVE(QuartzCGContextPainter)
+
+ ~QuartzCGContextPainter() override = default;
public:
Matrix GetTransform() override;
diff --git a/include/cru/osx/graphics/quartz/Resource.hpp b/include/cru/osx/graphics/quartz/Resource.hpp
index b302c84c..2d3b4b08 100644
--- a/include/cru/osx/graphics/quartz/Resource.hpp
+++ b/include/cru/osx/graphics/quartz/Resource.hpp
@@ -1,14 +1,25 @@
#pragma once
#include "cru/osx/Resource.hpp"
+#include "cru/platform/graphics/Base.hpp"
+#include "cru/platform/graphics/Resource.hpp"
namespace cru::platform::graphics::osx::quartz {
-class OsxQuartzResource : public platform::osx::OsxResource {
+class OsxQuartzResource : public platform::osx::OsxResource,
+ public virtual IGraphResource {
public:
- CRU_DEFAULT_CONSTRUCTOR_DESTRUCTOR(OsxQuartzResource)
+ explicit OsxQuartzResource(IGraphFactory* graphics_factory)
+ : graphics_factory_(graphics_factory) {}
+
CRU_DELETE_COPY(OsxQuartzResource)
CRU_DELETE_MOVE(OsxQuartzResource)
+ ~OsxQuartzResource() override = default;
public:
String GetPlatformId() const override { return u"OSX Quartz"; }
+
+ IGraphFactory* GetGraphFactory() override;
+
+ private:
+ IGraphFactory* graphics_factory_;
};
} // namespace cru::platform::graphics::osx::quartz
diff --git a/include/cru/platform/Color.hpp b/include/cru/platform/Color.hpp
index a6793269..3388de25 100644
--- a/include/cru/platform/Color.hpp
+++ b/include/cru/platform/Color.hpp
@@ -32,6 +32,11 @@ struct CRU_PLATFORM_API Color {
return result;
}
+ float GetFloatRed() const { return static_cast<float>(red) / 255.f; }
+ float GetFloatGreen() const { return static_cast<float>(green) / 255.f; }
+ float GetFloatBlue() const { return static_cast<float>(blue) / 255.f; }
+ float GetFloatAlpha() const { return static_cast<float>(alpha) / 255.f; }
+
std::string ToUtf8String() const;
std::u16string ToString() const;