boat
C++23 geospatial library
Loading...
Searching...
No Matches
variant.hpp
Go to the documentation of this file.
1// Andrew Naplavkov
2
3#ifndef BOAT_GUI_VARIANT_HPP
4#define BOAT_GUI_VARIANT_HPP
5
7#include <boost/gil.hpp>
8
9namespace boat::gui {
10
11struct raster {
12 boost::gil::rgba8_image_t rgba;
15};
16
17using variant = std::variant<geometry::geographic::geometry_collection, raster>;
18
20 execution_policy auto policy,
21 auto& out,
22 geometry::matrix const& out_affine,
23 geometry::srs_variant const& out_crs)
24{
25 return overloaded{
26 [=, &out](geometry::geographic::geometry_collection const& in) {
27 auto fwd = geometry::transform(
29 geometry::mat_inverse(out_affine));
30 auto drw = draw_geometry(out);
31 if (auto g = fwd(in))
32 drw(*g);
33 },
34 [=, &out](raster const& in) {
35 draw_image( //
36 policy,
37 const_view(in.rgba),
38 in.affine,
39 in.crs,
40 out,
41 out_affine,
42 out_crs);
43 }};
44}
45
46} // namespace boat::gui
47
48#endif // BOAT_GUI_VARIANT_HPP
bool transform(T1 const &geom1, T2 &geom2, Strategy const &strategy)
Definition transform.hpp:76
std::variant< srs::epsg, srs::proj4 > srs_variant
Definition vocabulary.hpp:115
auto mat_inverse(matrix const &v)
Definition transform.hpp:70
auto srs_forward(T const &v)
Definition transform.hpp:56
auto transformation(srs_spec auto const &a, srs_spec auto const &b)
Creates a transformation from source a to target b.
Definition transform.hpp:39
boost::qvm::mat< double, 3, 3 > matrix
Definition vocabulary.hpp:114
Definition cache.hpp:11
auto draw_variant(execution_policy auto policy, auto &out, geometry::matrix const &out_affine, geometry::srs_variant const &out_crs)
Definition variant.hpp:19
void draw_image(execution_policy auto policy, boost::gil::rgba8c_view_t in, geometry::matrix const &in_affine, geometry::srs_spec auto &&in_crs, QPainter &out, geometry::matrix const &out_affine, geometry::srs_spec auto &&out_crs)
Definition qt.hpp:44
auto draw_geometry(QPainter &out)
Definition qt.hpp:30
std::variant< geometry::geographic::geometry_collection, raster > variant
Definition variant.hpp:17
Definition variant.hpp:11
geometry::matrix affine
Maps image pixels to spatial coordinates.
Definition variant.hpp:13
geometry::srs_variant crs
Definition variant.hpp:14
boost::gil::rgba8_image_t rgba
Definition variant.hpp:12