blob: 8607d1af47abfcc26f524c4e433e9e941035fecf [file] [log] [blame]
#include "rive/data_bind/converters/data_converter.hpp"
#include "rive/importers/import_stack.hpp"
#include "rive/importers/backboard_importer.hpp"
#include "rive/backboard.hpp"
#include "rive/data_bind/data_bind.hpp"
#include "rive/data_bind/data_bind_context.hpp"
using namespace rive;
DataConverter::~DataConverter() { deleteDataBinds(); }
StatusCode DataConverter::import(ImportStack& importStack)
{
auto backboardImporter =
importStack.latest<BackboardImporter>(Backboard::typeKey);
if (backboardImporter == nullptr)
{
return StatusCode::MissingObject;
}
backboardImporter->addDataConverter(this);
return Super::import(importStack);
}
void DataConverter::bindFromContext(DataContext* dataContext,
DataBind* dataBind)
{
m_parentDataBind = dataBind;
bindDataBindsFromContext(dataContext);
}
void DataConverter::unbind() { unbindDataBinds(); }
void DataConverter::markConverterDirty()
{
m_parentDataBind->addDirt(ComponentDirt::Dependents |
ComponentDirt::Bindings,
false);
}
void DataConverter::addDirtyDataBind(DataBind* dataBind)
{
markConverterDirty();
DataBindContainer::addDirtyDataBind(dataBind);
}
void DataConverter::update() { updateDataBinds(false); }
void DataConverter::copy(const DataConverter& object)
{
auto dataBinds = object.dataBinds();
for (auto dataBind : dataBinds)
{
auto dataBindClone = dataBind->clone()->as<DataBind>();
dataBindClone->target(this);
addDataBind(dataBindClone);
}
DataConverterBase::copy(object);
}
bool DataConverter::advance(float elapsedTime) { return false; }