12#include "detray/plugins/svgtools/meta/proto/intersection.hpp"
13#include "detray/plugins/svgtools/meta/proto/landmark.hpp"
14#include "detray/plugins/svgtools/meta/proto/trajectory.hpp"
17#include "actsvg/core.hpp"
24namespace detray::svgtools::meta::display {
27template <concepts::po
int3D po
int3_t,
typename view_t>
28inline auto landmark(
const std::string&
id,
29 const svgtools::meta::proto::landmark<point3_t>& lm,
31 const auto point_view = view(std::vector{lm._position}).at(0);
32 return actsvg::draw::marker(
id, point_view, lm._marker);
36template <concepts::po
int3D po
int3_t,
typename view_t>
37inline auto intersection(
38 const std::string&
id,
39 const svgtools::meta::proto::intersection<point3_t>& intr,
41 actsvg::svg::object ret;
44 for (std::size_t index = 0; index < intr._landmarks.size(); index++) {
45 const auto lm = intr._landmarks.at(index);
46 const auto svg = svgtools::meta::display::landmark(
47 id +
"_intersection_" + std::to_string(index), lm, view);
54template <concepts::po
int3D po
int3_t,
typename view_t>
55inline auto trajectory(
56 const std::string&
id,
57 const svgtools::meta::proto::trajectory<point3_t>& p_trajectory,
59 std::vector<actsvg::point2> points;
60 auto change_view = [view](
const point3_t& p) {
61 return view(std::vector{p}).at(0);
63 std::ranges::transform(p_trajectory._points, std::back_inserter(points),
65 actsvg::svg::object ret;
68 for (std::size_t i = 0; i < points.size() - 1; i++) {
70 const auto l = actsvg::draw::line(
id, points.at(i), points.at(i + 1),
71 p_trajectory._stroke);