Merge branch 'develop' of github.com:boostorg/geometry into develop

This commit is contained in:
Adam Wulkiewicz
2014-04-26 03:04:40 +02:00
5 changed files with 58 additions and 10 deletions

View File

@@ -148,11 +148,11 @@ inline void difference(Geometry1 const& geometry1,
typedef typename boost::range_value<Collection>::type geometry_out;
concept::check<geometry_out>();
typedef typename geometry::rescale_policy_type
typedef typename geometry::rescale_overlay_policy_type
<
typename geometry::point_type<Geometry1>::type // TODO from both
>::type
rescale_policy_type;
Geometry1,
Geometry2
>::type rescale_policy_type;
rescale_policy_type robust_policy
= geometry::get_rescale_policy<rescale_policy_type>(geometry1, geometry2);

View File

@@ -196,9 +196,10 @@ inline bool intersection(Geometry1 const& geometry1,
concept::check<Geometry1 const>();
concept::check<Geometry2 const>();
typedef typename geometry::rescale_policy_type
typedef typename geometry::rescale_overlay_policy_type
<
typename geometry::point_type<Geometry1>::type // TODO from both
Geometry1,
Geometry2
>::type rescale_policy_type;
rescale_policy_type robust_policy

View File

@@ -156,9 +156,10 @@ inline void sym_difference(Geometry1 const& geometry1,
typedef typename boost::range_value<Collection>::type geometry_out;
concept::check<geometry_out>();
typedef typename geometry::rescale_policy_type
typedef typename geometry::rescale_overlay_policy_type
<
typename geometry::point_type<Geometry1>::type // TODO from both
Geometry1,
Geometry2
>::type rescale_policy_type;
rescale_policy_type robust_policy

View File

@@ -270,9 +270,10 @@ inline OutputIterator union_insert(Geometry1 const& geometry1,
concept::check<Geometry2 const>();
concept::check<GeometryOut>();
typedef typename geometry::rescale_policy_type
typedef typename geometry::rescale_overlay_policy_type
<
typename geometry::point_type<Geometry1>::type // TODO from both
Geometry1,
Geometry2
>::type rescale_policy_type;
typedef strategy_intersection

View File

@@ -17,6 +17,8 @@
#include <boost/type_traits.hpp>
#include <boost/geometry/core/tag_cast.hpp>
#include <boost/geometry/algorithms/envelope.hpp>
#include <boost/geometry/algorithms/expand.hpp>
#include <boost/geometry/algorithms/detail/recalculate.hpp>
@@ -221,6 +223,49 @@ struct rescale_policy_type
#endif
};
template
<
typename Geometry1,
typename Geometry2,
typename Tag1 = typename tag_cast
<
typename tag<Geometry1>::type,
pointlike_tag,
linear_tag,
areal_tag
>::type,
typename Tag2 = typename tag_cast
<
typename tag<Geometry2>::type,
pointlike_tag,
linear_tag,
areal_tag
>::type
>
struct rescale_overlay_policy_type
// Default: no rescaling
: public detail::get_rescale_policy::rescale_policy_type
<
typename geometry::point_type<Geometry1>::type,
false
>
{};
// Areal/areal: get rescale policy based on coordinate type
template
<
typename Geometry1,
typename Geometry2
>
struct rescale_overlay_policy_type<Geometry1, Geometry2, areal_tag, areal_tag>
: public rescale_policy_type
<
typename geometry::point_type<Geometry1>::type
>
{};
template <typename Policy, typename Geometry>
inline Policy get_rescale_policy(Geometry const& geometry)
{