aboutsummaryrefslogtreecommitdiff
path: root/src/ui/render/render_object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/render/render_object.cpp')
-rw-r--r--src/ui/render/render_object.cpp33
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);
+ }
}