diff options
Diffstat (limited to 'include/cru/platform/graph/painter.hpp')
-rw-r--r-- | include/cru/platform/graph/painter.hpp | 45 |
1 files changed, 30 insertions, 15 deletions
diff --git a/include/cru/platform/graph/painter.hpp b/include/cru/platform/graph/painter.hpp index 34c895d4..1096aa7c 100644 --- a/include/cru/platform/graph/painter.hpp +++ b/include/cru/platform/graph/painter.hpp @@ -1,26 +1,41 @@ #pragma once -#include "cru/common/base.hpp" - +#include "../graphic_base.hpp" #include "../matrix.hpp" -#include "cru/common/endable.hpp" -#include "cru/common/ui_base.hpp" +#include "../native_resource.hpp" namespace cru::platform::graph { -struct IBrush; -struct IGeometry; -struct ITextLayout; +class Brush; +class Geometry; +class TextLayout; + +class Painter : public NativeResource { + protected: + Painter() = default; + + public: + Painter(const Painter& other) = delete; + Painter& operator=(const Painter& other) = delete; + + Painter(Painter&& other) = delete; + Painter& operator=(Painter&& other) = delete; + + ~Painter() override = default; -struct IPainter : virtual Interface, virtual IEndable<void> { + public: virtual Matrix GetTransform() = 0; virtual void SetTransform(const Matrix& matrix) = 0; - virtual void Clear(const ui::Color& color) = 0; - virtual void StrokeRectangle(const ui::Rect& rectangle, IBrush* brush, + + virtual void Clear(const Color& color) = 0; + + virtual void StrokeRectangle(const Rect& rectangle, Brush* brush, float width) = 0; - virtual void FillRectangle(const ui::Rect& rectangle, IBrush* brush) = 0; - virtual void StrokeGeometry(IGeometry* geometry, IBrush* brush, + virtual void FillRectangle(const Rect& rectangle, Brush* brush) = 0; + + virtual void StrokeGeometry(Geometry* geometry, Brush* brush, float width) = 0; - virtual void FillGeometry(IGeometry* geometry, IBrush* brush) = 0; - virtual void DrawText(const ui::Point& offset, ITextLayout* text_layout, - IBrush* brush) = 0; + virtual void FillGeometry(Geometry* geometry, Brush* brush) = 0; + + virtual void DrawText(const Point& offset, TextLayout* text_layout, + Brush* brush) = 0; }; } // namespace cru::platform::graph |