1 #include "component.hpp"
2 #include "artboard.hpp"
3 #include "container_component.hpp"
4 #include "core_context.hpp"
5 #include "importers/artboard_importer.hpp"
6 #include "importers/import_stack.hpp"
11 StatusCode Component::onAddedDirty(CoreContext* context)
13 m_Artboard = static_cast<Artboard*>(context);
14 if (this == m_Artboard)
16 // We're the artboard, don't parent to ourselves.
17 return StatusCode::Ok;
19 auto coreObject = context->resolve(parentId());
20 if (coreObject == nullptr || !coreObject->is<ContainerComponent>())
22 return StatusCode::MissingObject;
24 m_Parent = reinterpret_cast<ContainerComponent*>(coreObject);
25 return StatusCode::Ok;
28 void Component::addDependent(Component* component)
30 // Make it's not already a dependent.
31 assert(std::find(m_Dependents.begin(), m_Dependents.end(), component) ==
33 m_Dependents.push_back(component);
36 bool Component::addDirt(ComponentDirt value, bool recurse)
38 if ((m_Dirt & value) == value)
44 // Make sure dirt is set before calling anything that can set more dirt.
49 m_Artboard->onComponentDirty(this);
56 for (auto d : m_Dependents)
58 d->addDirt(value, true);
63 StatusCode Component::import(ImportStack& importStack)
65 auto artboardImporter =
66 importStack.latest<ArtboardImporter>(ArtboardBase::typeKey);
67 if (artboardImporter == nullptr)
69 return StatusCode::MissingObject;
71 artboardImporter->addComponent(this);
72 return Super::import(importStack);