| #include "rive/container_component.hpp" |
| using namespace rive; |
| |
| void ContainerComponent::addChild(Component* component) { m_children.push_back(component); } |
| |
| bool ContainerComponent::collapse(bool value) |
| { |
| if (!Super::collapse(value)) |
| { |
| return false; |
| } |
| for (Component* child : m_children) |
| { |
| child->collapse(value); |
| } |
| return true; |
| } |
| |
| bool ContainerComponent::forAll(std::function<bool(Component*)> predicate) |
| { |
| if (!predicate(this)) |
| { |
| return false; |
| } |
| forEachChild(predicate); |
| return true; |
| } |
| |
| bool ContainerComponent::forEachChild(std::function<bool(Component*)> predicate) |
| { |
| for (Component* child : m_children) |
| { |
| if (!predicate(child)) |
| { |
| return false; |
| } |
| if (child->is<ContainerComponent>() && |
| !child->as<ContainerComponent>()->forEachChild(predicate)) |
| { |
| return false; |
| } |
| } |
| return true; |
| } |