aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/graph/brush.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/platform/graph/brush.hpp')
-rw-r--r--include/cru/platform/graph/brush.hpp49
1 files changed, 41 insertions, 8 deletions
diff --git a/include/cru/platform/graph/brush.hpp b/include/cru/platform/graph/brush.hpp
index 7688ec4a..d292ae82 100644
--- a/include/cru/platform/graph/brush.hpp
+++ b/include/cru/platform/graph/brush.hpp
@@ -1,13 +1,46 @@
#pragma once
-#include "cru/common/base.hpp"
-
-#include "cru/common/ui_base.hpp"
+#include "../graphic_base.hpp"
+#include "../native_resource.hpp"
namespace cru::platform::graph {
-struct IBrush : public virtual Interface {};
+class Brush : public NativeResource {
+ protected:
+ Brush() = default;
+
+ public:
+ Brush(const Brush& other) = delete;
+ Brush& operator=(const Brush& other) = delete;
+
+ Brush(Brush&& other) = delete;
+ Brush& operator=(Brush&& other) = delete;
+
+ ~Brush() override = default;
+};
+
+class SolidColorBrush : public Brush {
+ protected:
+ SolidColorBrush() = default;
+
+ public:
+ SolidColorBrush(const SolidColorBrush& other) = delete;
+ SolidColorBrush& operator=(const SolidColorBrush& other) = delete;
+
+ SolidColorBrush(SolidColorBrush&& other) = delete;
+ SolidColorBrush& operator=(SolidColorBrush&& other) = delete;
+
+ ~SolidColorBrush() = default;
+
+ public:
+ Color GetColor() { return color_; }
+ void SetColor(const Color& color) {
+ color_ = color;
+ OnSetColor(color);
+ }
+
+ protected:
+ virtual void OnSetColor(const Color& color) = 0;
-struct ISolidColorBrush : public virtual IBrush {
- virtual ui::Color GetColor() = 0;
- virtual void SetColor(const ui::Color& color) = 0;
+ protected:
+ Color color_ = colors::black;
};
-} // namespace cru::platform
+} // namespace cru::platform::graph