aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/win/win_painter.hpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-04-01 15:51:56 +0800
committercrupest <crupest@outlook.com>2019-04-01 15:51:56 +0800
commit9e382d2175c6706e69b734480e26032e16d0bde4 (patch)
tree2702ea4dedabd5fad4be7b0f5eea1af7b7bda121 /include/cru/platform/win/win_painter.hpp
parent3e89aa733587043645f5fda72596e4ff3cd21d2a (diff)
downloadcru-9e382d2175c6706e69b734480e26032e16d0bde4.tar.gz
cru-9e382d2175c6706e69b734480e26032e16d0bde4.tar.bz2
cru-9e382d2175c6706e69b734480e26032e16d0bde4.zip
...
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