| #include "rive/nested_artboard_leaf.hpp" |
| #include "rive/renderer.hpp" |
| #include "rive/layout_component.hpp" |
| #include "rive/artboard.hpp" |
| |
| using namespace rive; |
| |
| Core* NestedArtboardLeaf::clone() const |
| { |
| NestedArtboardLeaf* nestedArtboard = |
| static_cast<NestedArtboardLeaf*>(NestedArtboardLeafBase::clone()); |
| if (m_Artboard == nullptr) |
| { |
| return nestedArtboard; |
| } |
| auto ni = m_Artboard->instance(); |
| nestedArtboard->nest(ni.release()); |
| return nestedArtboard; |
| } |
| |
| void NestedArtboardLeaf::update(ComponentDirt value) |
| { |
| Super::update(value); |
| auto artboard = artboardInstance(); |
| if (hasDirt(value, ComponentDirt::WorldTransform) && artboard != nullptr) |
| { |
| auto p = parent(); |
| |
| AABB bounds = p != nullptr && p->is<LayoutComponent>() |
| ? p->as<LayoutComponent>()->localBounds() |
| : AABB(); |
| |
| auto viewTransform = computeAlignment((Fit)fit(), |
| Alignment(alignmentX(), alignmentY()), |
| bounds, |
| artboard->bounds()); |
| |
| m_WorldTransform *= viewTransform; |
| } |
| } |