blob: 2ae92b6e4fc8c95b5b41992f93983bb8c6254494 [file] [log] [blame]
#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;
}
}