2023-01-11 10:21:18 +00:00
|
|
|
#include "TestFramework.h"
|
|
|
|
#include "TestUtils.h"
|
2023-01-12 10:58:43 +00:00
|
|
|
#include "TestRenderUtils.h"
|
2023-01-11 10:21:18 +00:00
|
|
|
|
|
|
|
#include "RectangleNode.h"
|
2023-01-24 08:57:16 +00:00
|
|
|
#include "CircleNode.h"
|
|
|
|
#include "LineNode.h"
|
|
|
|
#include "PathNode.h"
|
2023-01-12 10:58:43 +00:00
|
|
|
|
2023-01-24 08:57:16 +00:00
|
|
|
void addRect(const Point& loc, std::vector<std::unique_ptr<AbstractVisualNode> >& nodes, double radius = 0.0)
|
|
|
|
{
|
|
|
|
auto node = std::make_unique<RectangleNode>(loc, 150.0, 100.0);
|
|
|
|
node->setRadius(radius);
|
|
|
|
nodes.push_back(std::move(node));
|
|
|
|
}
|
|
|
|
|
|
|
|
void addCircle(const Point& loc, std::vector<std::unique_ptr<AbstractVisualNode> >& nodes, double minorRadius = 0.0)
|
|
|
|
{
|
|
|
|
const auto radius = 50.0;
|
|
|
|
auto centre_loc = loc;
|
|
|
|
centre_loc.move(0.0, radius);
|
|
|
|
|
|
|
|
auto node = std::make_unique<CircleNode>(centre_loc, radius);
|
|
|
|
|
|
|
|
if (minorRadius != 0.0)
|
|
|
|
{
|
|
|
|
node->setMinorRadius(minorRadius);
|
|
|
|
}
|
|
|
|
|
|
|
|
nodes.push_back(std::move(node));
|
|
|
|
}
|
|
|
|
|
|
|
|
void addLine(const Point& loc, std::vector<std::unique_ptr<AbstractVisualNode> >& nodes)
|
|
|
|
{
|
|
|
|
std::vector<Point> points = { Point(150.0, 100.0) };
|
|
|
|
auto node = std::make_unique<LineNode>(loc, points);
|
|
|
|
nodes.push_back(std::move(node));
|
|
|
|
}
|
|
|
|
|
|
|
|
void addPath(const Point& loc, const std::string& path, std::vector<std::unique_ptr<AbstractVisualNode> >& nodes)
|
|
|
|
{
|
|
|
|
auto node = std::make_unique<PathNode>(loc, path);
|
|
|
|
nodes.push_back(std::move(node));
|
|
|
|
}
|
2023-01-11 10:21:18 +00:00
|
|
|
|
|
|
|
TEST_CASE(TestD2dOffScreenRendering, "graphics")
|
|
|
|
{
|
2023-01-12 10:58:43 +00:00
|
|
|
TestRenderer renderer(800, 800);
|
2023-01-11 10:21:18 +00:00
|
|
|
|
2023-01-24 08:57:16 +00:00
|
|
|
std::vector<std::unique_ptr<AbstractVisualNode> > nodes;
|
2023-01-11 10:21:18 +00:00
|
|
|
|
2023-01-24 08:57:16 +00:00
|
|
|
auto loc = Point(10, 10);
|
|
|
|
addRect(loc, nodes);
|
|
|
|
|
|
|
|
loc.move(250, 0);
|
|
|
|
addCircle(loc, nodes);
|
|
|
|
|
|
|
|
loc.move(100, 0);
|
|
|
|
addLine(loc, nodes);
|
2023-01-11 10:21:18 +00:00
|
|
|
|
2023-01-24 08:57:16 +00:00
|
|
|
loc = Point(10, 150);
|
|
|
|
addRect(loc, nodes, 10.0);
|
|
|
|
|
|
|
|
loc.move(250, 0);
|
|
|
|
addCircle(loc, nodes, 75.0);
|
|
|
|
|
|
|
|
loc.move(100, 0);
|
|
|
|
addPath(loc, "M0 0 h150 v100 h-150Z", nodes);
|
|
|
|
|
|
|
|
auto scene = renderer.getScene();
|
|
|
|
for (const auto& node : nodes)
|
|
|
|
{
|
|
|
|
scene->addNode(node.get());
|
|
|
|
}
|
2023-01-12 10:58:43 +00:00
|
|
|
renderer.write(TestUtils::getTestOutputDir(__FILE__) / "out.png");
|
2023-01-11 10:21:18 +00:00
|
|
|
};
|