blob: 7bd81e20620b36d2d53ede2c7ea70322769cf18d [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() {};
virtual void relinkDataContext() {};
virtual void rebuildDataBind(DataBind*) {};
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