blob: 9c1827a777ac4af08f98e90f27d8d9cadaf3bf5c [file] [log] [blame] [edit]
#include "rive/assets/image_asset.hpp"
#include "rive/artboard.hpp"
#include "rive/factory.hpp"
#include "rive/assets/file_asset_referencer.hpp"
using namespace rive;
ImageAsset::~ImageAsset()
{
#if defined(__EMSCRIPTEN__)
if (m_RenderImage != nullptr)
{
m_RenderImage->delegate(nullptr);
}
#endif
}
#if defined(__EMSCRIPTEN__)
void ImageAsset::decodedAsync()
{
for (auto ref : fileAssetReferencers())
{
ref->assetUpdated();
}
}
#endif
bool ImageAsset::decode(SimpleArray<uint8_t>& data, Factory* factory)
{
#ifdef TESTING
decodedByteSize = data.size();
#endif
renderImage(factory->decodeImage(data));
return m_RenderImage != nullptr;
}
void ImageAsset::renderImage(rcp<RenderImage> renderImage)
{
m_RenderImage = std::move(renderImage);
#if defined(__EMSCRIPTEN__)
if (m_RenderImage != nullptr)
{
m_RenderImage->delegate(this);
}
#endif
for (auto ref : fileAssetReferencers())
{
ref->assetUpdated();
}
}
std::string ImageAsset::fileExtension() const { return "png"; }