blob: a940371c073ec56b6cdef9fc0ecc0f3ff8ee46fc [file]
#ifndef _RIVE_BINDABLE_PROPERTY_ASSET_HPP_
#define _RIVE_BINDABLE_PROPERTY_ASSET_HPP_
#include "rive/generated/data_bind/bindable_property_asset_base.hpp"
#include "rive/assets/image_asset.hpp"
#include "rive/assets/font_asset.hpp"
#include "rive/assets/blob_asset.hpp"
#include "rive/text_engine.hpp"
#include <stdio.h>
namespace rive
{
// A single bindable asset property that can carry a live image, font, or blob.
// Only one is populated for a given bind (determined by the bound asset kind);
// the others stay empty. The asset id is carried by the BindablePropertyId base
// regardless of kind.
class BindablePropertyAsset : public BindablePropertyAssetBase
{
public:
BindablePropertyAsset() :
m_fileAsset(rcp<ImageAsset>(new ImageAsset())),
m_fontAsset(rcp<FontAsset>(new FontAsset()))
{}
constexpr static uint32_t defaultValue = -1;
rcp<ImageAsset> fileAsset() { return m_fileAsset; }
void imageValue(RenderImage* image)
{
m_fileAsset->renderImage(ref_rcp(image));
}
RenderImage* imageValue() { return m_fileAsset->renderImage(); }
rcp<FontAsset> fontFileAsset() { return m_fontAsset; }
void fontValue(Font* font) { m_fontAsset->font(ref_rcp(font)); }
Font* fontValue() { return m_fontAsset->font().get(); }
rcp<BlobAsset> blobFileAsset() { return m_blobAsset; }
void blobValue(BlobAsset* blob)
{
m_blobAsset = blob == nullptr ? nullptr : ref_rcp(blob);
}
BlobAsset* blobValue() { return m_blobAsset.get(); }
private:
rcp<ImageAsset> m_fileAsset = nullptr;
rcp<FontAsset> m_fontAsset = nullptr;
rcp<BlobAsset> m_blobAsset = nullptr;
};
} // namespace rive
#endif