/
usr
/
include
/
boost
/
geometry
/
algorithms
/
detail
/
/usr/include/boost/geometry/algorithms/detail
mkdir
upload
Name
Size
Mode
Actions
buffer/
-
0755
rm
centroid/
-
0755
rm
closest_feature/
-
0755
rm
comparable_distance/
-
0755
rm
covered_by/
-
0755
rm
disjoint/
-
0755
rm
distance/
-
0755
rm
envelope/
-
0755
rm
equals/
-
0755
rm
expand/
-
0755
rm
intersection/
-
0755
rm
intersects/
-
0755
rm
is_simple/
-
0755
rm
is_valid/
-
0755
rm
make/
-
0755
rm
overlaps/
-
0755
rm
overlay/
-
0755
rm
relate/
-
0755
rm
relation/
-
0755
rm
sections/
-
0755
rm
touches/
-
0755
rm
turns/
-
0755
rm
within/
-
0755
rm
assign_box_corners.hpp
3338
0644
edit
dl
rm
assign_indexed_point.hpp
2656
0644
edit
dl
rm
assign_values.hpp
8957
0644
edit
dl
rm
as_range.hpp
2688
0644
edit
dl
rm
azimuth.hpp
4802
0644
edit
dl
rm
calculate_null.hpp
1144
0644
edit
dl
rm
calculate_point_order.hpp
11145
0644
edit
dl
rm
calculate_sum.hpp
2047
0644
edit
dl
rm
check_iterator_range.hpp
2012
0644
edit
dl
rm
convert_indexed_to_indexed.hpp
2296
0644
edit
dl
rm
convert_point_to_point.hpp
2259
0644
edit
dl
rm
counting.hpp
2746
0644
edit
dl
rm
course.hpp
1180
0644
edit
dl
rm
direction_code.hpp
9205
0644
edit
dl
rm
expand_by_epsilon.hpp
3880
0644
edit
dl
rm
extreme_points.hpp
19767
0644
edit
dl
rm
for_each_range.hpp
4962
0644
edit
dl
rm
get_max_size.hpp
2054
0644
edit
dl
rm
has_self_intersections.hpp
5389
0644
edit
dl
rm
interior_iterator.hpp
1768
0644
edit
dl
rm
max_interval_gap.hpp
8430
0644
edit
dl
rm
multi_modify.hpp
1883
0644
edit
dl
rm
multi_modify_with_predicate.hpp
1442
0644
edit
dl
rm
multi_sum.hpp
1490
0644
edit
dl
rm
normalize.hpp
1296
0644
edit
dl
rm
not.hpp
2032
0644
edit
dl
rm
num_distinct_consecutive_points.hpp
2449
0644
edit
dl
rm
partition.hpp
29824
0644
edit
dl
rm
point_is_spike_or_equal.hpp
5455
0644
edit
dl
rm
point_on_border.hpp
5254
0644
edit
dl
rm
recalculate.hpp
6905
0644
edit
dl
rm
ring_identifier.hpp
2285
0644
edit
dl
rm
signed_size_type.hpp
770
0644
edit
dl
rm
single_geometry.hpp
2840
0644
edit
dl
rm
sub_range.hpp
4097
0644
edit
dl
rm
sweep.hpp
2086
0644
edit
dl
rm
throw_on_empty_input.hpp
2073
0644
edit
dl
rm
tupled_output.hpp
19235
0644
edit
dl
rm
Edit:
/usr/include/boost/geometry/algorithms/detail/point_on_border.hpp
(5254B)
// Boost.Geometry (aka GGL, Generic Geometry Library) // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. // This file was modified by Oracle on 2017, 2018. // Modifications copyright (c) 2017-2018 Oracle and/or its affiliates. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_POINT_ON_BORDER_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_POINT_ON_BORDER_HPP #include <cstddef> #include <boost/range.hpp> #include <boost/static_assert.hpp> #include <boost/geometry/core/tags.hpp> #include <boost/geometry/core/point_type.hpp> #include <boost/geometry/core/ring_type.hpp> #include <boost/geometry/geometries/concepts/check.hpp> #include <boost/geometry/algorithms/assign.hpp> #include <boost/geometry/algorithms/detail/convert_point_to_point.hpp> #include <boost/geometry/algorithms/detail/equals/point_point.hpp> #include <boost/geometry/util/condition.hpp> namespace boost { namespace geometry { #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace point_on_border { struct get_point { template <typename Point> static inline bool apply(Point& destination, Point const& source) { destination = source; return true; } }; struct point_on_range { // Version with iterator template<typename Point, typename Iterator> static inline bool apply(Point& point, Iterator begin, Iterator end) { if (begin == end) { return false; } geometry::detail::conversion::convert_point_to_point(*begin, point); return true; } // Version with range template<typename Point, typename Range> static inline bool apply(Point& point, Range const& range) { return apply(point, boost::begin(range), boost::end(range)); } }; struct point_on_polygon { template<typename Point, typename Polygon> static inline bool apply(Point& point, Polygon const& polygon) { return point_on_range::apply(point, exterior_ring(polygon)); } }; struct point_on_box { template<typename Point, typename Box> static inline bool apply(Point& point, Box const& box) { detail::assign::assign_box_2d_corner<min_corner, min_corner>(box, point); return true; } }; template <typename Policy> struct point_on_multi { template<typename Point, typename MultiGeometry> static inline bool apply(Point& point, MultiGeometry const& multi) { // Take a point on the first multi-geometry // (i.e. the first that is not empty) for (typename boost::range_iterator < MultiGeometry const >::type it = boost::begin(multi); it != boost::end(multi); ++it) { if (Policy::apply(point, *it)) { return true; } } return false; } }; }} // namespace detail::point_on_border #endif // DOXYGEN_NO_DETAIL #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { template <typename GeometryTag> struct point_on_border {}; template <> struct point_on_border<point_tag> : detail::point_on_border::get_point {}; template <> struct point_on_border<linestring_tag> : detail::point_on_border::point_on_range {}; template <> struct point_on_border<ring_tag> : detail::point_on_border::point_on_range {}; template <> struct point_on_border<polygon_tag> : detail::point_on_border::point_on_polygon {}; template <> struct point_on_border<box_tag> : detail::point_on_border::point_on_box {}; template <> struct point_on_border<multi_polygon_tag> : detail::point_on_border::point_on_multi < detail::point_on_border::point_on_polygon > {}; template <> struct point_on_border<multi_linestring_tag> : detail::point_on_border::point_on_multi < detail::point_on_border::point_on_range > {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH /*! \brief Take point on a border \ingroup overlay \tparam Geometry geometry type. This also defines the type of the output point \param point to assign \param geometry geometry to take point from \return TRUE if successful, else false. It is only false if polygon/line have no points \note for a polygon, it is always a point on the exterior ring */ template <typename Point, typename Geometry> inline bool point_on_border(Point& point, Geometry const& geometry) { concepts::check<Point>(); concepts::check<Geometry const>(); return dispatch::point_on_border < typename tag<Geometry>::type >::apply(point, geometry); } }} // namespace boost::geometry #endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_POINT_ON_BORDER_HPP
Save
cmd:
run