/usr/include/boost/geometry/core
NameSizeModeActions
access.hpp108460644editdlrm
assert.hpp17420644editdlrm
closure.hpp53570644editdlrm
config.hpp12910644editdlrm
coordinate_dimension.hpp36130644editdlrm
coordinate_system.hpp24890644editdlrm
coordinate_type.hpp27500644editdlrm
cs.hpp79310644editdlrm
exception.hpp31160644editdlrm
exterior_ring.hpp36040644editdlrm
geometry_id.hpp24370644editdlrm
interior_rings.hpp36390644editdlrm
interior_type.hpp38840644editdlrm
is_areal.hpp16880644editdlrm
mutable_range.hpp21830644editdlrm
point_order.hpp49330644editdlrm
point_type.hpp37560644editdlrm
radian_access.hpp80590644editdlrm
radius.hpp72290644editdlrm
reverse_dispatch.hpp16860644editdlrm
ring_type.hpp54240644editdlrm
tag.hpp18140644editdlrm
tags.hpp40260644editdlrm
tag_cast.hpp25690644editdlrm
topological_dimension.hpp23640644editdlrm
Edit: /usr/include/boost/geometry/core/radian_access.hpp (8059B)
// Boost.Geometry (aka GGL, Generic Geometry Library) // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2015 Bruno Lalande, Paris, France. // Copyright (c) 2009-2015 Mateusz Loskot, London, UK. // This file was modified by Oracle on 2015. // Modifications copyright (c) 2015, Oracle and/or its affiliates. // Contributed and/or modified by Menelaos Karavelas, 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_CORE_RADIAN_ACCESS_HPP #define BOOST_GEOMETRY_CORE_RADIAN_ACCESS_HPP #include #include #include #include #include #include namespace boost { namespace geometry { #ifndef DOXYGEN_NO_DETAIL namespace detail { template struct degree_radian_converter { typedef typename fp_coordinate_type::type coordinate_type; static inline coordinate_type get(Geometry const& geometry) { return boost::numeric_cast < coordinate_type >(geometry::get(geometry) * math::d2r()); } static inline void set(Geometry& geometry, coordinate_type const& radians) { geometry::set(geometry, boost::numeric_cast < coordinate_type >(radians * math::r2d())); } }; // Default, radian (or any other coordinate system) just works like "get" template struct radian_access { typedef typename fp_coordinate_type::type coordinate_type; static inline coordinate_type get(Geometry const& geometry) { return geometry::get(geometry); } static inline void set(Geometry& geometry, coordinate_type const& radians) { geometry::set(geometry, radians); } }; // Specialize, any "degree" coordinate system will be converted to radian // but only for dimension 0,1 (so: dimension 2 and heigher are untouched) template < typename Geometry, template class CoordinateSystem > struct radian_access<0, Geometry, CoordinateSystem > : degree_radian_converter<0, Geometry> {}; template < typename Geometry, template class CoordinateSystem > struct radian_access<1, Geometry, CoordinateSystem > : degree_radian_converter<1, Geometry> {}; template struct degree_radian_converter_box_segment { typedef typename fp_coordinate_type::type coordinate_type; static inline coordinate_type get(Geometry const& geometry) { return boost::numeric_cast < coordinate_type >(geometry::get(geometry) * math::d2r()); } static inline void set(Geometry& geometry, coordinate_type const& radians) { geometry::set(geometry, boost::numeric_cast < coordinate_type >(radians * math::r2d())); } }; // Default, radian (or any other coordinate system) just works like "get" template struct radian_access_box_segment { typedef typename fp_coordinate_type::type coordinate_type; static inline coordinate_type get(Geometry const& geometry) { return geometry::get(geometry); } static inline void set(Geometry& geometry, coordinate_type const& radians) { geometry::set(geometry, radians); } }; // Specialize, any "degree" coordinate system will be converted to radian // but only for dimension 0,1 (so: dimension 2 and heigher are untouched) template < typename Geometry, template class CoordinateSystem, std::size_t Index > struct radian_access_box_segment > : degree_radian_converter_box_segment {}; template < typename Geometry, template class CoordinateSystem, std::size_t Index > struct radian_access_box_segment > : degree_radian_converter_box_segment {}; } // namespace detail #endif // DOXYGEN_NO_DETAIL /*! \brief get coordinate value of a point, result is in Radian \details Result is in Radian, even if source coordinate system is in Degrees \return coordinate value \ingroup get \tparam Dimension dimension \tparam Geometry geometry \param geometry geometry to get coordinate value from \note Only applicable to coordinate systems templatized by units, e.g. spherical or geographic coordinate systems */ template inline typename fp_coordinate_type::type get_as_radian(Geometry const& geometry) { return detail::radian_access::type>::get(geometry); } /*! \brief set coordinate value (in radian) to a point \details Coordinate value will be set correctly, if coordinate system of point is in Degree, Radian value will be converted to Degree \ingroup set \tparam Dimension dimension \tparam Geometry geometry \param geometry geometry to assign coordinate to \param radians coordinate value to assign \note Only applicable to coordinate systems templatized by units, e.g. spherical or geographic coordinate systems */ template inline void set_from_radian(Geometry& geometry, typename fp_coordinate_type::type const& radians) { detail::radian_access::type>::set(geometry, radians); } /*! \brief get coordinate value of a segment or box, result is in Radian \details Result is in Radian, even if source coordinate system is in Degrees \return coordinate value \ingroup get \tparam Index index \tparam Dimension dimension \tparam Geometry geometry \param geometry geometry to get coordinate value from \note Only applicable to coordinate systems templatized by units, e.g. spherical or geographic coordinate systems */ template inline typename fp_coordinate_type::type get_as_radian(Geometry const& geometry) { return detail::radian_access_box_segment::type>::get(geometry); } /*! \brief set coordinate value (in radian) to a segment or box \details Coordinate value will be set correctly, if coordinate system of point is in Degree, Radian value will be converted to Degree \ingroup set \tparam Index index \tparam Dimension dimension \tparam Geometry geometry \param geometry geometry to assign coordinate to \param radians coordinate value to assign \note Only applicable to coordinate systems templatized by units, e.g. spherical or geographic coordinate systems */ template inline void set_from_radian(Geometry& geometry, typename fp_coordinate_type::type const& radians) { detail::radian_access_box_segment::type>::set(geometry, radians); } }} // namespace boost::geometry #endif // BOOST_GEOMETRY_CORE_RADIAN_ACCESS_HPP