diff options
Diffstat (limited to 'src/ui/render/render_object.cpp')
-rw-r--r-- | src/ui/render/render_object.cpp | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/ui/render/render_object.cpp b/src/ui/render/render_object.cpp index 78445bf1..6796f382 100644 --- a/src/ui/render/render_object.cpp +++ b/src/ui/render/render_object.cpp @@ -220,9 +220,40 @@ namespace cru::ui::render InvalidateRenderHost; } - void CustomDrawHandlerRenderObject::Draw(ID2D1RenderTarget * render_target) + void CustomDrawHandlerRenderObject::Draw(ID2D1RenderTarget* render_target) { if (draw_handler_ != nullptr) draw_handler_(render_target); } + + ContainerRenderObject::~ContainerRenderObject() + { + for (const auto child : children_) + delete child; + } + + void ContainerRenderObject::AddChild(RenderObject* child) + { + children_.push_back(child); + } + + void ContainerRenderObject::AddChild(RenderObject* child, const int position) + { + assert(position >= 0); + assert(position <= children_.size()); + children_.insert(children_.cbegin() + position, child); + } + + void ContainerRenderObject::RemoveChild(const int position) + { + assert(position >= 0); + assert(position < children_.size()); + children_.erase(children_.cbegin() + position); + } + + void ContainerRenderObject::Draw(ID2D1RenderTarget* render_target) + { + for (const auto child : children_) + child->Draw(render_target); + } } |