blob: 5bc652825f58d78c62effb3ffd800f97aa5a0b15 [file] [log] [blame]
#ifndef _RIVE_DATA_CONTEXT_HPP_
#define _RIVE_DATA_CONTEXT_HPP_
#include "rive/viewmodel/viewmodel_instance_value.hpp"
#include "rive/viewmodel/viewmodel_instance.hpp"
namespace rive
{
class DataContext
{
private:
DataContext* m_Parent = nullptr;
std::vector<ViewModelInstance*> m_ViewModelInstances;
ViewModelInstance* m_ViewModelInstance;
public:
DataContext();
DataContext(ViewModelInstance* viewModelInstance);
~DataContext();
DataContext* parent() { return m_Parent; }
void parent(DataContext* value) { m_Parent = value; }
void addViewModelInstance(ViewModelInstance* value);
ViewModelInstanceValue* getViewModelProperty(const std::vector<uint32_t> path) const;
ViewModelInstance* getViewModelInstance(const std::vector<uint32_t> path) const;
void viewModelInstance(ViewModelInstance* value);
ViewModelInstance* viewModelInstance() { return m_ViewModelInstance; };
ViewModelInstanceValue* viewModelValue()
{
if (m_Parent)
{
return m_Parent->viewModelValue();
}
return nullptr;
}
};
} // namespace rive
#endif