blob: c217f36614449fbfe818acd640c7b44b0fb6b361 [file] [log] [blame]
#include <rive/file.hpp>
#include <rive/node.hpp>
#include <rive/shapes/clipping_shape.hpp>
#include <rive/shapes/rectangle.hpp>
#include <rive/shapes/shape.hpp>
#include <rive/animation/linear_animation_instance.hpp>
#include "utils/no_op_renderer.hpp"
#include "rive_file_reader.hpp"
#include <catch.hpp>
#include <cstdio>
TEST_CASE("draw rules load and sort correctly", "[draw rules]")
{
auto file = ReadRiveFile("../../test/assets/draw_rule_cycle.riv");
// auto file = reader.file();
std::unique_ptr<rive::ArtboardInstance> artboard = file->artboardDefault();
auto node = artboard->find<rive::Node>("Blue");
REQUIRE(node != nullptr);
REQUIRE(node->is<rive::Shape>());
// auto shape = node->as<rive::Shape>();
artboard->updateComponents();
REQUIRE(artboard->animationCount() == 1);
// Check that we can advance the ping-pong animation with 1 second duration
// without a hang.
std::unique_ptr<rive::LinearAnimationInstance> animation = artboard->animationAt(0);
// Advance and apply some frames.
int frames = 10;
float frameDuration = 1.0f;
for (int i = 0; i < frames; i++)
{
animation->advanceAndApply(frameDuration);
rive::NoOpRenderer renderer;
artboard->draw(&renderer);
}
}