| #ifndef _RIVE_N_SLICER_HELPERS_HPP_ | |
| #define _RIVE_N_SLICER_HELPERS_HPP_ | |
| #include <vector> | |
| namespace rive | |
| { | |
| class Axis; | |
| class NSlicedNode; | |
| class RawPath; | |
| class Mat2D; | |
| struct ScaleInfo | |
| { | |
| bool useScale; | |
| float scaleFactor; | |
| float fallbackSize; | |
| }; | |
| struct NSlicerHelpers | |
| { | |
| static std::vector<float> uvStops(const std::vector<Axis*>& axes, float size); | |
| static std::vector<float> pxStops(const std::vector<Axis*>& axes, float size); | |
| static ScaleInfo analyzeUVStops( | |
| const std::vector<float>& uvs, | |
| float size, | |
| float scale); | |
| static float mapValue( | |
| const std::vector<float>& stops, | |
| const ScaleInfo& scaleInfo, | |
| float size, | |
| float value); | |
| static bool isFixedSegment(int i) { return i % 2 == 0; }; | |
| static void deformLocalRenderPathWithNSlicer( | |
| const NSlicedNode& nslicedNode, | |
| RawPath& localPath, | |
| const Mat2D& world, | |
| const Mat2D& inverseWorld); | |
| static void deformWorldRenderPathWithNSlicer( | |
| const NSlicedNode& nslicedNode, | |
| RawPath& worldPath); | |
| }; | |
| } // namespace rive | |
| #endif |