aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/graph/painter.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/platform/graph/painter.hpp')
-rw-r--r--include/cru/platform/graph/painter.hpp45
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