#include "TestFramework.h" #include "TestUtils.h" #include "TestRenderUtils.h" #include "RectangleNode.h" #include "CircleNode.h" #include "LineNode.h" #include "PathNode.h" void addRect(const Point& loc, std::vector >& nodes, double radius = 0.0) { auto node = std::make_unique(loc, 150.0, 100.0); node->setRadius(radius); nodes.push_back(std::move(node)); } void addCircle(const Point& loc, std::vector >& 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(centre_loc, radius); if (minorRadius != 0.0) { node->setMinorRadius(minorRadius); } nodes.push_back(std::move(node)); } void addLine(const Point& loc, std::vector >& nodes) { std::vector points = { Point(150.0, 100.0) }; auto node = std::make_unique(loc, points); nodes.push_back(std::move(node)); } void addPath(const Point& loc, const std::string& path, std::vector >& nodes) { auto node = std::make_unique(loc, path); nodes.push_back(std::move(node)); } TEST_CASE(TestD2dOffScreenRendering, "graphics") { TestRenderer renderer(800, 800); std::vector > nodes; auto loc = Point(10, 10); addRect(loc, nodes); loc.move(250, 0); addCircle(loc, nodes); loc.move(100, 0); addLine(loc, nodes); 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()); } renderer.write(TestUtils::getTestOutputDir(__FILE__) / "out.png"); };