diff options
Diffstat (limited to 'include/cru/platform/graph/brush.hpp')
-rw-r--r-- | include/cru/platform/graph/brush.hpp | 49 |
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 |