#ifndef _RIVE_VIRTUALIZING_COMPONENT_HPP_
#define _RIVE_VIRTUALIZING_COMPONENT_HPP_
#include "rive/math/vec2d.hpp"
#include <stdio.h>
#include <vector>
namespace rive
{
class LayoutNodeProvider;

enum class VirtualizedDirection
{
  horizontal,
  vertical
};

class Virtualizable
{
public:
  virtual Component* virtualizableComponent() = 0;
};

class VirtualizingComponent
{
public:
  static VirtualizingComponent* from(Component* component);
  // The list a scroll child is, or null.
  static VirtualizingComponent* fromScrollChild(LayoutNodeProvider* child);
  virtual bool virtualizationEnabled() = 0;
  virtual int itemCount() = 0;
  virtual Virtualizable* item(int index) = 0;
  virtual Vec2D size() = 0;
  virtual Vec2D itemSize(int index) = 0;
  virtual void setItemSize(Vec2D size, int index) = 0;
  virtual void addVirtualizable(int index) = 0;
  virtual void virtualizableChanged() = 0;
  virtual void removeVirtualizable(int index) = 0;
  // Appends the indices of the items it holds realized, wherever a list
  // update has moved them since they were added.
  virtual void realizedIndices(std::vector<int>& out) = 0;
  // Changes whenever the item count or an item's size does.
  virtual uint32_t itemsVersion() = 0;
  // Starts a new window: every item leaves it.
  virtual void clearVirtualWindow() = 0;
  // Adds a realized item to the window, in the order the virtualizer walks
  // them; realized items are drawn. Only visible (on screen) ones report
  // their measured size back, otherwise realizing an off screen item would
  // change the sizes the virtualizer used to pick this very window.
  virtual void addToVirtualWindow(int index, bool visible) = 0;
  virtual void setVirtualizablePosition(int index, Vec2D position) = 0;
  // Pins an item to a grid cell (0-based) so layout sizes it there; -1
  // leaves it to auto placement.
  virtual void setVirtualizableCell(int index, int column, int row) = 0;
};
} // namespace rive

#endif