diff options
author | crupest <crupest@outlook.com> | 2020-03-03 00:02:12 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-03-03 00:02:12 +0800 |
commit | ebb8f7beba71fc0d3cd81f60559e4005e05e48d5 (patch) | |
tree | 82c565e00279b3c4a9df213ec2a41ab3ccb4529a /include/cru/ui | |
parent | e429ec11ebfcc5ce858d375d31a08285c8b30695 (diff) | |
download | cru-ebb8f7beba71fc0d3cd81f60559e4005e05e48d5.tar.gz cru-ebb8f7beba71fc0d3cd81f60559e4005e05e48d5.tar.bz2 cru-ebb8f7beba71fc0d3cd81f60559e4005e05e48d5.zip |
Add canvas render object.
Diffstat (limited to 'include/cru/ui')
-rw-r--r-- | include/cru/ui/render/canvas_render_object.hpp | 43 | ||||
-rw-r--r-- | include/cru/ui/render/render_object.hpp | 1 |
2 files changed, 44 insertions, 0 deletions
diff --git a/include/cru/ui/render/canvas_render_object.hpp b/include/cru/ui/render/canvas_render_object.hpp new file mode 100644 index 00000000..fea68576 --- /dev/null +++ b/include/cru/ui/render/canvas_render_object.hpp @@ -0,0 +1,43 @@ +#pragma once +#include "render_object.hpp" + +#include "cru/common/event.hpp" + +namespace cru::ui::render { +class CanvasPaintEventArgs { + public: + CanvasPaintEventArgs(platform::graph::IPainter* painter, + const Rect& paint_rect) + : painter_(painter), paint_rect_(paint_rect) {} + CRU_DEFAULT_COPY(CanvasPaintEventArgs) + CRU_DEFAULT_MOVE(CanvasPaintEventArgs) + ~CanvasPaintEventArgs() = default; + + platform::graph::IPainter* GetPainter() const { return painter_; } + Rect GetPaintRect() const { return paint_rect_; } + + private: + platform::graph::IPainter* painter_; + Rect paint_rect_; +}; + +class CanvasRenderObject : public RenderObject { + public: + CanvasRenderObject(); + + CRU_DELETE_COPY(CanvasRenderObject) + CRU_DELETE_MOVE(CanvasRenderObject) + + ~CanvasRenderObject(); + + public: + void Draw(platform::graph::IPainter* painter) override; + + RenderObject* HitTest(const Point& point) override; + + IEvent<CanvasPaintEventArgs>* PaintEvent() { return &paint_event_; } + + private: + Event<CanvasPaintEventArgs> paint_event_; +}; +} // namespace cru::ui::render diff --git a/include/cru/ui/render/render_object.hpp b/include/cru/ui/render/render_object.hpp index 73543aa3..b0a65819 100644 --- a/include/cru/ui/render/render_object.hpp +++ b/include/cru/ui/render/render_object.hpp @@ -116,6 +116,7 @@ class RenderObject : public Object { virtual void OnAfterLayout(); static void NotifyAfterLayoutRecursive(RenderObject* render_object); + Rect GetPaddingRect() const; Rect GetContentRect() const; private: |