| #include "rive/data_bind_path_referencer.hpp" |
| #include "rive/importers/data_bind_path_importer.hpp" |
| #include "rive/file.hpp" |
| |
| using namespace rive; |
| |
| DataBindPathReferencer::~DataBindPathReferencer() |
| { |
| if (m_dataBindPath) |
| { |
| delete m_dataBindPath; |
| } |
| } |
| |
| void DataBindPathReferencer::copyDataBindPath(DataBindPath* dataBindPath) |
| { |
| if (dataBindPath) |
| { |
| m_dataBindPath = dataBindPath->clone()->as<DataBindPath>(); |
| m_dataBindPath->file(dataBindPath->file()); |
| } |
| } |
| |
| void DataBindPathReferencer::importDataBindPath(ImportStack& importStack) |
| { |
| auto dataBindPathImporter = |
| importStack.latest<DataBindPathImporter>(DataBindPathBase::typeKey); |
| if (dataBindPathImporter) |
| { |
| auto dataBindPath = dataBindPathImporter->claim(); |
| if (dataBindPath != nullptr) |
| { |
| // If a DataBindPath is claimed, the core object shouldn't have a |
| // path already created |
| assert(m_dataBindPath == nullptr); |
| m_dataBindPath = dataBindPath; |
| } |
| } |
| } |
| |
| void DataBindPathReferencer::decodeDataBindPath(Span<const uint8_t>& value) |
| { |
| m_dataBindPath = new DataBindPath(); |
| m_dataBindPath->decodePath(value); |
| m_dataBindPath->resolved(true); |
| } |