| #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"; } |