blob: 510bbf23d88660a9f032d9d41e85d0a60cd6e219 [file] [log] [blame]
#ifndef _RIVE_DATA_BIND_CONTAINER_HPP_
#define _RIVE_DATA_BIND_CONTAINER_HPP_
#include <vector>
namespace rive
{
class DataContext;
class DataBind;
class DataBindContainer
{
public:
virtual void updateDataBinds(bool applyTargetToSource = true);
void addDataBind(DataBind* dataBind);
const std::vector<DataBind*> dataBinds() const { return m_dataBinds; }
virtual void addDirtyDataBind(DataBind* dataBind);
virtual void rebind() {};
protected:
void deleteDataBinds();
bool advanceDataBinds(float);
void bindDataBindsFromContext(DataContext*);
void unbindDataBinds();
void sortDataBinds();
private:
void updateDataBind(DataBind* dataBind, bool applyTargetToSource);
std::vector<DataBind*> m_dataBinds;
std::vector<DataBind*> m_persistingDataBinds;
std::vector<DataBind*> m_dirtyDataBinds;
std::vector<DataBind*> m_pendingDirtyDataBinds;
bool m_isProcessing = false;
};
} // namespace rive
#endif