1 #include "component.hpp"
2 #include "artboard.hpp"
3 #include "container_component.hpp"
4 #include "core_context.hpp"
9 StatusCode Component::onAddedDirty(CoreContext* context)
11 m_Artboard = static_cast<Artboard*>(context);
12 if (this == m_Artboard)
14 // We're the artboard, don't parent to ourselves.
15 return StatusCode::Ok;
17 auto coreObject = context->resolve(parentId());
18 if (coreObject == nullptr || !coreObject->is<ContainerComponent>())
20 return StatusCode::MissingObject;
22 m_Parent = reinterpret_cast<ContainerComponent*>(coreObject);
23 return StatusCode::Ok;
26 void Component::addDependent(Component* component)
28 // Make it's not already a dependent.
29 assert(std::find(m_Dependents.begin(), m_Dependents.end(), component) ==
31 m_Dependents.push_back(component);
34 bool Component::addDirt(ComponentDirt value, bool recurse)
36 if ((m_Dirt & value) == value)
42 // Make sure dirt is set before calling anything that can set more dirt.
47 m_Artboard->onComponentDirty(this);
54 for (auto d : m_Dependents)
56 d->addDirt(value, true);