blob: 3546c127fe1a0790b61caf8e4aefaf4833ef650d [file] [log] [blame]
#ifndef _RIVE_VIEW_MODEL_RUNTIME_HPP_
#define _RIVE_VIEW_MODEL_RUNTIME_HPP_
#include <string>
#include <stdint.h>
#include "rive/file.hpp"
#include "rive/viewmodel/viewmodel_instance.hpp"
#include "rive/viewmodel/runtime/viewmodel_instance_runtime.hpp"
#include "rive/data_bind/data_values/data_type.hpp"
namespace rive
{
class ViewModel;
struct PropertyData
{
DataType type;
std::string name;
};
class ViewModelRuntime : public RefCnt<ViewModelRuntime>
{
public:
ViewModelRuntime(ViewModel* viewModel, const File* file);
const std::string& name() const;
size_t instanceCount() const;
size_t propertyCount() const;
ViewModelInstanceRuntime* createInstanceFromIndex(size_t index) const;
ViewModelInstanceRuntime* createInstanceFromName(
const std::string& name) const;
ViewModelInstanceRuntime* createDefaultInstance() const;
ViewModelInstanceRuntime* createInstance() const;
std::vector<PropertyData> properties();
static std::vector<PropertyData> buildPropertiesData(
std::vector<rive::ViewModelProperty*>& properties);
std::vector<std::string> instanceNames() const;
private:
ViewModel* m_viewModel;
const File* m_file;
mutable std::vector<rcp<ViewModelInstanceRuntime>>
m_viewModelInstanceRuntimes;
ViewModelInstanceRuntime* createRuntimeInstance(
rcp<ViewModelInstance> instance) const;
};
} // namespace rive
#endif