blob: 366511de507ef8b31cb3794f6d6434a2874ffed7 [file] [log] [blame]
#ifndef _RIVE_LAYOUT_NODE_PROVIDER_HPP_
#define _RIVE_LAYOUT_NODE_PROVIDER_HPP_
#include <assert.h>
#include <vector>
namespace rive
{
class AABB;
class Component;
class LayoutConstraint;
class TransformComponent;
class LayoutNodeProvider
{
protected:
std::vector<LayoutConstraint*> m_layoutConstraints;
public:
#ifdef WITH_RIVE_LAYOUT
virtual void* layoutNode(int index) = 0;
#endif
static LayoutNodeProvider* from(Component* component);
virtual TransformComponent* transformComponent() = 0;
void addLayoutConstraint(LayoutConstraint* constraint);
virtual AABB layoutBounds() = 0;
virtual AABB layoutBoundsForNode(int index) { return layoutBounds(); }
virtual bool syncStyleChanges() { return false; };
virtual void updateLayoutBounds(bool animate = true){};
virtual void markLayoutNodeDirty(bool shouldForceUpdateLayoutBounds = false)
{}
virtual size_t numLayoutNodes() = 0;
};
} // namespace rive
#endif