TU-Programmieren_2/exercise4/task3.misc.cpp
2025-04-09 10:22:44 +02:00

34 lines
1.3 KiB
C++

/// @file
/// @brief Task3: definitions of helper functions for the implementation and tests
#include "task3.misc.hpp"
#include "task2.hpp" // task2::BBox, task2::Circle, task2::Triangle,
#include "iue-svg/render.hpp" // iue::svg::render
#include <filesystem> // std::filesystem::path
namespace task3 {
task2::BBox render_wrapper(std::filesystem::path filepath, const std::vector<task2::BBox>& bboxes,
const std::vector<task2::Circle>& circles, const std::vector<task2::Triangle>& triangles) {
auto circle_convert = [](const task2::Circle& in) -> iue::svg::Circle { return {in.c, in.r}; };
std::vector<iue::svg::Circle> c;
std::transform(circles.begin(), circles.end(), std::back_inserter(c), circle_convert);
auto triangle_convert = [](const task2::Triangle& in) -> iue::svg::Triangle { return {in.abc}; };
std::vector<iue::svg::Triangle> t;
std::transform(triangles.begin(), triangles.end(), std::back_inserter(t), triangle_convert);
auto bbox_convert = [](const task2::BBox& in) -> iue::svg::BBox { return iue::svg::BBox{in.min, in.max}; };
std::vector<iue::svg::BBox> r;
std::transform(bboxes.begin(), bboxes.end(), std::back_inserter(r), bbox_convert);
auto [bbmin, bbmax] = iue::svg::render(filepath, r, c, t);
return {bbmin, bbmax};
}
} // namespace task3