| #include "rive/importers/file_asset_importer.hpp" | |
| #include "rive/assets/file_asset_contents.hpp" | |
| #include "rive/assets/file_asset.hpp" | |
| #include "rive/file_asset_resolver.hpp" | |
| #include "rive/span.hpp" | |
| #include <cstdint> | |
| using namespace rive; | |
| FileAssetImporter::FileAssetImporter(FileAsset* fileAsset, FileAssetResolver* assetResolver) : | |
| m_FileAsset(fileAsset), m_FileAssetResolver(assetResolver) {} | |
| void FileAssetImporter::loadContents(const FileAssetContents& contents) { | |
| auto data = contents.bytes(); | |
| if (m_FileAsset->decode(data.begin(), data.size())) { | |
| m_LoadedContents = true; | |
| } | |
| } | |
| StatusCode FileAssetImporter::resolve() { | |
| if (!m_LoadedContents && m_FileAssetResolver != nullptr) { | |
| // Contents weren't available in-band, or they couldn't be decoded. Try | |
| // to find them out of band. | |
| m_FileAssetResolver->loadContents(*m_FileAsset); | |
| } | |
| // Note that it's ok for an asset to not resolve (or to resolve async). | |
| return StatusCode::Ok; | |
| } |