| #include "rive/shapes/path.hpp" | |
| #include "rive/math/mat2d.hpp" | |
| #include "rive/tess/tess_render_path.hpp" | |
| #include "rive_file_reader.hpp" | |
| class TestRenderPath : public rive::TessRenderPath | |
| { | |
| public: | |
| std::vector<rive::Vec2D> vertices; | |
| std::vector<uint16_t> indices; | |
| protected: | |
| virtual void addTriangles(rive::Span<const rive::Vec2D> vts, | |
| rive::Span<const uint16_t> idx) override | |
| { | |
| vertices.insert(vertices.end(), vts.begin(), vts.end()); | |
| indices.insert(indices.end(), idx.begin(), idx.end()); | |
| } | |
| void setTriangulatedBounds(const rive::AABB& value) override {} | |
| }; | |
| TEST_CASE("simple triangle path triangulates as expected", "[file]") | |
| { | |
| auto file = ReadRiveFile("../test/assets/triangle.riv"); | |
| auto artboard = file->artboard(); | |
| artboard->advance(0.0f); | |
| auto path = artboard->find<rive::Path>("triangle_path"); | |
| REQUIRE(path != nullptr); | |
| TestRenderPath renderPath; | |
| path->buildPath(renderPath); | |
| rive::Mat2D identity; | |
| TestRenderPath shapeRenderPath; | |
| shapeRenderPath.addRenderPath(&renderPath, identity); | |
| shapeRenderPath.triangulate(); | |
| REQUIRE(shapeRenderPath.vertices.size() == 4); | |
| REQUIRE(shapeRenderPath.indices.size() == 3); | |
| REQUIRE(shapeRenderPath.indices[0] == 2); | |
| REQUIRE(shapeRenderPath.indices[1] == 0); | |
| REQUIRE(shapeRenderPath.indices[2] == 1); | |
| } |