aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/win/win_painter.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/platform/win/win_painter.hpp')
-rw-r--r--include/cru/platform/win/win_painter.hpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/include/cru/platform/win/win_painter.hpp b/include/cru/platform/win/win_painter.hpp
new file mode 100644
index 00000000..7b71ccbd
--- /dev/null
+++ b/include/cru/platform/win/win_painter.hpp
@@ -0,0 +1,34 @@
+#pragma once
+#include "win_pre_config.hpp"
+
+#include "../painter.hpp"
+
+namespace cru::platform::win {
+class WinNativeWindow;
+
+class WinPainter : public Object, public virtual Painter {
+ public:
+ explicit WinPainter(WinNativeWindow* window);
+ WinPainter(const WinPainter& other) = delete;
+ WinPainter(WinPainter&& other) = delete;
+ WinPainter& operator=(const WinPainter& other) = delete;
+ WinPainter& operator=(WinPainter&& other) = delete;
+ ~WinPainter() override;
+
+ void StrokeGeometry(Geometry* geometry, Brush* brush, float width) override;
+ void FillGeometry(Geometry* geometry, Brush* brush) override;
+ void EndDraw() override;
+ bool IsDisposed() override { return is_disposed; }
+
+ void EndDrawAndDeleteThis() {
+ EndDraw();
+ delete this;
+ }
+
+ private:
+ WinNativeWindow* window_;
+ ID2D1RenderTarget* render_target_;
+
+ bool is_disposed = false;
+};
+} // namespace cru::platform::win