From 5220ab4fee1281b2daeacf4dd50448e06eb1f5e8 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 11 Dec 2018 23:38:59 +0800 Subject: ... --- src/ui/render/render_object.hpp | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src/ui/render/render_object.hpp') diff --git a/src/ui/render/render_object.hpp b/src/ui/render/render_object.hpp index 6603728d..4432636c 100644 --- a/src/ui/render/render_object.hpp +++ b/src/ui/render/render_object.hpp @@ -4,6 +4,7 @@ #include "system_headers.hpp" #include +#include #include "base.hpp" #include "ui/ui_base.hpp" @@ -343,7 +344,40 @@ namespace cru::ui::render }; - class ContainerRenderObject; //TODO! + class ContainerRenderObject : public RenderObject + { + public: + ContainerRenderObject() = default; + ContainerRenderObject(const ContainerRenderObject& other) = delete; + ContainerRenderObject& operator=(const ContainerRenderObject& other) = delete; + ContainerRenderObject(ContainerRenderObject&& other) = delete; + ContainerRenderObject& operator=(ContainerRenderObject&& other) = delete; + ~ContainerRenderObject(); + + const std::vector& GetChildren() const + { + return children_; + } + + RenderObject* GetAt(const int position) const + { + assert(position >= 0); + assert(position < static_cast(children_.size())); + return children_.at(static_cast::size_type>(position)); + } + + void AddChild(RenderObject* child); + + void AddChild(RenderObject* child, int position); + + void RemoveChild(int position); + + protected: + void Draw(ID2D1RenderTarget* render_target) override; + + private: + std::vector children_; + }; -- cgit v1.2.3