summaryrefslogtreecommitdiff
path: root/boost/geometry/algorithms/detail/expand/box.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/geometry/algorithms/detail/expand/box.hpp')
-rw-r--r--boost/geometry/algorithms/detail/expand/box.hpp99
1 files changed, 15 insertions, 84 deletions
diff --git a/boost/geometry/algorithms/detail/expand/box.hpp b/boost/geometry/algorithms/detail/expand/box.hpp
index 485f4d25e6..41571dba6a 100644
--- a/boost/geometry/algorithms/detail/expand/box.hpp
+++ b/boost/geometry/algorithms/detail/expand/box.hpp
@@ -5,8 +5,8 @@
// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
// Copyright (c) 2014-2015 Samuel Debionne, Grenoble, France.
-// This file was modified by Oracle on 2015, 2016, 2017.
-// Modifications copyright (c) 2015-2017, Oracle and/or its affiliates.
+// This file was modified by Oracle on 2015, 2016, 2017, 2018.
+// Modifications copyright (c) 2015-2018, Oracle and/or its affiliates.
// Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
@@ -19,52 +19,19 @@
#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_EXPAND_BOX_HPP
#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_EXPAND_BOX_HPP
-#include <cstddef>
-#include <algorithm>
-#include <boost/mpl/assert.hpp>
-#include <boost/type_traits/is_same.hpp>
+#include <boost/geometry/algorithms/dispatch/expand.hpp>
-#include <boost/geometry/core/coordinate_dimension.hpp>
#include <boost/geometry/core/tags.hpp>
-#include <boost/geometry/algorithms/detail/envelope/box.hpp>
-#include <boost/geometry/algorithms/detail/envelope/range_of_boxes.hpp>
-
-#include <boost/geometry/algorithms/detail/expand/indexed.hpp>
-
-#include <boost/geometry/algorithms/dispatch/expand.hpp>
+// For backward compatibility
+#include <boost/geometry/strategies/cartesian/expand_box.hpp>
+#include <boost/geometry/strategies/spherical/expand_box.hpp>
namespace boost { namespace geometry
{
-#ifndef DOXYGEN_NO_DETAIL
-namespace detail { namespace expand
-{
-
-
-struct box_on_spheroid
-{
- template <typename BoxOut, typename BoxIn, typename Strategy>
- static inline void apply(BoxOut& box_out,
- BoxIn const& box_in,
- Strategy const& strategy)
- {
- // normalize both boxes and convert box-in to be of type of box-out
- BoxOut mbrs[2];
- detail::envelope::envelope_box_on_spheroid::apply(box_in, mbrs[0], strategy);
- detail::envelope::envelope_box_on_spheroid::apply(box_out, mbrs[1], strategy);
-
- // compute the envelope of the two boxes
- detail::envelope::envelope_range_of_boxes::apply(mbrs, box_out, strategy);
- }
-};
-
-
-}} // namespace detail::expand
-#endif // DOXYGEN_NO_DETAIL
-
#ifndef DOXYGEN_NO_DISPATCH
namespace dispatch
{
@@ -73,59 +40,23 @@ namespace dispatch
// Box + box -> new box containing two input boxes
template
<
- typename BoxOut, typename BoxIn,
- typename CSTagOut, typename CSTag
+ typename BoxOut, typename BoxIn
>
struct expand
<
BoxOut, BoxIn,
- box_tag, box_tag,
- CSTagOut, CSTag
+ box_tag, box_tag
>
{
- BOOST_MPL_ASSERT_MSG((false),
- NOT_IMPLEMENTED_FOR_THESE_COORDINATE_SYSTEMS,
- (types<CSTagOut, CSTag>()));
+ template <typename Strategy>
+ static inline void apply(BoxOut& box_out,
+ BoxIn const& box_in,
+ Strategy const& )
+ {
+ Strategy::apply(box_out, box_in);
+ }
};
-template <typename BoxOut, typename BoxIn>
-struct expand
- <
- BoxOut, BoxIn,
- box_tag, box_tag,
- cartesian_tag, cartesian_tag
- > : detail::expand::expand_indexed
- <
- 0, dimension<BoxIn>::value
- >
-{};
-
-template <typename BoxOut, typename BoxIn>
-struct expand
- <
- BoxOut, BoxIn,
- box_tag, box_tag,
- spherical_equatorial_tag, spherical_equatorial_tag
- > : detail::expand::box_on_spheroid
-{};
-
-template <typename BoxOut, typename BoxIn>
-struct expand
- <
- BoxOut, BoxIn,
- box_tag, box_tag,
- spherical_polar_tag, spherical_polar_tag
- > : detail::expand::box_on_spheroid
-{};
-
-template <typename BoxOut, typename BoxIn>
-struct expand
- <
- BoxOut, BoxIn,
- box_tag, box_tag,
- geographic_tag, geographic_tag
- > : detail::expand::box_on_spheroid
-{};
} // namespace dispatch