From 9e382d2175c6706e69b734480e26032e16d0bde4 Mon Sep 17 00:00:00 2001 From: crupest Date: Mon, 1 Apr 2019 15:51:56 +0800 Subject: ... --- include/cru/platform/win/win_painter.hpp | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 include/cru/platform/win/win_painter.hpp (limited to 'include/cru/platform/win/win_painter.hpp') 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 -- cgit v1.2.3