#pragma once #include #include #include namespace mapbox { namespace geometry { template box envelope(G const& geometry) { using limits = std::numeric_limits; T min_t = limits::has_infinity ? -limits::infinity() : limits::min(); T max_t = limits::has_infinity ? limits::infinity() : limits::max(); point min(max_t, max_t); point max(min_t, min_t); for_each_point(geometry, [&] (point const& point) { if (min.x > point.x) min.x = point.x; if (min.y > point.y) min.y = point.y; if (max.x < point.x) max.x = point.x; if (max.y < point.y) max.y = point.y; }); return box(min, max); } } // namespace geometry } // namespace mapbox