| #ifndef _RIVE_VIEW_MODEL_HPP_ | |
| #define _RIVE_VIEW_MODEL_HPP_ | |
| #include "rive/generated/viewmodel/viewmodel_base.hpp" | |
| #include "rive/viewmodel/viewmodel_property.hpp" | |
| #include "rive/viewmodel/viewmodel_instance.hpp" | |
| #include "rive/viewmodel/symbol_type.hpp" | |
| #include "rive/refcnt.hpp" | |
| #include <stdio.h> | |
| namespace rive | |
| { | |
| class File; | |
| class ViewModel : public ViewModelBase, public RefCnt<ViewModel> | |
| { | |
| private: | |
| std::vector<ViewModelProperty*> m_Properties; | |
| std::vector<ViewModelInstance*> m_Instances; | |
| File* m_file = nullptr; | |
| public: | |
| #ifdef WITH_RIVE_EDITOR | |
| void editorPrepareForDestruction() override; | |
| void editorRelease() override { unref(); } | |
| #endif | |
| ~ViewModel(); | |
| void addProperty(ViewModelProperty* property); | |
| ViewModelProperty* property(const std::string& name); | |
| ViewModelProperty* property(SymbolType symbolType); | |
| ViewModelProperty* property(size_t index); | |
| void addInstance(ViewModelInstance* value); | |
| ViewModelInstance* instance(size_t index); | |
| ViewModelInstance* instance(const std::string& name); | |
| rcp<ViewModelInstance> createInstance(); | |
| rcp<ViewModelInstance> createFromInstance(const std::string& instanceName); | |
| void file(File* value) { m_file = value; }; | |
| #ifdef WITH_RIVE_TOOLS | |
| File* file() { return m_file; }; | |
| #endif | |
| ViewModelInstance* defaultInstance(); | |
| size_t instanceCount() const; | |
| const std::vector<ViewModelProperty*>& properties() const | |
| { | |
| return m_Properties; | |
| } | |
| std::vector<ViewModelInstance*> instances() { return m_Instances; } | |
| }; | |
| } // namespace rive | |
| #endif |