blob: fa87032121437e70f825a7fdcaa73fa34786352b [file] [log] [blame]
/*
* Copyright 2022 Rive
*/
#include <rive/math/aabb.hpp>
#include <rive/math/hit_test.hpp>
#include <catch.hpp>
#include <cstdio>
using namespace rive;
TEST_CASE("hittest-basics", "[hittest]")
{
HitTester tester;
tester.reset({10, 10, 12, 12});
tester.move({0, 0});
tester.line({20, 0});
tester.line({20, 20});
tester.line({0, 20});
tester.close();
REQUIRE(tester.test());
IAABB area = {81, 156, 84, 159};
Vec2D pts[] = {
{29.9785f, 32.5261f},
{231.102f, 32.5261f},
{231.102f, 269.898f},
{29.9785f, 269.898f},
};
tester.reset(area);
tester.move(pts[0]);
for (int i = 1; i < 4; ++i)
{
tester.line(pts[i]);
}
tester.close();
REQUIRE(tester.test());
}
TEST_CASE("hittest-mesh", "[hittest]")
{
const IAABB area{10, 10, 12, 12};
Vec2D verts[] = {
{0, 0},
{20, 10},
{0, 20},
};
uint16_t indices[] = {
0,
1,
2,
};
REQUIRE(HitTester::testMesh(area, make_span(verts, 3), make_span(indices, 3)));
}