From b6db663269201fa14a6a4aa1b9042645a9e8f859 Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 24 May 2019 23:45:58 +0800 Subject: ... --- include/cru/win/graph/win_painter.hpp | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 include/cru/win/graph/win_painter.hpp (limited to 'include/cru/win/graph/win_painter.hpp') diff --git a/include/cru/win/graph/win_painter.hpp b/include/cru/win/graph/win_painter.hpp new file mode 100644 index 00000000..f218488c --- /dev/null +++ b/include/cru/win/graph/win_painter.hpp @@ -0,0 +1,43 @@ +#pragma once +#include "../win_pre_config.hpp" + +#include "cru/platform/graph/painter.hpp" + +namespace cru::win::graph { +class GraphManager; + +class WinPainter : public Object, public virtual platform::graph::IPainter { + public: + explicit WinPainter(ID2D1RenderTarget* render_target); + WinPainter(const WinPainter& other) = delete; + WinPainter(WinPainter&& other) = delete; + WinPainter& operator=(const WinPainter& other) = delete; + WinPainter& operator=(WinPainter&& other) = delete; + ~WinPainter() override = default; + + platform::Matrix GetTransform() override; + void SetTransform(const platform::Matrix& matrix) override; + void Clear(const ui::Color& color) override; + void StrokeRectangle(const ui::Rect& rectangle, platform::graph::IBrush* brush, + float width) override; + void FillRectangle(const ui::Rect& rectangle, + platform::graph::IBrush* brush) override; + void StrokeGeometry(platform::graph::IGeometry* geometry, + platform::graph::IBrush* brush, float width) override; + void FillGeometry(platform::graph::IGeometry* geometry, + platform::graph::IBrush* brush) override; + void DrawText(const ui::Point& offset, + platform::graph::ITextLayout* text_layout, + platform::graph::IBrush* brush) override; + void End() override final; + bool IsEnded() const override final { return is_draw_ended_; } + + protected: + virtual void DoEndDraw() = 0; + + private: + ID2D1RenderTarget* render_target_; + + bool is_draw_ended_ = false; +}; +} // namespace cru::win::graph -- cgit v1.2.3