| #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 |