blob: 92c5776bf7904ab69dd7c787b8578aca2229ee70 [file] [log] [blame]
#ifndef _RIVE_N_SLICER_DETAILS_HPP_
#define _RIVE_N_SLICER_DETAILS_HPP_
#include <stdio.h>
#include <unordered_map>
namespace rive
{
class AxisX;
class AxisY;
class Axis;
class Component;
class NSlicerTileMode;
enum class NSlicerTileModeType : int;
class NSlicerDetails
{
friend class Axis;
protected:
std::vector<Axis*> m_xs;
std::vector<Axis*> m_ys;
std::unordered_map<int, NSlicerTileModeType> m_tileModes; // patchIndex key
public:
static NSlicerDetails* from(Component* component);
int patchIndex(int patchX, int patchY);
const std::vector<Axis*>& xs() const { return m_xs; }
const std::vector<Axis*>& ys() const { return m_ys; }
const std::unordered_map<int, NSlicerTileModeType>& tileModes()
{
return m_tileModes;
}
void addAxisX(Axis* axis);
void addAxisY(Axis* axis);
void addTileMode(int patchIndex, NSlicerTileModeType style);
virtual void axisChanged() = 0; // only axis gets animated at runtime
virtual ~NSlicerDetails() {}
};
} // namespace rive
#endif