summaryrefslogtreecommitdiff
path: root/libs/geometry
diff options
context:
space:
mode:
Diffstat (limited to 'libs/geometry')
-rw-r--r--libs/geometry/Jamfile.v221
-rw-r--r--libs/geometry/README.md17
-rw-r--r--libs/geometry/doc/Jamfile.v24
-rw-r--r--libs/geometry/doc/about_documentation.qbk2
-rw-r--r--libs/geometry/doc/compiling.qbk22
-rw-r--r--libs/geometry/doc/concept/polygon.qbk4
-rw-r--r--libs/geometry/doc/doxy/Doxyfile29
-rw-r--r--libs/geometry/doc/doxy/doxygen_input/groups/groups.hpp6
-rw-r--r--libs/geometry/doc/doxy/doxygen_input/sourcecode/boost.vsprops20
-rw-r--r--libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_1.vcproj194
-rw-r--r--libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_2.vcproj182
-rw-r--r--libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_3.vcproj182
-rw-r--r--libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_4.cpp4
-rw-r--r--libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_4.vcproj182
-rw-r--r--libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_5.vcproj182
-rw-r--r--libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_examples.sln43
-rw-r--r--libs/geometry/doc/doxy/doxygen_output/html/doxygen.css656
-rw-r--r--libs/geometry/doc/doxy/doxygen_output/html/doxygen.pngbin3942 -> 0 bytes
-rw-r--r--libs/geometry/doc/doxy/doxygen_output/html/tabs.css59
-rw-r--r--libs/geometry/doc/example_adapting_a_legacy_geometry_object_model.qbk587
-rw-r--r--libs/geometry/doc/generated/distance_status.qbk13
-rw-r--r--libs/geometry/doc/generated/equals_status.qbk10
-rw-r--r--libs/geometry/doc/geometry.qbk29
-rw-r--r--libs/geometry/doc/guidelines.qbk232
-rw-r--r--libs/geometry/doc/html/geometry/aboutdoc.html28
-rw-r--r--libs/geometry/doc/html/geometry/acknowledgments.html8
-rw-r--r--libs/geometry/doc/html/geometry/compilation.html90
-rw-r--r--libs/geometry/doc/html/geometry/design.html40
-rw-r--r--libs/geometry/doc/html/geometry/examples.html50
-rw-r--r--libs/geometry/doc/html/geometry/examples/example__adapting_a_legacy_geometry_object_model.html257
-rw-r--r--libs/geometry/doc/html/geometry/examples/example_source_code__adapting_a_legacy_geometry_object_model.html537
-rw-r--r--libs/geometry/doc/html/geometry/indexes.html18
-rw-r--r--libs/geometry/doc/html/geometry/indexes/alphabetical_index.html255
-rw-r--r--libs/geometry/doc/html/geometry/indexes/matrix.html334
-rw-r--r--libs/geometry/doc/html/geometry/introduction.html31
-rw-r--r--libs/geometry/doc/html/geometry/quickstart.html22
-rw-r--r--libs/geometry/doc/html/geometry/reference.html52
-rw-r--r--libs/geometry/doc/html/geometry/reference/access.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/exterior_ring.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1.html47
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1_const_version.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/get.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/get/get_1.html (renamed from libs/geometry/doc/html/geometry/reference/access/get/get_2.html)76
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/get/get_1_with_index.html (renamed from libs/geometry/doc/html/geometry/reference/access/get/get_2_with_index.html)52
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/get/get_as_radian.html26
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/interior_rings.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1_const_version.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/set.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/set/set_2.html (renamed from libs/geometry/doc/html/geometry/reference/access/set/set_3.html)46
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/set/set_2_with_index.html (renamed from libs/geometry/doc/html/geometry/reference/access/set/set_3_with_index.html)48
-rw-r--r--libs/geometry/doc/html/geometry/reference/access/set/set_from_radian.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_array.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_fusion.html14
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_polygon.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/point_data.html16
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_data.html45
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_with_holes_data.html57
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/rectangle_data.html35
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_range.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_range/filtered.html16
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_range/reversed.html16
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_range/sliced.html16
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_range/strided.html16
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/boost_tuple.html14
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/c_array.html14
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box.html21
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_2d_4values.html21
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_templated.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring_templated.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring.html22
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring_templated.html20
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point.html23
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point_templated.html23
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon.html22
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon_templated.html20
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d.html21
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_const.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_get_set.html20
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_const.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_get_set.html20
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring_templated.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms.html11
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/append.html81
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/area.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/area/area_1.html43
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/area/area_2_with_strategy.html47
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/assign.html12
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/assign/assign.html26
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_inverse.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_points.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_3_2_coordinate_values.html37
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_4_3_coordinate_values.html42
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html36
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_zero.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/buffer.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer_4.html (renamed from libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer.html)47
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer_7_with_strategies.html588
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/buffer/return_buffer.html64
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/centroid.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_2.html30
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_3_with_strategy.html30
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_1.html28
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_2_with_strategy.html32
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/clear.html42
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/convert.html32
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/convex_hull.html78
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/correct.html44
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/covered_by.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_2.html164
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_3_with_strategy.html170
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/crosses.html815
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/difference.html61
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/disjoint.html666
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/distance.html20
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance.html258
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance_2.html907
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance_3_with_strategy.html197
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html271
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_3_with_strategy.html34
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/envelope.html14
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/envelope/envelope.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/envelope/return_envelope.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/equals.html404
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/expand.html32
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/for_each.html22
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point.html (renamed from libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2.html)83
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2_const_version.html217
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment.html (renamed from libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2_const_version.html)53
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2.html173
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/intersection.html37
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/intersects.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_1_one_geometry.html23
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_2_two_geometries.html29
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/is_simple.html354
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/is_valid.html354
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/length.html14
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/length/length_1.html29
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/length/length_2_with_strategy.html30
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/make.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/make/make_2_2_coordinate_values.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/make/make_3_3_coordinate_values.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/make/make_inverse.html26
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/make/make_zero.html20
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/num_geometries.html32
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/num_interior_rings.html32
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/num_points.html37
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/overlaps.html678
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/perimeter.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_1.html26
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_2_with_strategy.html26
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/reverse.html28
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/simplify.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_3.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_4_with_strategy.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/sym_difference.html57
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/touches.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_1_one_geometry.html22
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_2_two_geometries.html22
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/transform.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_2.html28
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_3_with_strategy.html28
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/union_.html59
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/unique.html28
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/within.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html170
-rw-r--r--libs/geometry/doc/html/geometry/reference/algorithms/within/within_3_with_strategy.html172
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic/add_point.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic/add_value.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic/assign_point.html45
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic/assign_value.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic/divide_point.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic/divide_value.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic/dot_product.html32
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic/multiply_point.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic/multiply_value.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic/subtract_point.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/arithmetic/subtract_value.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/concepts.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/concepts/concept_box.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/concepts/concept_linestring.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/concepts/concept_multi_linestring.html16
-rw-r--r--libs/geometry/doc/html/geometry/reference/concepts/concept_multi_point.html16
-rw-r--r--libs/geometry/doc/html/geometry/reference/concepts/concept_multi_polygon.html20
-rw-r--r--libs/geometry/doc/html/geometry/reference/concepts/concept_point.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html25
-rw-r--r--libs/geometry/doc/html/geometry/reference/concepts/concept_ring.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/concepts/concept_segment.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/constants.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/constants/max_corner.html22
-rw-r--r--libs/geometry/doc/html/geometry/reference/constants/min_corner.html22
-rw-r--r--libs/geometry/doc/html/geometry/reference/core.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/closure.html31
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/coordinate_system.html27
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/coordinate_type.html27
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/cs_tag.html23
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/degree.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/dimension.html28
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/interior_type.html31
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/is_radian.html20
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/point_order.html31
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/point_type.html29
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/radian.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/ring_type.html31
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/tag.html30
-rw-r--r--libs/geometry/doc/html/geometry/reference/core/tag_cast.html27
-rw-r--r--libs/geometry/doc/html/geometry/reference/cs.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/cs/cs_cartesian.html16
-rw-r--r--libs/geometry/doc/html/geometry/reference/cs/cs_geographic.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/cs/cs_spherical.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/cs/cs_spherical_equatorial.html18
-rw-r--r--libs/geometry/doc/html/geometry/reference/enumerations.html17
-rw-r--r--libs/geometry/doc/html/geometry/reference/enumerations/buffer_side_selector.html117
-rw-r--r--libs/geometry/doc/html/geometry/reference/enumerations/closure_selector.html41
-rw-r--r--libs/geometry/doc/html/geometry/reference/enumerations/join_selector.html128
-rw-r--r--libs/geometry/doc/html/geometry/reference/enumerations/order_selector.html41
-rw-r--r--libs/geometry/doc/html/geometry/reference/enumerations/piece_type.html148
-rw-r--r--libs/geometry/doc/html/geometry/reference/exceptions.html14
-rw-r--r--libs/geometry/doc/html/geometry/reference/exceptions/centroid_exception.html42
-rw-r--r--libs/geometry/doc/html/geometry/reference/exceptions/exception.html14
-rw-r--r--libs/geometry/doc/html/geometry/reference/io.html48
-rw-r--r--libs/geometry/doc/html/geometry/reference/io/svg.html48
-rw-r--r--libs/geometry/doc/html/geometry/reference/io/svg/svg.html171
-rw-r--r--libs/geometry/doc/html/geometry/reference/io/svg/svg_mapper.html431
-rw-r--r--libs/geometry/doc/html/geometry/reference/io/wkt.html98
-rw-r--r--libs/geometry/doc/html/geometry/reference/io/wkt/read_wkt.html206
-rw-r--r--libs/geometry/doc/html/geometry/reference/io/wkt/wkt.html198
-rw-r--r--libs/geometry/doc/html/geometry/reference/iterators.html14
-rw-r--r--libs/geometry/doc/html/geometry/reference/iterators/closing_iterator.html22
-rw-r--r--libs/geometry/doc/html/geometry/reference/iterators/ever_circling_iterator.html25
-rw-r--r--libs/geometry/doc/html/geometry/reference/models.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/models/model_box.html29
-rw-r--r--libs/geometry/doc/html/geometry/reference/models/model_d2_point_xy.html31
-rw-r--r--libs/geometry/doc/html/geometry/reference/models/model_linestring.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/models/model_multi_linestring.html30
-rw-r--r--libs/geometry/doc/html/geometry/reference/models/model_multi_point.html30
-rw-r--r--libs/geometry/doc/html/geometry/reference/models/model_multi_polygon.html30
-rw-r--r--libs/geometry/doc/html/geometry/reference/models/model_point.html29
-rw-r--r--libs/geometry/doc/html/geometry/reference/models/model_polygon.html32
-rw-r--r--libs/geometry/doc/html/geometry/reference/models/model_referring_segment.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/models/model_ring.html22
-rw-r--r--libs/geometry/doc/html/geometry/reference/models/model_segment.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes.html59
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree.html990
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/_rtree__.html61
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/bounds__.html86
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/clear__.html61
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/count_valueorindexable_const___.html134
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/empty__.html77
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/get_allocator__.html77
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/indexable_get__.html77
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_convertibleorrange_const___.html127
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_iterator__iterator_.html144
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_value_type_const___.html125
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree____.html123
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree_const___.html123
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/parameters__.html77
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/qbegin_predicates_const___.html149
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/qend__.html101
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/query_predicates_const____outiter_.html266
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_convertibleorrange_const___.html145
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_iterator__iterator_.html162
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_value_type_const___.html141
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree__.html156
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_iterator__iterator_.html219
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html168
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_range_const___.html211
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree____.html115
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_____allocator_type_const___.html144
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const___.html123
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const____allocator_type_const___.html143
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/size__.html77
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/swap_rtree___.html115
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/value_eq__.html77
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__adaptors.html82
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__adaptors/queried_predicates_const___.html101
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__inserters.html81
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__inserters/inserter_container___.html117
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates.html215
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/contains_geometry_const___.html156
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/covered_by_geometry_const___.html156
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/covers_geometry_const___.html156
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/disjoint_geometry_const___.html156
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/intersects_geometry_const___.html158
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/nearest_geometry_const____unsigned_.html157
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/overlaps_geometry_const___.html156
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/satisfies_unarypredicate_const___.html172
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/within_geometry_const___.html156
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions.html294
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/bounds_rtree______const___.html126
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/clear_rtree________.html118
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/empty_rtree______const___.html125
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________convertibleorrange_const___.html142
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________iterator__iterator_.html158
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________value_const___.html139
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/qbegin_rtree______const____predicates_const___.html170
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/qend_rtree______const___.html98
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/query_rtree______const____predicates_const____outiter_.html287
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________convertibleorrange_const___.html155
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________iterator__iterator_.html171
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________value_const___.html150
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/size_rtree______const___.html125
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/swap_rtree_________rtree________.html143
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/observers.html49
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/observers/boost__geometry__index__equal_to.html285
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/observers/boost__geometry__index__indexable.html264
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters.html53
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_linear.html175
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_quadratic.html175
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_rstar.html220
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__linear.html114
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__quadratic.html114
-rw-r--r--libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__rstar.html148
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies.html25
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_area_huiller.html34
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_area_surveyor.html25
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_distance_asymmetric.html223
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_distance_symmetric.html219
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_end_flat.html145
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_end_round.html193
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_join_miter.html197
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_join_round.html192
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_point_circle.html193
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_point_square.html146
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_side_straight.html92
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_average.html38
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_bashein_detmer.html41
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_convex_hull_graham_andrew.html27
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_cross_track.html76
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_haversine.html61
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_projected_point.html61
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras.html72
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras_box_box.html204
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras_point_box.html204
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_cross_track.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_triangle.html51
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_side_spherical_side_formula.html19
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_simplify_douglas_peucker.html28
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_inverse_transformer.html38
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_map_transformer.html68
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_rotate_transformer.html47
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_scale_transformer.html59
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_translate_transformer.html56
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_ublas_transformer.html40
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_within_crossings_multiply.html24
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_within_franklin.html26
-rw-r--r--libs/geometry/doc/html/geometry/reference/strategies/strategy_within_winding.html26
-rw-r--r--libs/geometry/doc/html/geometry/reference/views.html8
-rw-r--r--libs/geometry/doc/html/geometry/reference/views/box_view.html27
-rw-r--r--libs/geometry/doc/html/geometry/reference/views/closeable_view.html25
-rw-r--r--libs/geometry/doc/html/geometry/reference/views/identity_view.html42
-rw-r--r--libs/geometry/doc/html/geometry/reference/views/reversible_view.html23
-rw-r--r--libs/geometry/doc/html/geometry/reference/views/segment_view.html27
-rw-r--r--libs/geometry/doc/html/geometry/release_notes.html555
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes.html75
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/creation_and_modification.html410
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/introduction.html400
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/queries.html642
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples.html67
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_iterators_of_a_map_storing_variant_geometries.html218
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_polygons_stored_in_vector.html171
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_shared_pointers_to_polygons.html163
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_stored_in_mapped_file_using_boost_interprocess.html112
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_stored_in_shared_memory_using_boost_interprocess.html177
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/iterative_query.html112
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/quick_start.html133
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/range_adaptors.html122
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html163
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html170
-rw-r--r--libs/geometry/doc/html/geometry/spatial_indexes/rtree_quickstart.html179
-rw-r--r--libs/geometry/doc/html/geometry_HTML.manifest148
-rw-r--r--libs/geometry/doc/html/img/algorithms/buffer_linestring.pngbin0 -> 20016 bytes
-rw-r--r--libs/geometry/doc/html/img/algorithms/buffer_multi_point.pngbin0 -> 14720 bytes
-rw-r--r--libs/geometry/doc/html/img/algorithms/buffer_multi_polygon.pngbin0 -> 17897 bytes
-rw-r--r--libs/geometry/doc/html/img/algorithms/buffer_strategies.pngbin0 -> 23706 bytes
-rw-r--r--libs/geometry/doc/html/img/algorithms/buffer_strategies.svg412
-rw-r--r--libs/geometry/doc/html/img/algorithms/is_simple_example.pngbin0 -> 2178 bytes
-rw-r--r--libs/geometry/doc/html/img/algorithms/is_valid_example.pngbin0 -> 6577 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/build_non_ovl.pngbin0 -> 21818 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/build_ovl.pngbin0 -> 21274 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/bulk.pngbin0 -> 2046 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/disjoint.pngbin0 -> 2223 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/intersects.pngbin0 -> 2228 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/intersects_linestring.pngbin0 -> 2753 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/intersects_mpoly.pngbin0 -> 2687 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/intersects_poly.pngbin0 -> 2654 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/intersects_ring.pngbin0 -> 2641 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/intersects_segment.pngbin0 -> 2228 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/knn.pngbin0 -> 2774 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/knn_box_box.pngbin0 -> 2189 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/knn_pt_box.pngbin0 -> 2174 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/knn_seg_box.pngbin0 -> 2304 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/linear.pngbin0 -> 2204 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/overlaps.pngbin0 -> 2209 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/path.pngbin0 -> 2840 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/quadratic.pngbin0 -> 2096 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/query_non_ovl.pngbin0 -> 26830 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/query_ovl.pngbin0 -> 27056 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rstar.pngbin0 -> 2079 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_pt.pngbin0 -> 2643 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_pt_disjoint_box.pngbin0 -> 2857 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_pt_intersects_box.pngbin0 -> 2817 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_box.pngbin0 -> 2749 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_pt.pngbin0 -> 2744 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_seg.pngbin0 -> 3033 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_seg.pngbin0 -> 3495 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_seg_disjoint_box.pngbin0 -> 3629 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_seg_intersects_box.pngbin0 -> 3703 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_box.pngbin0 -> 3625 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_pt.pngbin0 -> 3576 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_seg.pngbin0 -> 3805 bytes
-rw-r--r--libs/geometry/doc/html/img/index/rtree/within.pngbin0 -> 2208 bytes
-rw-r--r--libs/geometry/doc/html/img/io/svg_mapper.pngbin0 -> 12582 bytes
-rw-r--r--libs/geometry/doc/html/img/strategies/buffer_distance_asymmetric.pngbin0 -> 23484 bytes
-rw-r--r--libs/geometry/doc/html/img/strategies/buffer_distance_symmetric.pngbin0 -> 24580 bytes
-rw-r--r--libs/geometry/doc/html/img/strategies/buffer_end_flat.pngbin0 -> 23619 bytes
-rw-r--r--libs/geometry/doc/html/img/strategies/buffer_end_round.pngbin0 -> 22622 bytes
-rw-r--r--libs/geometry/doc/html/img/strategies/buffer_join_miter.pngbin0 -> 13418 bytes
-rw-r--r--libs/geometry/doc/html/img/strategies/buffer_join_round.pngbin0 -> 13655 bytes
-rw-r--r--libs/geometry/doc/html/img/strategies/buffer_point_circle.pngbin0 -> 14517 bytes
-rw-r--r--libs/geometry/doc/html/img/strategies/buffer_point_square.pngbin0 -> 3768 bytes
-rw-r--r--libs/geometry/doc/html/index.html73
-rw-r--r--libs/geometry/doc/imports.qbk22
-rw-r--r--libs/geometry/doc/index/Doxyfile331
-rw-r--r--libs/geometry/doc/index/Jamfile.v232
-rw-r--r--libs/geometry/doc/index/generated/dummy1
-rw-r--r--libs/geometry/doc/index/imports.qbk20
-rw-r--r--libs/geometry/doc/index/index.qbk43
-rw-r--r--libs/geometry/doc/index/introduction.qbk124
-rwxr-xr-xlibs/geometry/doc/index/make_qbk.py50
-rw-r--r--libs/geometry/doc/index/rtree.qbk21
-rw-r--r--libs/geometry/doc/index/rtree/creation.qbk233
-rw-r--r--libs/geometry/doc/index/rtree/examples.qbk74
-rw-r--r--libs/geometry/doc/index/rtree/exception_safety.qbk57
-rw-r--r--libs/geometry/doc/index/rtree/experimental.qbk111
-rw-r--r--libs/geometry/doc/index/rtree/introduction.qbk68
-rw-r--r--libs/geometry/doc/index/rtree/query.qbk245
-rw-r--r--libs/geometry/doc/index/rtree/quickstart.qbk59
-rw-r--r--libs/geometry/doc/index/rtree/reference.qbk40
-rw-r--r--libs/geometry/doc/index/src/examples/Jamfile.v219
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/Jamfile.v243
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/interprocess.cpp112
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/interprocess_results.qbk34
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/iterative_query.cpp65
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/iterative_query_results.qbk16
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/mapped_file.cpp66
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/mapped_file_results.qbk15
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/polygons_shared_ptr.cpp93
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/polygons_shared_ptr_results.qbk39
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/polygons_vector.cpp101
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/polygons_vector_results.qbk39
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/quick_start.cpp89
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/quick_start_results.qbk28
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/range_adaptors.cpp79
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/range_adaptors_results.qbk11
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/value_index.cpp99
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/value_index_results.qbk39
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/value_shared_ptr.cpp93
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/value_shared_ptr_results.qbk39
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/variants_map.cpp148
-rw-r--r--libs/geometry/doc/index/src/examples/rtree/variants_map_results.qbk39
-rw-r--r--libs/geometry/doc/introduction.qbk16
-rwxr-xr-xlibs/geometry/doc/make_qbk.py66
-rw-r--r--libs/geometry/doc/matrix.qbk2
-rw-r--r--libs/geometry/doc/other/logo/DENMARK.TTFbin0 -> 33524 bytes
-rw-r--r--libs/geometry/doc/other/logo/favicon.icobin0 -> 1150 bytes
-rw-r--r--libs/geometry/doc/other/logo/logo.svg12415
-rw-r--r--libs/geometry/doc/other/logo/logo128x128.pngbin0 -> 7623 bytes
-rw-r--r--libs/geometry/doc/other/logo/logo16x16.pngbin0 -> 897 bytes
-rw-r--r--libs/geometry/doc/other/logo/logo400x400.pngbin0 -> 31396 bytes
-rw-r--r--libs/geometry/doc/other/logo/logo64x64.pngbin0 -> 3375 bytes
-rw-r--r--libs/geometry/doc/other/logo/logo_bkg.pngbin0 -> 13100 bytes
-rw-r--r--libs/geometry/doc/quickbook/quickref.xml739
-rw-r--r--libs/geometry/doc/quickref.xml219
-rw-r--r--libs/geometry/doc/readme.txt7
-rw-r--r--libs/geometry/doc/reference.qbk68
-rw-r--r--libs/geometry/doc/reference/algorithms/append.qbk29
-rw-r--r--libs/geometry/doc/reference/algorithms/area.qbk2
-rw-r--r--libs/geometry/doc/reference/algorithms/buffer_with_strategies.qbk70
-rw-r--r--libs/geometry/doc/reference/algorithms/centroid.qbk1
-rw-r--r--libs/geometry/doc/reference/algorithms/clear.qbk2
-rw-r--r--libs/geometry/doc/reference/algorithms/comparable_distance.qbk10
-rw-r--r--libs/geometry/doc/reference/algorithms/convert.qbk2
-rw-r--r--libs/geometry/doc/reference/algorithms/convex_hull.qbk4
-rw-r--r--libs/geometry/doc/reference/algorithms/correct.qbk2
-rw-r--r--libs/geometry/doc/reference/algorithms/covered_by.qbk4
-rw-r--r--libs/geometry/doc/reference/algorithms/crosses.qbk22
-rw-r--r--libs/geometry/doc/reference/algorithms/difference_behavior.qbk9
-rw-r--r--libs/geometry/doc/reference/algorithms/disjoint.qbk1
-rw-r--r--libs/geometry/doc/reference/algorithms/distance.qbk8
-rw-r--r--libs/geometry/doc/reference/algorithms/equals.qbk2
-rw-r--r--libs/geometry/doc/reference/algorithms/intersection.qbk13
-rw-r--r--libs/geometry/doc/reference/algorithms/intersects.qbk3
-rw-r--r--libs/geometry/doc/reference/algorithms/is_simple.qbk30
-rw-r--r--libs/geometry/doc/reference/algorithms/is_valid.qbk32
-rw-r--r--libs/geometry/doc/reference/algorithms/num_points.qbk2
-rw-r--r--libs/geometry/doc/reference/algorithms/num_segments.qbk32
-rw-r--r--libs/geometry/doc/reference/algorithms/overlaps.qbk1
-rw-r--r--libs/geometry/doc/reference/algorithms/touches.qbk2
-rw-r--r--libs/geometry/doc/reference/algorithms/union.qbk13
-rw-r--r--libs/geometry/doc/reference/algorithms/within.qbk2
-rw-r--r--libs/geometry/doc/reference/core/max_corner.qbk4
-rw-r--r--libs/geometry/doc/reference/core/min_corner.qbk4
-rw-r--r--libs/geometry/doc/reference/core/min_max_corner.qbk2
-rw-r--r--libs/geometry/doc/reference/geometries/adapted/boost_polygon/point_data.qbk11
-rw-r--r--libs/geometry/doc/reference/geometries/adapted/boost_polygon/polygon_data.qbk13
-rw-r--r--libs/geometry/doc/reference/geometries/adapted/boost_polygon/polygon_with_holes_data.qbk13
-rw-r--r--libs/geometry/doc/reference/geometries/adapted/boost_polygon/rectangle_data.qbk13
-rw-r--r--libs/geometry/doc/reference/io/read_wkt.qbk22
-rw-r--r--libs/geometry/doc/reference/io/svg.qbk16
-rw-r--r--libs/geometry/doc/reference/io/wkt.qbk22
-rw-r--r--libs/geometry/doc/reference/io/wkt_format.qbk29
-rw-r--r--libs/geometry/doc/reference/status/append_status.qbk (renamed from libs/geometry/doc/generated/append_status.qbk)5
-rw-r--r--libs/geometry/doc/reference/status/area_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/buffer_status.qbk (renamed from libs/geometry/doc/generated/covered_by_status.qbk)8
-rw-r--r--libs/geometry/doc/reference/status/centroid_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/clear_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/convert_status.qbk (renamed from libs/geometry/doc/generated/convert_status.qbk)0
-rw-r--r--libs/geometry/doc/reference/status/convex_hull_status.qbk (renamed from libs/geometry/doc/generated/convex_hull_status.qbk)0
-rw-r--r--libs/geometry/doc/reference/status/correct_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/covered_by_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/crosses_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/disjoint_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/distance_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/envelope_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/equals_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/expand_status.qbk (renamed from libs/geometry/doc/generated/within_status.qbk)12
-rw-r--r--libs/geometry/doc/reference/status/for_each_point_status.qbk13
-rw-r--r--libs/geometry/doc/reference/status/for_each_segment_status.qbk13
-rw-r--r--libs/geometry/doc/reference/status/intersects_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/is_simple_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/is_valid_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/length_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/num_geometries_status.qbk (renamed from libs/geometry/doc/generated/area_status.qbk)0
-rw-r--r--libs/geometry/doc/reference/status/num_interior_rings_status.qbk (renamed from libs/geometry/doc/generated/clear_status.qbk)0
-rw-r--r--libs/geometry/doc/reference/status/num_points_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/overlaps_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/perimeter_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/reverse_status.qbk (renamed from libs/geometry/doc/generated/correct_status.qbk)0
-rw-r--r--libs/geometry/doc/reference/status/simplify_status.qbk13
-rw-r--r--libs/geometry/doc/reference/status/transform_status.qbk13
-rw-r--r--libs/geometry/doc/reference/status/unique_status.qbk13
-rw-r--r--libs/geometry/doc/reference/status/within_status.qbk14
-rw-r--r--libs/geometry/doc/reference/status/wkt_status.qbk13
-rw-r--r--libs/geometry/doc/release_notes.qbk185
-rw-r--r--libs/geometry/doc/robustness.qbk47
-rw-r--r--libs/geometry/doc/src/copyright_block.qbk6
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/configuration.hpp13
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/license.txt52
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/manual.html406
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml.hpp2596
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_iterators.hpp174
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_print.hpp421
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_utils.hpp122
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_elements.hpp45
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml2qbk.cpp125
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml_parser.hpp273
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/file_to_string.hpp3
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/parameter_predicates.hpp3
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/quickbook_output.hpp967
-rw-r--r--libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/rapidxml_util.hpp3
-rw-r--r--libs/geometry/doc/src/docutils/tools/implementation_status/implementation_status.cpp179
-rw-r--r--libs/geometry/doc/src/docutils/tools/implementation_status/implementation_status.hpp5
-rw-r--r--libs/geometry/doc/src/docutils/tools/support_status/Jamfile.v226
-rw-r--r--libs/geometry/doc/src/docutils/tools/support_status/qbk_outputter.hpp16
-rw-r--r--libs/geometry/doc/src/docutils/tools/support_status/support_status.cpp88
-rw-r--r--libs/geometry/doc/src/examples/Jamfile.v22
-rw-r--r--libs/geometry/doc/src/examples/algorithms/Jamfile.v26
-rw-r--r--libs/geometry/doc/src/examples/algorithms/area.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/area_with_strategy.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/assign.cpp4
-rw-r--r--libs/geometry/doc/src/examples/algorithms/buffer_with_strategies.cpp70
-rw-r--r--libs/geometry/doc/src/examples/algorithms/centroid.cpp2
-rw-r--r--libs/geometry/doc/src/examples/algorithms/comparable_distance.cpp10
-rw-r--r--libs/geometry/doc/src/examples/algorithms/convert.cpp4
-rw-r--r--libs/geometry/doc/src/examples/algorithms/convex_hull.cpp2
-rw-r--r--libs/geometry/doc/src/examples/algorithms/create_svg_one.hpp49
-rw-r--r--libs/geometry/doc/src/examples/algorithms/create_svg_overlay.hpp4
-rw-r--r--libs/geometry/doc/src/examples/algorithms/create_svg_two.hpp2
-rw-r--r--libs/geometry/doc/src/examples/algorithms/difference.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/difference_inserter.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/distance.cpp8
-rw-r--r--libs/geometry/doc/src/examples/algorithms/envelope.cpp2
-rw-r--r--libs/geometry/doc/src/examples/algorithms/equals.cpp14
-rw-r--r--libs/geometry/doc/src/examples/algorithms/for_each_point.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/for_each_point_const.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/intersection_ls_ls_point.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/intersection_poly_poly.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/intersection_segment.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/intersects_linestring.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/intersects_segment.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/is_simple.cpp51
-rw-r--r--libs/geometry/doc/src/examples/algorithms/is_valid.cpp49
-rw-r--r--libs/geometry/doc/src/examples/algorithms/length.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/length_with_strategy.cpp2
-rw-r--r--libs/geometry/doc/src/examples/algorithms/num_geometries.cpp4
-rw-r--r--libs/geometry/doc/src/examples/algorithms/num_interior_rings.cpp4
-rw-r--r--libs/geometry/doc/src/examples/algorithms/num_points.cpp5
-rw-r--r--libs/geometry/doc/src/examples/algorithms/num_segments.cpp44
-rw-r--r--libs/geometry/doc/src/examples/algorithms/simplify_insert_with_strategy.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/sym_difference.cpp3
-rw-r--r--libs/geometry/doc/src/examples/algorithms/transform.cpp10
-rw-r--r--libs/geometry/doc/src/examples/algorithms/transform_with_strategy.cpp12
-rw-r--r--libs/geometry/doc/src/examples/algorithms/union.cpp1
-rw-r--r--libs/geometry/doc/src/examples/algorithms/within.cpp2
-rw-r--r--libs/geometry/doc/src/examples/core/closure.cpp4
-rw-r--r--libs/geometry/doc/src/examples/core/coordinate_dimension.cpp2
-rw-r--r--libs/geometry/doc/src/examples/core/coordinate_system.cpp2
-rw-r--r--libs/geometry/doc/src/examples/core/coordinate_type.cpp2
-rw-r--r--libs/geometry/doc/src/examples/core/degree_radian.cpp4
-rw-r--r--libs/geometry/doc/src/examples/core/interior_type.cpp4
-rw-r--r--libs/geometry/doc/src/examples/core/point_order.cpp2
-rw-r--r--libs/geometry/doc/src/examples/core/point_type.cpp2
-rw-r--r--libs/geometry/doc/src/examples/core/ring_type.cpp12
-rw-r--r--libs/geometry/doc/src/examples/core/rings.cpp18
-rw-r--r--libs/geometry/doc/src/examples/core/tag.cpp18
-rw-r--r--libs/geometry/doc/src/examples/core/tag_cast.cpp2
-rw-r--r--libs/geometry/doc/src/examples/examples_utils/create_svg_buffer.hpp49
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/Jamfile.v25
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_array.cpp8
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_fusion.cpp8
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_box.cpp42
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_point.cpp (renamed from libs/geometry/doc/src/examples/geometries/adapted/boost_polygon.cpp)11
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_polygon.cpp64
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_ring.cpp52
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_range/filtered.cpp4
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_range/reversed.cpp6
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_range/sliced.cpp6
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_range/strided.cpp6
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_range/uniqued.cpp6
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/boost_tuple.cpp8
-rw-r--r--libs/geometry/doc/src/examples/geometries/adapted/c_array.cpp4
-rw-r--r--libs/geometry/doc/src/examples/geometries/register/linestring.cpp12
-rw-r--r--libs/geometry/doc/src/examples/geometries/register/linestring_templated.cpp6
-rw-r--r--libs/geometry/doc/src/examples/geometries/register/multi_linestring.cpp8
-rw-r--r--libs/geometry/doc/src/examples/geometries/register/multi_point.cpp7
-rw-r--r--libs/geometry/doc/src/examples/geometries/register/multi_point_templated.cpp7
-rw-r--r--libs/geometry/doc/src/examples/geometries/register/multi_polygon.cpp8
-rw-r--r--libs/geometry/doc/src/examples/geometries/register/ring.cpp6
-rw-r--r--libs/geometry/doc/src/examples/geometries/register/ring_templated.cpp6
-rw-r--r--libs/geometry/doc/src/examples/io/Jamfile.v219
-rw-r--r--libs/geometry/doc/src/examples/io/read_wkt.cpp38
-rw-r--r--libs/geometry/doc/src/examples/io/svg.cpp65
-rw-r--r--libs/geometry/doc/src/examples/io/wkt.cpp51
-rw-r--r--libs/geometry/doc/src/examples/quick_start.cpp12
-rw-r--r--libs/geometry/doc/src/examples/strategies/Jamfile.v221
-rw-r--r--libs/geometry/doc/src/examples/strategies/buffer_distance_asymmetric.cpp48
-rw-r--r--libs/geometry/doc/src/examples/strategies/buffer_distance_symmetric.cpp48
-rw-r--r--libs/geometry/doc/src/examples/strategies/buffer_end_flat.cpp48
-rw-r--r--libs/geometry/doc/src/examples/strategies/buffer_end_round.cpp48
-rw-r--r--libs/geometry/doc/src/examples/strategies/buffer_join_miter.cpp47
-rw-r--r--libs/geometry/doc/src/examples/strategies/buffer_join_round.cpp47
-rw-r--r--libs/geometry/doc/src/examples/strategies/buffer_point_circle.cpp47
-rw-r--r--libs/geometry/doc/src/examples/strategies/buffer_point_square.cpp48
-rw-r--r--libs/geometry/doc/src/examples/views/box_view.cpp14
-rw-r--r--libs/geometry/doc/src/examples/views/segment_view.cpp14
-rw-r--r--libs/geometry/example/01_point_example.cpp5
-rw-r--r--libs/geometry/example/03_polygon_example.cpp2
-rw-r--r--libs/geometry/example/05_a_overlay_polygon_example.cpp2
-rw-r--r--libs/geometry/example/05_b_overlay_linestring_polygon_example.cpp8
-rw-r--r--libs/geometry/example/06_a_transformation_example.cpp2
-rw-r--r--libs/geometry/example/06_b_transformation_example.cpp10
-rw-r--r--libs/geometry/example/07_a_graph_route_example.cpp30
-rw-r--r--libs/geometry/example/07_b_graph_route_example.cpp27
-rw-r--r--libs/geometry/example/boost.vsprops20
-rw-r--r--libs/geometry/example/c04_b_custom_triangle_example.cpp7
-rw-r--r--libs/geometry/example/c08_custom_non_std_example.cpp74
-rw-r--r--libs/geometry/example/c10_custom_cs_example.cpp22
-rw-r--r--libs/geometry/example/c11_custom_cs_transform_example.cpp38
-rw-r--r--libs/geometry/example/ml01_multipolygon_simplify.cpp2
-rw-r--r--libs/geometry/example/ml01_multipolygon_simplify.vcproj171
-rw-r--r--libs/geometry/example/ml02_distance_strategy.cpp72
-rw-r--r--libs/geometry/example/ml02_distance_strategy.vcproj171
-rw-r--r--libs/geometry/example/with_external_libs/gd.vsprops16
-rw-r--r--libs/geometry/example/with_external_libs/postgresql.vsprops20
-rw-r--r--libs/geometry/example/with_external_libs/qt.vsprops22
-rw-r--r--libs/geometry/example/with_external_libs/shapelib.vsprops15
-rw-r--r--libs/geometry/example/with_external_libs/soci.vsprops16
-rw-r--r--libs/geometry/example/with_external_libs/wxwidgets.vsprops20
-rw-r--r--libs/geometry/example/with_external_libs/x01_qt_example.sln19
-rw-r--r--libs/geometry/example/with_external_libs/x01_qt_example.vcproj176
-rw-r--r--libs/geometry/example/with_external_libs/x02_gd_example.cpp2
-rw-r--r--libs/geometry/example/with_external_libs/x02_gd_example.sln20
-rw-r--r--libs/geometry/example/with_external_libs/x02_gd_example.vcproj236
-rw-r--r--libs/geometry/example/with_external_libs/x03_a_soci_example.vcproj744
-rw-r--r--libs/geometry/example/with_external_libs/x03_b_soci_example.vcproj744
-rw-r--r--libs/geometry/example/with_external_libs/x03_c_soci_example.vcproj744
-rw-r--r--libs/geometry/example/with_external_libs/x03_d_soci_example.vcproj744
-rw-r--r--libs/geometry/example/with_external_libs/x03_soci_examples.sln37
-rw-r--r--libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.cpp12
-rw-r--r--libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.sln19
-rw-r--r--libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.vcproj217
-rw-r--r--libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper_readme.txt10
-rw-r--r--libs/geometry/example/with_external_libs/x05_shapelib_example.sln19
-rw-r--r--libs/geometry/example/with_external_libs/x05_shapelib_example.vcproj202
-rw-r--r--libs/geometry/example/with_external_libs/x06_qt_world_mapper.cpp4
-rw-r--r--libs/geometry/example/with_external_libs/x06_qt_world_mapper.sln19
-rw-r--r--libs/geometry/example/with_external_libs/x06_qt_world_mapper.vcproj180
-rw-r--r--libs/geometry/example/with_external_libs/x06_qt_world_mapper_readme.txt8
-rw-r--r--libs/geometry/index/Jamfile.v218
-rw-r--r--libs/geometry/index/example/3d_benchmark.cpp161
-rw-r--r--libs/geometry/index/example/Jamfile.v255
-rw-r--r--libs/geometry/index/example/benchmark.cpp158
-rw-r--r--libs/geometry/index/example/benchmark2.cpp86
-rw-r--r--libs/geometry/index/example/benchmark3.cpp99
-rw-r--r--libs/geometry/index/example/benchmark_experimental.cpp470
-rw-r--r--libs/geometry/index/example/glut_vis.cpp1094
-rw-r--r--libs/geometry/index/example/random_test.cpp185
-rw-r--r--libs/geometry/index/example/serialize.cpp168
-rw-r--r--libs/geometry/index/test/Jamfile.v227
-rw-r--r--libs/geometry/index/test/algorithms/Jamfile.v220
-rw-r--r--libs/geometry/index/test/algorithms/content.cpp71
-rw-r--r--libs/geometry/index/test/algorithms/intersection_content.cpp70
-rw-r--r--libs/geometry/index/test/algorithms/is_valid.cpp110
-rw-r--r--libs/geometry/index/test/algorithms/margin.cpp66
-rw-r--r--libs/geometry/index/test/algorithms/minmaxdist.cpp101
-rw-r--r--libs/geometry/index/test/algorithms/path_intersection.cpp133
-rw-r--r--libs/geometry/index/test/algorithms/segment_intersection.cpp129
-rw-r--r--libs/geometry/index/test/algorithms/test_content.hpp49
-rw-r--r--libs/geometry/index/test/algorithms/test_intersection_content.hpp47
-rw-r--r--libs/geometry/index/test/algorithms/test_margin.hpp48
-rw-r--r--libs/geometry/index/test/algorithms/test_union_content.hpp47
-rw-r--r--libs/geometry/index/test/algorithms/union_content.cpp70
-rw-r--r--libs/geometry/index/test/geometry_index_test_common.hpp28
-rw-r--r--libs/geometry/index/test/movable.hpp92
-rw-r--r--libs/geometry/index/test/rtree/Jamfile.v217
-rw-r--r--libs/geometry/index/test/rtree/exceptions/Jamfile.v226
-rw-r--r--libs/geometry/index/test/rtree/exceptions/rtree_exceptions_lin.cpp20
-rw-r--r--libs/geometry/index/test/rtree/exceptions/rtree_exceptions_qua.cpp20
-rw-r--r--libs/geometry/index/test/rtree/exceptions/rtree_exceptions_rst.cpp20
-rw-r--r--libs/geometry/index/test/rtree/exceptions/test_exceptions.hpp193
-rw-r--r--libs/geometry/index/test/rtree/exceptions/test_throwing.hpp161
-rw-r--r--libs/geometry/index/test/rtree/exceptions/test_throwing_node.hpp318
-rw-r--r--libs/geometry/index/test/rtree/generated/Jamfile.v227
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_add_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_add_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_add_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_add_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_add_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_mod_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_mod_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_mod_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_mod_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_mod_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_que_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_que_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_que_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_que_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dlin_que_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_add_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_add_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_add_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_add_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_add_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_mod_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_mod_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_mod_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_mod_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_mod_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_que_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_que_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_que_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_que_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_dqua_que_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_add_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_add_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_add_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_add_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_add_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_mod_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_mod_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_mod_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_mod_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_mod_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_que_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_que_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_que_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_que_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_drst_que_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_add_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_add_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_add_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_add_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_add_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_mod_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_mod_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_mod_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_mod_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_mod_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_que_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_que_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_que_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_que_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_lin_que_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_add_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_add_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_add_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_add_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_add_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_mod_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_mod_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_mod_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_mod_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_mod_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_que_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_que_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_que_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_que_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_qua_que_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_add_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_add_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_add_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_add_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_add_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_mod_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_mod_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_mod_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_mod_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_mod_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_que_b2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_que_b3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_que_p2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_que_p3d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/generated/rtree_rst_que_s2d.cpp17
-rw-r--r--libs/geometry/index/test/rtree/interprocess/Jamfile.v232
-rw-r--r--libs/geometry/index/test/rtree/interprocess/rtree_interprocess_linear.cpp19
-rw-r--r--libs/geometry/index/test/rtree/interprocess/rtree_interprocess_linear_dyn.cpp19
-rw-r--r--libs/geometry/index/test/rtree/interprocess/rtree_interprocess_quadratic.cpp19
-rw-r--r--libs/geometry/index/test/rtree/interprocess/rtree_interprocess_quadratic_dyn.cpp19
-rw-r--r--libs/geometry/index/test/rtree/interprocess/rtree_interprocess_rstar.cpp19
-rw-r--r--libs/geometry/index/test/rtree/interprocess/rtree_interprocess_rstar_dyn.cpp19
-rw-r--r--libs/geometry/index/test/rtree/interprocess/test_interprocess.hpp101
-rw-r--r--libs/geometry/index/test/rtree/rtree_test_generator.cpp111
-rw-r--r--libs/geometry/index/test/rtree/rtree_values.cpp84
-rw-r--r--libs/geometry/index/test/rtree/rtree_values_invalid.cpp31
-rw-r--r--libs/geometry/index/test/rtree/test_rtree.hpp1929
-rw-r--r--libs/geometry/index/test/varray.cpp781
-rw-r--r--libs/geometry/index/test/varray_old.cpp490
-rw-r--r--libs/geometry/index/test/varray_test.hpp97
-rw-r--r--libs/geometry/meta/libraries.json25
-rw-r--r--libs/geometry/sublibs2
-rw-r--r--libs/geometry/test/Jamfile.v21
-rw-r--r--libs/geometry/test/algorithms/Jamfile.v281
-rw-r--r--libs/geometry/test/algorithms/algorithms_tests.sln193
-rw-r--r--libs/geometry/test/algorithms/append.cpp148
-rw-r--r--libs/geometry/test/algorithms/append.vcproj174
-rw-r--r--libs/geometry/test/algorithms/area.cpp34
-rw-r--r--libs/geometry/test/algorithms/area.vcproj174
-rw-r--r--libs/geometry/test/algorithms/assign.cpp139
-rw-r--r--libs/geometry/test/algorithms/assign.vcproj174
-rw-r--r--libs/geometry/test/algorithms/buffer.cpp11
-rw-r--r--libs/geometry/test/algorithms/buffer.vcproj174
-rw-r--r--libs/geometry/test/algorithms/buffer/Jamfile.v224
-rw-r--r--libs/geometry/test/algorithms/buffer/aimes_linestring_buffer.cpp528
-rw-r--r--libs/geometry/test/algorithms/buffer/linestring_buffer.cpp185
-rw-r--r--libs/geometry/test/algorithms/buffer/multi_linestring_buffer.cpp74
-rw-r--r--libs/geometry/test/algorithms/buffer/multi_point_buffer.cpp198
-rw-r--r--libs/geometry/test/algorithms/buffer/multi_polygon_buffer.cpp416
-rw-r--r--libs/geometry/test/algorithms/buffer/point_buffer.cpp36
-rw-r--r--libs/geometry/test/algorithms/buffer/polygon_buffer.cpp429
-rw-r--r--libs/geometry/test/algorithms/buffer/test_buffer.hpp631
-rw-r--r--libs/geometry/test/algorithms/centroid.cpp42
-rw-r--r--libs/geometry/test/algorithms/centroid.vcproj174
-rw-r--r--libs/geometry/test/algorithms/comparable_distance.cpp407
-rw-r--r--libs/geometry/test/algorithms/comparable_distance.vcproj174
-rw-r--r--libs/geometry/test/algorithms/convert.cpp171
-rw-r--r--libs/geometry/test/algorithms/convert.vcproj174
-rw-r--r--libs/geometry/test/algorithms/convex_hull.cpp2
-rw-r--r--libs/geometry/test/algorithms/convex_hull.vcproj174
-rw-r--r--libs/geometry/test/algorithms/correct.cpp21
-rw-r--r--libs/geometry/test/algorithms/correct.vcproj174
-rw-r--r--libs/geometry/test/algorithms/covered_by.cpp39
-rw-r--r--libs/geometry/test/algorithms/covered_by.vcproj174
-rw-r--r--libs/geometry/test/algorithms/crosses.cpp97
-rw-r--r--libs/geometry/test/algorithms/detail/detail.sln19
-rw-r--r--libs/geometry/test/algorithms/detail/get_left_turns.cpp321
-rw-r--r--libs/geometry/test/algorithms/detail/partition.cpp230
-rw-r--r--libs/geometry/test/algorithms/detail/partition.vcproj174
-rw-r--r--libs/geometry/test/algorithms/detail/sections/range_by_section.cpp3
-rw-r--r--libs/geometry/test/algorithms/detail/sections/range_by_section.vcproj174
-rw-r--r--libs/geometry/test/algorithms/detail/sections/sectionalize.cpp19
-rw-r--r--libs/geometry/test/algorithms/detail/sections/sectionalize.sln25
-rw-r--r--libs/geometry/test/algorithms/detail/sections/sectionalize.vcproj174
-rw-r--r--libs/geometry/test/algorithms/difference.cpp266
-rw-r--r--libs/geometry/test/algorithms/difference.vcproj174
-rw-r--r--libs/geometry/test/algorithms/difference_linear_linear.cpp1231
-rw-r--r--libs/geometry/test/algorithms/difference_pl_pl.cpp226
-rw-r--r--libs/geometry/test/algorithms/disjoint.cpp82
-rw-r--r--libs/geometry/test/algorithms/disjoint.vcproj174
-rw-r--r--libs/geometry/test/algorithms/disjoint_coverage.cpp1406
-rw-r--r--libs/geometry/test/algorithms/distance.cpp255
-rw-r--r--libs/geometry/test/algorithms/distance.vcproj174
-rw-r--r--libs/geometry/test/algorithms/distance_all.cpp20
-rw-r--r--libs/geometry/test/algorithms/distance_areal_areal.cpp436
-rw-r--r--libs/geometry/test/algorithms/distance_linear_areal.cpp951
-rw-r--r--libs/geometry/test/algorithms/distance_linear_linear.cpp280
-rw-r--r--libs/geometry/test/algorithms/distance_pointlike_areal.cpp641
-rw-r--r--libs/geometry/test/algorithms/distance_pointlike_linear.cpp264
-rw-r--r--libs/geometry/test/algorithms/distance_pointlike_pointlike.cpp143
-rw-r--r--libs/geometry/test/algorithms/envelope.vcproj174
-rw-r--r--libs/geometry/test/algorithms/equals.cpp107
-rw-r--r--libs/geometry/test/algorithms/equals.vcproj174
-rw-r--r--libs/geometry/test/algorithms/expand.vcproj174
-rw-r--r--libs/geometry/test/algorithms/for_each.cpp27
-rw-r--r--libs/geometry/test/algorithms/for_each.vcproj174
-rw-r--r--libs/geometry/test/algorithms/from_wkt.hpp29
-rw-r--r--libs/geometry/test/algorithms/intersection.cpp187
-rw-r--r--libs/geometry/test/algorithms/intersection.vcproj176
-rw-r--r--libs/geometry/test/algorithms/intersection_linear_linear.cpp1539
-rw-r--r--libs/geometry/test/algorithms/intersection_pl_pl.cpp185
-rw-r--r--libs/geometry/test/algorithms/intersects.cpp210
-rw-r--r--libs/geometry/test/algorithms/intersects.vcproj174
-rw-r--r--libs/geometry/test/algorithms/is_simple.cpp311
-rw-r--r--libs/geometry/test/algorithms/is_valid.cpp767
-rw-r--r--libs/geometry/test/algorithms/length.vcproj174
-rw-r--r--libs/geometry/test/algorithms/make.vcproj174
-rw-r--r--libs/geometry/test/algorithms/num_geometries.cpp151
-rw-r--r--libs/geometry/test/algorithms/num_interior_rings.cpp153
-rw-r--r--libs/geometry/test/algorithms/num_points.cpp97
-rw-r--r--libs/geometry/test/algorithms/num_segments.cpp291
-rw-r--r--libs/geometry/test/algorithms/overlaps.cpp64
-rw-r--r--libs/geometry/test/algorithms/overlaps.vcproj174
-rw-r--r--libs/geometry/test/algorithms/overlay/Jamfile.v211
-rw-r--r--libs/geometry/test/algorithms/overlay/assemble.cpp25
-rw-r--r--libs/geometry/test/algorithms/overlay/assemble.vcproj174
-rw-r--r--libs/geometry/test/algorithms/overlay/ccw_traverse.cpp32
-rw-r--r--libs/geometry/test/algorithms/overlay/ccw_traverse.vcproj174
-rw-r--r--libs/geometry/test/algorithms/overlay/dissolver.cpp5
-rw-r--r--libs/geometry/test/algorithms/overlay/dissolver.vcproj174
-rw-r--r--libs/geometry/test/algorithms/overlay/enrich_intersection_points.cpp2
-rw-r--r--libs/geometry/test/algorithms/overlay/enrich_intersection_points.vcproj174
-rw-r--r--libs/geometry/test/algorithms/overlay/get_turn_info.cpp39
-rw-r--r--libs/geometry/test/algorithms/overlay/get_turn_info.vcproj174
-rw-r--r--libs/geometry/test/algorithms/overlay/get_turns.cpp32
-rw-r--r--libs/geometry/test/algorithms/overlay/get_turns.vcproj174
-rw-r--r--libs/geometry/test/algorithms/overlay/get_turns_linear_areal.cpp176
-rw-r--r--libs/geometry/test/algorithms/overlay/get_turns_linear_linear.cpp530
-rw-r--r--libs/geometry/test/algorithms/overlay/merge_intersection_points.vcproj173
-rw-r--r--libs/geometry/test/algorithms/overlay/overlay.sln61
-rw-r--r--libs/geometry/test/algorithms/overlay/overlay_cases.hpp152
-rw-r--r--libs/geometry/test/algorithms/overlay/overlay_common.hpp2
-rw-r--r--libs/geometry/test/algorithms/overlay/relative_order.cpp2
-rw-r--r--libs/geometry/test/algorithms/overlay/relative_order.vcproj174
-rw-r--r--libs/geometry/test/algorithms/overlay/robustness/interior_triangles.vcproj223
-rw-r--r--libs/geometry/test/algorithms/overlay/robustness/intersection_pies.vcproj223
-rw-r--r--libs/geometry/test/algorithms/overlay/robustness/intersection_stars.vcproj223
-rw-r--r--libs/geometry/test/algorithms/overlay/robustness/intersects.vcproj223
-rw-r--r--libs/geometry/test/algorithms/overlay/robustness/random_ellipses_stars.vcproj223
-rw-r--r--libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.vcproj223
-rw-r--r--libs/geometry/test/algorithms/overlay/robustness/robustness.sln55
-rw-r--r--libs/geometry/test/algorithms/overlay/robustness/star_comb.vcproj223
-rw-r--r--libs/geometry/test/algorithms/overlay/select_rings.cpp14
-rw-r--r--libs/geometry/test/algorithms/overlay/select_rings.vcproj174
-rw-r--r--libs/geometry/test/algorithms/overlay/self_intersection_points.cpp256
-rw-r--r--libs/geometry/test/algorithms/overlay/self_intersection_points.vcproj174
-rw-r--r--libs/geometry/test/algorithms/overlay/split_rings.cpp2
-rw-r--r--libs/geometry/test/algorithms/overlay/split_rings.vcproj173
-rw-r--r--libs/geometry/test/algorithms/overlay/test_get_turns.hpp217
-rw-r--r--libs/geometry/test/algorithms/overlay/traverse.cpp219
-rw-r--r--libs/geometry/test/algorithms/overlay/traverse.vcproj174
-rw-r--r--libs/geometry/test/algorithms/overlay/traverse_gmp.cpp8
-rw-r--r--libs/geometry/test/algorithms/perimeter.vcproj174
-rw-r--r--libs/geometry/test/algorithms/point_on_surface.cpp364
-rw-r--r--libs/geometry/test/algorithms/predef_relop.hpp33
-rw-r--r--libs/geometry/test/algorithms/pretty_print_geometry.hpp69
-rw-r--r--libs/geometry/test/algorithms/relate_areal_areal.cpp323
-rw-r--r--libs/geometry/test/algorithms/relate_linear_areal.cpp336
-rw-r--r--libs/geometry/test/algorithms/relate_linear_linear.cpp364
-rw-r--r--libs/geometry/test/algorithms/relate_pointlike_xxx.cpp103
-rw-r--r--libs/geometry/test/algorithms/remove_spikes.cpp193
-rw-r--r--libs/geometry/test/algorithms/reverse.vcproj174
-rw-r--r--libs/geometry/test/algorithms/set_ops_ll.cpp17
-rw-r--r--libs/geometry/test/algorithms/set_ops_pp.cpp16
-rw-r--r--libs/geometry/test/algorithms/simplify.cpp124
-rw-r--r--libs/geometry/test/algorithms/simplify.vcproj174
-rw-r--r--libs/geometry/test/algorithms/sym_difference_linear_linear.cpp944
-rw-r--r--libs/geometry/test/algorithms/test_area.hpp2
-rw-r--r--libs/geometry/test/algorithms/test_centroid.hpp6
-rw-r--r--libs/geometry/test/algorithms/test_convert.hpp35
-rw-r--r--libs/geometry/test/algorithms/test_convex_hull.hpp119
-rw-r--r--libs/geometry/test/algorithms/test_correct.hpp55
-rw-r--r--libs/geometry/test/algorithms/test_covered_by.hpp39
-rw-r--r--libs/geometry/test/algorithms/test_crosses.hpp83
-rw-r--r--libs/geometry/test/algorithms/test_difference.hpp79
-rw-r--r--libs/geometry/test/algorithms/test_difference_linear_linear.hpp144
-rw-r--r--libs/geometry/test/algorithms/test_disjoint.hpp63
-rw-r--r--libs/geometry/test/algorithms/test_distance.hpp47
-rw-r--r--libs/geometry/test/algorithms/test_distance_common.hpp600
-rw-r--r--libs/geometry/test/algorithms/test_envelope.hpp28
-rw-r--r--libs/geometry/test/algorithms/test_equals.hpp48
-rw-r--r--libs/geometry/test/algorithms/test_expand.hpp31
-rw-r--r--libs/geometry/test/algorithms/test_for_each.hpp62
-rw-r--r--libs/geometry/test/algorithms/test_get_turns_ll_invariance.hpp163
-rw-r--r--libs/geometry/test/algorithms/test_intersection.hpp152
-rw-r--r--libs/geometry/test/algorithms/test_intersection_linear_linear.hpp213
-rw-r--r--libs/geometry/test/algorithms/test_intersects.hpp22
-rw-r--r--libs/geometry/test/algorithms/test_is_valid.hpp407
-rw-r--r--libs/geometry/test/algorithms/test_length.hpp11
-rw-r--r--libs/geometry/test/algorithms/test_overlaps.hpp14
-rw-r--r--libs/geometry/test/algorithms/test_overlay.hpp2
-rw-r--r--libs/geometry/test/algorithms/test_perimeter.hpp18
-rw-r--r--libs/geometry/test/algorithms/test_relate.hpp122
-rw-r--r--libs/geometry/test/algorithms/test_reverse.hpp20
-rw-r--r--libs/geometry/test/algorithms/test_set_ops_linear_linear.hpp310
-rw-r--r--libs/geometry/test/algorithms/test_set_ops_pl_pl.hpp257
-rw-r--r--libs/geometry/test/algorithms/test_simplify.hpp170
-rw-r--r--libs/geometry/test/algorithms/test_sym_difference_linear_linear.hpp163
-rw-r--r--libs/geometry/test/algorithms/test_touches.hpp65
-rw-r--r--libs/geometry/test/algorithms/test_union.hpp66
-rw-r--r--libs/geometry/test/algorithms/test_union_linear_linear.hpp171
-rw-r--r--libs/geometry/test/algorithms/test_unique.hpp2
-rw-r--r--libs/geometry/test/algorithms/test_within.hpp48
-rw-r--r--libs/geometry/test/algorithms/touches.cpp134
-rw-r--r--libs/geometry/test/algorithms/touches.vcproj174
-rw-r--r--libs/geometry/test/algorithms/transform.cpp84
-rw-r--r--libs/geometry/test/algorithms/transform.vcproj174
-rw-r--r--libs/geometry/test/algorithms/union.cpp113
-rw-r--r--libs/geometry/test/algorithms/union.vcproj176
-rw-r--r--libs/geometry/test/algorithms/union_linear_linear.cpp1062
-rw-r--r--libs/geometry/test/algorithms/union_pl_pl.cpp187
-rw-r--r--libs/geometry/test/algorithms/unique.vcproj174
-rw-r--r--libs/geometry/test/algorithms/within.cpp135
-rw-r--r--libs/geometry/test/algorithms/within.vcproj174
-rw-r--r--libs/geometry/test/algorithms/within_areal_areal.cpp80
-rw-r--r--libs/geometry/test/algorithms/within_linear_areal.cpp85
-rw-r--r--libs/geometry/test/algorithms/within_linear_linear.cpp99
-rw-r--r--libs/geometry/test/algorithms/within_pointlike_xxx.cpp253
-rw-r--r--libs/geometry/test/arithmetic/arithmetic.cpp54
-rw-r--r--libs/geometry/test/arithmetic/arithmetic.vcproj169
-rw-r--r--libs/geometry/test/arithmetic/arithmetic_tests.sln25
-rw-r--r--libs/geometry/test/arithmetic/dot_product.vcproj169
-rw-r--r--libs/geometry/test/boost.vsprops21
-rw-r--r--libs/geometry/test/concepts/concepts_tests.sln25
-rw-r--r--libs/geometry/test/concepts/linestring_concept.vcproj172
-rw-r--r--libs/geometry/test/core/access.vcproj174
-rw-r--r--libs/geometry/test/core/core.sln37
-rw-r--r--libs/geometry/test/core/point_type.cpp24
-rw-r--r--libs/geometry/test/core/radian_access.vcproj174
-rw-r--r--libs/geometry/test/core/reverse_dispatch.vcproj174
-rw-r--r--libs/geometry/test/core/ring.cpp25
-rw-r--r--libs/geometry/test/core/ring.vcproj174
-rw-r--r--libs/geometry/test/core/tag.cpp15
-rw-r--r--libs/geometry/test/geometries/adapted.cpp9
-rw-r--r--libs/geometry/test/geometries/boost_array_as_point.cpp2
-rw-r--r--libs/geometry/test/geometries/boost_array_as_point.vcproj174
-rw-r--r--libs/geometry/test/geometries/boost_fusion.vcproj174
-rw-r--r--libs/geometry/test/geometries/boost_polygon.vcproj174
-rw-r--r--libs/geometry/test/geometries/boost_polygon_overlay.vcproj174
-rw-r--r--libs/geometry/test/geometries/boost_range.cpp7
-rw-r--r--libs/geometry/test/geometries/boost_range.vcproj174
-rw-r--r--libs/geometry/test/geometries/box.vcproj174
-rw-r--r--libs/geometry/test/geometries/concepts/check.sln19
-rw-r--r--libs/geometry/test/geometries/concepts/check.vcproj173
-rw-r--r--libs/geometry/test/geometries/custom_linestring.cpp2
-rw-r--r--libs/geometry/test/geometries/custom_linestring.vcproj174
-rw-r--r--libs/geometry/test/geometries/geometries_tests.sln61
-rw-r--r--libs/geometry/test/geometries/segment.cpp5
-rw-r--r--libs/geometry/test/geometries/segment.vcproj174
-rw-r--r--libs/geometry/test/geometry_test_common.hpp77
-rw-r--r--libs/geometry/test/io/wkt/io_wkt_tests.sln19
-rw-r--r--libs/geometry/test/io/wkt/wkt.cpp16
-rw-r--r--libs/geometry/test/io/wkt/wkt.vcproj174
-rw-r--r--libs/geometry/test/iterators/Jamfile.v215
-rw-r--r--libs/geometry/test/iterators/closing_iterator.vcproj178
-rw-r--r--libs/geometry/test/iterators/concatenate_iterator.cpp259
-rw-r--r--libs/geometry/test/iterators/ever_circling_iterator.vcproj178
-rw-r--r--libs/geometry/test/iterators/flatten_iterator.cpp368
-rw-r--r--libs/geometry/test/iterators/iterators.sln25
-rw-r--r--libs/geometry/test/iterators/point_iterator.cpp595
-rw-r--r--libs/geometry/test/iterators/segment_iterator.cpp421
-rw-r--r--libs/geometry/test/iterators/test_iterator_common.hpp206
-rw-r--r--libs/geometry/test/multi/algorithms/Jamfile.v215
-rw-r--r--libs/geometry/test/multi/algorithms/multi_area.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_centroid.cpp4
-rw-r--r--libs/geometry/test/multi/algorithms/multi_centroid.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_clear.cpp69
-rw-r--r--libs/geometry/test/multi/algorithms/multi_convert.cpp52
-rw-r--r--libs/geometry/test/multi/algorithms/multi_convert.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_convex_hull.cpp15
-rw-r--r--libs/geometry/test/multi/algorithms/multi_convex_hull.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_correct.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_covered_by.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_difference.cpp66
-rw-r--r--libs/geometry/test/multi/algorithms/multi_difference.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_difference_spike.cpp105
-rw-r--r--libs/geometry/test/multi/algorithms/multi_disjoint.cpp79
-rw-r--r--libs/geometry/test/multi/algorithms/multi_disjoint.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_distance.cpp171
-rw-r--r--libs/geometry/test/multi/algorithms/multi_distance.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_envelope.cpp2
-rw-r--r--libs/geometry/test/multi/algorithms/multi_envelope.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_equals.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_for_each.cpp17
-rw-r--r--libs/geometry/test/multi/algorithms/multi_for_each.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_intersection.cpp36
-rw-r--r--libs/geometry/test/multi/algorithms/multi_intersection.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_intersects.cpp51
-rw-r--r--libs/geometry/test/multi/algorithms/multi_length.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_num_geometries.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_num_interior_rings.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_num_points.cpp16
-rw-r--r--libs/geometry/test/multi/algorithms/multi_num_points.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_perimeter.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_reverse.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_simplify.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_touches.cpp17
-rw-r--r--libs/geometry/test/multi/algorithms/multi_touches.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_transform.cpp5
-rw-r--r--libs/geometry/test/multi/algorithms/multi_transform.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_union.cpp25
-rw-r--r--libs/geometry/test/multi/algorithms/multi_union.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_unique.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/multi_within.vcproj174
-rw-r--r--libs/geometry/test/multi/algorithms/overlay/Jamfile.v22
-rw-r--r--libs/geometry/test/multi/algorithms/overlay/multi_overlay.sln19
-rw-r--r--libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp275
-rw-r--r--libs/geometry/test/multi/algorithms/overlay/multi_overlay_common.hpp2
-rw-r--r--libs/geometry/test/multi/algorithms/overlay/multi_traverse.cpp5
-rw-r--r--libs/geometry/test/multi/algorithms/overlay/multi_traverse.vcproj174
-rw-r--r--libs/geometry/test/multi/io/dsv/Jamfile.v22
-rw-r--r--libs/geometry/test/multi/io/dsv/dsv.sln19
-rw-r--r--libs/geometry/test/multi/io/dsv/dsv.vcproj174
-rw-r--r--libs/geometry/test/multi/io/dsv/multi_dsv.cpp (renamed from libs/geometry/test/multi/io/dsv/dsv.cpp)4
-rw-r--r--libs/geometry/test/multi/io/wkt/Jamfile.v22
-rw-r--r--libs/geometry/test/multi/io/wkt/io_wkt_tests.sln27
-rw-r--r--libs/geometry/test/multi/io/wkt/multi_wkt.cpp (renamed from libs/geometry/test/multi/io/wkt/wkt.cpp)4
-rw-r--r--libs/geometry/test/multi/io/wkt/wkt.vcproj174
-rw-r--r--libs/geometry/test/multi/multi_tests.sln163
-rw-r--r--libs/geometry/test/policies/Jamfile.v21
-rw-r--r--libs/geometry/test/policies/compare.cpp3
-rw-r--r--libs/geometry/test/policies/compare.vcproj174
-rw-r--r--libs/geometry/test/policies/policy_tests.sln19
-rw-r--r--libs/geometry/test/policies/rescale_policy.cpp133
-rw-r--r--libs/geometry/test/robustness/common/common_settings.hpp2
-rw-r--r--libs/geometry/test/robustness/common/make_square_polygon.hpp2
-rw-r--r--libs/geometry/test/robustness/convex_hull/random_multi_points.cpp4
-rw-r--r--libs/geometry/test/robustness/convex_hull/random_multi_points.sln20
-rw-r--r--libs/geometry/test/robustness/convex_hull/random_multi_points.vcproj223
-rw-r--r--libs/geometry/test/robustness/overlay/areal_areal/Jamfile.v228
-rw-r--r--libs/geometry/test/robustness/overlay/areal_areal/interior_triangles.cpp (renamed from libs/geometry/test/algorithms/overlay/robustness/interior_triangles.cpp)3
-rw-r--r--libs/geometry/test/robustness/overlay/areal_areal/intersection_pies.cpp (renamed from libs/geometry/test/algorithms/overlay/robustness/intersection_pies.cpp)0
-rw-r--r--libs/geometry/test/robustness/overlay/areal_areal/intersection_stars.cpp (renamed from libs/geometry/test/algorithms/overlay/robustness/intersection_stars.cpp)4
-rw-r--r--libs/geometry/test/robustness/overlay/areal_areal/intersects.cpp (renamed from libs/geometry/test/algorithms/overlay/robustness/intersects.cpp)3
-rw-r--r--libs/geometry/test/robustness/overlay/areal_areal/random_ellipses_stars.cpp (renamed from libs/geometry/test/algorithms/overlay/robustness/random_ellipses_stars.cpp)1
-rw-r--r--libs/geometry/test/robustness/overlay/areal_areal/recursive_polygons.cpp (renamed from libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.cpp)2
-rw-r--r--libs/geometry/test/robustness/overlay/areal_areal/star_comb.cpp (renamed from libs/geometry/test/algorithms/overlay/robustness/star_comb.cpp)6
-rw-r--r--libs/geometry/test/robustness/overlay/areal_areal/star_comb.hpp (renamed from libs/geometry/test/algorithms/overlay/robustness/star_comb.hpp)0
-rw-r--r--libs/geometry/test/robustness/overlay/areal_areal/test_overlay_p_q.hpp (renamed from libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp)6
-rw-r--r--libs/geometry/test/robustness/overlay/areal_areal/ticket_9081.cpp239
-rw-r--r--libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.cpp130
-rw-r--r--libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.sln20
-rw-r--r--libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.vcproj222
-rw-r--r--libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.cpp4
-rw-r--r--libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.sln20
-rw-r--r--libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.vcproj223
-rw-r--r--libs/geometry/test/strategies/Jamfile.v221
-rw-r--r--libs/geometry/test/strategies/cross_track.cpp58
-rw-r--r--libs/geometry/test/strategies/cross_track.vcproj174
-rw-r--r--libs/geometry/test/strategies/crossings_multiply.cpp87
-rw-r--r--libs/geometry/test/strategies/distance_default_result.cpp270
-rw-r--r--libs/geometry/test/strategies/franklin.cpp86
-rw-r--r--libs/geometry/test/strategies/haversine.cpp56
-rw-r--r--libs/geometry/test/strategies/haversine.vcproj174
-rw-r--r--libs/geometry/test/strategies/point_in_box.cpp81
-rw-r--r--libs/geometry/test/strategies/projected_point.cpp141
-rw-r--r--libs/geometry/test/strategies/projected_point.vcproj174
-rw-r--r--libs/geometry/test/strategies/projected_point_ax.cpp88
-rw-r--r--libs/geometry/test/strategies/pythagoras.cpp73
-rw-r--r--libs/geometry/test/strategies/pythagoras.vcproj174
-rw-r--r--libs/geometry/test/strategies/pythagoras_point_box.cpp499
-rw-r--r--libs/geometry/test/strategies/segment_intersection.cpp29
-rw-r--r--libs/geometry/test/strategies/segment_intersection.vcproj174
-rw-r--r--libs/geometry/test/strategies/segment_intersection_collinear.cpp312
-rw-r--r--libs/geometry/test/strategies/segment_intersection_collinear.vcproj174
-rw-r--r--libs/geometry/test/strategies/spherical_side.cpp4
-rw-r--r--libs/geometry/test/strategies/spherical_side.vcproj174
-rw-r--r--libs/geometry/test/strategies/strategies_tests.sln73
-rw-r--r--libs/geometry/test/strategies/test_projected_point.hpp185
-rw-r--r--libs/geometry/test/strategies/test_within.hpp106
-rw-r--r--libs/geometry/test/strategies/transform_cs.cpp2
-rw-r--r--libs/geometry/test/strategies/transform_cs.vcproj174
-rw-r--r--libs/geometry/test/strategies/transformer.cpp16
-rw-r--r--libs/geometry/test/strategies/transformer.vcproj174
-rw-r--r--libs/geometry/test/strategies/winding.cpp227
-rw-r--r--libs/geometry/test/strategies/within.cpp194
-rw-r--r--libs/geometry/test/strategies/within.vcproj174
-rw-r--r--libs/geometry/test/string_from_type.hpp83
-rw-r--r--libs/geometry/test/test_common/test_point.hpp19
-rw-r--r--libs/geometry/test/test_common/with_pointer.hpp2
-rw-r--r--libs/geometry/test/test_geometries/all_custom_container.hpp2
-rw-r--r--libs/geometry/test/test_geometries/all_custom_linestring.hpp2
-rw-r--r--libs/geometry/test/test_geometries/all_custom_polygon.hpp2
-rw-r--r--libs/geometry/test/test_geometries/all_custom_ring.hpp2
-rw-r--r--libs/geometry/test/test_geometries/custom_segment.hpp2
-rw-r--r--libs/geometry/test/test_geometries/wrapped_boost_array.hpp4
-rw-r--r--libs/geometry/test/to_svg.hpp379
-rw-r--r--libs/geometry/test/ttmath.vsprops15
-rw-r--r--libs/geometry/test/util/Jamfile.v213
-rw-r--r--libs/geometry/test/util/as_range.vcproj174
-rw-r--r--libs/geometry/test/util/calculation_type.cpp4
-rw-r--r--libs/geometry/test/util/calculation_type.vcproj174
-rw-r--r--libs/geometry/test/util/compress_variant.cpp77
-rw-r--r--libs/geometry/test/util/for_each_coordinate.vcproj174
-rw-r--r--libs/geometry/test/util/is_implemented.cpp88
-rw-r--r--libs/geometry/test/util/math_sqrt.cpp153
-rw-r--r--libs/geometry/test/util/number_types.hpp139
-rw-r--r--libs/geometry/test/util/range.cpp216
-rw-r--r--libs/geometry/test/util/rational.cpp2
-rw-r--r--libs/geometry/test/util/rational.vcproj174
-rw-r--r--libs/geometry/test/util/select_most_precise.vcproj174
-rw-r--r--libs/geometry/test/util/transform_variant.cpp68
-rw-r--r--libs/geometry/test/util/util_tests.sln49
-rw-r--r--libs/geometry/test/util/write_dsv.vcproj174
-rw-r--r--libs/geometry/test/views/box_view.cpp2
-rw-r--r--libs/geometry/test/views/box_view.vcproj178
-rw-r--r--libs/geometry/test/views/closeable_view.cpp2
-rw-r--r--libs/geometry/test/views/closeable_view.vcproj176
-rw-r--r--libs/geometry/test/views/reversible_closeable.vcproj176
-rw-r--r--libs/geometry/test/views/reversible_view.vcproj176
-rw-r--r--libs/geometry/test/views/segment_view.cpp2
-rw-r--r--libs/geometry/test/views/segment_view.vcproj178
-rw-r--r--libs/geometry/test/views/views.sln43
1228 files changed, 94160 insertions, 36457 deletions
diff --git a/libs/geometry/Jamfile.v2 b/libs/geometry/Jamfile.v2
new file mode 100644
index 0000000000..fe4b9b8830
--- /dev/null
+++ b/libs/geometry/Jamfile.v2
@@ -0,0 +1,21 @@
+# Boost.Geometry (aka GGL, Generic Geometry Library)
+#
+# Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
+# Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
+# Copyright (c) 2009-2013 Mateusz Loskot, London, UK.
+#
+# 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)
+
+project boost-geometry
+ :
+ requirements
+ <include>../../boost/geometry/extensions/contrib/ttmath
+ <toolset>msvc:<asynch-exceptions>on
+ ;
+
+build-project test ;
+build-project example ;
+build-project doc/src/examples ;
+build-project index ;
diff --git a/libs/geometry/README.md b/libs/geometry/README.md
new file mode 100644
index 0000000000..27ba8cdad8
--- /dev/null
+++ b/libs/geometry/README.md
@@ -0,0 +1,17 @@
+#![Boost.Geometry](doc/other/logo/logo_bkg.png)
+
+Boost.Geometry, part of collection of the [Boost C++ Libraries](http://github.com/boostorg), defines concepts, primitives and algorithms for solving geometry problems.
+
+### Directories
+
+* **doc** - QuickBook documentation sources
+* **examples** - Boost.Geometry examples
+* **_extensions_** - examples and tests for the extensions - _develop branch_
+* **include** - the sourcecode of Boost.Geometry
+* **index** - examples and tests for the Spatial Index
+* **test** - Boost.Geometry unit tests
+
+### More information
+
+* [Wiki](http://github.com/boostorg/geometry/wiki)
+* [Documentation](http://boost.org/libs/geometry)
diff --git a/libs/geometry/doc/Jamfile.v2 b/libs/geometry/doc/Jamfile.v2
index 1deb3fd94d..924d4786f6 100644
--- a/libs/geometry/doc/Jamfile.v2
+++ b/libs/geometry/doc/Jamfile.v2
@@ -8,18 +8,15 @@
# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
-
project geometry/doc ;
# Auto-index, experimental. Commented otherwise does not build without.
#using auto-index ;
-
using quickbook ;
path-constant here : . ;
path-constant images_location : html ;
-
boostbook geometry
: geometry.qbk
: <dependency>Jamfile.v2
@@ -43,3 +40,4 @@ boostbook geometry
install pdfinstall : geometry/<format>pdf : <location>. <name>geometry.pdf <install-type>PDF ;
explicit pdfinstall ;
+
diff --git a/libs/geometry/doc/about_documentation.qbk b/libs/geometry/doc/about_documentation.qbk
index 33219df5a8..e2b277851e 100644
--- a/libs/geometry/doc/about_documentation.qbk
+++ b/libs/geometry/doc/about_documentation.qbk
@@ -10,7 +10,7 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
-[section:aboutdoc About this documentation]
+[section:aboutdoc About this Documentation]
Within the Boost community there are several styles of documenting. Most libraries nowadays are using QuickBook, the WikiWiki style documentation.
diff --git a/libs/geometry/doc/compiling.qbk b/libs/geometry/doc/compiling.qbk
index f549fabd05..01c99fb745 100644
--- a/libs/geometry/doc/compiling.qbk
+++ b/libs/geometry/doc/compiling.qbk
@@ -49,7 +49,8 @@ compilers:
* gcc 4.2.1 [/reported by Trunk report May 8, 2011]
* gcc 3.4.6 [/reported by Trunk report March 26, 2011]
* clang
- * clang x.x [/reported by Trunk report March 26, 2011]
+ * clang 3.3 [/reported by mloskot on October, 2013]
+ * clang 3.2 [/reported by Trunk report March 26, 2011]
* darwin
* darwin 4.0.1 [/reported by Trunk report March 26, 2011]
* darwin 4.4 [/reported by Trunk report March 26, 2011]
@@ -86,17 +87,24 @@ Another often used header is `geometries.hpp`:
#include <boost/geometry/geometries/geometries.hpp>
-This includes definitions of all provided geometry types: point,
-linestring, polygon, ring, box. The file `geometries.hpp` is not included in
+This includes definitions of all provided geometry types:
+
+* point,
+* linestring,
+* polygon,
+* ring,
+* multi_point,
+* multi_linestring,
+* multi_polygon,
+* box,
+* segment.
+
+The file `geometries.hpp` is not included in
the `geometry.hpp` headerfile because users should be given the liberty to use
their own geometries and not the provided ones. However, for the
__boost_geometry__ users who want to use the provided geometries it is useful
to include.
-For users using multi-geometries:
-
- #include <boost/geometry/multi/geometries/multi_geometries.hpp>
-
[heading Advanced Includes]
Users who have their own geometries and want to use algorithms from
diff --git a/libs/geometry/doc/concept/polygon.qbk b/libs/geometry/doc/concept/polygon.qbk
index 14f040ce8c..a2de9fd6a2 100644
--- a/libs/geometry/doc/concept/polygon.qbk
+++ b/libs/geometry/doc/concept/polygon.qbk
@@ -44,8 +44,8 @@ above).
but holes are allowed in __boost_geometry__ polygons).
* If the polygons underlying `ring_type` is defined as clockwise, the exterior
ring must have the clockwise orientation, and any interior ring must be
- counter clockwise. If the `ring_type` is defined counter clockwise, it is
- vice versa.
+ reversed w.r.t. the defined orientation (so: counter clockwise for clockwise exterior rings).
+ If the `ring_type` is defined counter clockwise, it is vice versa.
* If the polygons underlying `ring_type` is defined as closed, all rings must be
closed: the first point must be spatially equal to the last point.
* The interior is a connected point set.
diff --git a/libs/geometry/doc/doxy/Doxyfile b/libs/geometry/doc/doxy/Doxyfile
index 50a390a581..fd23c38157 100644
--- a/libs/geometry/doc/doxy/Doxyfile
+++ b/libs/geometry/doc/doxy/Doxyfile
@@ -39,7 +39,6 @@ TAB_SIZE = 8
# \return* for various return cases
ALIASES = qbk{1}="\xmlonly <qbk>\1</qbk> \endxmlonly" \
qbk{2}="\xmlonly <qbk.\1>\2</qbk.\1> \endxmlonly" \
- qbk_skip="\xmlonly <qbk.skip/> \endxmlonly" \
brief_calc{1}="Calculates the \1 of a geometry" \
brief_calc2{1}="Calculate the \1 of two geometries" \
brief_calc2{2}="Calculate the \1 \2 two geometries" \
@@ -55,9 +54,9 @@ ALIASES = qbk{1}="\xmlonly <qbk>\1</qbk> \endxmlonly" \
tparam_box="Any type fulfilling a Box Concept" \
tparam_box_or_segment="Any type fulfilling a Box Concept or a Segment Concept" \
tparam_calculation="numeric type for calculation (e.g. high precision); if [*void] then it is extracted automatically from the coordinate type and (if necessary) promoted to floating point" \
+ tparam_radius="numeric type for radius (of sphere, earth)" \
tparam_container="container type, for example std::vector, std::deque" \
- tparam_dimension_required="Dimension, this template parameter is required. Should contain \[0 .. n-1\] for an n-dimensional geometry" \
- tparam_first_point="first point type" \
+ tparam_dimension_required="Dimension, this template parameter is required. Should contain \\[0 .. n-1\\] for an n-dimensional geometry" \
tparam_functor="Function or class with operator()" \
tparam_output_collection="output collection, either a multi-geometry, or a std::vector<Geometry> / std::deque<Geometry> etc" \
tparam_geometry="Any type fulfilling a Geometry Concept" \
@@ -67,8 +66,10 @@ ALIASES = qbk{1}="\xmlonly <qbk>\1</qbk> \endxmlonly" \
tparam_out{1}="A valid output iterator type, accepting geometries of \1 Concept" \
tparam_point="Any type fulfilling a Point Concept" \
tparam_range_point="Any type fulfilling a Range Concept where it range_value type fulfills the Point Concept" \
- tparam_first_point="point type" \
+ tparam_first_point="first point type" \
+ tparam_first_box="first box type" \
tparam_second_point="second point type" \
+ tparam_second_box="second box type" \
tparam_segment_point="segment point type" \
tparam_strategy{1}="Any type fulfilling a \1 Strategy Concept" \
tparam_strategy_overlay="Compound strategy for segment intersection" \
@@ -159,7 +160,6 @@ GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = NO
-SHOW_DIRECTORIES = NO
FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
@@ -177,15 +177,27 @@ WARN_LOGFILE =
INPUT = . .. ../../../../boost/geometry/core \
../../../../boost/geometry/algorithms \
../../../../boost/geometry/algorithms/detail \
- ../../../../boost/geometry/algorithms/detail/overlay \
+ ../../../../boost/geometry/algorithms/detail/buffer \
+ ../../../../boost/geometry/algorithms/detail/comparable_distance \
+ ../../../../boost/geometry/algorithms/detail/disjoint \
+ ../../../../boost/geometry/algorithms/detail/distance \
../../../../boost/geometry/algorithms/detail/equals \
+ ../../../../boost/geometry/algorithms/detail/intersection \
+ ../../../../boost/geometry/algorithms/detail/is_simple \
+ ../../../../boost/geometry/algorithms/detail/is_valid \
+ ../../../../boost/geometry/algorithms/detail/overlay \
+ ../../../../boost/geometry/algorithms/detail/relate \
../../../../boost/geometry/algorithms/detail/sections \
+ ../../../../boost/geometry/algorithms/detail/turns \
+ ../../../../boost/geometry/algorithms/detail/within \
../../../../boost/geometry/arithmetic \
../../../../boost/geometry/geometries/concepts \
../../../../boost/geometry/geometries \
../../../../boost/geometry/geometries/adapted \
../../../../boost/geometry/geometries/register \
../../../../boost/geometry/iterators \
+ ../../../../boost/geometry/io/wkt \
+ ../../../../boost/geometry/io/svg \
../../../../boost/geometry/multi/algorithms \
../../../../boost/geometry/multi/algorithms/detail \
../../../../boost/geometry/multi/core \
@@ -232,7 +244,7 @@ FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
-SOURCE_BROWSER = YES
+SOURCE_BROWSER = NO
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = NO
@@ -249,12 +261,11 @@ IGNORE_PREFIX =
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
-HTML_OUTPUT = html
+HTML_OUTPUT = html_by_doxygen
HTML_FILE_EXTENSION = .html
HTML_HEADER = doxygen_input/ggl_doxygen_header.html
HTML_FOOTER = doxygen_input/ggl_doxygen_footer.html
HTML_STYLESHEET =
-HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Generated documentation, by Doxygen"
diff --git a/libs/geometry/doc/doxy/doxygen_input/groups/groups.hpp b/libs/geometry/doc/doxy/doxygen_input/groups/groups.hpp
index a6f1d88564..56d10bfd17 100644
--- a/libs/geometry/doc/doxy/doxygen_input/groups/groups.hpp
+++ b/libs/geometry/doc/doxy/doxygen_input/groups/groups.hpp
@@ -24,6 +24,7 @@
\defgroup core core: meta-functions for geometry types
\defgroup correct correct: correct geometries
\defgroup covered_by covered_by: detect if a geometry is inside or on the border of another geometry, a.o. point-in-polygon (border included)
+\defgroup crosses crosses: detect if two geometries crosses each other
\defgroup cs coordinate systems
\defgroup difference difference: difference of two geometries
\defgroup disjoint disjoint: detect if geometries are not spatially related
@@ -39,12 +40,15 @@
\defgroup interior_rings interior_rings: interior_rings
\defgroup intersection intersection: calculate new geometry
\defgroup intersects intersects: detect if a geometry self-intersects or if two geometries intersect
+\defgroup is_simple is_simple: detect if a geometry is simple
+\defgroup is_valid is_valid: detect if a geometry is valid
\defgroup iterators iterators: iterators
\defgroup length length: calculate length of a linear geometry
\defgroup make make: construct geometries
\defgroup num_geometries number of geometries: calculate the number of geometries in a multi-geometry
\defgroup num_interior_rings number of interior rings: calculate the number of interior rings
\defgroup num_points number of points: calculate number of points of a geometry
+\defgroup num_segments number of segments: calculate number of segments of a geometry
\defgroup overlaps overlaps: detect overlap between two geometries
\defgroup perimeter perimeter: calculate perimeter of a geometry
\defgroup projection projection: Projection struct's, classes
@@ -56,7 +60,7 @@
\defgroup set set: set geometries
\defgroup simplify simplify: remove points from a geometry, keeping shape (simplification or generalization)
\defgroup strategies strategies: strategies
-\defgroup svg x Extension svg: Stream SVG (Scalable Vector Graphics)
+\defgroup svg svg: Stream SVG (Scalable Vector Graphics)
\defgroup sym_difference sym_difference: sym_difference of two geometries
\defgroup touches touches: detect if a geometry self-touches or if two geometries touch
\defgroup traits traits: adapt geometries
diff --git a/libs/geometry/doc/doxy/doxygen_input/sourcecode/boost.vsprops b/libs/geometry/doc/doxy/doxygen_input/sourcecode/boost.vsprops
deleted file mode 100644
index 68eaf1ffa4..0000000000
--- a/libs/geometry/doc/doxy/doxygen_input/sourcecode/boost.vsprops
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="boost"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(BOOST_ROOT)"
- WarningLevel="3"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories="$(BOOST_ROOT)\lib"
- />
- <UserMacro
- Name="BOOST_ROOT"
- Value="../../../../../.."
- />
-</VisualStudioPropertySheet>
diff --git a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_1.vcproj b/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_1.vcproj
deleted file mode 100644
index 72b68d7b65..0000000000
--- a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_1.vcproj
+++ /dev/null
@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="doxygen_1"
- ProjectGUID="{861F130D-2849-4B50-B240-049DBD9D3F18}"
- RootNamespace="doxygen_1"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\doxygen_1"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib $(NoInherit)"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="cd ../doc&#x0D;&#x0A;doxygen&#x0D;&#x0A;"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\doxygen_1"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib $(NoInherit)"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="cd ../doc&#x0D;&#x0A;doxygen&#x0D;&#x0A;"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Doxygen Files"
- >
- <File
- RelativePath="../pages/doxygen_mainpage.hpp"
- >
- </File>
- <File
- RelativePath="../pages/doxygen_pages.hpp"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\doxygen_1.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_2.vcproj b/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_2.vcproj
deleted file mode 100644
index 78e45ef4ea..0000000000
--- a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_2.vcproj
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="doxygen_2"
- ProjectGUID="{6CF6A521-57E0-4DA4-9D17-ED5D29E4208C}"
- RootNamespace="doxygen_2"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\doxygen_2"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib $(NoInherit)"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine=""
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\doxygen_2"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib $(NoInherit)"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine=""
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\doxygen_2.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_3.vcproj b/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_3.vcproj
deleted file mode 100644
index 0a326ba5e8..0000000000
--- a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_3.vcproj
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="doxygen_3"
- ProjectGUID="{45D4139F-BC5B-4D48-BAB8-9901C53ECCC9}"
- RootNamespace="doxygen_3"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\doxygen_3"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib $(NoInherit)"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine=""
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\doxygen_3"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib $(NoInherit)"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine=""
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\doxygen_3.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_4.cpp b/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_4.cpp
index 203d10f5fc..b6fdecb73d 100644
--- a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_4.cpp
+++ b/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_4.cpp
@@ -18,9 +18,9 @@ OBSOLETE
#include <boost/geometry/multi/multi.hpp>
#include <boost/geometry/io/wkt/wkt.hpp>
-#include <boost/geometry/extensions/io/svg/write_svg_multi.hpp>
+#include <boost/geometry/io/svg/write_svg_multi.hpp>
-#include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+#include <boost/geometry/io/svg/svg_mapper.hpp>
static const int wkt_countries_count = 1;
diff --git a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_4.vcproj b/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_4.vcproj
deleted file mode 100644
index d65ca80c1d..0000000000
--- a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_4.vcproj
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="doxygen_4"
- ProjectGUID="{CBEDAEC7-EC87-4F91-9C45-F9505A052A44}"
- RootNamespace="doxygen_4"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\doxygen_4"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../../../test"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib $(NoInherit)"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine=""
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\doxygen_4"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../../../test"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib $(NoInherit)"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine=""
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\doxygen_4.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_5.vcproj b/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_5.vcproj
deleted file mode 100644
index 23505e8c9c..0000000000
--- a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_5.vcproj
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="doxygen_5"
- ProjectGUID="{0CDE9E15-C937-4D05-B9BF-A2D96B8EAD33}"
- RootNamespace="doxygen_5"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\doxygen_5"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../../../test"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib $(NoInherit)"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine=""
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\doxygen_5"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../../../test"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib $(NoInherit)"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine=""
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\doxygen_5.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_examples.sln b/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_examples.sln
deleted file mode 100644
index d7fd0b3265..0000000000
--- a/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_examples.sln
+++ /dev/null
@@ -1,43 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doxygen_1", "doxygen_1.vcproj", "{861F130D-2849-4B50-B240-049DBD9D3F18}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doxygen_2", "doxygen_2.vcproj", "{6CF6A521-57E0-4DA4-9D17-ED5D29E4208C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doxygen_3", "doxygen_3.vcproj", "{45D4139F-BC5B-4D48-BAB8-9901C53ECCC9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doxygen_4", "doxygen_4.vcproj", "{CBEDAEC7-EC87-4F91-9C45-F9505A052A44}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doxygen_5", "doxygen_5.vcproj", "{0CDE9E15-C937-4D05-B9BF-A2D96B8EAD33}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {861F130D-2849-4B50-B240-049DBD9D3F18}.Debug|Win32.ActiveCfg = Debug|Win32
- {861F130D-2849-4B50-B240-049DBD9D3F18}.Debug|Win32.Build.0 = Debug|Win32
- {861F130D-2849-4B50-B240-049DBD9D3F18}.Release|Win32.ActiveCfg = Release|Win32
- {861F130D-2849-4B50-B240-049DBD9D3F18}.Release|Win32.Build.0 = Release|Win32
- {6CF6A521-57E0-4DA4-9D17-ED5D29E4208C}.Debug|Win32.ActiveCfg = Debug|Win32
- {6CF6A521-57E0-4DA4-9D17-ED5D29E4208C}.Debug|Win32.Build.0 = Debug|Win32
- {6CF6A521-57E0-4DA4-9D17-ED5D29E4208C}.Release|Win32.ActiveCfg = Release|Win32
- {6CF6A521-57E0-4DA4-9D17-ED5D29E4208C}.Release|Win32.Build.0 = Release|Win32
- {45D4139F-BC5B-4D48-BAB8-9901C53ECCC9}.Debug|Win32.ActiveCfg = Debug|Win32
- {45D4139F-BC5B-4D48-BAB8-9901C53ECCC9}.Debug|Win32.Build.0 = Debug|Win32
- {45D4139F-BC5B-4D48-BAB8-9901C53ECCC9}.Release|Win32.ActiveCfg = Release|Win32
- {45D4139F-BC5B-4D48-BAB8-9901C53ECCC9}.Release|Win32.Build.0 = Release|Win32
- {CBEDAEC7-EC87-4F91-9C45-F9505A052A44}.Debug|Win32.ActiveCfg = Debug|Win32
- {CBEDAEC7-EC87-4F91-9C45-F9505A052A44}.Debug|Win32.Build.0 = Debug|Win32
- {CBEDAEC7-EC87-4F91-9C45-F9505A052A44}.Release|Win32.ActiveCfg = Release|Win32
- {CBEDAEC7-EC87-4F91-9C45-F9505A052A44}.Release|Win32.Build.0 = Release|Win32
- {0CDE9E15-C937-4D05-B9BF-A2D96B8EAD33}.Debug|Win32.ActiveCfg = Debug|Win32
- {0CDE9E15-C937-4D05-B9BF-A2D96B8EAD33}.Debug|Win32.Build.0 = Debug|Win32
- {0CDE9E15-C937-4D05-B9BF-A2D96B8EAD33}.Release|Win32.ActiveCfg = Release|Win32
- {0CDE9E15-C937-4D05-B9BF-A2D96B8EAD33}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/doc/doxy/doxygen_output/html/doxygen.css b/libs/geometry/doc/doxy/doxygen_output/html/doxygen.css
deleted file mode 100644
index 658686fe4e..0000000000
--- a/libs/geometry/doc/doxy/doxygen_output/html/doxygen.css
+++ /dev/null
@@ -1,656 +0,0 @@
-/* The standard CSS for doxygen */
-
-body, table, div, p, dl {
- font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
- font-size: 12px;
-}
-
-/* @group Heading Levels */
-
-h1 {
- font-size: 150%;
-}
-
-h2 {
- font-size: 120%;
-}
-
-h3 {
- font-size: 100%;
-}
-
-dt {
- font-weight: bold;
-}
-
-div.multicol {
- -moz-column-gap: 1em;
- -webkit-column-gap: 1em;
- -moz-column-count: 3;
- -webkit-column-count: 3;
-}
-
-p.startli, p.startdd, p.starttd {
- margin-top: 2px;
-}
-
-p.endli {
- margin-bottom: 0px;
-}
-
-p.enddd {
- margin-bottom: 4px;
-}
-
-p.endtd {
- margin-bottom: 2px;
-}
-
-/* @end */
-
-caption {
- font-weight: bold;
-}
-
-span.legend {
- font-size: 70%;
- text-align: center;
-}
-
-h3.version {
- font-size: 90%;
- text-align: center;
-}
-
-div.qindex, div.navtab{
- background-color: #EBEFF6;
- border: 1px solid #A3B4D7;
- text-align: center;
- margin: 2px;
- padding: 2px;
-}
-
-div.qindex, div.navpath {
- width: 100%;
- line-height: 140%;
-}
-
-div.navtab {
- margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
- color: #3D578C;
- font-weight: normal;
- text-decoration: none;
-}
-
-.contents a:visited {
- color: #4665A2;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-a.qindex {
- font-weight: bold;
-}
-
-a.qindexHL {
- font-weight: bold;
- background-color: #9CAFD4;
- color: #ffffff;
- border: 1px double #869DCA;
-}
-
-.contents a.qindexHL:visited {
- color: #ffffff;
-}
-
-a.el {
- font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code {
- color: #4665A2;
-}
-
-a.codeRef {
- color: #4665A2;
-}
-
-/* @end */
-
-dl.el {
- margin-left: -1cm;
-}
-
-.fragment {
- font-family: monospace, fixed;
- font-size: 105%;
-}
-
-pre.fragment {
- border: 1px solid #C4CFE5;
- background-color: #FBFCFD;
- padding: 4px 6px;
- margin: 4px 8px 4px 2px;
- overflow: auto;
- word-wrap: break-word;
- font-size: 9pt;
- line-height: 125%;
-}
-
-div.ah {
- background-color: black;
- font-weight: bold;
- color: #ffffff;
- margin-bottom: 3px;
- margin-top: 3px;
- padding: 0.2em;
- border: solid thin #333;
- border-radius: 0.5em;
- -webkit-border-radius: .5em;
- -moz-border-radius: .5em;
- -webkit-box-shadow: 2px 2px 3px #999;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
- background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
- background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
-}
-
-div.groupHeader {
- margin-left: 16px;
- margin-top: 12px;
- margin-bottom: 6px;
- font-weight: bold;
-}
-
-div.groupText {
- margin-left: 16px;
- font-style: italic;
-}
-
-body {
- background: white;
- color: black;
- margin: 0;
-}
-
-div.contents {
- margin-top: 10px;
- margin-left: 10px;
- margin-right: 10px;
-}
-
-td.indexkey {
- background-color: #EBEFF6;
- font-weight: bold;
- border: 1px solid #C4CFE5;
- margin: 2px 0px 2px 0;
- padding: 2px 10px;
-}
-
-td.indexvalue {
- background-color: #EBEFF6;
- border: 1px solid #C4CFE5;
- padding: 2px 10px;
- margin: 2px 0px;
-}
-
-tr.memlist {
- background-color: #EEF1F7;
-}
-
-p.formulaDsp {
- text-align: center;
-}
-
-img.formulaDsp {
-
-}
-
-img.formulaInl {
- vertical-align: middle;
-}
-
-div.center {
- text-align: center;
- margin-top: 0px;
- margin-bottom: 0px;
- padding: 0px;
-}
-
-div.center img {
- border: 0px;
-}
-
-address.footer {
- text-align: right;
- padding-right: 12px;
-}
-
-img.footer {
- border: 0px;
- vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
- color: #008000
-}
-
-span.keywordtype {
- color: #604020
-}
-
-span.keywordflow {
- color: #e08000
-}
-
-span.comment {
- color: #800000
-}
-
-span.preprocessor {
- color: #806020
-}
-
-span.stringliteral {
- color: #002080
-}
-
-span.charliteral {
- color: #008080
-}
-
-span.vhdldigit {
- color: #ff00ff
-}
-
-span.vhdlchar {
- color: #000000
-}
-
-span.vhdlkeyword {
- color: #700070
-}
-
-span.vhdllogic {
- color: #ff0000
-}
-
-/* @end */
-
-/*
-.search {
- color: #003399;
- font-weight: bold;
-}
-
-form.search {
- margin-bottom: 0px;
- margin-top: 0px;
-}
-
-input.search {
- font-size: 75%;
- color: #000080;
- font-weight: normal;
- background-color: #e8eef2;
-}
-*/
-
-td.tiny {
- font-size: 75%;
-}
-
-.dirtab {
- padding: 4px;
- border-collapse: collapse;
- border: 1px solid #A3B4D7;
-}
-
-th.dirtab {
- background: #EBEFF6;
- font-weight: bold;
-}
-
-hr {
- height: 0px;
- border: none;
- border-top: 1px solid #4A6AAA;
-}
-
-hr.footer {
- height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
- border-spacing: 0px;
- padding: 0px;
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
- background-color: #F9FAFC;
- border: none;
- margin: 4px;
- padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
- padding: 0px 8px 4px 8px;
- color: #555;
-}
-
-.memItemLeft, .memItemRight, .memTemplParams {
- border-top: 1px solid #C4CFE5;
-}
-
-.memItemLeft, .memTemplItemLeft {
- white-space: nowrap;
-}
-
-.memTemplParams {
- color: #4665A2;
- white-space: nowrap;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
- font-size: 80%;
- color: #4665A2;
- font-weight: normal;
- margin-left: 3px;
-}
-
-.memnav {
- background-color: #EBEFF6;
- border: 1px solid #A3B4D7;
- text-align: center;
- margin: 2px;
- margin-right: 15px;
- padding: 2px;
-}
-
-.memitem {
- padding: 0;
- margin-bottom: 10px;
-}
-
-.memname {
- white-space: nowrap;
- font-weight: bold;
- margin-left: 6px;
-}
-
-.memproto {
- border-top: 1px solid #A8B8D9;
- border-left: 1px solid #A8B8D9;
- border-right: 1px solid #A8B8D9;
- padding: 6px 0px 6px 0px;
- color: #253555;
- font-weight: bold;
- text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
- /* firefox specific markup */
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- -moz-border-radius-topright: 8px;
- -moz-border-radius-topleft: 8px;
- /* webkit specific markup */
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- -webkit-border-top-right-radius: 8px;
- -webkit-border-top-left-radius: 8px;
- background-image:url('nav_f.png');
- background-repeat:repeat-x;
- background-color: #E2E8F2;
-
-}
-
-.memdoc {
- border-bottom: 1px solid #A8B8D9;
- border-left: 1px solid #A8B8D9;
- border-right: 1px solid #A8B8D9;
- padding: 2px 5px;
- background-color: #FBFCFD;
- border-top-width: 0;
- /* firefox specific markup */
- -moz-border-radius-bottomleft: 8px;
- -moz-border-radius-bottomright: 8px;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
- /* webkit specific markup */
- -webkit-border-bottom-left-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
-}
-
-.paramkey {
- text-align: right;
-}
-
-.paramtype {
- white-space: nowrap;
-}
-
-.paramname {
- color: #602020;
- white-space: nowrap;
-}
-.paramname em {
- font-style: normal;
-}
-
-/* @end */
-
-/* @group Directory (tree) */
-
-/* for the tree view */
-
-.ftvtree {
- font-family: sans-serif;
- margin: 0px;
-}
-
-/* these are for tree view when used as main index */
-
-.directory {
- font-size: 9pt;
- font-weight: bold;
- margin: 5px;
-}
-
-.directory h3 {
- margin: 0px;
- margin-top: 1em;
- font-size: 11pt;
-}
-
-/*
-The following two styles can be used to replace the root node title
-with an image of your choice. Simply uncomment the next two styles,
-specify the name of your image and be sure to set 'height' to the
-proper pixel height of your image.
-*/
-
-/*
-.directory h3.swap {
- height: 61px;
- background-repeat: no-repeat;
- background-image: url("yourimage.gif");
-}
-.directory h3.swap span {
- display: none;
-}
-*/
-
-.directory > h3 {
- margin-top: 0;
-}
-
-.directory p {
- margin: 0px;
- white-space: nowrap;
-}
-
-.directory div {
- display: none;
- margin: 0px;
-}
-
-.directory img {
- vertical-align: -30%;
-}
-
-/* these are for tree view when not used as main index */
-
-.directory-alt {
- font-size: 100%;
- font-weight: bold;
-}
-
-.directory-alt h3 {
- margin: 0px;
- margin-top: 1em;
- font-size: 11pt;
-}
-
-.directory-alt > h3 {
- margin-top: 0;
-}
-
-.directory-alt p {
- margin: 0px;
- white-space: nowrap;
-}
-
-.directory-alt div {
- display: none;
- margin: 0px;
-}
-
-.directory-alt img {
- vertical-align: -30%;
-}
-
-/* @end */
-
-div.dynheader {
- margin-top: 8px;
-}
-
-address {
- font-style: normal;
- color: #2A3D61;
-}
-
-table.doxtable {
- border-collapse:collapse;
-}
-
-table.doxtable td, table.doxtable th {
- border: 1px solid #2D4068;
- padding: 3px 7px 2px;
-}
-
-table.doxtable th {
- background-color: #374F7F;
- color: #FFFFFF;
- font-size: 110%;
- padding-bottom: 4px;
- padding-top: 5px;
- text-align:left;
-}
-
-.tabsearch {
- top: 0px;
- left: 10px;
- height: 36px;
- background-image: url('tab_b.png');
- z-index: 101;
- overflow: hidden;
- font-size: 13px;
-}
-
-.navpath ul
-{
- font-size: 11px;
- background-image:url('tab_b.png');
- background-repeat:repeat-x;
- height:30px;
- line-height:30px;
- color:#8AA0CC;
- border:solid 1px #C2CDE4;
- overflow:hidden;
- margin:0px;
- padding:0px;
-}
-
-.navpath li
-{
- list-style-type:none;
- float:left;
- padding-left:10px;
- padding-right: 15px;
- background-image:url('bc_s.png');
- background-repeat:no-repeat;
- background-position:right;
- color:#364D7C;
-}
-
-.navpath a
-{
- height:32px;
- display:block;
- text-decoration: none;
- outline: none;
-}
-
-.navpath a:hover
-{
- color:#6884BD;
-}
-
-div.summary
-{
- float: right;
- font-size: 8pt;
- padding-right: 5px;
- width: 50%;
- text-align: right;
-}
-
-div.summary a
-{
- white-space: nowrap;
-}
-
-div.header
-{
- background-image:url('nav_h.png');
- background-repeat:repeat-x;
- background-color: #F9FAFC;
- margin: 0px;
- border-bottom: 1px solid #C4CFE5;
-}
-
-div.headertitle
-{
- padding: 5px 5px 5px 10px;
-}
-
diff --git a/libs/geometry/doc/doxy/doxygen_output/html/doxygen.png b/libs/geometry/doc/doxy/doxygen_output/html/doxygen.png
deleted file mode 100644
index 635ed52fce..0000000000
--- a/libs/geometry/doc/doxy/doxygen_output/html/doxygen.png
+++ /dev/null
Binary files differ
diff --git a/libs/geometry/doc/doxy/doxygen_output/html/tabs.css b/libs/geometry/doc/doxy/doxygen_output/html/tabs.css
deleted file mode 100644
index 21920562a8..0000000000
--- a/libs/geometry/doc/doxy/doxygen_output/html/tabs.css
+++ /dev/null
@@ -1,59 +0,0 @@
-.tabs, .tabs2, .tabs3 {
- background-image: url('tab_b.png');
- width: 100%;
- z-index: 101;
- font-size: 13px;
-}
-
-.tabs2 {
- font-size: 10px;
-}
-.tabs3 {
- font-size: 9px;
-}
-
-.tablist {
- margin: 0;
- padding: 0;
- display: table;
-}
-
-.tablist li {
- float: left;
- display: table-cell;
- background-image: url('tab_b.png');
- line-height: 36px;
- list-style: none;
-}
-
-.tablist a {
- display: block;
- padding: 0 20px;
- font-weight: bold;
- background-image:url('tab_s.png');
- background-repeat:no-repeat;
- background-position:right;
- color: #283A5D;
- text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
- text-decoration: none;
- outline: none;
-}
-
-.tabs3 .tablist a {
- padding: 0 10px;
-}
-
-.tablist a:hover {
- background-image: url('tab_h.png');
- background-repeat:repeat-x;
- color: #fff;
- text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
- text-decoration: none;
-}
-
-.tablist li.current a {
- background-image: url('tab_a.png');
- background-repeat:repeat-x;
- color: #fff;
- text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-}
diff --git a/libs/geometry/doc/example_adapting_a_legacy_geometry_object_model.qbk b/libs/geometry/doc/example_adapting_a_legacy_geometry_object_model.qbk
new file mode 100644
index 0000000000..8c3b9b3a2e
--- /dev/null
+++ b/libs/geometry/doc/example_adapting_a_legacy_geometry_object_model.qbk
@@ -0,0 +1,587 @@
+[section Example: Adapting a legacy geometry object model]
+
+One of the primary benefits of __boost_geometry__, and the reason for its fairly complex template-based implementation, is that it allows for integration with legacy classes/objects.
+
+By defining the relationship between the __boost_geometry__ concepts and an existing, legacy object model, the legacy objects can be used in place of __boost_geometry__'s own geometry classes.
+
+__boost_geometry__ will then happliy read and write directly from and to the legacy object, treating it as a native __boost_geometry__ object.
+
+This means that one can adapt algorithms and methods from __boost_geometry__ to any existing legacy geometry object model at a very small runtime cost, which is simply not possible with most geometry libraries, where one has to make an intermediate object specific to the geometry library one is using.
+
+The following example will demonstrate the adaption process of a legacy geometry object model for use with __boost_geometry__.
+
+[h2 Adapting a shared geometry legacy object model]
+
+[h3 Example code: object hierarcy]
+
+ class QPoint
+ {
+ public:
+ double x;
+ double y;
+ QPoint(double x, double y) : x(x), y(y) {}
+ };
+
+ class QLineString
+ {
+ public:
+ bool cw;
+ std::vector<QPoint*> points;
+ };
+
+ class QRing
+ {
+ public:
+ std::vector<QLineString*> lines;
+ };
+
+ class QPolygon
+ {
+ public:
+ QRing* exterior;
+ std::vector<QRing*> interiors;
+ };
+
+The legacy object hierarcy is based on topology (e.g. two QRings might share one QLineString) instead of points directly (i.e. each object does not point directly to it's QPoints), and it also uses pointers for access.
+
+This is the other common way to approach geometries, to enable e.g. shared boundaries between surfaces. __boost_geometry__'s approach use simple features, and does not have shared geometries.
+
+The mismatch in representation is fixed by creating a custom iterator, that exposes a __boost_range__ of Points for every object. This way, __boost_geometry__'s functions will operate on the QRing as if it was a collection of Points, which is a requirement.
+
+[h2 Adapting QPoint]
+
+The [link adaption_of_qpoint_source_code adaption of the QPoint] is fairly straightforward, one just needs to implement the requirements.
+
+Even though the geometries in our legacy object model use pointers of QPoints, __boost_geometry__ automatically handles the conversion from pointers-to-Points to references-to-Points internally, so we do not have to convert them manually.
+
+Alternatively, we can use the [link geometry.reference.adapted.register.boost_geometry_register_point_2d BOOST_GEOMETRY_REGISTER_POINT_2D(QPoint, double, cs::cartesian, x, y)] helper macro, which does exactly the same as our manual adaption.
+
+The sample code adapts QPoint to the [link geometry.reference.concepts.concept_point Point Concept] using specialization of the traits class.
+
+[h2 Adapting QLineString]
+
+The [link adaption_of_qlinestring_source_code adaption of the QLineString] is very simple on the surface, as it is just "a specialization of traits::tag defining linestring_tag as type". Alternatively, we can use the [link geometry.reference.adapted.register.boost_geometry_register_linestring BOOST_GEOMETRY_REGISTER_LINESTRING(QLineString)] helper macro, which does exactly the same as our manual adaption.
+
+However, the [link geometry.reference.concepts.concept_linestring LineString concept] also requires that the collection of Points "must behave like a __boost_range__ Random Access Range" and "the type defined by the metafunction range_value<...>::type must fulfill the Point Concept".
+
+This means that we have to do two things:
+
+* Make QLineString behave like a __boost_range__, with Random Access requirements
+* Make sure that the __boost_range__ iterates over QPoints, which we already have adapted
+
+This might look like a lot of work, but we are in luck: a std::vector is nearly a __boost_range__, and already iterate over pointers-to-QPoints, that are handled by __boost_geometry__. The [link adaption_of_qlinestring_range_source_code code for making QLineString a __boost_range__] is therefore fairly straightforward.
+
+[h2 Adapting QRing]
+
+The [link adaption_of_qring_source_code adaption of the QRing] is mostly equal to the QLineString in that there is a tag and a collection to iterate through. Alternatively, we can use the [link geometry.reference.adapted.register.boost_geometry_register_ring BOOST_GEOMETRY_REGISTER_RING(QRing)] helper macro, which does exactly the same as our manual adaption.
+
+However, the QRing expose pointers-to-QLineStrings, and not QPoints directly, which is [link geometry.reference.concepts.concept_ring required in the Ring concept], so it is not enough to trivially make the std::vector into a __boost_range__. We need to create a Boost.Iterator that expose QPoints, and because we are dealing with a legacy object model, we are not allowed to change the class definition.
+
+The [link adaption_of_qring_iterator_source_code custom iterator that does this] uses Boost.Iterator Facade, and is not very different from the [@http://www.boost.org/doc/libs/1_53_0/libs/iterator/doc/iterator_facade.html example provided in Boost.Iterator's own documentation](link), except that our __boost_range__ need to be random access.
+
+Now, with the custom iterator made, we can [link adaption_of_qring_range_source_code define the __boost_range__] that traverses through QPoints.
+
+[h2 Adapting QPolygon]
+
+[link adaption_of_qpolygon_source_code Adapting the QPolygon] to the [link geometry.reference.concepts.concept_polygon Polygon Concept] is a little more involved than the other geometry types.
+
+The only requirement that is not straightforward to adapt is the interior_rings' get method.
+
+A __boost_geometry__ Polygon operates on Ring objects, and unfortunately, __boost_geometry__ does not automatically handle the conversion from pointers to references for Rings internally (only Points, as mentioned).
+
+Therefore, we need to expose QRings instead of pointers-to-QRings for the interior Rings, which means a little more work than the pointers-to-QPoints for QLineString and QRing.
+
+First, we [link adaption_of_qpolygon_iterator_source_code create a Boost.Iterator Facade] that returns QRing instead of pointer-to-QRing:
+
+Now we have an iterator that can "convert" our pointer-to-QRing into QRing. However, the get method of the interior Rings must return a __boost_range__ compatible object, which a plain PolygonRingIterator is not.
+
+We need to [link adaption_of_qpolygon_range_source_code define another __boost_range__], that can be constructed with PolygonRingIterators as arguments, and returned from the get method.
+
+[h2 Conclusion]
+
+That's it! The methods of __boost_geometry__ can now be used directly on instances of our legacy object model.
+
+[endsect]
+
+[section Example source code: Adapting a legacy geometry object model]
+
+[h2 Adaption of QPoint]
+[#adaption_of_qpoint_source_code]
+
+ #include <boost/geometry.hpp>
+
+ namespace boost
+ {
+ namespace geometry
+ {
+ namespace traits
+ {
+ // Adapt QPoint to Boost.Geometry
+
+ template<> struct tag<QPoint>
+ { typedef point_tag type; };
+
+ template<> struct coordinate_type<QPoint>
+ { typedef QPoint::double type; };
+
+ template<> struct coordinate_system<QPoint>
+ { typedef cs::cartesian type; };
+
+ template<> struct dimension<QPoint> : boost::mpl::int_<2> {};
+
+ template<>
+ struct access<QPoint, 0>
+ {
+ static QPoint::double get(QPoint const& p)
+ {
+ return p.x;
+ }
+
+ static void set(QPoint& p, QPoint::double const& value)
+ {
+ p.x = value;
+ }
+ };
+
+ template<>
+ struct access<QPoint, 1>
+ {
+ static QPoint::double get(QPoint const& p)
+ {
+ return p.y;
+ }
+
+ static void set(QPoint& p, QPoint::double const& value)
+ {
+ p.y = value;
+ }
+ };
+ }
+ }
+ } // namespace boost::geometry::traits
+
+
+
+
+[h2 Adaption of QLineString]
+[#adaption_of_qlinestring_source_code]
+
+ namespace boost
+ {
+ namespace geometry
+ {
+ namespace traits
+ {
+ template<>
+ struct tag<QLineString>
+ {
+ typedef linestring_tag type;
+ };
+ }
+ }
+ } // namespace boost::geometry::traits
+
+[h3 Boost.Range for QLineString]
+[#adaption_of_qlinestring_range_source_code]
+
+ #include <boost/range.hpp>
+
+ namespace boost
+ {
+ template <>
+ struct range_iterator<QLineString>
+ { typedef std::vector<QPoint*>::iterator type; };
+
+ template<>
+ struct range_const_iterator<QLineString>
+ { typedef std::vector<QPoint*>::const_iterator type; };
+ }
+
+ inline std::vector<QPoint*>::iterator
+ range_begin(QLineString& qls) {return qls.points.begin();}
+
+ inline std::vector<QPoint*>::iterator
+ range_end(QLineString& qls) {return qls.points.end();}
+
+ inline std::vector<QPoint*>::const_iterator
+ range_begin(const QLineString& qls) {return qls.points.begin();}
+
+ inline std::vector<QPoint*>::const_iterator
+ range_end(const QLineString& qls) {return qls.points.end();}
+
+[h2 Adaption of QRing]
+[#adaption_of_qring_source_code]
+
+ namespace boost
+ {
+ namespace geometry
+ {
+ namespace traits
+ {
+ template<>
+ struct tag<QRing>
+ {
+ typedef ring_tag type;
+ };
+ }
+ }
+ } // namespace boost::geometry::traits
+
+[h3 Boost.Iterator for QRing]
+[#adaption_of_qring_iterator_source_code]
+
+ #include <boost/iterator/iterator_facade.hpp>
+
+ /* Custom iterator type that flattens a 2D array into a 1D array */
+ template <class I, // Line iterator type
+ class R // Point reference type
+ >
+ class RingIteratorImpl : public boost::iterator_facade<
+ RingIteratorImpl<I,R>, R, std::random_access_iterator_tag, R> //new traversal tag boost::random_access_traversal_tag
+ {
+ public:
+ RingIteratorImpl() : pointIndex_(0)
+ {
+ }
+
+ explicit RingIteratorImpl(I lineStringIterCurrent)
+ : lineStringIterCurrent_(lineStringIterCurrent), pointIndex_(0)
+ {
+ }
+
+ template<class OtherI, class OtherR>
+ RingIteratorImpl(RingIteratorImpl<OtherI, OtherR> const& other) :
+ lineStringIterCurrent_(other.getLineStrIt()), pointIndex_(other.getPointIdx())
+ {
+ }
+
+ I getLineStrIt() const {return lineStringIterCurrent_;}
+
+ bool isEmpty() const {return isEmpty;}
+ size_t getPointIdx() const {return pointIndex_;}
+
+ typedef typename boost::iterator_facade<RingIteratorImpl<I,R>, R, std::random_access_iterator_tag, R>::difference_type difference_type;
+
+ private:
+ friend class boost::iterator_core_access;
+
+ void increment()
+ {
+ ++pointIndex_;
+ if (pointIndex_ >= (*lineStringIterCurrent_)->points.size())
+ {
+ ++lineStringIterCurrent_;
+ pointIndex_ = 0;
+ }
+ }
+
+ void decrement()
+ {
+ if(pointIndex_>0)
+ {
+ --pointIndex_;
+ }
+ else
+ {
+ --lineStringIterCurrent_;
+ pointIndex_ = (*lineStringIterCurrent_)->points.size();
+ }
+ }
+
+ void advance(difference_type n)
+ {
+ difference_type counter = n;
+
+ difference_type maxPointIndex, remainderPointIndex;
+
+ while(counter>0)
+ {
+ maxPointIndex = (*lineStringIterCurrent_)->points.size(),
+ remainderPointIndex = maxPointIndex - pointIndex_;
+
+ if(counter>remainderPointIndex)
+ {
+ counter -= remainderPointIndex;
+ ++lineStringIterCurrent_;
+ }
+ else // (counter<=remainderPointIndex)
+ {
+ counter = 0;
+ pointIndex_ = remainderPointIndex;
+ }
+ }
+
+ }
+
+ difference_type distance_to(const RingIteratorImpl& other) const
+ {
+ I currentLineStringIter = getLineStrIt();
+ I otherLineStringIter = other.getLineStrIt();
+
+ difference_type count = 0;
+ difference_type distance_to_other = std::distance(currentLineStringIter, otherLineStringIter);
+
+ if(distance_to_other < 0)
+ {
+ count += pointIndex_;
+
+ while(distance_to_other < 0)
+ {
+ QLineString const* ls = *otherLineStringIter;
+ count -= ls->points.size();
+
+ ++otherLineStringIter;
+ ++distance_to_other;
+ }
+
+ assert(otherLineStringIter==currentLineStringIter);
+ }
+ else if(distance_to_other > 0)
+ {
+ count -= pointIndex_;
+
+ while(distance_to_other < 0)
+ {
+ QLineString const* ls = *currentLineStringIter;
+ count += ls->points.size();
+
+ ++currentLineStringIter;
+ --distance_to_other;
+ }
+
+ assert(otherLineStringIter==currentLineStringIter);
+ }
+ else
+ {
+ count = pointIndex_ - other.getPointIdx();
+ }
+
+ return count;
+ }
+
+ bool equal(const RingIteratorImpl& other) const
+ {
+ return (lineStringIterCurrent_ == other.getLineStrIt()) &&
+ (pointIndex_ == other.getPointIdx());
+ }
+
+ R dereference() const {return *(*lineStringIterCurrent_)->points[pointIndex_];}
+
+
+ I lineStringIterCurrent_;
+
+ bool empty;
+ size_t pointIndex_;
+ };
+
+
+[h3 Boost.Range for QRing]
+[#adaption_of_qring_range_source_code]
+
+ typedef RingIteratorImpl<std::vector<QLineString*>::iterator, QPoint> RingIterator;
+ typedef RingIteratorImpl<std::vector<QLineString*>::const_iterator, const QPoint> ConstRingIterator;
+
+ namespace boost
+ {
+ // Specialize metafunctions. We must include the range.hpp header.
+ // We must open the 'boost' namespace.
+
+ template <>
+ struct range_iterator<QRing>
+ { typedef RingIterator type; };
+
+ template<>
+ struct range_const_iterator<QRing>
+ { typedef ConstRingIterator type; };
+
+ } // namespace 'boost'
+
+
+ // The required Range functions. These should be defined in the same namespace
+ // as Ring.
+
+ inline RingIterator range_begin(QRing& r)
+ {return RingIterator(r.lines.begin());}
+
+ inline ConstRingIterator range_begin(const QRing& r)
+ {return ConstRingIterator(r.lines.begin());}
+
+ inline RingIterator range_end(QRing& r)
+ {return RingIterator(r.lines.end());}
+
+ inline ConstRingIterator range_end(const QRing& r)
+ {return ConstRingIterator(r.lines.end());}
+
+[h2 Adaption of QPolygon]
+[#adaption_of_qpolygon_source_code]
+
+ namespace boost {
+ namespace geometry {
+ namespace traits {
+ template<> struct tag<QPolygon> { typedef polygon_tag type; };
+ template<> struct ring_const_type<QPolygon> { typedef const QRing& type; };
+ template<> struct ring_mutable_type<QPolygon> { typedef QRing& type; };
+ template<> struct interior_const_type<QPolygon> { typedef const CustomPolygonRingRange type; };
+ template<> struct interior_mutable_type<QPolygon> { typedef CustomPolygonRingRange type; };
+
+ template<> struct exterior_ring<QPolygon>
+ {
+ static QRing& get(QPolygon& p)
+ {
+ return (*p.exterior);
+ }
+ static QRing const& get(QPolygon const& p)
+ {
+ return (*p.exterior);
+ }
+ };
+
+ template<> struct interior_rings<QPolygon>
+ {
+ static CustomPolygonRingRange get(QPolygon& p)
+ {
+ return CustomPolygonRingRange(PolygonRingIterator(p.interiors.begin()), PolygonRingIterator(p.interiors.end()));
+ }
+ static const CustomPolygonRingRange get(QPolygon const& p)
+ {
+ return CustomPolygonRingRange(ConstPolygonRingIterator(p.interiors.begin()), ConstPolygonRingIterator(p.interiors.end()));
+ }
+ };
+ }
+ }
+ } // namespace boost::geometry::traits
+
+
+[h3 Boost.Iterator for QRings in QPolygon]
+[#adaption_of_qpolygon_iterator_source_code]
+
+ template <class I, // Line iterator type
+ class R // Point reference type
+ >
+ class PolyRingIterator : public boost::iterator_facade<
+ PolyRingIterator<I,R>, R, std::random_access_iterator_tag, R> //new traversal tag
+ {
+ public:
+ PolyRingIterator() {}
+
+ explicit PolyRingIterator(I ringIter) : _ringIter(ringIter) {}
+
+ template<class OtherI, class OtherR>
+ PolyRingIterator(PolyRingIterator<OtherI, OtherR> const& other) :
+ _ringIter(other.getRingIter()) {}
+
+ I getRingIter() const {return _ringIter;}
+
+ typedef typename boost::iterator_facade<PolyRingIterator<I,R>, R, std::random_access_iterator_tag, R>::difference_type difference_type;
+
+ private:
+ friend class boost::iterator_core_access;
+
+ void increment()
+ {
+ ++_ringIter;
+ }
+
+ void decrement()
+ {
+ --_ringIter;
+ }
+
+ void advance(difference_type n)
+ {
+ std::advance(_ringIter,n);
+ }
+
+ difference_type distance_to(const PolyRingIterator& other) const
+ {
+ return std::distance(_ringIter, other.getRingIter());
+ }
+
+ bool equal(const PolyRingIterator& other) const
+ {
+ return _ringIter == other.getRingIter();
+ }
+
+ R dereference() const {return *(*_ringIter);}
+
+ I _ringIter;
+ };
+
+[h3 Boost.Range for PolygonRingIterator]
+[#adaption_of_qpolygon_range_source_code]
+
+ typedef PolyRingIterator<std::vector<QRing*>::iterator, QRing> PolygonRingIterator;
+ typedef PolyRingIterator<std::vector<QRing*>::const_iterator, const QRing> ConstPolygonRingIterator;
+
+ class CustomPolygonRingRange
+ {
+ PolygonRingIterator _begin;
+ PolygonRingIterator _end;
+
+ bool isIterSet;
+
+ ConstPolygonRingIterator _cbegin;
+ ConstPolygonRingIterator _cend;
+
+ bool isCIterSet;
+
+ public:
+
+ CustomPolygonRingRange(PolygonRingIterator begin, PolygonRingIterator end) : _begin(begin), _end(end), isIterSet(true) {}
+ CustomPolygonRingRange(ConstPolygonRingIterator begin, ConstPolygonRingIterator end) : _cbegin(begin), _cend(end), isCIterSet(true) {}
+
+ PolygonRingIterator begin()
+ {
+ assert(isIterSet);
+ return _begin;
+ }
+
+ ConstPolygonRingIterator cbegin() const
+ {
+ assert(isCIterSet);
+ return _cbegin;
+ }
+
+ PolygonRingIterator end()
+ {
+ assert(isIterSet);
+ return _end;
+ }
+
+ ConstPolygonRingIterator cend() const
+ {
+ assert(isCIterSet);
+ return _cend;
+ }
+ };
+
+ namespace boost
+ {
+ // Specialize metafunctions. We must include the range.hpp header.
+ // We must open the 'boost' namespace.
+
+ template <>
+ struct range_iterator<CustomPolygonRingRange> { typedef PolygonRingIterator type; };
+
+ template<>
+ struct range_const_iterator<CustomPolygonRingRange> { typedef ConstPolygonRingIterator type; };
+
+ } // namespace 'boost'
+
+
+ // The required Range functions. These should be defined in the same namespace
+ // as Ring.
+
+ inline PolygonRingIterator range_begin(CustomPolygonRingRange& r)
+ {return r.begin();}
+
+ inline ConstPolygonRingIterator range_begin(const CustomPolygonRingRange& r)
+ {return r.cbegin();}
+
+ inline PolygonRingIterator range_end(CustomPolygonRingRange& r)
+ {return r.end();}
+
+ inline ConstPolygonRingIterator range_end(const CustomPolygonRingRange& r)
+ {return r.cend();}
+
+[endsect]
diff --git a/libs/geometry/doc/generated/distance_status.qbk b/libs/geometry/doc/generated/distance_status.qbk
deleted file mode 100644
index 5dbdeba7f7..0000000000
--- a/libs/geometry/doc/generated/distance_status.qbk
+++ /dev/null
@@ -1,13 +0,0 @@
-[heading Supported geometries]
-[table
-[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon]]
-[[Point][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
-[[Segment][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[Box][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[Linestring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[Ring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[Polygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[MultiPoint][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
-[[MultiLinestring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[MultiPolygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-]
diff --git a/libs/geometry/doc/generated/equals_status.qbk b/libs/geometry/doc/generated/equals_status.qbk
deleted file mode 100644
index 6dc8bc0b20..0000000000
--- a/libs/geometry/doc/generated/equals_status.qbk
+++ /dev/null
@@ -1,10 +0,0 @@
-[heading Supported geometries]
-[table
-[[ ][Point][Box][Linestring][Ring][Polygon][MultiPolygon]]
-[[Point][[$img/ok.png]][[$img/nyi.png]][[$img/nyi.png]][[$img/nyi.png]][[$img/nyi.png]][[$img/nyi.png]]]
-[[Box][[$img/nyi.png]][[$img/ok.png]][[$img/nyi.png]][[$img/ok.png]][[$img/ok.png]][[$img/nyi.png]]]
-[[Linestring][[$img/nyi.png]][[$img/nyi.png]][[$img/ok.png]][[$img/nyi.png]][[$img/nyi.png]][[$img/nyi.png]]]
-[[Ring][[$img/nyi.png]][[$img/ok.png]][[$img/nyi.png]][[$img/ok.png]][[$img/ok.png]][[$img/nyi.png]]]
-[[Polygon][[$img/nyi.png]][[$img/ok.png]][[$img/nyi.png]][[$img/ok.png]][[$img/ok.png]][[$img/ok.png]]]
-[[MultiPolygon][[$img/nyi.png]][[$img/nyi.png]][[$img/nyi.png]][[$img/nyi.png]][[$img/ok.png]][[$img/ok.png]]]
-]
diff --git a/libs/geometry/doc/geometry.qbk b/libs/geometry/doc/geometry.qbk
index 8059fe03af..d282a7b2ae 100644
--- a/libs/geometry/doc/geometry.qbk
+++ b/libs/geometry/doc/geometry.qbk
@@ -12,8 +12,8 @@
[library Geometry
[quickbook 1.5]
- [authors [Gehrels, Barend], [Lalande, Bruno], [Loskot, Mateusz]]
- [copyright 2009-2012 Barend Gehrels, Bruno Lalande, Mateusz Loskot]
+ [authors [Gehrels, Barend], [Lalande, Bruno], [Loskot, Mateusz], [Wulkiewicz, Adam], [Karavelas, Menelaos]]
+ [copyright 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz, Oracle and/or its affiliates]
[purpose Documentation of Boost.Geometry library]
[license
Distributed under the Boost Software License, Version 1.0.
@@ -35,7 +35,8 @@
[def __geo__ Geographic]
[def __rev__ Reversed polygon (coordinates not according their orientiation)]
[def __empty__ Empty (e.g. polygon without points)]
-[def __box__ Rectangle]
+[def __box__ Box]
+[def __rectangle__ Rectangle]
[def __segment__ Segment]
[def __point__ Point]
[def __linestring__ Linestring]
@@ -108,17 +109,26 @@ Boost.Geometry contains contributions by:
* Akira Takahashi (adaption of Boost.Fusion)
* Alfredo Correa (adaption of Boost.Array)
-* Adam Wulkiewicz (spatial indexes) [footnote Currently an extension]
-* Federico Fern\u00E1ndez (spatial indexes) [footnote Currently an extension]
+* Andrew Hundt (varray container, aka. static_vector)
+* Federico Fern\u00E1ndez (preliminary version of R-tree spatial index)
* Karsten Ahnert (patch for cross-track distance)
+* Mats Taraldsvik (documentation: adapting a legacy model)
+* Matt Amos (fixes for point_on_surface)
+* Samuel Debionne (variant support for distance, assign, crosses, intersection, ...)
[include imports.qbk]
[include introduction.qbk]
-[include quickstart.qbk]
+[include compiling.qbk]
[include design_rationale.qbk]
-[include compiling.qbk]
+[include quickstart.qbk]
+
+[section Spatial Indexes]
+[include index/index.qbk]
+[endsect]
+
+[include reference.qbk]
[section Indexes]
[include matrix.qbk]
@@ -127,9 +137,12 @@ Boost.Geometry contains contributions by:
[endsect]
[endsect]
-[include reference.qbk]
+[section Examples]
+[include example_adapting_a_legacy_geometry_object_model.qbk]
+[endsect]
[include release_notes.qbk]
+[/ TODO: [include guidelines.qbk] /]
[include about_documentation.qbk]
[include acknowledgments.qbk]
diff --git a/libs/geometry/doc/guidelines.qbk b/libs/geometry/doc/guidelines.qbk
new file mode 100644
index 0000000000..e2e3fd75ae
--- /dev/null
+++ b/libs/geometry/doc/guidelines.qbk
@@ -0,0 +1,232 @@
+[/============================================================================
+ 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-2013 Mateusz Loskot, London, UK.
+
+ 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)
+
+=============================================================================/]
+
+[section:guidelines Guidelines for developers]
+
+This library is maintained by several developers, and in order it to have
+a consistent design, look and feel, a few guidelines need to be followed.
+
+Rules of [@boost:/development/requirements.html Boost Library Requirements and Guidelines]
+and [@boost:/development/header.html Boost Header Policy] always have highest authority.
+
+Generally, prefer style of modern C++, conventions as used in latest C++ standard
+document and C++ Standard Library. Boost.Spirit is a good example of
+how to write and format high quality C++ code.
+
+Some guidelines specific to Boost.Geometry library are outlined below.
+
+[heading Code structure]
+
+* Every file shall have header with copyright and license information.
+* Do not put any history or revision information in comments in source files.
+ Log it with VCS used in the Boost project.
+* Every header shall have `#include` guard based on header path and file name:
+``
+#ifndef BOOST_GEOMETRY_<DIR1>_<DIR2>_<FILE>_HPP
+#define BOOST_GEOMETRY_<DIR1>_<DIR2>_<FILE>_HPP
+...
+#endif // BOOST_GEOMETRY_<DIR1>_<DIR2>_<FILE>_HPP
+``
+* `#include` directives shall be ordered according the most authoritative header:
+ * C Standard Library (using C++ library names, i.e. `<cstdlib>`)
+ * C++ Standard Library
+ * Boost C++ Libraries
+ * Boost.Geometry headers
+ * Other 3rd-party headers (only if applicable! in some samples only)
+* Header within these sections should be ordered alphabetically, especially if there are many of them included.
+* Namespaces don't increase the level of indentation.
+ In all other cases braces increase the level of indentation.
+``
+namespace boost { namespace geometry
+{
+
+namespace mynewspace
+{
+
+template <typename Point>
+struct my_new_model
+{
+ typedef point_type;
+}
+
+} // namespace mynewspace
+
+}} // namespace boost::geometry
+``
+* Namespace closing brace should have comment with the namespace name.
+* All non-public headers should be placed into `boost/geometry/detail` or
+ `boost/geometry/*/detail` directory, depending on component level.
+* All non-public names should reside in the `boost::geometry::detail` or
+ `boost::geometry::*::detail` namespace, depending on component level.
+* All traits should be placed in dedicated `boost::geometry::traits` or
+ `boost::geometry::*::traits` namespace
+* All tag dispatching routines should be placed in dedicated
+ `boost::geometry::*::dispatch` namespace.
+* Access specifiers for class members shall be orderd as public first, then protected and private at the bottom.
+ The public members define class interface, thus they are of the highest interested for users, so show them first.
+ * Exceptions to this rule are allowed for typedef aliases required to be defined first.
+
+[heading Code formatting and indentation]
+
+* The code is indented with spaces, 4 spaces per tab.
+* The preferred line length is 80 characters, with maximum length of 100.
+ * The limit is relaxed for very long string literals (e.g. Well-Known Text with data used in tests and examples).
+* Member/base initialization list for constructors on the same line,
+ if it's small (1-2 members) or 1 member/base per line with leading comma on the left:
+```
+struct T
+{
+ T(int a, int b)
+ : a(a)
+ , b(b)
+ {}
+
+ int a;
+ int b;
+};
+```
+* Template declaration with long template parameter list shall be formatted
+ with one template parameter per line, all parameters indented,
+ but `<` and `>` brackets not indented:
+```
+template
+<
+ typename T,
+ typename P,
+ typename C = std::vector<Point>
+>
+struct polygon
+{
+ typedef typename boost::remove_const
+ <
+ typename traits::point_type<T>::type
+ >::type type
+};
+```
+* References and pointers should be formatted emphasizing type, not syntax:
+```
+T const& t;
+T* t;
+T* const t;
+T const* t;
+T const* const t;
+```
+* Braces enclosing block of code (if-else, loops) should be placed in separate lines
+```
+if (expr)
+{
+}
+```
+* Parentheses around expressions should not be pre/post-fixed with spaces.
+
+[heading Naming conventions]
+
+* All names follow style of the C++ Standard, lowercase with words separated with underscore `_`,
+ unless otherwise specified (see other rules).
+* Template parameters are named in CamelCase.
+* Concepts are named in CamelCase.
+* Name of a class data member shall start with `m_` prefix.
+ The Boost sample header gives no prefix or suffix at all.
+ However, the `m_` prefix is used in some (not many) Boost libraries as well (e.g. math/tools/remez).
+* All macro names shall be in upper-case, words separated with underscore `_`.
+* All macro names shall start with `BOOST_GEOMETRY_`.
+* All non-public macro names should start with `BOOST_GEOMETRY_DETAIL_` (not used often yet, if at all).
+* All public names should reside in the `boost::geometry` namespace.
+ Nested namespaces are also possible.
+* Avoid cryptic names and abbreviations for elements used in wider context (e.g. types, functions).
+ Short names are allowed if context of use is local, narrow and easily tracable
+ For example, use of `it` for `iterator` in body of a loop in function:
+```
+template <typename Range, typename Functor>
+static inline void apply(Range& range, Functor& f)
+{
+ for (typename boost::range_iterator<Range>::type it = boost::begin(range);
+ it != boost::end(range); ++it)
+ {
+ f(*it);
+ }
+}
+```
+
+[heading C++ use conventions]
+
+* Keyword struct is preferred either for POD structures, or for classes used at compile-time
+ like metafunctions, tags, traits, etc.
+* Keyword class is preferred for classes meant to produce actual objects, which have methods
+ and an active role in the runtime functioning of the program.
+* In case of a template, prefer use of typename keyword over class.
+
+[heading Specialisations and dispatching conventions]
+
+* Algorithms are free inline functions, taking any geometry. Parameters are often one or two geometries
+* There might be an overload for a strategy. The strategy takes, a.o. care of coordinate systems
+* The free `inline` function forwards to a dispatch struct, specialized for the geometry type (so for point, polygon, etc.)
+* They have an `static` (`inline`) function called apply
+* The dispatch struct calls, or is derived from, an struct implemented in namespace detail
+* There the same: a `struct` with a `static` (`inline`) function called apply
+* This way the implementation structs are building blocks, they can be reused
+* In fact they are reused often by the multi-versions of the algorithms
+
+```
+namespace boost { namespace geometry
+{
+
+namespace detail { namespace foo
+{
+
+template <typename Point>
+struct foo_point
+{
+ // template parameters here
+ static inline int apply(Point const& p)
+ {
+ // do something here
+ return 1;
+ }
+};
+
+}} // namespace detail::foo
+
+namespace dispatch
+{
+
+template
+<
+ Geometry,
+ Tag = typename geometry::tag<Geometry>::type
+>
+struct foo
+{
+};
+
+// Specialization for POINT
+...
+
+} // namespace dispatch
+
+template <typename Point>
+inline int foo(Point const& point)
+{
+ return dispatch<Point>::apply(point);
+}
+
+}} // namespace boost::geometry
+```
+
+[heading Contributing code]
+
+* Create a patch, open a ticket in the Boost Trac with your patch attached.
+* Alternatively, post your patch to the Boost.Geometry mailing list.
+* If you contribute a code, always try to provide a minimal test for it.
+
+[endsect]
diff --git a/libs/geometry/doc/html/geometry/aboutdoc.html b/libs/geometry/doc/html/geometry/aboutdoc.html
index 46e3953eb1..692e3160c7 100644
--- a/libs/geometry/doc/html/geometry/aboutdoc.html
+++ b/libs/geometry/doc/html/geometry/aboutdoc.html
@@ -1,9 +1,9 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>About this documentation</title>
+<title>About this Documentation</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="prev" href="release_notes.html" title="Release Notes">
@@ -24,7 +24,7 @@
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="geometry.aboutdoc"></a><a class="link" href="aboutdoc.html" title="About this documentation">About this documentation</a>
+<a name="geometry.aboutdoc"></a><a class="link" href="aboutdoc.html" title="About this Documentation">About this Documentation</a>
</h2></div></div></div>
<p>
Within the Boost community there are several styles of documenting. Most libraries
@@ -50,7 +50,7 @@
</p>
<h4>
<a name="geometry.aboutdoc.h0"></a>
- <span><a name="geometry.aboutdoc.the_chain"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.the_chain">The
+ <span class="phrase"><a name="geometry.aboutdoc.the_chain"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.the_chain">The
chain</a>
</h4>
<p>
@@ -86,7 +86,7 @@
</p>
<h4>
<a name="geometry.aboutdoc.h1"></a>
- <span><a name="geometry.aboutdoc.the_reference_matrix"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.the_reference_matrix">The
+ <span class="phrase"><a name="geometry.aboutdoc.the_reference_matrix"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.the_reference_matrix">The
reference matrix</a>
</h4>
<p>
@@ -98,7 +98,7 @@
</p>
<h4>
<a name="geometry.aboutdoc.h2"></a>
- <span><a name="geometry.aboutdoc.mixing_quickbook_into_c___code"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.mixing_quickbook_into_c___code">Mixing
+ <span class="phrase"><a name="geometry.aboutdoc.mixing_quickbook_into_c___code"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.mixing_quickbook_into_c___code">Mixing
QuickBook into C++ code</a>
</h4>
<p>
@@ -148,7 +148,7 @@
</p>
<h4>
<a name="geometry.aboutdoc.h3"></a>
- <span><a name="geometry.aboutdoc.quickbook_within_c___issues"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.quickbook_within_c___issues">QuickBook
+ <span class="phrase"><a name="geometry.aboutdoc.quickbook_within_c___issues"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.quickbook_within_c___issues">QuickBook
within C++ issues</a>
</h4>
<p>
@@ -163,7 +163,7 @@
</p>
<h4>
<a name="geometry.aboutdoc.h4"></a>
- <span><a name="geometry.aboutdoc.overloads"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.overloads">Overloads</a>
+ <span class="phrase"><a name="geometry.aboutdoc.overloads"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.overloads">Overloads</a>
</h4>
<p>
Boost.Geometry contains a lot of overloads, two functions with the same name
@@ -177,7 +177,7 @@
</p>
<h4>
<a name="geometry.aboutdoc.h5"></a>
- <span><a name="geometry.aboutdoc.overloads_and_sharing_documentation"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.overloads_and_sharing_documentation">Overloads
+ <span class="phrase"><a name="geometry.aboutdoc.overloads_and_sharing_documentation"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.overloads_and_sharing_documentation">Overloads
and sharing documentation</a>
</h4>
<p>
@@ -189,7 +189,7 @@
</p>
<h4>
<a name="geometry.aboutdoc.h6"></a>
- <span><a name="geometry.aboutdoc.doxygen_aliases"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.doxygen_aliases">Doxygen
+ <span class="phrase"><a name="geometry.aboutdoc.doxygen_aliases"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.doxygen_aliases">Doxygen
aliases</a>
</h4>
<p>
@@ -212,7 +212,7 @@
</p>
<h4>
<a name="geometry.aboutdoc.h7"></a>
- <span><a name="geometry.aboutdoc.quickbook_macros"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.quickbook_macros">QuickBook
+ <span class="phrase"><a name="geometry.aboutdoc.quickbook_macros"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.quickbook_macros">QuickBook
macros</a>
</h4>
<p>
@@ -229,7 +229,7 @@
</p>
<h4>
<a name="geometry.aboutdoc.h8"></a>
- <span><a name="geometry.aboutdoc.code_examples"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.code_examples">Code
+ <span class="phrase"><a name="geometry.aboutdoc.code_examples"></a></span><a class="link" href="aboutdoc.html#geometry.aboutdoc.code_examples">Code
examples</a>
</h4>
<p>
@@ -267,8 +267,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/acknowledgments.html b/libs/geometry/doc/html/geometry/acknowledgments.html
index 76acc7df67..74ef228bfa 100644
--- a/libs/geometry/doc/html/geometry/acknowledgments.html
+++ b/libs/geometry/doc/html/geometry/acknowledgments.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Acknowledgments</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
-<link rel="prev" href="aboutdoc.html" title="About this documentation">
+<link rel="prev" href="aboutdoc.html" title="About this Documentation">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -61,8 +61,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/compilation.html b/libs/geometry/doc/html/geometry/compilation.html
index ee1940fd81..7605c0cd3b 100644
--- a/libs/geometry/doc/html/geometry/compilation.html
+++ b/libs/geometry/doc/html/geometry/compilation.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Compilation</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
-<link rel="prev" href="design.html" title="Design Rationale">
-<link rel="next" href="indexes.html" title="Indexes">
+<link rel="prev" href="introduction.html" title="Introduction">
+<link rel="next" href="design.html" title="Design Rationale">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="design.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="introduction.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="design.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -46,16 +46,16 @@
</pre>
<h4>
<a name="geometry.compilation.h0"></a>
- <span><a name="geometry.compilation.supported_compilers"></a></span><a class="link" href="compilation.html#geometry.compilation.supported_compilers">Supported
+ <span class="phrase"><a name="geometry.compilation.supported_compilers"></a></span><a class="link" href="compilation.html#geometry.compilation.supported_compilers">Supported
Compilers</a>
</h4>
<p>
Boost.Geometry library has been successfully tested with the following compilers:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
MSVC (including Express Editions)
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
10.0 (MSVC 2010)
</li>
@@ -69,7 +69,7 @@
</li>
<li class="listitem">
gcc
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
gcc 4.7.0
</li>
@@ -101,13 +101,18 @@
</li>
<li class="listitem">
clang
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
- clang x.x
- </li></ul></div>
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
+<li class="listitem">
+ clang 3.3
+ </li>
+<li class="listitem">
+ clang 3.2
+ </li>
+</ul></div>
</li>
<li class="listitem">
darwin
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
darwin 4.0.1
</li>
@@ -118,7 +123,7 @@
</li>
<li class="listitem">
intel
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
intel 11.1
</li>
@@ -132,7 +137,7 @@
</li>
<li class="listitem">
pathscale
- <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
pathscale 4.0.8
</li></ul></div>
</li>
@@ -148,7 +153,7 @@
</p>
<h4>
<a name="geometry.compilation.h1"></a>
- <span><a name="geometry.compilation.includes"></a></span><a class="link" href="compilation.html#geometry.compilation.includes">Includes</a>
+ <span class="phrase"><a name="geometry.compilation.includes"></a></span><a class="link" href="compilation.html#geometry.compilation.includes">Includes</a>
</h4>
<p>
The most convenient headerfile including all algorithms and strategies is
@@ -171,21 +176,46 @@
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
</pre>
<p>
- This includes definitions of all provided geometry types: point, linestring,
- polygon, ring, box. The file <code class="computeroutput"><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span></code> is not
- included in the <code class="computeroutput"><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span></code> headerfile because users should be given
+ This includes definitions of all provided geometry types:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ point,
+ </li>
+<li class="listitem">
+ linestring,
+ </li>
+<li class="listitem">
+ polygon,
+ </li>
+<li class="listitem">
+ ring,
+ </li>
+<li class="listitem">
+ multi_point,
+ </li>
+<li class="listitem">
+ multi_linestring,
+ </li>
+<li class="listitem">
+ multi_polygon,
+ </li>
+<li class="listitem">
+ box,
+ </li>
+<li class="listitem">
+ segment.
+ </li>
+</ul></div>
+<p>
+ The file <code class="computeroutput"><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span></code> is not included in the <code class="computeroutput"><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span></code> headerfile because users should be given
the liberty to use their own geometries and not the provided ones. However,
for the Boost.Geometry users who want to use the provided geometries it is
useful to include.
</p>
-<p>
- For users using multi-geometries:
- </p>
-<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-</pre>
<h4>
<a name="geometry.compilation.h2"></a>
- <span><a name="geometry.compilation.advanced_includes"></a></span><a class="link" href="compilation.html#geometry.compilation.advanced_includes">Advanced
+ <span class="phrase"><a name="geometry.compilation.advanced_includes"></a></span><a class="link" href="compilation.html#geometry.compilation.advanced_includes">Advanced
Includes</a>
</h4>
<p>
@@ -196,13 +226,13 @@
</pre>
<h4>
<a name="geometry.compilation.h3"></a>
- <span><a name="geometry.compilation.performance"></a></span><a class="link" href="compilation.html#geometry.compilation.performance">Performance</a>
+ <span class="phrase"><a name="geometry.compilation.performance"></a></span><a class="link" href="compilation.html#geometry.compilation.performance">Performance</a>
</h4>
<p>
The enumeration below is not exhaustive but can contain hints to improve the
performance:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
For Microsoft MSVC, set define <code class="computeroutput"><span class="identifier">_SECURE_SCL</span><span class="special">=</span><span class="number">0</span></code> for preprocessor.
</li>
@@ -220,7 +250,7 @@
</ul></div>
<h4>
<a name="geometry.compilation.h4"></a>
- <span><a name="geometry.compilation.problems_with_intellisense"></a></span><a class="link" href="compilation.html#geometry.compilation.problems_with_intellisense">Problems
+ <span class="phrase"><a name="geometry.compilation.problems_with_intellisense"></a></span><a class="link" href="compilation.html#geometry.compilation.problems_with_intellisense">Problems
with Intellisense</a>
</h4>
<p>
@@ -245,8 +275,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -254,7 +284,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="design.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="introduction.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="design.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/design.html b/libs/geometry/doc/html/geometry/design.html
index 1ea2335e90..6a6f65bd91 100644
--- a/libs/geometry/doc/html/geometry/design.html
+++ b/libs/geometry/doc/html/geometry/design.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Design Rationale</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
-<link rel="prev" href="quickstart.html" title="Quick Start">
-<link rel="next" href="compilation.html" title="Compilation">
+<link rel="prev" href="compilation.html" title="Compilation">
+<link rel="next" href="quickstart.html" title="Quick Start">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="quickstart.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="compilation.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="compilation.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="quickstart.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -52,7 +52,7 @@
in a Cartesian coordinate system. A generic library should be able to calculate
the distance:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
for any point class or struct, not on just this <span class="bold"><strong>mypoint</strong></span>
type
@@ -80,7 +80,7 @@
</p>
<h4>
<a name="geometry.design.h0"></a>
- <span><a name="geometry.design.using_templates"></a></span><a class="link" href="design.html#geometry.design.using_templates">Using
+ <span class="phrase"><a name="geometry.design.using_templates"></a></span><a class="link" href="design.html#geometry.design.using_templates">Using
Templates</a>
</h4>
<p>
@@ -107,7 +107,7 @@
</p>
<h4>
<a name="geometry.design.h1"></a>
- <span><a name="geometry.design.using_traits"></a></span><a class="link" href="design.html#geometry.design.using_traits">Using
+ <span class="phrase"><a name="geometry.design.using_traits"></a></span><a class="link" href="design.html#geometry.design.using_traits">Using
Traits</a>
</h4>
<p>
@@ -175,7 +175,7 @@
</p>
<h4>
<a name="geometry.design.h2"></a>
- <span><a name="geometry.design.dimension_agnosticism"></a></span><a class="link" href="design.html#geometry.design.dimension_agnosticism">Dimension
+ <span class="phrase"><a name="geometry.design.dimension_agnosticism"></a></span><a class="link" href="design.html#geometry.design.dimension_agnosticism">Dimension
Agnosticism</a>
</h4>
<p>
@@ -265,7 +265,7 @@
</p>
<h4>
<a name="geometry.design.h3"></a>
- <span><a name="geometry.design.coordinate_type"></a></span><a class="link" href="design.html#geometry.design.coordinate_type">Coordinate
+ <span class="phrase"><a name="geometry.design.coordinate_type"></a></span><a class="link" href="design.html#geometry.design.coordinate_type">Coordinate
Type</a>
</h4>
<p>
@@ -333,7 +333,7 @@
</pre>
<h4>
<a name="geometry.design.h4"></a>
- <span><a name="geometry.design.different_geometries"></a></span><a class="link" href="design.html#geometry.design.different_geometries">Different
+ <span class="phrase"><a name="geometry.design.different_geometries"></a></span><a class="link" href="design.html#geometry.design.different_geometries">Different
Geometries</a>
</h4>
<p>
@@ -353,7 +353,7 @@
also cannot create an overload because that would be ambiguous, having the
same template signature. There are two solutions:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
tag dispatching
</li>
@@ -468,7 +468,7 @@
</pre>
<h4>
<a name="geometry.design.h5"></a>
- <span><a name="geometry.design.kernel_revisited"></a></span><a class="link" href="design.html#geometry.design.kernel_revisited">Kernel
+ <span class="phrase"><a name="geometry.design.kernel_revisited"></a></span><a class="link" href="design.html#geometry.design.kernel_revisited">Kernel
Revisited</a>
</h4>
<p>
@@ -531,7 +531,7 @@
</p>
<h4>
<a name="geometry.design.h6"></a>
- <span><a name="geometry.design.coordinate_system"></a></span><a class="link" href="design.html#geometry.design.coordinate_system">Coordinate
+ <span class="phrase"><a name="geometry.design.coordinate_system"></a></span><a class="link" href="design.html#geometry.design.coordinate_system">Coordinate
System</a>
</h4>
<p>
@@ -683,7 +683,7 @@
</p>
<h4>
<a name="geometry.design.h7"></a>
- <span><a name="geometry.design.point_concept"></a></span><a class="link" href="design.html#geometry.design.point_concept">Point
+ <span class="phrase"><a name="geometry.design.point_concept"></a></span><a class="link" href="design.html#geometry.design.point_concept">Point
Concept</a>
</h4>
<p>
@@ -692,7 +692,7 @@
the traits namespace should be accepted a as valid type. So the Point Concept
consists of:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
a specialization for <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">tag</span></code>
</li>
@@ -726,7 +726,7 @@
</p>
<h4>
<a name="geometry.design.h8"></a>
- <span><a name="geometry.design.return_type"></a></span><a class="link" href="design.html#geometry.design.return_type">Return
+ <span class="phrase"><a name="geometry.design.return_type"></a></span><a class="link" href="design.html#geometry.design.return_type">Return
Type</a>
</h4>
<p>
@@ -814,7 +814,7 @@
</p>
<h4>
<a name="geometry.design.h9"></a>
- <span><a name="geometry.design.summary"></a></span><a class="link" href="design.html#geometry.design.summary">Summary</a>
+ <span class="phrase"><a name="geometry.design.summary"></a></span><a class="link" href="design.html#geometry.design.summary">Summary</a>
</h4>
<p>
In this design rationale, Boost.Geometry is step by step designed using tag
@@ -829,8 +829,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -838,7 +838,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="quickstart.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="compilation.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="compilation.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="quickstart.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/examples.html b/libs/geometry/doc/html/geometry/examples.html
new file mode 100644
index 0000000000..87a3796fec
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/examples.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Examples</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="prev" href="indexes/alphabetical_index.html" title="Alphabetical Index">
+<link rel="next" href="examples/example__adapting_a_legacy_geometry_object_model.html" title="Example: Adapting a legacy geometry object model">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="indexes/alphabetical_index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="examples/example__adapting_a_legacy_geometry_object_model.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="geometry.examples"></a><a class="link" href="examples.html" title="Examples">Examples</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="examples/example__adapting_a_legacy_geometry_object_model.html">Example:
+ Adapting a legacy geometry object model</a></span></dt>
+<dt><span class="section"><a href="examples/example_source_code__adapting_a_legacy_geometry_object_model.html">Example
+ source code: Adapting a legacy geometry object model</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="indexes/alphabetical_index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="examples/example__adapting_a_legacy_geometry_object_model.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/examples/example__adapting_a_legacy_geometry_object_model.html b/libs/geometry/doc/html/geometry/examples/example__adapting_a_legacy_geometry_object_model.html
new file mode 100644
index 0000000000..c5a077fc30
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/examples/example__adapting_a_legacy_geometry_object_model.html
@@ -0,0 +1,257 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Example: Adapting a legacy geometry object model</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="../examples.html" title="Examples">
+<link rel="next" href="example_source_code__adapting_a_legacy_geometry_object_model.html" title="Example source code: Adapting a legacy geometry object model">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../examples.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="example_source_code__adapting_a_legacy_geometry_object_model.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="geometry.examples.example__adapting_a_legacy_geometry_object_model"></a><a class="link" href="example__adapting_a_legacy_geometry_object_model.html" title="Example: Adapting a legacy geometry object model">Example:
+ Adapting a legacy geometry object model</a>
+</h3></div></div></div>
+<p>
+ One of the primary benefits of Boost.Geometry, and the reason for its fairly
+ complex template-based implementation, is that it allows for integration
+ with legacy classes/objects.
+ </p>
+<p>
+ By defining the relationship between the Boost.Geometry concepts and an existing,
+ legacy object model, the legacy objects can be used in place of Boost.Geometry's
+ own geometry classes.
+ </p>
+<p>
+ Boost.Geometry will then happliy read and write directly from and to the
+ legacy object, treating it as a native Boost.Geometry object.
+ </p>
+<p>
+ This means that one can adapt algorithms and methods from Boost.Geometry
+ to any existing legacy geometry object model at a very small runtime cost,
+ which is simply not possible with most geometry libraries, where one has
+ to make an intermediate object specific to the geometry library one is using.
+ </p>
+<p>
+ The following example will demonstrate the adaption process of a legacy geometry
+ object model for use with Boost.Geometry.
+ </p>
+<h3>
+<a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.h0"></a>
+ <span class="phrase"><a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.adapting_a_shared_geometry_legacy_object_model"></a></span><a class="link" href="example__adapting_a_legacy_geometry_object_model.html#geometry.examples.example__adapting_a_legacy_geometry_object_model.adapting_a_shared_geometry_legacy_object_model">Adapting
+ a shared geometry legacy object model</a>
+ </h3>
+<h4>
+<a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.h1"></a>
+ <span class="phrase"><a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.example_code__object_hierarcy"></a></span><a class="link" href="example__adapting_a_legacy_geometry_object_model.html#geometry.examples.example__adapting_a_legacy_geometry_object_model.example_code__object_hierarcy">Example
+ code: object hierarcy</a>
+ </h4>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">QPoint</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">double</span> <span class="identifier">x</span><span class="special">;</span>
+ <span class="keyword">double</span> <span class="identifier">y</span><span class="special">;</span>
+ <span class="identifier">QPoint</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">y</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">x</span><span class="special">(</span><span class="identifier">x</span><span class="special">),</span> <span class="identifier">y</span><span class="special">(</span><span class="identifier">y</span><span class="special">)</span> <span class="special">{}</span>
+<span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">QLineString</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">bool</span> <span class="identifier">cw</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">*&gt;</span> <span class="identifier">points</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">QRing</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QLineString</span><span class="special">*&gt;</span> <span class="identifier">lines</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">QPolygon</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">QRing</span><span class="special">*</span> <span class="identifier">exterior</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QRing</span><span class="special">*&gt;</span> <span class="identifier">interiors</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The legacy object hierarcy is based on topology (e.g. two QRings might share
+ one QLineString) instead of points directly (i.e. each object does not point
+ directly to it's QPoints), and it also uses pointers for access.
+ </p>
+<p>
+ This is the other common way to approach geometries, to enable e.g. shared
+ boundaries between surfaces. Boost.Geometry's approach use simple features,
+ and does not have shared geometries.
+ </p>
+<p>
+ The mismatch in representation is fixed by creating a custom iterator, that
+ exposes a Boost.Range of Points for every object. This way, Boost.Geometry's
+ functions will operate on the QRing as if it was a collection of Points,
+ which is a requirement.
+ </p>
+<h3>
+<a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.h2"></a>
+ <span class="phrase"><a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.adapting_qpoint"></a></span><a class="link" href="example__adapting_a_legacy_geometry_object_model.html#geometry.examples.example__adapting_a_legacy_geometry_object_model.adapting_qpoint">Adapting
+ QPoint</a>
+ </h3>
+<p>
+ The <a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#adaption_of_qpoint_source_code">adaption of the QPoint</a>
+ is fairly straightforward, one just needs to implement the requirements.
+ </p>
+<p>
+ Even though the geometries in our legacy object model use pointers of QPoints,
+ Boost.Geometry automatically handles the conversion from pointers-to-Points
+ to references-to-Points internally, so we do not have to convert them manually.
+ </p>
+<p>
+ Alternatively, we can use the <a class="link" href="../reference/adapted/register/boost_geometry_register_point_2d.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D">BOOST_GEOMETRY_REGISTER_POINT_2D(QPoint,
+ double, cs::cartesian, x, y)</a> helper macro, which does exactly the
+ same as our manual adaption.
+ </p>
+<p>
+ The sample code adapts QPoint to the <a class="link" href="../reference/concepts/concept_point.html" title="Point Concept">Point
+ Concept</a> using specialization of the traits class.
+ </p>
+<h3>
+<a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.h3"></a>
+ <span class="phrase"><a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.adapting_qlinestring"></a></span><a class="link" href="example__adapting_a_legacy_geometry_object_model.html#geometry.examples.example__adapting_a_legacy_geometry_object_model.adapting_qlinestring">Adapting
+ QLineString</a>
+ </h3>
+<p>
+ The <a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#adaption_of_qlinestring_source_code">adaption of the QLineString</a>
+ is very simple on the surface, as it is just "a specialization of traits::tag
+ defining linestring_tag as type". Alternatively, we can use the <a class="link" href="../reference/adapted/register/boost_geometry_register_linestring.html" title="BOOST_GEOMETRY_REGISTER_LINESTRING">BOOST_GEOMETRY_REGISTER_LINESTRING(QLineString)</a>
+ helper macro, which does exactly the same as our manual adaption.
+ </p>
+<p>
+ However, the <a class="link" href="../reference/concepts/concept_linestring.html" title="Linestring Concept">LineString
+ concept</a> also requires that the collection of Points "must behave
+ like a Boost.Range Random Access Range" and "the type defined by
+ the metafunction range_value&lt;...&gt;::type must fulfill the Point Concept".
+ </p>
+<p>
+ This means that we have to do two things:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Make QLineString behave like a Boost.Range, with Random Access requirements
+ </li>
+<li class="listitem">
+ Make sure that the Boost.Range iterates over QPoints, which we already
+ have adapted
+ </li>
+</ul></div>
+<p>
+ This might look like a lot of work, but we are in luck: a std::vector is
+ nearly a Boost.Range, and already iterate over pointers-to-QPoints, that
+ are handled by Boost.Geometry. The <a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#adaption_of_qlinestring_range_source_code">code
+ for making QLineString a Boost.Range</a> is therefore fairly straightforward.
+ </p>
+<h3>
+<a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.h4"></a>
+ <span class="phrase"><a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.adapting_qring"></a></span><a class="link" href="example__adapting_a_legacy_geometry_object_model.html#geometry.examples.example__adapting_a_legacy_geometry_object_model.adapting_qring">Adapting
+ QRing</a>
+ </h3>
+<p>
+ The <a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#adaption_of_qring_source_code">adaption of the QRing</a>
+ is mostly equal to the QLineString in that there is a tag and a collection
+ to iterate through. Alternatively, we can use the <a class="link" href="../reference/adapted/register/boost_geometry_register_ring.html" title="BOOST_GEOMETRY_REGISTER_RING">BOOST_GEOMETRY_REGISTER_RING(QRing)</a>
+ helper macro, which does exactly the same as our manual adaption.
+ </p>
+<p>
+ However, the QRing expose pointers-to-QLineStrings, and not QPoints directly,
+ which is <a class="link" href="../reference/concepts/concept_ring.html" title="Ring Concept">required
+ in the Ring concept</a>, so it is not enough to trivially make the std::vector
+ into a Boost.Range. We need to create a Boost.Iterator that expose QPoints,
+ and because we are dealing with a legacy object model, we are not allowed
+ to change the class definition.
+ </p>
+<p>
+ The <a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#adaption_of_qring_iterator_source_code">custom iterator
+ that does this</a> uses Boost.Iterator Facade, and is not very different
+ from the <a href="http://www.boost.org/doc/libs/1_53_0/libs/iterator/doc/iterator_facade.html" target="_top">example
+ provided in Boost.Iterator's own documentation</a>(link), except that
+ our Boost.Range need to be random access.
+ </p>
+<p>
+ Now, with the custom iterator made, we can <a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#adaption_of_qring_range_source_code">define
+ the Boost.Range</a> that traverses through QPoints.
+ </p>
+<h3>
+<a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.h5"></a>
+ <span class="phrase"><a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.adapting_qpolygon"></a></span><a class="link" href="example__adapting_a_legacy_geometry_object_model.html#geometry.examples.example__adapting_a_legacy_geometry_object_model.adapting_qpolygon">Adapting
+ QPolygon</a>
+ </h3>
+<p>
+ <a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#adaption_of_qpolygon_source_code">Adapting the QPolygon</a>
+ to the <a class="link" href="../reference/concepts/concept_polygon.html" title="Polygon Concept">Polygon
+ Concept</a> is a little more involved than the other geometry types.
+ </p>
+<p>
+ The only requirement that is not straightforward to adapt is the interior_rings'
+ get method.
+ </p>
+<p>
+ A Boost.Geometry Polygon operates on Ring objects, and unfortunately, Boost.Geometry
+ does not automatically handle the conversion from pointers to references
+ for Rings internally (only Points, as mentioned).
+ </p>
+<p>
+ Therefore, we need to expose QRings instead of pointers-to-QRings for the
+ interior Rings, which means a little more work than the pointers-to-QPoints
+ for QLineString and QRing.
+ </p>
+<p>
+ First, we <a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#adaption_of_qpolygon_iterator_source_code">create
+ a Boost.Iterator Facade</a> that returns QRing instead of pointer-to-QRing:
+ </p>
+<p>
+ Now we have an iterator that can "convert" our pointer-to-QRing
+ into QRing. However, the get method of the interior Rings must return a Boost.Range
+ compatible object, which a plain PolygonRingIterator is not.
+ </p>
+<p>
+ We need to <a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#adaption_of_qpolygon_range_source_code">define
+ another Boost.Range</a>, that can be constructed with PolygonRingIterators
+ as arguments, and returned from the get method.
+ </p>
+<h3>
+<a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.h6"></a>
+ <span class="phrase"><a name="geometry.examples.example__adapting_a_legacy_geometry_object_model.conclusion"></a></span><a class="link" href="example__adapting_a_legacy_geometry_object_model.html#geometry.examples.example__adapting_a_legacy_geometry_object_model.conclusion">Conclusion</a>
+ </h3>
+<p>
+ That's it! The methods of Boost.Geometry can now be used directly on instances
+ of our legacy object model.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../examples.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="example_source_code__adapting_a_legacy_geometry_object_model.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/examples/example_source_code__adapting_a_legacy_geometry_object_model.html b/libs/geometry/doc/html/geometry/examples/example_source_code__adapting_a_legacy_geometry_object_model.html
new file mode 100644
index 0000000000..498b831276
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/examples/example_source_code__adapting_a_legacy_geometry_object_model.html
@@ -0,0 +1,537 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Example source code: Adapting a legacy geometry object model</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="example__adapting_a_legacy_geometry_object_model.html" title="Example: Adapting a legacy geometry object model">
+<link rel="next" href="../release_notes.html" title="Release Notes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="example__adapting_a_legacy_geometry_object_model.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../release_notes.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model"></a><a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html" title="Example source code: Adapting a legacy geometry object model">Example
+ source code: Adapting a legacy geometry object model</a>
+</h3></div></div></div>
+<h3>
+<a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.h0"></a>
+ <span class="phrase"><a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.adaption_of_qpoint"></a></span><a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.adaption_of_qpoint">Adaption
+ of QPoint</a>
+ </h3>
+<a name="adaption_of_qpoint_source_code"></a><pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">geometry</span>
+ <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">traits</span>
+ <span class="special">{</span>
+ <span class="comment">// Adapt QPoint to Boost.Geometry</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">struct</span> <span class="identifier">tag</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">&gt;</span>
+ <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">point_tag</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">struct</span> <span class="identifier">coordinate_type</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">&gt;</span>
+ <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">QPoint</span><span class="special">::</span><span class="keyword">double</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">struct</span> <span class="identifier">coordinate_system</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">&gt;</span>
+ <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">struct</span> <span class="identifier">dimension</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">&gt;</span> <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="special">{};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">access</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">,</span> <span class="number">0</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">static</span> <span class="identifier">QPoint</span><span class="special">::</span><span class="keyword">double</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">QPoint</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">x</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">QPoint</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">QPoint</span><span class="special">::</span><span class="keyword">double</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">p</span><span class="special">.</span><span class="identifier">x</span> <span class="special">=</span> <span class="identifier">value</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">access</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">,</span> <span class="number">1</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">static</span> <span class="identifier">QPoint</span><span class="special">::</span><span class="keyword">double</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">QPoint</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">y</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">QPoint</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">QPoint</span><span class="special">::</span><span class="keyword">double</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">p</span><span class="special">.</span><span class="identifier">y</span> <span class="special">=</span> <span class="identifier">value</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+<span class="special">}</span> <span class="comment">// namespace boost::geometry::traits</span>
+</pre>
+<h3>
+<a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.h1"></a>
+ <span class="phrase"><a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.adaption_of_qlinestring"></a></span><a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.adaption_of_qlinestring">Adaption
+ of QLineString</a>
+ </h3>
+<a name="adaption_of_qlinestring_source_code"></a><pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">geometry</span>
+ <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">traits</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">tag</span><span class="special">&lt;</span><span class="identifier">QLineString</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">linestring_tag</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+<span class="special">}</span> <span class="comment">// namespace boost::geometry::traits</span>
+</pre>
+<h4>
+<a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.h2"></a>
+ <span class="phrase"><a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.boost_range_for_qlinestring"></a></span><a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.boost_range_for_qlinestring">Boost.Range
+ for QLineString</a>
+ </h4>
+<a name="adaption_of_qlinestring_range_source_code"></a><pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">range_iterator</span><span class="special">&lt;</span><span class="identifier">QLineString</span><span class="special">&gt;</span>
+ <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">*&gt;::</span><span class="identifier">iterator</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">range_const_iterator</span><span class="special">&lt;</span><span class="identifier">QLineString</span><span class="special">&gt;</span>
+ <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">*&gt;::</span><span class="identifier">const_iterator</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+<span class="special">}</span>
+
+<span class="keyword">inline</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">*&gt;::</span><span class="identifier">iterator</span>
+<span class="identifier">range_begin</span><span class="special">(</span><span class="identifier">QLineString</span><span class="special">&amp;</span> <span class="identifier">qls</span><span class="special">)</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">qls</span><span class="special">.</span><span class="identifier">points</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();}</span>
+
+<span class="keyword">inline</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">*&gt;::</span><span class="identifier">iterator</span>
+<span class="identifier">range_end</span><span class="special">(</span><span class="identifier">QLineString</span><span class="special">&amp;</span> <span class="identifier">qls</span><span class="special">)</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">qls</span><span class="special">.</span><span class="identifier">points</span><span class="special">.</span><span class="identifier">end</span><span class="special">();}</span>
+
+<span class="keyword">inline</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">*&gt;::</span><span class="identifier">const_iterator</span>
+<span class="identifier">range_begin</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">QLineString</span><span class="special">&amp;</span> <span class="identifier">qls</span><span class="special">)</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">qls</span><span class="special">.</span><span class="identifier">points</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();}</span>
+
+<span class="keyword">inline</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QPoint</span><span class="special">*&gt;::</span><span class="identifier">const_iterator</span>
+<span class="identifier">range_end</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">QLineString</span><span class="special">&amp;</span> <span class="identifier">qls</span><span class="special">)</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">qls</span><span class="special">.</span><span class="identifier">points</span><span class="special">.</span><span class="identifier">end</span><span class="special">();}</span>
+</pre>
+<h3>
+<a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.h3"></a>
+ <span class="phrase"><a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.adaption_of_qring"></a></span><a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.adaption_of_qring">Adaption
+ of QRing</a>
+ </h3>
+<a name="adaption_of_qring_source_code"></a><pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">geometry</span>
+ <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">traits</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">tag</span><span class="special">&lt;</span><span class="identifier">QRing</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">ring_tag</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+<span class="special">}</span> <span class="comment">// namespace boost::geometry::traits</span>
+</pre>
+<h4>
+<a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.h4"></a>
+ <span class="phrase"><a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.boost_iterator_for_qring"></a></span><a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.boost_iterator_for_qring">Boost.Iterator
+ for QRing</a>
+ </h4>
+<a name="adaption_of_qring_iterator_source_code"></a><pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">iterator</span><span class="special">/</span><span class="identifier">iterator_facade</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="comment">/* Custom iterator type that flattens a 2D array into a 1D array */</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">I</span><span class="special">,</span> <span class="comment">// Line iterator type</span>
+ <span class="keyword">class</span> <span class="identifier">R</span> <span class="comment">// Point reference type</span>
+ <span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">RingIteratorImpl</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_facade</span><span class="special">&lt;</span>
+ <span class="identifier">RingIteratorImpl</span><span class="special">&lt;</span><span class="identifier">I</span><span class="special">,</span><span class="identifier">R</span><span class="special">&gt;,</span> <span class="identifier">R</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">random_access_iterator_tag</span><span class="special">,</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="comment">//new traversal tag boost::random_access_traversal_tag</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">RingIteratorImpl</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">pointIndex_</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">RingIteratorImpl</span><span class="special">(</span><span class="identifier">I</span> <span class="identifier">lineStringIterCurrent</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">lineStringIterCurrent_</span><span class="special">(</span><span class="identifier">lineStringIterCurrent</span><span class="special">),</span> <span class="identifier">pointIndex_</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">OtherI</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">OtherR</span><span class="special">&gt;</span>
+ <span class="identifier">RingIteratorImpl</span><span class="special">(</span><span class="identifier">RingIteratorImpl</span><span class="special">&lt;</span><span class="identifier">OtherI</span><span class="special">,</span> <span class="identifier">OtherR</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="special">:</span>
+ <span class="identifier">lineStringIterCurrent_</span><span class="special">(</span><span class="identifier">other</span><span class="special">.</span><span class="identifier">getLineStrIt</span><span class="special">()),</span> <span class="identifier">pointIndex_</span><span class="special">(</span><span class="identifier">other</span><span class="special">.</span><span class="identifier">getPointIdx</span><span class="special">())</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="identifier">I</span> <span class="identifier">getLineStrIt</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">lineStringIterCurrent_</span><span class="special">;}</span>
+
+ <span class="keyword">bool</span> <span class="identifier">isEmpty</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">isEmpty</span><span class="special">;}</span>
+ <span class="identifier">size_t</span> <span class="identifier">getPointIdx</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">pointIndex_</span><span class="special">;}</span>
+
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_facade</span><span class="special">&lt;</span><span class="identifier">RingIteratorImpl</span><span class="special">&lt;</span><span class="identifier">I</span><span class="special">,</span><span class="identifier">R</span><span class="special">&gt;,</span> <span class="identifier">R</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">random_access_iterator_tag</span><span class="special">,</span> <span class="identifier">R</span><span class="special">&gt;::</span><span class="identifier">difference_type</span> <span class="identifier">difference_type</span><span class="special">;</span>
+
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="keyword">friend</span> <span class="keyword">class</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_core_access</span><span class="special">;</span>
+
+ <span class="keyword">void</span> <span class="identifier">increment</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="special">++</span><span class="identifier">pointIndex_</span><span class="special">;</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">pointIndex_</span> <span class="special">&gt;=</span> <span class="special">(*</span><span class="identifier">lineStringIterCurrent_</span><span class="special">)-&gt;</span><span class="identifier">points</span><span class="special">.</span><span class="identifier">size</span><span class="special">())</span>
+ <span class="special">{</span>
+ <span class="special">++</span><span class="identifier">lineStringIterCurrent_</span><span class="special">;</span>
+ <span class="identifier">pointIndex_</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+
+ <span class="keyword">void</span> <span class="identifier">decrement</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">pointIndex_</span><span class="special">&gt;</span><span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">--</span><span class="identifier">pointIndex_</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span>
+ <span class="special">{</span>
+ <span class="special">--</span><span class="identifier">lineStringIterCurrent_</span><span class="special">;</span>
+ <span class="identifier">pointIndex_</span> <span class="special">=</span> <span class="special">(*</span><span class="identifier">lineStringIterCurrent_</span><span class="special">)-&gt;</span><span class="identifier">points</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+
+ <span class="keyword">void</span> <span class="identifier">advance</span><span class="special">(</span><span class="identifier">difference_type</span> <span class="identifier">n</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">difference_type</span> <span class="identifier">counter</span> <span class="special">=</span> <span class="identifier">n</span><span class="special">;</span>
+
+ <span class="identifier">difference_type</span> <span class="identifier">maxPointIndex</span><span class="special">,</span> <span class="identifier">remainderPointIndex</span><span class="special">;</span>
+
+ <span class="keyword">while</span><span class="special">(</span><span class="identifier">counter</span><span class="special">&gt;</span><span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">maxPointIndex</span> <span class="special">=</span> <span class="special">(*</span><span class="identifier">lineStringIterCurrent_</span><span class="special">)-&gt;</span><span class="identifier">points</span><span class="special">.</span><span class="identifier">size</span><span class="special">(),</span>
+ <span class="identifier">remainderPointIndex</span> <span class="special">=</span> <span class="identifier">maxPointIndex</span> <span class="special">-</span> <span class="identifier">pointIndex_</span><span class="special">;</span>
+
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">counter</span><span class="special">&gt;</span><span class="identifier">remainderPointIndex</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">counter</span> <span class="special">-=</span> <span class="identifier">remainderPointIndex</span><span class="special">;</span>
+ <span class="special">++</span><span class="identifier">lineStringIterCurrent_</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span> <span class="comment">// (counter&lt;=remainderPointIndex)</span>
+ <span class="special">{</span>
+ <span class="identifier">counter</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">pointIndex_</span> <span class="special">=</span> <span class="identifier">remainderPointIndex</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+
+ <span class="special">}</span>
+
+ <span class="identifier">difference_type</span> <span class="identifier">distance_to</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">RingIteratorImpl</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="identifier">I</span> <span class="identifier">currentLineStringIter</span> <span class="special">=</span> <span class="identifier">getLineStrIt</span><span class="special">();</span>
+ <span class="identifier">I</span> <span class="identifier">otherLineStringIter</span> <span class="special">=</span> <span class="identifier">other</span><span class="special">.</span><span class="identifier">getLineStrIt</span><span class="special">();</span>
+
+ <span class="identifier">difference_type</span> <span class="identifier">count</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+ <span class="identifier">difference_type</span> <span class="identifier">distance_to_other</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">currentLineStringIter</span><span class="special">,</span> <span class="identifier">otherLineStringIter</span><span class="special">);</span>
+
+ <span class="keyword">if</span><span class="special">(</span><span class="identifier">distance_to_other</span> <span class="special">&lt;</span> <span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">count</span> <span class="special">+=</span> <span class="identifier">pointIndex_</span><span class="special">;</span>
+
+ <span class="keyword">while</span><span class="special">(</span><span class="identifier">distance_to_other</span> <span class="special">&lt;</span> <span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">QLineString</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">ls</span> <span class="special">=</span> <span class="special">*</span><span class="identifier">otherLineStringIter</span><span class="special">;</span>
+ <span class="identifier">count</span> <span class="special">-=</span> <span class="identifier">ls</span><span class="special">-&gt;</span><span class="identifier">points</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span>
+
+ <span class="special">++</span><span class="identifier">otherLineStringIter</span><span class="special">;</span>
+ <span class="special">++</span><span class="identifier">distance_to_other</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">otherLineStringIter</span><span class="special">==</span><span class="identifier">currentLineStringIter</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span> <span class="keyword">if</span><span class="special">(</span><span class="identifier">distance_to_other</span> <span class="special">&gt;</span> <span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">count</span> <span class="special">-=</span> <span class="identifier">pointIndex_</span><span class="special">;</span>
+
+ <span class="keyword">while</span><span class="special">(</span><span class="identifier">distance_to_other</span> <span class="special">&lt;</span> <span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">QLineString</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">ls</span> <span class="special">=</span> <span class="special">*</span><span class="identifier">currentLineStringIter</span><span class="special">;</span>
+ <span class="identifier">count</span> <span class="special">+=</span> <span class="identifier">ls</span><span class="special">-&gt;</span><span class="identifier">points</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span>
+
+ <span class="special">++</span><span class="identifier">currentLineStringIter</span><span class="special">;</span>
+ <span class="special">--</span><span class="identifier">distance_to_other</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">otherLineStringIter</span><span class="special">==</span><span class="identifier">currentLineStringIter</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span>
+ <span class="special">{</span>
+ <span class="identifier">count</span> <span class="special">=</span> <span class="identifier">pointIndex_</span> <span class="special">-</span> <span class="identifier">other</span><span class="special">.</span><span class="identifier">getPointIdx</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="keyword">return</span> <span class="identifier">count</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">bool</span> <span class="identifier">equal</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">RingIteratorImpl</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="special">(</span><span class="identifier">lineStringIterCurrent_</span> <span class="special">==</span> <span class="identifier">other</span><span class="special">.</span><span class="identifier">getLineStrIt</span><span class="special">())</span> <span class="special">&amp;&amp;</span>
+ <span class="special">(</span><span class="identifier">pointIndex_</span> <span class="special">==</span> <span class="identifier">other</span><span class="special">.</span><span class="identifier">getPointIdx</span><span class="special">());</span>
+ <span class="special">}</span>
+
+ <span class="identifier">R</span> <span class="identifier">dereference</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{</span><span class="keyword">return</span> <span class="special">*(*</span><span class="identifier">lineStringIterCurrent_</span><span class="special">)-&gt;</span><span class="identifier">points</span><span class="special">[</span><span class="identifier">pointIndex_</span><span class="special">];}</span>
+
+
+ <span class="identifier">I</span> <span class="identifier">lineStringIterCurrent_</span><span class="special">;</span>
+
+ <span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">;</span>
+ <span class="identifier">size_t</span> <span class="identifier">pointIndex_</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<h4>
+<a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.h5"></a>
+ <span class="phrase"><a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.boost_range_for_qring"></a></span><a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.boost_range_for_qring">Boost.Range
+ for QRing</a>
+ </h4>
+<a name="adaption_of_qring_range_source_code"></a><pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">RingIteratorImpl</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QLineString</span><span class="special">*&gt;::</span><span class="identifier">iterator</span><span class="special">,</span> <span class="identifier">QPoint</span><span class="special">&gt;</span> <span class="identifier">RingIterator</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">RingIteratorImpl</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QLineString</span><span class="special">*&gt;::</span><span class="identifier">const_iterator</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">QPoint</span><span class="special">&gt;</span> <span class="identifier">ConstRingIterator</span><span class="special">;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+ <span class="comment">// Specialize metafunctions. We must include the range.hpp header.</span>
+ <span class="comment">// We must open the 'boost' namespace.</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">range_iterator</span><span class="special">&lt;</span><span class="identifier">QRing</span><span class="special">&gt;</span>
+ <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">RingIterator</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">range_const_iterator</span><span class="special">&lt;</span><span class="identifier">QRing</span><span class="special">&gt;</span>
+ <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">ConstRingIterator</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+
+<span class="special">}</span> <span class="comment">// namespace 'boost'</span>
+
+
+<span class="comment">// The required Range functions. These should be defined in the same namespace</span>
+<span class="comment">// as Ring.</span>
+
+<span class="keyword">inline</span> <span class="identifier">RingIterator</span> <span class="identifier">range_begin</span><span class="special">(</span><span class="identifier">QRing</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span>
+<span class="special">{</span><span class="keyword">return</span> <span class="identifier">RingIterator</span><span class="special">(</span><span class="identifier">r</span><span class="special">.</span><span class="identifier">lines</span><span class="special">.</span><span class="identifier">begin</span><span class="special">());}</span>
+
+<span class="keyword">inline</span> <span class="identifier">ConstRingIterator</span> <span class="identifier">range_begin</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">QRing</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span>
+<span class="special">{</span><span class="keyword">return</span> <span class="identifier">ConstRingIterator</span><span class="special">(</span><span class="identifier">r</span><span class="special">.</span><span class="identifier">lines</span><span class="special">.</span><span class="identifier">begin</span><span class="special">());}</span>
+
+<span class="keyword">inline</span> <span class="identifier">RingIterator</span> <span class="identifier">range_end</span><span class="special">(</span><span class="identifier">QRing</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span>
+<span class="special">{</span><span class="keyword">return</span> <span class="identifier">RingIterator</span><span class="special">(</span><span class="identifier">r</span><span class="special">.</span><span class="identifier">lines</span><span class="special">.</span><span class="identifier">end</span><span class="special">());}</span>
+
+<span class="keyword">inline</span> <span class="identifier">ConstRingIterator</span> <span class="identifier">range_end</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">QRing</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span>
+<span class="special">{</span><span class="keyword">return</span> <span class="identifier">ConstRingIterator</span><span class="special">(</span><span class="identifier">r</span><span class="special">.</span><span class="identifier">lines</span><span class="special">.</span><span class="identifier">end</span><span class="special">());}</span>
+</pre>
+<h3>
+<a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.h6"></a>
+ <span class="phrase"><a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.adaption_of_qpolygon"></a></span><a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.adaption_of_qpolygon">Adaption
+ of QPolygon</a>
+ </h3>
+<a name="adaption_of_qpolygon_source_code"></a><pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">geometry</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">traits</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">struct</span> <span class="identifier">tag</span><span class="special">&lt;</span><span class="identifier">QPolygon</span><span class="special">&gt;</span> <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">polygon_tag</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">struct</span> <span class="identifier">ring_const_type</span><span class="special">&lt;</span><span class="identifier">QPolygon</span><span class="special">&gt;</span> <span class="special">{</span> <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">QRing</span><span class="special">&amp;</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">struct</span> <span class="identifier">ring_mutable_type</span><span class="special">&lt;</span><span class="identifier">QPolygon</span><span class="special">&gt;</span> <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">QRing</span><span class="special">&amp;</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">struct</span> <span class="identifier">interior_const_type</span><span class="special">&lt;</span><span class="identifier">QPolygon</span><span class="special">&gt;</span> <span class="special">{</span> <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="identifier">CustomPolygonRingRange</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">struct</span> <span class="identifier">interior_mutable_type</span><span class="special">&lt;</span><span class="identifier">QPolygon</span><span class="special">&gt;</span> <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">CustomPolygonRingRange</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">struct</span> <span class="identifier">exterior_ring</span><span class="special">&lt;</span><span class="identifier">QPolygon</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">static</span> <span class="identifier">QRing</span><span class="special">&amp;</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">QPolygon</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="special">(*</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">exterior</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="keyword">static</span> <span class="identifier">QRing</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">QPolygon</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="special">(*</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">exterior</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span> <span class="keyword">struct</span> <span class="identifier">interior_rings</span><span class="special">&lt;</span><span class="identifier">QPolygon</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">static</span> <span class="identifier">CustomPolygonRingRange</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">QPolygon</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">CustomPolygonRingRange</span><span class="special">(</span><span class="identifier">PolygonRingIterator</span><span class="special">(</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">interiors</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()),</span> <span class="identifier">PolygonRingIterator</span><span class="special">(</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">interiors</span><span class="special">.</span><span class="identifier">end</span><span class="special">()));</span>
+ <span class="special">}</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">CustomPolygonRingRange</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">QPolygon</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">CustomPolygonRingRange</span><span class="special">(</span><span class="identifier">ConstPolygonRingIterator</span><span class="special">(</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">interiors</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()),</span> <span class="identifier">ConstPolygonRingIterator</span><span class="special">(</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">interiors</span><span class="special">.</span><span class="identifier">end</span><span class="special">()));</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+<span class="special">}</span> <span class="comment">// namespace boost::geometry::traits</span>
+</pre>
+<h4>
+<a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.h7"></a>
+ <span class="phrase"><a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.boost_iterator_for_qrings_in_qpolygon"></a></span><a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.boost_iterator_for_qrings_in_qpolygon">Boost.Iterator
+ for QRings in QPolygon</a>
+ </h4>
+<a name="adaption_of_qpolygon_iterator_source_code"></a><pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">I</span><span class="special">,</span> <span class="comment">// Line iterator type</span>
+ <span class="keyword">class</span> <span class="identifier">R</span> <span class="comment">// Point reference type</span>
+ <span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">PolyRingIterator</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_facade</span><span class="special">&lt;</span>
+ <span class="identifier">PolyRingIterator</span><span class="special">&lt;</span><span class="identifier">I</span><span class="special">,</span><span class="identifier">R</span><span class="special">&gt;,</span> <span class="identifier">R</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">random_access_iterator_tag</span><span class="special">,</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="comment">//new traversal tag</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">PolyRingIterator</span><span class="special">()</span> <span class="special">{}</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">PolyRingIterator</span><span class="special">(</span><span class="identifier">I</span> <span class="identifier">ringIter</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">_ringIter</span><span class="special">(</span><span class="identifier">ringIter</span><span class="special">)</span> <span class="special">{}</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">OtherI</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">OtherR</span><span class="special">&gt;</span>
+ <span class="identifier">PolyRingIterator</span><span class="special">(</span><span class="identifier">PolyRingIterator</span><span class="special">&lt;</span><span class="identifier">OtherI</span><span class="special">,</span> <span class="identifier">OtherR</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="special">:</span>
+ <span class="identifier">_ringIter</span><span class="special">(</span><span class="identifier">other</span><span class="special">.</span><span class="identifier">getRingIter</span><span class="special">())</span> <span class="special">{}</span>
+
+ <span class="identifier">I</span> <span class="identifier">getRingIter</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{</span><span class="keyword">return</span> <span class="identifier">_ringIter</span><span class="special">;}</span>
+
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_facade</span><span class="special">&lt;</span><span class="identifier">PolyRingIterator</span><span class="special">&lt;</span><span class="identifier">I</span><span class="special">,</span><span class="identifier">R</span><span class="special">&gt;,</span> <span class="identifier">R</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">random_access_iterator_tag</span><span class="special">,</span> <span class="identifier">R</span><span class="special">&gt;::</span><span class="identifier">difference_type</span> <span class="identifier">difference_type</span><span class="special">;</span>
+
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="keyword">friend</span> <span class="keyword">class</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_core_access</span><span class="special">;</span>
+
+ <span class="keyword">void</span> <span class="identifier">increment</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="special">++</span><span class="identifier">_ringIter</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">void</span> <span class="identifier">decrement</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="special">--</span><span class="identifier">_ringIter</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">void</span> <span class="identifier">advance</span><span class="special">(</span><span class="identifier">difference_type</span> <span class="identifier">n</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">advance</span><span class="special">(</span><span class="identifier">_ringIter</span><span class="special">,</span><span class="identifier">n</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">difference_type</span> <span class="identifier">distance_to</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">PolyRingIterator</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">_ringIter</span><span class="special">,</span> <span class="identifier">other</span><span class="special">.</span><span class="identifier">getRingIter</span><span class="special">());</span>
+ <span class="special">}</span>
+
+ <span class="keyword">bool</span> <span class="identifier">equal</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">PolyRingIterator</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">_ringIter</span> <span class="special">==</span> <span class="identifier">other</span><span class="special">.</span><span class="identifier">getRingIter</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">R</span> <span class="identifier">dereference</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{</span><span class="keyword">return</span> <span class="special">*(*</span><span class="identifier">_ringIter</span><span class="special">);}</span>
+
+ <span class="identifier">I</span> <span class="identifier">_ringIter</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<h4>
+<a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.h8"></a>
+ <span class="phrase"><a name="geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.boost_range_for_polygonringiterator"></a></span><a class="link" href="example_source_code__adapting_a_legacy_geometry_object_model.html#geometry.examples.example_source_code__adapting_a_legacy_geometry_object_model.boost_range_for_polygonringiterator">Boost.Range
+ for PolygonRingIterator</a>
+ </h4>
+<a name="adaption_of_qpolygon_range_source_code"></a><pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">PolyRingIterator</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QRing</span><span class="special">*&gt;::</span><span class="identifier">iterator</span><span class="special">,</span> <span class="identifier">QRing</span><span class="special">&gt;</span> <span class="identifier">PolygonRingIterator</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">PolyRingIterator</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">QRing</span><span class="special">*&gt;::</span><span class="identifier">const_iterator</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">QRing</span><span class="special">&gt;</span> <span class="identifier">ConstPolygonRingIterator</span><span class="special">;</span>
+
+<span class="keyword">class</span> <span class="identifier">CustomPolygonRingRange</span>
+<span class="special">{</span>
+ <span class="identifier">PolygonRingIterator</span> <span class="identifier">_begin</span><span class="special">;</span>
+ <span class="identifier">PolygonRingIterator</span> <span class="identifier">_end</span><span class="special">;</span>
+
+ <span class="keyword">bool</span> <span class="identifier">isIterSet</span><span class="special">;</span>
+
+ <span class="identifier">ConstPolygonRingIterator</span> <span class="identifier">_cbegin</span><span class="special">;</span>
+ <span class="identifier">ConstPolygonRingIterator</span> <span class="identifier">_cend</span><span class="special">;</span>
+
+ <span class="keyword">bool</span> <span class="identifier">isCIterSet</span><span class="special">;</span>
+
+<span class="keyword">public</span><span class="special">:</span>
+
+ <span class="identifier">CustomPolygonRingRange</span><span class="special">(</span><span class="identifier">PolygonRingIterator</span> <span class="identifier">begin</span><span class="special">,</span> <span class="identifier">PolygonRingIterator</span> <span class="identifier">end</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">_begin</span><span class="special">(</span><span class="identifier">begin</span><span class="special">),</span> <span class="identifier">_end</span><span class="special">(</span><span class="identifier">end</span><span class="special">),</span> <span class="identifier">isIterSet</span><span class="special">(</span><span class="keyword">true</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="identifier">CustomPolygonRingRange</span><span class="special">(</span><span class="identifier">ConstPolygonRingIterator</span> <span class="identifier">begin</span><span class="special">,</span> <span class="identifier">ConstPolygonRingIterator</span> <span class="identifier">end</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">_cbegin</span><span class="special">(</span><span class="identifier">begin</span><span class="special">),</span> <span class="identifier">_cend</span><span class="special">(</span><span class="identifier">end</span><span class="special">),</span> <span class="identifier">isCIterSet</span><span class="special">(</span><span class="keyword">true</span><span class="special">)</span> <span class="special">{}</span>
+
+ <span class="identifier">PolygonRingIterator</span> <span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">isIterSet</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">_begin</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">ConstPolygonRingIterator</span> <span class="identifier">cbegin</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">isCIterSet</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">_cbegin</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">PolygonRingIterator</span> <span class="identifier">end</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">isIterSet</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">_end</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">ConstPolygonRingIterator</span> <span class="identifier">cend</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="identifier">assert</span><span class="special">(</span><span class="identifier">isCIterSet</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">_cend</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+ <span class="comment">// Specialize metafunctions. We must include the range.hpp header.</span>
+ <span class="comment">// We must open the 'boost' namespace.</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">range_iterator</span><span class="special">&lt;</span><span class="identifier">CustomPolygonRingRange</span><span class="special">&gt;</span> <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">PolygonRingIterator</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">range_const_iterator</span><span class="special">&lt;</span><span class="identifier">CustomPolygonRingRange</span><span class="special">&gt;</span> <span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">ConstPolygonRingIterator</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+
+<span class="special">}</span> <span class="comment">// namespace 'boost'</span>
+
+
+<span class="comment">// The required Range functions. These should be defined in the same namespace</span>
+<span class="comment">// as Ring.</span>
+
+<span class="keyword">inline</span> <span class="identifier">PolygonRingIterator</span> <span class="identifier">range_begin</span><span class="special">(</span><span class="identifier">CustomPolygonRingRange</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span>
+ <span class="special">{</span><span class="keyword">return</span> <span class="identifier">r</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();}</span>
+
+<span class="keyword">inline</span> <span class="identifier">ConstPolygonRingIterator</span> <span class="identifier">range_begin</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CustomPolygonRingRange</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span>
+ <span class="special">{</span><span class="keyword">return</span> <span class="identifier">r</span><span class="special">.</span><span class="identifier">cbegin</span><span class="special">();}</span>
+
+<span class="keyword">inline</span> <span class="identifier">PolygonRingIterator</span> <span class="identifier">range_end</span><span class="special">(</span><span class="identifier">CustomPolygonRingRange</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span>
+ <span class="special">{</span><span class="keyword">return</span> <span class="identifier">r</span><span class="special">.</span><span class="identifier">end</span><span class="special">();}</span>
+
+<span class="keyword">inline</span> <span class="identifier">ConstPolygonRingIterator</span> <span class="identifier">range_end</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CustomPolygonRingRange</span><span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span>
+ <span class="special">{</span><span class="keyword">return</span> <span class="identifier">r</span><span class="special">.</span><span class="identifier">cend</span><span class="special">();}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="example__adapting_a_legacy_geometry_object_model.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../release_notes.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/indexes.html b/libs/geometry/doc/html/geometry/indexes.html
index b2d420f282..aafcec2c8a 100644
--- a/libs/geometry/doc/html/geometry/indexes.html
+++ b/libs/geometry/doc/html/geometry/indexes.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Indexes</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
-<link rel="prev" href="compilation.html" title="Compilation">
-<link rel="next" href="indexes/matrix.html" title="Reference matrix">
+<link rel="prev" href="reference/views/identity_view.html" title="identity_view">
+<link rel="next" href="indexes/matrix.html" title="Reference Matrix">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,21 +20,21 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="compilation.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes/matrix.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="reference/views/identity_view.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes/matrix.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="geometry.indexes"></a><a class="link" href="indexes.html" title="Indexes">Indexes</a>
</h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="indexes/matrix.html">Reference matrix</a></span></dt>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="indexes/matrix.html">Reference Matrix</a></span></dt>
<dt><span class="section"><a href="indexes/alphabetical_index.html">Alphabetical Index</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -42,7 +42,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="compilation.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes/matrix.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="reference/views/identity_view.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes/matrix.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/indexes/alphabetical_index.html b/libs/geometry/doc/html/geometry/indexes/alphabetical_index.html
index 1cb55e5763..99a77027cd 100644
--- a/libs/geometry/doc/html/geometry/indexes/alphabetical_index.html
+++ b/libs/geometry/doc/html/geometry/indexes/alphabetical_index.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Alphabetical Index</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../indexes.html" title="Indexes">
-<link rel="prev" href="matrix.html" title="Reference matrix">
-<link rel="next" href="../reference.html" title="Reference">
+<link rel="prev" href="matrix.html" title="Reference Matrix">
+<link rel="next" href="../examples.html" title="Examples">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="matrix.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="matrix.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../examples.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@@ -29,9 +29,14 @@
<p>
</p>
<div class="index">
-<div class="titlepage"><div><div><h4 class="title"><a name="id783841"></a></h4></div></div></div>
+<div class="titlepage"><div><div><h4 class="title"><a name="idp137577568"></a></h4></div></div></div>
<div class="index">
<div class="indexdiv">
+<h3>Symbols</h3>
+<dl><dt>~rtree, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/_rtree__.html">~rtree()</a>
+</dt></dl>
+</div>
+<div class="indexdiv">
<h3>A</h3>
<dl>
<dt>add_point, <a class="indexterm" href="../reference/arithmetic/add_point.html">add_point</a>
@@ -54,9 +59,9 @@
<dt>assign_value, <a class="indexterm" href="../reference/arithmetic/assign_value.html">assign_value</a>
</dt>
<dt>assign_values, <a class="indexterm" href="../reference/algorithms/assign/assign_values_3_2_coordinate_values.html">assign_values
- (2 coordinate values)</a>, <a class="indexterm" href="../reference/algorithms/assign/assign_values_5_4_coordinate_values.html">assign_values
- (4 coordinate values)</a>, <a class="indexterm" href="../reference/algorithms/assign/assign_values_4_3_coordinate_values.html">assign_values
- (3 coordinate values)</a>
+ (2 coordinate values)</a>, <a class="indexterm" href="../reference/algorithms/assign/assign_values_4_3_coordinate_values.html">assign_values
+ (3 coordinate values)</a>, <a class="indexterm" href="../reference/algorithms/assign/assign_values_5_4_coordinate_values.html">assign_values
+ (4 coordinate values)</a>
</dt>
<dt>assign_zero, <a class="indexterm" href="../reference/algorithms/assign/assign_zero.html">assign_zero</a>
</dt>
@@ -69,6 +74,8 @@
<dl>
<dt>bashein_detmer, <a class="indexterm" href="../reference/strategies/strategy_centroid_bashein_detmer.html">strategy::centroid::bashein_detmer</a>
</dt>
+<dt>boost, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree.html">boost::geometry::index::rtree</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__linear.html">boost::geometry::index::linear</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__quadratic.html">boost::geometry::index::quadratic</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__rstar.html">boost::geometry::index::rstar</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_linear.html">boost::geometry::index::dynamic_linear</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_quadratic.html">boost::geometry::index::dynamic_quadratic</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_rstar.html">boost::geometry::index::dynamic_rstar</a>, <a class="indexterm" href="../reference/spatial_indexes/observers/boost__geometry__index__indexable.html">boost::geometry::index::indexable</a>, <a class="indexterm" href="../reference/spatial_indexes/observers/boost__geometry__index__equal_to.html">boost::geometry::index::equal_to</a>
+</dt>
<dt>BOOST_GEOMETRY_REGISTER_BOX, <a class="indexterm" href="../reference/adapted/register/boost_geometry_register_box.html">BOOST_GEOMETRY_REGISTER_BOX</a>
</dt>
<dt>BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES, <a class="indexterm" href="../reference/adapted/register/boost_geometry_register_box_2d_4values.html">BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES</a>
@@ -107,11 +114,33 @@
</dt>
<dt>BOOST_GEOMETRY_REGISTER_RING_TEMPLATED, <a class="indexterm" href="../reference/adapted/register/boost_geometry_register_ring_templated.html">BOOST_GEOMETRY_REGISTER_RING_TEMPLATED</a>
</dt>
+<dt>bounds, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/bounds__.html">bounds()</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/bounds_rtree______const___.html">bounds(rtree&lt;...&gt;
+ const &amp;)</a>
+</dt>
<dt>box, <a class="indexterm" href="../reference/models/model_box.html">model::box</a>
</dt>
<dt>box_view, <a class="indexterm" href="../reference/views/box_view.html">box_view</a>
</dt>
-<dt>buffer, <a class="indexterm" href="../reference/algorithms/buffer/buffer.html">buffer</a>
+<dt>buffer, <a class="indexterm" href="../reference/algorithms/buffer/buffer_4.html">buffer</a>, <a class="indexterm" href="../reference/algorithms/buffer/buffer_7_with_strategies.html">buffer
+ (with strategies)</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_join_round.html">strategy::buffer::join_round</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_join_miter.html">strategy::buffer::join_miter</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_end_round.html">strategy::buffer::end_round</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_end_flat.html">strategy::buffer::end_flat</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_distance_symmetric.html">strategy::buffer::distance_symmetric</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_distance_asymmetric.html">strategy::buffer::distance_asymmetric</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_point_circle.html">strategy::buffer::point_circle</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_point_square.html">strategy::buffer::point_square</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_side_straight.html">strategy::buffer::side_straight</a>
+</dt>
+<dt>buffered_concave, <a class="indexterm" href="../reference/enumerations/piece_type.html">piece_type</a>
+</dt>
+<dt>buffered_flat_end, <a class="indexterm" href="../reference/enumerations/piece_type.html">piece_type</a>
+</dt>
+<dt>buffered_join, <a class="indexterm" href="../reference/enumerations/piece_type.html">piece_type</a>
+</dt>
+<dt>buffered_point, <a class="indexterm" href="../reference/enumerations/piece_type.html">piece_type</a>
+</dt>
+<dt>buffered_round_end, <a class="indexterm" href="../reference/enumerations/piece_type.html">piece_type</a>
+</dt>
+<dt>buffered_segment, <a class="indexterm" href="../reference/enumerations/piece_type.html">piece_type</a>
+</dt>
+<dt>buffer_side_left, <a class="indexterm" href="../reference/enumerations/buffer_side_selector.html">buffer_side_selector</a>
+</dt>
+<dt>buffer_side_right, <a class="indexterm" href="../reference/enumerations/buffer_side_selector.html">buffer_side_selector</a>
+</dt>
+<dt>buffer_side_selector, <a class="indexterm" href="../reference/enumerations/buffer_side_selector.html">buffer_side_selector</a>
</dt>
</dl>
</div>
@@ -125,7 +154,8 @@
</dt>
<dt>centroid_exception, <a class="indexterm" href="../reference/exceptions/centroid_exception.html">centroid_exception</a>
</dt>
-<dt>clear, <a class="indexterm" href="../reference/algorithms/clear.html">clear</a>
+<dt>clear, <a class="indexterm" href="../reference/algorithms/clear.html">clear</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/clear__.html">clear()</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/clear_rtree________.html">clear(rtree&lt;...&gt;
+ &amp;)</a>
</dt>
<dt>clockwise, <a class="indexterm" href="../reference/enumerations/order_selector.html">order_selector</a>
</dt>
@@ -141,7 +171,11 @@
</dt>
<dt>closure_undertermined, <a class="indexterm" href="../reference/enumerations/closure_selector.html">closure_selector</a>
</dt>
-<dt>comparable_distance, <a class="indexterm" href="../reference/algorithms/distance/comparable_distance.html">comparable_distance</a>
+<dt>comparable_distance, <a class="indexterm" href="../reference/algorithms/distance/comparable_distance_3_with_strategy.html">comparable_distance
+ (with strategy)</a>, <a class="indexterm" href="../reference/algorithms/distance/comparable_distance_2.html">comparable_distance</a>
+</dt>
+<dt>contains, <a class="indexterm" href="../reference/spatial_indexes/group__predicates/contains_geometry_const___.html">contains(Geometry
+ const &amp;)</a>
</dt>
<dt>convert, <a class="indexterm" href="../reference/algorithms/convert.html">convert</a>
</dt>
@@ -153,10 +187,19 @@
</dt>
<dt>correct, <a class="indexterm" href="../reference/algorithms/correct.html">correct</a>
</dt>
+<dt>count, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/count_valueorindexable_const___.html">count(ValueOrIndexable
+ const &amp;)</a>
+</dt>
<dt>counterclockwise, <a class="indexterm" href="../reference/enumerations/order_selector.html">order_selector</a>
</dt>
<dt>covered_by, <a class="indexterm" href="../reference/algorithms/covered_by/covered_by_2.html">covered_by</a>, <a class="indexterm" href="../reference/algorithms/covered_by/covered_by_3_with_strategy.html">covered_by
- (with strategy)</a>
+ (with strategy)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__predicates/covered_by_geometry_const___.html">covered_by(Geometry
+ const &amp;)</a>
+</dt>
+<dt>covers, <a class="indexterm" href="../reference/spatial_indexes/group__predicates/covers_geometry_const___.html">covers(Geometry
+ const &amp;)</a>
+</dt>
+<dt>crosses, <a class="indexterm" href="../reference/algorithms/crosses.html">crosses</a>
</dt>
<dt>crossings_multiply, <a class="indexterm" href="../reference/strategies/strategy_within_crossings_multiply.html">strategy::within::crossings_multiply</a>
</dt>
@@ -179,10 +222,15 @@
</dt>
<dt>dimension, <a class="indexterm" href="../reference/core/dimension.html">dimension</a>
</dt>
-<dt>disjoint, <a class="indexterm" href="../reference/algorithms/disjoint.html">disjoint</a>
+<dt>disjoint, <a class="indexterm" href="../reference/algorithms/disjoint.html">disjoint</a>, <a class="indexterm" href="../reference/spatial_indexes/group__predicates/disjoint_geometry_const___.html">disjoint(Geometry
+ const &amp;)</a>
+</dt>
+<dt>distance, <a class="indexterm" href="../reference/algorithms/distance/distance_3_with_strategy.html">distance
+ (with strategy)</a>, <a class="indexterm" href="../reference/algorithms/distance/distance_2.html">distance</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_pythagoras.html">strategy::distance::pythagoras</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_pythagoras_box_box.html">strategy::distance::pythagoras_box_box</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_pythagoras_point_box.html">strategy::distance::pythagoras_point_box</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_haversine.html">strategy::distance::haversine</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_projected_point.html">strategy::distance::projected_point</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_cross_track.html">strategy::distance::cross_track</a>
+</dt>
+<dt>distance_asymmetric, <a class="indexterm" href="../reference/strategies/strategy_buffer_distance_asymmetric.html">strategy::buffer::distance_asymmetric</a>
</dt>
-<dt>distance, <a class="indexterm" href="../reference/algorithms/distance/distance_2.html">distance</a>, <a class="indexterm" href="../reference/algorithms/distance/distance_3_with_strategy.html">distance
- (with strategy)</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_pythagoras.html">strategy::distance::pythagoras</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_haversine.html">strategy::distance::haversine</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_projected_point.html">strategy::distance::projected_point</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_cross_track.html">strategy::distance::cross_track</a>
+<dt>distance_symmetric, <a class="indexterm" href="../reference/strategies/strategy_buffer_distance_symmetric.html">strategy::buffer::distance_symmetric</a>
</dt>
<dt>divide_point, <a class="indexterm" href="../reference/arithmetic/divide_point.html">divide_point</a>
</dt>
@@ -192,15 +240,30 @@
</dt>
<dt>douglas_peucker, <a class="indexterm" href="../reference/strategies/strategy_simplify_douglas_peucker.html">strategy::simplify::douglas_peucker</a>
</dt>
+<dt>dynamic_linear, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_linear.html">boost::geometry::index::dynamic_linear</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_linear.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.dynamic_linear_size_t_">dynamic_linear(size_t)</a>
+</dt>
+<dt>dynamic_quadratic, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_quadratic.html">boost::geometry::index::dynamic_quadratic</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_quadratic.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.dynamic_quadratic_size_t_">dynamic_quadratic(size_t)</a>
+</dt>
+<dt>dynamic_rstar, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_rstar.html">boost::geometry::index::dynamic_rstar</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_rstar.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.dynamic_rstar_size_t_">dynamic_rstar(size_t)</a>
+</dt>
</dl>
</div>
<div class="indexdiv">
<h3>E</h3>
<dl>
+<dt>empty, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/empty__.html">empty()</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/empty_rtree______const___.html">empty(rtree&lt;...&gt;
+ const &amp;)</a>
+</dt>
+<dt>end_flat, <a class="indexterm" href="../reference/strategies/strategy_buffer_end_flat.html">strategy::buffer::end_flat</a>
+</dt>
+<dt>end_round, <a class="indexterm" href="../reference/strategies/strategy_buffer_end_round.html">strategy::buffer::end_round</a>
+</dt>
<dt>envelope, <a class="indexterm" href="../reference/algorithms/envelope/envelope.html">envelope</a>
</dt>
<dt>equals, <a class="indexterm" href="../reference/algorithms/equals.html">equals</a>
</dt>
+<dt>equal_to, <a class="indexterm" href="../reference/spatial_indexes/observers/boost__geometry__index__equal_to.html">boost::geometry::index::equal_to</a>
+</dt>
<dt>ever_circling_iterator, <a class="indexterm" href="../reference/iterators/ever_circling_iterator.html">ever_circling_iterator</a>
</dt>
<dt>exception, <a class="indexterm" href="../reference/exceptions/exception.html">exception</a>
@@ -215,11 +278,9 @@
<div class="indexdiv">
<h3>F</h3>
<dl>
-<dt>for_each_point, <a class="indexterm" href="../reference/algorithms/for_each/for_each_point_2_const_version.html">for_each_point
- (const version)</a>, <a class="indexterm" href="../reference/algorithms/for_each/for_each_point_2.html">for_each_point</a>
+<dt>for_each_point, <a class="indexterm" href="../reference/algorithms/for_each/for_each_point.html">for_each_point</a>
</dt>
-<dt>for_each_segment, <a class="indexterm" href="../reference/algorithms/for_each/for_each_segment_2_const_version.html">for_each_segment
- (const version)</a>, <a class="indexterm" href="../reference/algorithms/for_each/for_each_segment_2.html">for_each_segment</a>
+<dt>for_each_segment, <a class="indexterm" href="../reference/algorithms/for_each/for_each_segment.html">for_each_segment</a>
</dt>
<dt>franklin, <a class="indexterm" href="../reference/strategies/strategy_within_franklin.html">strategy::within::franklin</a>
</dt>
@@ -230,9 +291,13 @@
<dl>
<dt>geographic, <a class="indexterm" href="../reference/cs/cs_geographic.html">cs::geographic</a>
</dt>
-<dt>get, <a class="indexterm" href="../reference/access/get/get_2.html">get</a>, <a class="indexterm" href="../reference/access/get/get_2_with_index.html">get
+<dt>geometry, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree.html">boost::geometry::index::rtree</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__linear.html">boost::geometry::index::linear</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__quadratic.html">boost::geometry::index::quadratic</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__rstar.html">boost::geometry::index::rstar</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_linear.html">boost::geometry::index::dynamic_linear</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_quadratic.html">boost::geometry::index::dynamic_quadratic</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_rstar.html">boost::geometry::index::dynamic_rstar</a>, <a class="indexterm" href="../reference/spatial_indexes/observers/boost__geometry__index__indexable.html">boost::geometry::index::indexable</a>, <a class="indexterm" href="../reference/spatial_indexes/observers/boost__geometry__index__equal_to.html">boost::geometry::index::equal_to</a>
+</dt>
+<dt>get, <a class="indexterm" href="../reference/access/get/get_1.html">get</a>, <a class="indexterm" href="../reference/access/get/get_1_with_index.html">get
(with index)</a>
</dt>
+<dt>get_allocator, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/get_allocator__.html">get_allocator()</a>
+</dt>
<dt>get_as_radian, <a class="indexterm" href="../reference/access/get/get_as_radian.html">get_as_radian</a>
</dt>
<dt>graham_andrew, <a class="indexterm" href="../reference/strategies/strategy_convex_hull_graham_andrew.html">strategy::convex_hull::graham_andrew</a>
@@ -253,6 +318,23 @@
<dl>
<dt>identity_view, <a class="indexterm" href="../reference/views/identity_view.html">identity_view</a>
</dt>
+<dt>index, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree.html">boost::geometry::index::rtree</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__linear.html">boost::geometry::index::linear</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__quadratic.html">boost::geometry::index::quadratic</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__rstar.html">boost::geometry::index::rstar</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_linear.html">boost::geometry::index::dynamic_linear</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_quadratic.html">boost::geometry::index::dynamic_quadratic</a>, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_rstar.html">boost::geometry::index::dynamic_rstar</a>, <a class="indexterm" href="../reference/spatial_indexes/observers/boost__geometry__index__indexable.html">boost::geometry::index::indexable</a>, <a class="indexterm" href="../reference/spatial_indexes/observers/boost__geometry__index__equal_to.html">boost::geometry::index::equal_to</a>
+</dt>
+<dt>indexable, <a class="indexterm" href="../reference/spatial_indexes/observers/boost__geometry__index__indexable.html">boost::geometry::index::indexable</a>
+</dt>
+<dt>indexable_get, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/indexable_get__.html">indexable_get()</a>
+</dt>
+<dt>insert, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/insert_value_type_const___.html">insert(value_type
+ const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/insert_iterator__iterator_.html">insert(Iterator,
+ Iterator)</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/insert_convertibleorrange_const___.html">insert(ConvertibleOrRange
+ const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/insert_rtree_________value_const___.html">insert(rtree&lt;...&gt;
+ &amp;, Value const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/insert_rtree_________iterator__iterator_.html">insert(rtree&lt;...&gt;
+ &amp;, Iterator, Iterator)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/insert_rtree_________convertibleorrange_const___.html">insert(rtree&lt;...&gt;
+ &amp;, ConvertibleOrRange const &amp;)</a>
+</dt>
+<dt>inserter, <a class="indexterm" href="../reference/spatial_indexes/group__inserters/inserter_container___.html">inserter(Container
+ &amp;)</a>
+</dt>
<dt>interior_rings, <a class="indexterm" href="../reference/access/interior_rings/interior_rings_1.html">interior_rings</a>, <a class="indexterm" href="../reference/access/interior_rings/interior_rings_1_const_version.html">interior_rings
(const version)</a>
</dt>
@@ -262,12 +344,36 @@
</dt>
<dt>intersects, <a class="indexterm" href="../reference/algorithms/intersects/intersects_1_one_geometry.html">intersects
(one geometry)</a>, <a class="indexterm" href="../reference/algorithms/intersects/intersects_2_two_geometries.html">intersects
- (two geometries)</a>
+ (two geometries)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__predicates/intersects_geometry_const___.html">intersects(Geometry
+ const &amp;)</a>
</dt>
<dt>inverse_transformer, <a class="indexterm" href="../reference/strategies/strategy_transform_inverse_transformer.html">strategy::transform::inverse_transformer</a>
</dt>
<dt>is_radian, <a class="indexterm" href="../reference/core/is_radian.html">is_radian</a>
</dt>
+<dt>is_simple, <a class="indexterm" href="../reference/algorithms/is_simple.html">is_simple</a>
+</dt>
+<dt>is_valid, <a class="indexterm" href="../reference/algorithms/is_valid.html">is_valid</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>J</h3>
+<dl>
+<dt>join_concave, <a class="indexterm" href="../reference/enumerations/join_selector.html">join_selector</a>
+</dt>
+<dt>join_continue, <a class="indexterm" href="../reference/enumerations/join_selector.html">join_selector</a>
+</dt>
+<dt>join_convex, <a class="indexterm" href="../reference/enumerations/join_selector.html">join_selector</a>
+</dt>
+<dt>join_miter, <a class="indexterm" href="../reference/strategies/strategy_buffer_join_miter.html">strategy::buffer::join_miter</a>
+</dt>
+<dt>join_round, <a class="indexterm" href="../reference/strategies/strategy_buffer_join_round.html">strategy::buffer::join_round</a>
+</dt>
+<dt>join_selector, <a class="indexterm" href="../reference/enumerations/join_selector.html">join_selector</a>
+</dt>
+<dt>join_spike, <a class="indexterm" href="../reference/enumerations/join_selector.html">join_selector</a>
+</dt>
</dl>
</div>
<div class="indexdiv">
@@ -276,6 +382,8 @@
<dt>length, <a class="indexterm" href="../reference/algorithms/length/length_1.html">length</a>, <a class="indexterm" href="../reference/algorithms/length/length_2_with_strategy.html">length
(with strategy)</a>
</dt>
+<dt>linear, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__linear.html">boost::geometry::index::linear</a>
+</dt>
<dt>linestring, <a class="indexterm" href="../reference/models/model_linestring.html">model::linestring</a>
</dt>
</dl>
@@ -310,6 +418,9 @@
<div class="indexdiv">
<h3>N</h3>
<dl>
+<dt>nearest, <a class="indexterm" href="../reference/spatial_indexes/group__predicates/nearest_geometry_const____unsigned_.html">nearest(Geometry
+ const &amp;, unsigned)</a>
+</dt>
<dt>num_geometries, <a class="indexterm" href="../reference/algorithms/num_geometries.html">num_geometries</a>
</dt>
<dt>num_interior_rings, <a class="indexterm" href="../reference/algorithms/num_interior_rings.html">num_interior_rings</a>
@@ -323,24 +434,41 @@
<dl>
<dt>open, <a class="indexterm" href="../reference/enumerations/closure_selector.html">closure_selector</a>
</dt>
+<dt>operator(), <a class="indexterm" href="../reference/spatial_indexes/observers/boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___">operator()(Value
+ const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/observers/boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___">operator()(Value
+ const &amp;, Value const &amp;)</a>
+</dt>
+<dt>operator=, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree_const___.html">operator=(rtree
+ const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree____.html">operator=(rtree
+ &amp;&amp;)</a>
+</dt>
<dt>order_selector, <a class="indexterm" href="../reference/enumerations/order_selector.html">order_selector</a>
</dt>
<dt>order_undetermined, <a class="indexterm" href="../reference/enumerations/order_selector.html">order_selector</a>
</dt>
-<dt>overlaps, <a class="indexterm" href="../reference/algorithms/overlaps.html">overlaps</a>
+<dt>overlaps, <a class="indexterm" href="../reference/algorithms/overlaps.html">overlaps</a>, <a class="indexterm" href="../reference/spatial_indexes/group__predicates/overlaps_geometry_const___.html">overlaps(Geometry
+ const &amp;)</a>
</dt>
</dl>
</div>
<div class="indexdiv">
<h3>P</h3>
<dl>
+<dt>parameters, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/parameters__.html">parameters()</a>
+</dt>
<dt>perimeter, <a class="indexterm" href="../reference/algorithms/perimeter/perimeter_1.html">perimeter</a>, <a class="indexterm" href="../reference/algorithms/perimeter/perimeter_2_with_strategy.html">perimeter
(with strategy)</a>
</dt>
+<dt>piece_type, <a class="indexterm" href="../reference/enumerations/piece_type.html">piece_type</a>
+</dt>
<dt>point, <a class="indexterm" href="../reference/models/model_point.html">model::point</a>
</dt>
+<dt>point_circle, <a class="indexterm" href="../reference/strategies/strategy_buffer_point_circle.html">strategy::buffer::point_circle</a>
+</dt>
<dt>point_order, <a class="indexterm" href="../reference/core/point_order.html">point_order</a>
</dt>
+<dt>point_square, <a class="indexterm" href="../reference/strategies/strategy_buffer_point_square.html">strategy::buffer::point_square</a>
+</dt>
<dt>point_type, <a class="indexterm" href="../reference/core/point_type.html">point_type</a>
</dt>
<dt>point_xy, <a class="indexterm" href="../reference/models/model_d2_point_xy.html">model::d2::point_xy</a>
@@ -351,6 +479,31 @@
</dt>
<dt>pythagoras, <a class="indexterm" href="../reference/strategies/strategy_distance_pythagoras.html">strategy::distance::pythagoras</a>
</dt>
+<dt>pythagoras_box_box, <a class="indexterm" href="../reference/strategies/strategy_distance_pythagoras_box_box.html">strategy::distance::pythagoras_box_box</a>
+</dt>
+<dt>pythagoras_point_box, <a class="indexterm" href="../reference/strategies/strategy_distance_pythagoras_point_box.html">strategy::distance::pythagoras_point_box</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>Q</h3>
+<dl>
+<dt>qbegin, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/qbegin_predicates_const___.html">qbegin(Predicates
+ const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/qbegin_rtree______const____predicates_const___.html">qbegin(rtree&lt;...&gt;
+ const &amp;, Predicates const &amp;)</a>
+</dt>
+<dt>qend, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/qend__.html">qend()</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/qend_rtree______const___.html">qend(rtree&lt;...&gt;
+ const &amp;)</a>
+</dt>
+<dt>quadratic, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__quadratic.html">boost::geometry::index::quadratic</a>
+</dt>
+<dt>queried, <a class="indexterm" href="../reference/spatial_indexes/group__adaptors/queried_predicates_const___.html">queried(Predicates
+ const &amp;)</a>
+</dt>
+<dt>query, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/query_predicates_const____outiter_.html">query(Predicates
+ const &amp;, OutIter)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/query_rtree______const____predicates_const____outiter_.html">query(rtree&lt;...&gt;
+ const &amp;, Predicates const &amp;, OutIter)</a>
+</dt>
</dl>
</div>
<div class="indexdiv">
@@ -358,8 +511,18 @@
<dl>
<dt>radian, <a class="indexterm" href="../reference/core/radian.html">radian</a>
</dt>
+<dt>read_wkt, <a class="indexterm" href="../reference/io/wkt/read_wkt.html">read_wkt</a>
+</dt>
<dt>referring_segment, <a class="indexterm" href="../reference/models/model_referring_segment.html">model::referring_segment</a>
</dt>
+<dt>remove, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/remove_value_type_const___.html">remove(value_type
+ const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/remove_iterator__iterator_.html">remove(Iterator,
+ Iterator)</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/remove_convertibleorrange_const___.html">remove(ConvertibleOrRange
+ const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/remove_rtree_________value_const___.html">remove(rtree&lt;...&gt;
+ &amp;, Value const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/remove_rtree_________iterator__iterator_.html">remove(rtree&lt;...&gt;
+ &amp;, Iterator, Iterator)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/remove_rtree_________convertibleorrange_const___.html">remove(rtree&lt;...&gt;
+ &amp;, ConvertibleOrRange const &amp;)</a>
+</dt>
<dt>return_buffer, <a class="indexterm" href="../reference/algorithms/buffer/return_buffer.html">return_buffer</a>
</dt>
<dt>return_centroid, <a class="indexterm" href="../reference/algorithms/centroid/return_centroid_1.html">return_centroid</a>, <a class="indexterm" href="../reference/algorithms/centroid/return_centroid_2_with_strategy.html">return_centroid
@@ -377,18 +540,33 @@
</dt>
<dt>rotate_transformer, <a class="indexterm" href="../reference/strategies/strategy_transform_rotate_transformer.html">strategy::transform::rotate_transformer</a>
</dt>
+<dt>rstar, <a class="indexterm" href="../reference/spatial_indexes/parameters/boost__geometry__index__rstar.html">boost::geometry::index::rstar</a>
+</dt>
+<dt>rtree, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree.html">boost::geometry::index::rtree</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree__.html">rtree()</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html">rtree(parameters_type
+ const &amp;, indexable_getter const &amp;, value_equal const &amp;, allocator_type
+ const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_iterator__iterator_.html">rtree(Iterator,
+ Iterator)</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_range_const___.html">rtree(Range
+ const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const___.html">rtree(rtree
+ const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const____allocator_type_const___.html">rtree(rtree
+ const &amp;, allocator_type const &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree____.html">rtree(rtree
+ &amp;&amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_____allocator_type_const___.html">rtree(rtree
+ &amp;&amp;, allocator_type const &amp;)</a>
+</dt>
</dl>
</div>
<div class="indexdiv">
<h3>S</h3>
<dl>
+<dt>satisfies, <a class="indexterm" href="../reference/spatial_indexes/group__predicates/satisfies_unarypredicate_const___.html">satisfies(UnaryPredicate
+ const &amp;)</a>
+</dt>
<dt>scale_transformer, <a class="indexterm" href="../reference/strategies/strategy_transform_scale_transformer.html">strategy::transform::scale_transformer</a>
</dt>
<dt>segment, <a class="indexterm" href="../reference/models/model_segment.html">model::segment</a>
</dt>
<dt>segment_view, <a class="indexterm" href="../reference/views/segment_view.html">segment_view</a>
</dt>
-<dt>set, <a class="indexterm" href="../reference/access/set/set_3.html">set</a>, <a class="indexterm" href="../reference/access/set/set_3_with_index.html">set
+<dt>set, <a class="indexterm" href="../reference/access/set/set_2.html">set</a>, <a class="indexterm" href="../reference/access/set/set_2_with_index.html">set
(with index)</a>
</dt>
<dt>set_from_radian, <a class="indexterm" href="../reference/access/set/set_from_radian.html">set_from_radian</a>
@@ -399,16 +577,21 @@
</dt>
<dt>side_by_triangle, <a class="indexterm" href="../reference/strategies/strategy_side_side_by_triangle.html">strategy::side::side_by_triangle</a>
</dt>
+<dt>side_straight, <a class="indexterm" href="../reference/strategies/strategy_buffer_side_straight.html">strategy::buffer::side_straight</a>
+</dt>
<dt>simplify, <a class="indexterm" href="../reference/algorithms/simplify/simplify_4_with_strategy.html">simplify
(with strategy)</a>, <a class="indexterm" href="../reference/algorithms/simplify/simplify_3.html">simplify</a>, <a class="indexterm" href="../reference/strategies/strategy_simplify_douglas_peucker.html">strategy::simplify::douglas_peucker</a>
</dt>
+<dt>size, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/size__.html">size()</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/size_rtree______const___.html">size(rtree&lt;...&gt;
+ const &amp;)</a>
+</dt>
<dt>spherical, <a class="indexterm" href="../reference/cs/cs_spherical.html">cs::spherical</a>
</dt>
<dt>spherical_equatorial, <a class="indexterm" href="../reference/cs/cs_spherical_equatorial.html">cs::spherical_equatorial</a>
</dt>
<dt>spherical_side_formula, <a class="indexterm" href="../reference/strategies/strategy_side_spherical_side_formula.html">strategy::side::spherical_side_formula</a>
</dt>
-<dt>strategy, <a class="indexterm" href="../reference/strategies/strategy_distance_pythagoras.html">strategy::distance::pythagoras</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_haversine.html">strategy::distance::haversine</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_projected_point.html">strategy::distance::projected_point</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_cross_track.html">strategy::distance::cross_track</a>, <a class="indexterm" href="../reference/strategies/strategy_area_surveyor.html">strategy::area::surveyor</a>, <a class="indexterm" href="../reference/strategies/strategy_area_huiller.html">strategy::area::huiller</a>, <a class="indexterm" href="../reference/strategies/strategy_centroid_average.html">strategy::centroid::average</a>, <a class="indexterm" href="../reference/strategies/strategy_centroid_bashein_detmer.html">strategy::centroid::bashein_detmer</a>, <a class="indexterm" href="../reference/strategies/strategy_convex_hull_graham_andrew.html">strategy::convex_hull::graham_andrew</a>, <a class="indexterm" href="../reference/strategies/strategy_side_side_by_triangle.html">strategy::side::side_by_triangle</a>, <a class="indexterm" href="../reference/strategies/strategy_side_side_by_cross_track.html">strategy::side::side_by_cross_track</a>, <a class="indexterm" href="../reference/strategies/strategy_side_spherical_side_formula.html">strategy::side::spherical_side_formula</a>, <a class="indexterm" href="../reference/strategies/strategy_simplify_douglas_peucker.html">strategy::simplify::douglas_peucker</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_inverse_transformer.html">strategy::transform::inverse_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_map_transformer.html">strategy::transform::map_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_rotate_transformer.html">strategy::transform::rotate_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_scale_transformer.html">strategy::transform::scale_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_translate_transformer.html">strategy::transform::translate_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_ublas_transformer.html">strategy::transform::ublas_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_within_winding.html">strategy::within::winding</a>, <a class="indexterm" href="../reference/strategies/strategy_within_franklin.html">strategy::within::franklin</a>, <a class="indexterm" href="../reference/strategies/strategy_within_crossings_multiply.html">strategy::within::crossings_multiply</a>
+<dt>strategy, <a class="indexterm" href="../reference/strategies/strategy_distance_pythagoras.html">strategy::distance::pythagoras</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_pythagoras_box_box.html">strategy::distance::pythagoras_box_box</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_pythagoras_point_box.html">strategy::distance::pythagoras_point_box</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_haversine.html">strategy::distance::haversine</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_projected_point.html">strategy::distance::projected_point</a>, <a class="indexterm" href="../reference/strategies/strategy_distance_cross_track.html">strategy::distance::cross_track</a>, <a class="indexterm" href="../reference/strategies/strategy_area_surveyor.html">strategy::area::surveyor</a>, <a class="indexterm" href="../reference/strategies/strategy_area_huiller.html">strategy::area::huiller</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_join_round.html">strategy::buffer::join_round</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_join_miter.html">strategy::buffer::join_miter</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_end_round.html">strategy::buffer::end_round</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_end_flat.html">strategy::buffer::end_flat</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_distance_symmetric.html">strategy::buffer::distance_symmetric</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_distance_asymmetric.html">strategy::buffer::distance_asymmetric</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_point_circle.html">strategy::buffer::point_circle</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_point_square.html">strategy::buffer::point_square</a>, <a class="indexterm" href="../reference/strategies/strategy_buffer_side_straight.html">strategy::buffer::side_straight</a>, <a class="indexterm" href="../reference/strategies/strategy_centroid_average.html">strategy::centroid::average</a>, <a class="indexterm" href="../reference/strategies/strategy_centroid_bashein_detmer.html">strategy::centroid::bashein_detmer</a>, <a class="indexterm" href="../reference/strategies/strategy_convex_hull_graham_andrew.html">strategy::convex_hull::graham_andrew</a>, <a class="indexterm" href="../reference/strategies/strategy_side_side_by_triangle.html">strategy::side::side_by_triangle</a>, <a class="indexterm" href="../reference/strategies/strategy_side_side_by_cross_track.html">strategy::side::side_by_cross_track</a>, <a class="indexterm" href="../reference/strategies/strategy_side_spherical_side_formula.html">strategy::side::spherical_side_formula</a>, <a class="indexterm" href="../reference/strategies/strategy_simplify_douglas_peucker.html">strategy::simplify::douglas_peucker</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_inverse_transformer.html">strategy::transform::inverse_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_map_transformer.html">strategy::transform::map_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_rotate_transformer.html">strategy::transform::rotate_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_scale_transformer.html">strategy::transform::scale_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_translate_transformer.html">strategy::transform::translate_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_transform_ublas_transformer.html">strategy::transform::ublas_transformer</a>, <a class="indexterm" href="../reference/strategies/strategy_within_winding.html">strategy::within::winding</a>, <a class="indexterm" href="../reference/strategies/strategy_within_franklin.html">strategy::within::franklin</a>, <a class="indexterm" href="../reference/strategies/strategy_within_crossings_multiply.html">strategy::within::crossings_multiply</a>
</dt>
<dt>subtract_point, <a class="indexterm" href="../reference/arithmetic/subtract_point.html">subtract_point</a>
</dt>
@@ -416,6 +599,14 @@
</dt>
<dt>surveyor, <a class="indexterm" href="../reference/strategies/strategy_area_surveyor.html">strategy::area::surveyor</a>
</dt>
+<dt>svg, <a class="indexterm" href="../reference/io/svg/svg.html">svg</a>
+</dt>
+<dt>svg_mapper, <a class="indexterm" href="../reference/io/svg/svg_mapper.html">svg_mapper</a>
+</dt>
+<dt>swap, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/swap_rtree___.html">swap(rtree
+ &amp;)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__rtree__functions/swap_rtree_________rtree________.html">swap(rtree&lt;...&gt;
+ &amp;, rtree&lt;...&gt; &amp;)</a>
+</dt>
<dt>sym_difference, <a class="indexterm" href="../reference/algorithms/sym_difference.html">sym_difference</a>
</dt>
</dl>
@@ -450,12 +641,20 @@
</dl>
</div>
<div class="indexdiv">
+<h3>V</h3>
+<dl><dt>value_eq, <a class="indexterm" href="../reference/spatial_indexes/boost__geometry__index__rtree/value_eq__.html">value_eq()</a>
+</dt></dl>
+</div>
+<div class="indexdiv">
<h3>W</h3>
<dl>
<dt>winding, <a class="indexterm" href="../reference/strategies/strategy_within_winding.html">strategy::within::winding</a>
</dt>
<dt>within, <a class="indexterm" href="../reference/algorithms/within/within_2.html">within</a>, <a class="indexterm" href="../reference/algorithms/within/within_3_with_strategy.html">within
- (with strategy)</a>, <a class="indexterm" href="../reference/strategies/strategy_within_winding.html">strategy::within::winding</a>, <a class="indexterm" href="../reference/strategies/strategy_within_franklin.html">strategy::within::franklin</a>, <a class="indexterm" href="../reference/strategies/strategy_within_crossings_multiply.html">strategy::within::crossings_multiply</a>
+ (with strategy)</a>, <a class="indexterm" href="../reference/spatial_indexes/group__predicates/within_geometry_const___.html">within(Geometry
+ const &amp;)</a>, <a class="indexterm" href="../reference/strategies/strategy_within_winding.html">strategy::within::winding</a>, <a class="indexterm" href="../reference/strategies/strategy_within_franklin.html">strategy::within::franklin</a>, <a class="indexterm" href="../reference/strategies/strategy_within_crossings_multiply.html">strategy::within::crossings_multiply</a>
+</dt>
+<dt>wkt, <a class="indexterm" href="../reference/io/wkt/wkt.html">wkt</a>
</dt>
</dl>
</div>
@@ -467,8 +666,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -476,7 +675,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="matrix.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="matrix.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../examples.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/indexes/matrix.html b/libs/geometry/doc/html/geometry/indexes/matrix.html
index 19c55a8541..7132ce941c 100644
--- a/libs/geometry/doc/html/geometry/indexes/matrix.html
+++ b/libs/geometry/doc/html/geometry/indexes/matrix.html
@@ -1,9 +1,9 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>Reference matrix</title>
+<title>Reference Matrix</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../indexes.html" title="Indexes">
<link rel="prev" href="../indexes.html" title="Indexes">
@@ -24,7 +24,7 @@
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="geometry.indexes.matrix"></a><a class="link" href="matrix.html" title="Reference matrix">Reference matrix</a>
+<a name="geometry.indexes.matrix"></a><a class="link" href="matrix.html" title="Reference Matrix">Reference Matrix</a>
</h3></div></div></div>
<div class="informaltable">
<table class="table">
@@ -35,12 +35,12 @@
</colgroup>
<thead><tr><th colspan="3" valign="center">
<h3>
-<a name="id780938"></a>Geometry Concepts</h3>
+<a name="idp137136896"></a>Geometry Concepts</h3>
</th></tr></thead>
<tbody><tr>
<td valign="top">
<h4>
-<a name="id780955"></a>0-dimensional</h4>
+<a name="idp137138944"></a>0-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/concepts/concept_point.html" title="Point Concept">Point</a></td></tr>
<tr><td><a class="link" href="../reference/concepts/concept_multi_point.html" title="MultiPoint Concept">MultiPoint</a></td></tr>
@@ -48,7 +48,7 @@
</td>
<td valign="top">
<h4>
-<a name="id780994"></a>1-dimensional</h4>
+<a name="idp137143248"></a>1-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/concepts/concept_segment.html" title="Segment Concept">Segment</a></td></tr>
<tr><td><a class="link" href="../reference/concepts/concept_linestring.html" title="Linestring Concept">Linestring</a></td></tr>
@@ -57,7 +57,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781042"></a>2-dimensional</h4>
+<a name="idp137148432"></a>2-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/concepts/concept_box.html" title="Box Concept">Box</a></td></tr>
<tr><td><a class="link" href="../reference/concepts/concept_ring.html" title="Ring Concept">Ring</a></td></tr>
@@ -75,13 +75,13 @@
</colgroup>
<thead><tr><th colspan="3" valign="center">
<h3>
-<a name="id781125"></a>Geometry Models</h3>
+<a name="idp137157936"></a>Geometry Models</h3>
</th></tr></thead>
<tbody>
<tr>
<td valign="top">
<h4>
-<a name="id781142"></a>0-dimensional</h4>
+<a name="idp137160016"></a>0-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/models/model_point.html" title="model::point">point</a></td></tr>
<tr><td><a class="link" href="../reference/models/model_d2_point_xy.html" title="model::d2::point_xy">point_xy</a></td></tr>
@@ -90,7 +90,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781190"></a>1-dimensional</h4>
+<a name="idp137165168"></a>1-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/models/model_linestring.html" title="model::linestring">linestring</a></td></tr>
<tr><td><a class="link" href="../reference/models/model_multi_linestring.html" title="model::multi_linestring">multi_linestring</a></td></tr>
@@ -100,7 +100,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781248"></a>2-dimensional</h4>
+<a name="idp137171312"></a>2-dimensional</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/models/model_box.html" title="model::box">box</a></td></tr>
<tr><td><a class="link" href="../reference/models/model_ring.html" title="model::ring">ring</a></td></tr>
@@ -112,7 +112,7 @@
<tr>
<td valign="top">
<h4>
-<a name="id781308"></a>0-dimensional (adapted)</h4>
+<a name="idp137177744"></a>0-dimensional (adapted)</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/adapted/boost_array.html" title="Boost.Array">Boost.Array</a></td></tr>
<tr><td><a class="link" href="../reference/adapted/boost_fusion.html" title="Boost.Fusion">Boost.Fusion</a></td></tr>
@@ -123,11 +123,11 @@
</td>
<td valign="top">
<h4>
-<a name="id781376"></a>1-dimensional (adapted)</h4>
+<a name="idp137184848"></a>1-dimensional (adapted)</h4>
</td>
<td valign="top">
<h4>
-<a name="id781387"></a>2-dimensional (adapted)</h4>
+<a name="idp137186160"></a>2-dimensional (adapted)</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/adapted/boost_polygon/rectangle_data.html" title="Boost.Polygon's rectangle_data">Boost.Polygon's rectangle_data</a></td></tr>
<tr><td><a class="link" href="../reference/adapted/boost_polygon/polygon_data.html" title="Boost.Polygon's polygon_data">Boost.Polygon's polygon_data</a></td></tr>
@@ -138,7 +138,7 @@
<tr>
<td valign="top">
<h4>
-<a name="id781443"></a>0-dimensional (macro's for adaption)</h4>
+<a name="idp137191760"></a>0-dimensional (macro's for adaption)</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/adapted/register/boost_geometry_register_point_2d.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D">BOOST_GEOMETRY_REGISTER_POINT_2D</a></td></tr>
<tr><td><a class="link" href="../reference/adapted/register/boost_geometry_register_point_2d_const.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D_CONST">BOOST_GEOMETRY_REGISTER_POINT_2D_CONST</a></td></tr>
@@ -152,7 +152,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781553"></a>1-dimensionial (macro's for adaption)</h4>
+<a name="idp137202560"></a>1-dimensionial (macro's for adaption)</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/adapted/register/boost_geometry_register_linestring.html" title="BOOST_GEOMETRY_REGISTER_LINESTRING">BOOST_GEOMETRY_REGISTER_LINESTRING</a></td></tr>
<tr><td><a class="link" href="../reference/adapted/register/boost_geometry_register_linestring_templated.html" title="BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED">BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED</a></td></tr>
@@ -162,7 +162,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781618"></a>2-dimensional (macro's for adaption)</h4>
+<a name="idp137209088"></a>2-dimensional (macro's for adaption)</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/adapted/register/boost_geometry_register_box.html" title="BOOST_GEOMETRY_REGISTER_BOX">BOOST_GEOMETRY_REGISTER_BOX</a></td></tr>
<tr><td><a class="link" href="../reference/adapted/register/boost_geometry_register_box_2d_4values.html" title="BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES">BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES</a></td></tr>
@@ -183,12 +183,12 @@
</colgroup>
<thead><tr><th colspan="2" valign="center">
<h3>
-<a name="id781739"></a>Core</h3>
+<a name="idp137221664"></a>Core</h3>
</th></tr></thead>
<tbody><tr>
<td valign="top">
<h4>
-<a name="id781756"></a>Metafunctions</h4>
+<a name="idp137223744"></a>Metafunctions</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/core/cs_tag.html" title="cs_tag">cs_tag</a></td></tr>
<tr><td><a class="link" href="../reference/core/closure.html" title="closure">closure</a></td></tr>
@@ -206,7 +206,7 @@
</td>
<td valign="top">
<h4>
-<a name="id781890"></a>Access Functions</h4>
+<a name="idp137237584"></a>Access Functions</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/access/get.html" title="get">get</a></td></tr>
<tr><td><a class="link" href="../reference/access/set.html" title="set">set</a></td></tr>
@@ -214,7 +214,7 @@
<tr><td><a class="link" href="../reference/access/interior_rings.html" title="interior_rings">interior_rings</a></td></tr>
</table>
<h4>
-<a name="id781942"></a>Classes</h4>
+<a name="idp137242928"></a>Classes</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/exceptions/exception.html" title="exception">exception</a></td></tr>
<tr><td> <a class="link" href="../reference/exceptions/centroid_exception.html" title="centroid_exception">centroid_exception</a>
@@ -227,21 +227,22 @@
<colgroup>
<col class="a">
<col class="b">
+<col class="c">
</colgroup>
<thead><tr>
<th colspan="2" valign="center">
<h3>
-<a name="id782008"></a>Constants</h3>
+<a name="idp137250608"></a>Constants</h3>
</th>
-<th colspan="2" valign="center">
+<th valign="center">
<h3>
-<a name="id782023"></a>Coordinate Systems</h3>
+<a name="idp137252432"></a>Coordinate Systems</h3>
</th>
</tr></thead>
<tbody><tr>
<td valign="top">
<h4>
-<a name="id782040"></a>Numeric</h4>
+<a name="idp137254512"></a>Numeric</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/constants/max_corner.html" title="max_corner">max_corner</a></td></tr>
<tr><td><a class="link" href="../reference/constants/min_corner.html" title="min_corner">min_corner</a></td></tr>
@@ -251,7 +252,7 @@
</td>
<td valign="top">
<h4>
-<a name="id782099"></a>Types</h4>
+<a name="idp137260624"></a>Types</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/core/degree.html" title="degree">degree</a></td></tr>
<tr><td><a class="link" href="../reference/core/radian.html" title="radian">radian</a></td></tr>
@@ -259,7 +260,7 @@
</td>
<td valign="top">
<h4>
-<a name="id782135"></a>Classes</h4>
+<a name="idp137264800"></a>Classes</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/cs/cs_cartesian.html" title="cs::cartesian">cs::cartesian</a></td></tr>
<tr><td><a class="link" href="../reference/cs/cs_spherical.html" title="cs::spherical">cs::spherical</a></td></tr>
@@ -277,11 +278,11 @@
<thead><tr>
<th valign="center">
<h3>
-<a name="id782216"></a>Iterators</h3>
+<a name="idp137273792"></a>Iterators</h3>
</th>
<th valign="center">
<h3>
-<a name="id782230"></a>Views</h3>
+<a name="idp137275616"></a>Views</h3>
</th>
</tr></thead>
<tbody><tr>
@@ -310,25 +311,28 @@
</colgroup>
<thead><tr><th colspan="3" valign="center">
<h3>
-<a name="id782369"></a>Algorithms</h3>
+<a name="idp137290944"></a>Algorithms</h3>
</th></tr></thead>
<tbody>
<tr>
<td valign="top">
<h4>
-<a name="id782386"></a>Geometry Constructors</h4>
+<a name="idp137293024"></a>Geometry Constructors</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/algorithms/make.html" title="make">make</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/make/make_inverse.html" title="make_inverse">make_inverse</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/make/make_zero.html" title="make_zero">make_zero</a></td></tr>
</table>
<h4>
-<a name="id782428"></a>Predicates</h4>
+<a name="idp137297504"></a>Predicates</h4>
<table border="0" summary="Simple list" class="simplelist">
+<tr><td><a class="link" href="../reference/algorithms/crosses.html" title="crosses">crosses</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/covered_by.html" title="covered_by">covered_by</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/disjoint.html" title="disjoint">disjoint</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/equals.html" title="equals">equals</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/intersects.html" title="intersects">intersects</a></td></tr>
+<tr><td><a class="link" href="../reference/algorithms/is_simple.html" title="is_simple">is_simple</a></td></tr>
+<tr><td><a class="link" href="../reference/algorithms/is_valid.html" title="is_valid">is_valid</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/overlaps.html" title="overlaps">overlaps</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/touches.html" title="touches">touches</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/within.html" title="within">within</a></td></tr>
@@ -336,13 +340,13 @@
</td>
<td valign="top">
<h4>
-<a name="id782515"></a>Append</h4>
+<a name="idp137309424"></a>Append</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/append.html" title="append">append</a></td></tr></table>
<h4>
-<a name="id782538"></a>Area</h4>
+<a name="idp137311968"></a>Area</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/area.html" title="area">area</a></td></tr></table>
<h4>
-<a name="id782561"></a>Assign</h4>
+<a name="idp137314512"></a>Assign</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/algorithms/assign/assign.html" title="assign">assign</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/assign/assign_inverse.html" title="assign_inverse">assign_inverse</a></td></tr>
@@ -355,56 +359,59 @@
coordinate values)
</td></tr>
</table>
+ <h4>
+<a name="idp137323232"></a>Buffer</h4>
+ <table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/buffer.html" title="buffer">buffer</a></td></tr></table>
</td>
<td valign="top">
<h4>
-<a name="id782652"></a>Centroid</h4>
+<a name="idp137326448"></a>Centroid</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/centroid.html" title="centroid">centroid</a></td></tr></table>
<h4>
-<a name="id782674"></a>Clear</h4>
+<a name="idp137328992"></a>Clear</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/clear.html" title="clear">clear</a></td></tr></table>
<h4>
-<a name="id782697"></a>Convert</h4>
+<a name="idp137331312"></a>Convert</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/convert.html" title="convert">convert</a></td></tr></table>
<h4>
-<a name="id782720"></a>Convex Hull</h4>
+<a name="idp137333856"></a>Convex Hull</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/convex_hull.html" title="convex_hull">convex_hull</a></td></tr></table>
<h4>
-<a name="id782742"></a>Correct</h4>
+<a name="idp137336448"></a>Correct</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/correct.html" title="correct">correct</a></td></tr></table>
</td>
</tr>
<tr>
<td valign="top">
<h4>
-<a name="id782772"></a>Distance</h4>
+<a name="idp137340048"></a>Distance</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/distance.html" title="distance">distance</a></td></tr></table>
<h4>
-<a name="id782796"></a>Difference</h4>
+<a name="idp137342592"></a>Difference</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/algorithms/difference.html" title="difference">difference</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/sym_difference.html" title="sym_difference">sym_difference</a></td></tr>
</table>
<h4>
-<a name="id782828"></a>Envelope</h4>
+<a name="idp137346112"></a>Envelope</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/envelope.html" title="envelope">envelope</a></td></tr></table>
<h4>
-<a name="id782850"></a>Expand</h4>
+<a name="idp137348704"></a>Expand</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/expand.html" title="expand">expand</a></td></tr></table>
<h4>
-<a name="id782873"></a>For Each</h4>
+<a name="idp137351248"></a>For Each</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/for_each.html" title="for_each">for each (point, segment)</a></td></tr></table>
<h4>
-<a name="id782896"></a>Intersection</h4>
+<a name="idp137353760"></a>Intersection</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/intersection.html" title="intersection">intersection</a></td></tr></table>
</td>
<td valign="top">
<h4>
-<a name="id782922"></a>Length</h4>
+<a name="idp137356960"></a>Length</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/length.html" title="length">length</a></td></tr></table>
<h4>
-<a name="id782947"></a>Num_ (counting)</h4>
+<a name="idp137359552"></a>Num_ (counting)</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/algorithms/num_interior_rings.html" title="num_interior_rings">num_interior_rings</a></td></tr>
<tr><td><a class="link" href="../reference/algorithms/num_geometries.html" title="num_geometries">num_geometries</a></td></tr>
@@ -413,24 +420,24 @@
<h4>
-<a name="id782992"></a>Perimeter</h4>
+<a name="idp137364160"></a>Perimeter</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/perimeter.html" title="perimeter">perimeter</a></td></tr></table>
<h4>
-<a name="id783015"></a>Reverse</h4>
+<a name="idp137366752"></a>Reverse</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/reverse.html" title="reverse">reverse</a></td></tr></table>
</td>
<td valign="top">
<h4>
-<a name="id783042"></a>Simplify</h4>
+<a name="idp137369920"></a>Simplify</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/simplify.html" title="simplify">simplify</a></td></tr></table>
<h4>
-<a name="id783065"></a>Transform</h4>
+<a name="idp137372464"></a>Transform</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/transform.html" title="transform">transform</a></td></tr></table>
<h4>
-<a name="id783088"></a>Union</h4>
+<a name="idp137375008"></a>Union</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/union_.html" title="union_">union</a></td></tr></table>
<h4>
-<a name="id783110"></a>Unique</h4>
+<a name="idp137377552"></a>Unique</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/algorithms/unique.html" title="unique">unique</a></td></tr></table>
</td>
</tr>
@@ -444,13 +451,13 @@
</colgroup>
<thead><tr><th colspan="3" valign="center">
<h3>
-<a name="id783166"></a>Strategies</h3>
+<a name="idp137384160"></a>Strategies</h3>
</th></tr></thead>
<tbody>
<tr>
<td valign="top">
<h4>
-<a name="id783183"></a>Area</h4>
+<a name="idp137386240"></a>Area</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_area_surveyor.html" title="strategy::area::surveyor">strategy::area::surveyor</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_area_huiller.html" title="strategy::area::huiller">strategy::area::huiller</a></td></tr>
@@ -458,53 +465,65 @@
</td>
<td valign="top">
<h4>
-<a name="id783223"></a>Centroid</h4>
+<a name="idp137390448"></a>Buffer</h4>
+ <table border="0" summary="Simple list" class="simplelist">
+<tr><td><a class="link" href="../reference/strategies/strategy_buffer_distance_asymmetric.html" title="strategy::buffer::distance_asymmetric">strategy::buffer::distance_asymmetric</a></td></tr>
+<tr><td><a class="link" href="../reference/strategies/strategy_buffer_distance_symmetric.html" title="strategy::buffer::distance_symmetric">strategy::buffer::distance_symmetric</a></td></tr>
+<tr><td><a class="link" href="../reference/strategies/strategy_buffer_end_flat.html" title="strategy::buffer::end_flat">strategy::buffer::end_flat</a></td></tr>
+<tr><td><a class="link" href="../reference/strategies/strategy_buffer_end_round.html" title="strategy::buffer::end_round">strategy::buffer::end_round</a></td></tr>
+<tr><td><a class="link" href="../reference/strategies/strategy_buffer_join_miter.html" title="strategy::buffer::join_miter">strategy::buffer::join_miter</a></td></tr>
+<tr><td><a class="link" href="../reference/strategies/strategy_buffer_join_round.html" title="strategy::buffer::join_round">strategy::buffer::join_round</a></td></tr>
+<tr><td><a class="link" href="../reference/strategies/strategy_buffer_point_circle.html" title="strategy::buffer::point_circle">strategy::buffer::point_circle</a></td></tr>
+<tr><td><a class="link" href="../reference/strategies/strategy_buffer_point_square.html" title="strategy::buffer::point_square">strategy::buffer::point_square</a></td></tr>
+<tr><td><a class="link" href="../reference/strategies/strategy_buffer_side_straight.html" title="strategy::buffer::side_straight">strategy::buffer::side_straight</a></td></tr>
+</table>
+ </td>
+<td valign="top">
+ <h4>
+<a name="idp137402032"></a>Centroid</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_centroid_bashein_detmer.html" title="strategy::centroid::bashein_detmer">strategy::centroid::bashein_detmer</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_centroid_average.html" title="strategy::centroid::average">strategy::centroid::centroid_average</a></td></tr>
</table>
</td>
-<td class="auto-generated">&#160;</td>
</tr>
<tr>
<td valign="top">
<h4>
-<a name="id783266"></a>Distance</h4>
+<a name="idp137406672"></a>Convex Hull</h4>
+ <table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/strategies/strategy_convex_hull_graham_andrew.html" title="strategy::convex_hull::graham_andrew">strategy::convex_hull::graham_andrew</a></td></tr></table>
+ </td>
+<td valign="top">
+ <h4>
+<a name="idp137409920"></a>Distance</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_distance_projected_point.html" title="strategy::distance::projected_point">strategy::distance::projected_point</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_distance_pythagoras.html" title="strategy::distance::pythagoras">strategy::distance::pythagoras</a></td></tr>
+<tr><td><a class="link" href="../reference/strategies/strategy_distance_pythagoras_box_box.html" title="strategy::distance::pythagoras_box_box">strategy::distance::pythagoras_box_box</a></td></tr>
+<tr><td><a class="link" href="../reference/strategies/strategy_distance_pythagoras_point_box.html" title="strategy::distance::pythagoras_point_box">strategy::distance::pythagoras_point_box</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_distance_cross_track.html" title="strategy::distance::cross_track">strategy::distance::cross_track</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_distance_haversine.html" title="strategy::distance::haversine">strategy::distance::haversine</a></td></tr>
</table>
</td>
<td valign="top">
<h4>
-<a name="id783329"></a>Convex Hull</h4>
- <table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/strategies/strategy_convex_hull_graham_andrew.html" title="strategy::convex_hull::graham_andrew">strategy::convex_hull::graham_andrew</a></td></tr></table>
- </td>
-<td class="auto-generated">&#160;</td>
-</tr>
-<tr>
-<td valign="top">
- <h4>
-<a name="id783363"></a>Side</h4>
+<a name="idp137418320"></a>Side</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_side_side_by_triangle.html" title="strategy::side::side_by_triangle">strategy::side::side_by_triangle</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_side_side_by_cross_track.html" title="strategy::side::side_by_cross_track">strategy::side::side_by_cross_track</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_side_spherical_side_formula.html" title="strategy::side::spherical_side_formula">strategy::side::spherical_side_formula</a></td></tr>
</table>
</td>
+</tr>
+<tr>
<td valign="top">
<h4>
-<a name="id783416"></a>Simplify</h4>
+<a name="idp137424032"></a>Simplify</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/strategies/strategy_simplify_douglas_peucker.html" title="strategy::simplify::douglas_peucker">strategy::simplify::douglas_peucker</a></td></tr></table>
</td>
-<td class="auto-generated">&#160;</td>
-</tr>
-<tr>
<td valign="top">
<h4>
-<a name="id783447"></a>Transform</h4>
+<a name="idp137427280"></a>Transform</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_transform_inverse_transformer.html" title="strategy::transform::inverse_transformer">strategy::transform::inverse_transformer</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_transform_map_transformer.html" title="strategy::transform::map_transformer">strategy::transform::map_transformer</a></td></tr>
@@ -516,14 +535,13 @@
</td>
<td valign="top">
<h4>
-<a name="id783534"></a>Within</h4>
+<a name="idp137435760"></a>Within</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/strategies/strategy_within_winding.html" title="strategy::within::winding">strategy::winding</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_within_crossings_multiply.html" title="strategy::within::crossings_multiply">strategy::crossings_multiply</a></td></tr>
<tr><td><a class="link" href="../reference/strategies/strategy_within_franklin.html" title="strategy::within::franklin">strategy::franklin</a></td></tr>
</table>
</td>
-<td class="auto-generated">&#160;</td>
</tr>
</tbody>
</table>
@@ -536,13 +554,13 @@
</colgroup>
<thead><tr><th colspan="4" valign="center">
<h3>
-<a name="id783616"></a>Arithmetic</h3>
+<a name="idp137444992"></a>Arithmetic</h3>
</th></tr></thead>
<tbody>
<tr>
<td valign="top">
<h4>
-<a name="id783633"></a>Add</h4>
+<a name="idp137447072"></a>Add</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/arithmetic/add_point.html" title="add_point">add_point</a></td></tr>
<tr><td><a class="link" href="../reference/arithmetic/add_value.html" title="add_value">add_value</a></td></tr>
@@ -550,7 +568,7 @@
</td>
<td valign="top">
<h4>
-<a name="id783671"></a>Subtract</h4>
+<a name="idp137451216"></a>Subtract</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/arithmetic/subtract_point.html" title="subtract_point">subtract_point</a></td></tr>
<tr><td><a class="link" href="../reference/arithmetic/subtract_value.html" title="subtract_value">subtract_value</a></td></tr>
@@ -558,7 +576,7 @@
</td>
<td valign="top">
<h4>
-<a name="id783709"></a>Multiply</h4>
+<a name="idp137455360"></a>Multiply</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/arithmetic/multiply_point.html" title="multiply_point">multiply_point</a></td></tr>
<tr><td><a class="link" href="../reference/arithmetic/multiply_value.html" title="multiply_value">multiply_value</a></td></tr>
@@ -566,7 +584,7 @@
</td>
<td valign="top">
<h4>
-<a name="id783748"></a>Divide</h4>
+<a name="idp137459552"></a>Divide</h4>
<table border="0" summary="Simple list" class="simplelist">
<tr><td><a class="link" href="../reference/arithmetic/divide_point.html" title="divide_point">divide_point</a></td></tr>
<tr><td><a class="link" href="../reference/arithmetic/divide_value.html" title="divide_value">divide_value</a></td></tr>
@@ -575,17 +593,167 @@
</tr>
<tr><td colspan="4" valign="center">
<h4>
-<a name="id783792"></a>Products</h4>
+<a name="idp137464640"></a>Products</h4>
<table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/arithmetic/dot_product.html" title="dot_product">dot_product</a></td></tr></table>
</td></tr>
</tbody>
</table>
+<table class="table">
+<colgroup>
+<col class="a">
+<col class="b">
+</colgroup>
+<thead><tr><th colspan="2" valign="center">
+ <h3>
+<a name="idp137470656"></a>IO</h3>
+ </th></tr></thead>
+<tbody><tr>
+<td valign="top">
+ <h4>
+<a name="idp137472752"></a>WKT (Well-Known Text)</h4>
+ <table border="0" summary="Simple list" class="simplelist">
+<tr><td><a class="link" href="../reference/io/wkt/read_wkt.html" title="read_wkt">read_wkt</a></td></tr>
+<tr><td><a class="link" href="../reference/io/wkt/wkt.html" title="wkt">wkt</a></td></tr>
+</table>
+ </td>
+<td valign="top">
+ <h4>
+<a name="idp137476896"></a>SVG (Scalable Vector Graphics)</h4>
+ <table border="0" summary="Simple list" class="simplelist">
+<tr><td><a class="link" href="../reference/io/svg/svg.html" title="svg">svg</a></td></tr>
+<tr><td><a class="link" href="../reference/io/svg/svg_mapper.html" title="svg_mapper">svg_mapper</a></td></tr>
+</table>
+ </td>
+</tr></tbody>
+</table>
+<table class="table">
+<colgroup>
+<col class="a">
+<col class="b">
+<col class="c">
+</colgroup>
+<thead><tr><th colspan="3" valign="center">
+ <h3>
+<a name="idp137484400"></a>Spatial indexes</h3>
+ </th></tr></thead>
+<tbody>
+<tr>
+<td valign="top">
+ <h4>
+<a name="idp137486480"></a>R-tree</h4>
+ <table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">boost::geometry::index::rtree</a></td></tr></table>
+ <h4>
+<a name="idp137489232"></a>R-tree parameters</h4>
+ <table border="0" summary="Simple list" class="simplelist">
+<tr><td><a class="link" href="../reference/spatial_indexes/parameters/boost__geometry__index__linear.html" title="boost::geometry::index::linear">boost::geometry::index::linear</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/parameters/boost__geometry__index__quadratic.html" title="boost::geometry::index::quadratic">boost::geometry::index::quadratic</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/parameters/boost__geometry__index__rstar.html" title="boost::geometry::index::rstar">boost::geometry::index::rstar</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_linear.html" title="boost::geometry::index::dynamic_linear">boost::geometry::index::dynamic_linear</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_quadratic.html" title="boost::geometry::index::dynamic_quadratic">boost::geometry::index::dynamic_quadratic</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/parameters/boost__geometry__index__dynamic_rstar.html" title="boost::geometry::index::dynamic_rstar">boost::geometry::index::dynamic_rstar</a></td></tr>
+</table>
+ <h4>
+<a name="idp137497344"></a>R-tree constructors and destructor</h4>
+ <table border="0" summary="Simple list" class="simplelist">
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree__.html" title="rtree()">rtree()</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html" title="rtree(parameters_type const &amp;, indexable_getter const &amp;, value_equal const &amp;, allocator_type const &amp;)">rtree(parameters_type const &amp;, indexable_getter const &amp;, value_equal const &amp;, allocator_type const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_iterator__iterator_.html" title="rtree(Iterator, Iterator)">rtree(Iterator, Iterator)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_range_const___.html" title="rtree(Range const &amp;)">rtree(Range const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const___.html" title="rtree(rtree const &amp;)">rtree(rtree const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const____allocator_type_const___.html" title="rtree(rtree const &amp;, allocator_type const &amp;)">rtree(rtree const &amp;, allocator_type const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree____.html" title="rtree(rtree &amp;&amp;)">rtree(rtree &amp;&amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_____allocator_type_const___.html" title="rtree(rtree &amp;&amp;, allocator_type const &amp;)">rtree(rtree &amp;&amp;, allocator_type const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/_rtree__.html" title="~rtree()">~rtree()</a></td></tr>
+</table>
+ </td>
+<td valign="top">
+ <h4>
+<a name="idp137509840"></a>R-tree member functions</h4>
+ <table border="0" summary="Simple list" class="simplelist">
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree_const___.html" title="operator=(rtree const &amp;)">operator=(const rtree &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree____.html" title="operator=(rtree &amp;&amp;)">operator=(rtree &amp;&amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/swap_rtree___.html" title="swap(rtree &amp;)">swap(rtree &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/insert_value_type_const___.html" title="insert(value_type const &amp;)">insert(value_type const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/insert_iterator__iterator_.html" title="insert(Iterator, Iterator)">insert(Iterator, Iterator)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/insert_convertibleorrange_const___.html" title="insert(ConvertibleOrRange const &amp;)">insert(ConvertibleOrRange const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/remove_value_type_const___.html" title="remove(value_type const &amp;)">remove(value_type const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/remove_iterator__iterator_.html" title="remove(Iterator, Iterator)">remove(Iterator, Iterator)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/remove_convertibleorrange_const___.html" title="remove(ConvertibleOrRange const &amp;)">remove(ConvertibleOrRange const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/query_predicates_const____outiter_.html" title="query(Predicates const &amp;, OutIter)">query(Predicates const &amp;, OutIter)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/qbegin_predicates_const___.html" title="qbegin(Predicates const &amp;)">qbegin(Predicates const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/qend__.html" title="qend()">qend()</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/size__.html" title="size()">size()</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/empty__.html" title="empty()">empty()</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/clear__.html" title="clear()">clear()</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/bounds__.html" title="bounds()">bounds()</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/count_valueorindexable_const___.html" title="count(ValueOrIndexable const &amp;)">count(ValueOrIndexable const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/parameters__.html" title="parameters()">parameters()</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/indexable_get__.html" title="indexable_get()">indexable_get()</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/value_eq__.html" title="value_eq()">value_eq()</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/boost__geometry__index__rtree/get_allocator__.html" title="get_allocator()">get_allocator()</a></td></tr>
+</table>
+ </td>
+<td valign="top">
+ <h4>
+<a name="idp137534896"></a>R-tree free functions (boost::geometry::index::)</h4>
+ <table border="0" summary="Simple list" class="simplelist">
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/insert_rtree_________value_const___.html" title="insert(rtree&lt;...&gt; &amp;, Value const &amp;)">insert(rtree&lt;...&gt; &amp;, Value const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/insert_rtree_________iterator__iterator_.html" title="insert(rtree&lt;...&gt; &amp;, Iterator, Iterator)">insert(rtree&lt;...&gt; &amp;, Iterator, Iterator)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/insert_rtree_________convertibleorrange_const___.html" title="insert(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)">insert(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/remove_rtree_________value_const___.html" title="remove(rtree&lt;...&gt; &amp;, Value const &amp;)">remove(rtree&lt;...&gt; &amp;, Value const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/remove_rtree_________iterator__iterator_.html" title="remove(rtree&lt;...&gt; &amp;, Iterator, Iterator)">remove(rtree&lt;...&gt; &amp;, Iterator, Iterator)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/remove_rtree_________convertibleorrange_const___.html" title="remove(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)">remove(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/query_rtree______const____predicates_const____outiter_.html" title="query(rtree&lt;...&gt; const &amp;, Predicates const &amp;, OutIter)">query(rtree&lt;...&gt; const &amp;, Predicates const &amp;, OutIter)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/qbegin_rtree______const____predicates_const___.html" title="qbegin(rtree&lt;...&gt; const &amp;, Predicates const &amp;)">qbegin(rtree&lt;...&gt; const &amp;, Predicates const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/qend_rtree______const___.html" title="qend(rtree&lt;...&gt; const &amp;)">qend(rtree&lt;...&gt; const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/clear_rtree________.html" title="clear(rtree&lt;...&gt; &amp;)">clear(rtree&lt;...&gt; &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/size_rtree______const___.html" title="size(rtree&lt;...&gt; const &amp;)">size(rtree&lt;...&gt; const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/empty_rtree______const___.html" title="empty(rtree&lt;...&gt; const &amp;)">empty(rtree&lt;...&gt; const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/bounds_rtree______const___.html" title="bounds(rtree&lt;...&gt; const &amp;)">bounds(rtree&lt;...&gt; const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__rtree__functions/swap_rtree_________rtree________.html" title="swap(rtree&lt;...&gt; &amp;, rtree&lt;...&gt; &amp;)">swap(rtree&lt;...&gt; &amp;, rtree&lt;...&gt; &amp;)</a></td></tr>
+</table>
+ </td>
+</tr>
+<tr>
+<td valign="top">
+ <h4>
+<a name="idp137553520"></a>Observers (boost::geometry::index::)</h4>
+ <table border="0" summary="Simple list" class="simplelist">
+<tr><td><a class="link" href="../reference/spatial_indexes/observers/boost__geometry__index__indexable.html" title="boost::geometry::index::indexable">boost::geometry::index::indexable</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/observers/boost__geometry__index__equal_to.html" title="boost::geometry::index::equal_to">boost::geometry::index::equal_to</a></td></tr>
+</table>
+ <h4>
+<a name="idp137557264"></a>Inserters (boost::geometry::index::)</h4>
+ <table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/spatial_indexes/group__inserters/inserter_container___.html" title="inserter(Container &amp;)">inserter(Container &amp;)</a></td></tr></table>
+ <h4>
+<a name="idp137559952"></a>Adaptors (boost::geometry::index::adaptors::)</h4>
+ <table border="0" summary="Simple list" class="simplelist"><tr><td><a class="link" href="../reference/spatial_indexes/group__adaptors/queried_predicates_const___.html" title="queried(Predicates const &amp;)">queried(Predicates const &amp;)</a></td></tr></table>
+ </td>
+<td valign="top">
+ <h4>
+<a name="idp137563280"></a>Predicates (boost::geometry::index::)</h4>
+ <table border="0" summary="Simple list" class="simplelist">
+<tr><td><a class="link" href="../reference/spatial_indexes/group__predicates/contains_geometry_const___.html" title="contains(Geometry const &amp;)">contains(Geometry const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__predicates/covered_by_geometry_const___.html" title="covered_by(Geometry const &amp;)">covered_by(Geometry const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__predicates/covers_geometry_const___.html" title="covers(Geometry const &amp;)">covers(Geometry const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__predicates/disjoint_geometry_const___.html" title="disjoint(Geometry const &amp;)">disjoint(Geometry const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__predicates/intersects_geometry_const___.html" title="intersects(Geometry const &amp;)">intersects(Geometry const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__predicates/overlaps_geometry_const___.html" title="overlaps(Geometry const &amp;)">overlaps(Geometry const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__predicates/within_geometry_const___.html" title="within(Geometry const &amp;)">within(Geometry const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__predicates/satisfies_unarypredicate_const___.html" title="satisfies(UnaryPredicate const &amp;)">satisfies(UnaryPredicate const &amp;)</a></td></tr>
+<tr><td><a class="link" href="../reference/spatial_indexes/group__predicates/nearest_geometry_const____unsigned_.html" title="nearest(Geometry const &amp;, unsigned)">nearest(Geometry const &amp;, unsigned)</a></td></tr>
+</table>
+ </td>
+<td class="auto-generated">&#160;</td>
+</tr>
+</tbody>
+</table>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/introduction.html b/libs/geometry/doc/html/geometry/introduction.html
index 45069ca488..ce1167b1e8 100644
--- a/libs/geometry/doc/html/geometry/introduction.html
+++ b/libs/geometry/doc/html/geometry/introduction.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Introduction</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="prev" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
-<link rel="next" href="quickstart.html" title="Quick Start">
+<link rel="next" href="compilation.html" title="Compilation">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="quickstart.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="compilation.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -53,7 +53,7 @@
<p>
The library follows existing conventions:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
conventions from boost
</li>
@@ -72,17 +72,17 @@
</p>
<p>
Latest stable version of the source code is included in the <a href="http://www.boost.org/users/download/" target="_top">Boost
- packaged releases</a>. It can also be downloaded from the current <a href="http://svn.boost.org/svn/boost/branches/release" target="_top">Boost release branch</a>
- in the Boost Subversion repository.
+ packaged releases</a>. It can also be downloaded from the <a href="http://github.com/boostorg/boost" target="_top">Boost
+ GitHub repository</a> (master branch).
</p>
<p>
- The library development upstream is available from the <a href="http://svn.boost.org/svn/boost/trunk" target="_top">Boost
- trunk</a> in the Boost Subversion repository.
+ The library development upstream is available from the <a href="https://github.com/boostorg/geometry/tree/develop" target="_top">Boost.Geometry
+ (develop branch)</a>.
</p>
<p>
Note that the library <span class="bold"><strong>extensions</strong></span> are not distributed
- in the official Boost releases, but only available in the <a href="http://svn.boost.org/svn/boost/trunk/boost/geometry/extensions/" target="_top">Boost
- trunk</a> and that they are subject to change.
+ in the official Boost releases, but only available in the <a href="https://github.com/boostorg/geometry/tree/develop" target="_top">Boost.Geometry
+ (develop branch)</a> and that they are subject to change.
</p>
<p>
Boost.Geometry was accepted by Boost at November 28, 2009 (<a href="http://permalink.gmane.org/gmane.comp.lib.boost.announce/246" target="_top">review
@@ -91,14 +91,15 @@
<p>
There is a Boost.Geometry <a href="http://lists.boost.org/mailman/listinfo.cgi/geometry" target="_top">mailing
list</a>. The mailing list and its messages are also accessible from <a href="http://boost-geometry.203548.n3.nabble.com/" target="_top">Nabble</a> as Boost Geometry.
- Also on the Boost Developers list and on the Boost Users list Boost.Geometry
- is discussed.
+ Also on the <a href="http://lists.boost.org/mailman/listinfo.cgi/boost" target="_top">Boost
+ Developers list</a> and on the <a href="http://lists.boost.org/mailman/listinfo.cgi/boost-users" target="_top">Boost
+ Users list</a> Boost.Geometry is discussed.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -106,7 +107,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="quickstart.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="compilation.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/quickstart.html b/libs/geometry/doc/html/geometry/quickstart.html
index 951e7c49d7..d2e3d3231d 100644
--- a/libs/geometry/doc/html/geometry/quickstart.html
+++ b/libs/geometry/doc/html/geometry/quickstart.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Quick Start</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
-<link rel="prev" href="introduction.html" title="Introduction">
-<link rel="next" href="design.html" title="Design Rationale">
+<link rel="prev" href="design.html" title="Design Rationale">
+<link rel="next" href="spatial_indexes.html" title="Spatial Indexes">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="introduction.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="design.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="design.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="spatial_indexes.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -48,7 +48,7 @@
</p>
<h4>
<a name="geometry.quickstart.h0"></a>
- <span><a name="geometry.quickstart.cartesian"></a></span><a class="link" href="quickstart.html#geometry.quickstart.cartesian">Cartesian</a>
+ <span class="phrase"><a name="geometry.quickstart.cartesian"></a></span><a class="link" href="quickstart.html#geometry.quickstart.cartesian">Cartesian</a>
</h4>
<p>
It is possible to use only a small part of the library. For example: the distance
@@ -145,7 +145,7 @@ Distance a-p is: 2.87924
</pre>
<h4>
<a name="geometry.quickstart.h1"></a>
- <span><a name="geometry.quickstart.non_cartesian"></a></span><a class="link" href="quickstart.html#geometry.quickstart.non_cartesian">Non-Cartesian</a>
+ <span class="phrase"><a name="geometry.quickstart.non_cartesian"></a></span><a class="link" href="quickstart.html#geometry.quickstart.non_cartesian">Non-Cartesian</a>
</h4>
<p>
It is also possible to use non-Cartesian points. For example: points on a sphere.
@@ -188,7 +188,7 @@ Distance a-p is: 2.87924
<pre class="programlisting">Distance in miles: 267.02</pre>
<h4>
<a name="geometry.quickstart.h2"></a>
- <span><a name="geometry.quickstart.adapted_structs"></a></span><a class="link" href="quickstart.html#geometry.quickstart.adapted_structs">Adapted
+ <span class="phrase"><a name="geometry.quickstart.adapted_structs"></a></span><a class="link" href="quickstart.html#geometry.quickstart.adapted_structs">Adapted
structs</a>
</h4>
<p>
@@ -210,7 +210,7 @@ Distance a-p is: 2.87924
</p>
<h4>
<a name="geometry.quickstart.h3"></a>
- <span><a name="geometry.quickstart.more"></a></span><a class="link" href="quickstart.html#geometry.quickstart.more">More</a>
+ <span class="phrase"><a name="geometry.quickstart.more"></a></span><a class="link" href="quickstart.html#geometry.quickstart.more">More</a>
</h4>
<p>
In the reference many more examples can be found.
@@ -218,8 +218,8 @@ Distance a-p is: 2.87924
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -227,7 +227,7 @@ Distance a-p is: 2.87924
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="introduction.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="design.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="design.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="spatial_indexes.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference.html b/libs/geometry/doc/html/geometry/reference.html
index 5aec4cfe81..2ee33c1a2c 100644
--- a/libs/geometry/doc/html/geometry/reference.html
+++ b/libs/geometry/doc/html/geometry/reference.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Reference</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
-<link rel="prev" href="indexes/alphabetical_index.html" title="Alphabetical Index">
+<link rel="prev" href="spatial_indexes/rtree_examples/index_stored_in_mapped_file_using_boost_interprocess.html" title="Index stored in mapped file using Boost.Interprocess">
<link rel="next" href="reference/access.html" title="Access Functions">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,13 +20,13 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="indexes/alphabetical_index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/access.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="spatial_indexes/rtree_examples/index_stored_in_mapped_file_using_boost_interprocess.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/access.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="geometry.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
</h2></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="reference/access.html">Access Functions</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="reference/access/get.html">get</a></span></dt>
@@ -56,6 +56,7 @@
<dt><span class="section"><a href="reference/algorithms/convex_hull.html">convex_hull</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/correct.html">correct</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/covered_by.html">covered_by</a></span></dt>
+<dt><span class="section"><a href="reference/algorithms/crosses.html">crosses</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/difference.html">difference</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/disjoint.html">disjoint</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/distance.html">distance</a></span></dt>
@@ -65,6 +66,8 @@
<dt><span class="section"><a href="reference/algorithms/for_each.html">for_each</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/intersection.html">intersection</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/intersects.html">intersects</a></span></dt>
+<dt><span class="section"><a href="reference/algorithms/is_simple.html">is_simple</a></span></dt>
+<dt><span class="section"><a href="reference/algorithms/is_valid.html">is_valid</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/length.html">length</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/make.html">make</a></span></dt>
<dt><span class="section"><a href="reference/algorithms/num_geometries.html">num_geometries</a></span></dt>
@@ -144,14 +147,22 @@
</dl></dd>
<dt><span class="section"><a href="reference/enumerations.html">Enumerations</a></span></dt>
<dd><dl>
+<dt><span class="section"><a href="reference/enumerations/buffer_side_selector.html">buffer_side_selector</a></span></dt>
<dt><span class="section"><a href="reference/enumerations/closure_selector.html">closure_selector</a></span></dt>
+<dt><span class="section"><a href="reference/enumerations/join_selector.html">join_selector</a></span></dt>
<dt><span class="section"><a href="reference/enumerations/order_selector.html">order_selector</a></span></dt>
+<dt><span class="section"><a href="reference/enumerations/piece_type.html">piece_type</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="reference/exceptions.html">Exceptions</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="reference/exceptions/exception.html">exception</a></span></dt>
<dt><span class="section"><a href="reference/exceptions/centroid_exception.html">centroid_exception</a></span></dt>
</dl></dd>
+<dt><span class="section"><a href="reference/io.html">IO (input/output)</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/io/wkt.html">WKT (Well-Known Text)</a></span></dt>
+<dt><span class="section"><a href="reference/io/svg.html">SVG (Scalable Vector Graphics)</a></span></dt>
+</dl></dd>
<dt><span class="section"><a href="reference/iterators.html">Iterators</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="reference/iterators/closing_iterator.html">closing_iterator</a></span></dt>
@@ -171,14 +182,41 @@
<dt><span class="section"><a href="reference/models/model_segment.html">model::segment</a></span></dt>
<dt><span class="section"><a href="reference/models/model_referring_segment.html">model::referring_segment</a></span></dt>
</dl></dd>
+<dt><span class="section"><a href="reference/spatial_indexes.html">Spatial Indexes</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="reference/spatial_indexes/boost__geometry__index__rtree.html">boost::geometry::index::rtree</a></span></dt>
+<dt><span class="section"><a href="reference/spatial_indexes/group__rtree__functions.html">R-tree
+ free functions (boost::geometry::index::)</a></span></dt>
+<dt><span class="section"><a href="reference/spatial_indexes/parameters.html">R-tree
+ parameters (boost::geometry::index::)</a></span></dt>
+<dt><span class="section"><a href="reference/spatial_indexes/observers.html">Observers
+ (boost::geometry::index::)</a></span></dt>
+<dt><span class="section"><a href="reference/spatial_indexes/group__inserters.html">Inserters
+ (boost::geometry::index::)</a></span></dt>
+<dt><span class="section"><a href="reference/spatial_indexes/group__adaptors.html">Adaptors
+ (boost::geometry::index::adaptors::)</a></span></dt>
+<dt><span class="section"><a href="reference/spatial_indexes/group__predicates.html">Predicates
+ (boost::geometry::index::)</a></span></dt>
+</dl></dd>
<dt><span class="section"><a href="reference/strategies.html">Strategies</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="reference/strategies/strategy_distance_pythagoras.html">strategy::distance::pythagoras</a></span></dt>
+<dt><span class="section"><a href="reference/strategies/strategy_distance_pythagoras_box_box.html">strategy::distance::pythagoras_box_box</a></span></dt>
+<dt><span class="section"><a href="reference/strategies/strategy_distance_pythagoras_point_box.html">strategy::distance::pythagoras_point_box</a></span></dt>
<dt><span class="section"><a href="reference/strategies/strategy_distance_haversine.html">strategy::distance::haversine</a></span></dt>
<dt><span class="section"><a href="reference/strategies/strategy_distance_projected_point.html">strategy::distance::projected_point</a></span></dt>
<dt><span class="section"><a href="reference/strategies/strategy_distance_cross_track.html">strategy::distance::cross_track</a></span></dt>
<dt><span class="section"><a href="reference/strategies/strategy_area_surveyor.html">strategy::area::surveyor</a></span></dt>
<dt><span class="section"><a href="reference/strategies/strategy_area_huiller.html">strategy::area::huiller</a></span></dt>
+<dt><span class="section"><a href="reference/strategies/strategy_buffer_join_round.html">strategy::buffer::join_round</a></span></dt>
+<dt><span class="section"><a href="reference/strategies/strategy_buffer_join_miter.html">strategy::buffer::join_miter</a></span></dt>
+<dt><span class="section"><a href="reference/strategies/strategy_buffer_end_round.html">strategy::buffer::end_round</a></span></dt>
+<dt><span class="section"><a href="reference/strategies/strategy_buffer_end_flat.html">strategy::buffer::end_flat</a></span></dt>
+<dt><span class="section"><a href="reference/strategies/strategy_buffer_distance_symmetric.html">strategy::buffer::distance_symmetric</a></span></dt>
+<dt><span class="section"><a href="reference/strategies/strategy_buffer_distance_asymmetric.html">strategy::buffer::distance_asymmetric</a></span></dt>
+<dt><span class="section"><a href="reference/strategies/strategy_buffer_point_circle.html">strategy::buffer::point_circle</a></span></dt>
+<dt><span class="section"><a href="reference/strategies/strategy_buffer_point_square.html">strategy::buffer::point_square</a></span></dt>
+<dt><span class="section"><a href="reference/strategies/strategy_buffer_side_straight.html">strategy::buffer::side_straight</a></span></dt>
<dt><span class="section"><a href="reference/strategies/strategy_centroid_average.html">strategy::centroid::average</a></span></dt>
<dt><span class="section"><a href="reference/strategies/strategy_centroid_bashein_detmer.html">strategy::centroid::bashein_detmer</a></span></dt>
<dt><span class="section"><a href="reference/strategies/strategy_convex_hull_graham_andrew.html">strategy::convex_hull::graham_andrew</a></span></dt>
@@ -208,8 +246,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -217,7 +255,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="indexes/alphabetical_index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/access.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="spatial_indexes/rtree_examples/index_stored_in_mapped_file_using_boost_interprocess.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/access.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/access.html b/libs/geometry/doc/html/geometry/reference/access.html
index 1df2cbf89d..20c9fc9f8a 100644
--- a/libs/geometry/doc/html/geometry/reference/access.html
+++ b/libs/geometry/doc/html/geometry/reference/access.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Access Functions</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="../reference.html" title="Reference">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.access"></a><a class="link" href="access.html" title="Access Functions">Access Functions</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="access/get.html">get</a></span></dt>
<dt><span class="section"><a href="access/set.html">set</a></span></dt>
<dt><span class="section"><a href="access/exterior_ring.html">exterior_ring</a></span></dt>
@@ -35,8 +35,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/access/exterior_ring.html b/libs/geometry/doc/html/geometry/reference/access/exterior_ring.html
index 2b43013fdc..d20fc0d488 100644
--- a/libs/geometry/doc/html/geometry/reference/access/exterior_ring.html
+++ b/libs/geometry/doc/html/geometry/reference/access/exterior_ring.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>exterior_ring</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../access.html" title="Access Functions">
<link rel="prev" href="set/set_from_radian.html" title="set_from_radian">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.access.exterior_ring"></a><a class="link" href="exterior_ring.html" title="exterior_ring">exterior_ring</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="exterior_ring/exterior_ring_1.html">exterior_ring</a></span></dt>
<dt><span class="section"><a href="exterior_ring/exterior_ring_1_const_version.html">exterior_ring
(const version)</a></span></dt>
@@ -34,8 +34,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1.html b/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1.html
index 2bc09cb6ae..c0910c3fc2 100644
--- a/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1.html
+++ b/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>exterior_ring</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../exterior_ring.html" title="exterior_ring">
<link rel="prev" href="../exterior_ring.html" title="exterior_ring">
@@ -27,22 +27,22 @@
<a name="geometry.reference.access.exterior_ring.exterior_ring_1"></a><a class="link" href="exterior_ring_1.html" title="exterior_ring">exterior_ring</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id790513"></a>
+ <a class="indexterm" name="idp104983952"></a>
Function to get the exterior_ring ring of a polygon.
</p>
<h6>
<a name="geometry.reference.access.exterior_ring.exterior_ring_1.h0"></a>
- <span><a name="geometry.reference.access.exterior_ring.exterior_ring_1.synopsis"></a></span><a class="link" href="exterior_ring_1.html#geometry.reference.access.exterior_ring.exterior_ring_1.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.access.exterior_ring.exterior_ring_1.synopsis"></a></span><a class="link" href="exterior_ring_1.html#geometry.reference.access.exterior_ring.exterior_ring_1.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Polygon</span><span class="special">,</span> <span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Polygon</span><span class="special">&gt;</span>
<span class="identifier">ring_return_type</span><span class="special">&lt;</span><span class="identifier">Polygon</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">exterior_ring</span><span class="special">(</span><span class="identifier">Polygon</span> <span class="special">&amp;</span> <span class="identifier">polygon</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.access.exterior_ring.exterior_ring_1.h1"></a>
- <span><a name="geometry.reference.access.exterior_ring.exterior_ring_1.parameters"></a></span><a class="link" href="exterior_ring_1.html#geometry.reference.access.exterior_ring.exterior_ring_1.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.access.exterior_ring.exterior_ring_1.parameters"></a></span><a class="link" href="exterior_ring_1.html#geometry.reference.access.exterior_ring.exterior_ring_1.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -73,11 +73,10 @@ Function to get the exterior_ring ring of a polygon.
</p>
</th>
</tr></thead>
-<tbody>
-<tr>
+<tbody><tr>
<td>
<p>
- P
+ Polygon &amp;
</p>
</td>
<td>
@@ -87,25 +86,6 @@ Function to get the exterior_ring ring of a polygon.
</td>
<td>
<p>
- -
- </p>
- </td>
-<td>
- <p>
- Must be specified
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Polygon &amp;
- </p>
- </td>
-<td>
- </td>
-<td>
- <p>
polygon
</p>
</td>
@@ -114,25 +94,24 @@ Function to get the exterior_ring ring of a polygon.
the polygon to get the exterior ring from
</p>
</td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.access.exterior_ring.exterior_ring_1.h2"></a>
- <span><a name="geometry.reference.access.exterior_ring.exterior_ring_1.returns"></a></span><a class="link" href="exterior_ring_1.html#geometry.reference.access.exterior_ring.exterior_ring_1.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.access.exterior_ring.exterior_ring_1.returns"></a></span><a class="link" href="exterior_ring_1.html#geometry.reference.access.exterior_ring.exterior_ring_1.returns">Returns</a>
</h6>
<p>
a reference to the exterior ring
</p>
<h6>
<a name="geometry.reference.access.exterior_ring.exterior_ring_1.h3"></a>
- <span><a name="geometry.reference.access.exterior_ring.exterior_ring_1.header"></a></span><a class="link" href="exterior_ring_1.html#geometry.reference.access.exterior_ring.exterior_ring_1.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.access.exterior_ring.exterior_ring_1.header"></a></span><a class="link" href="exterior_ring_1.html#geometry.reference.access.exterior_ring.exterior_ring_1.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -143,8 +122,8 @@ Function to get the exterior_ring ring of a polygon.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1_const_version.html b/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1_const_version.html
index b85f125a71..5f246d54f0 100644
--- a/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1_const_version.html
+++ b/libs/geometry/doc/html/geometry/reference/access/exterior_ring/exterior_ring_1_const_version.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>exterior_ring (const version)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../exterior_ring.html" title="exterior_ring">
<link rel="prev" href="exterior_ring_1.html" title="exterior_ring">
@@ -28,12 +28,12 @@
(const version)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id790982"></a>
+ <a class="indexterm" name="idp105033312"></a>
Function to get the exterior ring of a polygon (const version)
</p>
<h6>
<a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.h0"></a>
- <span><a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.synopsis"></a></span><a class="link" href="exterior_ring_1_const_version.html#geometry.reference.access.exterior_ring.exterior_ring_1_const_version.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.synopsis"></a></span><a class="link" href="exterior_ring_1_const_version.html#geometry.reference.access.exterior_ring.exterior_ring_1_const_version.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -43,7 +43,7 @@ Function to get the exterior ring of a polygon (const version)
</p>
<h6>
<a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.h1"></a>
- <span><a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.parameters"></a></span><a class="link" href="exterior_ring_1_const_version.html#geometry.reference.access.exterior_ring.exterior_ring_1_const_version.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.parameters"></a></span><a class="link" href="exterior_ring_1_const_version.html#geometry.reference.access.exterior_ring.exterior_ring_1_const_version.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -99,20 +99,20 @@ Function to get the exterior ring of a polygon (const version)
</table></div>
<h6>
<a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.h2"></a>
- <span><a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.returns"></a></span><a class="link" href="exterior_ring_1_const_version.html#geometry.reference.access.exterior_ring.exterior_ring_1_const_version.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.returns"></a></span><a class="link" href="exterior_ring_1_const_version.html#geometry.reference.access.exterior_ring.exterior_ring_1_const_version.returns">Returns</a>
</h6>
<p>
a const reference to the exterior ring
</p>
<h6>
<a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.h3"></a>
- <span><a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.header"></a></span><a class="link" href="exterior_ring_1_const_version.html#geometry.reference.access.exterior_ring.exterior_ring_1_const_version.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.access.exterior_ring.exterior_ring_1_const_version.header"></a></span><a class="link" href="exterior_ring_1_const_version.html#geometry.reference.access.exterior_ring.exterior_ring_1_const_version.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -123,8 +123,8 @@ Function to get the exterior ring of a polygon (const version)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/access/get.html b/libs/geometry/doc/html/geometry/reference/access/get.html
index f6a173605d..5a62eacd12 100644
--- a/libs/geometry/doc/html/geometry/reference/access/get.html
+++ b/libs/geometry/doc/html/geometry/reference/access/get.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>get</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../access.html" title="Access Functions">
<link rel="prev" href="../access.html" title="Access Functions">
-<link rel="next" href="get/get_2.html" title="get">
+<link rel="next" href="get/get_1.html" title="get">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,23 +20,23 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../access.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../access.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get/get_2.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../access.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../access.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get/get_1.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.access.get"></a><a class="link" href="get.html" title="get">get</a>
</h4></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="get/get_2.html">get</a></span></dt>
-<dt><span class="section"><a href="get/get_2_with_index.html">get
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="get/get_1.html">get</a></span></dt>
+<dt><span class="section"><a href="get/get_1_with_index.html">get
(with index)</a></span></dt>
<dt><span class="section"><a href="get/get_as_radian.html">get_as_radian</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -44,7 +44,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../access.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../access.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get/get_2.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../access.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../access.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get/get_1.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/access/get/get_2.html b/libs/geometry/doc/html/geometry/reference/access/get/get_1.html
index eeea258259..81c650bf2f 100644
--- a/libs/geometry/doc/html/geometry/reference/access/get/get_2.html
+++ b/libs/geometry/doc/html/geometry/reference/access/get/get_1.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>get</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../get.html" title="get">
<link rel="prev" href="../get.html" title="get">
-<link rel="next" href="get_2_with_index.html" title="get (with index)">
+<link rel="next" href="get_1_with_index.html" title="get (with index)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../get.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_2_with_index.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../get.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_1_with_index.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
-<a name="geometry.reference.access.get.get_2"></a><a class="link" href="get_2.html" title="get">get</a>
+<a name="geometry.reference.access.get.get_1"></a><a class="link" href="get_1.html" title="get">get</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id783911"></a>
+ <a class="indexterm" name="idp104242128"></a>
Get coordinate value of a geometry (usually a point)
</p>
<h6>
-<a name="geometry.reference.access.get.get_2.h0"></a>
- <span><a name="geometry.reference.access.get.get_2.description"></a></span><a class="link" href="get_2.html#geometry.reference.access.get.get_2.description">Description</a>
+<a name="geometry.reference.access.get.get_1.h0"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1.description"></a></span><a class="link" href="get_1.html#geometry.reference.access.get.get_1.description">Description</a>
</h6>
<p>
The free functions <span class="bold"><strong>get</strong></span> and <span class="bold"><strong>set</strong></span> are two of the most important functions of
@@ -41,8 +41,8 @@ Get coordinate value of a geometry (usually a point)
and for a point, box, segment or sphere.
</p>
<h6>
-<a name="geometry.reference.access.get.get_2.h1"></a>
- <span><a name="geometry.reference.access.get.get_2.synopsis"></a></span><a class="link" href="get_2.html#geometry.reference.access.get.get_2.synopsis">Synopsis</a>
+<a name="geometry.reference.access.get.get_1.h1"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1.synopsis"></a></span><a class="link" href="get_1.html#geometry.reference.access.get.get_1.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,8 +51,8 @@ Get coordinate value of a geometry (usually a point)
<p>
</p>
<h6>
-<a name="geometry.reference.access.get.get_2.h2"></a>
- <span><a name="geometry.reference.access.get.get_2.parameters"></a></span><a class="link" href="get_2.html#geometry.reference.access.get.get_2.parameters">Parameters</a>
+<a name="geometry.reference.access.get.get_1.h2"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1.parameters"></a></span><a class="link" href="get_1.html#geometry.reference.access.get.get_1.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -132,15 +132,31 @@ Get coordinate value of a geometry (usually a point)
</tbody>
</table></div>
<h6>
-<a name="geometry.reference.access.get.get_2.h3"></a>
- <span><a name="geometry.reference.access.get.get_2.returns"></a></span><a class="link" href="get_2.html#geometry.reference.access.get.get_2.returns">Returns</a>
+<a name="geometry.reference.access.get.get_1.h3"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1.returns"></a></span><a class="link" href="get_1.html#geometry.reference.access.get.get_1.returns">Returns</a>
</h6>
<p>
The coordinate value of specified dimension of specified geometry
</p>
<h6>
-<a name="geometry.reference.access.get.get_2.h4"></a>
- <span><a name="geometry.reference.access.get.get_2.behavior"></a></span><a class="link" href="get_2.html#geometry.reference.access.get.get_2.behavior">Behavior</a>
+<a name="geometry.reference.access.get.get_1.h4"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1.header"></a></span><a class="link" href="get_1.html#geometry.reference.access.get.get_1.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">access</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.access.get.get_1.h5"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1.behavior"></a></span><a class="link" href="get_1.html#geometry.reference.access.get.get_1.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -201,15 +217,15 @@ Get coordinate value of a geometry (usually a point)
</tbody>
</table></div>
<h6>
-<a name="geometry.reference.access.get.get_2.h5"></a>
- <span><a name="geometry.reference.access.get.get_2.complexity"></a></span><a class="link" href="get_2.html#geometry.reference.access.get.get_2.complexity">Complexity</a>
+<a name="geometry.reference.access.get.get_1.h6"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1.complexity"></a></span><a class="link" href="get_1.html#geometry.reference.access.get.get_1.complexity">Complexity</a>
</h6>
<p>
Constant
</p>
<h6>
-<a name="geometry.reference.access.get.get_2.h6"></a>
- <span><a name="geometry.reference.access.get.get_2.example"></a></span><a class="link" href="get_2.html#geometry.reference.access.get.get_2.example">Example</a>
+<a name="geometry.reference.access.get.get_1.h7"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1.example"></a></span><a class="link" href="get_1.html#geometry.reference.access.get.get_1.example">Example</a>
</h6>
<p>
Get the coordinate of a point
@@ -242,27 +258,11 @@ Get coordinate value of a geometry (usually a point)
</p>
<pre class="programlisting">x=1 y=2
</pre>
-<h6>
-<a name="geometry.reference.access.get.get_2.h7"></a>
- <span><a name="geometry.reference.access.get.get_2.header"></a></span><a class="link" href="get_2.html#geometry.reference.access.get.get_2.header">Header</a>
- </h6>
-<p>
- Either
- </p>
-<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
- </p>
-<p>
- Or
- </p>
-<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">access</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
- </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -270,7 +270,7 @@ Get coordinate value of a geometry (usually a point)
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../get.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_2_with_index.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../get.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_1_with_index.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/access/get/get_2_with_index.html b/libs/geometry/doc/html/geometry/reference/access/get/get_1_with_index.html
index 863ce77b31..505cdd0a87 100644
--- a/libs/geometry/doc/html/geometry/reference/access/get/get_2_with_index.html
+++ b/libs/geometry/doc/html/geometry/reference/access/get/get_1_with_index.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>get (with index)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../get.html" title="get">
-<link rel="prev" href="get_2.html" title="get">
+<link rel="prev" href="get_1.html" title="get">
<link rel="next" href="get_as_radian.html" title="get_as_radian">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,20 +20,20 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="get_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_as_radian.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="get_1.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_as_radian.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
-<a name="geometry.reference.access.get.get_2_with_index"></a><a class="link" href="get_2_with_index.html" title="get (with index)">get
+<a name="geometry.reference.access.get.get_1_with_index"></a><a class="link" href="get_1_with_index.html" title="get (with index)">get
(with index)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id785087"></a>
+ <a class="indexterm" name="idp104379984"></a>
get coordinate value of a Box or Segment
</p>
<h6>
-<a name="geometry.reference.access.get.get_2_with_index.h0"></a>
- <span><a name="geometry.reference.access.get.get_2_with_index.description"></a></span><a class="link" href="get_2_with_index.html#geometry.reference.access.get.get_2_with_index.description">Description</a>
+<a name="geometry.reference.access.get.get_1_with_index.h0"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1_with_index.description"></a></span><a class="link" href="get_1_with_index.html#geometry.reference.access.get.get_1_with_index.description">Description</a>
</h6>
<p>
The free functions <span class="bold"><strong>get</strong></span> and <span class="bold"><strong>set</strong></span> are two of the most important functions of
@@ -42,8 +42,8 @@ get coordinate value of a Box or Segment
and for a point, box, segment or sphere.
</p>
<h6>
-<a name="geometry.reference.access.get.get_2_with_index.h1"></a>
- <span><a name="geometry.reference.access.get.get_2_with_index.synopsis"></a></span><a class="link" href="get_2_with_index.html#geometry.reference.access.get.get_2_with_index.synopsis">Synopsis</a>
+<a name="geometry.reference.access.get.get_1_with_index.h1"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1_with_index.synopsis"></a></span><a class="link" href="get_1_with_index.html#geometry.reference.access.get.get_1_with_index.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -52,8 +52,8 @@ get coordinate value of a Box or Segment
<p>
</p>
<h6>
-<a name="geometry.reference.access.get.get_2_with_index.h2"></a>
- <span><a name="geometry.reference.access.get.get_2_with_index.parameters"></a></span><a class="link" href="get_2_with_index.html#geometry.reference.access.get.get_2_with_index.parameters">Parameters</a>
+<a name="geometry.reference.access.get.get_1_with_index.h2"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1_with_index.parameters"></a></span><a class="link" href="get_1_with_index.html#geometry.reference.access.get.get_1_with_index.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -157,21 +157,21 @@ get coordinate value of a Box or Segment
</tbody>
</table></div>
<h6>
-<a name="geometry.reference.access.get.get_2_with_index.h3"></a>
- <span><a name="geometry.reference.access.get.get_2_with_index.returns"></a></span><a class="link" href="get_2_with_index.html#geometry.reference.access.get.get_2_with_index.returns">Returns</a>
+<a name="geometry.reference.access.get.get_1_with_index.h3"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1_with_index.returns"></a></span><a class="link" href="get_1_with_index.html#geometry.reference.access.get.get_1_with_index.returns">Returns</a>
</h6>
<p>
coordinate value
</p>
<h6>
-<a name="geometry.reference.access.get.get_2_with_index.h4"></a>
- <span><a name="geometry.reference.access.get.get_2_with_index.header"></a></span><a class="link" href="get_2_with_index.html#geometry.reference.access.get.get_2_with_index.header">Header</a>
+<a name="geometry.reference.access.get.get_1_with_index.h4"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1_with_index.header"></a></span><a class="link" href="get_1_with_index.html#geometry.reference.access.get.get_1_with_index.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -180,8 +180,8 @@ get coordinate value of a Box or Segment
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">access</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
-<a name="geometry.reference.access.get.get_2_with_index.h5"></a>
- <span><a name="geometry.reference.access.get.get_2_with_index.behavior"></a></span><a class="link" href="get_2_with_index.html#geometry.reference.access.get.get_2_with_index.behavior">Behavior</a>
+<a name="geometry.reference.access.get.get_1_with_index.h5"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1_with_index.behavior"></a></span><a class="link" href="get_1_with_index.html#geometry.reference.access.get.get_1_with_index.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -204,7 +204,7 @@ get coordinate value of a Box or Segment
<tr>
<td>
<p>
- Rectangle
+ Box
</p>
</td>
<td>
@@ -230,15 +230,15 @@ get coordinate value of a Box or Segment
</tbody>
</table></div>
<h6>
-<a name="geometry.reference.access.get.get_2_with_index.h6"></a>
- <span><a name="geometry.reference.access.get.get_2_with_index.complexity"></a></span><a class="link" href="get_2_with_index.html#geometry.reference.access.get.get_2_with_index.complexity">Complexity</a>
+<a name="geometry.reference.access.get.get_1_with_index.h6"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1_with_index.complexity"></a></span><a class="link" href="get_1_with_index.html#geometry.reference.access.get.get_1_with_index.complexity">Complexity</a>
</h6>
<p>
Constant
</p>
<h6>
-<a name="geometry.reference.access.get.get_2_with_index.h7"></a>
- <span><a name="geometry.reference.access.get.get_2_with_index.example"></a></span><a class="link" href="get_2_with_index.html#geometry.reference.access.get.get_2_with_index.example">Example</a>
+<a name="geometry.reference.access.get.get_1_with_index.h7"></a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_1_with_index.example"></a></span><a class="link" href="get_1_with_index.html#geometry.reference.access.get.get_1_with_index.example">Example</a>
</h6>
<p>
Get the coordinate of a box
@@ -278,8 +278,8 @@ get coordinate value of a Box or Segment
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -287,7 +287,7 @@ get coordinate value of a Box or Segment
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="get_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_as_radian.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="get_1.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_as_radian.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/access/get/get_as_radian.html b/libs/geometry/doc/html/geometry/reference/access/get/get_as_radian.html
index 916291ac39..21e056d6eb 100644
--- a/libs/geometry/doc/html/geometry/reference/access/get/get_as_radian.html
+++ b/libs/geometry/doc/html/geometry/reference/access/get/get_as_radian.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>get_as_radian</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../get.html" title="get">
-<link rel="prev" href="get_2_with_index.html" title="get (with index)">
+<link rel="prev" href="get_1_with_index.html" title="get (with index)">
<link rel="next" href="../set.html" title="set">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,26 +20,26 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="get_2_with_index.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../set.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="get_1_with_index.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../set.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="geometry.reference.access.get.get_as_radian"></a><a class="link" href="get_as_radian.html" title="get_as_radian">get_as_radian</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id786807"></a>
+ <a class="indexterm" name="idp104550768"></a>
get coordinate value of a point, result is in Radian
</p>
<h6>
<a name="geometry.reference.access.get.get_as_radian.h0"></a>
- <span><a name="geometry.reference.access.get.get_as_radian.description"></a></span><a class="link" href="get_as_radian.html#geometry.reference.access.get.get_as_radian.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_as_radian.description"></a></span><a class="link" href="get_as_radian.html#geometry.reference.access.get.get_as_radian.description">Description</a>
</h6>
<p>
Result is in Radian, even if source coordinate system is in Degrees
</p>
<h6>
<a name="geometry.reference.access.get.get_as_radian.h1"></a>
- <span><a name="geometry.reference.access.get.get_as_radian.synopsis"></a></span><a class="link" href="get_as_radian.html#geometry.reference.access.get.get_as_radian.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_as_radian.synopsis"></a></span><a class="link" href="get_as_radian.html#geometry.reference.access.get.get_as_radian.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -49,7 +49,7 @@ get coordinate value of a point, result is in Radian
</p>
<h6>
<a name="geometry.reference.access.get.get_as_radian.h2"></a>
- <span><a name="geometry.reference.access.get.get_as_radian.parameters"></a></span><a class="link" href="get_as_radian.html#geometry.reference.access.get.get_as_radian.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_as_radian.parameters"></a></span><a class="link" href="get_as_radian.html#geometry.reference.access.get.get_as_radian.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -129,20 +129,20 @@ get coordinate value of a point, result is in Radian
</table></div>
<h6>
<a name="geometry.reference.access.get.get_as_radian.h3"></a>
- <span><a name="geometry.reference.access.get.get_as_radian.returns"></a></span><a class="link" href="get_as_radian.html#geometry.reference.access.get.get_as_radian.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_as_radian.returns"></a></span><a class="link" href="get_as_radian.html#geometry.reference.access.get.get_as_radian.returns">Returns</a>
</h6>
<p>
coordinate value
</p>
<h6>
<a name="geometry.reference.access.get.get_as_radian.h4"></a>
- <span><a name="geometry.reference.access.get.get_as_radian.header"></a></span><a class="link" href="get_as_radian.html#geometry.reference.access.get.get_as_radian.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.access.get.get_as_radian.header"></a></span><a class="link" href="get_as_radian.html#geometry.reference.access.get.get_as_radian.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -153,8 +153,8 @@ get coordinate value of a point, result is in Radian
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -162,7 +162,7 @@ get coordinate value of a point, result is in Radian
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="get_2_with_index.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../set.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="get_1_with_index.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../get.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../set.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/access/interior_rings.html b/libs/geometry/doc/html/geometry/reference/access/interior_rings.html
index 0aed02da07..6351e1f00c 100644
--- a/libs/geometry/doc/html/geometry/reference/access/interior_rings.html
+++ b/libs/geometry/doc/html/geometry/reference/access/interior_rings.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>interior_rings</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../access.html" title="Access Functions">
<link rel="prev" href="exterior_ring/exterior_ring_1_const_version.html" title="exterior_ring (const version)">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.access.interior_rings"></a><a class="link" href="interior_rings.html" title="interior_rings">interior_rings</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="interior_rings/interior_rings_1.html">interior_rings</a></span></dt>
<dt><span class="section"><a href="interior_rings/interior_rings_1_const_version.html">interior_rings
(const version)</a></span></dt>
@@ -34,8 +34,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1.html b/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1.html
index 23efc24e70..7f32a4fd12 100644
--- a/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1.html
+++ b/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>interior_rings</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../interior_rings.html" title="interior_rings">
<link rel="prev" href="../interior_rings.html" title="interior_rings">
@@ -27,12 +27,12 @@
<a name="geometry.reference.access.interior_rings.interior_rings_1"></a><a class="link" href="interior_rings_1.html" title="interior_rings">interior_rings</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id791449"></a>
+ <a class="indexterm" name="idp105086624"></a>
Function to get the interior rings of a polygon (non const version)
</p>
<h6>
<a name="geometry.reference.access.interior_rings.interior_rings_1.h0"></a>
- <span><a name="geometry.reference.access.interior_rings.interior_rings_1.synopsis"></a></span><a class="link" href="interior_rings_1.html#geometry.reference.access.interior_rings.interior_rings_1.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.access.interior_rings.interior_rings_1.synopsis"></a></span><a class="link" href="interior_rings_1.html#geometry.reference.access.interior_rings.interior_rings_1.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -42,7 +42,7 @@ Function to get the interior rings of a polygon (non const version)
</p>
<h6>
<a name="geometry.reference.access.interior_rings.interior_rings_1.h1"></a>
- <span><a name="geometry.reference.access.interior_rings.interior_rings_1.parameters"></a></span><a class="link" href="interior_rings_1.html#geometry.reference.access.interior_rings.interior_rings_1.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.access.interior_rings.interior_rings_1.parameters"></a></span><a class="link" href="interior_rings_1.html#geometry.reference.access.interior_rings.interior_rings_1.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -98,20 +98,20 @@ Function to get the interior rings of a polygon (non const version)
</table></div>
<h6>
<a name="geometry.reference.access.interior_rings.interior_rings_1.h2"></a>
- <span><a name="geometry.reference.access.interior_rings.interior_rings_1.returns"></a></span><a class="link" href="interior_rings_1.html#geometry.reference.access.interior_rings.interior_rings_1.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.access.interior_rings.interior_rings_1.returns"></a></span><a class="link" href="interior_rings_1.html#geometry.reference.access.interior_rings.interior_rings_1.returns">Returns</a>
</h6>
<p>
the interior rings (possibly a reference)
</p>
<h6>
<a name="geometry.reference.access.interior_rings.interior_rings_1.h3"></a>
- <span><a name="geometry.reference.access.interior_rings.interior_rings_1.header"></a></span><a class="link" href="interior_rings_1.html#geometry.reference.access.interior_rings.interior_rings_1.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.access.interior_rings.interior_rings_1.header"></a></span><a class="link" href="interior_rings_1.html#geometry.reference.access.interior_rings.interior_rings_1.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -122,8 +122,8 @@ Function to get the interior rings of a polygon (non const version)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1_const_version.html b/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1_const_version.html
index 2151f0b05e..8c4ba22a4a 100644
--- a/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1_const_version.html
+++ b/libs/geometry/doc/html/geometry/reference/access/interior_rings/interior_rings_1_const_version.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>interior_rings (const version)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../interior_rings.html" title="interior_rings">
<link rel="prev" href="interior_rings_1.html" title="interior_rings">
@@ -28,12 +28,12 @@
(const version)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id791889"></a>
+ <a class="indexterm" name="idp105136000"></a>
Function to get the interior rings of a polygon (const version)
</p>
<h6>
<a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.h0"></a>
- <span><a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.synopsis"></a></span><a class="link" href="interior_rings_1_const_version.html#geometry.reference.access.interior_rings.interior_rings_1_const_version.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.synopsis"></a></span><a class="link" href="interior_rings_1_const_version.html#geometry.reference.access.interior_rings.interior_rings_1_const_version.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -43,7 +43,7 @@ Function to get the interior rings of a polygon (const version)
</p>
<h6>
<a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.h1"></a>
- <span><a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.parameters"></a></span><a class="link" href="interior_rings_1_const_version.html#geometry.reference.access.interior_rings.interior_rings_1_const_version.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.parameters"></a></span><a class="link" href="interior_rings_1_const_version.html#geometry.reference.access.interior_rings.interior_rings_1_const_version.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -99,20 +99,20 @@ Function to get the interior rings of a polygon (const version)
</table></div>
<h6>
<a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.h2"></a>
- <span><a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.returns"></a></span><a class="link" href="interior_rings_1_const_version.html#geometry.reference.access.interior_rings.interior_rings_1_const_version.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.returns"></a></span><a class="link" href="interior_rings_1_const_version.html#geometry.reference.access.interior_rings.interior_rings_1_const_version.returns">Returns</a>
</h6>
<p>
the interior rings (possibly a const reference)
</p>
<h6>
<a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.h3"></a>
- <span><a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.header"></a></span><a class="link" href="interior_rings_1_const_version.html#geometry.reference.access.interior_rings.interior_rings_1_const_version.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.access.interior_rings.interior_rings_1_const_version.header"></a></span><a class="link" href="interior_rings_1_const_version.html#geometry.reference.access.interior_rings.interior_rings_1_const_version.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -123,8 +123,8 @@ Function to get the interior rings of a polygon (const version)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/access/set.html b/libs/geometry/doc/html/geometry/reference/access/set.html
index 05620b4c3a..283e600d7c 100644
--- a/libs/geometry/doc/html/geometry/reference/access/set.html
+++ b/libs/geometry/doc/html/geometry/reference/access/set.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>set</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../access.html" title="Access Functions">
<link rel="prev" href="get/get_as_radian.html" title="get_as_radian">
-<link rel="next" href="set/set_3.html" title="set">
+<link rel="next" href="set/set_2.html" title="set">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,23 +20,23 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="get/get_as_radian.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../access.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set/set_3.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="get/get_as_radian.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../access.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set/set_2.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.access.set"></a><a class="link" href="set.html" title="set">set</a>
</h4></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="set/set_3.html">set</a></span></dt>
-<dt><span class="section"><a href="set/set_3_with_index.html">set
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="set/set_2.html">set</a></span></dt>
+<dt><span class="section"><a href="set/set_2_with_index.html">set
(with index)</a></span></dt>
<dt><span class="section"><a href="set/set_from_radian.html">set_from_radian</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -44,7 +44,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="get/get_as_radian.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../access.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set/set_3.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="get/get_as_radian.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../access.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set/set_2.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/access/set/set_3.html b/libs/geometry/doc/html/geometry/reference/access/set/set_2.html
index e03b18a432..3ebe21e840 100644
--- a/libs/geometry/doc/html/geometry/reference/access/set/set_3.html
+++ b/libs/geometry/doc/html/geometry/reference/access/set/set_2.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>set</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../set.html" title="set">
<link rel="prev" href="../set.html" title="set">
-<link rel="next" href="set_3_with_index.html" title="set (with index)">
+<link rel="next" href="set_2_with_index.html" title="set (with index)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../set.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set_3_with_index.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../set.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set_2_with_index.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
-<a name="geometry.reference.access.set.set_3"></a><a class="link" href="set_3.html" title="set">set</a>
+<a name="geometry.reference.access.set.set_2"></a><a class="link" href="set_2.html" title="set">set</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id787341"></a>
+ <a class="indexterm" name="idp104611888"></a>
Set coordinate value of a geometry (usually a point)
</p>
<h6>
-<a name="geometry.reference.access.set.set_3.h0"></a>
- <span><a name="geometry.reference.access.set.set_3.description"></a></span><a class="link" href="set_3.html#geometry.reference.access.set.set_3.description">Description</a>
+<a name="geometry.reference.access.set.set_2.h0"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2.description"></a></span><a class="link" href="set_2.html#geometry.reference.access.set.set_2.description">Description</a>
</h6>
<p>
The free functions <span class="bold"><strong>get</strong></span> and <span class="bold"><strong>set</strong></span> are two of the most important functions of
@@ -41,8 +41,8 @@ Set coordinate value of a geometry (usually a point)
and for a point, box, segment or sphere.
</p>
<h6>
-<a name="geometry.reference.access.set.set_3.h1"></a>
- <span><a name="geometry.reference.access.set.set_3.synopsis"></a></span><a class="link" href="set_3.html#geometry.reference.access.set.set_3.synopsis">Synopsis</a>
+<a name="geometry.reference.access.set.set_2.h1"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2.synopsis"></a></span><a class="link" href="set_2.html#geometry.reference.access.set.set_2.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,8 +51,8 @@ Set coordinate value of a geometry (usually a point)
<p>
</p>
<h6>
-<a name="geometry.reference.access.set.set_3.h2"></a>
- <span><a name="geometry.reference.access.set.set_3.parameters"></a></span><a class="link" href="set_3.html#geometry.reference.access.set.set_3.parameters">Parameters</a>
+<a name="geometry.reference.access.set.set_2.h2"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2.parameters"></a></span><a class="link" href="set_2.html#geometry.reference.access.set.set_2.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -151,14 +151,14 @@ Set coordinate value of a geometry (usually a point)
</tbody>
</table></div>
<h6>
-<a name="geometry.reference.access.set.set_3.h3"></a>
- <span><a name="geometry.reference.access.set.set_3.header"></a></span><a class="link" href="set_3.html#geometry.reference.access.set.set_3.header">Header</a>
+<a name="geometry.reference.access.set.set_2.h3"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2.header"></a></span><a class="link" href="set_2.html#geometry.reference.access.set.set_2.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -178,8 +178,8 @@ Set coordinate value of a geometry (usually a point)
</p></td></tr>
</table></div>
<h6>
-<a name="geometry.reference.access.set.set_3.h4"></a>
- <span><a name="geometry.reference.access.set.set_3.behavior"></a></span><a class="link" href="set_3.html#geometry.reference.access.set.set_3.behavior">Behavior</a>
+<a name="geometry.reference.access.set.set_2.h4"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2.behavior"></a></span><a class="link" href="set_2.html#geometry.reference.access.set.set_2.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -240,15 +240,15 @@ Set coordinate value of a geometry (usually a point)
</tbody>
</table></div>
<h6>
-<a name="geometry.reference.access.set.set_3.h5"></a>
- <span><a name="geometry.reference.access.set.set_3.complexity"></a></span><a class="link" href="set_3.html#geometry.reference.access.set.set_3.complexity">Complexity</a>
+<a name="geometry.reference.access.set.set_2.h5"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2.complexity"></a></span><a class="link" href="set_2.html#geometry.reference.access.set.set_2.complexity">Complexity</a>
</h6>
<p>
Constant
</p>
<h6>
-<a name="geometry.reference.access.set.set_3.h6"></a>
- <span><a name="geometry.reference.access.set.set_3.example"></a></span><a class="link" href="set_3.html#geometry.reference.access.set.set_3.example">Example</a>
+<a name="geometry.reference.access.set.set_2.h6"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2.example"></a></span><a class="link" href="set_2.html#geometry.reference.access.set.set_2.example">Example</a>
</h6>
<p>
Set the coordinate of a point
@@ -284,8 +284,8 @@ Set coordinate value of a geometry (usually a point)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -293,7 +293,7 @@ Set coordinate value of a geometry (usually a point)
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../set.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set_3_with_index.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../set.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set_2_with_index.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/access/set/set_3_with_index.html b/libs/geometry/doc/html/geometry/reference/access/set/set_2_with_index.html
index 7be18f4126..5900c04fe9 100644
--- a/libs/geometry/doc/html/geometry/reference/access/set/set_3_with_index.html
+++ b/libs/geometry/doc/html/geometry/reference/access/set/set_2_with_index.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>set (with index)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../set.html" title="set">
-<link rel="prev" href="set_3.html" title="set">
+<link rel="prev" href="set_2.html" title="set">
<link rel="next" href="set_from_radian.html" title="set_from_radian">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,20 +20,20 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="set_3.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set_from_radian.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="set_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set_from_radian.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
-<a name="geometry.reference.access.set.set_3_with_index"></a><a class="link" href="set_3_with_index.html" title="set (with index)">set
+<a name="geometry.reference.access.set.set_2_with_index"></a><a class="link" href="set_2_with_index.html" title="set (with index)">set
(with index)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id788525"></a>
+ <a class="indexterm" name="idp104751360"></a>
set coordinate value of a Box / Segment
</p>
<h6>
-<a name="geometry.reference.access.set.set_3_with_index.h0"></a>
- <span><a name="geometry.reference.access.set.set_3_with_index.description"></a></span><a class="link" href="set_3_with_index.html#geometry.reference.access.set.set_3_with_index.description">Description</a>
+<a name="geometry.reference.access.set.set_2_with_index.h0"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2_with_index.description"></a></span><a class="link" href="set_2_with_index.html#geometry.reference.access.set.set_2_with_index.description">Description</a>
</h6>
<p>
The free functions <span class="bold"><strong>get</strong></span> and <span class="bold"><strong>set</strong></span> are two of the most important functions of
@@ -42,8 +42,8 @@ set coordinate value of a Box / Segment
and for a point, box, segment or sphere.
</p>
<h6>
-<a name="geometry.reference.access.set.set_3_with_index.h1"></a>
- <span><a name="geometry.reference.access.set.set_3_with_index.synopsis"></a></span><a class="link" href="set_3_with_index.html#geometry.reference.access.set.set_3_with_index.synopsis">Synopsis</a>
+<a name="geometry.reference.access.set.set_2_with_index.h1"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2_with_index.synopsis"></a></span><a class="link" href="set_2_with_index.html#geometry.reference.access.set.set_2_with_index.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -52,8 +52,8 @@ set coordinate value of a Box / Segment
<p>
</p>
<h6>
-<a name="geometry.reference.access.set.set_3_with_index.h2"></a>
- <span><a name="geometry.reference.access.set.set_3_with_index.parameters"></a></span><a class="link" href="set_3_with_index.html#geometry.reference.access.set.set_3_with_index.parameters">Parameters</a>
+<a name="geometry.reference.access.set.set_2_with_index.h2"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2_with_index.parameters"></a></span><a class="link" href="set_2_with_index.html#geometry.reference.access.set.set_2_with_index.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -176,14 +176,14 @@ set coordinate value of a Box / Segment
</tbody>
</table></div>
<h6>
-<a name="geometry.reference.access.set.set_3_with_index.h3"></a>
- <span><a name="geometry.reference.access.set.set_3_with_index.header"></a></span><a class="link" href="set_3_with_index.html#geometry.reference.access.set.set_3_with_index.header">Header</a>
+<a name="geometry.reference.access.set.set_2_with_index.h3"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2_with_index.header"></a></span><a class="link" href="set_2_with_index.html#geometry.reference.access.set.set_2_with_index.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -192,8 +192,8 @@ set coordinate value of a Box / Segment
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">access</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
-<a name="geometry.reference.access.set.set_3_with_index.h4"></a>
- <span><a name="geometry.reference.access.set.set_3_with_index.behavior"></a></span><a class="link" href="set_3_with_index.html#geometry.reference.access.set.set_3_with_index.behavior">Behavior</a>
+<a name="geometry.reference.access.set.set_2_with_index.h4"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2_with_index.behavior"></a></span><a class="link" href="set_2_with_index.html#geometry.reference.access.set.set_2_with_index.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -216,7 +216,7 @@ set coordinate value of a Box / Segment
<tr>
<td>
<p>
- Rectangle
+ Box
</p>
</td>
<td>
@@ -242,15 +242,15 @@ set coordinate value of a Box / Segment
</tbody>
</table></div>
<h6>
-<a name="geometry.reference.access.set.set_3_with_index.h5"></a>
- <span><a name="geometry.reference.access.set.set_3_with_index.complexity"></a></span><a class="link" href="set_3_with_index.html#geometry.reference.access.set.set_3_with_index.complexity">Complexity</a>
+<a name="geometry.reference.access.set.set_2_with_index.h5"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2_with_index.complexity"></a></span><a class="link" href="set_2_with_index.html#geometry.reference.access.set.set_2_with_index.complexity">Complexity</a>
</h6>
<p>
Constant
</p>
<h6>
-<a name="geometry.reference.access.set.set_3_with_index.h6"></a>
- <span><a name="geometry.reference.access.set.set_3_with_index.example"></a></span><a class="link" href="set_3_with_index.html#geometry.reference.access.set.set_3_with_index.example">Example</a>
+<a name="geometry.reference.access.set.set_2_with_index.h6"></a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_2_with_index.example"></a></span><a class="link" href="set_2_with_index.html#geometry.reference.access.set.set_2_with_index.example">Example</a>
</h6>
<p>
Set the coordinate of a box
@@ -288,8 +288,8 @@ set coordinate value of a Box / Segment
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -297,7 +297,7 @@ set coordinate value of a Box / Segment
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="set_3.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set_from_radian.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="set_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="set_from_radian.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/access/set/set_from_radian.html b/libs/geometry/doc/html/geometry/reference/access/set/set_from_radian.html
index ddaf410249..cf8910a58d 100644
--- a/libs/geometry/doc/html/geometry/reference/access/set/set_from_radian.html
+++ b/libs/geometry/doc/html/geometry/reference/access/set/set_from_radian.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>set_from_radian</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../set.html" title="set">
-<link rel="prev" href="set_3_with_index.html" title="set (with index)">
+<link rel="prev" href="set_2_with_index.html" title="set (with index)">
<link rel="next" href="../exterior_ring.html" title="exterior_ring">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="set_3_with_index.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../exterior_ring.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="set_2_with_index.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../exterior_ring.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="geometry.reference.access.set.set_from_radian"></a><a class="link" href="set_from_radian.html" title="set_from_radian">set_from_radian</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id789946"></a>
+ <a class="indexterm" name="idp104918592"></a>
set coordinate value (in radian) to a point
</p>
<h6>
<a name="geometry.reference.access.set.set_from_radian.h0"></a>
- <span><a name="geometry.reference.access.set.set_from_radian.description"></a></span><a class="link" href="set_from_radian.html#geometry.reference.access.set.set_from_radian.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_from_radian.description"></a></span><a class="link" href="set_from_radian.html#geometry.reference.access.set.set_from_radian.description">Description</a>
</h6>
<p>
Coordinate value will be set correctly, if coordinate system of point
@@ -40,7 +40,7 @@ set coordinate value (in radian) to a point
</p>
<h6>
<a name="geometry.reference.access.set.set_from_radian.h1"></a>
- <span><a name="geometry.reference.access.set.set_from_radian.synopsis"></a></span><a class="link" href="set_from_radian.html#geometry.reference.access.set.set_from_radian.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_from_radian.synopsis"></a></span><a class="link" href="set_from_radian.html#geometry.reference.access.set.set_from_radian.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ set coordinate value (in radian) to a point
</p>
<h6>
<a name="geometry.reference.access.set.set_from_radian.h2"></a>
- <span><a name="geometry.reference.access.set.set_from_radian.parameters"></a></span><a class="link" href="set_from_radian.html#geometry.reference.access.set.set_from_radian.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_from_radian.parameters"></a></span><a class="link" href="set_from_radian.html#geometry.reference.access.set.set_from_radian.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -149,13 +149,13 @@ set coordinate value (in radian) to a point
</table></div>
<h6>
<a name="geometry.reference.access.set.set_from_radian.h3"></a>
- <span><a name="geometry.reference.access.set.set_from_radian.header"></a></span><a class="link" href="set_from_radian.html#geometry.reference.access.set.set_from_radian.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.access.set.set_from_radian.header"></a></span><a class="link" href="set_from_radian.html#geometry.reference.access.set.set_from_radian.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -166,8 +166,8 @@ set coordinate value (in radian) to a point
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -175,7 +175,7 @@ set coordinate value (in radian) to a point
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="set_3_with_index.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../exterior_ring.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="set_2_with_index.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../set.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../exterior_ring.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted.html b/libs/geometry/doc/html/geometry/reference/adapted.html
index 147a4f3080..e65fc81ac6 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Adapted models</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="access/interior_rings/interior_rings_1_const_version.html" title="interior_rings (const version)">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.adapted"></a><a class="link" href="adapted.html" title="Adapted models">Adapted models</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="adapted/c_array.html">C array</a></span></dt>
<dt><span class="section"><a href="adapted/boost_array.html">Boost.Array</a></span></dt>
<dt><span class="section"><a href="adapted/boost_fusion.html">Boost.Fusion</a></span></dt>
@@ -38,8 +38,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_array.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_array.html
index bc0919656d..335c3dc079 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_array.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_array.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Array</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../adapted.html" title="Adapted models">
<link rel="prev" href="c_array.html" title="C array">
@@ -31,7 +31,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_array.h0"></a>
- <span><a name="geometry.reference.adapted.boost_array.description"></a></span><a class="link" href="boost_array.html#geometry.reference.adapted.boost_array.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_array.description"></a></span><a class="link" href="boost_array.html#geometry.reference.adapted.boost_array.description">Description</a>
</h6>
<p>
A boost::array is (optionally) adapted to the Boost.Geometry point concept.
@@ -43,7 +43,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_array.h1"></a>
- <span><a name="geometry.reference.adapted.boost_array.model_of"></a></span><a class="link" href="boost_array.html#geometry.reference.adapted.boost_array.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.boost_array.model_of"></a></span><a class="link" href="boost_array.html#geometry.reference.adapted.boost_array.model_of">Model
of</a>
</h6>
<p>
@@ -51,7 +51,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_array.h2"></a>
- <span><a name="geometry.reference.adapted.boost_array.header"></a></span><a class="link" href="boost_array.html#geometry.reference.adapted.boost_array.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_array.header"></a></span><a class="link" href="boost_array.html#geometry.reference.adapted.boost_array.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_array</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -62,7 +62,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_array.h3"></a>
- <span><a name="geometry.reference.adapted.boost_array.example"></a></span><a class="link" href="boost_array.html#geometry.reference.adapted.boost_array.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_array.example"></a></span><a class="link" href="boost_array.html#geometry.reference.adapted.boost_array.example">Example</a>
</h6>
<p>
Shows how to use a Boost.Array using Boost.Geometry's distance, set and
@@ -84,8 +84,8 @@
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="number">2</span><span class="special">&gt;</span> <span class="identifier">b</span> <span class="special">=</span> <span class="special">{</span> <span class="special">{</span><span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">}</span> <span class="special">};</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">set</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;(</span><span class="identifier">a</span><span class="special">,</span> <span class="number">1.1</span><span class="special">);</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">set</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;(</span><span class="identifier">a</span><span class="special">,</span> <span class="number">2.2</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">set</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;(</span><span class="identifier">a</span><span class="special">,</span> <span class="number">1.1f</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">set</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;(</span><span class="identifier">a</span><span class="special">,</span> <span class="number">2.2f</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">assign_values</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="number">2.2</span><span class="special">,</span> <span class="number">3.3</span><span class="special">);</span>
@@ -109,8 +109,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_fusion.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_fusion.html
index 2cec63fa70..049ca16f6b 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_fusion.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_fusion.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Fusion</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../adapted.html" title="Adapted models">
<link rel="prev" href="boost_array.html" title="Boost.Array">
@@ -32,7 +32,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_fusion.h0"></a>
- <span><a name="geometry.reference.adapted.boost_fusion.description"></a></span><a class="link" href="boost_fusion.html#geometry.reference.adapted.boost_fusion.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_fusion.description"></a></span><a class="link" href="boost_fusion.html#geometry.reference.adapted.boost_fusion.description">Description</a>
</h6>
<p>
Boost.Fusion adapted structs are (optionally) adapted to the Boost.Geometry
@@ -40,7 +40,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_fusion.h1"></a>
- <span><a name="geometry.reference.adapted.boost_fusion.model_of"></a></span><a class="link" href="boost_fusion.html#geometry.reference.adapted.boost_fusion.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.boost_fusion.model_of"></a></span><a class="link" href="boost_fusion.html#geometry.reference.adapted.boost_fusion.model_of">Model
of</a>
</h6>
<p>
@@ -48,7 +48,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_fusion.h2"></a>
- <span><a name="geometry.reference.adapted.boost_fusion.header"></a></span><a class="link" href="boost_fusion.html#geometry.reference.adapted.boost_fusion.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_fusion.header"></a></span><a class="link" href="boost_fusion.html#geometry.reference.adapted.boost_fusion.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_fusion</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -59,7 +59,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_fusion.h3"></a>
- <span><a name="geometry.reference.adapted.boost_fusion.example"></a></span><a class="link" href="boost_fusion.html#geometry.reference.adapted.boost_fusion.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_fusion.example"></a></span><a class="link" href="boost_fusion.html#geometry.reference.adapted.boost_fusion.example">Example</a>
</h6>
<p>
Shows how to combine Boost.Fusion with Boost.Geometry
@@ -116,8 +116,8 @@ Distance a-c: 10.3923
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon.html
index 03ea6f7c58..2b237beeba 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Polygon</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../adapted.html" title="Adapted models">
<link rel="prev" href="boost_tuple.html" title="Boost.Tuple">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.adapted.boost_polygon"></a><a class="link" href="boost_polygon.html" title="Boost.Polygon">Boost.Polygon</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="boost_polygon/point_data.html">Boost.Polygon's
point_data</a></span></dt>
<dt><span class="section"><a href="boost_polygon/rectangle_data.html">Boost.Polygon's
@@ -39,8 +39,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/point_data.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/point_data.html
index 379a4c2f89..3c7f03c67c 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/point_data.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/point_data.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Polygon's point_data</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../boost_polygon.html" title="Boost.Polygon">
<link rel="prev" href="../boost_polygon.html" title="Boost.Polygon">
@@ -33,7 +33,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.point_data.h0"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.point_data.description"></a></span><a class="link" href="point_data.html#geometry.reference.adapted.boost_polygon.point_data.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.point_data.description"></a></span><a class="link" href="point_data.html#geometry.reference.adapted.boost_polygon.point_data.description">Description</a>
</h6>
<p>
Boost.Polygon's points (as well as polygons) can be used by Boost.Geometry.
@@ -42,7 +42,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.point_data.h1"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.point_data.model_of"></a></span><a class="link" href="point_data.html#geometry.reference.adapted.boost_polygon.point_data.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.point_data.model_of"></a></span><a class="link" href="point_data.html#geometry.reference.adapted.boost_polygon.point_data.model_of">Model
of</a>
</h6>
<p>
@@ -50,7 +50,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.point_data.h2"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.point_data.header"></a></span><a class="link" href="point_data.html#geometry.reference.adapted.boost_polygon.point_data.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.point_data.header"></a></span><a class="link" href="point_data.html#geometry.reference.adapted.boost_polygon.point_data.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -61,10 +61,10 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.point_data.h3"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.point_data.example"></a></span><a class="link" href="point_data.html#geometry.reference.adapted.boost_polygon.point_data.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.point_data.example"></a></span><a class="link" href="point_data.html#geometry.reference.adapted.boost_polygon.point_data.example">Example</a>
</h6>
<p>
- Shows how to use Boost.Polygon points within Boost.Geometry
+ Shows how to use Boost.Polygon point_data within Boost.Geometry
</p>
<p>
</p>
@@ -94,8 +94,8 @@ Distance (using Boost.Polygon): 2.82843
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_data.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_data.html
index 8d08aebdad..dcf91ff8d9 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_data.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_data.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Polygon's polygon_data</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../boost_polygon.html" title="Boost.Polygon">
<link rel="prev" href="rectangle_data.html" title="Boost.Polygon's rectangle_data">
@@ -33,16 +33,16 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.polygon_data.h0"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.polygon_data.description"></a></span><a class="link" href="polygon_data.html#geometry.reference.adapted.boost_polygon.polygon_data.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.polygon_data.description"></a></span><a class="link" href="polygon_data.html#geometry.reference.adapted.boost_polygon.polygon_data.description">Description</a>
</h6>
<p>
Boost.Polygon's points (as well as polygons) can be used by Boost.Geometry.
- The two libraries can therefore be used together. Using a boost::polygon::point_data&lt;...&gt;,
+ The two libraries can therefore be used together. Using a boost::polygon::polygon_data&lt;...&gt;,
algorithms from both Boost.Polygon and Boost.Geometry can be called.
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.polygon_data.h1"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.polygon_data.model_of"></a></span><a class="link" href="polygon_data.html#geometry.reference.adapted.boost_polygon.polygon_data.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.polygon_data.model_of"></a></span><a class="link" href="polygon_data.html#geometry.reference.adapted.boost_polygon.polygon_data.model_of">Model
of</a>
</h6>
<p>
@@ -50,7 +50,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.polygon_data.h2"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.polygon_data.header"></a></span><a class="link" href="polygon_data.html#geometry.reference.adapted.boost_polygon.polygon_data.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.polygon_data.header"></a></span><a class="link" href="polygon_data.html#geometry.reference.adapted.boost_polygon.polygon_data.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -61,10 +61,10 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.polygon_data.h3"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.polygon_data.example"></a></span><a class="link" href="polygon_data.html#geometry.reference.adapted.boost_polygon.polygon_data.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.polygon_data.example"></a></span><a class="link" href="polygon_data.html#geometry.reference.adapted.boost_polygon.polygon_data.example">Example</a>
</h6>
<p>
- Shows how to use Boost.Polygon points within Boost.Geometry
+ Shows how to use Boost.Polygon polygon_data within Boost.Geometry
</p>
<p>
</p>
@@ -74,11 +74,24 @@
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">point_data</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">a</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">),</span> <span class="identifier">b</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="number">4</span><span class="special">);</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Distance (using Boost.Geometry): "</span>
- <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Distance (using Boost.Polygon): "</span>
- <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">euclidean_distance</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">polygon_data</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">polygon_traits</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;::</span><span class="identifier">point_type</span> <span class="identifier">point</span><span class="special">;</span>
+
+ <span class="identifier">point</span> <span class="identifier">pts</span><span class="special">[</span><span class="number">5</span><span class="special">]</span> <span class="special">=</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">,</span> <span class="number">10</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">10</span><span class="special">,</span> <span class="number">10</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">10</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span>
+ <span class="special">};</span>
+
+ <span class="identifier">polygon</span> <span class="identifier">poly</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">set_points</span><span class="special">(</span><span class="identifier">poly</span><span class="special">,</span> <span class="identifier">pts</span><span class="special">,</span> <span class="identifier">pts</span><span class="special">+</span><span class="number">5</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Area (using Boost.Geometry): "</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">area</span><span class="special">(</span><span class="identifier">poly</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Area (using Boost.Polygon): "</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">area</span><span class="special">(</span><span class="identifier">poly</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
@@ -88,14 +101,14 @@
<p>
Output:
</p>
-<pre class="programlisting">Distance (using Boost.Geometry): 2.82843
-Distance (using Boost.Polygon): 2.82843
+<pre class="programlisting">Area (using Boost.Geometry): 100
+Area (using Boost.Polygon): 100
</pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_with_holes_data.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_with_holes_data.html
index c85188492a..7c7a8f926e 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_with_holes_data.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/polygon_with_holes_data.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Polygon's polygon_with_holes_data</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../boost_polygon.html" title="Boost.Polygon">
<link rel="prev" href="polygon_data.html" title="Boost.Polygon's polygon_data">
@@ -33,16 +33,16 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.h0"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.description"></a></span><a class="link" href="polygon_with_holes_data.html#geometry.reference.adapted.boost_polygon.polygon_with_holes_data.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.description"></a></span><a class="link" href="polygon_with_holes_data.html#geometry.reference.adapted.boost_polygon.polygon_with_holes_data.description">Description</a>
</h6>
<p>
Boost.Polygon's points (as well as polygons) can be used by Boost.Geometry.
- The two libraries can therefore be used together. Using a boost::polygon::point_data&lt;...&gt;,
+ The two libraries can therefore be used together. Using a boost::polygon::polygon_with_holes_data&lt;...&gt;,
algorithms from both Boost.Polygon and Boost.Geometry can be called.
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.h1"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.model_of"></a></span><a class="link" href="polygon_with_holes_data.html#geometry.reference.adapted.boost_polygon.polygon_with_holes_data.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.model_of"></a></span><a class="link" href="polygon_with_holes_data.html#geometry.reference.adapted.boost_polygon.polygon_with_holes_data.model_of">Model
of</a>
</h6>
<p>
@@ -50,7 +50,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.h2"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.header"></a></span><a class="link" href="polygon_with_holes_data.html#geometry.reference.adapted.boost_polygon.polygon_with_holes_data.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.header"></a></span><a class="link" href="polygon_with_holes_data.html#geometry.reference.adapted.boost_polygon.polygon_with_holes_data.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -61,10 +61,10 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.h3"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.example"></a></span><a class="link" href="polygon_with_holes_data.html#geometry.reference.adapted.boost_polygon.polygon_with_holes_data.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.polygon_with_holes_data.example"></a></span><a class="link" href="polygon_with_holes_data.html#geometry.reference.adapted.boost_polygon.polygon_with_holes_data.example">Example</a>
</h6>
<p>
- Shows how to use Boost.Polygon points within Boost.Geometry
+ Shows how to use Boost.Polygon polygon_with_holes_data within Boost.Geometry
</p>
<p>
</p>
@@ -74,11 +74,36 @@
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">point_data</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">a</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">),</span> <span class="identifier">b</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="number">4</span><span class="special">);</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Distance (using Boost.Geometry): "</span>
- <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Distance (using Boost.Polygon): "</span>
- <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">euclidean_distance</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">polygon_with_holes_data</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">polygon_traits</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;::</span><span class="identifier">point_type</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">polygon_with_holes_traits</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;::</span><span class="identifier">hole_type</span> <span class="identifier">hole</span><span class="special">;</span>
+
+ <span class="identifier">point</span> <span class="identifier">pts</span><span class="special">[</span><span class="number">5</span><span class="special">]</span> <span class="special">=</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">,</span> <span class="number">10</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">10</span><span class="special">,</span> <span class="number">10</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">10</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">)</span>
+ <span class="special">};</span>
+ <span class="identifier">point</span> <span class="identifier">hole_pts</span><span class="special">[</span><span class="number">5</span><span class="special">]</span> <span class="special">=</span> <span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">1</span><span class="special">,</span> <span class="number">1</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">9</span><span class="special">,</span> <span class="number">1</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">9</span><span class="special">,</span> <span class="number">9</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">1</span><span class="special">,</span> <span class="number">9</span><span class="special">),</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="number">1</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>
+ <span class="special">};</span>
+
+ <span class="identifier">hole</span> <span class="identifier">hls</span><span class="special">[</span><span class="number">1</span><span class="special">];</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">set_points</span><span class="special">(</span><span class="identifier">hls</span><span class="special">[</span><span class="number">0</span><span class="special">],</span> <span class="identifier">hole_pts</span><span class="special">,</span> <span class="identifier">hole_pts</span><span class="special">+</span><span class="number">5</span><span class="special">);</span>
+
+ <span class="identifier">polygon</span> <span class="identifier">poly</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">set_points</span><span class="special">(</span><span class="identifier">poly</span><span class="special">,</span> <span class="identifier">pts</span><span class="special">,</span> <span class="identifier">pts</span><span class="special">+</span><span class="number">5</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">set_holes</span><span class="special">(</span><span class="identifier">poly</span><span class="special">,</span> <span class="identifier">hls</span><span class="special">,</span> <span class="identifier">hls</span><span class="special">+</span><span class="number">1</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Area (using Boost.Geometry): "</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">area</span><span class="special">(</span><span class="identifier">poly</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Area (using Boost.Polygon): "</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">area</span><span class="special">(</span><span class="identifier">poly</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
@@ -88,14 +113,14 @@
<p>
Output:
</p>
-<pre class="programlisting">Distance (using Boost.Geometry): 2.82843
-Distance (using Boost.Polygon): 2.82843
+<pre class="programlisting">Area (using Boost.Geometry): 36
+Area (using Boost.Polygon): 36
</pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/rectangle_data.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/rectangle_data.html
index 5d068309c7..8d3b916013 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/rectangle_data.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_polygon/rectangle_data.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Polygon's rectangle_data</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../boost_polygon.html" title="Boost.Polygon">
<link rel="prev" href="point_data.html" title="Boost.Polygon's point_data">
@@ -33,16 +33,16 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.rectangle_data.h0"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.rectangle_data.description"></a></span><a class="link" href="rectangle_data.html#geometry.reference.adapted.boost_polygon.rectangle_data.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.rectangle_data.description"></a></span><a class="link" href="rectangle_data.html#geometry.reference.adapted.boost_polygon.rectangle_data.description">Description</a>
</h6>
<p>
Boost.Polygon's points (as well as polygons) can be used by Boost.Geometry.
- The two libraries can therefore be used together. Using a boost::polygon::point_data&lt;...&gt;,
+ The two libraries can therefore be used together. Using a boost::polygon::rectangle_data&lt;...&gt;,
algorithms from both Boost.Polygon and Boost.Geometry can be called.
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.rectangle_data.h1"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.rectangle_data.model_of"></a></span><a class="link" href="rectangle_data.html#geometry.reference.adapted.boost_polygon.rectangle_data.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.rectangle_data.model_of"></a></span><a class="link" href="rectangle_data.html#geometry.reference.adapted.boost_polygon.rectangle_data.model_of">Model
of</a>
</h6>
<p>
@@ -50,7 +50,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.rectangle_data.h2"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.rectangle_data.header"></a></span><a class="link" href="rectangle_data.html#geometry.reference.adapted.boost_polygon.rectangle_data.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.rectangle_data.header"></a></span><a class="link" href="rectangle_data.html#geometry.reference.adapted.boost_polygon.rectangle_data.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -61,10 +61,10 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_polygon.rectangle_data.h3"></a>
- <span><a name="geometry.reference.adapted.boost_polygon.rectangle_data.example"></a></span><a class="link" href="rectangle_data.html#geometry.reference.adapted.boost_polygon.rectangle_data.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_polygon.rectangle_data.example"></a></span><a class="link" href="rectangle_data.html#geometry.reference.adapted.boost_polygon.rectangle_data.example">Example</a>
</h6>
<p>
- Shows how to use Boost.Polygon points within Boost.Geometry
+ Shows how to use Boost.Polygon rectangle_data within Boost.Geometry
</p>
<p>
</p>
@@ -74,11 +74,14 @@
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">point_data</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">a</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">),</span> <span class="identifier">b</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="number">4</span><span class="special">);</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Distance (using Boost.Geometry): "</span>
- <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Distance (using Boost.Polygon): "</span>
- <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">euclidean_distance</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">rectangle_data</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">rect</span><span class="special">;</span>
+
+ <span class="identifier">rect</span> <span class="identifier">b</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">rect</span><span class="special">&gt;(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">,</span> <span class="number">4</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Area (using Boost.Geometry): "</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">area</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Area (using Boost.Polygon): "</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">::</span><span class="identifier">area</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
@@ -88,14 +91,14 @@
<p>
Output:
</p>
-<pre class="programlisting">Distance (using Boost.Geometry): 2.82843
-Distance (using Boost.Polygon): 2.82843
+<pre class="programlisting">Area (using Boost.Geometry): 4
+Area (using Boost.Polygon): 4
</pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_range.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_range.html
index 58d823b0df..d57e215054 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_range.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_range.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Range</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../adapted.html" title="Adapted models">
<link rel="prev" href="boost_polygon/polygon_with_holes_data.html" title="Boost.Polygon's polygon_with_holes_data">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.adapted.boost_range"></a><a class="link" href="boost_range.html" title="Boost.Range">Boost.Range</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="boost_range/filtered.html">Boost.Range
filtered</a></span></dt>
<dt><span class="section"><a href="boost_range/reversed.html">Boost.Range
@@ -39,8 +39,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/filtered.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/filtered.html
index b1cf6b9dba..a3106d8106 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/filtered.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/filtered.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Range filtered</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../boost_range.html" title="Boost.Range">
<link rel="prev" href="../boost_range.html" title="Boost.Range">
@@ -32,21 +32,21 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.filtered.h0"></a>
- <span><a name="geometry.reference.adapted.boost_range.filtered.description"></a></span><a class="link" href="filtered.html#geometry.reference.adapted.boost_range.filtered.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.filtered.description"></a></span><a class="link" href="filtered.html#geometry.reference.adapted.boost_range.filtered.description">Description</a>
</h6>
<p>
Boost.Range filtered range adaptor filters a range.
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.filtered.h1"></a>
- <span><a name="geometry.reference.adapted.boost_range.filtered.model_of"></a></span><a class="link" href="filtered.html#geometry.reference.adapted.boost_range.filtered.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.filtered.model_of"></a></span><a class="link" href="filtered.html#geometry.reference.adapted.boost_range.filtered.model_of">Model
of</a>
</h6>
<p>
The Boost.Range filtered range adaptor takes over the model of the original
geometry, which might be:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
a linestring
</li>
@@ -65,7 +65,7 @@
</ul></div>
<h6>
<a name="geometry.reference.adapted.boost_range.filtered.h2"></a>
- <span><a name="geometry.reference.adapted.boost_range.filtered.header"></a></span><a class="link" href="filtered.html#geometry.reference.adapted.boost_range.filtered.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.filtered.header"></a></span><a class="link" href="filtered.html#geometry.reference.adapted.boost_range.filtered.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_range</span><span class="special">/</span><span class="identifier">filtered</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -76,7 +76,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.filtered.h3"></a>
- <span><a name="geometry.reference.adapted.boost_range.filtered.example"></a></span><a class="link" href="filtered.html#geometry.reference.adapted.boost_range.filtered.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.filtered.example"></a></span><a class="link" href="filtered.html#geometry.reference.adapted.boost_range.filtered.example">Example</a>
</h6>
<p>
Shows how to use a Boost.Geometry linestring, filtered by Boost.Range
@@ -136,8 +136,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/reversed.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/reversed.html
index d196367430..d776f7a517 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/reversed.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/reversed.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Range reversed</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../boost_range.html" title="Boost.Range">
<link rel="prev" href="filtered.html" title="Boost.Range filtered">
@@ -32,21 +32,21 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.reversed.h0"></a>
- <span><a name="geometry.reference.adapted.boost_range.reversed.description"></a></span><a class="link" href="reversed.html#geometry.reference.adapted.boost_range.reversed.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.reversed.description"></a></span><a class="link" href="reversed.html#geometry.reference.adapted.boost_range.reversed.description">Description</a>
</h6>
<p>
Boost.Range reversed range adaptor reverses a range.
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.reversed.h1"></a>
- <span><a name="geometry.reference.adapted.boost_range.reversed.model_of"></a></span><a class="link" href="reversed.html#geometry.reference.adapted.boost_range.reversed.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.reversed.model_of"></a></span><a class="link" href="reversed.html#geometry.reference.adapted.boost_range.reversed.model_of">Model
of</a>
</h6>
<p>
The Boost.Range reversed range adaptor takes over the model of the original
geometry, which might be:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
a linestring
</li>
@@ -65,7 +65,7 @@
</ul></div>
<h6>
<a name="geometry.reference.adapted.boost_range.reversed.h2"></a>
- <span><a name="geometry.reference.adapted.boost_range.reversed.header"></a></span><a class="link" href="reversed.html#geometry.reference.adapted.boost_range.reversed.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.reversed.header"></a></span><a class="link" href="reversed.html#geometry.reference.adapted.boost_range.reversed.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_range</span><span class="special">/</span><span class="identifier">reversed</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -76,7 +76,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.reversed.h3"></a>
- <span><a name="geometry.reference.adapted.boost_range.reversed.example"></a></span><a class="link" href="reversed.html#geometry.reference.adapted.boost_range.reversed.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.reversed.example"></a></span><a class="link" href="reversed.html#geometry.reference.adapted.boost_range.reversed.example">Example</a>
</h6>
<p>
Shows how to use a Boost.Geometry linestring, reversed by Boost.Range
@@ -115,8 +115,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/sliced.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/sliced.html
index c0e441ff04..c26e12976b 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/sliced.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/sliced.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Range sliced</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../boost_range.html" title="Boost.Range">
<link rel="prev" href="reversed.html" title="Boost.Range reversed">
@@ -32,7 +32,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.sliced.h0"></a>
- <span><a name="geometry.reference.adapted.boost_range.sliced.description"></a></span><a class="link" href="sliced.html#geometry.reference.adapted.boost_range.sliced.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.sliced.description"></a></span><a class="link" href="sliced.html#geometry.reference.adapted.boost_range.sliced.description">Description</a>
</h6>
<p>
Boost.Range sliced range adaptor creates a slice of a range (usually
@@ -40,14 +40,14 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.sliced.h1"></a>
- <span><a name="geometry.reference.adapted.boost_range.sliced.model_of"></a></span><a class="link" href="sliced.html#geometry.reference.adapted.boost_range.sliced.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.sliced.model_of"></a></span><a class="link" href="sliced.html#geometry.reference.adapted.boost_range.sliced.model_of">Model
of</a>
</h6>
<p>
The Boost.Range sliced range adaptor takes over the model of the original
geometry, which might be:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
a linestring
</li>
@@ -66,7 +66,7 @@
</ul></div>
<h6>
<a name="geometry.reference.adapted.boost_range.sliced.h2"></a>
- <span><a name="geometry.reference.adapted.boost_range.sliced.header"></a></span><a class="link" href="sliced.html#geometry.reference.adapted.boost_range.sliced.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.sliced.header"></a></span><a class="link" href="sliced.html#geometry.reference.adapted.boost_range.sliced.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_range</span><span class="special">/</span><span class="identifier">sliced</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -77,7 +77,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.sliced.h3"></a>
- <span><a name="geometry.reference.adapted.boost_range.sliced.example"></a></span><a class="link" href="sliced.html#geometry.reference.adapted.boost_range.sliced.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.sliced.example"></a></span><a class="link" href="sliced.html#geometry.reference.adapted.boost_range.sliced.example">Example</a>
</h6>
<p>
Shows how to use a Boost.Geometry linestring, sliced by Boost.Range adaptor
@@ -122,8 +122,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/strided.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/strided.html
index f78c84c1c0..662303be44 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_range/strided.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_range/strided.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Range strided</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../boost_range.html" title="Boost.Range">
<link rel="prev" href="sliced.html" title="Boost.Range sliced">
@@ -32,7 +32,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.strided.h0"></a>
- <span><a name="geometry.reference.adapted.boost_range.strided.description"></a></span><a class="link" href="strided.html#geometry.reference.adapted.boost_range.strided.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.strided.description"></a></span><a class="link" href="strided.html#geometry.reference.adapted.boost_range.strided.description">Description</a>
</h6>
<p>
Boost.Range strided range adaptor makes a strided range (usually begin
@@ -40,14 +40,14 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.strided.h1"></a>
- <span><a name="geometry.reference.adapted.boost_range.strided.model_of"></a></span><a class="link" href="strided.html#geometry.reference.adapted.boost_range.strided.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.strided.model_of"></a></span><a class="link" href="strided.html#geometry.reference.adapted.boost_range.strided.model_of">Model
of</a>
</h6>
<p>
The Boost.Range strided range adaptor takes over the model of the original
geometry, which might be:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
a linestring
</li>
@@ -66,7 +66,7 @@
</ul></div>
<h6>
<a name="geometry.reference.adapted.boost_range.strided.h2"></a>
- <span><a name="geometry.reference.adapted.boost_range.strided.header"></a></span><a class="link" href="strided.html#geometry.reference.adapted.boost_range.strided.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.strided.header"></a></span><a class="link" href="strided.html#geometry.reference.adapted.boost_range.strided.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_range</span><span class="special">/</span><span class="identifier">strided</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -77,7 +77,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_range.strided.h3"></a>
- <span><a name="geometry.reference.adapted.boost_range.strided.example"></a></span><a class="link" href="strided.html#geometry.reference.adapted.boost_range.strided.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_range.strided.example"></a></span><a class="link" href="strided.html#geometry.reference.adapted.boost_range.strided.example">Example</a>
</h6>
<p>
Shows how to use a Boost.Geometry ring, strided by Boost.Range adaptor
@@ -128,8 +128,8 @@ Strided: ((0, 0), (0, 2), (2, 2), (0, 0))
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/boost_tuple.html b/libs/geometry/doc/html/geometry/reference/adapted/boost_tuple.html
index 997f1f1cb2..74ca28f4bd 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/boost_tuple.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/boost_tuple.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Tuple</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../adapted.html" title="Adapted models">
<link rel="prev" href="boost_fusion.html" title="Boost.Fusion">
@@ -32,7 +32,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_tuple.h0"></a>
- <span><a name="geometry.reference.adapted.boost_tuple.description"></a></span><a class="link" href="boost_tuple.html#geometry.reference.adapted.boost_tuple.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_tuple.description"></a></span><a class="link" href="boost_tuple.html#geometry.reference.adapted.boost_tuple.description">Description</a>
</h6>
<p>
Boost.Tuple fixed sized collections, such as boost::tuple&lt;double, double&gt;,
@@ -54,7 +54,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_tuple.h1"></a>
- <span><a name="geometry.reference.adapted.boost_tuple.model_of"></a></span><a class="link" href="boost_tuple.html#geometry.reference.adapted.boost_tuple.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.boost_tuple.model_of"></a></span><a class="link" href="boost_tuple.html#geometry.reference.adapted.boost_tuple.model_of">Model
of</a>
</h6>
<p>
@@ -62,7 +62,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_tuple.h2"></a>
- <span><a name="geometry.reference.adapted.boost_tuple.header"></a></span><a class="link" href="boost_tuple.html#geometry.reference.adapted.boost_tuple.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_tuple.header"></a></span><a class="link" href="boost_tuple.html#geometry.reference.adapted.boost_tuple.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -73,7 +73,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.boost_tuple.h3"></a>
- <span><a name="geometry.reference.adapted.boost_tuple.example"></a></span><a class="link" href="boost_tuple.html#geometry.reference.adapted.boost_tuple.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.boost_tuple.example"></a></span><a class="link" href="boost_tuple.html#geometry.reference.adapted.boost_tuple.example">Example</a>
</h6>
<p>
Shows how to use Boost.Tuple points in Boost.Geometry
@@ -120,8 +120,8 @@ Contains (1.5, 2.5): false
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/c_array.html b/libs/geometry/doc/html/geometry/reference/adapted/c_array.html
index 4e7c7f3fab..0249984903 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/c_array.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/c_array.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>C array</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../adapted.html" title="Adapted models">
<link rel="prev" href="../adapted.html" title="Adapted models">
@@ -31,7 +31,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.c_array.h0"></a>
- <span><a name="geometry.reference.adapted.c_array.description"></a></span><a class="link" href="c_array.html#geometry.reference.adapted.c_array.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.c_array.description"></a></span><a class="link" href="c_array.html#geometry.reference.adapted.c_array.description">Description</a>
</h6>
<p>
C arrays, such as double[2] or int[3], are (optionally) adapted to the
@@ -46,7 +46,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.c_array.h1"></a>
- <span><a name="geometry.reference.adapted.c_array.model_of"></a></span><a class="link" href="c_array.html#geometry.reference.adapted.c_array.model_of">Model
+ <span class="phrase"><a name="geometry.reference.adapted.c_array.model_of"></a></span><a class="link" href="c_array.html#geometry.reference.adapted.c_array.model_of">Model
of</a>
</h6>
<p>
@@ -54,7 +54,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.c_array.h2"></a>
- <span><a name="geometry.reference.adapted.c_array.header"></a></span><a class="link" href="c_array.html#geometry.reference.adapted.c_array.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.c_array.header"></a></span><a class="link" href="c_array.html#geometry.reference.adapted.c_array.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">c_array</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -65,7 +65,7 @@
</p>
<h6>
<a name="geometry.reference.adapted.c_array.h3"></a>
- <span><a name="geometry.reference.adapted.c_array.example"></a></span><a class="link" href="c_array.html#geometry.reference.adapted.c_array.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.c_array.example"></a></span><a class="link" href="c_array.html#geometry.reference.adapted.c_array.example">Example</a>
</h6>
<p>
Small example showing the combination of an array with a Boost.Geometry
@@ -99,8 +99,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register.html b/libs/geometry/doc/html/geometry/reference/adapted/register.html
index 9814498c40..6ce3342677 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Macro's for adaption</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../adapted.html" title="Adapted models">
<link rel="prev" href="boost_range/strided.html" title="Boost.Range strided">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.adapted.register"></a><a class="link" href="register.html" title="Macro's for adaption">Macro's for adaption</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="register/boost_geometry_register_box.html">BOOST_GEOMETRY_REGISTER_BOX</a></span></dt>
<dt><span class="section"><a href="register/boost_geometry_register_box_2d_4values.html">BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES</a></span></dt>
<dt><span class="section"><a href="register/boost_geometry_register_box_templated.html">BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED</a></span></dt>
@@ -50,8 +50,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box.html
index ff1e2018da..c1778be87a 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_BOX</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="../register.html" title="Macro's for adaption">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_box"></a><a class="link" href="boost_geometry_register_box.html" title="BOOST_GEOMETRY_REGISTER_BOX">BOOST_GEOMETRY_REGISTER_BOX</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id804797"></a>
+ <a class="indexterm" name="idp106821344"></a>
Macro to register a box.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box.description"></a></span><a class="link" href="boost_geometry_register_box.html#geometry.reference.adapted.register.boost_geometry_register_box.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box.description"></a></span><a class="link" href="boost_geometry_register_box.html#geometry.reference.adapted.register.boost_geometry_register_box.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_BOX registers a box such that it is
@@ -42,16 +42,17 @@ Macro to register a box.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box.synopsis"></a></span><a class="link" href="boost_geometry_register_box.html#geometry.reference.adapted.register.boost_geometry_register_box.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box.synopsis"></a></span><a class="link" href="boost_geometry_register_box.html#geometry.reference.adapted.register.boost_geometry_register_box.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_BOX</span><span class="special">(</span><span class="identifier">Box</span><span class="special">,</span> <span class="identifier">Point</span><span class="special">,</span> <span class="identifier">MinCorner</span><span class="special">,</span> <span class="identifier">MaxCorner</span><span class="special">)</span></pre>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_BOX</span><span class="special">(</span><span class="identifier">Box</span><span class="special">,</span> <span class="identifier">Point</span><span class="special">,</span> <span class="identifier">MinCorner</span><span class="special">,</span>
+ <span class="identifier">MaxCorner</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box.parameters"></a></span><a class="link" href="boost_geometry_register_box.html#geometry.reference.adapted.register.boost_geometry_register_box.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box.parameters"></a></span><a class="link" href="boost_geometry_register_box.html#geometry.reference.adapted.register.boost_geometry_register_box.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -123,14 +124,14 @@ Macro to register a box.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box.header"></a></span><a class="link" href="boost_geometry_register_box.html#geometry.reference.adapted.register.boost_geometry_register_box.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box.header"></a></span><a class="link" href="boost_geometry_register_box.html#geometry.reference.adapted.register.boost_geometry_register_box.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box.example"></a></span><a class="link" href="boost_geometry_register_box.html#geometry.reference.adapted.register.boost_geometry_register_box.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box.example"></a></span><a class="link" href="boost_geometry_register_box.html#geometry.reference.adapted.register.boost_geometry_register_box.example">Example</a>
</h6>
<p>
Show the use of the macro BOOST_GEOMETRY_REGISTER_BOX
@@ -175,8 +176,8 @@ Macro to register a box.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_2d_4values.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_2d_4values.html
index 7c0c092083..3f44f2e68c 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_2d_4values.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_2d_4values.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_box.html" title="BOOST_GEOMETRY_REGISTER_BOX">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values"></a><a class="link" href="boost_geometry_register_box_2d_4values.html" title="BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES">BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id805870"></a>
+ <a class="indexterm" name="idp106949152"></a>
Macro to register a box.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.description"></a></span><a class="link" href="boost_geometry_register_box_2d_4values.html#geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.description"></a></span><a class="link" href="boost_geometry_register_box_2d_4values.html#geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES registers a box such
@@ -41,16 +41,17 @@ Macro to register a box.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.synopsis"></a></span><a class="link" href="boost_geometry_register_box_2d_4values.html#geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.synopsis"></a></span><a class="link" href="boost_geometry_register_box_2d_4values.html#geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES</span><span class="special">(</span><span class="identifier">Box</span><span class="special">,</span> <span class="identifier">Point</span><span class="special">,</span> <span class="identifier">Left</span><span class="special">,</span> <span class="identifier">Bottom</span><span class="special">,</span> <span class="identifier">Right</span><span class="special">,</span> <span class="identifier">Top</span><span class="special">)</span></pre>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES</span><span class="special">(</span><span class="identifier">Box</span><span class="special">,</span> <span class="identifier">Point</span><span class="special">,</span> <span class="identifier">Left</span><span class="special">,</span>
+ <span class="identifier">Bottom</span><span class="special">,</span> <span class="identifier">Right</span><span class="special">,</span> <span class="identifier">Top</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.parameters"></a></span><a class="link" href="boost_geometry_register_box_2d_4values.html#geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.parameters"></a></span><a class="link" href="boost_geometry_register_box_2d_4values.html#geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -148,14 +149,14 @@ Macro to register a box.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.header"></a></span><a class="link" href="boost_geometry_register_box_2d_4values.html#geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.header"></a></span><a class="link" href="boost_geometry_register_box_2d_4values.html#geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.example"></a></span><a class="link" href="boost_geometry_register_box_2d_4values.html#geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.example"></a></span><a class="link" href="boost_geometry_register_box_2d_4values.html#geometry.reference.adapted.register.boost_geometry_register_box_2d_4values.example">Example</a>
</h6>
<p>
Show the use of the macro BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES
@@ -200,8 +201,8 @@ Macro to register a box.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_templated.html
index 24a8adc9d8..88b9fcd7e5 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_box_templated.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_box_2d_4values.html" title="BOOST_GEOMETRY_REGISTER_BOX_2D_4VALUES">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_box_templated"></a><a class="link" href="boost_geometry_register_box_templated.html" title="BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED">BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id807048"></a>
+ <a class="indexterm" name="idp107088544"></a>
Macro to register a box.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.description"></a></span><a class="link" href="boost_geometry_register_box_templated.html#geometry.reference.adapted.register.boost_geometry_register_box_templated.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.description"></a></span><a class="link" href="boost_geometry_register_box_templated.html#geometry.reference.adapted.register.boost_geometry_register_box_templated.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED registers a box such
@@ -44,7 +44,7 @@ Macro to register a box.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_box_templated.html#geometry.reference.adapted.register.boost_geometry_register_box_templated.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_box_templated.html#geometry.reference.adapted.register.boost_geometry_register_box_templated.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -53,7 +53,7 @@ Macro to register a box.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.parameters"></a></span><a class="link" href="boost_geometry_register_box_templated.html#geometry.reference.adapted.register.boost_geometry_register_box_templated.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.parameters"></a></span><a class="link" href="boost_geometry_register_box_templated.html#geometry.reference.adapted.register.boost_geometry_register_box_templated.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -113,14 +113,14 @@ Macro to register a box.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.header"></a></span><a class="link" href="boost_geometry_register_box_templated.html#geometry.reference.adapted.register.boost_geometry_register_box_templated.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.header"></a></span><a class="link" href="boost_geometry_register_box_templated.html#geometry.reference.adapted.register.boost_geometry_register_box_templated.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.example"></a></span><a class="link" href="boost_geometry_register_box_templated.html#geometry.reference.adapted.register.boost_geometry_register_box_templated.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_box_templated.example"></a></span><a class="link" href="boost_geometry_register_box_templated.html#geometry.reference.adapted.register.boost_geometry_register_box_templated.example">Example</a>
</h6>
<p>
Show the use of the macro BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED
@@ -160,8 +160,8 @@ Macro to register a box.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring.html
index 848d45e957..2bf5c375e0 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_LINESTRING</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_box_templated.html" title="BOOST_GEOMETRY_REGISTER_BOX_TEMPLATED">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring"></a><a class="link" href="boost_geometry_register_linestring.html" title="BOOST_GEOMETRY_REGISTER_LINESTRING">BOOST_GEOMETRY_REGISTER_LINESTRING</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id808063"></a>
+ <a class="indexterm" name="idp107209968"></a>
Macro to register a linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_linestring.description"></a></span><a class="link" href="boost_geometry_register_linestring.html#geometry.reference.adapted.register.boost_geometry_register_linestring.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_linestring.description"></a></span><a class="link" href="boost_geometry_register_linestring.html#geometry.reference.adapted.register.boost_geometry_register_linestring.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_LINESTRING registers a linestring such
@@ -42,7 +42,7 @@ Macro to register a linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_linestring.synopsis"></a></span><a class="link" href="boost_geometry_register_linestring.html#geometry.reference.adapted.register.boost_geometry_register_linestring.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_linestring.synopsis"></a></span><a class="link" href="boost_geometry_register_linestring.html#geometry.reference.adapted.register.boost_geometry_register_linestring.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,7 +51,7 @@ Macro to register a linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_linestring.parameters"></a></span><a class="link" href="boost_geometry_register_linestring.html#geometry.reference.adapted.register.boost_geometry_register_linestring.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_linestring.parameters"></a></span><a class="link" href="boost_geometry_register_linestring.html#geometry.reference.adapted.register.boost_geometry_register_linestring.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -85,14 +85,14 @@ Macro to register a linestring.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_linestring.header"></a></span><a class="link" href="boost_geometry_register_linestring.html#geometry.reference.adapted.register.boost_geometry_register_linestring.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_linestring.header"></a></span><a class="link" href="boost_geometry_register_linestring.html#geometry.reference.adapted.register.boost_geometry_register_linestring.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_linestring.example"></a></span><a class="link" href="boost_geometry_register_linestring.html#geometry.reference.adapted.register.boost_geometry_register_linestring.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_linestring.example"></a></span><a class="link" href="boost_geometry_register_linestring.html#geometry.reference.adapted.register.boost_geometry_register_linestring.example">Example</a>
</h6>
<p>
Show the use of BOOST_GEOMETRY_REGISTER_LINESTRING
@@ -140,8 +140,8 @@ WKT: LINESTRING(1 1,2 2,3 1)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring_templated.html
index 232caa16d4..d9fdd06e53 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_linestring_templated.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_linestring.html" title="BOOST_GEOMETRY_REGISTER_LINESTRING">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated"></a><a class="link" href="boost_geometry_register_linestring_templated.html" title="BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED">BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id809120"></a>
+ <a class="indexterm" name="idp107336368"></a>
Macro to register a templated linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.description"></a></span><a class="link" href="boost_geometry_register_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_linestring_templated.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.description"></a></span><a class="link" href="boost_geometry_register_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_linestring_templated.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED registers a templated
@@ -45,7 +45,7 @@ Macro to register a templated linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_linestring_templated.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_linestring_templated.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Macro to register a templated linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.parameters"></a></span><a class="link" href="boost_geometry_register_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_linestring_templated.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.parameters"></a></span><a class="link" href="boost_geometry_register_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_linestring_templated.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -88,14 +88,14 @@ Macro to register a templated linestring.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.header"></a></span><a class="link" href="boost_geometry_register_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_linestring_templated.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.header"></a></span><a class="link" href="boost_geometry_register_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_linestring_templated.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.example"></a></span><a class="link" href="boost_geometry_register_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_linestring_templated.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_linestring_templated.example"></a></span><a class="link" href="boost_geometry_register_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_linestring_templated.example">Example</a>
</h6>
<p>
Show the use of the macro BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED
@@ -136,8 +136,8 @@ Line: ((1, 1), (2, 2))
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring.html
index b02997baf2..d5f22954a6 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_linestring_templated.html" title="BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring"></a><a class="link" href="boost_geometry_register_multi_linestring.html" title="BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING">BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id810166"></a>
+ <a class="indexterm" name="idp107462096"></a>
Macro to register a multi_linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.description"></a></span><a class="link" href="boost_geometry_register_multi_linestring.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.description"></a></span><a class="link" href="boost_geometry_register_multi_linestring.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING registers a multi_linestring
@@ -42,7 +42,7 @@ Macro to register a multi_linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_linestring.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_linestring.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,7 +51,7 @@ Macro to register a multi_linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.parameters"></a></span><a class="link" href="boost_geometry_register_multi_linestring.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.parameters"></a></span><a class="link" href="boost_geometry_register_multi_linestring.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -85,14 +85,14 @@ Macro to register a multi_linestring.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.header"></a></span><a class="link" href="boost_geometry_register_multi_linestring.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.header"></a></span><a class="link" href="boost_geometry_register_multi_linestring.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.example"></a></span><a class="link" href="boost_geometry_register_multi_linestring.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring.example"></a></span><a class="link" href="boost_geometry_register_multi_linestring.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring.example">Example</a>
</h6>
<p>
Show the use of the macro BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING
@@ -104,7 +104,7 @@ Macro to register a multi_linestring.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span>
<span class="special">&lt;</span>
@@ -137,8 +137,8 @@ Macro to register a multi_linestring.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring_templated.html
index 6f28594e41..e079f6917d 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_linestring_templated.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_multi_linestring.html" title="BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated"></a><a class="link" href="boost_geometry_register_multi_linestring_templated.html" title="BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED">BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id811254"></a>
+ <a class="indexterm" name="idp107589648"></a>
Macro to register a templated multi_linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.description"></a></span><a class="link" href="boost_geometry_register_multi_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.description"></a></span><a class="link" href="boost_geometry_register_multi_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED registers
@@ -45,7 +45,7 @@ Macro to register a templated multi_linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Macro to register a templated multi_linestring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.parameters"></a></span><a class="link" href="boost_geometry_register_multi_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.parameters"></a></span><a class="link" href="boost_geometry_register_multi_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -88,14 +88,14 @@ Macro to register a templated multi_linestring.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.header"></a></span><a class="link" href="boost_geometry_register_multi_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.header"></a></span><a class="link" href="boost_geometry_register_multi_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.example"></a></span><a class="link" href="boost_geometry_register_multi_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.example"></a></span><a class="link" href="boost_geometry_register_multi_linestring_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_linestring_templated.example">Example</a>
</h6>
<p>
[register_multi_linestring_templated] [register_multi_linestring_templated_output]
@@ -103,8 +103,8 @@ Macro to register a templated multi_linestring.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point.html
index bba278a9f4..1c813743d5 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_MULTI_POINT</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_multi_linestring_templated.html" title="BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING_TEMPLATED">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point"></a><a class="link" href="boost_geometry_register_multi_point.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POINT">BOOST_GEOMETRY_REGISTER_MULTI_POINT</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id811611"></a>
+ <a class="indexterm" name="idp107628912"></a>
Macro to register a multi_point.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.description"></a></span><a class="link" href="boost_geometry_register_multi_point.html#geometry.reference.adapted.register.boost_geometry_register_multi_point.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.description"></a></span><a class="link" href="boost_geometry_register_multi_point.html#geometry.reference.adapted.register.boost_geometry_register_multi_point.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_MULTI_POINT registers a multi_point
@@ -42,7 +42,7 @@ Macro to register a multi_point.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_point.html#geometry.reference.adapted.register.boost_geometry_register_multi_point.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_point.html#geometry.reference.adapted.register.boost_geometry_register_multi_point.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,7 +51,7 @@ Macro to register a multi_point.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.parameters"></a></span><a class="link" href="boost_geometry_register_multi_point.html#geometry.reference.adapted.register.boost_geometry_register_multi_point.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.parameters"></a></span><a class="link" href="boost_geometry_register_multi_point.html#geometry.reference.adapted.register.boost_geometry_register_multi_point.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -85,14 +85,14 @@ Macro to register a multi_point.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.header"></a></span><a class="link" href="boost_geometry_register_multi_point.html#geometry.reference.adapted.register.boost_geometry_register_multi_point.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.header"></a></span><a class="link" href="boost_geometry_register_multi_point.html#geometry.reference.adapted.register.boost_geometry_register_multi_point.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.example"></a></span><a class="link" href="boost_geometry_register_multi_point.html#geometry.reference.adapted.register.boost_geometry_register_multi_point.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point.example"></a></span><a class="link" href="boost_geometry_register_multi_point.html#geometry.reference.adapted.register.boost_geometry_register_multi_point.example">Example</a>
</h6>
<p>
Show the use of the macro BOOST_GEOMETRY_REGISTER_MULTI_POINT
@@ -102,8 +102,7 @@ Macro to register a multi_point.
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tuple</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">point_type</span><span class="special">;</span>
@@ -133,8 +132,8 @@ Macro to register a multi_point.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point_templated.html
index d524946064..4a598b5d43 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_point_templated.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_multi_point.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POINT">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated"></a><a class="link" href="boost_geometry_register_multi_point_templated.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED">BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id812646"></a>
+ <a class="indexterm" name="idp107741536"></a>
Macro to register a templated multi_point.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.description"></a></span><a class="link" href="boost_geometry_register_multi_point_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.description"></a></span><a class="link" href="boost_geometry_register_multi_point_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED registers a templated
@@ -45,7 +45,7 @@ Macro to register a templated multi_point.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_point_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_point_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Macro to register a templated multi_point.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.parameters"></a></span><a class="link" href="boost_geometry_register_multi_point_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.parameters"></a></span><a class="link" href="boost_geometry_register_multi_point_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -88,14 +88,14 @@ Macro to register a templated multi_point.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.header"></a></span><a class="link" href="boost_geometry_register_multi_point_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.header"></a></span><a class="link" href="boost_geometry_register_multi_point_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.example"></a></span><a class="link" href="boost_geometry_register_multi_point_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.example"></a></span><a class="link" href="boost_geometry_register_multi_point_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_point_templated.example">Example</a>
</h6>
<p>
Show the use of the macro BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED
@@ -105,8 +105,7 @@ Macro to register a templated multi_point.
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="identifier">BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">deque</span><span class="special">)</span>
@@ -136,8 +135,8 @@ Macro to register a templated multi_point.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon.html
index 7cc4c5dcc9..413f686519 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_MULTI_POLYGON</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_multi_point_templated.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon"></a><a class="link" href="boost_geometry_register_multi_polygon.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POLYGON">BOOST_GEOMETRY_REGISTER_MULTI_POLYGON</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id813704"></a>
+ <a class="indexterm" name="idp107857120"></a>
Macro to register a multi_polygon.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.description"></a></span><a class="link" href="boost_geometry_register_multi_polygon.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.description"></a></span><a class="link" href="boost_geometry_register_multi_polygon.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_MULTI_POLYGON registers a multi_polygon
@@ -42,7 +42,7 @@ Macro to register a multi_polygon.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_polygon.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_polygon.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,7 +51,7 @@ Macro to register a multi_polygon.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.parameters"></a></span><a class="link" href="boost_geometry_register_multi_polygon.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.parameters"></a></span><a class="link" href="boost_geometry_register_multi_polygon.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -85,14 +85,14 @@ Macro to register a multi_polygon.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.header"></a></span><a class="link" href="boost_geometry_register_multi_polygon.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.header"></a></span><a class="link" href="boost_geometry_register_multi_polygon.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.example"></a></span><a class="link" href="boost_geometry_register_multi_polygon.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon.example"></a></span><a class="link" href="boost_geometry_register_multi_polygon.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon.example">Example</a>
</h6>
<p>
Show the use of the macro BOOST_GEOMETRY_REGISTER_MULTI_POLYGON
@@ -104,7 +104,7 @@ Macro to register a multi_polygon.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span>
<span class="special">&lt;</span>
@@ -137,8 +137,8 @@ Macro to register a multi_polygon.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon_templated.html
index af9326de48..d4fc7785d1 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_multi_polygon_templated.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_multi_polygon.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POLYGON">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated"></a><a class="link" href="boost_geometry_register_multi_polygon_templated.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED">BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id814789"></a>
+ <a class="indexterm" name="idp107984576"></a>
Macro to register a templated multi_polygon.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.description"></a></span><a class="link" href="boost_geometry_register_multi_polygon_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.description"></a></span><a class="link" href="boost_geometry_register_multi_polygon_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED registers a
@@ -45,7 +45,7 @@ Macro to register a templated multi_polygon.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_polygon_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_multi_polygon_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Macro to register a templated multi_polygon.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.parameters"></a></span><a class="link" href="boost_geometry_register_multi_polygon_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.parameters"></a></span><a class="link" href="boost_geometry_register_multi_polygon_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -88,14 +88,14 @@ Macro to register a templated multi_polygon.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.header"></a></span><a class="link" href="boost_geometry_register_multi_polygon_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.header"></a></span><a class="link" href="boost_geometry_register_multi_polygon_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.example"></a></span><a class="link" href="boost_geometry_register_multi_polygon_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.example"></a></span><a class="link" href="boost_geometry_register_multi_polygon_templated.html#geometry.reference.adapted.register.boost_geometry_register_multi_polygon_templated.example">Example</a>
</h6>
<p>
[register_multi_polygon_templated] [register_multi_polygon_templated_output]
@@ -103,8 +103,8 @@ Macro to register a templated multi_polygon.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d.html
index 934d98112d..e740734782 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_POINT_2D</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_multi_polygon_templated.html" title="BOOST_GEOMETRY_REGISTER_MULTI_POLYGON_TEMPLATED">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d"></a><a class="link" href="boost_geometry_register_point_2d.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D">BOOST_GEOMETRY_REGISTER_POINT_2D</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id815141"></a>
+ <a class="indexterm" name="idp108023792"></a>
Macro to register a 2D point type.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.description"></a></span><a class="link" href="boost_geometry_register_point_2d.html#geometry.reference.adapted.register.boost_geometry_register_point_2d.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.description"></a></span><a class="link" href="boost_geometry_register_point_2d.html#geometry.reference.adapted.register.boost_geometry_register_point_2d.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_POINT_2D registers a two-dimensional
@@ -41,16 +41,17 @@ Macro to register a 2D point type.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.synopsis"></a></span><a class="link" href="boost_geometry_register_point_2d.html#geometry.reference.adapted.register.boost_geometry_register_point_2d.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.synopsis"></a></span><a class="link" href="boost_geometry_register_point_2d.html#geometry.reference.adapted.register.boost_geometry_register_point_2d.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_2D</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span> <span class="identifier">Field0</span><span class="special">,</span> <span class="identifier">Field1</span><span class="special">)</span></pre>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_2D</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span>
+ <span class="identifier">Field0</span><span class="special">,</span> <span class="identifier">Field1</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.parameters"></a></span><a class="link" href="boost_geometry_register_point_2d.html#geometry.reference.adapted.register.boost_geometry_register_point_2d.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.parameters"></a></span><a class="link" href="boost_geometry_register_point_2d.html#geometry.reference.adapted.register.boost_geometry_register_point_2d.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -134,7 +135,7 @@ Macro to register a 2D point type.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.header"></a></span><a class="link" href="boost_geometry_register_point_2d.html#geometry.reference.adapted.register.boost_geometry_register_point_2d.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.header"></a></span><a class="link" href="boost_geometry_register_point_2d.html#geometry.reference.adapted.register.boost_geometry_register_point_2d.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -159,7 +160,7 @@ Macro to register a 2D point type.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.examples"></a></span><a class="link" href="boost_geometry_register_point_2d.html#geometry.reference.adapted.register.boost_geometry_register_point_2d.examples">Examples</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d.examples"></a></span><a class="link" href="boost_geometry_register_point_2d.html#geometry.reference.adapted.register.boost_geometry_register_point_2d.examples">Examples</a>
</h6>
<p>
Show the use of the macro BOOST_GEOMETRY_REGISTER_POINT_2D
@@ -226,8 +227,8 @@ Macro to register a 2D point type.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_const.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_const.html
index 1850e12841..314cb0a30c 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_const.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_const.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_POINT_2D_CONST</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_point_2d.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const"></a><a class="link" href="boost_geometry_register_point_2d_const.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D_CONST">BOOST_GEOMETRY_REGISTER_POINT_2D_CONST</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id816280"></a>
+ <a class="indexterm" name="idp108156880"></a>
Macro to register a 2D point type (const version)
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.description"></a></span><a class="link" href="boost_geometry_register_point_2d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_const.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.description"></a></span><a class="link" href="boost_geometry_register_point_2d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_const.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_POINT_2D_CONST registers a two-dimensional
@@ -42,16 +42,17 @@ Macro to register a 2D point type (const version)
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.synopsis"></a></span><a class="link" href="boost_geometry_register_point_2d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_const.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.synopsis"></a></span><a class="link" href="boost_geometry_register_point_2d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_const.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_2D_CONST</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span> <span class="identifier">Field0</span><span class="special">,</span> <span class="identifier">Field1</span><span class="special">)</span></pre>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_2D_CONST</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span>
+ <span class="identifier">Field0</span><span class="special">,</span> <span class="identifier">Field1</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.parameters"></a></span><a class="link" href="boost_geometry_register_point_2d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_const.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.parameters"></a></span><a class="link" href="boost_geometry_register_point_2d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_const.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -135,7 +136,7 @@ Macro to register a 2D point type (const version)
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.header"></a></span><a class="link" href="boost_geometry_register_point_2d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_const.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_const.header"></a></span><a class="link" href="boost_geometry_register_point_2d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_const.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -143,8 +144,8 @@ Macro to register a 2D point type (const version)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_get_set.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_get_set.html
index 243a05c877..1c83601802 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_get_set.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_2d_get_set.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_point_2d_const.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D_CONST">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set"></a><a class="link" href="boost_geometry_register_point_2d_get_set.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET">BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id816706"></a>
+ <a class="indexterm" name="idp108213440"></a>
Macro to register a 2D point type (having separate get/set methods)
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.description"></a></span><a class="link" href="boost_geometry_register_point_2d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.description"></a></span><a class="link" href="boost_geometry_register_point_2d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET registers a two-dimensional
@@ -43,16 +43,18 @@ Macro to register a 2D point type (having separate get/set methods)
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.synopsis"></a></span><a class="link" href="boost_geometry_register_point_2d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.synopsis"></a></span><a class="link" href="boost_geometry_register_point_2d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span> <span class="identifier">Get0</span><span class="special">,</span> <span class="identifier">Get1</span><span class="special">,</span> <span class="identifier">Set0</span><span class="special">,</span> <span class="identifier">Set1</span><span class="special">)</span></pre>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span>
+ <span class="identifier">Get0</span><span class="special">,</span> <span class="identifier">Get1</span><span class="special">,</span> <span class="identifier">Set0</span><span class="special">,</span>
+ <span class="identifier">Set1</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.parameters"></a></span><a class="link" href="boost_geometry_register_point_2d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.parameters"></a></span><a class="link" href="boost_geometry_register_point_2d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -160,7 +162,7 @@ Macro to register a 2D point type (having separate get/set methods)
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.header"></a></span><a class="link" href="boost_geometry_register_point_2d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.header"></a></span><a class="link" href="boost_geometry_register_point_2d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_2d_get_set.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -168,8 +170,8 @@ Macro to register a 2D point type (having separate get/set methods)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d.html
index d81350ddf8..ae049ebbc1 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_POINT_3D</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_point_2d_get_set.html" title="BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d"></a><a class="link" href="boost_geometry_register_point_3d.html" title="BOOST_GEOMETRY_REGISTER_POINT_3D">BOOST_GEOMETRY_REGISTER_POINT_3D</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id817194"></a>
+ <a class="indexterm" name="idp108268624"></a>
Macro to register a 3D point type.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.description"></a></span><a class="link" href="boost_geometry_register_point_3d.html#geometry.reference.adapted.register.boost_geometry_register_point_3d.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.description"></a></span><a class="link" href="boost_geometry_register_point_3d.html#geometry.reference.adapted.register.boost_geometry_register_point_3d.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_POINT_3D registers a three-dimensional
@@ -41,16 +41,17 @@ Macro to register a 3D point type.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.synopsis"></a></span><a class="link" href="boost_geometry_register_point_3d.html#geometry.reference.adapted.register.boost_geometry_register_point_3d.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.synopsis"></a></span><a class="link" href="boost_geometry_register_point_3d.html#geometry.reference.adapted.register.boost_geometry_register_point_3d.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_3D</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span> <span class="identifier">Field0</span><span class="special">,</span> <span class="identifier">Field1</span><span class="special">,</span> <span class="identifier">Field2</span><span class="special">)</span></pre>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_3D</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span>
+ <span class="identifier">Field0</span><span class="special">,</span> <span class="identifier">Field1</span><span class="special">,</span> <span class="identifier">Field2</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.parameters"></a></span><a class="link" href="boost_geometry_register_point_3d.html#geometry.reference.adapted.register.boost_geometry_register_point_3d.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.parameters"></a></span><a class="link" href="boost_geometry_register_point_3d.html#geometry.reference.adapted.register.boost_geometry_register_point_3d.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -146,7 +147,7 @@ Macro to register a 3D point type.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.header"></a></span><a class="link" href="boost_geometry_register_point_3d.html#geometry.reference.adapted.register.boost_geometry_register_point_3d.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d.header"></a></span><a class="link" href="boost_geometry_register_point_3d.html#geometry.reference.adapted.register.boost_geometry_register_point_3d.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -154,8 +155,8 @@ Macro to register a 3D point type.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_const.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_const.html
index 8a390637fa..46753fc698 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_const.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_const.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_POINT_3D_CONST</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_point_3d.html" title="BOOST_GEOMETRY_REGISTER_POINT_3D">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const"></a><a class="link" href="boost_geometry_register_point_3d_const.html" title="BOOST_GEOMETRY_REGISTER_POINT_3D_CONST">BOOST_GEOMETRY_REGISTER_POINT_3D_CONST</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id817645"></a>
+ <a class="indexterm" name="idp108320128"></a>
Macro to register a 3D point type (const version)
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.description"></a></span><a class="link" href="boost_geometry_register_point_3d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_const.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.description"></a></span><a class="link" href="boost_geometry_register_point_3d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_const.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_POINT_3D_CONST registers a three-dimensional
@@ -42,16 +42,17 @@ Macro to register a 3D point type (const version)
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.synopsis"></a></span><a class="link" href="boost_geometry_register_point_3d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_const.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.synopsis"></a></span><a class="link" href="boost_geometry_register_point_3d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_const.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_3D_CONST</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span> <span class="identifier">Field0</span><span class="special">,</span> <span class="identifier">Field1</span><span class="special">,</span> <span class="identifier">Field2</span><span class="special">)</span></pre>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_3D_CONST</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span>
+ <span class="identifier">Field0</span><span class="special">,</span> <span class="identifier">Field1</span><span class="special">,</span> <span class="identifier">Field2</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.parameters"></a></span><a class="link" href="boost_geometry_register_point_3d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_const.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.parameters"></a></span><a class="link" href="boost_geometry_register_point_3d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_const.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -147,7 +148,7 @@ Macro to register a 3D point type (const version)
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.header"></a></span><a class="link" href="boost_geometry_register_point_3d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_const.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_const.header"></a></span><a class="link" href="boost_geometry_register_point_3d_const.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_const.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -155,8 +156,8 @@ Macro to register a 3D point type (const version)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_get_set.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_get_set.html
index e2158c9dcb..101bd6ef0a 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_get_set.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_point_3d_get_set.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_point_3d_const.html" title="BOOST_GEOMETRY_REGISTER_POINT_3D_CONST">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set"></a><a class="link" href="boost_geometry_register_point_3d_get_set.html" title="BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET">BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id818100"></a>
+ <a class="indexterm" name="idp108371632"></a>
Macro to register a 3D point type (having separate get/set methods)
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.description"></a></span><a class="link" href="boost_geometry_register_point_3d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.description"></a></span><a class="link" href="boost_geometry_register_point_3d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET registers a three-dimensional
@@ -43,16 +43,18 @@ Macro to register a 3D point type (having separate get/set methods)
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.synopsis"></a></span><a class="link" href="boost_geometry_register_point_3d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.synopsis"></a></span><a class="link" href="boost_geometry_register_point_3d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span> <span class="identifier">Get0</span><span class="special">,</span> <span class="identifier">Get1</span><span class="special">,</span> <span class="identifier">Get2</span><span class="special">,</span> <span class="identifier">Set0</span><span class="special">,</span> <span class="identifier">Set1</span><span class="special">,</span> <span class="identifier">Set2</span><span class="special">)</span></pre>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET</span><span class="special">(</span><span class="identifier">Point</span><span class="special">,</span> <span class="identifier">CoordinateType</span><span class="special">,</span> <span class="identifier">CoordinateSystem</span><span class="special">,</span>
+ <span class="identifier">Get0</span><span class="special">,</span> <span class="identifier">Get1</span><span class="special">,</span> <span class="identifier">Get2</span><span class="special">,</span>
+ <span class="identifier">Set0</span><span class="special">,</span> <span class="identifier">Set1</span><span class="special">,</span> <span class="identifier">Set2</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.parameters"></a></span><a class="link" href="boost_geometry_register_point_3d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.parameters"></a></span><a class="link" href="boost_geometry_register_point_3d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -184,7 +186,7 @@ Macro to register a 3D point type (having separate get/set methods)
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.header"></a></span><a class="link" href="boost_geometry_register_point_3d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.header"></a></span><a class="link" href="boost_geometry_register_point_3d_get_set.html#geometry.reference.adapted.register.boost_geometry_register_point_3d_get_set.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -192,8 +194,8 @@ Macro to register a 3D point type (having separate get/set methods)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring.html
index 1456b6b175..ff675e36d9 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_RING</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_point_3d_get_set.html" title="BOOST_GEOMETRY_REGISTER_POINT_3D_GET_SET">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_ring"></a><a class="link" href="boost_geometry_register_ring.html" title="BOOST_GEOMETRY_REGISTER_RING">BOOST_GEOMETRY_REGISTER_RING</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id818645"></a>
+ <a class="indexterm" name="idp108433488"></a>
Macro to register a ring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_ring.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_ring.description"></a></span><a class="link" href="boost_geometry_register_ring.html#geometry.reference.adapted.register.boost_geometry_register_ring.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_ring.description"></a></span><a class="link" href="boost_geometry_register_ring.html#geometry.reference.adapted.register.boost_geometry_register_ring.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_RING registers a ring such that it
@@ -42,7 +42,7 @@ Macro to register a ring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_ring.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_ring.synopsis"></a></span><a class="link" href="boost_geometry_register_ring.html#geometry.reference.adapted.register.boost_geometry_register_ring.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_ring.synopsis"></a></span><a class="link" href="boost_geometry_register_ring.html#geometry.reference.adapted.register.boost_geometry_register_ring.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,7 +51,7 @@ Macro to register a ring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_ring.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_ring.parameters"></a></span><a class="link" href="boost_geometry_register_ring.html#geometry.reference.adapted.register.boost_geometry_register_ring.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_ring.parameters"></a></span><a class="link" href="boost_geometry_register_ring.html#geometry.reference.adapted.register.boost_geometry_register_ring.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -85,14 +85,14 @@ Macro to register a ring.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_ring.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_ring.header"></a></span><a class="link" href="boost_geometry_register_ring.html#geometry.reference.adapted.register.boost_geometry_register_ring.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_ring.header"></a></span><a class="link" href="boost_geometry_register_ring.html#geometry.reference.adapted.register.boost_geometry_register_ring.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">ring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_ring.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_ring.example"></a></span><a class="link" href="boost_geometry_register_ring.html#geometry.reference.adapted.register.boost_geometry_register_ring.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_ring.example"></a></span><a class="link" href="boost_geometry_register_ring.html#geometry.reference.adapted.register.boost_geometry_register_ring.example">Example</a>
</h6>
<p>
Show the use of the macro BOOST_GEOMETRY_REGISTER_RING
@@ -143,8 +143,8 @@ WKT: POLYGON((1 1,2 2,2 1,1 1))
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring_templated.html b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring_templated.html
index fda4116af3..3872490327 100644
--- a/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring_templated.html
+++ b/libs/geometry/doc/html/geometry/reference/adapted/register/boost_geometry_register_ring_templated.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>BOOST_GEOMETRY_REGISTER_RING_TEMPLATED</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../register.html" title="Macro's for adaption">
<link rel="prev" href="boost_geometry_register_ring.html" title="BOOST_GEOMETRY_REGISTER_RING">
@@ -27,12 +27,12 @@
<a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated"></a><a class="link" href="boost_geometry_register_ring_templated.html" title="BOOST_GEOMETRY_REGISTER_RING_TEMPLATED">BOOST_GEOMETRY_REGISTER_RING_TEMPLATED</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id819769"></a>
+ <a class="indexterm" name="idp108567952"></a>
Macro to register a templated ring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.h0"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.description"></a></span><a class="link" href="boost_geometry_register_ring_templated.html#geometry.reference.adapted.register.boost_geometry_register_ring_templated.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.description"></a></span><a class="link" href="boost_geometry_register_ring_templated.html#geometry.reference.adapted.register.boost_geometry_register_ring_templated.description">Description</a>
</h6>
<p>
The macro BOOST_GEOMETRY_REGISTER_RING_TEMPLATED registers a templated
@@ -45,7 +45,7 @@ Macro to register a templated ring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.h1"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_ring_templated.html#geometry.reference.adapted.register.boost_geometry_register_ring_templated.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.synopsis"></a></span><a class="link" href="boost_geometry_register_ring_templated.html#geometry.reference.adapted.register.boost_geometry_register_ring_templated.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Macro to register a templated ring.
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.h2"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.parameters"></a></span><a class="link" href="boost_geometry_register_ring_templated.html#geometry.reference.adapted.register.boost_geometry_register_ring_templated.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.parameters"></a></span><a class="link" href="boost_geometry_register_ring_templated.html#geometry.reference.adapted.register.boost_geometry_register_ring_templated.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -88,14 +88,14 @@ Macro to register a templated ring.
</table></div>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.h3"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.header"></a></span><a class="link" href="boost_geometry_register_ring_templated.html#geometry.reference.adapted.register.boost_geometry_register_ring_templated.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.header"></a></span><a class="link" href="boost_geometry_register_ring_templated.html#geometry.reference.adapted.register.boost_geometry_register_ring_templated.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="keyword">register</span><span class="special">/</span><span class="identifier">ring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.h4"></a>
- <span><a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.example"></a></span><a class="link" href="boost_geometry_register_ring_templated.html#geometry.reference.adapted.register.boost_geometry_register_ring_templated.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.adapted.register.boost_geometry_register_ring_templated.example"></a></span><a class="link" href="boost_geometry_register_ring_templated.html#geometry.reference.adapted.register.boost_geometry_register_ring_templated.example">Example</a>
</h6>
<p>
Show the use of the macro BOOST_GEOMETRY_REGISTER_RING_TEMPLATED
@@ -138,8 +138,8 @@ Line: ((0, 0), (1, 4), (4, 1), (0, 0))
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms.html b/libs/geometry/doc/html/geometry/reference/algorithms.html
index 333784ffc8..44337eb75b 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Algorithms</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="adapted/register/boost_geometry_register_ring_templated.html" title="BOOST_GEOMETRY_REGISTER_RING_TEMPLATED">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.algorithms"></a><a class="link" href="algorithms.html" title="Algorithms">Algorithms</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="algorithms/area.html">area</a></span></dt>
<dt><span class="section"><a href="algorithms/assign.html">assign</a></span></dt>
<dt><span class="section"><a href="algorithms/append.html">append</a></span></dt>
@@ -37,6 +37,7 @@
<dt><span class="section"><a href="algorithms/convex_hull.html">convex_hull</a></span></dt>
<dt><span class="section"><a href="algorithms/correct.html">correct</a></span></dt>
<dt><span class="section"><a href="algorithms/covered_by.html">covered_by</a></span></dt>
+<dt><span class="section"><a href="algorithms/crosses.html">crosses</a></span></dt>
<dt><span class="section"><a href="algorithms/difference.html">difference</a></span></dt>
<dt><span class="section"><a href="algorithms/disjoint.html">disjoint</a></span></dt>
<dt><span class="section"><a href="algorithms/distance.html">distance</a></span></dt>
@@ -46,6 +47,8 @@
<dt><span class="section"><a href="algorithms/for_each.html">for_each</a></span></dt>
<dt><span class="section"><a href="algorithms/intersection.html">intersection</a></span></dt>
<dt><span class="section"><a href="algorithms/intersects.html">intersects</a></span></dt>
+<dt><span class="section"><a href="algorithms/is_simple.html">is_simple</a></span></dt>
+<dt><span class="section"><a href="algorithms/is_valid.html">is_valid</a></span></dt>
<dt><span class="section"><a href="algorithms/length.html">length</a></span></dt>
<dt><span class="section"><a href="algorithms/make.html">make</a></span></dt>
<dt><span class="section"><a href="algorithms/num_geometries.html">num_geometries</a></span></dt>
@@ -65,8 +68,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/append.html b/libs/geometry/doc/html/geometry/reference/algorithms/append.html
index eb26694f01..9bfc491e04 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/append.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/append.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>append</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="assign/assign_zero.html" title="assign_zero">
@@ -27,22 +27,23 @@
<a name="geometry.reference.algorithms.append"></a><a class="link" href="append.html" title="append">append</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id833904"></a>
+ <a class="indexterm" name="idp110281120"></a>
Appends one or more points to a linestring, ring, polygon, multi-geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.append.h0"></a>
- <span><a name="geometry.reference.algorithms.append.synopsis"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.append.synopsis"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">RangeOrPoint</span><span class="special">&gt;</span>
-<span class="keyword">void</span> <span class="identifier">append</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">RangeOrPoint</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">range_or_point</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ring_index</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">multi_index</span> <span class="special">=</span> <span class="number">0</span><span class="special">)</span></pre>
+<span class="keyword">void</span> <span class="identifier">append</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">RangeOrPoint</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">range_or_point</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ring_index</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">,</span>
+ <span class="keyword">int</span> <span class="identifier">multi_index</span> <span class="special">=</span> <span class="number">0</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.algorithms.append.h1"></a>
- <span><a name="geometry.reference.algorithms.append.parameters"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.append.parameters"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -154,7 +155,7 @@ Appends one or more points to a linestring, ring, polygon, multi-geometry.
</td>
<td>
<p>
- Reserved for multi polygons or multi linestrings
+ The index of the geometry to which the points are appended
</p>
</td>
</tr>
@@ -162,13 +163,13 @@ Appends one or more points to a linestring, ring, polygon, multi-geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.append.h2"></a>
- <span><a name="geometry.reference.algorithms.append.header"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.append.header"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -178,14 +179,14 @@ Appends one or more points to a linestring, ring, polygon, multi-geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.append.h3"></a>
- <span><a name="geometry.reference.algorithms.append.conformance"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.append.conformance"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.conformance">Conformance</a>
</h6>
<p>
The function append is not defined by OGC.
</p>
<h6>
<a name="geometry.reference.algorithms.append.h4"></a>
- <span><a name="geometry.reference.algorithms.append.supported_geometries"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.append.supported_geometries"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -336,12 +337,12 @@ Appends one or more points to a linestring, ring, polygon, multi-geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -353,12 +354,12 @@ Appends one or more points to a linestring, ring, polygon, multi-geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -366,7 +367,7 @@ Appends one or more points to a linestring, ring, polygon, multi-geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.append.h5"></a>
- <span><a name="geometry.reference.algorithms.append.behavior"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.append.behavior"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -389,7 +390,7 @@ Appends one or more points to a linestring, ring, polygon, multi-geometry.
<tr>
<td>
<p>
- Point, Rectangle, Segment
+ Point, Box, Segment
</p>
</td>
<td>
@@ -440,18 +441,54 @@ Appends one or more points to a linestring, ring, polygon, multi-geometry.
</p>
</td>
</tr>
+<tr>
+<td>
+ <p>
+ Multi Linestring
+ </p>
+ </td>
+<td>
+ <p>
+ Appends point or range to the end of the linestring with the
+ given multi index. The multi-linestring is not resized automatically,
+ so ensure that the multi index is smaller than then number of
+ linestring in the multi-linestring.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Multi Polygon
+ </p>
+ </td>
+<td>
+ <p>
+ Appends point or range to the end of the polygon (without explicitly
+ closing it) with the given multi-index. The point or range is
+ appended at the end of the exterior ring (the default) or specify
+ a zero-based ring index for the interior rings. The multi-polygon
+ is not resized automatically, so ensure that the multi index
+ is smaller than then number of polygon in the multi-polygon.
+ The same applies for the interior rings of the polygon: the interior
+ rings are not resized automatically, so ensure that the zero-based
+ ring index is smaller than the number of interior rings of the
+ polygon.
+ </p>
+ </td>
+</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.algorithms.append.h6"></a>
- <span><a name="geometry.reference.algorithms.append.complexity"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.append.complexity"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.append.h7"></a>
- <span><a name="geometry.reference.algorithms.append.example"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.append.example"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.example">Example</a>
</h6>
<p>
Shows usage of Boost.Geometry's append to append a point or a range to
@@ -520,17 +557,17 @@ Appends one or more points to a linestring, ring, polygon, multi-geometry.
</pre>
<h6>
<a name="geometry.reference.algorithms.append.h8"></a>
- <span><a name="geometry.reference.algorithms.append.see_also"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.append.see_also"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="assign/assign_points.html" title="assign_points">assign</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/area.html b/libs/geometry/doc/html/geometry/reference/algorithms/area.html
index 5b21395548..dea8a1c266 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/area.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/area.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>area</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="../algorithms.html" title="Algorithms">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.area"></a><a class="link" href="area.html" title="area">area</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="area/area_1.html">area</a></span></dt>
<dt><span class="section"><a href="area/area_2_with_strategy.html">area
(with strategy)</a></span></dt>
@@ -34,8 +34,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/area/area_1.html b/libs/geometry/doc/html/geometry/reference/algorithms/area/area_1.html
index e713dd299b..f1a80e404e 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/area/area_1.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/area/area_1.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>area</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../area.html" title="area">
<link rel="prev" href="../area.html" title="area">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.area.area_1"></a><a class="link" href="area_1.html" title="area">area</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id820946"></a>
+ <a class="indexterm" name="idp108709376"></a>
Calculates the area of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_1.h0"></a>
- <span><a name="geometry.reference.algorithms.area.area_1.description"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_1.description"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.description">Description</a>
</h6>
<p>
The free function area calculates the area of a geometry. It uses the
@@ -50,7 +50,7 @@ Calculates the area of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_1.h1"></a>
- <span><a name="geometry.reference.algorithms.area.area_1.synopsis"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_1.synopsis"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -60,7 +60,7 @@ Calculates the area of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_1.h2"></a>
- <span><a name="geometry.reference.algorithms.area.area_1.parameters"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_1.parameters"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -116,20 +116,20 @@ Calculates the area of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.area.area_1.h3"></a>
- <span><a name="geometry.reference.algorithms.area.area_1.returns"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_1.returns"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.returns">Returns</a>
</h6>
<p>
The calculated area
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_1.h4"></a>
- <span><a name="geometry.reference.algorithms.area.area_1.header"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_1.header"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -139,7 +139,7 @@ Calculates the area of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_1.h5"></a>
- <span><a name="geometry.reference.algorithms.area.area_1.conformance"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_1.conformance"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.conformance">Conformance</a>
</h6>
<p>
The function area implements function Area from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -147,7 +147,7 @@ Calculates the area of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_1.h6"></a>
- <span><a name="geometry.reference.algorithms.area.area_1.behavior"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_1.behavior"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -244,7 +244,7 @@ Calculates the area of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.area.area_1.h7"></a>
- <span><a name="geometry.reference.algorithms.area.area_1.supported_geometries"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_1.supported_geometries"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -373,18 +373,30 @@ Calculates the area of a geometry.
</p>
</td>
</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.algorithms.area.area_1.h8"></a>
- <span><a name="geometry.reference.algorithms.area.area_1.complexity"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_1.complexity"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_1.h9"></a>
- <span><a name="geometry.reference.algorithms.area.area_1.examples"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.examples">Examples</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_1.examples"></a></span><a class="link" href="area_1.html#geometry.reference.algorithms.area.area_1.examples">Examples</a>
</h6>
<p>
Calculate the area of a polygon
@@ -396,7 +408,6 @@ Calculates the area of a geometry.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span> <a class="co" name="geometry.reference.algorithms.area.area_1.c0" href="area_1.html#geometry.reference.algorithms.area.area_1.c1"><img src="../../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a>
@@ -434,8 +445,8 @@ Area: 0.339837
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/area/area_2_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/area/area_2_with_strategy.html
index 022d40b6a6..838b863d8f 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/area/area_2_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/area/area_2_with_strategy.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>area (with strategy)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../area.html" title="area">
<link rel="prev" href="area_1.html" title="area">
@@ -28,12 +28,12 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id823186"></a>
+ <a class="indexterm" name="idp108937472"></a>
Calculates the area of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_2_with_strategy.h0"></a>
- <span><a name="geometry.reference.algorithms.area.area_2_with_strategy.description"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.description"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.description">Description</a>
</h6>
<p>
The free function area calculates the area of a geometry using the specified
@@ -44,7 +44,7 @@ Calculates the area of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_2_with_strategy.h1"></a>
- <span><a name="geometry.reference.algorithms.area.area_2_with_strategy.synopsis"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.synopsis"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Calculates the area of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_2_with_strategy.h2"></a>
- <span><a name="geometry.reference.algorithms.area.area_2_with_strategy.parameters"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.parameters"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -134,20 +134,20 @@ Calculates the area of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.area.area_2_with_strategy.h3"></a>
- <span><a name="geometry.reference.algorithms.area.area_2_with_strategy.returns"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.returns"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.returns">Returns</a>
</h6>
<p>
The calculated area
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_2_with_strategy.h4"></a>
- <span><a name="geometry.reference.algorithms.area.area_2_with_strategy.header"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.header"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -157,7 +157,7 @@ Calculates the area of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_2_with_strategy.h5"></a>
- <span><a name="geometry.reference.algorithms.area.area_2_with_strategy.conformance"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.conformance"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.conformance">Conformance</a>
</h6>
<p>
The function area implements function Area from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -165,7 +165,7 @@ Calculates the area of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_2_with_strategy.h6"></a>
- <span><a name="geometry.reference.algorithms.area.area_2_with_strategy.behavior"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.behavior"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -262,7 +262,7 @@ Calculates the area of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.area.area_2_with_strategy.h7"></a>
- <span><a name="geometry.reference.algorithms.area.area_2_with_strategy.supported_geometries"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.supported_geometries"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -391,18 +391,30 @@ Calculates the area of a geometry using the specified strategy.
</p>
</td>
</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.algorithms.area.area_2_with_strategy.h8"></a>
- <span><a name="geometry.reference.algorithms.area.area_2_with_strategy.complexity"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.complexity"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.area.area_2_with_strategy.h9"></a>
- <span><a name="geometry.reference.algorithms.area.area_2_with_strategy.example"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.example"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.example">Example</a>
</h6>
<p>
Calculate the area of a polygon
@@ -414,7 +426,6 @@ Calculates the area of a geometry using the specified strategy.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span> <a class="co" name="geometry.reference.algorithms.area.area_2_with_strategy.c0" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.c1"><img src="../../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a>
@@ -451,10 +462,10 @@ Area: 0.339837
</pre>
<h6>
<a name="geometry.reference.algorithms.area.area_2_with_strategy.h10"></a>
- <span><a name="geometry.reference.algorithms.area.area_2_with_strategy.available_strategies"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.available_strategies">Available
+ <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.available_strategies"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.available_strategies">Available
Strategies</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="../../strategies/strategy_area_surveyor.html" title="strategy::area::surveyor">Surveyor
(cartesian)</a>
@@ -467,8 +478,8 @@ Area: 0.339837
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign.html
index cd11a10135..ec19d5228f 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>assign</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="area/area_2_with_strategy.html" title="area (with strategy)">
@@ -26,23 +26,23 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.assign"></a><a class="link" href="assign.html" title="assign">assign</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="assign/assign.html">assign</a></span></dt>
<dt><span class="section"><a href="assign/assign_inverse.html">assign_inverse</a></span></dt>
<dt><span class="section"><a href="assign/assign_points.html">assign_points</a></span></dt>
<dt><span class="section"><a href="assign/assign_values_3_2_coordinate_values.html">assign_values
(2 coordinate values)</a></span></dt>
-<dt><span class="section"><a href="assign/assign_values_5_4_coordinate_values.html">assign_values
- (4 coordinate values)</a></span></dt>
<dt><span class="section"><a href="assign/assign_values_4_3_coordinate_values.html">assign_values
(3 coordinate values)</a></span></dt>
+<dt><span class="section"><a href="assign/assign_values_5_4_coordinate_values.html">assign_values
+ (4 coordinate values)</a></span></dt>
<dt><span class="section"><a href="assign/assign_zero.html">assign_zero</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign.html
index f049e4683e..4eb9faec8d 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>assign</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../assign.html" title="assign">
<link rel="prev" href="../assign.html" title="assign">
@@ -27,20 +27,20 @@
<a name="geometry.reference.algorithms.assign.assign"></a><a class="link" href="assign.html" title="assign">assign</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id825306"></a>
+ <a class="indexterm" name="idp109182432"></a>
Assigns one geometry to another geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign.h0"></a>
- <span><a name="geometry.reference.algorithms.assign.assign.description"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign.description"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.description">Description</a>
</h6>
<p>
The assign algorithm assigns one geometry, e.g. a BOX, to another geometry,
- e.g. a RING. This only if it is possible and applicable.
+ e.g. a RING. This only works if it is possible and applicable.
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign.h1"></a>
- <span><a name="geometry.reference.algorithms.assign.assign.synopsis"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign.synopsis"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Assigns one geometry to another geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign.h2"></a>
- <span><a name="geometry.reference.algorithms.assign.assign.parameters"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign.parameters"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -130,13 +130,13 @@ Assigns one geometry to another geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.assign.assign.h3"></a>
- <span><a name="geometry.reference.algorithms.assign.assign.header"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign.header"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -146,7 +146,7 @@ Assigns one geometry to another geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign.h4"></a>
- <span><a name="geometry.reference.algorithms.assign.assign.example"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign.example"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.example">Example</a>
</h6>
<p>
Shows how to assign a geometry from another geometry
@@ -205,16 +205,16 @@ point tuples: (1, 1)
</pre>
<h6>
<a name="geometry.reference.algorithms.assign.assign.h5"></a>
- <span><a name="geometry.reference.algorithms.assign.assign.see_also"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.see_also">See also</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign.see_also"></a></span><a class="link" href="assign.html#geometry.reference.algorithms.assign.assign.see_also">See also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../convert.html" title="convert">convert</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_inverse.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_inverse.html
index d9659bb643..876131e907 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_inverse.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_inverse.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>assign_inverse</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../assign.html" title="assign">
<link rel="prev" href="assign.html" title="assign">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.assign.assign_inverse"></a><a class="link" href="assign_inverse.html" title="assign_inverse">assign_inverse</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id827034"></a>
+ <a class="indexterm" name="idp92095840"></a>
assign to a box inverse infinite
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_inverse.h0"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_inverse.description"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_inverse.description"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.description">Description</a>
</h6>
<p>
The assign_inverse function initialize a 2D or 3D box with large coordinates,
@@ -41,7 +41,7 @@ assign to a box inverse infinite
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_inverse.h1"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_inverse.synopsis"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_inverse.synopsis"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,7 +51,7 @@ assign to a box inverse infinite
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_inverse.h2"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_inverse.parameters"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_inverse.parameters"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -107,13 +107,13 @@ assign to a box inverse infinite
</table></div>
<h6>
<a name="geometry.reference.algorithms.assign.assign_inverse.h3"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_inverse.header"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_inverse.header"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -123,7 +123,7 @@ assign to a box inverse infinite
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_inverse.h4"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_inverse.example"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_inverse.example"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.example">Example</a>
</h6>
<p>
Usage of assign_inverse and expand to conveniently determine bounding
@@ -163,17 +163,17 @@ assign to a box inverse infinite
((0, 0, 0), (1, 2, 3))</pre>
<h6>
<a name="geometry.reference.algorithms.assign.assign_inverse.h5"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_inverse.see_also"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_inverse.see_also"></a></span><a class="link" href="assign_inverse.html#geometry.reference.algorithms.assign.assign_inverse.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../make/make_inverse.html" title="make_inverse">make_inverse</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_points.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_points.html
index 750e67c818..c3a7b96e65 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_points.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_points.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>assign_points</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../assign.html" title="assign">
<link rel="prev" href="assign_inverse.html" title="assign_inverse">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.assign.assign_points"></a><a class="link" href="assign_points.html" title="assign_points">assign_points</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id828171"></a>
+ <a class="indexterm" name="idp109607104"></a>
Assign a range of points to a linestring, ring or polygon.
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_points.h0"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_points.synopsis"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_points.synopsis"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -42,7 +42,7 @@ Assign a range of points to a linestring, ring or polygon.
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_points.h1"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_points.parameters"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_points.parameters"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -123,13 +123,13 @@ Assign a range of points to a linestring, ring or polygon.
</table></div>
<h6>
<a name="geometry.reference.algorithms.assign.assign_points.h2"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_points.header"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_points.header"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -139,7 +139,7 @@ Assign a range of points to a linestring, ring or polygon.
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_points.h3"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_points.notes"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.notes">Notes</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_points.notes"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.notes">Notes</a>
</h6>
<div class="note"><table border="0" summary="Note">
<tr>
@@ -153,7 +153,7 @@ Assign a range of points to a linestring, ring or polygon.
</table></div>
<h6>
<a name="geometry.reference.algorithms.assign.assign_points.h4"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_points.example"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_points.example"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.example">Example</a>
</h6>
<p>
Shows usage of Boost.Geometry's assign, Boost.Assign, and Boost.Range
@@ -241,17 +241,17 @@ line 3: ((4, 0), (6, 3), (8, 0))
</pre>
<h6>
<a name="geometry.reference.algorithms.assign.assign_points.h5"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_points.see_also"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_points.see_also"></a></span><a class="link" href="assign_points.html#geometry.reference.algorithms.assign.assign_points.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../append.html" title="append">append</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_3_2_coordinate_values.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_3_2_coordinate_values.html
index 76c8fdd634..ec339d71a2 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_3_2_coordinate_values.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_3_2_coordinate_values.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>assign_values (2 coordinate values)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../assign.html" title="assign">
<link rel="prev" href="assign_points.html" title="assign_points">
-<link rel="next" href="assign_values_5_4_coordinate_values.html" title="assign_values (4 coordinate values)">
+<link rel="next" href="assign_values_4_3_coordinate_values.html" title="assign_values (3 coordinate values)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="assign_points.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_values_5_4_coordinate_values.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="assign_points.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_values_4_3_coordinate_values.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
@@ -28,12 +28,12 @@
(2 coordinate values)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id830433"></a>
+ <a class="indexterm" name="idp109859632"></a>
Assign two coordinates to a geometry (usually a 2D point)
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.h0"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.synopsis"></a></span><a class="link" href="assign_values_3_2_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.synopsis"></a></span><a class="link" href="assign_values_3_2_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -43,7 +43,7 @@ Assign two coordinates to a geometry (usually a 2D point)
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.h1"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.parameters"></a></span><a class="link" href="assign_values_3_2_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.parameters"></a></span><a class="link" href="assign_values_3_2_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -145,14 +145,23 @@ Assign two coordinates to a geometry (usually a 2D point)
</table></div>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.h2"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.header"></a></span><a class="link" href="assign_values_3_2_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.header"></a></span><a class="link" href="assign_values_3_2_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">assign_values</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.h3"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.example"></a></span><a class="link" href="assign_values_3_2_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.example"></a></span><a class="link" href="assign_values_3_2_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.example">Example</a>
</h6>
<p>
Shows the usage of assign to set point coordinates, and, besides that,
@@ -214,17 +223,17 @@ Assign two coordinates to a geometry (usually a 2D point)
</pre>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.h4"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.see_also"></a></span><a class="link" href="assign_values_3_2_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.see_also"></a></span><a class="link" href="assign_values_3_2_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_3_2_coordinate_values.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../make/make_2_2_coordinate_values.html" title="make (2 coordinate values)">make</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -232,7 +241,7 @@ Assign two coordinates to a geometry (usually a 2D point)
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="assign_points.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_values_5_4_coordinate_values.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="assign_points.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_values_4_3_coordinate_values.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_4_3_coordinate_values.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_4_3_coordinate_values.html
index a18b713b2e..64a3a6cf8a 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_4_3_coordinate_values.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_4_3_coordinate_values.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>assign_values (3 coordinate values)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../assign.html" title="assign">
-<link rel="prev" href="assign_values_5_4_coordinate_values.html" title="assign_values (4 coordinate values)">
-<link rel="next" href="assign_zero.html" title="assign_zero">
+<link rel="prev" href="assign_values_3_2_coordinate_values.html" title="assign_values (2 coordinate values)">
+<link rel="next" href="assign_values_5_4_coordinate_values.html" title="assign_values (4 coordinate values)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="assign_values_5_4_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_zero.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="assign_values_3_2_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_values_5_4_coordinate_values.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
@@ -28,22 +28,23 @@
(3 coordinate values)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id832430"></a>
+ <a class="indexterm" name="idp110029888"></a>
Assign three values to a geometry (usually a 3D point)
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.h0"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.synopsis"></a></span><a class="link" href="assign_values_4_3_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.synopsis"></a></span><a class="link" href="assign_values_4_3_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Type</span><span class="special">&gt;</span>
-<span class="keyword">void</span> <span class="identifier">assign_values</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c1</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c2</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c3</span><span class="special">)</span></pre>
+<span class="keyword">void</span> <span class="identifier">assign_values</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c1</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c2</span><span class="special">,</span>
+ <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c3</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.h1"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.parameters"></a></span><a class="link" href="assign_values_4_3_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.parameters"></a></span><a class="link" href="assign_values_4_3_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -167,14 +168,23 @@ Assign three values to a geometry (usually a 3D point)
</table></div>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.h2"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.header"></a></span><a class="link" href="assign_values_4_3_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.header"></a></span><a class="link" href="assign_values_4_3_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">assign_values</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.h3"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.example"></a></span><a class="link" href="assign_values_4_3_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.example"></a></span><a class="link" href="assign_values_4_3_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.example">Example</a>
</h6>
<p>
Use assign to set three coordinates of a 3D point
@@ -206,17 +216,17 @@ Assign three values to a geometry (usually a 3D point)
</pre>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.h4"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.see_also"></a></span><a class="link" href="assign_values_4_3_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.see_also"></a></span><a class="link" href="assign_values_4_3_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_4_3_coordinate_values.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../make/make_3_3_coordinate_values.html" title="make (3 coordinate values)">make</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -224,7 +234,7 @@ Assign three values to a geometry (usually a 3D point)
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="assign_values_5_4_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_zero.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="assign_values_3_2_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_values_5_4_coordinate_values.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html
index 806c867542..fc70fd4fbf 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>assign_values (4 coordinate values)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../assign.html" title="assign">
-<link rel="prev" href="assign_values_3_2_coordinate_values.html" title="assign_values (2 coordinate values)">
-<link rel="next" href="assign_values_4_3_coordinate_values.html" title="assign_values (3 coordinate values)">
+<link rel="prev" href="assign_values_4_3_coordinate_values.html" title="assign_values (3 coordinate values)">
+<link rel="next" href="assign_zero.html" title="assign_zero">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="assign_values_3_2_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_values_4_3_coordinate_values.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="assign_values_4_3_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_zero.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
@@ -28,22 +28,23 @@
(4 coordinate values)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id831830"></a>
+ <a class="indexterm" name="idp110159856"></a>
Assign four values to a geometry (usually a box or segment)
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.h0"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.synopsis"></a></span><a class="link" href="assign_values_5_4_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.synopsis"></a></span><a class="link" href="assign_values_5_4_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Type</span><span class="special">&gt;</span>
-<span class="keyword">void</span> <span class="identifier">assign_values</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c1</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c2</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c3</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c4</span><span class="special">)</span></pre>
+<span class="keyword">void</span> <span class="identifier">assign_values</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c1</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c2</span><span class="special">,</span>
+ <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c3</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">c4</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.h1"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.parameters"></a></span><a class="link" href="assign_values_5_4_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.parameters"></a></span><a class="link" href="assign_values_5_4_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -189,16 +190,25 @@ Assign four values to a geometry (usually a box or segment)
</table></div>
<h6>
<a name="geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.h2"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.header"></a></span><a class="link" href="assign_values_5_4_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.header"></a></span><a class="link" href="assign_values_5_4_coordinate_values.html#geometry.reference.algorithms.assign.assign_values_5_4_coordinate_values.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">assign_values</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -206,7 +216,7 @@ Assign four values to a geometry (usually a box or segment)
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="assign_values_3_2_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_values_4_3_coordinate_values.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="assign_values_4_3_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assign_zero.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_zero.html b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_zero.html
index 6e7c326adc..86f345c671 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_zero.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/assign/assign_zero.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>assign_zero</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../assign.html" title="assign">
-<link rel="prev" href="assign_values_4_3_coordinate_values.html" title="assign_values (3 coordinate values)">
+<link rel="prev" href="assign_values_5_4_coordinate_values.html" title="assign_values (4 coordinate values)">
<link rel="next" href="../append.html" title="append">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="assign_values_4_3_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../append.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="assign_values_5_4_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../append.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="geometry.reference.algorithms.assign.assign_zero"></a><a class="link" href="assign_zero.html" title="assign_zero">assign_zero</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id833491"></a>
+ <a class="indexterm" name="idp110234192"></a>
assign zero values to a box, point
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_zero.h0"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_zero.description"></a></span><a class="link" href="assign_zero.html#geometry.reference.algorithms.assign.assign_zero.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_zero.description"></a></span><a class="link" href="assign_zero.html#geometry.reference.algorithms.assign.assign_zero.description">Description</a>
</h6>
<p>
The assign_zero function initializes a 2D or 3D point or box with coordinates
@@ -40,7 +40,7 @@ assign zero values to a box, point
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_zero.h1"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_zero.synopsis"></a></span><a class="link" href="assign_zero.html#geometry.reference.algorithms.assign.assign_zero.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_zero.synopsis"></a></span><a class="link" href="assign_zero.html#geometry.reference.algorithms.assign.assign_zero.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ assign zero values to a box, point
</p>
<h6>
<a name="geometry.reference.algorithms.assign.assign_zero.h2"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_zero.parameters"></a></span><a class="link" href="assign_zero.html#geometry.reference.algorithms.assign.assign_zero.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_zero.parameters"></a></span><a class="link" href="assign_zero.html#geometry.reference.algorithms.assign.assign_zero.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -106,13 +106,13 @@ assign zero values to a box, point
</table></div>
<h6>
<a name="geometry.reference.algorithms.assign.assign_zero.h3"></a>
- <span><a name="geometry.reference.algorithms.assign.assign_zero.header"></a></span><a class="link" href="assign_zero.html#geometry.reference.algorithms.assign.assign_zero.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.assign.assign_zero.header"></a></span><a class="link" href="assign_zero.html#geometry.reference.algorithms.assign.assign_zero.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -123,8 +123,8 @@ assign zero values to a box, point
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -132,7 +132,7 @@ assign zero values to a box, point
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="assign_values_4_3_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../append.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="assign_values_5_4_coordinate_values.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../append.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/buffer.html b/libs/geometry/doc/html/geometry/reference/algorithms/buffer.html
index 44ba2ebcb4..f37ab9e429 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/buffer.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/buffer.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>buffer</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="append.html" title="append">
-<link rel="next" href="buffer/buffer.html" title="buffer">
+<link rel="next" href="buffer/buffer_4.html" title="buffer">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,21 +20,23 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="append.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="buffer/buffer.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="append.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="buffer/buffer_4.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.buffer"></a><a class="link" href="buffer.html" title="buffer">buffer</a>
</h4></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="buffer/buffer.html">buffer</a></span></dt>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="buffer/buffer_4.html">buffer</a></span></dt>
+<dt><span class="section"><a href="buffer/buffer_7_with_strategies.html">buffer
+ (with strategies)</a></span></dt>
<dt><span class="section"><a href="buffer/return_buffer.html">return_buffer</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -42,7 +44,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="append.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="buffer/buffer.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="append.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="buffer/buffer_4.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer.html b/libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer_4.html
index 3b1eec747a..d03a85a932 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer_4.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>buffer</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../buffer.html" title="buffer">
<link rel="prev" href="../buffer.html" title="buffer">
-<link rel="next" href="return_buffer.html" title="return_buffer">
+<link rel="next" href="buffer_7_with_strategies.html" title="buffer (with strategies)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../buffer.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../buffer.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="return_buffer.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../buffer.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../buffer.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="buffer_7_with_strategies.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
-<a name="geometry.reference.algorithms.buffer.buffer"></a><a class="link" href="buffer.html" title="buffer">buffer</a>
+<a name="geometry.reference.algorithms.buffer.buffer_4"></a><a class="link" href="buffer_4.html" title="buffer">buffer</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id836339"></a>
+ <a class="indexterm" name="idp110573344"></a>
Calculates the buffer of a geometry.
</p>
<h6>
-<a name="geometry.reference.algorithms.buffer.buffer.h0"></a>
- <span><a name="geometry.reference.algorithms.buffer.buffer.description"></a></span><a class="link" href="buffer.html#geometry.reference.algorithms.buffer.buffer.description">Description</a>
+<a name="geometry.reference.algorithms.buffer.buffer_4.h0"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_4.description"></a></span><a class="link" href="buffer_4.html#geometry.reference.algorithms.buffer.buffer_4.description">Description</a>
</h6>
<p>
The free function buffer calculates the buffer (a polygon being the spatial
@@ -40,18 +40,19 @@ Calculates the buffer of a geometry.
of a geometry.
</p>
<h6>
-<a name="geometry.reference.algorithms.buffer.buffer.h1"></a>
- <span><a name="geometry.reference.algorithms.buffer.buffer.synopsis"></a></span><a class="link" href="buffer.html#geometry.reference.algorithms.buffer.buffer.synopsis">Synopsis</a>
+<a name="geometry.reference.algorithms.buffer.buffer_4.h1"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_4.synopsis"></a></span><a class="link" href="buffer_4.html#geometry.reference.algorithms.buffer.buffer_4.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Input</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Output</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Distance</span><span class="special">&gt;</span>
-<span class="keyword">void</span> <span class="identifier">buffer</span><span class="special">(</span><span class="identifier">Input</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry_in</span><span class="special">,</span> <span class="identifier">Output</span> <span class="special">&amp;</span> <span class="identifier">geometry_out</span><span class="special">,</span> <span class="identifier">Distance</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">distance</span><span class="special">,</span> <span class="identifier">Distance</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">chord_length</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span></pre>
+<span class="keyword">void</span> <span class="identifier">buffer</span><span class="special">(</span><span class="identifier">Input</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry_in</span><span class="special">,</span> <span class="identifier">Output</span> <span class="special">&amp;</span> <span class="identifier">geometry_out</span><span class="special">,</span> <span class="identifier">Distance</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">distance</span><span class="special">,</span>
+ <span class="identifier">Distance</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">chord_length</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span></pre>
<p>
</p>
<h6>
-<a name="geometry.reference.algorithms.buffer.buffer.h2"></a>
- <span><a name="geometry.reference.algorithms.buffer.buffer.parameters"></a></span><a class="link" href="buffer.html#geometry.reference.algorithms.buffer.buffer.parameters">Parameters</a>
+<a name="geometry.reference.algorithms.buffer.buffer_4.h2"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_4.parameters"></a></span><a class="link" href="buffer_4.html#geometry.reference.algorithms.buffer.buffer_4.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -175,14 +176,14 @@ Calculates the buffer of a geometry.
</tbody>
</table></div>
<h6>
-<a name="geometry.reference.algorithms.buffer.buffer.h3"></a>
- <span><a name="geometry.reference.algorithms.buffer.buffer.header"></a></span><a class="link" href="buffer.html#geometry.reference.algorithms.buffer.buffer.header">Header</a>
+<a name="geometry.reference.algorithms.buffer.buffer_4.h3"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_4.header"></a></span><a class="link" href="buffer_4.html#geometry.reference.algorithms.buffer.buffer_4.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -191,8 +192,8 @@ Calculates the buffer of a geometry.
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
-<a name="geometry.reference.algorithms.buffer.buffer.h4"></a>
- <span><a name="geometry.reference.algorithms.buffer.buffer.conformance"></a></span><a class="link" href="buffer.html#geometry.reference.algorithms.buffer.buffer.conformance">Conformance</a>
+<a name="geometry.reference.algorithms.buffer.buffer_4.h4"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_4.conformance"></a></span><a class="link" href="buffer_4.html#geometry.reference.algorithms.buffer.buffer_4.conformance">Conformance</a>
</h6>
<p>
The function buffer implements function Buffer from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -210,8 +211,8 @@ Calculates the buffer of a geometry.
</p></td></tr>
</table></div>
<h6>
-<a name="geometry.reference.algorithms.buffer.buffer.h5"></a>
- <span><a name="geometry.reference.algorithms.buffer.buffer.behavior"></a></span><a class="link" href="buffer.html#geometry.reference.algorithms.buffer.buffer.behavior">Behavior</a>
+<a name="geometry.reference.algorithms.buffer.buffer_4.h5"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_4.behavior"></a></span><a class="link" href="buffer_4.html#geometry.reference.algorithms.buffer.buffer_4.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -233,7 +234,7 @@ Calculates the buffer of a geometry.
<tbody><tr>
<td>
<p>
- Rectangle/Rectangle
+ Box/Box
</p>
</td>
<td>
@@ -248,8 +249,8 @@ Calculates the buffer of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -257,7 +258,7 @@ Calculates the buffer of a geometry.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../buffer.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../buffer.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="return_buffer.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../buffer.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../buffer.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="buffer_7_with_strategies.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer_7_with_strategies.html b/libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer_7_with_strategies.html
new file mode 100644
index 0000000000..9e72f16fa8
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/buffer/buffer_7_with_strategies.html
@@ -0,0 +1,588 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>buffer (with strategies)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../buffer.html" title="buffer">
+<link rel="prev" href="buffer_4.html" title="buffer">
+<link rel="next" href="return_buffer.html" title="return_buffer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="buffer_4.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../buffer.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="return_buffer.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies"></a><a class="link" href="buffer_7_with_strategies.html" title="buffer (with strategies)">buffer
+ (with strategies)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp110661744"></a>
+Calculates the buffer of a geometry.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h0"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.description"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.description">Description</a>
+ </h6>
+<p>
+ The free function buffer calculates the buffer (a polygon being the spatial
+ point set collection within a specified maximum distance from a geometry)
+ of a geometry.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h1"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.synopsis"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">GeometryIn</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MultiPolygon</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">DistanceStrategy</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">SideStrategy</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">JoinStrategy</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">EndStrategy</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">PointStrategy</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">buffer</span><span class="special">(</span><span class="identifier">GeometryIn</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry_in</span><span class="special">,</span> <span class="identifier">MultiPolygon</span> <span class="special">&amp;</span> <span class="identifier">geometry_out</span><span class="special">,</span> <span class="identifier">DistanceStrategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">distance_strategy</span><span class="special">,</span>
+ <span class="identifier">SideStrategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">side_strategy</span><span class="special">,</span> <span class="identifier">JoinStrategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">EndStrategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">end_strategy</span><span class="special">,</span>
+ <span class="identifier">PointStrategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">point_strategy</span><span class="special">)</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h2"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.parameters"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ GeometryIn const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry_in
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ A type fulfilling the MultiPolygon Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry_out
+ </p>
+ </td>
+<td>
+ <p>
+ output multi polygon (or std:: collection of polygons), will
+ contain a buffered version of the input geometry
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ DistanceStrategy const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ A strategy defining distance (or radius)
+ </p>
+ </td>
+<td>
+ <p>
+ distance_strategy
+ </p>
+ </td>
+<td>
+ <p>
+ The distance strategy to be used
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ SideStrategy const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ A strategy defining creation along sides
+ </p>
+ </td>
+<td>
+ <p>
+ side_strategy
+ </p>
+ </td>
+<td>
+ <p>
+ The side strategy to be used
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ JoinStrategy const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ A strategy defining creation around convex corners
+ </p>
+ </td>
+<td>
+ <p>
+ join_strategy
+ </p>
+ </td>
+<td>
+ <p>
+ The join strategy to be used
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ EndStrategy const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ A strategy defining creation at linestring ends
+ </p>
+ </td>
+<td>
+ <p>
+ end_strategy
+ </p>
+ </td>
+<td>
+ <p>
+ The end strategy to be used
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ PointStrategy const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ A strategy defining creation around points
+ </p>
+ </td>
+<td>
+ <p>
+ point_strategy
+ </p>
+ </td>
+<td>
+ <p>
+ The point strategy to be used
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h3"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.header"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h4"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.strategies"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.strategies">Strategies</a>
+ </h6>
+<p>
+ The 5 strategies give the user control to the generated buffer
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ convex corners can be rounded or sharp
+ </li>
+<li class="listitem">
+ line-ends can be rounded or flat
+ </li>
+<li class="listitem">
+ distance can be symmetric or assymetric, and can be specified as
+ negative (deflate)
+ </li>
+<li class="listitem">
+ around points the shape can be circular or square
+ </li>
+<li class="listitem">
+ the sides can be controlled (currently there is only one option provided)
+ </li>
+</ul></div>
+<p>
+ The next figure shows where in the generated buffer the strategies have
+ effect
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../img/algorithms/buffer_strategies.png" alt="buffer_strategies"></span>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h5"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.conformance"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.conformance">Conformance</a>
+ </h6>
+<p>
+ The function buffer implements function Buffer from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
+ Simple Feature Specification</a>.
+ </p>
+<p>
+ It is conformant if used with the following combination of strategies:
+ <a class="link" href="../../strategies/strategy_buffer_join_round.html" title="strategy::buffer::join_round">join_round</a>,
+ <a class="link" href="../../strategies/strategy_buffer_end_round.html" title="strategy::buffer::end_round">end_round</a>,
+ <a class="link" href="../../strategies/strategy_buffer_distance_symmetric.html" title="strategy::buffer::distance_symmetric">distance_symmetric</a>,
+ <a class="link" href="../../strategies/strategy_buffer_point_circle.html" title="strategy::buffer::point_circle">point_circle</a>,
+ side_straight
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h6"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.supported_geometries"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.supported_geometries">Supported
+ geometries</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ </th>
+<th>
+ <p>
+ 2D Cartesian
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Point
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Segment
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Box
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Ring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Polygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPoint
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiLinestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h7"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.examples"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.examples">Examples</a>
+ </h6>
+<p>
+ Shows how the buffer algorithm can be used to create a buffer of a linestring
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">coordinate_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="identifier">coordinate_type</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+
+ <span class="comment">// Declare strategies</span>
+ <span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">buffer_distance</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span>
+ <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">points_per_circle</span> <span class="special">=</span> <span class="number">36</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_symmetric</span><span class="special">&lt;</span><span class="identifier">coordinate_type</span><span class="special">&gt;</span> <span class="identifier">distance_strategy</span><span class="special">(</span><span class="identifier">buffer_distance</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_round</span> <span class="identifier">join_strategy</span><span class="special">(</span><span class="identifier">points_per_circle</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_round</span> <span class="identifier">end_strategy</span><span class="special">(</span><span class="identifier">points_per_circle</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_circle</span> <span class="identifier">circle_strategy</span><span class="special">(</span><span class="identifier">points_per_circle</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">side_straight</span> <span class="identifier">side_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare output</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">;</span>
+
+ <span class="comment">// Declare/fill a linestring</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">ls</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"LINESTRING(0 0,4 5,7 4,10 6)"</span><span class="special">,</span> <span class="identifier">ls</span><span class="special">);</span>
+
+ <span class="comment">// Create the buffer of a linestring</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">ls</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
+ <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
+ <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">circle_strategy</span><span class="special">);</span>
+
+
+ <span class="comment">// Declare/fill a multi point</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_point</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">mp</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"MULTIPOINT((3 3),(4 4),(6 2))"</span><span class="special">,</span> <span class="identifier">mp</span><span class="special">);</span>
+
+ <span class="comment">// Create the buffer of a multi point</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">mp</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
+ <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
+ <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">circle_strategy</span><span class="special">);</span>
+
+
+ <span class="comment">// Declare/fill a multi_polygon</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">mpol</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"MULTIPOLYGON(((0 1,2 5,5 3,0 1)),((1 1,5 2,5 0,1 1)))"</span><span class="special">,</span> <span class="identifier">mpol</span><span class="special">);</span>
+
+ <span class="comment">// Create the buffer of a multi polygon</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">mpol</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
+ <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
+ <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">circle_strategy</span><span class="special">);</span>
+
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h8"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.the_linestring_case"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.the_linestring_case">The
+ linestring case</a>
+ </h6>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../img/algorithms/buffer_linestring.png" alt="buffer_linestring"></span>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h9"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.the_multi_point_case"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.the_multi_point_case">The
+ multi_point case</a>
+ </h6>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../img/algorithms/buffer_multi_point.png" alt="buffer_multi_point"></span>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h10"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.the_multi_polygon_case"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.the_multi_polygon_case">The
+ multi_polygon case</a>
+ </h6>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../img/algorithms/buffer_multi_polygon.png" alt="buffer_multi_polygon"></span>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.h11"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.buffer_7_with_strategies.available_strategies"></a></span><a class="link" href="buffer_7_with_strategies.html#geometry.reference.algorithms.buffer.buffer_7_with_strategies.available_strategies">Available
+ Strategies</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ JoinStrategy: <a class="link" href="../../strategies/strategy_buffer_join_round.html" title="strategy::buffer::join_round">join_round
+ (cartesian)</a>
+ </li>
+<li class="listitem">
+ JoinStrategy: <a class="link" href="../../strategies/strategy_buffer_join_miter.html" title="strategy::buffer::join_miter">join_miter
+ (cartesian)</a>
+ </li>
+<li class="listitem">
+ EndStrategy: <a class="link" href="../../strategies/strategy_buffer_end_round.html" title="strategy::buffer::end_round">end_round
+ (cartesian)</a>
+ </li>
+<li class="listitem">
+ EndStrategy: <a class="link" href="../../strategies/strategy_buffer_end_flat.html" title="strategy::buffer::end_flat">end_flat
+ (cartesian)</a>
+ </li>
+<li class="listitem">
+ DistanceStrategy: <a class="link" href="../../strategies/strategy_buffer_distance_symmetric.html" title="strategy::buffer::distance_symmetric">distance_symmetric</a>
+ </li>
+<li class="listitem">
+ DistanceStrategy: <a class="link" href="../../strategies/strategy_buffer_distance_asymmetric.html" title="strategy::buffer::distance_asymmetric">distance_asymmetric</a>
+ </li>
+<li class="listitem">
+ PointStrategy: <a class="link" href="../../strategies/strategy_buffer_point_circle.html" title="strategy::buffer::point_circle">point_circle
+ (cartesian)</a>
+ </li>
+<li class="listitem">
+ PointStrategy: <a class="link" href="../../strategies/strategy_buffer_point_square.html" title="strategy::buffer::point_square">point_square
+ (cartesian)</a>
+ </li>
+<li class="listitem">
+ SideStrategy: <a class="link" href="../../strategies/strategy_buffer_side_straight.html" title="strategy::buffer::side_straight">side_straight
+ (cartesian)</a>
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="buffer_4.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../buffer.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="return_buffer.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/buffer/return_buffer.html b/libs/geometry/doc/html/geometry/reference/algorithms/buffer/return_buffer.html
index 2d269de099..d421bdf758 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/buffer/return_buffer.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/buffer/return_buffer.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>return_buffer</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../buffer.html" title="buffer">
-<link rel="prev" href="buffer.html" title="buffer">
+<link rel="prev" href="buffer_7_with_strategies.html" title="buffer (with strategies)">
<link rel="next" href="../centroid.html" title="centroid">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="buffer.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../buffer.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../centroid.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="buffer_7_with_strategies.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../buffer.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../centroid.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="geometry.reference.algorithms.buffer.return_buffer"></a><a class="link" href="return_buffer.html" title="return_buffer">return_buffer</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id837113"></a>
+ <a class="indexterm" name="idp111034704"></a>
Calculates the buffer of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.buffer.return_buffer.h0"></a>
- <span><a name="geometry.reference.algorithms.buffer.return_buffer.description"></a></span><a class="link" href="return_buffer.html#geometry.reference.algorithms.buffer.return_buffer.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.return_buffer.description"></a></span><a class="link" href="return_buffer.html#geometry.reference.algorithms.buffer.return_buffer.description">Description</a>
</h6>
<p>
The free function return_buffer calculates the buffer (a polygon being
@@ -43,17 +43,17 @@ Calculates the buffer of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.buffer.return_buffer.h1"></a>
- <span><a name="geometry.reference.algorithms.buffer.return_buffer.synopsis"></a></span><a class="link" href="return_buffer.html#geometry.reference.algorithms.buffer.return_buffer.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.return_buffer.synopsis"></a></span><a class="link" href="return_buffer.html#geometry.reference.algorithms.buffer.return_buffer.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Output</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Input</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="special">&gt;</span>
-<span class="identifier">Output</span> <span class="identifier">return_buffer</span><span class="special">(</span><span class="identifier">Input</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">distance</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">chord_length</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span></pre>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Output</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Input</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Distance</span><span class="special">&gt;</span>
+<span class="identifier">Output</span> <span class="identifier">return_buffer</span><span class="special">(</span><span class="identifier">Input</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Distance</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">distance</span><span class="special">,</span> <span class="identifier">Distance</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">chord_length</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.algorithms.buffer.return_buffer.h2"></a>
- <span><a name="geometry.reference.algorithms.buffer.return_buffer.parameters"></a></span><a class="link" href="return_buffer.html#geometry.reference.algorithms.buffer.return_buffer.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.return_buffer.parameters"></a></span><a class="link" href="return_buffer.html#geometry.reference.algorithms.buffer.return_buffer.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -110,28 +110,6 @@ Calculates the buffer of a geometry.
<tr>
<td>
<p>
- Distance
- </p>
- </td>
-<td>
- <p>
- numerical type (int, double, ttmath, ...)
- </p>
- </td>
-<td>
- <p>
- -
- </p>
- </td>
-<td>
- <p>
- Must be specified
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
Input const &amp;
</p>
</td>
@@ -154,10 +132,13 @@ Calculates the buffer of a geometry.
<tr>
<td>
<p>
- T const &amp;
+ Distance const &amp;
</p>
</td>
<td>
+ <p>
+ numerical type (int, double, ttmath, ...)
+ </p>
</td>
<td>
<p>
@@ -173,10 +154,13 @@ Calculates the buffer of a geometry.
<tr>
<td>
<p>
- T const &amp;
+ Distance const &amp;
</p>
</td>
<td>
+ <p>
+ numerical type (int, double, ttmath, ...)
+ </p>
</td>
<td>
<p>
@@ -186,7 +170,7 @@ Calculates the buffer of a geometry.
<td>
<p>
(optional) The length of the chord's in the generated arcs
- around points or bends
+ around points or bends (RESERVED, NOT YET USED)
</p>
</td>
</tr>
@@ -194,20 +178,20 @@ Calculates the buffer of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.buffer.return_buffer.h3"></a>
- <span><a name="geometry.reference.algorithms.buffer.return_buffer.returns"></a></span><a class="link" href="return_buffer.html#geometry.reference.algorithms.buffer.return_buffer.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.return_buffer.returns"></a></span><a class="link" href="return_buffer.html#geometry.reference.algorithms.buffer.return_buffer.returns">Returns</a>
</h6>
<p>
The calculated buffer
</p>
<h6>
<a name="geometry.reference.algorithms.buffer.return_buffer.h4"></a>
- <span><a name="geometry.reference.algorithms.buffer.return_buffer.header"></a></span><a class="link" href="return_buffer.html#geometry.reference.algorithms.buffer.return_buffer.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.buffer.return_buffer.header"></a></span><a class="link" href="return_buffer.html#geometry.reference.algorithms.buffer.return_buffer.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -218,8 +202,8 @@ Calculates the buffer of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -227,7 +211,7 @@ Calculates the buffer of a geometry.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="buffer.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../buffer.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../centroid.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="buffer_7_with_strategies.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../buffer.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../centroid.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/centroid.html b/libs/geometry/doc/html/geometry/reference/algorithms/centroid.html
index 03e9db675b..b10bdb5180 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/centroid.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/centroid.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>centroid</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="buffer/return_buffer.html" title="return_buffer">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.centroid"></a><a class="link" href="centroid.html" title="centroid">centroid</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="centroid/centroid_3_with_strategy.html">centroid
(with strategy)</a></span></dt>
<dt><span class="section"><a href="centroid/centroid_2.html">centroid</a></span></dt>
@@ -37,8 +37,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_2.html
index 695caaa31e..f7bbfad8ef 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_2.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>centroid</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../centroid.html" title="centroid">
<link rel="prev" href="centroid_3_with_strategy.html" title="centroid (with strategy)">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.centroid.centroid_2"></a><a class="link" href="centroid_2.html" title="centroid">centroid</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id839513"></a>
+ <a class="indexterm" name="idp111275152"></a>
Calculates the centroid of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_2.h0"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_2.description"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.description"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.description">Description</a>
</h6>
<p>
The free function centroid calculates the geometric center (or: center
@@ -41,7 +41,7 @@ Calculates the centroid of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_2.h1"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_2.synopsis"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.synopsis"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,7 +51,7 @@ Calculates the centroid of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_2.h2"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_2.parameters"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.parameters"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -131,13 +131,13 @@ Calculates the centroid of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_2.h3"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_2.header"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.header"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -147,7 +147,7 @@ Calculates the centroid of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_2.h4"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_2.conformance"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.conformance"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.conformance">Conformance</a>
</h6>
<p>
The function centroid implements function Centroid from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -155,7 +155,7 @@ Calculates the centroid of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_2.h5"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_2.behavior"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.behavior"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -263,7 +263,7 @@ Calculates the centroid of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_2.h6"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_2.supported_geometries"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.supported_geometries"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -444,14 +444,14 @@ Calculates the centroid of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_2.h7"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_2.complexity"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.complexity"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_2.h8"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_2.example"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_2.example"></a></span><a class="link" href="centroid_2.html#geometry.reference.algorithms.centroid.centroid_2.example">Example</a>
</h6>
<p>
Shows calculation of a centroid of a polygon
@@ -465,8 +465,6 @@ Calculates the centroid of a geometry.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
@@ -501,8 +499,8 @@ Calculates the centroid of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_3_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_3_with_strategy.html
index 0185b39b9b..9f8de98be0 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_3_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/centroid_3_with_strategy.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>centroid (with strategy)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../centroid.html" title="centroid">
<link rel="prev" href="../centroid.html" title="centroid">
@@ -28,12 +28,12 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id837812"></a>
+ <a class="indexterm" name="idp111111600"></a>
Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.h0"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.description"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.description"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.description">Description</a>
</h6>
<p>
The free function centroid calculates the geometric center (or: center
@@ -44,7 +44,7 @@ Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.h1"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.synopsis"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.synopsis"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.h2"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.parameters"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.parameters"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -157,13 +157,13 @@ Calculates the centroid of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.h3"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.header"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.header"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -173,7 +173,7 @@ Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.h4"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.conformance"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.conformance"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.conformance">Conformance</a>
</h6>
<p>
The function centroid implements function Centroid from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -181,7 +181,7 @@ Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.h5"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.behavior"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.behavior"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -289,7 +289,7 @@ Calculates the centroid of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.h6"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.supported_geometries"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.supported_geometries"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -470,25 +470,25 @@ Calculates the centroid of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.h7"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.complexity"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.complexity"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.h8"></a>
- <span><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.available_strategies"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.available_strategies">Available
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.centroid_3_with_strategy.available_strategies"></a></span><a class="link" href="centroid_3_with_strategy.html#geometry.reference.algorithms.centroid.centroid_3_with_strategy.available_strategies">Available
Strategies</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../../strategies/strategy_centroid_bashein_detmer.html" title="strategy::centroid::bashein_detmer">Bashein
Detmer (cartesian)</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_1.html b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_1.html
index 6d187bf146..db46cb468e 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_1.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_1.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>return_centroid</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../centroid.html" title="centroid">
<link rel="prev" href="centroid_2.html" title="centroid">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.centroid.return_centroid_1"></a><a class="link" href="return_centroid_1.html" title="return_centroid">return_centroid</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id841512"></a>
+ <a class="indexterm" name="idp111502112"></a>
Calculates the centroid of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_1.h0"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_1.description"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_1.description"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.description">Description</a>
</h6>
<p>
The free function centroid calculates the geometric center (or: center
@@ -42,7 +42,7 @@ Calculates the centroid of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_1.h1"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_1.synopsis"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_1.synopsis"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -52,7 +52,7 @@ Calculates the centroid of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_1.h2"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_1.parameters"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_1.parameters"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -132,20 +132,20 @@ Calculates the centroid of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_1.h3"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_1.returns"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_1.returns"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.returns">Returns</a>
</h6>
<p>
The calculated centroid
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_1.h4"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_1.header"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_1.header"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -155,7 +155,7 @@ Calculates the centroid of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_1.h5"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_1.conformance"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_1.conformance"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.conformance">Conformance</a>
</h6>
<p>
The function centroid implements function Centroid from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -163,7 +163,7 @@ Calculates the centroid of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_1.h6"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_1.behavior"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_1.behavior"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -271,7 +271,7 @@ Calculates the centroid of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_1.h7"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_1.supported_geometries"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_1.supported_geometries"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -452,7 +452,7 @@ Calculates the centroid of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_1.h8"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_1.complexity"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_1.complexity"></a></span><a class="link" href="return_centroid_1.html#geometry.reference.algorithms.centroid.return_centroid_1.complexity">Complexity</a>
</h6>
<p>
Linear
@@ -460,8 +460,8 @@ Calculates the centroid of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_2_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_2_with_strategy.html
index 04e764eeac..97932fcd16 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_2_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/centroid/return_centroid_2_with_strategy.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>return_centroid (with strategy)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../centroid.html" title="centroid">
<link rel="prev" href="return_centroid_1.html" title="return_centroid">
@@ -28,12 +28,12 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id842819"></a>
+ <a class="indexterm" name="idp111651328"></a>
Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.h0"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.description"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.description"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.description">Description</a>
</h6>
<p>
The free function centroid calculates the geometric center (or: center
@@ -46,7 +46,7 @@ Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.h1"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.synopsis"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.synopsis"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -56,7 +56,7 @@ Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.h2"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.parameters"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.parameters"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -158,20 +158,20 @@ Calculates the centroid of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.h3"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.returns"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.returns"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.returns">Returns</a>
</h6>
<p>
The calculated centroid
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.h4"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.header"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.header"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -181,7 +181,7 @@ Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.h5"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.conformance"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.conformance"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.conformance">Conformance</a>
</h6>
<p>
The function centroid implements function Centroid from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -189,7 +189,7 @@ Calculates the centroid of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.h6"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.behavior"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.behavior"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -297,7 +297,7 @@ Calculates the centroid of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.h7"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.supported_geometries"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.supported_geometries"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -478,25 +478,25 @@ Calculates the centroid of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.h8"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.complexity"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.complexity"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.h9"></a>
- <span><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.available_strategies"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.available_strategies">Available
+ <span class="phrase"><a name="geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.available_strategies"></a></span><a class="link" href="return_centroid_2_with_strategy.html#geometry.reference.algorithms.centroid.return_centroid_2_with_strategy.available_strategies">Available
Strategies</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../../strategies/strategy_centroid_bashein_detmer.html" title="strategy::centroid::bashein_detmer">Bashein
Detmer (cartesian)</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/clear.html b/libs/geometry/doc/html/geometry/reference/algorithms/clear.html
index fdc81f31e1..6efa346f31 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/clear.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/clear.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>clear</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="centroid/return_centroid_2_with_strategy.html" title="return_centroid (with strategy)">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.clear"></a><a class="link" href="clear.html" title="clear">clear</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id844256"></a>
+ <a class="indexterm" name="idp111815792"></a>
Clears a linestring, ring or polygon (exterior+interiors) or multi*.
</p>
<h6>
<a name="geometry.reference.algorithms.clear.h0"></a>
- <span><a name="geometry.reference.algorithms.clear.description"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.clear.description"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.description">Description</a>
</h6>
<p>
Generic function to clear a geometry. All points will be removed from the
@@ -44,7 +44,7 @@ Clears a linestring, ring or polygon (exterior+interiors) or multi*.
</p>
<h6>
<a name="geometry.reference.algorithms.clear.h1"></a>
- <span><a name="geometry.reference.algorithms.clear.synopsis"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.clear.synopsis"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Clears a linestring, ring or polygon (exterior+interiors) or multi*.
</p>
<h6>
<a name="geometry.reference.algorithms.clear.h2"></a>
- <span><a name="geometry.reference.algorithms.clear.parameters"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.clear.parameters"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -110,13 +110,13 @@ Clears a linestring, ring or polygon (exterior+interiors) or multi*.
</table></div>
<h6>
<a name="geometry.reference.algorithms.clear.h3"></a>
- <span><a name="geometry.reference.algorithms.clear.header"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.clear.header"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -126,7 +126,7 @@ Clears a linestring, ring or polygon (exterior+interiors) or multi*.
</p>
<h6>
<a name="geometry.reference.algorithms.clear.h4"></a>
- <span><a name="geometry.reference.algorithms.clear.conformance"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.clear.conformance"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.conformance">Conformance</a>
</h6>
<p>
The function clear is not defined by OGC.
@@ -136,7 +136,7 @@ Clears a linestring, ring or polygon (exterior+interiors) or multi*.
</p>
<h6>
<a name="geometry.reference.algorithms.clear.h5"></a>
- <span><a name="geometry.reference.algorithms.clear.supported_geometries"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.clear.supported_geometries"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -265,11 +265,23 @@ Clears a linestring, ring or polygon (exterior+interiors) or multi*.
</p>
</td>
</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.algorithms.clear.h6"></a>
- <span><a name="geometry.reference.algorithms.clear.behavior"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.clear.behavior"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -316,7 +328,7 @@ Clears a linestring, ring or polygon (exterior+interiors) or multi*.
<tr>
<td>
<p>
- Rectangle
+ Box
</p>
</td>
<td>
@@ -401,14 +413,14 @@ Clears a linestring, ring or polygon (exterior+interiors) or multi*.
</table></div>
<h6>
<a name="geometry.reference.algorithms.clear.h7"></a>
- <span><a name="geometry.reference.algorithms.clear.complexity"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.clear.complexity"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.complexity">Complexity</a>
</h6>
<p>
Constant
</p>
<h6>
<a name="geometry.reference.algorithms.clear.h8"></a>
- <span><a name="geometry.reference.algorithms.clear.example"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.clear.example"></a></span><a class="link" href="clear.html#geometry.reference.algorithms.clear.example">Example</a>
</h6>
<p>
Shows how to clear a ring or polygon
@@ -467,8 +479,8 @@ Clears a linestring, ring or polygon (exterior+interiors) or multi*.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/convert.html b/libs/geometry/doc/html/geometry/reference/algorithms/convert.html
index 3f9e229972..db8432a965 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/convert.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/convert.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>convert</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="clear.html" title="clear">
@@ -27,23 +27,23 @@
<a name="geometry.reference.algorithms.convert"></a><a class="link" href="convert.html" title="convert">convert</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id846614"></a>
+ <a class="indexterm" name="idp112102320"></a>
Converts one geometry to another geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.convert.h0"></a>
- <span><a name="geometry.reference.algorithms.convert.description"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convert.description"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.description">Description</a>
</h6>
<p>
The convert algorithm converts one geometry, e.g. a BOX, to another geometry,
- e.g. a RING. This only if it is possible and applicable. If the point-order
+ e.g. a RING. This only works if it is possible and applicable. If the point-order
is different, or the closure is different between two geometry types, it
will be converted correctly by explicitly reversing the points or closing
or opening the polygon rings.
</p>
<h6>
<a name="geometry.reference.algorithms.convert.h1"></a>
- <span><a name="geometry.reference.algorithms.convert.synopsis"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convert.synopsis"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -53,7 +53,7 @@ Converts one geometry to another geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.convert.h2"></a>
- <span><a name="geometry.reference.algorithms.convert.parameters"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convert.parameters"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -133,13 +133,13 @@ Converts one geometry to another geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.convert.h3"></a>
- <span><a name="geometry.reference.algorithms.convert.header"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convert.header"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -149,14 +149,14 @@ Converts one geometry to another geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.convert.h4"></a>
- <span><a name="geometry.reference.algorithms.convert.conformance"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convert.conformance"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.conformance">Conformance</a>
</h6>
<p>
The function convert is not defined by OGC.
</p>
<h6>
<a name="geometry.reference.algorithms.convert.h5"></a>
- <span><a name="geometry.reference.algorithms.convert.supported_geometries"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.convert.supported_geometries"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -705,14 +705,14 @@ Converts one geometry to another geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.convert.h6"></a>
- <span><a name="geometry.reference.algorithms.convert.complexity"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convert.complexity"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.convert.h7"></a>
- <span><a name="geometry.reference.algorithms.convert.example"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convert.example"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.example">Example</a>
</h6>
<p>
Shows how to convert a geometry into another geometry
@@ -769,10 +769,10 @@ point tuples: (1, 1)
</pre>
<h6>
<a name="geometry.reference.algorithms.convert.h8"></a>
- <span><a name="geometry.reference.algorithms.convert.see_also"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.convert.see_also"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="assign/assign.html" title="assign">assign</a>
</li></ul></div>
<div class="note"><table border="0" summary="Note">
@@ -788,8 +788,8 @@ point tuples: (1, 1)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/convex_hull.html b/libs/geometry/doc/html/geometry/reference/algorithms/convex_hull.html
index 70170ea1ce..da67f0c4a3 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/convex_hull.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/convex_hull.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>convex_hull</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="convert.html" title="convert">
@@ -27,29 +27,29 @@
<a name="geometry.reference.algorithms.convex_hull"></a><a class="link" href="convex_hull.html" title="convex_hull">convex_hull</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id850247"></a>
+ <a class="indexterm" name="idp112536816"></a>
Calculates the convex hull of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.convex_hull.h0"></a>
- <span><a name="geometry.reference.algorithms.convex_hull.description"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convex_hull.description"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.description">Description</a>
</h6>
<p>
The free function convex_hull calculates the convex hull of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.convex_hull.h1"></a>
- <span><a name="geometry.reference.algorithms.convex_hull.synopsis"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convex_hull.synopsis"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">OutputGeometry</span><span class="special">,</span> <span class="special">,</span> <span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">OutputGeometry</span><span class="special">&gt;</span>
<span class="keyword">void</span> <span class="identifier">convex_hull</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">OutputGeometry</span> <span class="special">&amp;</span> <span class="identifier">hull</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.algorithms.convex_hull.h2"></a>
- <span><a name="geometry.reference.algorithms.convex_hull.parameters"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convex_hull.parameters"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -84,56 +84,15 @@ Calculates the convex hull of a geometry.
<tr>
<td>
<p>
- Geometry1
- </p>
- </td>
-<td>
- <p>
- Any type fulfilling a Geometry Concept
- </p>
- </td>
-<td>
- <p>
- -
- </p>
- </td>
-<td>
- <p>
- Must be specified
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Geometry2
- </p>
- </td>
-<td>
- <p>
- Any type fulfilling a Geometry Concept
- </p>
- </td>
-<td>
- <p>
- -
- </p>
- </td>
-<td>
- <p>
- Must be specified
+ Geometry const &amp;
</p>
</td>
-</tr>
-<tr>
<td>
<p>
- Geometry const &amp;
+ the input geometry type
</p>
</td>
<td>
- </td>
-<td>
<p>
geometry
</p>
@@ -151,6 +110,9 @@ Calculates the convex hull of a geometry.
</p>
</td>
<td>
+ <p>
+ the output geometry type
+ </p>
</td>
<td>
<p>
@@ -167,13 +129,13 @@ Calculates the convex hull of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.convex_hull.h3"></a>
- <span><a name="geometry.reference.algorithms.convex_hull.header"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convex_hull.header"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -183,14 +145,14 @@ Calculates the convex hull of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.convex_hull.h4"></a>
- <span><a name="geometry.reference.algorithms.convex_hull.conformance"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convex_hull.conformance"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.conformance">Conformance</a>
</h6>
<p>
The function convex_hull implements function ConvexHull() from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC Simple Feature Specification</a>.
</p>
<h6>
<a name="geometry.reference.algorithms.convex_hull.h5"></a>
- <span><a name="geometry.reference.algorithms.convex_hull.supported_geometries"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.convex_hull.supported_geometries"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -323,14 +285,14 @@ Calculates the convex hull of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.convex_hull.h6"></a>
- <span><a name="geometry.reference.algorithms.convex_hull.complexity"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convex_hull.complexity"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.complexity">Complexity</a>
</h6>
<p>
- Logarithmic
+ Linearithmic
</p>
<h6>
<a name="geometry.reference.algorithms.convex_hull.h7"></a>
- <span><a name="geometry.reference.algorithms.convex_hull.example"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.convex_hull.example"></a></span><a class="link" href="convex_hull.html#geometry.reference.algorithms.convex_hull.example">Example</a>
</h6>
<p>
Shows how to generate the convex_hull of a geometry
@@ -381,8 +343,8 @@ hull: (((2, 1.3), (2.4, 1.7), (4.1, 3), (5.3, 2.6), (5.4, 1.2), (4.9, 0.8), (2.9
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/correct.html b/libs/geometry/doc/html/geometry/reference/algorithms/correct.html
index 95eea810bf..4f8fef55be 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/correct.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/correct.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>correct</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="convex_hull.html" title="convex_hull">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.correct"></a><a class="link" href="correct.html" title="correct">correct</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id851925"></a>
+ <a class="indexterm" name="idp112727104"></a>
Corrects a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.correct.h0"></a>
- <span><a name="geometry.reference.algorithms.correct.description"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.correct.description"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.description">Description</a>
</h6>
<p>
Corrects a geometry: all rings which are wrongly oriented with respect
@@ -42,7 +42,7 @@ Corrects a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.correct.h1"></a>
- <span><a name="geometry.reference.algorithms.correct.synopsis"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.correct.synopsis"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -52,7 +52,7 @@ Corrects a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.correct.h2"></a>
- <span><a name="geometry.reference.algorithms.correct.parameters"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.correct.parameters"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -108,13 +108,13 @@ Corrects a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.correct.h3"></a>
- <span><a name="geometry.reference.algorithms.correct.header"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.correct.header"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -124,14 +124,14 @@ Corrects a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.correct.h4"></a>
- <span><a name="geometry.reference.algorithms.correct.conformance"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.correct.conformance"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.conformance">Conformance</a>
</h6>
<p>
The function correct is not defined by OGC.
</p>
<h6>
<a name="geometry.reference.algorithms.correct.h5"></a>
- <span><a name="geometry.reference.algorithms.correct.supported_geometries"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.correct.supported_geometries"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -260,11 +260,23 @@ Corrects a geometry.
</p>
</td>
</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.algorithms.correct.h6"></a>
- <span><a name="geometry.reference.algorithms.correct.behavior"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.correct.behavior"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -323,12 +335,12 @@ Corrects a geometry.
<tr>
<td>
<p>
- Rectangle
+ Box
</p>
</td>
<td>
<p>
- Rectangle is corrected with respect to minimal and maximal corners
+ Box is corrected with respect to minimal and maximal corners
</p>
</td>
</tr>
@@ -348,14 +360,14 @@ Corrects a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.correct.h7"></a>
- <span><a name="geometry.reference.algorithms.correct.complexity"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.correct.complexity"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.correct.h8"></a>
- <span><a name="geometry.reference.algorithms.correct.example"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.correct.example"></a></span><a class="link" href="correct.html#geometry.reference.algorithms.correct.example">Example</a>
</h6>
<p>
Shows how to correct a polygon with respect to its orientation and closure
@@ -417,8 +429,8 @@ Corrects a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by.html b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by.html
index 479e55d09f..f307a839a6 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>covered_by</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="correct.html" title="correct">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.covered_by"></a><a class="link" href="covered_by.html" title="covered_by">covered_by</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="covered_by/covered_by_2.html">covered_by</a></span></dt>
<dt><span class="section"><a href="covered_by/covered_by_3_with_strategy.html">covered_by
(with strategy)</a></span></dt>
@@ -34,8 +34,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_2.html
index 5852a2c2c4..55df12e58d 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_2.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>covered_by</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../covered_by.html" title="covered_by">
<link rel="prev" href="../covered_by.html" title="covered_by">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.covered_by.covered_by_2"></a><a class="link" href="covered_by_2.html" title="covered_by">covered_by</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id853953"></a>
+ <a class="indexterm" name="idp112971648"></a>
Checks if the first geometry is inside or on border the second geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_2.h0"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_2.description"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_2.description"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.description">Description</a>
</h6>
<p>
The free function covered_by checks if the first geometry is inside or
@@ -40,7 +40,7 @@ Checks if the first geometry is inside or on border the second geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_2.h1"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_2.synopsis"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_2.synopsis"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Checks if the first geometry is inside or on border the second geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_2.h2"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_2.parameters"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_2.parameters"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -132,20 +132,20 @@ Checks if the first geometry is inside or on border the second geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_2.h3"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_2.returns"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_2.returns"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.returns">Returns</a>
</h6>
<p>
true if geometry1 is inside of or on the border of geometry2, else false
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_2.h4"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_2.header"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_2.header"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -155,7 +155,7 @@ Checks if the first geometry is inside or on border the second geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_2.h5"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_2.conformance"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_2.conformance"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.conformance">Conformance</a>
</h6>
<p>
The function covered_by is not defined by OGC.
@@ -173,7 +173,7 @@ Checks if the first geometry is inside or on border the second geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_2.h6"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_2.supported_geometries"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_2.supported_geometries"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -188,6 +188,7 @@ Checks if the first geometry is inside or on border the second geometry.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -237,6 +238,11 @@ Checks if the first geometry is inside or on border the second geometry.
MultiPolygon
</p>
</th>
+<th>
+ <p>
+ Variant
+ </p>
+ </th>
</tr></thead>
<tbody>
<tr>
@@ -247,6 +253,11 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -299,6 +310,11 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -394,6 +410,11 @@ Checks if the first geometry is inside or on border the second geometry.
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
@@ -403,7 +424,7 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -418,7 +439,7 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -438,6 +459,11 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -470,17 +496,17 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -490,12 +516,17 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -522,17 +553,17 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -542,12 +573,17 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -559,6 +595,11 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -611,6 +652,11 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -621,6 +667,11 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -636,6 +687,11 @@ Checks if the first geometry is inside or on border the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -644,6 +700,18 @@ Checks if the first geometry is inside or on border the second geometry.
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
<td>
<p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
@@ -654,11 +722,46 @@ Checks if the first geometry is inside or on border the second geometry.
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
<p>
- MultiPolygon
+ Variant
</p>
</td>
<td>
@@ -706,6 +809,11 @@ Checks if the first geometry is inside or on border the second geometry.
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
</tr>
</tbody>
</table></div>
@@ -722,17 +830,17 @@ Checks if the first geometry is inside or on border the second geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_2.h7"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_2.complexity"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_2.complexity"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_2.h8"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_2.see_also"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_2.see_also"></a></span><a class="link" href="covered_by_2.html#geometry.reference.algorithms.covered_by.covered_by_2.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../within.html" title="within">within</a>
</li></ul></div>
<div class="note"><table border="0" summary="Note">
@@ -748,8 +856,8 @@ Checks if the first geometry is inside or on border the second geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_3_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_3_with_strategy.html
index fec9e03568..b7570d608e 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_3_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/covered_by/covered_by_3_with_strategy.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>covered_by (with strategy)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../covered_by.html" title="covered_by">
<link rel="prev" href="covered_by_2.html" title="covered_by">
-<link rel="next" href="../difference.html" title="difference">
+<link rel="next" href="../crosses.html" title="crosses">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="covered_by_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../covered_by.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../difference.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="covered_by_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../covered_by.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../crosses.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
@@ -28,13 +28,13 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id856772"></a>
+ <a class="indexterm" name="idp113319712"></a>
Checks if the first geometry is inside or on border the second geometry
using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.h0"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.description"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.description"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.description">Description</a>
</h6>
<p>
The free function covered_by checks if the first geometry is inside or
@@ -45,7 +45,7 @@ Checks if the first geometry is inside or on border the second geometry
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.h1"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.synopsis"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.synopsis"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -55,7 +55,7 @@ Checks if the first geometry is inside or on border the second geometry
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.h2"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.parameters"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.parameters"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -156,20 +156,20 @@ Checks if the first geometry is inside or on border the second geometry
</table></div>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.h3"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.returns"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.returns"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.returns">Returns</a>
</h6>
<p>
true if geometry1 is inside of or on the border of geometry2, else false
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.h4"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.header"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.header"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -179,7 +179,7 @@ Checks if the first geometry is inside or on border the second geometry
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.h5"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.conformance"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.conformance"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.conformance">Conformance</a>
</h6>
<p>
The function covered_by is not defined by OGC.
@@ -197,7 +197,7 @@ Checks if the first geometry is inside or on border the second geometry
</table></div>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.h6"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.supported_geometries"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.supported_geometries"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -212,6 +212,7 @@ Checks if the first geometry is inside or on border the second geometry
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -261,6 +262,11 @@ Checks if the first geometry is inside or on border the second geometry
MultiPolygon
</p>
</th>
+<th>
+ <p>
+ Variant
+ </p>
+ </th>
</tr></thead>
<tbody>
<tr>
@@ -271,6 +277,11 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -323,6 +334,11 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -418,6 +434,11 @@ Checks if the first geometry is inside or on border the second geometry
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
@@ -427,7 +448,7 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -442,7 +463,7 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -462,6 +483,11 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -494,17 +520,17 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -514,12 +540,17 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -546,17 +577,17 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -566,12 +597,17 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -583,6 +619,11 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -635,6 +676,11 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -645,6 +691,11 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -660,6 +711,11 @@ Checks if the first geometry is inside or on border the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -668,6 +724,18 @@ Checks if the first geometry is inside or on border the second geometry
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
<td>
<p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
@@ -678,11 +746,46 @@ Checks if the first geometry is inside or on border the second geometry
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
<p>
- MultiPolygon
+ Variant
</p>
</td>
<td>
@@ -730,6 +833,11 @@ Checks if the first geometry is inside or on border the second geometry
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
</tr>
</tbody>
</table></div>
@@ -746,17 +854,17 @@ Checks if the first geometry is inside or on border the second geometry
</table></div>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.h7"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.complexity"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.complexity"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.h8"></a>
- <span><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.see_also"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.see_also"></a></span><a class="link" href="covered_by_3_with_strategy.html#geometry.reference.algorithms.covered_by.covered_by_3_with_strategy.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../within.html" title="within">within</a>
</li></ul></div>
<div class="note"><table border="0" summary="Note">
@@ -772,8 +880,8 @@ Checks if the first geometry is inside or on border the second geometry
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -781,7 +889,7 @@ Checks if the first geometry is inside or on border the second geometry
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="covered_by_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../covered_by.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../difference.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="covered_by_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../covered_by.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../crosses.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/crosses.html b/libs/geometry/doc/html/geometry/reference/algorithms/crosses.html
new file mode 100644
index 0000000000..42164a2c1f
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/crosses.html
@@ -0,0 +1,815 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>crosses</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../algorithms.html" title="Algorithms">
+<link rel="prev" href="covered_by/covered_by_3_with_strategy.html" title="covered_by (with strategy)">
+<link rel="next" href="difference.html" title="difference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="covered_by/covered_by_3_with_strategy.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="difference.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.algorithms.crosses"></a><a class="link" href="crosses.html" title="crosses">crosses</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp113677152"></a>
+Checks if two geometries crosses.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.crosses.h0"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.crosses.synopsis"></a></span><a class="link" href="crosses.html#geometry.reference.algorithms.crosses.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Geometry2</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">crosses</span><span class="special">(</span><span class="identifier">Geometry1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry2</span><span class="special">)</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.crosses.h1"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.crosses.parameters"></a></span><a class="link" href="crosses.html#geometry.reference.algorithms.crosses.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Geometry1 const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry1
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Geometry2 const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry2
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.crosses.h2"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.crosses.returns"></a></span><a class="link" href="crosses.html#geometry.reference.algorithms.crosses.returns">Returns</a>
+ </h6>
+<p>
+ Returns true if two geometries crosses
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.crosses.h3"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.crosses.header"></a></span><a class="link" href="crosses.html#geometry.reference.algorithms.crosses.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">crosses</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.crosses.h4"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.crosses.conformance"></a></span><a class="link" href="crosses.html#geometry.reference.algorithms.crosses.conformance">Conformance</a>
+ </h6>
+<p>
+ The function crosses implements function Crosses from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
+ Simple Feature Specification</a>.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.crosses.h5"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.crosses.supported_geometries"></a></span><a class="link" href="crosses.html#geometry.reference.algorithms.crosses.supported_geometries">Supported
+ geometries</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ </th>
+<th>
+ <p>
+ Point
+ </p>
+ </th>
+<th>
+ <p>
+ Segment
+ </p>
+ </th>
+<th>
+ <p>
+ Box
+ </p>
+ </th>
+<th>
+ <p>
+ Linestring
+ </p>
+ </th>
+<th>
+ <p>
+ Ring
+ </p>
+ </th>
+<th>
+ <p>
+ Polygon
+ </p>
+ </th>
+<th>
+ <p>
+ MultiPoint
+ </p>
+ </th>
+<th>
+ <p>
+ MultiLinestring
+ </p>
+ </th>
+<th>
+ <p>
+ MultiPolygon
+ </p>
+ </th>
+<th>
+ <p>
+ Variant
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Point
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Segment
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Box
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Ring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Polygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPoint
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiLinestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="covered_by/covered_by_3_with_strategy.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="difference.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/difference.html b/libs/geometry/doc/html/geometry/reference/algorithms/difference.html
index de7e206d93..c65ba2b014 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/difference.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/difference.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>difference</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
-<link rel="prev" href="covered_by/covered_by_3_with_strategy.html" title="covered_by (with strategy)">
+<link rel="prev" href="crosses.html" title="crosses">
<link rel="next" href="disjoint.html" title="disjoint">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,18 +20,18 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="covered_by/covered_by_3_with_strategy.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="disjoint.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="crosses.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="disjoint.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.difference"></a><a class="link" href="difference.html" title="difference">difference</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id859402"></a>
+ <a class="indexterm" name="idp114008368"></a>
</p>
<h6>
<a name="geometry.reference.algorithms.difference.h0"></a>
- <span><a name="geometry.reference.algorithms.difference.description"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.difference.description"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.description">Description</a>
</h6>
<p>
Calculate the difference of two geometries
@@ -42,7 +42,7 @@
</p>
<h6>
<a name="geometry.reference.algorithms.difference.h1"></a>
- <span><a name="geometry.reference.algorithms.difference.synopsis"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.difference.synopsis"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -52,7 +52,7 @@
</p>
<h6>
<a name="geometry.reference.algorithms.difference.h2"></a>
- <span><a name="geometry.reference.algorithms.difference.parameters"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.difference.parameters"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -155,13 +155,13 @@
</table></div>
<h6>
<a name="geometry.reference.algorithms.difference.h3"></a>
- <span><a name="geometry.reference.algorithms.difference.header"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.difference.header"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -171,14 +171,14 @@
</p>
<h6>
<a name="geometry.reference.algorithms.difference.h4"></a>
- <span><a name="geometry.reference.algorithms.difference.conformance"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.difference.conformance"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.conformance">Conformance</a>
</h6>
<p>
The function difference implements function Difference from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC Simple Feature Specification</a>.
</p>
<h6>
<a name="geometry.reference.algorithms.difference.h5"></a>
- <span><a name="geometry.reference.algorithms.difference.behavior"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.difference.behavior"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -226,6 +226,32 @@
<tr>
<td>
<p>
+ linear (e.g. linestring)
+ </p>
+ </td>
+<td>
+ <p>
+ All combinations of: linestring, multi_linestring; results in
+ a collection of linestrings
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ pointlike (e.g. point)
+ </p>
+ </td>
+<td>
+ <p>
+ All combinations of: point, multi_point; results in a collection
+ of points
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
Other geometries
</p>
</td>
@@ -274,7 +300,7 @@
</table></div>
<h6>
<a name="geometry.reference.algorithms.difference.h6"></a>
- <span><a name="geometry.reference.algorithms.difference.example"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.difference.example"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.example">Example</a>
</h6>
<p>
Shows how to subtract one polygon from another polygon
@@ -287,7 +313,6 @@
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -356,10 +381,10 @@ blue - green:
</pre>
<h6>
<a name="geometry.reference.algorithms.difference.h7"></a>
- <span><a name="geometry.reference.algorithms.difference.see_also"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.difference.see_also"></a></span><a class="link" href="difference.html#geometry.reference.algorithms.difference.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="sym_difference.html" title="sym_difference">sym_difference
(symmetric difference)</a>
@@ -374,8 +399,8 @@ blue - green:
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -383,7 +408,7 @@ blue - green:
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="covered_by/covered_by_3_with_strategy.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="disjoint.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="crosses.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="disjoint.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/disjoint.html b/libs/geometry/doc/html/geometry/reference/algorithms/disjoint.html
index cc1886d98d..13bf33706a 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/disjoint.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/disjoint.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>disjoint</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="difference.html" title="difference">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.disjoint"></a><a class="link" href="disjoint.html" title="disjoint">disjoint</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id861531"></a>
+ <a class="indexterm" name="idp114258192"></a>
Checks if two geometries are disjoint.
</p>
<h6>
<a name="geometry.reference.algorithms.disjoint.h0"></a>
- <span><a name="geometry.reference.algorithms.disjoint.synopsis"></a></span><a class="link" href="disjoint.html#geometry.reference.algorithms.disjoint.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.disjoint.synopsis"></a></span><a class="link" href="disjoint.html#geometry.reference.algorithms.disjoint.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -42,7 +42,7 @@ Checks if two geometries are disjoint.
</p>
<h6>
<a name="geometry.reference.algorithms.disjoint.h1"></a>
- <span><a name="geometry.reference.algorithms.disjoint.parameters"></a></span><a class="link" href="disjoint.html#geometry.reference.algorithms.disjoint.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.disjoint.parameters"></a></span><a class="link" href="disjoint.html#geometry.reference.algorithms.disjoint.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -122,20 +122,20 @@ Checks if two geometries are disjoint.
</table></div>
<h6>
<a name="geometry.reference.algorithms.disjoint.h2"></a>
- <span><a name="geometry.reference.algorithms.disjoint.returns"></a></span><a class="link" href="disjoint.html#geometry.reference.algorithms.disjoint.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.disjoint.returns"></a></span><a class="link" href="disjoint.html#geometry.reference.algorithms.disjoint.returns">Returns</a>
</h6>
<p>
Returns true if two geometries are disjoint
</p>
<h6>
<a name="geometry.reference.algorithms.disjoint.h3"></a>
- <span><a name="geometry.reference.algorithms.disjoint.header"></a></span><a class="link" href="disjoint.html#geometry.reference.algorithms.disjoint.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.disjoint.header"></a></span><a class="link" href="disjoint.html#geometry.reference.algorithms.disjoint.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -145,17 +145,663 @@ Checks if two geometries are disjoint.
</p>
<h6>
<a name="geometry.reference.algorithms.disjoint.h4"></a>
- <span><a name="geometry.reference.algorithms.disjoint.conformance"></a></span><a class="link" href="disjoint.html#geometry.reference.algorithms.disjoint.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.disjoint.conformance"></a></span><a class="link" href="disjoint.html#geometry.reference.algorithms.disjoint.conformance">Conformance</a>
</h6>
<p>
The function disjoint implements function Disjoint from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
Simple Feature Specification</a>.
</p>
+<h6>
+<a name="geometry.reference.algorithms.disjoint.h5"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.disjoint.supported_geometries"></a></span><a class="link" href="disjoint.html#geometry.reference.algorithms.disjoint.supported_geometries">Supported
+ geometries</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ </th>
+<th>
+ <p>
+ Point
+ </p>
+ </th>
+<th>
+ <p>
+ Segment
+ </p>
+ </th>
+<th>
+ <p>
+ Box
+ </p>
+ </th>
+<th>
+ <p>
+ Linestring
+ </p>
+ </th>
+<th>
+ <p>
+ Ring
+ </p>
+ </th>
+<th>
+ <p>
+ Polygon
+ </p>
+ </th>
+<th>
+ <p>
+ MultiPoint
+ </p>
+ </th>
+<th>
+ <p>
+ MultiLinestring
+ </p>
+ </th>
+<th>
+ <p>
+ MultiPolygon
+ </p>
+ </th>
+<th>
+ <p>
+ Variant
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Point
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Segment
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Box
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Ring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Polygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPoint
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiLinestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/distance.html b/libs/geometry/doc/html/geometry/reference/algorithms/distance.html
index b44df16222..a917665afd 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/distance.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/distance.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>distance</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="disjoint.html" title="disjoint">
-<link rel="next" href="distance/comparable_distance.html" title="comparable_distance">
+<link rel="next" href="distance/comparable_distance_3_with_strategy.html" title="comparable_distance (with strategy)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,23 +20,25 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="disjoint.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance/comparable_distance.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="disjoint.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance/comparable_distance_3_with_strategy.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.distance"></a><a class="link" href="distance.html" title="distance">distance</a>
</h4></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="distance/comparable_distance.html">comparable_distance</a></span></dt>
-<dt><span class="section"><a href="distance/distance_2.html">distance</a></span></dt>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="distance/comparable_distance_3_with_strategy.html">comparable_distance
+ (with strategy)</a></span></dt>
+<dt><span class="section"><a href="distance/comparable_distance_2.html">comparable_distance</a></span></dt>
<dt><span class="section"><a href="distance/distance_3_with_strategy.html">distance
(with strategy)</a></span></dt>
+<dt><span class="section"><a href="distance/distance_2.html">distance</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -44,7 +46,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="disjoint.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance/comparable_distance.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="disjoint.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance/comparable_distance_3_with_strategy.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance.html b/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance.html
deleted file mode 100644
index f6f46cbaab..0000000000
--- a/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance.html
+++ /dev/null
@@ -1,258 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>comparable_distance</title>
-<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
-<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
-<link rel="up" href="../distance.html" title="distance">
-<link rel="prev" href="../distance.html" title="distance">
-<link rel="next" href="distance_2.html" title="distance">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%"><tr>
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
-<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
-<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
-<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
-<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
-</tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="../distance.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance_2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="geometry.reference.algorithms.distance.comparable_distance"></a><a class="link" href="comparable_distance.html" title="comparable_distance">comparable_distance</a>
-</h5></div></div></div>
-<p>
- <a class="indexterm" name="id862076"></a>
-Calculate the comparable distance measurement of two geometries.
- </p>
-<h6>
-<a name="geometry.reference.algorithms.distance.comparable_distance.h0"></a>
- <span><a name="geometry.reference.algorithms.distance.comparable_distance.description"></a></span><a class="link" href="comparable_distance.html#geometry.reference.algorithms.distance.comparable_distance.description">Description</a>
- </h6>
-<p>
- The free function comparable_distance does not necessarily calculate
- the distance, but it calculates a distance measure such that two distances
- are comparable to each other. For example: for the Cartesian coordinate
- system, Pythagoras is used but the square root is not taken, which makes
- it faster and the results of two point pairs can still be compared to
- each other.
- </p>
-<h6>
-<a name="geometry.reference.algorithms.distance.comparable_distance.h1"></a>
- <span><a name="geometry.reference.algorithms.distance.comparable_distance.synopsis"></a></span><a class="link" href="comparable_distance.html#geometry.reference.algorithms.distance.comparable_distance.synopsis">Synopsis</a>
- </h6>
-<p>
-</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Geometry2</span><span class="special">&gt;</span>
-<span class="identifier">default_distance_result</span><span class="special">&lt;</span><span class="identifier">Geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">comparable_distance</span><span class="special">(</span><span class="identifier">Geometry1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry2</span><span class="special">)</span></pre>
-<p>
- </p>
-<h6>
-<a name="geometry.reference.algorithms.distance.comparable_distance.h2"></a>
- <span><a name="geometry.reference.algorithms.distance.comparable_distance.parameters"></a></span><a class="link" href="comparable_distance.html#geometry.reference.algorithms.distance.comparable_distance.parameters">Parameters</a>
- </h6>
-<div class="informaltable"><table class="table">
-<colgroup>
-<col>
-<col>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
- <p>
- Type
- </p>
- </th>
-<th>
- <p>
- Concept
- </p>
- </th>
-<th>
- <p>
- Name
- </p>
- </th>
-<th>
- <p>
- Description
- </p>
- </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- Geometry1 const &amp;
- </p>
- </td>
-<td>
- <p>
- first geometry type
- </p>
- </td>
-<td>
- <p>
- geometry1
- </p>
- </td>
-<td>
- <p>
- A model of the specified concept
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Geometry2 const &amp;
- </p>
- </td>
-<td>
- <p>
- second geometry type
- </p>
- </td>
-<td>
- <p>
- geometry2
- </p>
- </td>
-<td>
- <p>
- A model of the specified concept
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
-<h6>
-<a name="geometry.reference.algorithms.distance.comparable_distance.h3"></a>
- <span><a name="geometry.reference.algorithms.distance.comparable_distance.returns"></a></span><a class="link" href="comparable_distance.html#geometry.reference.algorithms.distance.comparable_distance.returns">Returns</a>
- </h6>
-<p>
- The calculated comparable distance
- </p>
-<h6>
-<a name="geometry.reference.algorithms.distance.comparable_distance.h4"></a>
- <span><a name="geometry.reference.algorithms.distance.comparable_distance.header"></a></span><a class="link" href="comparable_distance.html#geometry.reference.algorithms.distance.comparable_distance.header">Header</a>
- </h6>
-<p>
- Either
- </p>
-<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
- </p>
-<p>
- Or
- </p>
-<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">comparable_distance</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
- </p>
-<h6>
-<a name="geometry.reference.algorithms.distance.comparable_distance.h5"></a>
- <span><a name="geometry.reference.algorithms.distance.comparable_distance.conformance"></a></span><a class="link" href="comparable_distance.html#geometry.reference.algorithms.distance.comparable_distance.conformance">Conformance</a>
- </h6>
-<p>
- The function comparable_distance is not defined by OGC.
- </p>
-<h6>
-<a name="geometry.reference.algorithms.distance.comparable_distance.h6"></a>
- <span><a name="geometry.reference.algorithms.distance.comparable_distance.behaviour"></a></span><a class="link" href="comparable_distance.html#geometry.reference.algorithms.distance.comparable_distance.behaviour">Behaviour</a>
- </h6>
-<p>
- There is no (not yet) version with a strategy.
- </p>
-<p>
- It depends on the coordinate system of the geometry's point type if there
- is a strategy available which can determine (more efficient than the
- standard strategy) a measure of comparable distance.
- </p>
-<h6>
-<a name="geometry.reference.algorithms.distance.comparable_distance.h7"></a>
- <span><a name="geometry.reference.algorithms.distance.comparable_distance.complexity"></a></span><a class="link" href="comparable_distance.html#geometry.reference.algorithms.distance.comparable_distance.complexity">Complexity</a>
- </h6>
-<p>
- Linear
- </p>
-<h6>
-<a name="geometry.reference.algorithms.distance.comparable_distance.h8"></a>
- <span><a name="geometry.reference.algorithms.distance.comparable_distance.example"></a></span><a class="link" href="comparable_distance.html#geometry.reference.algorithms.distance.comparable_distance.example">Example</a>
- </h6>
-<p>
- Shows how to efficiently get the closest point
- </p>
-<p>
-</p>
-<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
-
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">/</span><span class="identifier">conversion</span><span class="special">/</span><span class="identifier">bounds</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-
-<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
-<span class="special">{</span>
- <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point_type</span><span class="special">;</span>
-
- <span class="identifier">point_type</span> <span class="identifier">p</span><span class="special">(</span><span class="number">1.4</span><span class="special">,</span> <span class="number">2.6</span><span class="special">);</span>
-
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">v</span><span class="special">;</span>
- <span class="keyword">for</span> <span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span> <span class="identifier">x</span> <span class="special">&lt;=</span> <span class="number">4.0</span><span class="special">;</span> <span class="identifier">x</span><span class="special">++)</span>
- <span class="special">{</span>
- <span class="keyword">for</span> <span class="special">(</span><span class="keyword">double</span> <span class="identifier">y</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span> <span class="identifier">y</span> <span class="special">&lt;=</span> <span class="number">4.0</span><span class="special">;</span> <span class="identifier">y</span><span class="special">++)</span>
- <span class="special">{</span>
- <span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">point_type</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">));</span>
- <span class="special">}</span>
- <span class="special">}</span>
-
- <span class="identifier">point_type</span> <span class="identifier">min_p</span><span class="special">;</span>
- <span class="keyword">double</span> <span class="identifier">min_d</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">bounds</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">highest</span><span class="special">();</span>
- <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">point_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">pv</span><span class="special">,</span> <span class="identifier">v</span><span class="special">)</span>
- <span class="special">{</span>
- <span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">comparable_distance</span><span class="special">(</span><span class="identifier">p</span><span class="special">,</span> <span class="identifier">pv</span><span class="special">);</span>
- <span class="keyword">if</span> <span class="special">(</span><span class="identifier">d</span> <span class="special">&lt;</span> <span class="identifier">min_d</span><span class="special">)</span>
- <span class="special">{</span>
- <span class="identifier">min_d</span> <span class="special">=</span> <span class="identifier">d</span><span class="special">;</span>
- <span class="identifier">min_p</span> <span class="special">=</span> <span class="identifier">pv</span><span class="special">;</span>
- <span class="special">}</span>
- <span class="special">}</span>
-
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
- <span class="special">&lt;&lt;</span> <span class="string">"Closest: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">dsv</span><span class="special">(</span><span class="identifier">min_p</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
- <span class="special">&lt;&lt;</span> <span class="string">"At: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">p</span><span class="special">,</span> <span class="identifier">min_p</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
-
- <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
-<span class="special">}</span>
-</pre>
-<p>
- </p>
-<p>
- Output:
- </p>
-<pre class="programlisting">Closest: (1, 3)
-At: 0.565685
-</pre>
-</div>
-<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
- </p>
-</div></td>
-</tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="../distance.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance_2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
-</div>
-</body>
-</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance_2.html
new file mode 100644
index 0000000000..f345d1e5d5
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance_2.html
@@ -0,0 +1,907 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>comparable_distance</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../distance.html" title="distance">
+<link rel="prev" href="comparable_distance_3_with_strategy.html" title="comparable_distance (with strategy)">
+<link rel="next" href="distance_3_with_strategy.html" title="distance (with strategy)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="comparable_distance_3_with_strategy.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance_3_with_strategy.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.algorithms.distance.comparable_distance_2"></a><a class="link" href="comparable_distance_2.html" title="comparable_distance">comparable_distance</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp114666848"></a>
+Calculate the comparable distance measurement of two geometries.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_2.h0"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_2.description"></a></span><a class="link" href="comparable_distance_2.html#geometry.reference.algorithms.distance.comparable_distance_2.description">Description</a>
+ </h6>
+<p>
+ The free function comparable_distance does not necessarily calculate
+ the distance, but it calculates a distance measure such that two distances
+ are comparable to each other. For example: for the Cartesian coordinate
+ system, Pythagoras is used but the square root is not taken, which makes
+ it faster and the results of two point pairs can still be compared to
+ each other.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_2.h1"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_2.synopsis"></a></span><a class="link" href="comparable_distance_2.html#geometry.reference.algorithms.distance.comparable_distance_2.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Geometry2</span><span class="special">&gt;</span>
+<span class="identifier">default_comparable_distance_result</span><span class="special">&lt;</span><span class="identifier">Geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">comparable_distance</span><span class="special">(</span><span class="identifier">Geometry1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry2</span><span class="special">)</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_2.h2"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_2.parameters"></a></span><a class="link" href="comparable_distance_2.html#geometry.reference.algorithms.distance.comparable_distance_2.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Geometry1 const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ first geometry type
+ </p>
+ </td>
+<td>
+ <p>
+ geometry1
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Geometry2 const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ second geometry type
+ </p>
+ </td>
+<td>
+ <p>
+ geometry2
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_2.h3"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_2.returns"></a></span><a class="link" href="comparable_distance_2.html#geometry.reference.algorithms.distance.comparable_distance_2.returns">Returns</a>
+ </h6>
+<p>
+ The calculated comparable distance
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_2.h4"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_2.header"></a></span><a class="link" href="comparable_distance_2.html#geometry.reference.algorithms.distance.comparable_distance_2.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">comparable_distance</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_2.h5"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_2.conformance"></a></span><a class="link" href="comparable_distance_2.html#geometry.reference.algorithms.distance.comparable_distance_2.conformance">Conformance</a>
+ </h6>
+<p>
+ The function comparable_distance is not defined by OGC.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_2.h6"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_2.behaviour"></a></span><a class="link" href="comparable_distance_2.html#geometry.reference.algorithms.distance.comparable_distance_2.behaviour">Behaviour</a>
+ </h6>
+<p>
+ It depends on the coordinate system of the geometry's point type if there
+ is a strategy available which can determine (more efficient than the
+ standard strategy) a measure of comparable distance.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_2.h7"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_2.supported_geometries"></a></span><a class="link" href="comparable_distance_2.html#geometry.reference.algorithms.distance.comparable_distance_2.supported_geometries">Supported
+ geometries</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ </th>
+<th>
+ <p>
+ Point
+ </p>
+ </th>
+<th>
+ <p>
+ Segment
+ </p>
+ </th>
+<th>
+ <p>
+ Box
+ </p>
+ </th>
+<th>
+ <p>
+ Linestring
+ </p>
+ </th>
+<th>
+ <p>
+ Ring
+ </p>
+ </th>
+<th>
+ <p>
+ Polygon
+ </p>
+ </th>
+<th>
+ <p>
+ MultiPoint
+ </p>
+ </th>
+<th>
+ <p>
+ MultiLinestring
+ </p>
+ </th>
+<th>
+ <p>
+ MultiPolygon
+ </p>
+ </th>
+<th>
+ <p>
+ Variant
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Point
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Segment
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Box
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Ring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Polygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPoint
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiLinestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_2.h8"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_2.complexity"></a></span><a class="link" href="comparable_distance_2.html#geometry.reference.algorithms.distance.comparable_distance_2.complexity">Complexity</a>
+ </h6>
+<p>
+ For point to geometry: linear
+ </p>
+<p>
+ For multi-point to ring/polygon/multi-polygon: currently quadratic
+ </p>
+<p>
+ For all other geometry combinations: linearithmic
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_2.h9"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_2.example"></a></span><a class="link" href="comparable_distance_2.html#geometry.reference.algorithms.distance.comparable_distance_2.example">Example</a>
+ </h6>
+<p>
+ Shows how to efficiently get the closest point
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">/</span><span class="identifier">conversion</span><span class="special">/</span><span class="identifier">bounds</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point_type</span><span class="special">;</span>
+
+ <span class="identifier">point_type</span> <span class="identifier">p</span><span class="special">(</span><span class="number">1.4</span><span class="special">,</span> <span class="number">2.6</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">v</span><span class="special">;</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span> <span class="identifier">x</span> <span class="special">&lt;=</span> <span class="number">4.0</span><span class="special">;</span> <span class="identifier">x</span><span class="special">++)</span>
+ <span class="special">{</span>
+ <span class="keyword">for</span> <span class="special">(</span><span class="keyword">double</span> <span class="identifier">y</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span> <span class="identifier">y</span> <span class="special">&lt;=</span> <span class="number">4.0</span><span class="special">;</span> <span class="identifier">y</span><span class="special">++)</span>
+ <span class="special">{</span>
+ <span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">point_type</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">));</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+
+ <span class="identifier">point_type</span> <span class="identifier">min_p</span><span class="special">;</span>
+ <span class="keyword">double</span> <span class="identifier">min_d</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">bounds</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">highest</span><span class="special">();</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">point_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">pv</span><span class="special">,</span> <span class="identifier">v</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">comparable_distance</span><span class="special">(</span><span class="identifier">p</span><span class="special">,</span> <span class="identifier">pv</span><span class="special">);</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">d</span> <span class="special">&lt;</span> <span class="identifier">min_d</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">min_d</span> <span class="special">=</span> <span class="identifier">d</span><span class="special">;</span>
+ <span class="identifier">min_p</span> <span class="special">=</span> <span class="identifier">pv</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
+ <span class="special">&lt;&lt;</span> <span class="string">"Closest: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">dsv</span><span class="special">(</span><span class="identifier">min_p</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
+ <span class="special">&lt;&lt;</span> <span class="string">"At: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">p</span><span class="special">,</span> <span class="identifier">min_p</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ Output:
+ </p>
+<pre class="programlisting">Closest: (1, 3)
+At: 0.565685
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="comparable_distance_3_with_strategy.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance_3_with_strategy.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance_3_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance_3_with_strategy.html
new file mode 100644
index 0000000000..4fca52645c
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/distance/comparable_distance_3_with_strategy.html
@@ -0,0 +1,197 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>comparable_distance (with strategy)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../distance.html" title="distance">
+<link rel="prev" href="../distance.html" title="distance">
+<link rel="next" href="comparable_distance_2.html" title="comparable_distance">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../distance.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="comparable_distance_2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.algorithms.distance.comparable_distance_3_with_strategy"></a><a class="link" href="comparable_distance_3_with_strategy.html" title="comparable_distance (with strategy)">comparable_distance
+ (with strategy)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp114591904"></a>
+Calculate the comparable distance measurement of two geometries using
+ the specified strategy.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.h0"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.description"></a></span><a class="link" href="comparable_distance_3_with_strategy.html#geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.description">Description</a>
+ </h6>
+<p>
+ The free function comparable_distance does not necessarily calculate
+ the distance, but it calculates a distance measure such that two distances
+ are comparable to each other. For example: for the Cartesian coordinate
+ system, Pythagoras is used but the square root is not taken, which makes
+ it faster and the results of two point pairs can still be compared to
+ each other.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.h1"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.synopsis"></a></span><a class="link" href="comparable_distance_3_with_strategy.html#geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Geometry2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Strategy</span><span class="special">&gt;</span>
+<span class="identifier">comparable_distance_result</span><span class="special">&lt;</span><span class="identifier">Geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span><span class="special">,</span> <span class="identifier">Strategy</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">comparable_distance</span><span class="special">(</span><span class="identifier">Geometry1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry2</span><span class="special">,</span> <span class="identifier">Strategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">strategy</span><span class="special">)</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.h2"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.parameters"></a></span><a class="link" href="comparable_distance_3_with_strategy.html#geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Geometry1 const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ first geometry type
+ </p>
+ </td>
+<td>
+ <p>
+ geometry1
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Geometry2 const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ second geometry type
+ </p>
+ </td>
+<td>
+ <p>
+ geometry2
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Strategy const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Distance Strategy Concept
+ </p>
+ </td>
+<td>
+ <p>
+ strategy
+ </p>
+ </td>
+<td>
+ <p>
+ The strategy which will be used for distance calculations
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.h3"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.returns"></a></span><a class="link" href="comparable_distance_3_with_strategy.html#geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.returns">Returns</a>
+ </h6>
+<p>
+ The calculated comparable distance
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.h4"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.header"></a></span><a class="link" href="comparable_distance_3_with_strategy.html#geometry.reference.algorithms.distance.comparable_distance_3_with_strategy.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">comparable_distance</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../distance.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="comparable_distance_2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html
index 8097eb120b..87e2efa938 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>distance</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../distance.html" title="distance">
-<link rel="prev" href="comparable_distance.html" title="comparable_distance">
-<link rel="next" href="distance_3_with_strategy.html" title="distance (with strategy)">
+<link rel="prev" href="distance_3_with_strategy.html" title="distance (with strategy)">
+<link rel="next" href="../envelope.html" title="envelope">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="comparable_distance.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance_3_with_strategy.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="distance_3_with_strategy.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../envelope.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
<a name="geometry.reference.algorithms.distance.distance_2"></a><a class="link" href="distance_2.html" title="distance">distance</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id863837"></a>
+ <a class="indexterm" name="idp115232592"></a>
Calculate the distance of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_2.h0"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_2.description"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_2.description"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.description">Description</a>
</h6>
<p>
The default strategy is used, corresponding to the coordinate system
@@ -40,7 +40,7 @@ Calculate the distance of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_2.h1"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_2.synopsis"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_2.synopsis"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Calculate the distance of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_2.h2"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_2.parameters"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_2.parameters"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -130,20 +130,20 @@ Calculate the distance of two geometries.
</table></div>
<h6>
<a name="geometry.reference.algorithms.distance.distance_2.h3"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_2.returns"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_2.returns"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.returns">Returns</a>
</h6>
<p>
The calculated distance
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_2.h4"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_2.header"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_2.header"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -153,7 +153,7 @@ Calculate the distance of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_2.h5"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_2.conformance"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_2.conformance"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.conformance">Conformance</a>
</h6>
<p>
The function distance implements function Distance from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -161,7 +161,7 @@ Calculate the distance of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_2.h6"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_2.supported_geometries"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_2.supported_geometries"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -176,6 +176,7 @@ Calculate the distance of two geometries.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -225,6 +226,11 @@ Calculate the distance of two geometries.
MultiPolygon
</p>
</th>
+<th>
+ <p>
+ Variant
+ </p>
+ </th>
</tr></thead>
<tbody>
<tr>
@@ -245,7 +251,12 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -292,42 +303,47 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -339,47 +355,52 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -396,27 +417,27 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -426,12 +447,17 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -448,42 +474,47 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -500,27 +531,32 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -530,12 +566,12 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -552,12 +588,17 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -567,7 +608,7 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -604,27 +645,27 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -634,12 +675,17 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -656,27 +702,32 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -686,12 +737,69 @@ Calculate the distance of two geometries.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -699,17 +807,20 @@ Calculate the distance of two geometries.
</table></div>
<h6>
<a name="geometry.reference.algorithms.distance.distance_2.h7"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_2.complexity"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_2.complexity"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.complexity">Complexity</a>
</h6>
<p>
- Linear
+ For point to geometry: linear
</p>
<p>
- For multi-geometry to multi-geometry: currently quadratic
+ For multi-point to ring/polygon/multi-polygon: currently quadratic
+ </p>
+<p>
+ For all other geometry combinations: linearithmic
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_2.h8"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_2.example"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_2.example"></a></span><a class="link" href="distance_2.html#geometry.reference.algorithms.distance.distance_2.example">Example</a>
</h6>
<p>
Shows calculation of distance of point to some other geometries
@@ -723,10 +834,8 @@ Calculate the distance of two geometries.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -770,8 +879,8 @@ Point-MultiPoint: 2.23607
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -779,7 +888,7 @@ Point-MultiPoint: 2.23607
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="comparable_distance.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance_3_with_strategy.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="distance_3_with_strategy.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../envelope.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_3_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_3_with_strategy.html
index 4f387d9c03..7c540b3193 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_3_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_3_with_strategy.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>distance (with strategy)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../distance.html" title="distance">
-<link rel="prev" href="distance_2.html" title="distance">
-<link rel="next" href="../envelope.html" title="envelope">
+<link rel="prev" href="comparable_distance_2.html" title="comparable_distance">
+<link rel="next" href="distance_2.html" title="distance">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="distance_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../envelope.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="comparable_distance_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance_2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
@@ -28,12 +28,12 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id867720"></a>
+ <a class="indexterm" name="idp115146576"></a>
Calculate the distance of two geometries using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_3_with_strategy.h0"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.description"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.description"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.description">Description</a>
</h6>
<p>
The free function area calculates the area of a geometry. using the specified
@@ -44,17 +44,17 @@ Calculate the distance of two geometries using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_3_with_strategy.h1"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.synopsis"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.synopsis"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Geometry2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Strategy</span><span class="special">&gt;</span>
-<span class="identifier">strategy</span><span class="special">::</span><span class="identifier">distance</span><span class="special">::</span><span class="identifier">services</span><span class="special">::</span><span class="identifier">return_type</span><span class="special">&lt;</span><span class="identifier">Strategy</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">Geometry1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry2</span><span class="special">,</span> <span class="identifier">Strategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">strategy</span><span class="special">)</span></pre>
+<span class="identifier">distance_result</span><span class="special">&lt;</span><span class="identifier">Geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span><span class="special">,</span> <span class="identifier">Strategy</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">Geometry1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry2</span><span class="special">,</span> <span class="identifier">Strategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">strategy</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_3_with_strategy.h2"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.parameters"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.parameters"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -156,20 +156,20 @@ Calculate the distance of two geometries using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.distance.distance_3_with_strategy.h3"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.returns"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.returns"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.returns">Returns</a>
</h6>
<p>
The calculated distance
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_3_with_strategy.h4"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.header"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.header"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -179,10 +179,10 @@ Calculate the distance of two geometries using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.distance.distance_3_with_strategy.h5"></a>
- <span><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.available_strategies"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.available_strategies">Available
+ <span class="phrase"><a name="geometry.reference.algorithms.distance.distance_3_with_strategy.available_strategies"></a></span><a class="link" href="distance_3_with_strategy.html#geometry.reference.algorithms.distance.distance_3_with_strategy.available_strategies">Available
Strategies</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="../../strategies/strategy_distance_pythagoras.html" title="strategy::distance::pythagoras">Pythagoras
(cartesian)</a>
@@ -206,8 +206,8 @@ Calculate the distance of two geometries using the specified strategy.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -215,7 +215,7 @@ Calculate the distance of two geometries using the specified strategy.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="distance_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../envelope.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="comparable_distance_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../distance.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="distance_2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/envelope.html b/libs/geometry/doc/html/geometry/reference/algorithms/envelope.html
index 5142bdf432..66a954bff1 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/envelope.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/envelope.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>envelope</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
-<link rel="prev" href="distance/distance_3_with_strategy.html" title="distance (with strategy)">
+<link rel="prev" href="distance/distance_2.html" title="distance">
<link rel="next" href="envelope/envelope.html" title="envelope">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,21 +20,21 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="distance/distance_3_with_strategy.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="envelope/envelope.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="distance/distance_2.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="envelope/envelope.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.envelope"></a><a class="link" href="envelope.html" title="envelope">envelope</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="envelope/envelope.html">envelope</a></span></dt>
<dt><span class="section"><a href="envelope/return_envelope.html">return_envelope</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -42,7 +42,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="distance/distance_3_with_strategy.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="envelope/envelope.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="distance/distance_2.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="envelope/envelope.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/envelope/envelope.html b/libs/geometry/doc/html/geometry/reference/algorithms/envelope/envelope.html
index 3b1e36a5d1..8c0bf3fed4 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/envelope/envelope.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/envelope/envelope.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>envelope</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../envelope.html" title="envelope">
<link rel="prev" href="../envelope.html" title="envelope">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.envelope.envelope"></a><a class="link" href="envelope.html" title="envelope">envelope</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id868505"></a>
+ <a class="indexterm" name="idp115738560"></a>
Calculates the envelope of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.envelope.envelope.h0"></a>
- <span><a name="geometry.reference.algorithms.envelope.envelope.description"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.envelope.description"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.description">Description</a>
</h6>
<p>
The free function envelope calculates the envelope (also known as axis
@@ -41,7 +41,7 @@ Calculates the envelope of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.envelope.envelope.h1"></a>
- <span><a name="geometry.reference.algorithms.envelope.envelope.synopsis"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.envelope.synopsis"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,7 +51,7 @@ Calculates the envelope of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.envelope.envelope.h2"></a>
- <span><a name="geometry.reference.algorithms.envelope.envelope.parameters"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.envelope.parameters"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -131,13 +131,13 @@ Calculates the envelope of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.envelope.envelope.h3"></a>
- <span><a name="geometry.reference.algorithms.envelope.envelope.header"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.envelope.header"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -147,7 +147,7 @@ Calculates the envelope of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.envelope.envelope.h4"></a>
- <span><a name="geometry.reference.algorithms.envelope.envelope.conformance"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.envelope.conformance"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.conformance">Conformance</a>
</h6>
<p>
The function envelope implements function Envelope from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -155,7 +155,7 @@ Calculates the envelope of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.envelope.envelope.h5"></a>
- <span><a name="geometry.reference.algorithms.envelope.envelope.example"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.envelope.example"></a></span><a class="link" href="envelope.html#geometry.reference.algorithms.envelope.envelope.example">Example</a>
</h6>
<p>
Shows how to calculate the bounding box of a polygon
@@ -168,8 +168,6 @@ Calculates the envelope of a geometry.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
@@ -203,8 +201,8 @@ Calculates the envelope of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/envelope/return_envelope.html b/libs/geometry/doc/html/geometry/reference/algorithms/envelope/return_envelope.html
index ef6ee7045a..ac0f494763 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/envelope/return_envelope.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/envelope/return_envelope.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>return_envelope</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../envelope.html" title="envelope">
<link rel="prev" href="envelope.html" title="envelope">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.envelope.return_envelope"></a><a class="link" href="return_envelope.html" title="return_envelope">return_envelope</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id869798"></a>
+ <a class="indexterm" name="idp115883904"></a>
Calculates the envelope of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.envelope.return_envelope.h0"></a>
- <span><a name="geometry.reference.algorithms.envelope.return_envelope.description"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.return_envelope.description"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.description">Description</a>
</h6>
<p>
The free function return_envelope calculates the envelope (also known
@@ -42,7 +42,7 @@ Calculates the envelope of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.envelope.return_envelope.h1"></a>
- <span><a name="geometry.reference.algorithms.envelope.return_envelope.synopsis"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.return_envelope.synopsis"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -52,7 +52,7 @@ Calculates the envelope of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.envelope.return_envelope.h2"></a>
- <span><a name="geometry.reference.algorithms.envelope.return_envelope.parameters"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.return_envelope.parameters"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -132,20 +132,20 @@ Calculates the envelope of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.envelope.return_envelope.h3"></a>
- <span><a name="geometry.reference.algorithms.envelope.return_envelope.returns"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.return_envelope.returns"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.returns">Returns</a>
</h6>
<p>
The calculated envelope
</p>
<h6>
<a name="geometry.reference.algorithms.envelope.return_envelope.h4"></a>
- <span><a name="geometry.reference.algorithms.envelope.return_envelope.header"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.return_envelope.header"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -155,7 +155,7 @@ Calculates the envelope of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.envelope.return_envelope.h5"></a>
- <span><a name="geometry.reference.algorithms.envelope.return_envelope.conformance"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.return_envelope.conformance"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.conformance">Conformance</a>
</h6>
<p>
The function envelope implements function Envelope from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -163,7 +163,7 @@ Calculates the envelope of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.envelope.return_envelope.h6"></a>
- <span><a name="geometry.reference.algorithms.envelope.return_envelope.example"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.envelope.return_envelope.example"></a></span><a class="link" href="return_envelope.html#geometry.reference.algorithms.envelope.return_envelope.example">Example</a>
</h6>
<p>
Shows how to return the envelope of a ring
@@ -219,8 +219,8 @@ Calculates the envelope of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/equals.html b/libs/geometry/doc/html/geometry/reference/algorithms/equals.html
index a031b62c58..fb0db0c3d4 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/equals.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/equals.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>equals</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="envelope/return_envelope.html" title="return_envelope">
@@ -27,23 +27,23 @@
<a name="geometry.reference.algorithms.equals"></a><a class="link" href="equals.html" title="equals">equals</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id871321"></a>
+ <a class="indexterm" name="idp116065072"></a>
Checks if a geometry are spatially equal.
</p>
<h6>
<a name="geometry.reference.algorithms.equals.h0"></a>
- <span><a name="geometry.reference.algorithms.equals.description"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.equals.description"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.description">Description</a>
</h6>
<p>
The free function equals checks if the first geometry is spatially equal
the second geometry. Spatially equal means that the same point set is included.
A box can therefore be spatially equal to a ring or a polygon, or a linestring
- can be spatially equal to a multi-linestring or a segment. This only theoretically,
- not all combinations are implemented yet.
+ can be spatially equal to a multi-linestring or a segment. This only works
+ theoretically, not all combinations are implemented yet.
</p>
<h6>
<a name="geometry.reference.algorithms.equals.h1"></a>
- <span><a name="geometry.reference.algorithms.equals.synopsis"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.equals.synopsis"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -53,7 +53,7 @@ Checks if a geometry are spatially equal.
</p>
<h6>
<a name="geometry.reference.algorithms.equals.h2"></a>
- <span><a name="geometry.reference.algorithms.equals.parameters"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.equals.parameters"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -133,20 +133,20 @@ Checks if a geometry are spatially equal.
</table></div>
<h6>
<a name="geometry.reference.algorithms.equals.h3"></a>
- <span><a name="geometry.reference.algorithms.equals.returns"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.equals.returns"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.returns">Returns</a>
</h6>
<p>
Returns true if two geometries are spatially equal
</p>
<h6>
<a name="geometry.reference.algorithms.equals.h4"></a>
- <span><a name="geometry.reference.algorithms.equals.header"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.equals.header"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -156,7 +156,7 @@ Checks if a geometry are spatially equal.
</p>
<h6>
<a name="geometry.reference.algorithms.equals.h5"></a>
- <span><a name="geometry.reference.algorithms.equals.conformance"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.equals.conformance"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.conformance">Conformance</a>
</h6>
<p>
The function equals implements function Equals from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -164,7 +164,7 @@ Checks if a geometry are spatially equal.
</p>
<h6>
<a name="geometry.reference.algorithms.equals.h6"></a>
- <span><a name="geometry.reference.algorithms.equals.supported_geometries"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.equals.supported_geometries"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -176,6 +176,10 @@ Checks if a geometry are spatially equal.
<col>
<col>
<col>
+<col>
+<col>
+<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -187,6 +191,11 @@ Checks if a geometry are spatially equal.
</th>
<th>
<p>
+ Segment
+ </p>
+ </th>
+<th>
+ <p>
Box
</p>
</th>
@@ -207,9 +216,24 @@ Checks if a geometry are spatially equal.
</th>
<th>
<p>
+ MultiPoint
+ </p>
+ </th>
+<th>
+ <p>
+ MultiLinestring
+ </p>
+ </th>
+<th>
+ <p>
MultiPolygon
</p>
</th>
+<th>
+ <p>
+ Variant
+ </p>
+ </th>
</tr></thead>
<tbody>
<tr>
@@ -248,6 +272,83 @@ Checks if a geometry are spatially equal.
<span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Segment
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
@@ -262,6 +363,11 @@ Checks if a geometry are spatially equal.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
</p>
</td>
@@ -285,6 +391,21 @@ Checks if a geometry are spatially equal.
<span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
@@ -304,6 +425,11 @@ Checks if a geometry are spatially equal.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
</p>
</td>
@@ -322,6 +448,21 @@ Checks if a geometry are spatially equal.
<span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
@@ -336,6 +477,11 @@ Checks if a geometry are spatially equal.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
</p>
</td>
@@ -359,6 +505,21 @@ Checks if a geometry are spatially equal.
<span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
@@ -373,6 +534,26 @@ Checks if a geometry are spatially equal.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
</p>
</td>
@@ -383,9 +564,98 @@ Checks if a geometry are spatially equal.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
</p>
</td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPoint
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiLinestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
<td>
<p>
<span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
@@ -393,9 +663,34 @@ Checks if a geometry are spatially equal.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
@@ -425,6 +720,26 @@ Checks if a geometry are spatially equal.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
</p>
</td>
@@ -434,18 +749,75 @@ Checks if a geometry are spatially equal.
</p>
</td>
</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.algorithms.equals.h7"></a>
- <span><a name="geometry.reference.algorithms.equals.complexity"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.equals.complexity"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.equals.h8"></a>
- <span><a name="geometry.reference.algorithms.equals.example"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.equals.example"></a></span><a class="link" href="equals.html#geometry.reference.algorithms.equals.example">Example</a>
</h6>
<p>
Shows the predicate equals, which returns true if two geometries are spatially
@@ -501,8 +873,8 @@ polygon and box are spatially equal
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/expand.html b/libs/geometry/doc/html/geometry/reference/algorithms/expand.html
index 4365d73f75..1094dea999 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/expand.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/expand.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>expand</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="equals.html" title="equals">
@@ -27,13 +27,13 @@
<a name="geometry.reference.algorithms.expand"></a><a class="link" href="expand.html" title="expand">expand</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id874228"></a>
+ <a class="indexterm" name="idp116545760"></a>
Expands a box using the bounding box (envelope) of another geometry (box,
point)
</p>
<h6>
<a name="geometry.reference.algorithms.expand.h0"></a>
- <span><a name="geometry.reference.algorithms.expand.synopsis"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.expand.synopsis"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -43,7 +43,7 @@ Expands a box using the bounding box (envelope) of another geometry (box,
</p>
<h6>
<a name="geometry.reference.algorithms.expand.h1"></a>
- <span><a name="geometry.reference.algorithms.expand.parameters"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.expand.parameters"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -124,13 +124,13 @@ Expands a box using the bounding box (envelope) of another geometry (box,
</table></div>
<h6>
<a name="geometry.reference.algorithms.expand.h2"></a>
- <span><a name="geometry.reference.algorithms.expand.header"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.expand.header"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -140,14 +140,14 @@ Expands a box using the bounding box (envelope) of another geometry (box,
</p>
<h6>
<a name="geometry.reference.algorithms.expand.h3"></a>
- <span><a name="geometry.reference.algorithms.expand.conformance"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.expand.conformance"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.conformance">Conformance</a>
</h6>
<p>
The function expand is not defined by OGC.
</p>
<h6>
<a name="geometry.reference.algorithms.expand.h4"></a>
- <span><a name="geometry.reference.algorithms.expand.behavior"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.expand.behavior"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -170,7 +170,7 @@ Expands a box using the bounding box (envelope) of another geometry (box,
<tr>
<td>
<p>
- Rectangle / Point
+ Box / Point
</p>
</td>
<td>
@@ -182,19 +182,19 @@ Expands a box using the bounding box (envelope) of another geometry (box,
<tr>
<td>
<p>
- Rectangle / Rectangle
+ Box / Box
</p>
</td>
<td>
<p>
- Box is expanded to include the specified Rectangle
+ Box is expanded to include the specified Box
</p>
</td>
</tr>
<tr>
<td>
<p>
- Rectangle / Other geometries
+ Box / Other geometries
</p>
</td>
<td>
@@ -216,14 +216,14 @@ Expands a box using the bounding box (envelope) of another geometry (box,
</table></div>
<h6>
<a name="geometry.reference.algorithms.expand.h5"></a>
- <span><a name="geometry.reference.algorithms.expand.complexity"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.expand.complexity"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.expand.h6"></a>
- <span><a name="geometry.reference.algorithms.expand.example"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.expand.example"></a></span><a class="link" href="expand.html#geometry.reference.algorithms.expand.example">Example</a>
</h6>
<p>
Shows the usage of expand
@@ -272,8 +272,8 @@ Expands a box using the bounding box (envelope) of another geometry (box,
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/for_each.html b/libs/geometry/doc/html/geometry/reference/algorithms/for_each.html
index baf8ec28d3..2d6a2f247c 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/for_each.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/for_each.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>for_each</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="expand.html" title="expand">
-<link rel="next" href="for_each/for_each_point_2_const_version.html" title="for_each_point (const version)">
+<link rel="next" href="for_each/for_each_point.html" title="for_each_point">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,25 +20,21 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="expand.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each/for_each_point_2_const_version.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="expand.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each/for_each_point.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.for_each"></a><a class="link" href="for_each.html" title="for_each">for_each</a>
</h4></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="for_each/for_each_point_2_const_version.html">for_each_point
- (const version)</a></span></dt>
-<dt><span class="section"><a href="for_each/for_each_point_2.html">for_each_point</a></span></dt>
-<dt><span class="section"><a href="for_each/for_each_segment_2_const_version.html">for_each_segment
- (const version)</a></span></dt>
-<dt><span class="section"><a href="for_each/for_each_segment_2.html">for_each_segment</a></span></dt>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="for_each/for_each_point.html">for_each_point</a></span></dt>
+<dt><span class="section"><a href="for_each/for_each_segment.html">for_each_segment</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -46,7 +42,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="expand.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each/for_each_point_2_const_version.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="expand.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each/for_each_point.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point.html
index c88f4bf5e7..ca31076596 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>for_each_point</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../for_each.html" title="for_each">
-<link rel="prev" href="for_each_point_2_const_version.html" title="for_each_point (const version)">
-<link rel="next" href="for_each_segment_2_const_version.html" title="for_each_segment (const version)">
+<link rel="prev" href="../for_each.html" title="for_each">
+<link rel="next" href="for_each_segment.html" title="for_each_segment">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,27 +20,27 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="for_each_point_2_const_version.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each_segment_2_const_version.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../for_each.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each_segment.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
-<a name="geometry.reference.algorithms.for_each.for_each_point_2"></a><a class="link" href="for_each_point_2.html" title="for_each_point">for_each_point</a>
+<a name="geometry.reference.algorithms.for_each.for_each_point"></a><a class="link" href="for_each_point.html" title="for_each_point">for_each_point</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id877067"></a>
+ <a class="indexterm" name="idp116723440"></a>
Applies function <span class="bold"><strong>f</strong></span> to each point.
</p>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2.h0"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2.description"></a></span><a class="link" href="for_each_point_2.html#geometry.reference.algorithms.for_each.for_each_point_2.description">Description</a>
+<a name="geometry.reference.algorithms.for_each.for_each_point.h0"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_point.description"></a></span><a class="link" href="for_each_point.html#geometry.reference.algorithms.for_each.for_each_point.description">Description</a>
</h6>
<p>
Applies a function <span class="bold"><strong>f</strong></span> (functor, having
operator() defined) to each point making up the geometry
</p>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2.h1"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2.synopsis"></a></span><a class="link" href="for_each_point_2.html#geometry.reference.algorithms.for_each.for_each_point_2.synopsis">Synopsis</a>
+<a name="geometry.reference.algorithms.for_each.for_each_point.h1"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_point.synopsis"></a></span><a class="link" href="for_each_point.html#geometry.reference.algorithms.for_each.for_each_point.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -49,8 +49,8 @@ Applies function <span class="bold"><strong>f</strong></span> to each point.
<p>
</p>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2.h2"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2.parameters"></a></span><a class="link" href="for_each_point_2.html#geometry.reference.algorithms.for_each.for_each_point_2.parameters">Parameters</a>
+<a name="geometry.reference.algorithms.for_each.for_each_point.h2"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_point.parameters"></a></span><a class="link" href="for_each_point.html#geometry.reference.algorithms.for_each.for_each_point.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -129,14 +129,14 @@ Applies function <span class="bold"><strong>f</strong></span> to each point.
</tbody>
</table></div>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2.h3"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2.header"></a></span><a class="link" href="for_each_point_2.html#geometry.reference.algorithms.for_each.for_each_point_2.header">Header</a>
+<a name="geometry.reference.algorithms.for_each.for_each_point.h3"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_point.header"></a></span><a class="link" href="for_each_point.html#geometry.reference.algorithms.for_each.for_each_point.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -145,8 +145,8 @@ Applies function <span class="bold"><strong>f</strong></span> to each point.
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2.h4"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2.conformance"></a></span><a class="link" href="for_each_point_2.html#geometry.reference.algorithms.for_each.for_each_point_2.conformance">Conformance</a>
+<a name="geometry.reference.algorithms.for_each.for_each_point.h4"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_point.conformance"></a></span><a class="link" href="for_each_point.html#geometry.reference.algorithms.for_each.for_each_point.conformance">Conformance</a>
</h6>
<p>
The function for_each_point is not defined by OGC.
@@ -156,8 +156,8 @@ Applies function <span class="bold"><strong>f</strong></span> to each point.
the C++ std-library.
</p>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2.h5"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2.example"></a></span><a class="link" href="for_each_point_2.html#geometry.reference.algorithms.for_each.for_each_point_2.example">Example</a>
+<a name="geometry.reference.algorithms.for_each.for_each_point.h5"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_point.example"></a></span><a class="link" href="for_each_point.html#geometry.reference.algorithms.for_each.for_each_point.example">Example</a>
</h6>
<p>
Convenient usage of for_each_point, rounding all points of a geometry
@@ -169,7 +169,6 @@ Applies function <span class="bold"><strong>f</strong></span> to each point.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -217,11 +216,49 @@ Applies function <span class="bold"><strong>f</strong></span> to each point.
</p>
<pre class="programlisting">Rounded: POLYGON((0 0,1.1 10,8.9 2.2,0 0),(3.3 4.5,7.7 8.8,9.1 5.4,3.3 4.5))
</pre>
+<p>
+ Sample using for_each_point, using a function to list coordinates
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">list_coordinates</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">get</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"x = "</span> <span class="special">&lt;&lt;</span> <span class="identifier">get</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;(</span><span class="identifier">p</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">" y = "</span> <span class="special">&lt;&lt;</span> <span class="identifier">get</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;(</span><span class="identifier">p</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">poly</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"POLYGON((0 0,0 4,4 0,0 0))"</span><span class="special">,</span> <span class="identifier">poly</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">for_each_point</span><span class="special">(</span><span class="identifier">poly</span><span class="special">,</span> <span class="identifier">list_coordinates</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;);</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ Output:
+ </p>
+<pre class="programlisting">x = 0 y = 0
+x = 0 y = 4
+x = 4 y = 0
+x = 0 y = 0
+</pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -229,7 +266,7 @@ Applies function <span class="bold"><strong>f</strong></span> to each point.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="for_each_point_2_const_version.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each_segment_2_const_version.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../for_each.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each_segment.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2_const_version.html b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2_const_version.html
deleted file mode 100644
index e55af0f506..0000000000
--- a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_point_2_const_version.html
+++ /dev/null
@@ -1,217 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>for_each_point (const version)</title>
-<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
-<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
-<link rel="up" href="../for_each.html" title="for_each">
-<link rel="prev" href="../for_each.html" title="for_each">
-<link rel="next" href="for_each_point_2.html" title="for_each_point">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%"><tr>
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
-<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
-<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
-<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
-<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
-</tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="../for_each.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each_point_2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version"></a><a class="link" href="for_each_point_2_const_version.html" title="for_each_point (const version)">for_each_point
- (const version)</a>
-</h5></div></div></div>
-<p>
- <a class="indexterm" name="id875733"></a>
-Applies function <span class="bold"><strong>f</strong></span> to each point.
- </p>
-<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.h0"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.description"></a></span><a class="link" href="for_each_point_2_const_version.html#geometry.reference.algorithms.for_each.for_each_point_2_const_version.description">Description</a>
- </h6>
-<p>
- Applies a function <span class="bold"><strong>f</strong></span> (functor, having
- operator() defined) to each point making up the geometry
- </p>
-<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.h1"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.synopsis"></a></span><a class="link" href="for_each_point_2_const_version.html#geometry.reference.algorithms.for_each.for_each_point_2_const_version.synopsis">Synopsis</a>
- </h6>
-<p>
-</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Functor</span><span class="special">&gt;</span>
-<span class="identifier">Functor</span> <span class="identifier">for_each_point</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Functor</span> <span class="identifier">f</span><span class="special">)</span></pre>
-<p>
- </p>
-<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.h2"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.parameters"></a></span><a class="link" href="for_each_point_2_const_version.html#geometry.reference.algorithms.for_each.for_each_point_2_const_version.parameters">Parameters</a>
- </h6>
-<div class="informaltable"><table class="table">
-<colgroup>
-<col>
-<col>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
- <p>
- Type
- </p>
- </th>
-<th>
- <p>
- Concept
- </p>
- </th>
-<th>
- <p>
- Name
- </p>
- </th>
-<th>
- <p>
- Description
- </p>
- </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- Geometry const &amp;
- </p>
- </td>
-<td>
- <p>
- Any type fulfilling a Geometry Concept
- </p>
- </td>
-<td>
- <p>
- geometry
- </p>
- </td>
-<td>
- <p>
- A model of the specified concept
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Functor
- </p>
- </td>
-<td>
- <p>
- Function or class with operator()
- </p>
- </td>
-<td>
- <p>
- f
- </p>
- </td>
-<td>
- <p>
- Unary function, taking a const point as argument
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
-<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.h3"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.header"></a></span><a class="link" href="for_each_point_2_const_version.html#geometry.reference.algorithms.for_each.for_each_point_2_const_version.header">Header</a>
- </h6>
-<p>
- Either
- </p>
-<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
- </p>
-<p>
- Or
- </p>
-<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
- </p>
-<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.h4"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.conformance"></a></span><a class="link" href="for_each_point_2_const_version.html#geometry.reference.algorithms.for_each.for_each_point_2_const_version.conformance">Conformance</a>
- </h6>
-<p>
- The function for_each_point is not defined by OGC.
- </p>
-<p>
- The function for_each_point conforms to the std::for_each function of
- the C++ std-library.
- </p>
-<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.h5"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_point_2_const_version.example"></a></span><a class="link" href="for_each_point_2_const_version.html#geometry.reference.algorithms.for_each.for_each_point_2_const_version.example">Example</a>
- </h6>
-<p>
- Sample using for_each_point, using a function to list coordinates
- </p>
-<p>
-</p>
-<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
-
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-
-
-<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">&gt;</span>
-<span class="keyword">void</span> <span class="identifier">list_coordinates</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
-<span class="special">{</span>
- <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">get</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"x = "</span> <span class="special">&lt;&lt;</span> <span class="identifier">get</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;(</span><span class="identifier">p</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">" y = "</span> <span class="special">&lt;&lt;</span> <span class="identifier">get</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;(</span><span class="identifier">p</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
-<span class="special">}</span>
-
-<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
-<span class="special">{</span>
- <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">poly</span><span class="special">;</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"POLYGON((0 0,0 4,4 0,0 0))"</span><span class="special">,</span> <span class="identifier">poly</span><span class="special">);</span>
- <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">for_each_point</span><span class="special">(</span><span class="identifier">poly</span><span class="special">,</span> <span class="identifier">list_coordinates</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;);</span>
- <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
-<span class="special">}</span>
-</pre>
-<p>
- </p>
-<p>
- Output:
- </p>
-<pre class="programlisting">x = 0 y = 0
-x = 0 y = 4
-x = 4 y = 0
-x = 0 y = 0
-</pre>
-</div>
-<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
- </p>
-</div></td>
-</tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="../for_each.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each_point_2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
-</div>
-</body>
-</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2_const_version.html b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment.html
index 89c76c3dd2..d206ebd3e5 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2_const_version.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment.html
@@ -1,13 +1,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>for_each_segment (const version)</title>
+<title>for_each_segment</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../for_each.html" title="for_each">
-<link rel="prev" href="for_each_point_2.html" title="for_each_point">
-<link rel="next" href="for_each_segment_2.html" title="for_each_segment">
+<link rel="prev" href="for_each_point.html" title="for_each_point">
+<link rel="next" href="../intersection.html" title="intersection">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,38 +20,37 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="for_each_point_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each_segment_2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="for_each_point.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../intersection.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version"></a><a class="link" href="for_each_segment_2_const_version.html" title="for_each_segment (const version)">for_each_segment
- (const version)</a>
+<a name="geometry.reference.algorithms.for_each.for_each_segment"></a><a class="link" href="for_each_segment.html" title="for_each_segment">for_each_segment</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id878813"></a>
+ <a class="indexterm" name="idp117009648"></a>
Applies function <span class="bold"><strong>f</strong></span> to each segment.
</p>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.h0"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.description"></a></span><a class="link" href="for_each_segment_2_const_version.html#geometry.reference.algorithms.for_each.for_each_segment_2_const_version.description">Description</a>
+<a name="geometry.reference.algorithms.for_each.for_each_segment.h0"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_segment.description"></a></span><a class="link" href="for_each_segment.html#geometry.reference.algorithms.for_each.for_each_segment.description">Description</a>
</h6>
<p>
Applies a function <span class="bold"><strong>f</strong></span> (functor, having
operator() defined) to each segment making up the geometry
</p>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.h1"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.synopsis"></a></span><a class="link" href="for_each_segment_2_const_version.html#geometry.reference.algorithms.for_each.for_each_segment_2_const_version.synopsis">Synopsis</a>
+<a name="geometry.reference.algorithms.for_each.for_each_segment.h1"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_segment.synopsis"></a></span><a class="link" href="for_each_segment.html#geometry.reference.algorithms.for_each.for_each_segment.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Functor</span><span class="special">&gt;</span>
-<span class="identifier">Functor</span> <span class="identifier">for_each_segment</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Functor</span> <span class="identifier">f</span><span class="special">)</span></pre>
+<span class="identifier">Functor</span> <span class="identifier">for_each_segment</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Functor</span> <span class="identifier">f</span><span class="special">)</span></pre>
<p>
</p>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.h2"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.parameters"></a></span><a class="link" href="for_each_segment_2_const_version.html#geometry.reference.algorithms.for_each.for_each_segment_2_const_version.parameters">Parameters</a>
+<a name="geometry.reference.algorithms.for_each.for_each_segment.h2"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_segment.parameters"></a></span><a class="link" href="for_each_segment.html#geometry.reference.algorithms.for_each.for_each_segment.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -86,7 +85,7 @@ Applies function <span class="bold"><strong>f</strong></span> to each segment.
<tr>
<td>
<p>
- Geometry const &amp;
+ Geometry &amp;
</p>
</td>
<td>
@@ -123,21 +122,21 @@ Applies function <span class="bold"><strong>f</strong></span> to each segment.
</td>
<td>
<p>
- Unary function, taking a const segment as argument
+ Unary function, taking a segment as argument
</p>
</td>
</tr>
</tbody>
</table></div>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.h3"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.header"></a></span><a class="link" href="for_each_segment_2_const_version.html#geometry.reference.algorithms.for_each.for_each_segment_2_const_version.header">Header</a>
+<a name="geometry.reference.algorithms.for_each.for_each_segment.h3"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_segment.header"></a></span><a class="link" href="for_each_segment.html#geometry.reference.algorithms.for_each.for_each_segment.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -146,8 +145,8 @@ Applies function <span class="bold"><strong>f</strong></span> to each segment.
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.h4"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.conformance"></a></span><a class="link" href="for_each_segment_2_const_version.html#geometry.reference.algorithms.for_each.for_each_segment_2_const_version.conformance">Conformance</a>
+<a name="geometry.reference.algorithms.for_each.for_each_segment.h4"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_segment.conformance"></a></span><a class="link" href="for_each_segment.html#geometry.reference.algorithms.for_each.for_each_segment.conformance">Conformance</a>
</h6>
<p>
The function for_each_segment is not defined by OGC.
@@ -157,8 +156,8 @@ Applies function <span class="bold"><strong>f</strong></span> to each segment.
of the C++ std-library.
</p>
<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.h5"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_segment_2_const_version.example"></a></span><a class="link" href="for_each_segment_2_const_version.html#geometry.reference.algorithms.for_each.for_each_segment_2_const_version.example">Example</a>
+<a name="geometry.reference.algorithms.for_each.for_each_segment.h5"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.for_each.for_each_segment.example"></a></span><a class="link" href="for_each_segment.html#geometry.reference.algorithms.for_each.for_each_segment.example">Example</a>
</h6>
<p>
Sample using for_each_segment, using a functor to get the minimum and
@@ -248,8 +247,8 @@ Max segment length: 5.65685
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -257,7 +256,7 @@ Max segment length: 5.65685
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="for_each_point_2.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="for_each_segment_2.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="for_each_point.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../intersection.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2.html
deleted file mode 100644
index e30d4ead5b..0000000000
--- a/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>for_each_segment</title>
-<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
-<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
-<link rel="up" href="../for_each.html" title="for_each">
-<link rel="prev" href="for_each_segment_2_const_version.html" title="for_each_segment (const version)">
-<link rel="next" href="../intersection.html" title="intersection">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%"><tr>
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
-<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
-<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
-<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
-<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
-</tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="for_each_segment_2_const_version.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../intersection.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2"></a><a class="link" href="for_each_segment_2.html" title="for_each_segment">for_each_segment</a>
-</h5></div></div></div>
-<p>
- <a class="indexterm" name="id880677"></a>
-Applies function <span class="bold"><strong>f</strong></span> to each segment.
- </p>
-<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2.h0"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_segment_2.description"></a></span><a class="link" href="for_each_segment_2.html#geometry.reference.algorithms.for_each.for_each_segment_2.description">Description</a>
- </h6>
-<p>
- Applies a function <span class="bold"><strong>f</strong></span> (functor, having
- operator() defined) to each segment making up the geometry
- </p>
-<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2.h1"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_segment_2.synopsis"></a></span><a class="link" href="for_each_segment_2.html#geometry.reference.algorithms.for_each.for_each_segment_2.synopsis">Synopsis</a>
- </h6>
-<p>
-</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Functor</span><span class="special">&gt;</span>
-<span class="identifier">Functor</span> <span class="identifier">for_each_segment</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Functor</span> <span class="identifier">f</span><span class="special">)</span></pre>
-<p>
- </p>
-<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2.h2"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_segment_2.parameters"></a></span><a class="link" href="for_each_segment_2.html#geometry.reference.algorithms.for_each.for_each_segment_2.parameters">Parameters</a>
- </h6>
-<div class="informaltable"><table class="table">
-<colgroup>
-<col>
-<col>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
- <p>
- Type
- </p>
- </th>
-<th>
- <p>
- Concept
- </p>
- </th>
-<th>
- <p>
- Name
- </p>
- </th>
-<th>
- <p>
- Description
- </p>
- </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- Geometry &amp;
- </p>
- </td>
-<td>
- <p>
- Any type fulfilling a Geometry Concept
- </p>
- </td>
-<td>
- <p>
- geometry
- </p>
- </td>
-<td>
- <p>
- A model of the specified concept
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Functor
- </p>
- </td>
-<td>
- <p>
- Function or class with operator()
- </p>
- </td>
-<td>
- <p>
- f
- </p>
- </td>
-<td>
- <p>
- Unary function, taking a segment as argument
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
-<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2.h3"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_segment_2.header"></a></span><a class="link" href="for_each_segment_2.html#geometry.reference.algorithms.for_each.for_each_segment_2.header">Header</a>
- </h6>
-<p>
- Either
- </p>
-<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
- </p>
-<p>
- Or
- </p>
-<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
- </p>
-<h6>
-<a name="geometry.reference.algorithms.for_each.for_each_segment_2.h4"></a>
- <span><a name="geometry.reference.algorithms.for_each.for_each_segment_2.conformance"></a></span><a class="link" href="for_each_segment_2.html#geometry.reference.algorithms.for_each.for_each_segment_2.conformance">Conformance</a>
- </h6>
-<p>
- The function for_each_segment is not defined by OGC.
- </p>
-<p>
- The function for_each_segment conforms to the std::for_each function
- of the C++ std-library.
- </p>
-</div>
-<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
- </p>
-</div></td>
-</tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="for_each_segment_2_const_version.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../for_each.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../intersection.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
-</div>
-</body>
-</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/intersection.html b/libs/geometry/doc/html/geometry/reference/algorithms/intersection.html
index 3fbc43b2f2..30cdf80d54 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/intersection.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/intersection.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>intersection</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
-<link rel="prev" href="for_each/for_each_segment_2.html" title="for_each_segment">
+<link rel="prev" href="for_each/for_each_segment.html" title="for_each_segment">
<link rel="next" href="intersects.html" title="intersects">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="for_each/for_each_segment_2.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="intersects.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="for_each/for_each_segment.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="intersects.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.intersection"></a><a class="link" href="intersection.html" title="intersection">intersection</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id881158"></a>
+ <a class="indexterm" name="idp117251776"></a>
Calculate the intersection of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.intersection.h0"></a>
- <span><a name="geometry.reference.algorithms.intersection.description"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersection.description"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.description">Description</a>
</h6>
<p>
The free function intersection calculates the spatial set theoretic intersection
@@ -40,7 +40,7 @@ Calculate the intersection of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.intersection.h1"></a>
- <span><a name="geometry.reference.algorithms.intersection.synopsis"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersection.synopsis"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Calculate the intersection of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.intersection.h2"></a>
- <span><a name="geometry.reference.algorithms.intersection.parameters"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersection.parameters"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -155,13 +155,13 @@ Calculate the intersection of two geometries.
</table></div>
<h6>
<a name="geometry.reference.algorithms.intersection.h3"></a>
- <span><a name="geometry.reference.algorithms.intersection.header"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersection.header"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -171,14 +171,14 @@ Calculate the intersection of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.intersection.h4"></a>
- <span><a name="geometry.reference.algorithms.intersection.conformance"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersection.conformance"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.conformance">Conformance</a>
</h6>
<p>
The function intersection implements function Intersection from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC Simple Feature Specification</a>.
</p>
<h6>
<a name="geometry.reference.algorithms.intersection.h5"></a>
- <span><a name="geometry.reference.algorithms.intersection.behavior"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersection.behavior"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -218,7 +218,7 @@ Calculate the intersection of two geometries.
</td>
<td>
<p>
- Calculates intersection linestrings of input geometries (NYI)
+ Calculates intersection linestrings of input (multi)linestrings
</p>
</td>
</tr>
@@ -250,7 +250,7 @@ Calculate the intersection of two geometries.
</table></div>
<h6>
<a name="geometry.reference.algorithms.intersection.h6"></a>
- <span><a name="geometry.reference.algorithms.intersection.example"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersection.example"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.example">Example</a>
</h6>
<p>
Shows the intersection of two polygons
@@ -263,7 +263,6 @@ Calculate the intersection of two geometries.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -308,9 +307,9 @@ Calculate the intersection of two geometries.
</pre>
<h6>
<a name="geometry.reference.algorithms.intersection.h7"></a>
- <span><a name="geometry.reference.algorithms.intersection.see_also"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.see_also">See also</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersection.see_also"></a></span><a class="link" href="intersection.html#geometry.reference.algorithms.intersection.see_also">See also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="union_.html" title="union_">union</a>
</li>
@@ -325,8 +324,8 @@ Calculate the intersection of two geometries.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -334,7 +333,7 @@ Calculate the intersection of two geometries.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="for_each/for_each_segment_2.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="intersects.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="for_each/for_each_segment.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="intersects.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/intersects.html b/libs/geometry/doc/html/geometry/reference/algorithms/intersects.html
index 1d5c8b03bc..d7909dfac0 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/intersects.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/intersects.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>intersects</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="intersection.html" title="intersection">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.intersects"></a><a class="link" href="intersects.html" title="intersects">intersects</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="intersects/intersects_1_one_geometry.html">intersects
(one geometry)</a></span></dt>
<dt><span class="section"><a href="intersects/intersects_2_two_geometries.html">intersects
@@ -35,8 +35,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_1_one_geometry.html b/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_1_one_geometry.html
index 20de43ffd7..f424a902da 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_1_one_geometry.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_1_one_geometry.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>intersects (one geometry)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../intersects.html" title="intersects">
<link rel="prev" href="../intersects.html" title="intersects">
@@ -28,12 +28,12 @@
(one geometry)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id882864"></a>
+ <a class="indexterm" name="idp117455696"></a>
Checks if a geometry has at least one intersection (crossing or self-tangency)
</p>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.h0"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.synopsis"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.synopsis"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -43,7 +43,7 @@ Checks if a geometry has at least one intersection (crossing or self-tangency)
</p>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.h1"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.parameters"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.parameters"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -99,20 +99,20 @@ Checks if a geometry has at least one intersection (crossing or self-tangency)
</table></div>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.h2"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.returns"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.returns"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.returns">Returns</a>
</h6>
<p>
Returns true if the geometry is self-intersecting
</p>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.h3"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.header"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.header"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -122,7 +122,7 @@ Checks if a geometry has at least one intersection (crossing or self-tangency)
</p>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.h4"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.conformance"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.conformance"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.conformance">Conformance</a>
</h6>
<p>
The function intersects implements function Intersects from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC Simple Feature
@@ -134,7 +134,7 @@ Checks if a geometry has at least one intersection (crossing or self-tangency)
</p>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.h5"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.examples"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.examples">Examples</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_1_one_geometry.examples"></a></span><a class="link" href="intersects_1_one_geometry.html#geometry.reference.algorithms.intersects.intersects_1_one_geometry.examples">Examples</a>
</h6>
<p>
Check if two linestrings intersect each other
@@ -146,7 +146,6 @@ Checks if a geometry has at least one intersection (crossing or self-tangency)
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
@@ -174,8 +173,8 @@ Checks if a geometry has at least one intersection (crossing or self-tangency)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_2_two_geometries.html b/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_2_two_geometries.html
index e63b84ca0e..8280b02af0 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_2_two_geometries.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/intersects/intersects_2_two_geometries.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>intersects (two geometries)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../intersects.html" title="intersects">
<link rel="prev" href="intersects_1_one_geometry.html" title="intersects (one geometry)">
-<link rel="next" href="../length.html" title="length">
+<link rel="next" href="../is_simple.html" title="is_simple">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="intersects_1_one_geometry.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../intersects.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../length.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="intersects_1_one_geometry.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../intersects.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../is_simple.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h5 class="title">
@@ -28,12 +28,12 @@
(two geometries)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id884048"></a>
+ <a class="indexterm" name="idp117587840"></a>
Checks if two geometries have at least one intersection.
</p>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.h0"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.synopsis"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.synopsis"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -43,7 +43,7 @@ Checks if two geometries have at least one intersection.
</p>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.h1"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.parameters"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.parameters"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -123,20 +123,20 @@ Checks if two geometries have at least one intersection.
</table></div>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.h2"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.returns"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.returns"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.returns">Returns</a>
</h6>
<p>
Returns true if two geometries intersect each other
</p>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.h3"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.header"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.header"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -146,7 +146,7 @@ Checks if two geometries have at least one intersection.
</p>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.h4"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.conformance"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.conformance"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.conformance">Conformance</a>
</h6>
<p>
The function intersects implements function Intersects from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC Simple Feature
@@ -158,7 +158,7 @@ Checks if two geometries have at least one intersection.
</p>
<h6>
<a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.h5"></a>
- <span><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.examples"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.examples">Examples</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.intersects.intersects_2_two_geometries.examples"></a></span><a class="link" href="intersects_2_two_geometries.html#geometry.reference.algorithms.intersects.intersects_2_two_geometries.examples">Examples</a>
</h6>
<p>
Check if two linestrings intersect each other
@@ -170,7 +170,6 @@ Checks if two geometries have at least one intersection.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
@@ -198,8 +197,8 @@ Checks if two geometries have at least one intersection.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -207,7 +206,7 @@ Checks if two geometries have at least one intersection.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="intersects_1_one_geometry.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../intersects.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../length.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="intersects_1_one_geometry.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../intersects.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../is_simple.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/is_simple.html b/libs/geometry/doc/html/geometry/reference/algorithms/is_simple.html
new file mode 100644
index 0000000000..7edb1f0e2d
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/is_simple.html
@@ -0,0 +1,354 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_simple</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../algorithms.html" title="Algorithms">
+<link rel="prev" href="intersects/intersects_2_two_geometries.html" title="intersects (two geometries)">
+<link rel="next" href="is_valid.html" title="is_valid">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intersects/intersects_2_two_geometries.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_valid.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.algorithms.is_simple"></a><a class="link" href="is_simple.html" title="is_simple">is_simple</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp117728800"></a>
+Checks if a geometry is simple.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_simple.h0"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_simple.synopsis"></a></span><a class="link" href="is_simple.html#geometry.reference.algorithms.is_simple.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">is_simple</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">)</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_simple.h1"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_simple.parameters"></a></span><a class="link" href="is_simple.html#geometry.reference.algorithms.is_simple.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Geometry const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.is_simple.h2"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_simple.returns"></a></span><a class="link" href="is_simple.html#geometry.reference.algorithms.is_simple.returns">Returns</a>
+ </h6>
+<p>
+ Returns true if the geometry is simple
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_simple.h3"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_simple.header"></a></span><a class="link" href="is_simple.html#geometry.reference.algorithms.is_simple.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">is_simple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_simple.h4"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_simple.conformance"></a></span><a class="link" href="is_simple.html#geometry.reference.algorithms.is_simple.conformance">Conformance</a>
+ </h6>
+<p>
+ The function is_simple implements function IsSimple from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
+ Simple Feature Specification</a>.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_simple.h5"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_simple.supported_geometries"></a></span><a class="link" href="is_simple.html#geometry.reference.algorithms.is_simple.supported_geometries">Supported
+ geometries</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Geometry
+ </p>
+ </th>
+<th>
+ <p>
+ Status
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Point
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Segment
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Box
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Ring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Polygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPoint
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiLinestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.is_simple.h6"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_simple.complexity"></a></span><a class="link" href="is_simple.html#geometry.reference.algorithms.is_simple.complexity">Complexity</a>
+ </h6>
+<p>
+ Constant-time for points, segments and boxes
+ </p>
+<p>
+ Linear for rings, polygons and multi-polygons
+ </p>
+<p>
+ Linearithmic for multi-points, linestrings and multi-linestrings
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_simple.h7"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_simple.example"></a></span><a class="link" href="is_simple.html#geometry.reference.algorithms.is_simple.example">Example</a>
+ </h6>
+<p>
+ Checks whether a geometry is simple
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">linestring_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_linestring</span><span class="special">&lt;</span><span class="identifier">linestring_type</span><span class="special">&gt;</span> <span class="identifier">multi_linestring_type</span><span class="special">;</span>
+
+ <span class="identifier">multi_linestring_type</span> <span class="identifier">multi_linestring</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"MULTILINESTRING((0 0,0 10,10 10,10 0,0 0),(10 10,20 20))"</span><span class="special">,</span> <span class="identifier">multi_linestring</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"is simple? "</span>
+ <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">is_simple</span><span class="special">(</span><span class="identifier">multi_linestring</span><span class="special">)</span> <span class="special">?</span> <span class="string">"yes"</span> <span class="special">:</span> <span class="string">"no"</span><span class="special">)</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ Output:
+ </p>
+<pre class="programlisting">is simple? no
+
+<img src="../../../img/algorithms/is_simple_example.png" alt="is_simple_example">
+
+</pre>
+<h6>
+<a name="geometry.reference.algorithms.is_simple.h8"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_simple.see_also"></a></span><a class="link" href="is_simple.html#geometry.reference.algorithms.is_simple.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ <a class="link" href="is_valid.html" title="is_valid">is_valid</a>
+ </li></ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intersects/intersects_2_two_geometries.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_valid.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/is_valid.html b/libs/geometry/doc/html/geometry/reference/algorithms/is_valid.html
new file mode 100644
index 0000000000..bf43d30dd5
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/is_valid.html
@@ -0,0 +1,354 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_valid</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../algorithms.html" title="Algorithms">
+<link rel="prev" href="is_simple.html" title="is_simple">
+<link rel="next" href="length.html" title="length">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_simple.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="length.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.algorithms.is_valid"></a><a class="link" href="is_valid.html" title="is_valid">is_valid</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp117918384"></a>
+Checks if a geometry is valid (in the OGC sense)
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_valid.h0"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_valid.synopsis"></a></span><a class="link" href="is_valid.html#geometry.reference.algorithms.is_valid.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">is_valid</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">)</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_valid.h1"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_valid.parameters"></a></span><a class="link" href="is_valid.html#geometry.reference.algorithms.is_valid.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Geometry const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.is_valid.h2"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_valid.returns"></a></span><a class="link" href="is_valid.html#geometry.reference.algorithms.is_valid.returns">Returns</a>
+ </h6>
+<p>
+ Returns true if the geometry is valid (in the OGC sense)
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_valid.h3"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_valid.header"></a></span><a class="link" href="is_valid.html#geometry.reference.algorithms.is_valid.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">is_valid</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_valid.h4"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_valid.conformance"></a></span><a class="link" href="is_valid.html#geometry.reference.algorithms.is_valid.conformance">Conformance</a>
+ </h6>
+<p>
+ The function is_valid is not defined by OGC.
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_valid.h5"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_valid.supported_geometries"></a></span><a class="link" href="is_valid.html#geometry.reference.algorithms.is_valid.supported_geometries">Supported
+ geometries</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Geometry
+ </p>
+ </th>
+<th>
+ <p>
+ Status
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Point
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Segment
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Box
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Ring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Polygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPoint
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiLinestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.algorithms.is_valid.h6"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_valid.complexity"></a></span><a class="link" href="is_valid.html#geometry.reference.algorithms.is_valid.complexity">Complexity</a>
+ </h6>
+<p>
+ Constant-time for points, segments, boxes and multi-points
+ </p>
+<p>
+ Linear for linestrings and multi-linestrings
+ </p>
+<p>
+ Linearithmic for rings
+ </p>
+<p>
+ Currently, worst-case quadratic for polygons and multi-polygons
+ </p>
+<h6>
+<a name="geometry.reference.algorithms.is_valid.h7"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_valid.example"></a></span><a class="link" href="is_valid.html#geometry.reference.algorithms.is_valid.example">Example</a>
+ </h6>
+<p>
+ Checks whether a geometry is valid
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">polygon_type</span><span class="special">;</span>
+
+ <span class="identifier">polygon_type</span> <span class="identifier">poly</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span>
+ <span class="string">"POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 2,0 0),(0 0,2 9,1 9,0 0),(2 9,9 2,9 9,2 9))"</span>
+ <span class="special">,</span> <span class="identifier">poly</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"is valid? "</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">is_valid</span><span class="special">(</span><span class="identifier">poly</span><span class="special">)</span> <span class="special">?</span> <span class="string">"yes"</span> <span class="special">:</span> <span class="string">"no"</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ Output:
+ </p>
+<pre class="programlisting">is valid? no
+
+<img src="../../../img/algorithms/is_valid_example.png" alt="is_valid_example">
+
+</pre>
+<h6>
+<a name="geometry.reference.algorithms.is_valid.h8"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.is_valid.see_also"></a></span><a class="link" href="is_valid.html#geometry.reference.algorithms.is_valid.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ <a class="link" href="is_simple.html" title="is_simple">is_simple</a>
+ </li></ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_simple.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="length.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/length.html b/libs/geometry/doc/html/geometry/reference/algorithms/length.html
index 89ca4381b7..a061c28113 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/length.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/length.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>length</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
-<link rel="prev" href="intersects/intersects_2_two_geometries.html" title="intersects (two geometries)">
+<link rel="prev" href="is_valid.html" title="is_valid">
<link rel="next" href="length/length_1.html" title="length">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,13 +20,13 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="intersects/intersects_2_two_geometries.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="length/length_1.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="is_valid.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="length/length_1.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.length"></a><a class="link" href="length.html" title="length">length</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="length/length_1.html">length</a></span></dt>
<dt><span class="section"><a href="length/length_2_with_strategy.html">length
(with strategy)</a></span></dt>
@@ -34,8 +34,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -43,7 +43,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="intersects/intersects_2_two_geometries.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="length/length_1.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="is_valid.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="length/length_1.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/length/length_1.html b/libs/geometry/doc/html/geometry/reference/algorithms/length/length_1.html
index 810c702612..e29f976079 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/length/length_1.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/length/length_1.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>length</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../length.html" title="length">
<link rel="prev" href="../length.html" title="length">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.length.length_1"></a><a class="link" href="length_1.html" title="length">length</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id885322"></a>
+ <a class="indexterm" name="idp118095584"></a>
Calculates the length of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_1.h0"></a>
- <span><a name="geometry.reference.algorithms.length.length_1.description"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_1.description"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.description">Description</a>
</h6>
<p>
The free function length calculates the length (the sum of distances
@@ -41,7 +41,7 @@ Calculates the length of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_1.h1"></a>
- <span><a name="geometry.reference.algorithms.length.length_1.synopsis"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_1.synopsis"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,7 +51,7 @@ Calculates the length of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_1.h2"></a>
- <span><a name="geometry.reference.algorithms.length.length_1.parameters"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_1.parameters"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -107,20 +107,20 @@ Calculates the length of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.length.length_1.h3"></a>
- <span><a name="geometry.reference.algorithms.length.length_1.returns"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_1.returns"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.returns">Returns</a>
</h6>
<p>
The calculated length
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_1.h4"></a>
- <span><a name="geometry.reference.algorithms.length.length_1.header"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_1.header"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -130,7 +130,7 @@ Calculates the length of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_1.h5"></a>
- <span><a name="geometry.reference.algorithms.length.length_1.conformance"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_1.conformance"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.conformance">Conformance</a>
</h6>
<p>
The function length implements function Length from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -138,7 +138,7 @@ Calculates the length of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_1.h6"></a>
- <span><a name="geometry.reference.algorithms.length.length_1.behavior"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_1.behavior"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -198,14 +198,14 @@ Calculates the length of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.length.length_1.h7"></a>
- <span><a name="geometry.reference.algorithms.length.length_1.complexity"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_1.complexity"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_1.h8"></a>
- <span><a name="geometry.reference.algorithms.length.length_1.examples"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.examples">Examples</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_1.examples"></a></span><a class="link" href="length_1.html#geometry.reference.algorithms.length.length_1.examples">Examples</a>
</h6>
<p>
The following simple example shows the calculation of the length of a
@@ -217,7 +217,6 @@ Calculates the length of a geometry.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
@@ -242,8 +241,8 @@ Calculates the length of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/length/length_2_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/length/length_2_with_strategy.html
index 873fb5ba2d..5fb22174b7 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/length/length_2_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/length/length_2_with_strategy.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>length (with strategy)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../length.html" title="length">
<link rel="prev" href="length_1.html" title="length">
@@ -28,12 +28,12 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id886511"></a>
+ <a class="indexterm" name="idp118226880"></a>
Calculates the length of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_2_with_strategy.h0"></a>
- <span><a name="geometry.reference.algorithms.length.length_2_with_strategy.description"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_2_with_strategy.description"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.description">Description</a>
</h6>
<p>
The free function length calculates the length (the sum of distances
@@ -45,7 +45,7 @@ Calculates the length of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_2_with_strategy.h1"></a>
- <span><a name="geometry.reference.algorithms.length.length_2_with_strategy.synopsis"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_2_with_strategy.synopsis"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -55,7 +55,7 @@ Calculates the length of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_2_with_strategy.h2"></a>
- <span><a name="geometry.reference.algorithms.length.length_2_with_strategy.parameters"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_2_with_strategy.parameters"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -135,20 +135,20 @@ Calculates the length of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.length.length_2_with_strategy.h3"></a>
- <span><a name="geometry.reference.algorithms.length.length_2_with_strategy.returns"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_2_with_strategy.returns"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.returns">Returns</a>
</h6>
<p>
The calculated length
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_2_with_strategy.h4"></a>
- <span><a name="geometry.reference.algorithms.length.length_2_with_strategy.header"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_2_with_strategy.header"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -158,7 +158,7 @@ Calculates the length of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_2_with_strategy.h5"></a>
- <span><a name="geometry.reference.algorithms.length.length_2_with_strategy.conformance"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_2_with_strategy.conformance"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.conformance">Conformance</a>
</h6>
<p>
The function length implements function Length from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -166,7 +166,7 @@ Calculates the length of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_2_with_strategy.h6"></a>
- <span><a name="geometry.reference.algorithms.length.length_2_with_strategy.behavior"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_2_with_strategy.behavior"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -226,14 +226,14 @@ Calculates the length of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.length.length_2_with_strategy.h7"></a>
- <span><a name="geometry.reference.algorithms.length.length_2_with_strategy.complexity"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_2_with_strategy.complexity"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.length.length_2_with_strategy.h8"></a>
- <span><a name="geometry.reference.algorithms.length.length_2_with_strategy.examples"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.examples">Examples</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.length.length_2_with_strategy.examples"></a></span><a class="link" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.examples">Examples</a>
</h6>
<p>
The following example shows the length measured over a sphere, expressed
@@ -256,7 +256,7 @@ Calculates the length of a geometry using the specified strategy.
<span class="identifier">line</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">P</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">52</span><span class="special">));</span>
<span class="keyword">double</span> <span class="keyword">const</span> <span class="identifier">mean_radius</span> <span class="special">=</span> <span class="number">6371.0</span><span class="special">;</span> <a class="co" name="geometry.reference.algorithms.length.length_2_with_strategy.c0" href="length_2_with_strategy.html#geometry.reference.algorithms.length.length_2_with_strategy.c1"><img src="../../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"length is "</span>
- <span class="special">&lt;&lt;</span> <span class="identifier">length</span><span class="special">(</span><span class="identifier">line</span><span class="special">,</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">distance</span><span class="special">::</span><span class="identifier">haversine</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">&gt;(</span><span class="identifier">mean_radius</span><span class="special">)</span> <span class="special">)</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">length</span><span class="special">(</span><span class="identifier">line</span><span class="special">,</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">distance</span><span class="special">::</span><span class="identifier">haversine</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;(</span><span class="identifier">mean_radius</span><span class="special">)</span> <span class="special">)</span>
<span class="special">&lt;&lt;</span> <span class="string">" kilometers "</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
@@ -278,8 +278,8 @@ Calculates the length of a geometry using the specified strategy.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/make.html b/libs/geometry/doc/html/geometry/reference/algorithms/make.html
index 465872f4f5..fda99d9b7d 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/make.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/make.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>make</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="length/length_2_with_strategy.html" title="length (with strategy)">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.make"></a><a class="link" href="make.html" title="make">make</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="make/make_2_2_coordinate_values.html">make
(2 coordinate values)</a></span></dt>
<dt><span class="section"><a href="make/make_3_3_coordinate_values.html">make
@@ -37,8 +37,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_2_2_coordinate_values.html b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_2_2_coordinate_values.html
index 8c6b05b9b4..adfbfa4f8f 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_2_2_coordinate_values.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_2_2_coordinate_values.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>make (2 coordinate values)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../make.html" title="make">
<link rel="prev" href="../make.html" title="make">
@@ -28,12 +28,12 @@
(2 coordinate values)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id887977"></a>
+ <a class="indexterm" name="idp118398208"></a>
Construct a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.h0"></a>
- <span><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.synopsis"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.synopsis"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -43,7 +43,7 @@ Construct a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.h1"></a>
- <span><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.parameters"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.parameters"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -145,20 +145,20 @@ Construct a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.h2"></a>
- <span><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.returns"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.returns"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.returns">Returns</a>
</h6>
<p>
The constructed geometry, here: a 2D point
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.h3"></a>
- <span><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.header"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.header"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -168,7 +168,7 @@ Construct a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.h4"></a>
- <span><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.example"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.example"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.example">Example</a>
</h6>
<p>
Shows the usage of make as a generic constructor for different point
@@ -226,17 +226,17 @@ x=1 y=2 (7mypoint)
</pre>
<h6>
<a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.h5"></a>
- <span><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.see_also"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_2_2_coordinate_values.see_also"></a></span><a class="link" href="make_2_2_coordinate_values.html#geometry.reference.algorithms.make.make_2_2_coordinate_values.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../assign/assign_values_3_2_coordinate_values.html" title="assign_values (2 coordinate values)">assign</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_3_3_coordinate_values.html b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_3_3_coordinate_values.html
index bb2e061fc8..546ca83478 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_3_3_coordinate_values.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_3_3_coordinate_values.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>make (3 coordinate values)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../make.html" title="make">
<link rel="prev" href="make_2_2_coordinate_values.html" title="make (2 coordinate values)">
@@ -28,12 +28,12 @@
(3 coordinate values)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id889726"></a>
+ <a class="indexterm" name="idp118606624"></a>
Construct a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.h0"></a>
- <span><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.synopsis"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.synopsis"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -43,7 +43,7 @@ Construct a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.h1"></a>
- <span><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.parameters"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.parameters"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -167,20 +167,20 @@ Construct a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.h2"></a>
- <span><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.returns"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.returns"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.returns">Returns</a>
</h6>
<p>
The constructed geometry, here: a 3D point
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.h3"></a>
- <span><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.header"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.header"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -190,7 +190,7 @@ Construct a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.h4"></a>
- <span><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.example"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.example"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.example">Example</a>
</h6>
<p>
Using make to construct a three dimensional point
@@ -219,17 +219,17 @@ Construct a geometry.
</pre>
<h6>
<a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.h5"></a>
- <span><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.see_also"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_3_3_coordinate_values.see_also"></a></span><a class="link" href="make_3_3_coordinate_values.html#geometry.reference.algorithms.make.make_3_3_coordinate_values.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../assign/assign_values_4_3_coordinate_values.html" title="assign_values (3 coordinate values)">assign</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_inverse.html b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_inverse.html
index 698f384e07..75d7e652de 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_inverse.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_inverse.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>make_inverse</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../make.html" title="make">
<link rel="prev" href="make_3_3_coordinate_values.html" title="make (3 coordinate values)">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.make.make_inverse"></a><a class="link" href="make_inverse.html" title="make_inverse">make_inverse</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id890840"></a>
+ <a class="indexterm" name="idp118737088"></a>
Construct a box with inverse infinite coordinates.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_inverse.h0"></a>
- <span><a name="geometry.reference.algorithms.make.make_inverse.description"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_inverse.description"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.description">Description</a>
</h6>
<p>
The make_inverse function initializes a 2D or 3D box with large coordinates,
@@ -42,7 +42,7 @@ Construct a box with inverse infinite coordinates.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_inverse.h1"></a>
- <span><a name="geometry.reference.algorithms.make.make_inverse.synopsis"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_inverse.synopsis"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -52,7 +52,7 @@ Construct a box with inverse infinite coordinates.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_inverse.h2"></a>
- <span><a name="geometry.reference.algorithms.make.make_inverse.parameters"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_inverse.parameters"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -108,20 +108,20 @@ Construct a box with inverse infinite coordinates.
</table></div>
<h6>
<a name="geometry.reference.algorithms.make.make_inverse.h3"></a>
- <span><a name="geometry.reference.algorithms.make.make_inverse.returns"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_inverse.returns"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.returns">Returns</a>
</h6>
<p>
The constructed geometry, here: a box
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_inverse.h4"></a>
- <span><a name="geometry.reference.algorithms.make.make_inverse.header"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_inverse.header"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -131,7 +131,7 @@ Construct a box with inverse infinite coordinates.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_inverse.h5"></a>
- <span><a name="geometry.reference.algorithms.make.make_inverse.example"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_inverse.example"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.example">Example</a>
</h6>
<p>
Usage of make_inverse and expand to conveniently determine bounding box
@@ -172,17 +172,17 @@ Construct a box with inverse infinite coordinates.
</pre>
<h6>
<a name="geometry.reference.algorithms.make.make_inverse.h6"></a>
- <span><a name="geometry.reference.algorithms.make.make_inverse.see_also"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_inverse.see_also"></a></span><a class="link" href="make_inverse.html#geometry.reference.algorithms.make.make_inverse.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../assign/assign_inverse.html" title="assign_inverse">assign_inverse</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_zero.html b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_zero.html
index 5799de91dc..08d5bc3b9a 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/make/make_zero.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/make/make_zero.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>make_zero</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../make.html" title="make">
<link rel="prev" href="make_inverse.html" title="make_inverse">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.make.make_zero"></a><a class="link" href="make_zero.html" title="make_zero">make_zero</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id892272"></a>
+ <a class="indexterm" name="idp118874752"></a>
Construct a geometry with its coordinates initialized to zero.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_zero.h0"></a>
- <span><a name="geometry.reference.algorithms.make.make_zero.description"></a></span><a class="link" href="make_zero.html#geometry.reference.algorithms.make.make_zero.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_zero.description"></a></span><a class="link" href="make_zero.html#geometry.reference.algorithms.make.make_zero.description">Description</a>
</h6>
<p>
The make_zero function initializes a 2D or 3D point or box with coordinates
@@ -40,7 +40,7 @@ Construct a geometry with its coordinates initialized to zero.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_zero.h1"></a>
- <span><a name="geometry.reference.algorithms.make.make_zero.synopsis"></a></span><a class="link" href="make_zero.html#geometry.reference.algorithms.make.make_zero.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_zero.synopsis"></a></span><a class="link" href="make_zero.html#geometry.reference.algorithms.make.make_zero.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Construct a geometry with its coordinates initialized to zero.
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_zero.h2"></a>
- <span><a name="geometry.reference.algorithms.make.make_zero.parameters"></a></span><a class="link" href="make_zero.html#geometry.reference.algorithms.make.make_zero.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_zero.parameters"></a></span><a class="link" href="make_zero.html#geometry.reference.algorithms.make.make_zero.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -106,20 +106,20 @@ Construct a geometry with its coordinates initialized to zero.
</table></div>
<h6>
<a name="geometry.reference.algorithms.make.make_zero.h3"></a>
- <span><a name="geometry.reference.algorithms.make.make_zero.returns"></a></span><a class="link" href="make_zero.html#geometry.reference.algorithms.make.make_zero.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_zero.returns"></a></span><a class="link" href="make_zero.html#geometry.reference.algorithms.make.make_zero.returns">Returns</a>
</h6>
<p>
The constructed and zero-initialized geometry
</p>
<h6>
<a name="geometry.reference.algorithms.make.make_zero.h4"></a>
- <span><a name="geometry.reference.algorithms.make.make_zero.header"></a></span><a class="link" href="make_zero.html#geometry.reference.algorithms.make.make_zero.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.make.make_zero.header"></a></span><a class="link" href="make_zero.html#geometry.reference.algorithms.make.make_zero.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -130,8 +130,8 @@ Construct a geometry with its coordinates initialized to zero.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/num_geometries.html b/libs/geometry/doc/html/geometry/reference/algorithms/num_geometries.html
index 5e930fd5cd..af6cd070e5 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/num_geometries.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/num_geometries.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>num_geometries</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="make/make_zero.html" title="make_zero">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.num_geometries"></a><a class="link" href="num_geometries.html" title="num_geometries">num_geometries</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id892693"></a>
+ <a class="indexterm" name="idp118922720"></a>
Calculates the number of geometries of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_geometries.h0"></a>
- <span><a name="geometry.reference.algorithms.num_geometries.description"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_geometries.description"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.description">Description</a>
</h6>
<p>
The free function num_geometries calculates the number of geometries of
@@ -40,7 +40,7 @@ Calculates the number of geometries of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_geometries.h1"></a>
- <span><a name="geometry.reference.algorithms.num_geometries.synopsis"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_geometries.synopsis"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Calculates the number of geometries of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_geometries.h2"></a>
- <span><a name="geometry.reference.algorithms.num_geometries.parameters"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_geometries.parameters"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -106,20 +106,20 @@ Calculates the number of geometries of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.num_geometries.h3"></a>
- <span><a name="geometry.reference.algorithms.num_geometries.returns"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_geometries.returns"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.returns">Returns</a>
</h6>
<p>
The calculated number of geometries
</p>
<h6>
<a name="geometry.reference.algorithms.num_geometries.h4"></a>
- <span><a name="geometry.reference.algorithms.num_geometries.header"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_geometries.header"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -129,7 +129,7 @@ Calculates the number of geometries of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_geometries.h5"></a>
- <span><a name="geometry.reference.algorithms.num_geometries.conformance"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_geometries.conformance"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.conformance">Conformance</a>
</h6>
<p>
The function num_geometries implements function NumGeometries from the
@@ -138,7 +138,7 @@ Calculates the number of geometries of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_geometries.h6"></a>
- <span><a name="geometry.reference.algorithms.num_geometries.behavior"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_geometries.behavior"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -186,14 +186,14 @@ Calculates the number of geometries of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.num_geometries.h7"></a>
- <span><a name="geometry.reference.algorithms.num_geometries.complexity"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_geometries.complexity"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.complexity">Complexity</a>
</h6>
<p>
Constant
</p>
<h6>
<a name="geometry.reference.algorithms.num_geometries.h8"></a>
- <span><a name="geometry.reference.algorithms.num_geometries.examples"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.examples">Examples</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_geometries.examples"></a></span><a class="link" href="num_geometries.html#geometry.reference.algorithms.num_geometries.examples">Examples</a>
</h6>
<p>
Get the number of geometries making up a multi-geometry
@@ -205,9 +205,7 @@ Calculates the number of geometries of a geometry.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
@@ -235,8 +233,8 @@ Calculates the number of geometries of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/num_interior_rings.html b/libs/geometry/doc/html/geometry/reference/algorithms/num_interior_rings.html
index eb61714555..24defca3c7 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/num_interior_rings.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/num_interior_rings.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>num_interior_rings</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="num_geometries.html" title="num_geometries">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.num_interior_rings"></a><a class="link" href="num_interior_rings.html" title="num_interior_rings">num_interior_rings</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id894057"></a>
+ <a class="indexterm" name="idp119066608"></a>
Calculates the number of interior rings of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_interior_rings.h0"></a>
- <span><a name="geometry.reference.algorithms.num_interior_rings.description"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_interior_rings.description"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.description">Description</a>
</h6>
<p>
The free function num_interior_rings calculates the number of interior
@@ -40,7 +40,7 @@ Calculates the number of interior rings of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_interior_rings.h1"></a>
- <span><a name="geometry.reference.algorithms.num_interior_rings.synopsis"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_interior_rings.synopsis"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Calculates the number of interior rings of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_interior_rings.h2"></a>
- <span><a name="geometry.reference.algorithms.num_interior_rings.parameters"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_interior_rings.parameters"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -106,20 +106,20 @@ Calculates the number of interior rings of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.num_interior_rings.h3"></a>
- <span><a name="geometry.reference.algorithms.num_interior_rings.returns"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_interior_rings.returns"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.returns">Returns</a>
</h6>
<p>
The calculated number of interior rings
</p>
<h6>
<a name="geometry.reference.algorithms.num_interior_rings.h4"></a>
- <span><a name="geometry.reference.algorithms.num_interior_rings.header"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_interior_rings.header"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -129,7 +129,7 @@ Calculates the number of interior rings of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_interior_rings.h5"></a>
- <span><a name="geometry.reference.algorithms.num_interior_rings.conformance"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_interior_rings.conformance"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.conformance">Conformance</a>
</h6>
<p>
The function num_interior_ring implements function NumInteriorRing from
@@ -147,7 +147,7 @@ Calculates the number of interior rings of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.num_interior_rings.h6"></a>
- <span><a name="geometry.reference.algorithms.num_interior_rings.behavior"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_interior_rings.behavior"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -207,14 +207,14 @@ Calculates the number of interior rings of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.num_interior_rings.h7"></a>
- <span><a name="geometry.reference.algorithms.num_interior_rings.complexity"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_interior_rings.complexity"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.complexity">Complexity</a>
</h6>
<p>
Constant
</p>
<h6>
<a name="geometry.reference.algorithms.num_interior_rings.h8"></a>
- <span><a name="geometry.reference.algorithms.num_interior_rings.examples"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.examples">Examples</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_interior_rings.examples"></a></span><a class="link" href="num_interior_rings.html#geometry.reference.algorithms.num_interior_rings.examples">Examples</a>
</h6>
<p>
Get the number of interior rings in a multi-polygon
@@ -226,9 +226,7 @@ Calculates the number of interior rings of a geometry.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
@@ -256,8 +254,8 @@ Calculates the number of interior rings of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/num_points.html b/libs/geometry/doc/html/geometry/reference/algorithms/num_points.html
index 99cd8b292c..418da1bc7f 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/num_points.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/num_points.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>num_points</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="num_interior_rings.html" title="num_interior_rings">
@@ -27,19 +27,19 @@
<a name="geometry.reference.algorithms.num_points"></a><a class="link" href="num_points.html" title="num_points">num_points</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id895452"></a>
+ <a class="indexterm" name="idp119214144"></a>
Calculates the number of points of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_points.h0"></a>
- <span><a name="geometry.reference.algorithms.num_points.description"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_points.description"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.description">Description</a>
</h6>
<p>
The free function num_points calculates the number of points of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_points.h1"></a>
- <span><a name="geometry.reference.algorithms.num_points.synopsis"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_points.synopsis"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -49,7 +49,7 @@ Calculates the number of points of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_points.h2"></a>
- <span><a name="geometry.reference.algorithms.num_points.parameters"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_points.parameters"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -127,20 +127,20 @@ Calculates the number of points of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.num_points.h3"></a>
- <span><a name="geometry.reference.algorithms.num_points.returns"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_points.returns"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.returns">Returns</a>
</h6>
<p>
The calculated number of points
</p>
<h6>
<a name="geometry.reference.algorithms.num_points.h4"></a>
- <span><a name="geometry.reference.algorithms.num_points.header"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_points.header"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -150,7 +150,7 @@ Calculates the number of points of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.num_points.h5"></a>
- <span><a name="geometry.reference.algorithms.num_points.conformance"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_points.conformance"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.conformance">Conformance</a>
</h6>
<p>
The function num_points implements function NumPoints from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -168,7 +168,7 @@ Calculates the number of points of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.num_points.h6"></a>
- <span><a name="geometry.reference.algorithms.num_points.behavior"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_points.behavior"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -215,12 +215,12 @@ Calculates the number of points of a geometry.
<tr>
<td>
<p>
- Rectangle
+ Box
</p>
</td>
<td>
<p>
- Returns 4
+ Returns 2^d, where d is the dimension of the box
</p>
</td>
</tr>
@@ -277,14 +277,14 @@ Calculates the number of points of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.num_points.h7"></a>
- <span><a name="geometry.reference.algorithms.num_points.complexity"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_points.complexity"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.complexity">Complexity</a>
</h6>
<p>
Constant or Linear
</p>
<h6>
<a name="geometry.reference.algorithms.num_points.h8"></a>
- <span><a name="geometry.reference.algorithms.num_points.examples"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.examples">Examples</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.num_points.examples"></a></span><a class="link" href="num_points.html#geometry.reference.algorithms.num_points.examples">Examples</a>
</h6>
<p>
Get the number of points in a geometry
@@ -294,12 +294,9 @@ Calculates the number of points of a geometry.
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">multi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
@@ -327,8 +324,8 @@ Calculates the number of points of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/overlaps.html b/libs/geometry/doc/html/geometry/reference/algorithms/overlaps.html
index 497c832589..077fc96542 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/overlaps.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/overlaps.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>overlaps</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="num_points.html" title="num_points">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.overlaps"></a><a class="link" href="overlaps.html" title="overlaps">overlaps</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id897027"></a>
+ <a class="indexterm" name="idp119376080"></a>
Checks if two geometries overlap.
</p>
<h6>
<a name="geometry.reference.algorithms.overlaps.h0"></a>
- <span><a name="geometry.reference.algorithms.overlaps.synopsis"></a></span><a class="link" href="overlaps.html#geometry.reference.algorithms.overlaps.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.overlaps.synopsis"></a></span><a class="link" href="overlaps.html#geometry.reference.algorithms.overlaps.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -42,7 +42,7 @@ Checks if two geometries overlap.
</p>
<h6>
<a name="geometry.reference.algorithms.overlaps.h1"></a>
- <span><a name="geometry.reference.algorithms.overlaps.parameters"></a></span><a class="link" href="overlaps.html#geometry.reference.algorithms.overlaps.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.overlaps.parameters"></a></span><a class="link" href="overlaps.html#geometry.reference.algorithms.overlaps.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -81,6 +81,9 @@ Checks if two geometries overlap.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
</td>
<td>
<p>
@@ -88,6 +91,9 @@ Checks if two geometries overlap.
</p>
</td>
<td>
+ <p>
+ A model of the specified concept
+ </p>
</td>
</tr>
<tr>
@@ -97,6 +103,9 @@ Checks if two geometries overlap.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
</td>
<td>
<p>
@@ -104,26 +113,29 @@ Checks if two geometries overlap.
</p>
</td>
<td>
+ <p>
+ A model of the specified concept
+ </p>
</td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.algorithms.overlaps.h2"></a>
- <span><a name="geometry.reference.algorithms.overlaps.returns"></a></span><a class="link" href="overlaps.html#geometry.reference.algorithms.overlaps.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.overlaps.returns"></a></span><a class="link" href="overlaps.html#geometry.reference.algorithms.overlaps.returns">Returns</a>
</h6>
<p>
Returns true if two geometries overlap
</p>
<h6>
<a name="geometry.reference.algorithms.overlaps.h3"></a>
- <span><a name="geometry.reference.algorithms.overlaps.header"></a></span><a class="link" href="overlaps.html#geometry.reference.algorithms.overlaps.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.overlaps.header"></a></span><a class="link" href="overlaps.html#geometry.reference.algorithms.overlaps.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -133,17 +145,663 @@ Checks if two geometries overlap.
</p>
<h6>
<a name="geometry.reference.algorithms.overlaps.h4"></a>
- <span><a name="geometry.reference.algorithms.overlaps.conformance"></a></span><a class="link" href="overlaps.html#geometry.reference.algorithms.overlaps.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.overlaps.conformance"></a></span><a class="link" href="overlaps.html#geometry.reference.algorithms.overlaps.conformance">Conformance</a>
</h6>
<p>
The function overlaps implements function Overlaps from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
Simple Feature Specification</a>.
</p>
+<h6>
+<a name="geometry.reference.algorithms.overlaps.h5"></a>
+ <span class="phrase"><a name="geometry.reference.algorithms.overlaps.supported_geometries"></a></span><a class="link" href="overlaps.html#geometry.reference.algorithms.overlaps.supported_geometries">Supported
+ geometries</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ </th>
+<th>
+ <p>
+ Point
+ </p>
+ </th>
+<th>
+ <p>
+ Segment
+ </p>
+ </th>
+<th>
+ <p>
+ Box
+ </p>
+ </th>
+<th>
+ <p>
+ Linestring
+ </p>
+ </th>
+<th>
+ <p>
+ Ring
+ </p>
+ </th>
+<th>
+ <p>
+ Polygon
+ </p>
+ </th>
+<th>
+ <p>
+ MultiPoint
+ </p>
+ </th>
+<th>
+ <p>
+ MultiLinestring
+ </p>
+ </th>
+<th>
+ <p>
+ MultiPolygon
+ </p>
+ </th>
+<th>
+ <p>
+ Variant
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Point
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Segment
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Box
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Linestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Ring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Polygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPoint
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiLinestring
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Variant
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter.html b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter.html
index 824690a559..0a8d8e30c3 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>perimeter</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="overlaps.html" title="overlaps">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.perimeter"></a><a class="link" href="perimeter.html" title="perimeter">perimeter</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="perimeter/perimeter_1.html">perimeter</a></span></dt>
<dt><span class="section"><a href="perimeter/perimeter_2_with_strategy.html">perimeter
(with strategy)</a></span></dt>
@@ -34,8 +34,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_1.html b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_1.html
index a660fa37ab..00c3771eef 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_1.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_1.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>perimeter</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../perimeter.html" title="perimeter">
<link rel="prev" href="../perimeter.html" title="perimeter">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.perimeter.perimeter_1"></a><a class="link" href="perimeter_1.html" title="perimeter">perimeter</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id897547"></a>
+ <a class="indexterm" name="idp119709408"></a>
Calculates the perimeter of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_1.h0"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_1.description"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_1.description"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.description">Description</a>
</h6>
<p>
The function perimeter returns the perimeter of a geometry, using the
@@ -40,7 +40,7 @@ Calculates the perimeter of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_1.h1"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_1.synopsis"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_1.synopsis"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Calculates the perimeter of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_1.h2"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_1.parameters"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_1.parameters"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -106,20 +106,20 @@ Calculates the perimeter of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_1.h3"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_1.returns"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_1.returns"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.returns">Returns</a>
</h6>
<p>
The calculated perimeter
</p>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_1.h4"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_1.header"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_1.header"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -129,7 +129,7 @@ Calculates the perimeter of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_1.h5"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_1.conformance"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_1.conformance"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.conformance">Conformance</a>
</h6>
<p>
The function perimeter is not defined by OGC.
@@ -147,7 +147,7 @@ Calculates the perimeter of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_1.h6"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_1.behavior"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_1.behavior"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -207,7 +207,7 @@ Calculates the perimeter of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_1.h7"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_1.complexity"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_1.complexity"></a></span><a class="link" href="perimeter_1.html#geometry.reference.algorithms.perimeter.perimeter_1.complexity">Complexity</a>
</h6>
<p>
Linear
@@ -215,8 +215,8 @@ Calculates the perimeter of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_2_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_2_with_strategy.html
index 1fb3c34ab1..d9b032405a 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_2_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/perimeter/perimeter_2_with_strategy.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>perimeter (with strategy)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../perimeter.html" title="perimeter">
<link rel="prev" href="perimeter_1.html" title="perimeter">
@@ -28,12 +28,12 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id898209"></a>
+ <a class="indexterm" name="idp119784512"></a>
Calculates the perimeter of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.h0"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.description"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.description"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.description">Description</a>
</h6>
<p>
The function perimeter returns the perimeter of a geometry, using specified
@@ -41,7 +41,7 @@ Calculates the perimeter of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.h1"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.synopsis"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.synopsis"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,7 +51,7 @@ Calculates the perimeter of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.h2"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.parameters"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.parameters"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -131,20 +131,20 @@ Calculates the perimeter of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.h3"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.returns"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.returns"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.returns">Returns</a>
</h6>
<p>
The calculated perimeter
</p>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.h4"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.header"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.header"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -154,7 +154,7 @@ Calculates the perimeter of a geometry using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.h5"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.conformance"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.conformance"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.conformance">Conformance</a>
</h6>
<p>
The function perimeter is not defined by OGC.
@@ -172,7 +172,7 @@ Calculates the perimeter of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.h6"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.behavior"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.behavior"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -232,7 +232,7 @@ Calculates the perimeter of a geometry using the specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.h7"></a>
- <span><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.complexity"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.complexity"></a></span><a class="link" href="perimeter_2_with_strategy.html#geometry.reference.algorithms.perimeter.perimeter_2_with_strategy.complexity">Complexity</a>
</h6>
<p>
Linear
@@ -240,8 +240,8 @@ Calculates the perimeter of a geometry using the specified strategy.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/reverse.html b/libs/geometry/doc/html/geometry/reference/algorithms/reverse.html
index 941678d452..1bec3ea7a5 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/reverse.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/reverse.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>reverse</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="perimeter/perimeter_2_with_strategy.html" title="perimeter (with strategy)">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.reverse"></a><a class="link" href="reverse.html" title="reverse">reverse</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id898958"></a>
+ <a class="indexterm" name="idp119869168"></a>
Reverses the points within a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.reverse.h0"></a>
- <span><a name="geometry.reference.algorithms.reverse.description"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.reverse.description"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.description">Description</a>
</h6>
<p>
Generic function to reverse a geometry. It resembles the std::reverse functionality,
@@ -41,7 +41,7 @@ Reverses the points within a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.reverse.h1"></a>
- <span><a name="geometry.reference.algorithms.reverse.synopsis"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.reverse.synopsis"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -51,7 +51,7 @@ Reverses the points within a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.reverse.h2"></a>
- <span><a name="geometry.reference.algorithms.reverse.parameters"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.reverse.parameters"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -107,13 +107,13 @@ Reverses the points within a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.reverse.h3"></a>
- <span><a name="geometry.reference.algorithms.reverse.header"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.reverse.header"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -123,7 +123,7 @@ Reverses the points within a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.reverse.h4"></a>
- <span><a name="geometry.reference.algorithms.reverse.conformance"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.reverse.conformance"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.conformance">Conformance</a>
</h6>
<p>
The function reverse is not defined by OGC.
@@ -133,7 +133,7 @@ Reverses the points within a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.reverse.h5"></a>
- <span><a name="geometry.reference.algorithms.reverse.behavior"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.reverse.behavior"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -180,7 +180,7 @@ Reverses the points within a geometry.
<tr>
<td>
<p>
- Rectangle
+ Box
</p>
</td>
<td>
@@ -275,14 +275,14 @@ Reverses the points within a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.reverse.h6"></a>
- <span><a name="geometry.reference.algorithms.reverse.complexity"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.reverse.complexity"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.reverse.h7"></a>
- <span><a name="geometry.reference.algorithms.reverse.example"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.reverse.example"></a></span><a class="link" href="reverse.html#geometry.reference.algorithms.reverse.example">Example</a>
</h6>
<p>
Shows how to reverse a ring or polygon
@@ -343,8 +343,8 @@ Reverses the points within a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/simplify.html b/libs/geometry/doc/html/geometry/reference/algorithms/simplify.html
index 5fad2fbccd..e29daf2016 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/simplify.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/simplify.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>simplify</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="reverse.html" title="reverse">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.simplify"></a><a class="link" href="simplify.html" title="simplify">simplify</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="simplify/simplify_4_with_strategy.html">simplify
(with strategy)</a></span></dt>
<dt><span class="section"><a href="simplify/simplify_3.html">simplify</a></span></dt>
@@ -34,8 +34,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_3.html b/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_3.html
index 2c4e503b08..e16a9a77a8 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_3.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_3.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>simplify</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../simplify.html" title="simplify">
<link rel="prev" href="simplify_4_with_strategy.html" title="simplify (with strategy)">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.simplify.simplify_3"></a><a class="link" href="simplify_3.html" title="simplify">simplify</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id901827"></a>
+ <a class="indexterm" name="idp120209728"></a>
Simplify a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.simplify.simplify_3.h0"></a>
- <span><a name="geometry.reference.algorithms.simplify.simplify_3.synopsis"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.simplify.simplify_3.synopsis"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -42,7 +42,7 @@ Simplify a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.simplify.simplify_3.h1"></a>
- <span><a name="geometry.reference.algorithms.simplify.simplify_3.parameters"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.simplify.simplify_3.parameters"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -145,13 +145,13 @@ Simplify a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.simplify.simplify_3.h2"></a>
- <span><a name="geometry.reference.algorithms.simplify.simplify_3.header"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.simplify.simplify_3.header"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -161,7 +161,7 @@ Simplify a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.simplify.simplify_3.h3"></a>
- <span><a name="geometry.reference.algorithms.simplify.simplify_3.conformance"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.simplify.simplify_3.conformance"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.conformance">Conformance</a>
</h6>
<p>
The function simplify is not defined by OGC.
@@ -190,7 +190,7 @@ Simplify a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.simplify.simplify_3.h4"></a>
- <span><a name="geometry.reference.algorithms.simplify.simplify_3.behavior"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.simplify.simplify_3.behavior"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.behavior">Behavior</a>
</h6>
<p>
Simplification is done using <a href="http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm" target="_top">Douglas-Peucker</a>
@@ -208,7 +208,7 @@ Simplify a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.simplify.simplify_3.h5"></a>
- <span><a name="geometry.reference.algorithms.simplify.simplify_3.examples"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.examples">Examples</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.simplify.simplify_3.examples"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.examples">Examples</a>
</h6>
<p>
Example showing how to simplify a linestring
@@ -269,7 +269,7 @@ simplified: ((1.1, 1.1), (3.1, 3.1), (4.9, 1.1), (3.1, 1.9))
</pre>
<h6>
<a name="geometry.reference.algorithms.simplify.simplify_3.h6"></a>
- <span><a name="geometry.reference.algorithms.simplify.simplify_3.image_s_"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.image_s_">Image(s)</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.simplify.simplify_3.image_s_"></a></span><a class="link" href="simplify_3.html#geometry.reference.algorithms.simplify.simplify_3.image_s_">Image(s)</a>
</h6>
<p>
<span class="inlinemediaobject"><img src="../../../../svg_simplify_country.png" alt="svg_simplify_country"></span>
@@ -277,8 +277,8 @@ simplified: ((1.1, 1.1), (3.1, 3.1), (4.9, 1.1), (3.1, 1.9))
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_4_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_4_with_strategy.html
index 548dad69c5..f5bd50c310 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_4_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/simplify/simplify_4_with_strategy.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>simplify (with strategy)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../simplify.html" title="simplify">
<link rel="prev" href="../simplify.html" title="simplify">
@@ -28,22 +28,23 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id901221"></a>
+ <a class="indexterm" name="idp120140208"></a>
Simplify a geometry using a specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.simplify.simplify_4_with_strategy.h0"></a>
- <span><a name="geometry.reference.algorithms.simplify.simplify_4_with_strategy.synopsis"></a></span><a class="link" href="simplify_4_with_strategy.html#geometry.reference.algorithms.simplify.simplify_4_with_strategy.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.simplify.simplify_4_with_strategy.synopsis"></a></span><a class="link" href="simplify_4_with_strategy.html#geometry.reference.algorithms.simplify.simplify_4_with_strategy.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Distance</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Strategy</span><span class="special">&gt;</span>
-<span class="keyword">void</span> <span class="identifier">simplify</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">Distance</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">max_distance</span><span class="special">,</span> <span class="identifier">Strategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">strategy</span><span class="special">)</span></pre>
+<span class="keyword">void</span> <span class="identifier">simplify</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">Distance</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">max_distance</span><span class="special">,</span>
+ <span class="identifier">Strategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">strategy</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.algorithms.simplify.simplify_4_with_strategy.h1"></a>
- <span><a name="geometry.reference.algorithms.simplify.simplify_4_with_strategy.parameters"></a></span><a class="link" href="simplify_4_with_strategy.html#geometry.reference.algorithms.simplify.simplify_4_with_strategy.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.simplify.simplify_4_with_strategy.parameters"></a></span><a class="link" href="simplify_4_with_strategy.html#geometry.reference.algorithms.simplify.simplify_4_with_strategy.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -169,13 +170,13 @@ Simplify a geometry using a specified strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.simplify.simplify_4_with_strategy.h2"></a>
- <span><a name="geometry.reference.algorithms.simplify.simplify_4_with_strategy.header"></a></span><a class="link" href="simplify_4_with_strategy.html#geometry.reference.algorithms.simplify.simplify_4_with_strategy.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.simplify.simplify_4_with_strategy.header"></a></span><a class="link" href="simplify_4_with_strategy.html#geometry.reference.algorithms.simplify.simplify_4_with_strategy.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -186,8 +187,8 @@ Simplify a geometry using a specified strategy.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/sym_difference.html b/libs/geometry/doc/html/geometry/reference/algorithms/sym_difference.html
index db70ec6a86..494d2e2793 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/sym_difference.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/sym_difference.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>sym_difference</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="simplify/simplify_3.html" title="simplify">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.sym_difference"></a><a class="link" href="sym_difference.html" title="sym_difference">sym_difference</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id903453"></a>
+ <a class="indexterm" name="idp120401488"></a>
Calculate the symmetric difference of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.sym_difference.h0"></a>
- <span><a name="geometry.reference.algorithms.sym_difference.description"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.sym_difference.description"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.description">Description</a>
</h6>
<p>
The free function symmetric difference calculates the spatial set theoretic
@@ -40,7 +40,7 @@ Calculate the symmetric difference of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.sym_difference.h1"></a>
- <span><a name="geometry.reference.algorithms.sym_difference.synopsis"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.sym_difference.synopsis"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Calculate the symmetric difference of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.sym_difference.h2"></a>
- <span><a name="geometry.reference.algorithms.sym_difference.parameters"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.sym_difference.parameters"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -153,13 +153,13 @@ Calculate the symmetric difference of two geometries.
</table></div>
<h6>
<a name="geometry.reference.algorithms.sym_difference.h3"></a>
- <span><a name="geometry.reference.algorithms.sym_difference.header"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.sym_difference.header"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -169,7 +169,7 @@ Calculate the symmetric difference of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.sym_difference.h4"></a>
- <span><a name="geometry.reference.algorithms.sym_difference.conformance"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.sym_difference.conformance"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.conformance">Conformance</a>
</h6>
<p>
The function sym_difference implements function SymDifference from the
@@ -178,7 +178,7 @@ Calculate the symmetric difference of two geometries.
</p>
<h6>
<a name="geometry.reference.algorithms.sym_difference.h5"></a>
- <span><a name="geometry.reference.algorithms.sym_difference.behavior"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.sym_difference.behavior"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -226,6 +226,32 @@ Calculate the symmetric difference of two geometries.
<tr>
<td>
<p>
+ linear (e.g. linestring)
+ </p>
+ </td>
+<td>
+ <p>
+ All combinations of: linestring, multi_linestring; results in
+ a collection of linestrings
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ pointlike (e.g. point)
+ </p>
+ </td>
+<td>
+ <p>
+ All combinations of: point, multi_point; results in a collection
+ of points
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
Other geometries
</p>
</td>
@@ -274,7 +300,7 @@ Calculate the symmetric difference of two geometries.
</table></div>
<h6>
<a name="geometry.reference.algorithms.sym_difference.h6"></a>
- <span><a name="geometry.reference.algorithms.sym_difference.example"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.sym_difference.example"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.example">Example</a>
</h6>
<p>
Shows how to calculate the symmetric difference (XOR) of two polygons
@@ -286,8 +312,7 @@ Calculate the symmetric difference of two geometries.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -346,9 +371,9 @@ total: 3.1459
</pre>
<h6>
<a name="geometry.reference.algorithms.sym_difference.h7"></a>
- <span><a name="geometry.reference.algorithms.sym_difference.see_also"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.see_also">See also</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.sym_difference.see_also"></a></span><a class="link" href="sym_difference.html#geometry.reference.algorithms.sym_difference.see_also">See also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="difference.html" title="difference">difference</a>
</li>
@@ -362,8 +387,8 @@ total: 3.1459
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/touches.html b/libs/geometry/doc/html/geometry/reference/algorithms/touches.html
index 83d6fcb0ec..100422e796 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/touches.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/touches.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>touches</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="sym_difference.html" title="sym_difference">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.touches"></a><a class="link" href="touches.html" title="touches">touches</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="touches/touches_1_one_geometry.html">touches
(one geometry)</a></span></dt>
<dt><span class="section"><a href="touches/touches_2_two_geometries.html">touches
@@ -35,8 +35,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_1_one_geometry.html b/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_1_one_geometry.html
index ab0cfe24f5..4b775ce8a5 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_1_one_geometry.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_1_one_geometry.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>touches (one geometry)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../touches.html" title="touches">
<link rel="prev" href="../touches.html" title="touches">
@@ -28,12 +28,12 @@
(one geometry)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id905412"></a>
+ <a class="indexterm" name="idp120629328"></a>
Checks if a geometry has at least one touching point (self-tangency)
</p>
<h6>
<a name="geometry.reference.algorithms.touches.touches_1_one_geometry.h0"></a>
- <span><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.synopsis"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.synopsis"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -43,7 +43,7 @@ Checks if a geometry has at least one touching point (self-tangency)
</p>
<h6>
<a name="geometry.reference.algorithms.touches.touches_1_one_geometry.h1"></a>
- <span><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.parameters"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.parameters"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -99,20 +99,20 @@ Checks if a geometry has at least one touching point (self-tangency)
</table></div>
<h6>
<a name="geometry.reference.algorithms.touches.touches_1_one_geometry.h2"></a>
- <span><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.returns"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.returns"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.returns">Returns</a>
</h6>
<p>
Returns true if the geometry is self-touching
</p>
<h6>
<a name="geometry.reference.algorithms.touches.touches_1_one_geometry.h3"></a>
- <span><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.header"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.header"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -122,7 +122,7 @@ Checks if a geometry has at least one touching point (self-tangency)
</p>
<h6>
<a name="geometry.reference.algorithms.touches.touches_1_one_geometry.h4"></a>
- <span><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.conformance"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.touches.touches_1_one_geometry.conformance"></a></span><a class="link" href="touches_1_one_geometry.html#geometry.reference.algorithms.touches.touches_1_one_geometry.conformance">Conformance</a>
</h6>
<p>
The function touches implements function Touches from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -138,14 +138,14 @@ Checks if a geometry has at least one touching point (self-tangency)
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
- only implemented for polygon/multi_polygon
+ Implemented for Point/Linestring/MultiLinestring/Polygon/MultiPolygon.
</p></td></tr>
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_2_two_geometries.html b/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_2_two_geometries.html
index b653fc0041..75fd6613c0 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_2_two_geometries.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/touches/touches_2_two_geometries.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>touches (two geometries)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../touches.html" title="touches">
<link rel="prev" href="touches_1_one_geometry.html" title="touches (one geometry)">
@@ -28,13 +28,13 @@
(two geometries)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id905891"></a>
+ <a class="indexterm" name="idp120683008"></a>
Checks if two geometries have at least one touching point (tangent -
non overlapping)
</p>
<h6>
<a name="geometry.reference.algorithms.touches.touches_2_two_geometries.h0"></a>
- <span><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.synopsis"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.synopsis"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -44,7 +44,7 @@ Checks if two geometries have at least one touching point (tangent -
</p>
<h6>
<a name="geometry.reference.algorithms.touches.touches_2_two_geometries.h1"></a>
- <span><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.parameters"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.parameters"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -124,20 +124,20 @@ Checks if two geometries have at least one touching point (tangent -
</table></div>
<h6>
<a name="geometry.reference.algorithms.touches.touches_2_two_geometries.h2"></a>
- <span><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.returns"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.returns"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.returns">Returns</a>
</h6>
<p>
Returns true if two geometries touch each other
</p>
<h6>
<a name="geometry.reference.algorithms.touches.touches_2_two_geometries.h3"></a>
- <span><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.header"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.header"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -147,7 +147,7 @@ Checks if two geometries have at least one touching point (tangent -
</p>
<h6>
<a name="geometry.reference.algorithms.touches.touches_2_two_geometries.h4"></a>
- <span><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.conformance"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.touches.touches_2_two_geometries.conformance"></a></span><a class="link" href="touches_2_two_geometries.html#geometry.reference.algorithms.touches.touches_2_two_geometries.conformance">Conformance</a>
</h6>
<p>
The function touches implements function Touches from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -163,14 +163,14 @@ Checks if two geometries have at least one touching point (tangent -
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
- only implemented for polygon/multi_polygon
+ Implemented for Point/Linestring/MultiLinestring/Polygon/MultiPolygon.
</p></td></tr>
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/transform.html b/libs/geometry/doc/html/geometry/reference/algorithms/transform.html
index a7549da4cb..061612cdaf 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/transform.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/transform.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>transform</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="touches/touches_2_two_geometries.html" title="touches (two geometries)">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.transform"></a><a class="link" href="transform.html" title="transform">transform</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="transform/transform_3_with_strategy.html">transform
(with strategy)</a></span></dt>
<dt><span class="section"><a href="transform/transform_2.html">transform</a></span></dt>
@@ -34,8 +34,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_2.html
index 83361d9465..ab04375862 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_2.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>transform</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../transform.html" title="transform">
<link rel="prev" href="transform_3_with_strategy.html" title="transform (with strategy)">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.transform.transform_2"></a><a class="link" href="transform_2.html" title="transform">transform</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id908122"></a>
+ <a class="indexterm" name="idp120948800"></a>
Transforms from one geometry to another geometry using a strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.transform.transform_2.h0"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_2.synopsis"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_2.synopsis"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -42,7 +42,7 @@ Transforms from one geometry to another geometry using a strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.transform.transform_2.h1"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_2.parameters"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_2.parameters"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -122,20 +122,20 @@ Transforms from one geometry to another geometry using a strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.transform.transform_2.h2"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_2.returns"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_2.returns"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.returns">Returns</a>
</h6>
<p>
True if the transformation could be done
</p>
<h6>
<a name="geometry.reference.algorithms.transform.transform_2.h3"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_2.header"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_2.header"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -145,14 +145,14 @@ Transforms from one geometry to another geometry using a strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.transform.transform_2.h4"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_2.conformance"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_2.conformance"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.conformance">Conformance</a>
</h6>
<p>
The function transform is not defined by OGC.
</p>
<h6>
<a name="geometry.reference.algorithms.transform.transform_2.h5"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_2.behavior"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_2.behavior"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -228,14 +228,14 @@ Transforms from one geometry to another geometry using a strategy.
</table></div>
<h6>
<a name="geometry.reference.algorithms.transform.transform_2.h6"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_2.complexity"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_2.complexity"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.transform.transform_2.h7"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_2.example"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_2.example"></a></span><a class="link" href="transform_2.html#geometry.reference.algorithms.transform.transform_2.example">Example</a>
</h6>
<p>
Shows how points can be transformed using the default strategy
@@ -258,7 +258,7 @@ Transforms from one geometry to another geometry using a strategy.
<span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">spherical</span><span class="special">&lt;</span><span class="identifier">bg</span><span class="special">::</span><span class="identifier">radian</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">p2</span><span class="special">;</span>
<span class="identifier">bg</span><span class="special">::</span><span class="identifier">transform</span><span class="special">(</span><span class="identifier">p1</span><span class="special">,</span> <span class="identifier">p2</span><span class="special">);</span>
- <span class="comment">// Transform from degree (lon-lat) to 3D (x,y,z). Default strategy is automatically selected, </span>
+ <span class="comment">// Transform from degree (lon-lat) to 3D (x,y,z). Default strategy is automatically selected,</span>
<span class="comment">// it will consider points on a unit sphere</span>
<span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">3</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">p3</span><span class="special">;</span>
<span class="identifier">bg</span><span class="special">::</span><span class="identifier">transform</span><span class="special">(</span><span class="identifier">p1</span><span class="special">,</span> <span class="identifier">p3</span><span class="special">);</span>
@@ -283,8 +283,8 @@ p3: (0.084186, 0.0225576, 0.996195)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_3_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_3_with_strategy.html
index 68e1193888..f0d49fc017 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_3_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/transform/transform_3_with_strategy.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>transform (with strategy)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../transform.html" title="transform">
<link rel="prev" href="../transform.html" title="transform">
@@ -28,13 +28,13 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id906467"></a>
+ <a class="indexterm" name="idp120747504"></a>
Transforms from one geometry to another geometry using the specified
strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.transform.transform_3_with_strategy.h0"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.synopsis"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.synopsis"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -44,7 +44,7 @@ Transforms from one geometry to another geometry using the specified
</p>
<h6>
<a name="geometry.reference.algorithms.transform.transform_3_with_strategy.h1"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.parameters"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.parameters"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -146,20 +146,20 @@ Transforms from one geometry to another geometry using the specified
</table></div>
<h6>
<a name="geometry.reference.algorithms.transform.transform_3_with_strategy.h2"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.returns"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.returns"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.returns">Returns</a>
</h6>
<p>
True if the transformation could be done
</p>
<h6>
<a name="geometry.reference.algorithms.transform.transform_3_with_strategy.h3"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.header"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.header"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -169,14 +169,14 @@ Transforms from one geometry to another geometry using the specified
</p>
<h6>
<a name="geometry.reference.algorithms.transform.transform_3_with_strategy.h4"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.complexity"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.complexity"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.transform.transform_3_with_strategy.h5"></a>
- <span><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.example"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.transform.transform_3_with_strategy.example"></a></span><a class="link" href="transform_3_with_strategy.html#geometry.reference.algorithms.transform.transform_3_with_strategy.example">Example</a>
</h6>
<p>
Shows how points can be scaled, translated or rotated
@@ -198,17 +198,17 @@ Transforms from one geometry to another geometry using the specified
<span class="comment">// Translate over (1.5, 1.5)</span>
<span class="identifier">point_type</span> <span class="identifier">p2</span><span class="special">;</span>
- <span class="identifier">trans</span><span class="special">::</span><span class="identifier">translate_transformer</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">,</span> <span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">translate</span><span class="special">(</span><span class="number">1.5</span><span class="special">,</span> <span class="number">1.5</span><span class="special">);</span>
+ <span class="identifier">trans</span><span class="special">::</span><span class="identifier">translate_transformer</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">2</span><span class="special">&gt;</span> <span class="identifier">translate</span><span class="special">(</span><span class="number">1.5</span><span class="special">,</span> <span class="number">1.5</span><span class="special">);</span>
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">transform</span><span class="special">(</span><span class="identifier">p1</span><span class="special">,</span> <span class="identifier">p2</span><span class="special">,</span> <span class="identifier">translate</span><span class="special">);</span>
<span class="comment">// Scale with factor 3.0</span>
<span class="identifier">point_type</span> <span class="identifier">p3</span><span class="special">;</span>
- <span class="identifier">trans</span><span class="special">::</span><span class="identifier">scale_transformer</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">,</span> <span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">scale</span><span class="special">(</span><span class="number">3.0</span><span class="special">);</span>
+ <span class="identifier">trans</span><span class="special">::</span><span class="identifier">scale_transformer</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">2</span><span class="special">&gt;</span> <span class="identifier">scale</span><span class="special">(</span><span class="number">3.0</span><span class="special">);</span>
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">transform</span><span class="special">(</span><span class="identifier">p1</span><span class="special">,</span> <span class="identifier">p3</span><span class="special">,</span> <span class="identifier">scale</span><span class="special">);</span>
<span class="comment">// Rotate with respect to the origin (0,0) over 90 degrees (clockwise)</span>
<span class="identifier">point_type</span> <span class="identifier">p4</span><span class="special">;</span>
- <span class="identifier">trans</span><span class="special">::</span><span class="identifier">rotate_transformer</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">,</span> <span class="identifier">point_type</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">degree</span><span class="special">&gt;</span> <span class="identifier">rotate</span><span class="special">(</span><span class="number">90.0</span><span class="special">);</span>
+ <span class="identifier">trans</span><span class="special">::</span><span class="identifier">rotate_transformer</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">degree</span><span class="special">,</span> <span class="keyword">double</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">2</span><span class="special">&gt;</span> <span class="identifier">rotate</span><span class="special">(</span><span class="number">90.0</span><span class="special">);</span>
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">transform</span><span class="special">(</span><span class="identifier">p1</span><span class="special">,</span> <span class="identifier">p4</span><span class="special">,</span> <span class="identifier">rotate</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
@@ -233,8 +233,8 @@ p4: (1, -1)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/union_.html b/libs/geometry/doc/html/geometry/reference/algorithms/union_.html
index a874f98c31..fba62ac040 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/union_.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/union_.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>union_</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="transform/transform_2.html" title="transform">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.union_"></a><a class="link" href="union_.html" title="union_">union_</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id909918"></a>
+ <a class="indexterm" name="idp121128304"></a>
Combines two geometries which each other.
</p>
<h6>
<a name="geometry.reference.algorithms.union_.h0"></a>
- <span><a name="geometry.reference.algorithms.union_.description"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.union_.description"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.description">Description</a>
</h6>
<p>
The free function union calculates the spatial set theoretic union of two
@@ -40,7 +40,7 @@ Combines two geometries which each other.
</p>
<h6>
<a name="geometry.reference.algorithms.union_.h1"></a>
- <span><a name="geometry.reference.algorithms.union_.synopsis"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.union_.synopsis"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Combines two geometries which each other.
</p>
<h6>
<a name="geometry.reference.algorithms.union_.h2"></a>
- <span><a name="geometry.reference.algorithms.union_.parameters"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.union_.parameters"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -153,13 +153,13 @@ Combines two geometries which each other.
</table></div>
<h6>
<a name="geometry.reference.algorithms.union_.h3"></a>
- <span><a name="geometry.reference.algorithms.union_.header"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.union_.header"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -169,7 +169,7 @@ Combines two geometries which each other.
</p>
<h6>
<a name="geometry.reference.algorithms.union_.h4"></a>
- <span><a name="geometry.reference.algorithms.union_.conformance"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.union_.conformance"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.conformance">Conformance</a>
</h6>
<p>
The function union implements function Union from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -187,7 +187,7 @@ Combines two geometries which each other.
</table></div>
<h6>
<a name="geometry.reference.algorithms.union_.h5"></a>
- <span><a name="geometry.reference.algorithms.union_.behavior"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.union_.behavior"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -206,7 +206,32 @@ Combines two geometries which each other.
</p>
</th>
</tr></thead>
-<tbody><tr>
+<tbody>
+<tr>
+<td>
+ <p>
+ GeometryOut is a Point
+ </p>
+ </td>
+<td>
+ <p>
+ Calculates union linestrings of input (multi)points
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ GeometryOut is a Linestring
+ </p>
+ </td>
+<td>
+ <p>
+ Calculates union linestrings of input (multi)linestrings
+ </p>
+ </td>
+</tr>
+<tr>
<td>
<p>
GeometryOut is a Polygon
@@ -217,7 +242,8 @@ Combines two geometries which each other.
Calculates union polygons of input (multi)polygons and/or boxes
</p>
</td>
-</tr></tbody>
+</tr>
+</tbody>
</table></div>
<div class="note"><table border="0" summary="Note">
<tr>
@@ -232,7 +258,7 @@ Combines two geometries which each other.
</table></div>
<h6>
<a name="geometry.reference.algorithms.union_.h6"></a>
- <span><a name="geometry.reference.algorithms.union_.example"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.union_.example"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.example">Example</a>
</h6>
<p>
Shows how to get a united geometry of two polygons
@@ -245,7 +271,6 @@ Combines two geometries which each other.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -290,10 +315,10 @@ Combines two geometries which each other.
</pre>
<h6>
<a name="geometry.reference.algorithms.union_.h7"></a>
- <span><a name="geometry.reference.algorithms.union_.see_also"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.union_.see_also"></a></span><a class="link" href="union_.html#geometry.reference.algorithms.union_.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="intersection.html" title="intersection">intersection</a>
</li>
@@ -308,8 +333,8 @@ Combines two geometries which each other.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/unique.html b/libs/geometry/doc/html/geometry/reference/algorithms/unique.html
index cffc69deb7..4986e9f525 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/unique.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/unique.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>unique</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="union_.html" title="union_">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.unique"></a><a class="link" href="unique.html" title="unique">unique</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id911661"></a>
+ <a class="indexterm" name="idp121331984"></a>
Calculates the minimal set of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.unique.h0"></a>
- <span><a name="geometry.reference.algorithms.unique.description"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.unique.description"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.description">Description</a>
</h6>
<p>
The free function unique calculates the minimal set (where duplicate consecutive
@@ -40,7 +40,7 @@ Calculates the minimal set of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.unique.h1"></a>
- <span><a name="geometry.reference.algorithms.unique.synopsis"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.unique.synopsis"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Calculates the minimal set of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.unique.h2"></a>
- <span><a name="geometry.reference.algorithms.unique.parameters"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.unique.parameters"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -106,13 +106,13 @@ Calculates the minimal set of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.unique.h3"></a>
- <span><a name="geometry.reference.algorithms.unique.header"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.unique.header"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -122,7 +122,7 @@ Calculates the minimal set of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.unique.h4"></a>
- <span><a name="geometry.reference.algorithms.unique.conformance"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.unique.conformance"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.conformance">Conformance</a>
</h6>
<p>
The function unique is not defined by OGC.
@@ -132,7 +132,7 @@ Calculates the minimal set of a geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.unique.h5"></a>
- <span><a name="geometry.reference.algorithms.unique.behavior"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.behavior">Behavior</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.unique.behavior"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.behavior">Behavior</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -179,7 +179,7 @@ Calculates the minimal set of a geometry.
<tr>
<td>
<p>
- Rectangle
+ Box
</p>
</td>
<td>
@@ -266,14 +266,14 @@ Calculates the minimal set of a geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.unique.h6"></a>
- <span><a name="geometry.reference.algorithms.unique.complexity"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.unique.complexity"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.unique.h7"></a>
- <span><a name="geometry.reference.algorithms.unique.example"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.unique.example"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.example">Example</a>
</h6>
<p>
Shows how to make a so-called minimal set of a polygon by removing duplicate
@@ -309,8 +309,8 @@ Calculates the minimal set of a geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/within.html b/libs/geometry/doc/html/geometry/reference/algorithms/within.html
index 4e3d583980..8d9d83aadd 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/within.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/within.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>within</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../algorithms.html" title="Algorithms">
<link rel="prev" href="unique.html" title="unique">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.algorithms.within"></a><a class="link" href="within.html" title="within">within</a>
</h4></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="within/within_2.html">within</a></span></dt>
<dt><span class="section"><a href="within/within_3_with_strategy.html">within
(with strategy)</a></span></dt>
@@ -34,8 +34,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html b/libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html
index 71b0f31601..6df22449a0 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>within</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../within.html" title="within">
<link rel="prev" href="../within.html" title="within">
@@ -27,12 +27,12 @@
<a name="geometry.reference.algorithms.within.within_2"></a><a class="link" href="within_2.html" title="within">within</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id912923"></a>
+ <a class="indexterm" name="idp121480240"></a>
Checks if the first geometry is completely inside the second geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_2.h0"></a>
- <span><a name="geometry.reference.algorithms.within.within_2.description"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_2.description"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.description">Description</a>
</h6>
<p>
The free function within checks if the first geometry is completely inside
@@ -40,7 +40,7 @@ Checks if the first geometry is completely inside the second geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_2.h1"></a>
- <span><a name="geometry.reference.algorithms.within.within_2.synopsis"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_2.synopsis"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Checks if the first geometry is completely inside the second geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_2.h2"></a>
- <span><a name="geometry.reference.algorithms.within.within_2.parameters"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_2.parameters"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -132,20 +132,20 @@ Checks if the first geometry is completely inside the second geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.within.within_2.h3"></a>
- <span><a name="geometry.reference.algorithms.within.within_2.returns"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_2.returns"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.returns">Returns</a>
</h6>
<p>
true if geometry1 is completely contained within geometry2, else false
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_2.h4"></a>
- <span><a name="geometry.reference.algorithms.within.within_2.header"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_2.header"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -155,7 +155,7 @@ Checks if the first geometry is completely inside the second geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_2.h5"></a>
- <span><a name="geometry.reference.algorithms.within.within_2.conformance"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_2.conformance"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.conformance">Conformance</a>
</h6>
<p>
The function within implements function Within from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -173,7 +173,7 @@ Checks if the first geometry is completely inside the second geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.within.within_2.h6"></a>
- <span><a name="geometry.reference.algorithms.within.within_2.supported_geometries"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_2.supported_geometries"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -188,6 +188,7 @@ Checks if the first geometry is completely inside the second geometry.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -237,6 +238,11 @@ Checks if the first geometry is completely inside the second geometry.
MultiPolygon
</p>
</th>
+<th>
+ <p>
+ Variant
+ </p>
+ </th>
</tr></thead>
<tbody>
<tr>
@@ -247,6 +253,11 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -299,6 +310,11 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -394,6 +410,11 @@ Checks if the first geometry is completely inside the second geometry.
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
@@ -403,7 +424,7 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -418,7 +439,7 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -438,6 +459,11 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -470,17 +496,17 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -490,12 +516,17 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -522,17 +553,17 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -542,12 +573,17 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -559,6 +595,11 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -611,6 +652,11 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -621,6 +667,11 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -636,6 +687,11 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -644,6 +700,23 @@ Checks if the first geometry is completely inside the second geometry.
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
<td>
<p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
@@ -651,14 +724,44 @@ Checks if the first geometry is completely inside the second geometry.
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
<p>
- MultiPolygon
+ Variant
</p>
</td>
<td>
@@ -706,6 +809,11 @@ Checks if the first geometry is completely inside the second geometry.
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
</tr>
</tbody>
</table></div>
@@ -722,7 +830,7 @@ Checks if the first geometry is completely inside the second geometry.
</table></div>
<h6>
<a name="geometry.reference.algorithms.within.within_2.h7"></a>
- <span><a name="geometry.reference.algorithms.within.within_2.notes"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.notes">Notes</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_2.notes"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.notes">Notes</a>
</h6>
<p>
If a point is located exactly on the border of a geometry, the result
@@ -737,22 +845,22 @@ Checks if the first geometry is completely inside the second geometry.
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_2.h8"></a>
- <span><a name="geometry.reference.algorithms.within.within_2.complexity"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_2.complexity"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_2.h9"></a>
- <span><a name="geometry.reference.algorithms.within.within_2.see_also"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_2.see_also"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../covered_by.html" title="covered_by">covered_by</a>
</li></ul></div>
<h6>
<a name="geometry.reference.algorithms.within.within_2.h10"></a>
- <span><a name="geometry.reference.algorithms.within.within_2.example"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_2.example"></a></span><a class="link" href="within_2.html#geometry.reference.algorithms.within.within_2.example">Example</a>
</h6>
<p>
Shows how to detect if a point is inside a polygon, or not
@@ -766,8 +874,6 @@ Checks if the first geometry is completely inside the second geometry.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
@@ -798,8 +904,8 @@ Checks if the first geometry is completely inside the second geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/algorithms/within/within_3_with_strategy.html b/libs/geometry/doc/html/geometry/reference/algorithms/within/within_3_with_strategy.html
index 2cf5766516..680dcfacdb 100644
--- a/libs/geometry/doc/html/geometry/reference/algorithms/within/within_3_with_strategy.html
+++ b/libs/geometry/doc/html/geometry/reference/algorithms/within/within_3_with_strategy.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>within (with strategy)</title>
<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../within.html" title="within">
<link rel="prev" href="within_2.html" title="within">
@@ -28,13 +28,13 @@
(with strategy)</a>
</h5></div></div></div>
<p>
- <a class="indexterm" name="id916209"></a>
+ <a class="indexterm" name="idp121910864"></a>
Checks if the first geometry is completely inside the second geometry
using the specified strategy.
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h0"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.description"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.description"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.description">Description</a>
</h6>
<p>
The free function within checks if the first geometry is completely inside
@@ -45,7 +45,7 @@ Checks if the first geometry is completely inside the second geometry
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h1"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.synopsis"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.synopsis"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -55,7 +55,7 @@ Checks if the first geometry is completely inside the second geometry
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h2"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.parameters"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.parameters"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -156,20 +156,20 @@ Checks if the first geometry is completely inside the second geometry
</table></div>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h3"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.returns"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.returns"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.returns">Returns</a>
</h6>
<p>
true if geometry1 is completely contained within geometry2, else false
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h4"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.header"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.header"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -179,7 +179,7 @@ Checks if the first geometry is completely inside the second geometry
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h5"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.conformance"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.conformance">Conformance</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.conformance"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.conformance">Conformance</a>
</h6>
<p>
The function within implements function Within from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
@@ -197,7 +197,7 @@ Checks if the first geometry is completely inside the second geometry
</table></div>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h6"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.supported_geometries"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.supported_geometries">Supported
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.supported_geometries"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.supported_geometries">Supported
geometries</a>
</h6>
<div class="informaltable"><table class="table">
@@ -212,6 +212,7 @@ Checks if the first geometry is completely inside the second geometry
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -261,6 +262,11 @@ Checks if the first geometry is completely inside the second geometry
MultiPolygon
</p>
</th>
+<th>
+ <p>
+ Variant
+ </p>
+ </th>
</tr></thead>
<tbody>
<tr>
@@ -271,6 +277,11 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -323,6 +334,11 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -418,6 +434,11 @@ Checks if the first geometry is completely inside the second geometry
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
@@ -427,7 +448,7 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -442,7 +463,7 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -462,6 +483,11 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -494,17 +520,17 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -514,12 +540,17 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -546,17 +577,17 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
@@ -566,12 +597,17 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
<td>
<p>
- <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
</p>
</td>
</tr>
@@ -583,6 +619,11 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -635,6 +676,11 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -645,6 +691,11 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -660,6 +711,11 @@ Checks if the first geometry is completely inside the second geometry
</td>
<td>
<p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
@@ -668,6 +724,18 @@ Checks if the first geometry is completely inside the second geometry
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+</tr>
+<tr>
+<td>
+ <p>
+ MultiPolygon
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
<td>
<p>
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
@@ -678,11 +746,46 @@ Checks if the first geometry is completely inside the second geometry
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
+ </p>
+ </td>
</tr>
<tr>
<td>
<p>
- MultiPolygon
+ Variant
</p>
</td>
<td>
@@ -730,6 +833,11 @@ Checks if the first geometry is completely inside the second geometry
<span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
</p>
</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../../../img/nyi.png" alt="nyi"></span>
+ </p>
+ </td>
</tr>
</tbody>
</table></div>
@@ -746,7 +854,7 @@ Checks if the first geometry is completely inside the second geometry
</table></div>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h7"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.notes"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.notes">Notes</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.notes"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.notes">Notes</a>
</h6>
<p>
If a point is located exactly on the border of a geometry, the result
@@ -761,25 +869,25 @@ Checks if the first geometry is completely inside the second geometry
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h8"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.complexity"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.complexity"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.complexity">Complexity</a>
</h6>
<p>
Linear
</p>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h9"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.see_also"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.see_also">See
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.see_also"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../covered_by.html" title="covered_by">covered_by</a>
</li></ul></div>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h10"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.available_strategies"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.available_strategies">Available
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.available_strategies"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.available_strategies">Available
Strategies</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="../../strategies/strategy_within_winding.html" title="strategy::within::winding">Winding
(coordinate system agnostic)</a>
@@ -795,7 +903,7 @@ Checks if the first geometry is completely inside the second geometry
</ul></div>
<h6>
<a name="geometry.reference.algorithms.within.within_3_with_strategy.h11"></a>
- <span><a name="geometry.reference.algorithms.within.within_3_with_strategy.example"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.algorithms.within.within_3_with_strategy.example"></a></span><a class="link" href="within_3_with_strategy.html#geometry.reference.algorithms.within.within_3_with_strategy.example">Example</a>
</h6>
<p>
[within_strategy] [within_strategy_output]
@@ -803,8 +911,8 @@ Checks if the first geometry is completely inside the second geometry
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic.html b/libs/geometry/doc/html/geometry/reference/arithmetic.html
index cd53f1dc3d..8f67483830 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Arithmetic</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="algorithms/within/within_3_with_strategy.html" title="within (with strategy)">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.arithmetic"></a><a class="link" href="arithmetic.html" title="Arithmetic">Arithmetic</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="arithmetic/add_point.html">add_point</a></span></dt>
<dt><span class="section"><a href="arithmetic/add_value.html">add_value</a></span></dt>
<dt><span class="section"><a href="arithmetic/assign_point.html">assign_point</a></span></dt>
@@ -42,8 +42,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/add_point.html b/libs/geometry/doc/html/geometry/reference/arithmetic/add_point.html
index fe3787beed..346085d602 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/add_point.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/add_point.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>add_point</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../arithmetic.html" title="Arithmetic">
<link rel="prev" href="../arithmetic.html" title="Arithmetic">
@@ -27,12 +27,12 @@
<a name="geometry.reference.arithmetic.add_point"></a><a class="link" href="add_point.html" title="add_point">add_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id918992"></a>
+ <a class="indexterm" name="idp122284624"></a>
Adds a point to another.
</p>
<h6>
<a name="geometry.reference.arithmetic.add_point.h0"></a>
- <span><a name="geometry.reference.arithmetic.add_point.description"></a></span><a class="link" href="add_point.html#geometry.reference.arithmetic.add_point.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.add_point.description"></a></span><a class="link" href="add_point.html#geometry.reference.arithmetic.add_point.description">Description</a>
</h6>
<p>
The coordinates of the second point will be added to those of the first
@@ -40,7 +40,7 @@ Adds a point to another.
</p>
<h6>
<a name="geometry.reference.arithmetic.add_point.h1"></a>
- <span><a name="geometry.reference.arithmetic.add_point.synopsis"></a></span><a class="link" href="add_point.html#geometry.reference.arithmetic.add_point.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.add_point.synopsis"></a></span><a class="link" href="add_point.html#geometry.reference.arithmetic.add_point.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Adds a point to another.
</p>
<h6>
<a name="geometry.reference.arithmetic.add_point.h2"></a>
- <span><a name="geometry.reference.arithmetic.add_point.parameters"></a></span><a class="link" href="add_point.html#geometry.reference.arithmetic.add_point.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.add_point.parameters"></a></span><a class="link" href="add_point.html#geometry.reference.arithmetic.add_point.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -89,6 +89,9 @@ Adds a point to another.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -108,6 +111,9 @@ Adds a point to another.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -124,13 +130,13 @@ Adds a point to another.
</table></div>
<h6>
<a name="geometry.reference.arithmetic.add_point.h3"></a>
- <span><a name="geometry.reference.arithmetic.add_point.header"></a></span><a class="link" href="add_point.html#geometry.reference.arithmetic.add_point.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.add_point.header"></a></span><a class="link" href="add_point.html#geometry.reference.arithmetic.add_point.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -141,8 +147,8 @@ Adds a point to another.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/add_value.html b/libs/geometry/doc/html/geometry/reference/arithmetic/add_value.html
index 4a25e6d39d..f7da41652d 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/add_value.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/add_value.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>add_value</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../arithmetic.html" title="Arithmetic">
<link rel="prev" href="add_point.html" title="add_point">
@@ -27,12 +27,12 @@
<a name="geometry.reference.arithmetic.add_value"></a><a class="link" href="add_value.html" title="add_value">add_value</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id919467"></a>
+ <a class="indexterm" name="idp122340256"></a>
Adds the same value to each coordinate of a point.
</p>
<h6>
<a name="geometry.reference.arithmetic.add_value.h0"></a>
- <span><a name="geometry.reference.arithmetic.add_value.synopsis"></a></span><a class="link" href="add_value.html#geometry.reference.arithmetic.add_value.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.add_value.synopsis"></a></span><a class="link" href="add_value.html#geometry.reference.arithmetic.add_value.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -42,7 +42,7 @@ Adds the same value to each coordinate of a point.
</p>
<h6>
<a name="geometry.reference.arithmetic.add_value.h1"></a>
- <span><a name="geometry.reference.arithmetic.add_value.parameters"></a></span><a class="link" href="add_value.html#geometry.reference.arithmetic.add_value.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.add_value.parameters"></a></span><a class="link" href="add_value.html#geometry.reference.arithmetic.add_value.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -81,6 +81,9 @@ Adds the same value to each coordinate of a point.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -116,13 +119,13 @@ Adds the same value to each coordinate of a point.
</table></div>
<h6>
<a name="geometry.reference.arithmetic.add_value.h2"></a>
- <span><a name="geometry.reference.arithmetic.add_value.header"></a></span><a class="link" href="add_value.html#geometry.reference.arithmetic.add_value.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.add_value.header"></a></span><a class="link" href="add_value.html#geometry.reference.arithmetic.add_value.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -133,8 +136,8 @@ Adds the same value to each coordinate of a point.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/assign_point.html b/libs/geometry/doc/html/geometry/reference/arithmetic/assign_point.html
index cc93431d33..4d32865282 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/assign_point.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/assign_point.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>assign_point</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../arithmetic.html" title="Arithmetic">
<link rel="prev" href="add_value.html" title="add_value">
@@ -27,12 +27,12 @@
<a name="geometry.reference.arithmetic.assign_point"></a><a class="link" href="assign_point.html" title="assign_point">assign_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id919921"></a>
+ <a class="indexterm" name="idp122393296"></a>
Assign a point with another.
</p>
<h6>
<a name="geometry.reference.arithmetic.assign_point.h0"></a>
- <span><a name="geometry.reference.arithmetic.assign_point.description"></a></span><a class="link" href="assign_point.html#geometry.reference.arithmetic.assign_point.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.assign_point.description"></a></span><a class="link" href="assign_point.html#geometry.reference.arithmetic.assign_point.description">Description</a>
</h6>
<p>
The coordinates of the first point will be assigned those of the second
@@ -40,17 +40,17 @@ Assign a point with another.
</p>
<h6>
<a name="geometry.reference.arithmetic.assign_point.h1"></a>
- <span><a name="geometry.reference.arithmetic.assign_point.synopsis"></a></span><a class="link" href="assign_point.html#geometry.reference.arithmetic.assign_point.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.assign_point.synopsis"></a></span><a class="link" href="assign_point.html#geometry.reference.arithmetic.assign_point.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Point2</span><span class="special">&gt;</span>
-<span class="keyword">void</span> <span class="identifier">assign_point</span><span class="special">(</span><span class="identifier">Point1</span> <span class="special">&amp;</span> <span class="identifier">p1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Point2</span> <span class="special">&amp;</span> <span class="identifier">p2</span><span class="special">)</span></pre>
+<span class="keyword">void</span> <span class="identifier">assign_point</span><span class="special">(</span><span class="identifier">Point1</span> <span class="special">&amp;</span> <span class="identifier">p1</span><span class="special">,</span> <span class="identifier">Point2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p2</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.arithmetic.assign_point.h2"></a>
- <span><a name="geometry.reference.arithmetic.assign_point.parameters"></a></span><a class="link" href="assign_point.html#geometry.reference.arithmetic.assign_point.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.assign_point.parameters"></a></span><a class="link" href="assign_point.html#geometry.reference.arithmetic.assign_point.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -85,31 +85,15 @@ Assign a point with another.
<tr>
<td>
<p>
- Point2
- </p>
- </td>
-<td>
- </td>
-<td>
- <p>
- -
- </p>
- </td>
-<td>
- <p>
- Must be specified
+ Point1 &amp;
</p>
</td>
-</tr>
-<tr>
<td>
<p>
- Point1 &amp;
+ Any type fulfilling a Point Concept
</p>
</td>
<td>
- </td>
-<td>
<p>
p1
</p>
@@ -123,10 +107,13 @@ Assign a point with another.
<tr>
<td>
<p>
- const Point2 &amp;
+ Point2 const &amp;
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -143,13 +130,13 @@ Assign a point with another.
</table></div>
<h6>
<a name="geometry.reference.arithmetic.assign_point.h3"></a>
- <span><a name="geometry.reference.arithmetic.assign_point.header"></a></span><a class="link" href="assign_point.html#geometry.reference.arithmetic.assign_point.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.assign_point.header"></a></span><a class="link" href="assign_point.html#geometry.reference.arithmetic.assign_point.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -160,8 +147,8 @@ Assign a point with another.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/assign_value.html b/libs/geometry/doc/html/geometry/reference/arithmetic/assign_value.html
index bc998762a0..72a636988e 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/assign_value.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/assign_value.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>assign_value</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../arithmetic.html" title="Arithmetic">
<link rel="prev" href="assign_point.html" title="assign_point">
@@ -27,12 +27,12 @@
<a name="geometry.reference.arithmetic.assign_value"></a><a class="link" href="assign_value.html" title="assign_value">assign_value</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id920425"></a>
+ <a class="indexterm" name="idp122449168"></a>
Assign each coordinate of a point the same value.
</p>
<h6>
<a name="geometry.reference.arithmetic.assign_value.h0"></a>
- <span><a name="geometry.reference.arithmetic.assign_value.synopsis"></a></span><a class="link" href="assign_value.html#geometry.reference.arithmetic.assign_value.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.assign_value.synopsis"></a></span><a class="link" href="assign_value.html#geometry.reference.arithmetic.assign_value.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -42,7 +42,7 @@ Assign each coordinate of a point the same value.
</p>
<h6>
<a name="geometry.reference.arithmetic.assign_value.h1"></a>
- <span><a name="geometry.reference.arithmetic.assign_value.parameters"></a></span><a class="link" href="assign_value.html#geometry.reference.arithmetic.assign_value.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.assign_value.parameters"></a></span><a class="link" href="assign_value.html#geometry.reference.arithmetic.assign_value.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -81,6 +81,9 @@ Assign each coordinate of a point the same value.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -116,13 +119,13 @@ Assign each coordinate of a point the same value.
</table></div>
<h6>
<a name="geometry.reference.arithmetic.assign_value.h2"></a>
- <span><a name="geometry.reference.arithmetic.assign_value.header"></a></span><a class="link" href="assign_value.html#geometry.reference.arithmetic.assign_value.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.assign_value.header"></a></span><a class="link" href="assign_value.html#geometry.reference.arithmetic.assign_value.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -133,8 +136,8 @@ Assign each coordinate of a point the same value.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/divide_point.html b/libs/geometry/doc/html/geometry/reference/arithmetic/divide_point.html
index 077e03e1da..06706a0b5e 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/divide_point.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/divide_point.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>divide_point</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../arithmetic.html" title="Arithmetic">
<link rel="prev" href="assign_value.html" title="assign_value">
@@ -27,12 +27,12 @@
<a name="geometry.reference.arithmetic.divide_point"></a><a class="link" href="divide_point.html" title="divide_point">divide_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id920877"></a>
+ <a class="indexterm" name="idp122502192"></a>
Divides a point by another.
</p>
<h6>
<a name="geometry.reference.arithmetic.divide_point.h0"></a>
- <span><a name="geometry.reference.arithmetic.divide_point.description"></a></span><a class="link" href="divide_point.html#geometry.reference.arithmetic.divide_point.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.divide_point.description"></a></span><a class="link" href="divide_point.html#geometry.reference.arithmetic.divide_point.description">Description</a>
</h6>
<p>
The coordinates of the first point will be divided by those of the second
@@ -40,7 +40,7 @@ Divides a point by another.
</p>
<h6>
<a name="geometry.reference.arithmetic.divide_point.h1"></a>
- <span><a name="geometry.reference.arithmetic.divide_point.synopsis"></a></span><a class="link" href="divide_point.html#geometry.reference.arithmetic.divide_point.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.divide_point.synopsis"></a></span><a class="link" href="divide_point.html#geometry.reference.arithmetic.divide_point.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Divides a point by another.
</p>
<h6>
<a name="geometry.reference.arithmetic.divide_point.h2"></a>
- <span><a name="geometry.reference.arithmetic.divide_point.parameters"></a></span><a class="link" href="divide_point.html#geometry.reference.arithmetic.divide_point.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.divide_point.parameters"></a></span><a class="link" href="divide_point.html#geometry.reference.arithmetic.divide_point.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -89,6 +89,9 @@ Divides a point by another.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -108,6 +111,9 @@ Divides a point by another.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -124,13 +130,13 @@ Divides a point by another.
</table></div>
<h6>
<a name="geometry.reference.arithmetic.divide_point.h3"></a>
- <span><a name="geometry.reference.arithmetic.divide_point.header"></a></span><a class="link" href="divide_point.html#geometry.reference.arithmetic.divide_point.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.divide_point.header"></a></span><a class="link" href="divide_point.html#geometry.reference.arithmetic.divide_point.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -141,8 +147,8 @@ Divides a point by another.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/divide_value.html b/libs/geometry/doc/html/geometry/reference/arithmetic/divide_value.html
index a376669b2c..74d565ba98 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/divide_value.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/divide_value.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>divide_value</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../arithmetic.html" title="Arithmetic">
<link rel="prev" href="divide_point.html" title="divide_point">
@@ -27,12 +27,12 @@
<a name="geometry.reference.arithmetic.divide_value"></a><a class="link" href="divide_value.html" title="divide_value">divide_value</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id921355"></a>
+ <a class="indexterm" name="idp122558016"></a>
Divides each coordinate of the same point by a value.
</p>
<h6>
<a name="geometry.reference.arithmetic.divide_value.h0"></a>
- <span><a name="geometry.reference.arithmetic.divide_value.synopsis"></a></span><a class="link" href="divide_value.html#geometry.reference.arithmetic.divide_value.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.divide_value.synopsis"></a></span><a class="link" href="divide_value.html#geometry.reference.arithmetic.divide_value.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -42,7 +42,7 @@ Divides each coordinate of the same point by a value.
</p>
<h6>
<a name="geometry.reference.arithmetic.divide_value.h1"></a>
- <span><a name="geometry.reference.arithmetic.divide_value.parameters"></a></span><a class="link" href="divide_value.html#geometry.reference.arithmetic.divide_value.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.divide_value.parameters"></a></span><a class="link" href="divide_value.html#geometry.reference.arithmetic.divide_value.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -81,6 +81,9 @@ Divides each coordinate of the same point by a value.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -116,13 +119,13 @@ Divides each coordinate of the same point by a value.
</table></div>
<h6>
<a name="geometry.reference.arithmetic.divide_value.h2"></a>
- <span><a name="geometry.reference.arithmetic.divide_value.header"></a></span><a class="link" href="divide_value.html#geometry.reference.arithmetic.divide_value.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.divide_value.header"></a></span><a class="link" href="divide_value.html#geometry.reference.arithmetic.divide_value.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -133,8 +136,8 @@ Divides each coordinate of the same point by a value.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/dot_product.html b/libs/geometry/doc/html/geometry/reference/arithmetic/dot_product.html
index a7480fa18c..29247d6221 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/dot_product.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/dot_product.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>dot_product</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../arithmetic.html" title="Arithmetic">
<link rel="prev" href="divide_value.html" title="divide_value">
@@ -27,22 +27,22 @@
<a name="geometry.reference.arithmetic.dot_product"></a><a class="link" href="dot_product.html" title="dot_product">dot_product</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id921807"></a>
+ <a class="indexterm" name="idp122611040"></a>
Computes the dot product (or scalar product) of 2 vectors (points).
</p>
<h6>
<a name="geometry.reference.arithmetic.dot_product.h0"></a>
- <span><a name="geometry.reference.arithmetic.dot_product.synopsis"></a></span><a class="link" href="dot_product.html#geometry.reference.arithmetic.dot_product.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.dot_product.synopsis"></a></span><a class="link" href="dot_product.html#geometry.reference.arithmetic.dot_product.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">P1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P2</span><span class="special">&gt;</span>
-<span class="identifier">select_coordinate_type</span><span class="special">&lt;</span><span class="identifier">P1</span><span class="special">,</span> <span class="identifier">P2</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">dot_product</span><span class="special">(</span><span class="identifier">P1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p1</span><span class="special">,</span> <span class="identifier">P2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p2</span><span class="special">)</span></pre>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Point2</span><span class="special">&gt;</span>
+<span class="identifier">select_coordinate_type</span><span class="special">&lt;</span><span class="identifier">Point1</span><span class="special">,</span> <span class="identifier">Point2</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">dot_product</span><span class="special">(</span><span class="identifier">Point1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p1</span><span class="special">,</span> <span class="identifier">Point2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p2</span><span class="special">)</span></pre>
<p>
</p>
<h6>
<a name="geometry.reference.arithmetic.dot_product.h1"></a>
- <span><a name="geometry.reference.arithmetic.dot_product.parameters"></a></span><a class="link" href="dot_product.html#geometry.reference.arithmetic.dot_product.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.dot_product.parameters"></a></span><a class="link" href="dot_product.html#geometry.reference.arithmetic.dot_product.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -77,10 +77,13 @@ Computes the dot product (or scalar product) of 2 vectors (points).
<tr>
<td>
<p>
- P1 const &amp;
+ Point1 const &amp;
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -96,10 +99,13 @@ Computes the dot product (or scalar product) of 2 vectors (points).
<tr>
<td>
<p>
- P2 const &amp;
+ Point2 const &amp;
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -116,20 +122,20 @@ Computes the dot product (or scalar product) of 2 vectors (points).
</table></div>
<h6>
<a name="geometry.reference.arithmetic.dot_product.h2"></a>
- <span><a name="geometry.reference.arithmetic.dot_product.returns"></a></span><a class="link" href="dot_product.html#geometry.reference.arithmetic.dot_product.returns">Returns</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.dot_product.returns"></a></span><a class="link" href="dot_product.html#geometry.reference.arithmetic.dot_product.returns">Returns</a>
</h6>
<p>
the dot product
</p>
<h6>
<a name="geometry.reference.arithmetic.dot_product.h3"></a>
- <span><a name="geometry.reference.arithmetic.dot_product.header"></a></span><a class="link" href="dot_product.html#geometry.reference.arithmetic.dot_product.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.dot_product.header"></a></span><a class="link" href="dot_product.html#geometry.reference.arithmetic.dot_product.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -140,8 +146,8 @@ Computes the dot product (or scalar product) of 2 vectors (points).
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_point.html b/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_point.html
index 8a18ba855d..3a9792c774 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_point.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_point.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>multiply_point</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../arithmetic.html" title="Arithmetic">
<link rel="prev" href="dot_product.html" title="dot_product">
@@ -27,12 +27,12 @@
<a name="geometry.reference.arithmetic.multiply_point"></a><a class="link" href="multiply_point.html" title="multiply_point">multiply_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id922312"></a>
+ <a class="indexterm" name="idp122670848"></a>
Multiplies a point by another.
</p>
<h6>
<a name="geometry.reference.arithmetic.multiply_point.h0"></a>
- <span><a name="geometry.reference.arithmetic.multiply_point.description"></a></span><a class="link" href="multiply_point.html#geometry.reference.arithmetic.multiply_point.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.multiply_point.description"></a></span><a class="link" href="multiply_point.html#geometry.reference.arithmetic.multiply_point.description">Description</a>
</h6>
<p>
The coordinates of the first point will be multiplied by those of the second
@@ -40,7 +40,7 @@ Multiplies a point by another.
</p>
<h6>
<a name="geometry.reference.arithmetic.multiply_point.h1"></a>
- <span><a name="geometry.reference.arithmetic.multiply_point.synopsis"></a></span><a class="link" href="multiply_point.html#geometry.reference.arithmetic.multiply_point.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.multiply_point.synopsis"></a></span><a class="link" href="multiply_point.html#geometry.reference.arithmetic.multiply_point.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Multiplies a point by another.
</p>
<h6>
<a name="geometry.reference.arithmetic.multiply_point.h2"></a>
- <span><a name="geometry.reference.arithmetic.multiply_point.parameters"></a></span><a class="link" href="multiply_point.html#geometry.reference.arithmetic.multiply_point.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.multiply_point.parameters"></a></span><a class="link" href="multiply_point.html#geometry.reference.arithmetic.multiply_point.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -89,6 +89,9 @@ Multiplies a point by another.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -108,6 +111,9 @@ Multiplies a point by another.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -124,13 +130,13 @@ Multiplies a point by another.
</table></div>
<h6>
<a name="geometry.reference.arithmetic.multiply_point.h3"></a>
- <span><a name="geometry.reference.arithmetic.multiply_point.header"></a></span><a class="link" href="multiply_point.html#geometry.reference.arithmetic.multiply_point.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.multiply_point.header"></a></span><a class="link" href="multiply_point.html#geometry.reference.arithmetic.multiply_point.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -141,8 +147,8 @@ Multiplies a point by another.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_value.html b/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_value.html
index c56673800f..c5f9fb8dc6 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_value.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/multiply_value.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>multiply_value</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../arithmetic.html" title="Arithmetic">
<link rel="prev" href="multiply_point.html" title="multiply_point">
@@ -27,12 +27,12 @@
<a name="geometry.reference.arithmetic.multiply_value"></a><a class="link" href="multiply_value.html" title="multiply_value">multiply_value</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id922788"></a>
+ <a class="indexterm" name="idp122726720"></a>
Multiplies each coordinate of a point by the same value.
</p>
<h6>
<a name="geometry.reference.arithmetic.multiply_value.h0"></a>
- <span><a name="geometry.reference.arithmetic.multiply_value.synopsis"></a></span><a class="link" href="multiply_value.html#geometry.reference.arithmetic.multiply_value.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.multiply_value.synopsis"></a></span><a class="link" href="multiply_value.html#geometry.reference.arithmetic.multiply_value.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -42,7 +42,7 @@ Multiplies each coordinate of a point by the same value.
</p>
<h6>
<a name="geometry.reference.arithmetic.multiply_value.h1"></a>
- <span><a name="geometry.reference.arithmetic.multiply_value.parameters"></a></span><a class="link" href="multiply_value.html#geometry.reference.arithmetic.multiply_value.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.multiply_value.parameters"></a></span><a class="link" href="multiply_value.html#geometry.reference.arithmetic.multiply_value.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -81,6 +81,9 @@ Multiplies each coordinate of a point by the same value.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -116,13 +119,13 @@ Multiplies each coordinate of a point by the same value.
</table></div>
<h6>
<a name="geometry.reference.arithmetic.multiply_value.h2"></a>
- <span><a name="geometry.reference.arithmetic.multiply_value.header"></a></span><a class="link" href="multiply_value.html#geometry.reference.arithmetic.multiply_value.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.multiply_value.header"></a></span><a class="link" href="multiply_value.html#geometry.reference.arithmetic.multiply_value.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -133,8 +136,8 @@ Multiplies each coordinate of a point by the same value.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_point.html b/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_point.html
index 5a834652ec..dff67bcef8 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_point.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_point.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>subtract_point</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../arithmetic.html" title="Arithmetic">
<link rel="prev" href="multiply_value.html" title="multiply_value">
@@ -27,12 +27,12 @@
<a name="geometry.reference.arithmetic.subtract_point"></a><a class="link" href="subtract_point.html" title="subtract_point">subtract_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id923243"></a>
+ <a class="indexterm" name="idp122779696"></a>
Subtracts a point to another.
</p>
<h6>
<a name="geometry.reference.arithmetic.subtract_point.h0"></a>
- <span><a name="geometry.reference.arithmetic.subtract_point.description"></a></span><a class="link" href="subtract_point.html#geometry.reference.arithmetic.subtract_point.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.subtract_point.description"></a></span><a class="link" href="subtract_point.html#geometry.reference.arithmetic.subtract_point.description">Description</a>
</h6>
<p>
The coordinates of the second point will be subtracted to those of the
@@ -40,7 +40,7 @@ Subtracts a point to another.
</p>
<h6>
<a name="geometry.reference.arithmetic.subtract_point.h1"></a>
- <span><a name="geometry.reference.arithmetic.subtract_point.synopsis"></a></span><a class="link" href="subtract_point.html#geometry.reference.arithmetic.subtract_point.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.subtract_point.synopsis"></a></span><a class="link" href="subtract_point.html#geometry.reference.arithmetic.subtract_point.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -50,7 +50,7 @@ Subtracts a point to another.
</p>
<h6>
<a name="geometry.reference.arithmetic.subtract_point.h2"></a>
- <span><a name="geometry.reference.arithmetic.subtract_point.parameters"></a></span><a class="link" href="subtract_point.html#geometry.reference.arithmetic.subtract_point.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.subtract_point.parameters"></a></span><a class="link" href="subtract_point.html#geometry.reference.arithmetic.subtract_point.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -89,6 +89,9 @@ Subtracts a point to another.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -108,6 +111,9 @@ Subtracts a point to another.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -124,13 +130,13 @@ Subtracts a point to another.
</table></div>
<h6>
<a name="geometry.reference.arithmetic.subtract_point.h3"></a>
- <span><a name="geometry.reference.arithmetic.subtract_point.header"></a></span><a class="link" href="subtract_point.html#geometry.reference.arithmetic.subtract_point.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.subtract_point.header"></a></span><a class="link" href="subtract_point.html#geometry.reference.arithmetic.subtract_point.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -141,8 +147,8 @@ Subtracts a point to another.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_value.html b/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_value.html
index a73f26d5d6..d4c9ed5756 100644
--- a/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_value.html
+++ b/libs/geometry/doc/html/geometry/reference/arithmetic/subtract_value.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>subtract_value</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../arithmetic.html" title="Arithmetic">
<link rel="prev" href="subtract_point.html" title="subtract_point">
@@ -27,12 +27,12 @@
<a name="geometry.reference.arithmetic.subtract_value"></a><a class="link" href="subtract_value.html" title="subtract_value">subtract_value</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id923719"></a>
+ <a class="indexterm" name="idp122835696"></a>
Subtracts the same value to each coordinate of a point.
</p>
<h6>
<a name="geometry.reference.arithmetic.subtract_value.h0"></a>
- <span><a name="geometry.reference.arithmetic.subtract_value.synopsis"></a></span><a class="link" href="subtract_value.html#geometry.reference.arithmetic.subtract_value.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.subtract_value.synopsis"></a></span><a class="link" href="subtract_value.html#geometry.reference.arithmetic.subtract_value.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -42,7 +42,7 @@ Subtracts the same value to each coordinate of a point.
</p>
<h6>
<a name="geometry.reference.arithmetic.subtract_value.h1"></a>
- <span><a name="geometry.reference.arithmetic.subtract_value.parameters"></a></span><a class="link" href="subtract_value.html#geometry.reference.arithmetic.subtract_value.parameters">Parameters</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.subtract_value.parameters"></a></span><a class="link" href="subtract_value.html#geometry.reference.arithmetic.subtract_value.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -81,6 +81,9 @@ Subtracts the same value to each coordinate of a point.
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Point Concept
+ </p>
</td>
<td>
<p>
@@ -116,13 +119,13 @@ Subtracts the same value to each coordinate of a point.
</table></div>
<h6>
<a name="geometry.reference.arithmetic.subtract_value.h2"></a>
- <span><a name="geometry.reference.arithmetic.subtract_value.header"></a></span><a class="link" href="subtract_value.html#geometry.reference.arithmetic.subtract_value.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.arithmetic.subtract_value.header"></a></span><a class="link" href="subtract_value.html#geometry.reference.arithmetic.subtract_value.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -133,8 +136,8 @@ Subtracts the same value to each coordinate of a point.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/concepts.html b/libs/geometry/doc/html/geometry/reference/concepts.html
index 219e3a80e4..7ff840c909 100644
--- a/libs/geometry/doc/html/geometry/reference/concepts.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Concepts</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="arithmetic/subtract_value.html" title="subtract_value">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.concepts"></a><a class="link" href="concepts.html" title="Concepts">Concepts</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="concepts/concept_point.html">Point Concept</a></span></dt>
<dt><span class="section"><a href="concepts/concept_linestring.html">Linestring
Concept</a></span></dt>
@@ -46,8 +46,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_box.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_box.html
index 39a535f068..17c8154fc7 100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_box.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_box.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Box Concept</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="concept_multi_polygon.html" title="MultiPolygon Concept">
@@ -28,7 +28,7 @@
</h4></div></div></div>
<h6>
<a name="geometry.reference.concepts.concept_box.h0"></a>
- <span><a name="geometry.reference.concepts.concept_box.description"></a></span><a class="link" href="concept_box.html#geometry.reference.concepts.concept_box.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_box.description"></a></span><a class="link" href="concept_box.html#geometry.reference.concepts.concept_box.description">Description</a>
</h6>
<p>
The Box Concept describes the requirements for a box type. All algorithms
@@ -53,13 +53,13 @@
</p>
<h6>
<a name="geometry.reference.concepts.concept_box.h1"></a>
- <span><a name="geometry.reference.concepts.concept_box.concept_definition"></a></span><a class="link" href="concept_box.html#geometry.reference.concepts.concept_box.concept_definition">Concept
+ <span class="phrase"><a name="geometry.reference.concepts.concept_box.concept_definition"></a></span><a class="link" href="concept_box.html#geometry.reference.concepts.concept_box.concept_definition">Concept
Definition</a>
</h6>
<p>
The Box Concept is defined as following:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
there must be a specialization of <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">tag</span></code>,
defining <code class="computeroutput"><span class="identifier">box_tag</span></code> as
@@ -76,7 +76,7 @@
per index (<code class="computeroutput"><span class="identifier">min_corner</span></code>,
<code class="computeroutput"><span class="identifier">max_corner</span></code>) and per
dimension, with two functions:
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
<code class="computeroutput"><span class="identifier">get</span></code> to get a
coordinate value
@@ -90,17 +90,17 @@
</ul></div>
<h6>
<a name="geometry.reference.concepts.concept_box.h2"></a>
- <span><a name="geometry.reference.concepts.concept_box.available_models"></a></span><a class="link" href="concept_box.html#geometry.reference.concepts.concept_box.available_models">Available
+ <span class="phrase"><a name="geometry.reference.concepts.concept_box.available_models"></a></span><a class="link" href="concept_box.html#geometry.reference.concepts.concept_box.available_models">Available
Models</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../models/model_box.html" title="model::box">model::box</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_linestring.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_linestring.html
index 2ef714e4a7..440ca50a5e 100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_linestring.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Linestring Concept</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="concept_point.html" title="Point Concept">
@@ -29,7 +29,7 @@
</h4></div></div></div>
<h6>
<a name="geometry.reference.concepts.concept_linestring.h0"></a>
- <span><a name="geometry.reference.concepts.concept_linestring.description"></a></span><a class="link" href="concept_linestring.html#geometry.reference.concepts.concept_linestring.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_linestring.description"></a></span><a class="link" href="concept_linestring.html#geometry.reference.concepts.concept_linestring.description">Description</a>
</h6>
<p>
The Linestring Concept describes the requirements for a linestring type.
@@ -43,13 +43,13 @@
</p>
<h6>
<a name="geometry.reference.concepts.concept_linestring.h1"></a>
- <span><a name="geometry.reference.concepts.concept_linestring.concept_definition"></a></span><a class="link" href="concept_linestring.html#geometry.reference.concepts.concept_linestring.concept_definition">Concept
+ <span class="phrase"><a name="geometry.reference.concepts.concept_linestring.concept_definition"></a></span><a class="link" href="concept_linestring.html#geometry.reference.concepts.concept_linestring.concept_definition">Concept
Definition</a>
</h6>
<p>
The Linestring Concept is defined as following:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
there must be a specialization of <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">tag</span></code>
defining <code class="computeroutput"><span class="identifier">linestring_tag</span></code>
@@ -66,7 +66,7 @@
</ul></div>
<h6>
<a name="geometry.reference.concepts.concept_linestring.h2"></a>
- <span><a name="geometry.reference.concepts.concept_linestring.rules"></a></span><a class="link" href="concept_linestring.html#geometry.reference.concepts.concept_linestring.rules">Rules</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_linestring.rules"></a></span><a class="link" href="concept_linestring.html#geometry.reference.concepts.concept_linestring.rules">Rules</a>
</h6>
<p>
Besides the Concepts, which are checks on compile-time, there are rules
@@ -78,10 +78,10 @@
</p>
<h6>
<a name="geometry.reference.concepts.concept_linestring.h3"></a>
- <span><a name="geometry.reference.concepts.concept_linestring.available_models"></a></span><a class="link" href="concept_linestring.html#geometry.reference.concepts.concept_linestring.available_models">Available
+ <span class="phrase"><a name="geometry.reference.concepts.concept_linestring.available_models"></a></span><a class="link" href="concept_linestring.html#geometry.reference.concepts.concept_linestring.available_models">Available
Models</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="../models/model_linestring.html" title="model::linestring">model::linestring</a>
</li>
@@ -106,8 +106,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_linestring.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_linestring.html
index 7e959ffd29..9cc25ebfb1 100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_linestring.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>MultiLinestring Concept</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="concept_multi_point.html" title="MultiPoint Concept">
@@ -29,7 +29,7 @@
</h4></div></div></div>
<h6>
<a name="geometry.reference.concepts.concept_multi_linestring.h0"></a>
- <span><a name="geometry.reference.concepts.concept_multi_linestring.description"></a></span><a class="link" href="concept_multi_linestring.html#geometry.reference.concepts.concept_multi_linestring.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_multi_linestring.description"></a></span><a class="link" href="concept_multi_linestring.html#geometry.reference.concepts.concept_multi_linestring.description">Description</a>
</h6>
<p>
The MultiLinestring Concept describes the requirements for a multi linestring
@@ -38,13 +38,13 @@
</p>
<h6>
<a name="geometry.reference.concepts.concept_multi_linestring.h1"></a>
- <span><a name="geometry.reference.concepts.concept_multi_linestring.concept_definition"></a></span><a class="link" href="concept_multi_linestring.html#geometry.reference.concepts.concept_multi_linestring.concept_definition">Concept
+ <span class="phrase"><a name="geometry.reference.concepts.concept_multi_linestring.concept_definition"></a></span><a class="link" href="concept_multi_linestring.html#geometry.reference.concepts.concept_multi_linestring.concept_definition">Concept
Definition</a>
</h6>
<p>
The MultiLinestring Concept is defined as following:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
There must be a specialization of the metafunction <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">tag</span></code>,
defining <code class="computeroutput"><span class="identifier">multi_linestring_tag</span></code>
@@ -61,17 +61,17 @@
</ul></div>
<h6>
<a name="geometry.reference.concepts.concept_multi_linestring.h2"></a>
- <span><a name="geometry.reference.concepts.concept_multi_linestring.available_models"></a></span><a class="link" href="concept_multi_linestring.html#geometry.reference.concepts.concept_multi_linestring.available_models">Available
+ <span class="phrase"><a name="geometry.reference.concepts.concept_multi_linestring.available_models"></a></span><a class="link" href="concept_multi_linestring.html#geometry.reference.concepts.concept_multi_linestring.available_models">Available
Models</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../models/model_multi_linestring.html" title="model::multi_linestring">model::multi_linestring</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_point.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_point.html
index b1e14752f0..3df900a544 100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_point.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_point.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>MultiPoint Concept</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="concept_polygon.html" title="Polygon Concept">
@@ -29,7 +29,7 @@
</h4></div></div></div>
<h6>
<a name="geometry.reference.concepts.concept_multi_point.h0"></a>
- <span><a name="geometry.reference.concepts.concept_multi_point.description"></a></span><a class="link" href="concept_multi_point.html#geometry.reference.concepts.concept_multi_point.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_multi_point.description"></a></span><a class="link" href="concept_multi_point.html#geometry.reference.concepts.concept_multi_point.description">Description</a>
</h6>
<p>
The MultiPoint Concept describes the requirements for a multi point type.
@@ -38,13 +38,13 @@
</p>
<h6>
<a name="geometry.reference.concepts.concept_multi_point.h1"></a>
- <span><a name="geometry.reference.concepts.concept_multi_point.concept_definition"></a></span><a class="link" href="concept_multi_point.html#geometry.reference.concepts.concept_multi_point.concept_definition">Concept
+ <span class="phrase"><a name="geometry.reference.concepts.concept_multi_point.concept_definition"></a></span><a class="link" href="concept_multi_point.html#geometry.reference.concepts.concept_multi_point.concept_definition">Concept
Definition</a>
</h6>
<p>
The MultiPoint Concept is defined as following:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
There must be a specialization of the metafunction <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">tag</span></code>,
defining <code class="computeroutput"><span class="identifier">multi_point_tag</span></code>
@@ -61,17 +61,17 @@
</ul></div>
<h6>
<a name="geometry.reference.concepts.concept_multi_point.h2"></a>
- <span><a name="geometry.reference.concepts.concept_multi_point.available_models"></a></span><a class="link" href="concept_multi_point.html#geometry.reference.concepts.concept_multi_point.available_models">Available
+ <span class="phrase"><a name="geometry.reference.concepts.concept_multi_point.available_models"></a></span><a class="link" href="concept_multi_point.html#geometry.reference.concepts.concept_multi_point.available_models">Available
Models</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../models/model_multi_point.html" title="model::multi_point">model::multi_point</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_polygon.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_polygon.html
index 2c21f93ad7..f81ad9fda4 100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_multi_polygon.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>MultiPolygon Concept</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="concept_multi_linestring.html" title="MultiLinestring Concept">
@@ -29,7 +29,7 @@
</h4></div></div></div>
<h6>
<a name="geometry.reference.concepts.concept_multi_polygon.h0"></a>
- <span><a name="geometry.reference.concepts.concept_multi_polygon.description"></a></span><a class="link" href="concept_multi_polygon.html#geometry.reference.concepts.concept_multi_polygon.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_multi_polygon.description"></a></span><a class="link" href="concept_multi_polygon.html#geometry.reference.concepts.concept_multi_polygon.description">Description</a>
</h6>
<p>
The MultiPolygon Concept describes the requirements for a multi polygon
@@ -38,13 +38,13 @@
</p>
<h6>
<a name="geometry.reference.concepts.concept_multi_polygon.h1"></a>
- <span><a name="geometry.reference.concepts.concept_multi_polygon.concept_definition"></a></span><a class="link" href="concept_multi_polygon.html#geometry.reference.concepts.concept_multi_polygon.concept_definition">Concept
+ <span class="phrase"><a name="geometry.reference.concepts.concept_multi_polygon.concept_definition"></a></span><a class="link" href="concept_multi_polygon.html#geometry.reference.concepts.concept_multi_polygon.concept_definition">Concept
Definition</a>
</h6>
<p>
The MultiPolygon Concept is defined as following:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
There must be a specialization of the metafunction <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">tag</span></code>,
defining <code class="computeroutput"><span class="identifier">multi_polygon_tag</span></code>
@@ -61,7 +61,7 @@
</ul></div>
<h6>
<a name="geometry.reference.concepts.concept_multi_polygon.h2"></a>
- <span><a name="geometry.reference.concepts.concept_multi_polygon.rules"></a></span><a class="link" href="concept_multi_polygon.html#geometry.reference.concepts.concept_multi_polygon.rules">Rules</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_multi_polygon.rules"></a></span><a class="link" href="concept_multi_polygon.html#geometry.reference.concepts.concept_multi_polygon.rules">Rules</a>
</h6>
<p>
Besides the Concepts, which are checks on compile-time, there are rules
@@ -72,7 +72,7 @@
<p>
Additionally:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Individual polygons making up a multi-polygon may not intersect each
other, but tangencies are allowed.
@@ -83,17 +83,17 @@
</ul></div>
<h6>
<a name="geometry.reference.concepts.concept_multi_polygon.h3"></a>
- <span><a name="geometry.reference.concepts.concept_multi_polygon.available_models"></a></span><a class="link" href="concept_multi_polygon.html#geometry.reference.concepts.concept_multi_polygon.available_models">Available
+ <span class="phrase"><a name="geometry.reference.concepts.concept_multi_polygon.available_models"></a></span><a class="link" href="concept_multi_polygon.html#geometry.reference.concepts.concept_multi_polygon.available_models">Available
Models</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../models/model_multi_polygon.html" title="model::multi_polygon">model::multi_polygon</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_point.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_point.html
index a1b0731f56..094882002e 100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_point.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_point.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Point Concept</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="../concepts.html" title="Concepts">
@@ -28,7 +28,7 @@
</h4></div></div></div>
<h6>
<a name="geometry.reference.concepts.concept_point.h0"></a>
- <span><a name="geometry.reference.concepts.concept_point.description"></a></span><a class="link" href="concept_point.html#geometry.reference.concepts.concept_point.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_point.description"></a></span><a class="link" href="concept_point.html#geometry.reference.concepts.concept_point.description">Description</a>
</h6>
<p>
The Point Concept describes the requirements for a point type. All algorithms
@@ -44,13 +44,13 @@
</p>
<h6>
<a name="geometry.reference.concepts.concept_point.h1"></a>
- <span><a name="geometry.reference.concepts.concept_point.concept_definition"></a></span><a class="link" href="concept_point.html#geometry.reference.concepts.concept_point.concept_definition">Concept
+ <span class="phrase"><a name="geometry.reference.concepts.concept_point.concept_definition"></a></span><a class="link" href="concept_point.html#geometry.reference.concepts.concept_point.concept_definition">Concept
Definition</a>
</h6>
<p>
The Point Concept is defined as following:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
there must be a specialization of <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">tag</span></code>,
defining <code class="computeroutput"><span class="identifier">point_tag</span></code>
@@ -73,7 +73,7 @@
<li class="listitem">
there must be a specialization of <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">access</span></code>,
per dimension, with two functions:
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
<code class="computeroutput"><span class="identifier">get</span></code> to get a
coordinate value
@@ -87,10 +87,10 @@
</ul></div>
<h6>
<a name="geometry.reference.concepts.concept_point.h2"></a>
- <span><a name="geometry.reference.concepts.concept_point.available_models"></a></span><a class="link" href="concept_point.html#geometry.reference.concepts.concept_point.available_models">Available
+ <span class="phrase"><a name="geometry.reference.concepts.concept_point.available_models"></a></span><a class="link" href="concept_point.html#geometry.reference.concepts.concept_point.available_models">Available
Models</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="../models/model_point.html" title="model::point">model::point</a>
</li>
@@ -123,8 +123,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html
index 7cb3b5ade2..cd3f612d6c 100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Polygon Concept</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="concept_linestring.html" title="Linestring Concept">
@@ -29,7 +29,7 @@
</h4></div></div></div>
<h6>
<a name="geometry.reference.concepts.concept_polygon.h0"></a>
- <span><a name="geometry.reference.concepts.concept_polygon.description"></a></span><a class="link" href="concept_polygon.html#geometry.reference.concepts.concept_polygon.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_polygon.description"></a></span><a class="link" href="concept_polygon.html#geometry.reference.concepts.concept_polygon.description">Description</a>
</h6>
<p>
The Polygon Concept describes the requirements for a polygon type. All
@@ -49,13 +49,13 @@
</p>
<h6>
<a name="geometry.reference.concepts.concept_polygon.h1"></a>
- <span><a name="geometry.reference.concepts.concept_polygon.concept_definition"></a></span><a class="link" href="concept_polygon.html#geometry.reference.concepts.concept_polygon.concept_definition">Concept
+ <span class="phrase"><a name="geometry.reference.concepts.concept_polygon.concept_definition"></a></span><a class="link" href="concept_polygon.html#geometry.reference.concepts.concept_polygon.concept_definition">Concept
Definition</a>
</h6>
<p>
The Polygon Concept is defined as following:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
there must be a specialization of <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">tag</span></code>
defining <code class="computeroutput"><span class="identifier">polygon_tag</span></code>
@@ -90,14 +90,14 @@
</ul></div>
<h6>
<a name="geometry.reference.concepts.concept_polygon.h2"></a>
- <span><a name="geometry.reference.concepts.concept_polygon.rules"></a></span><a class="link" href="concept_polygon.html#geometry.reference.concepts.concept_polygon.rules">Rules</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_polygon.rules"></a></span><a class="link" href="concept_polygon.html#geometry.reference.concepts.concept_polygon.rules">Rules</a>
</h6>
<p>
Besides the Concepts, which are checks on compile-time, there are some
other rules that valid polygons must fulfill. This follows the opengeospatial
rules (see link above).
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Polygons are simple geometric objects (See also <a href="http://en.wikipedia.org/wiki/Simple_polygon" target="_top">wiki</a>
but holes are allowed in Boost.Geometry polygons).
@@ -105,8 +105,9 @@
<li class="listitem">
If the polygons underlying <code class="computeroutput"><span class="identifier">ring_type</span></code>
is defined as clockwise, the exterior ring must have the clockwise
- orientation, and any interior ring must be counter clockwise. If the
- <code class="computeroutput"><span class="identifier">ring_type</span></code> is defined
+ orientation, and any interior ring must be reversed w.r.t. the defined
+ orientation (so: counter clockwise for clockwise exterior rings). If
+ the <code class="computeroutput"><span class="identifier">ring_type</span></code> is defined
counter clockwise, it is vice versa.
</li>
<li class="listitem">
@@ -142,10 +143,10 @@
</p>
<h6>
<a name="geometry.reference.concepts.concept_polygon.h3"></a>
- <span><a name="geometry.reference.concepts.concept_polygon.available_models"></a></span><a class="link" href="concept_polygon.html#geometry.reference.concepts.concept_polygon.available_models">Available
+ <span class="phrase"><a name="geometry.reference.concepts.concept_polygon.available_models"></a></span><a class="link" href="concept_polygon.html#geometry.reference.concepts.concept_polygon.available_models">Available
Models</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="../models/model_polygon.html" title="model::polygon">polygon</a>
</li>
@@ -157,8 +158,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_ring.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_ring.html
index 990999c50e..f2775169f4 100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_ring.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_ring.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Ring Concept</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="concept_box.html" title="Box Concept">
@@ -28,7 +28,7 @@
</h4></div></div></div>
<h6>
<a name="geometry.reference.concepts.concept_ring.h0"></a>
- <span><a name="geometry.reference.concepts.concept_ring.description"></a></span><a class="link" href="concept_ring.html#geometry.reference.concepts.concept_ring.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_ring.description"></a></span><a class="link" href="concept_ring.html#geometry.reference.concepts.concept_ring.description">Description</a>
</h6>
<p>
The Ring Concept describes the requirements for a ring type. All algorithms
@@ -47,13 +47,13 @@
</table></div>
<h6>
<a name="geometry.reference.concepts.concept_ring.h1"></a>
- <span><a name="geometry.reference.concepts.concept_ring.concept_definition"></a></span><a class="link" href="concept_ring.html#geometry.reference.concepts.concept_ring.concept_definition">Concept
+ <span class="phrase"><a name="geometry.reference.concepts.concept_ring.concept_definition"></a></span><a class="link" href="concept_ring.html#geometry.reference.concepts.concept_ring.concept_definition">Concept
Definition</a>
</h6>
<p>
The Ring Concept is defined as following:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
there must be a specialization of <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">tag</span></code>
defining <code class="computeroutput"><span class="identifier">ring_tag</span></code> as
@@ -80,7 +80,7 @@
</ul></div>
<h6>
<a name="geometry.reference.concepts.concept_ring.h2"></a>
- <span><a name="geometry.reference.concepts.concept_ring.rules"></a></span><a class="link" href="concept_ring.html#geometry.reference.concepts.concept_ring.rules">Rules</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_ring.rules"></a></span><a class="link" href="concept_ring.html#geometry.reference.concepts.concept_ring.rules">Rules</a>
</h6>
<p>
Besides the Concepts, which are checks on compile-time, there are rules
@@ -90,10 +90,10 @@
</p>
<h6>
<a name="geometry.reference.concepts.concept_ring.h3"></a>
- <span><a name="geometry.reference.concepts.concept_ring.available_models"></a></span><a class="link" href="concept_ring.html#geometry.reference.concepts.concept_ring.available_models">Available
+ <span class="phrase"><a name="geometry.reference.concepts.concept_ring.available_models"></a></span><a class="link" href="concept_ring.html#geometry.reference.concepts.concept_ring.available_models">Available
Models</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="../models/model_ring.html" title="model::ring">ring</a>
</li>
@@ -124,8 +124,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/concepts/concept_segment.html b/libs/geometry/doc/html/geometry/reference/concepts/concept_segment.html
index 97abe3c3d7..5f5e27f29c 100644
--- a/libs/geometry/doc/html/geometry/reference/concepts/concept_segment.html
+++ b/libs/geometry/doc/html/geometry/reference/concepts/concept_segment.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Segment Concept</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="concept_ring.html" title="Ring Concept">
@@ -29,7 +29,7 @@
</h4></div></div></div>
<h6>
<a name="geometry.reference.concepts.concept_segment.h0"></a>
- <span><a name="geometry.reference.concepts.concept_segment.description"></a></span><a class="link" href="concept_segment.html#geometry.reference.concepts.concept_segment.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.concepts.concept_segment.description"></a></span><a class="link" href="concept_segment.html#geometry.reference.concepts.concept_segment.description">Description</a>
</h6>
<p>
The Segment Concept describes the requirements for a segment type. All
@@ -38,10 +38,10 @@
</p>
<h6>
<a name="geometry.reference.concepts.concept_segment.h1"></a>
- <span><a name="geometry.reference.concepts.concept_segment.concept_definition"></a></span><a class="link" href="concept_segment.html#geometry.reference.concepts.concept_segment.concept_definition">Concept
+ <span class="phrase"><a name="geometry.reference.concepts.concept_segment.concept_definition"></a></span><a class="link" href="concept_segment.html#geometry.reference.concepts.concept_segment.concept_definition">Concept
Definition</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
there must be a specialization of <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">tag</span></code>
defining <code class="computeroutput"><span class="identifier">segment_tag</span></code>
@@ -56,7 +56,7 @@
<li class="listitem">
there must be a specialization of <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">indexed_access</span></code>,
per index and per dimension, with two functions:
- <div class="itemizedlist"><ul class="itemizedlist" type="circle">
+ <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
<code class="computeroutput"><span class="identifier">get</span></code> to get a
coordinate value
@@ -82,10 +82,10 @@
</table></div>
<h6>
<a name="geometry.reference.concepts.concept_segment.h2"></a>
- <span><a name="geometry.reference.concepts.concept_segment.available_models"></a></span><a class="link" href="concept_segment.html#geometry.reference.concepts.concept_segment.available_models">Available
+ <span class="phrase"><a name="geometry.reference.concepts.concept_segment.available_models"></a></span><a class="link" href="concept_segment.html#geometry.reference.concepts.concept_segment.available_models">Available
Models</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="../models/model_segment.html" title="model::segment">model::segment</a>
</li>
@@ -97,8 +97,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/constants.html b/libs/geometry/doc/html/geometry/reference/constants.html
index 4cdb97408c..a07cd73912 100644
--- a/libs/geometry/doc/html/geometry/reference/constants.html
+++ b/libs/geometry/doc/html/geometry/reference/constants.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Constants</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="concepts/concept_segment.html" title="Segment Concept">
@@ -26,15 +26,15 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.constants"></a><a class="link" href="constants.html" title="Constants">Constants</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="constants/min_corner.html">min_corner</a></span></dt>
<dt><span class="section"><a href="constants/max_corner.html">max_corner</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/constants/max_corner.html b/libs/geometry/doc/html/geometry/reference/constants/max_corner.html
index d4c3dc66f4..7cce07a49f 100644
--- a/libs/geometry/doc/html/geometry/reference/constants/max_corner.html
+++ b/libs/geometry/doc/html/geometry/reference/constants/max_corner.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>max_corner</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../constants.html" title="Constants">
<link rel="prev" href="min_corner.html" title="min_corner">
@@ -31,7 +31,7 @@
</p>
<h6>
<a name="geometry.reference.constants.max_corner.h0"></a>
- <span><a name="geometry.reference.constants.max_corner.synopsis"></a></span><a class="link" href="max_corner.html#geometry.reference.constants.max_corner.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.constants.max_corner.synopsis"></a></span><a class="link" href="max_corner.html#geometry.reference.constants.max_corner.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -40,13 +40,13 @@
</p>
<h6>
<a name="geometry.reference.constants.max_corner.h1"></a>
- <span><a name="geometry.reference.constants.max_corner.header"></a></span><a class="link" href="max_corner.html#geometry.reference.constants.max_corner.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.constants.max_corner.header"></a></span><a class="link" href="max_corner.html#geometry.reference.constants.max_corner.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -77,7 +77,7 @@
</table></div>
<h6>
<a name="geometry.reference.constants.max_corner.h2"></a>
- <span><a name="geometry.reference.constants.max_corner.example"></a></span><a class="link" href="max_corner.html#geometry.reference.constants.max_corner.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.constants.max_corner.example"></a></span><a class="link" href="max_corner.html#geometry.reference.constants.max_corner.example">Example</a>
</h6>
<p>
Get the coordinate of a box
@@ -116,27 +116,27 @@
</pre>
<h6>
<a name="geometry.reference.constants.max_corner.h3"></a>
- <span><a name="geometry.reference.constants.max_corner.see_also"></a></span><a class="link" href="max_corner.html#geometry.reference.constants.max_corner.see_also">See
+ <span class="phrase"><a name="geometry.reference.constants.max_corner.see_also"></a></span><a class="link" href="max_corner.html#geometry.reference.constants.max_corner.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="min_corner.html" title="min_corner">min_corner</a>
</li>
<li class="listitem">
- <a class="link" href="../access/get/get_2_with_index.html" title="get (with index)">get
+ <a class="link" href="../access/get/get_1_with_index.html" title="get (with index)">get
with index</a>
</li>
<li class="listitem">
- <a class="link" href="../access/set/set_3_with_index.html" title="set (with index)">set
+ <a class="link" href="../access/set/set_2_with_index.html" title="set (with index)">set
with index</a>
</li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/constants/min_corner.html b/libs/geometry/doc/html/geometry/reference/constants/min_corner.html
index a65c1204db..ff99015121 100644
--- a/libs/geometry/doc/html/geometry/reference/constants/min_corner.html
+++ b/libs/geometry/doc/html/geometry/reference/constants/min_corner.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>min_corner</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../constants.html" title="Constants">
<link rel="prev" href="../constants.html" title="Constants">
@@ -31,7 +31,7 @@
</p>
<h6>
<a name="geometry.reference.constants.min_corner.h0"></a>
- <span><a name="geometry.reference.constants.min_corner.synopsis"></a></span><a class="link" href="min_corner.html#geometry.reference.constants.min_corner.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.constants.min_corner.synopsis"></a></span><a class="link" href="min_corner.html#geometry.reference.constants.min_corner.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -40,13 +40,13 @@
</p>
<h6>
<a name="geometry.reference.constants.min_corner.h1"></a>
- <span><a name="geometry.reference.constants.min_corner.header"></a></span><a class="link" href="min_corner.html#geometry.reference.constants.min_corner.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.constants.min_corner.header"></a></span><a class="link" href="min_corner.html#geometry.reference.constants.min_corner.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -77,7 +77,7 @@
</table></div>
<h6>
<a name="geometry.reference.constants.min_corner.h2"></a>
- <span><a name="geometry.reference.constants.min_corner.example"></a></span><a class="link" href="min_corner.html#geometry.reference.constants.min_corner.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.constants.min_corner.example"></a></span><a class="link" href="min_corner.html#geometry.reference.constants.min_corner.example">Example</a>
</h6>
<p>
Get the coordinate of a box
@@ -116,27 +116,27 @@
</pre>
<h6>
<a name="geometry.reference.constants.min_corner.h3"></a>
- <span><a name="geometry.reference.constants.min_corner.see_also"></a></span><a class="link" href="min_corner.html#geometry.reference.constants.min_corner.see_also">See
+ <span class="phrase"><a name="geometry.reference.constants.min_corner.see_also"></a></span><a class="link" href="min_corner.html#geometry.reference.constants.min_corner.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a class="link" href="max_corner.html" title="max_corner">max_corner</a>
</li>
<li class="listitem">
- <a class="link" href="../access/get/get_2_with_index.html" title="get (with index)">get
+ <a class="link" href="../access/get/get_1_with_index.html" title="get (with index)">get
with index</a>
</li>
<li class="listitem">
- <a class="link" href="../access/set/set_3_with_index.html" title="set (with index)">set
+ <a class="link" href="../access/set/set_2_with_index.html" title="set (with index)">set
with index</a>
</li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core.html b/libs/geometry/doc/html/geometry/reference/core.html
index dfc4537867..20f2eb491f 100644
--- a/libs/geometry/doc/html/geometry/reference/core.html
+++ b/libs/geometry/doc/html/geometry/reference/core.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Core Metafunctions</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="cs/cs_geographic.html" title="cs::geographic">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.core"></a><a class="link" href="core.html" title="Core Metafunctions">Core Metafunctions</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="core/closure.html">closure</a></span></dt>
<dt><span class="section"><a href="core/coordinate_system.html">coordinate_system</a></span></dt>
<dt><span class="section"><a href="core/coordinate_type.html">coordinate_type</a></span></dt>
@@ -45,8 +45,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/closure.html b/libs/geometry/doc/html/geometry/reference/core/closure.html
index 8d343c8b2c..9bf9524c0c 100644
--- a/libs/geometry/doc/html/geometry/reference/core/closure.html
+++ b/libs/geometry/doc/html/geometry/reference/core/closure.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>closure</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="../core.html" title="Core Metafunctions">
@@ -27,13 +27,13 @@
<a name="geometry.reference.core.closure"></a><a class="link" href="closure.html" title="closure">closure</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id931319"></a>
+ <a class="indexterm" name="idp123754128"></a>
Metafunction defining <span class="bold"><strong>value</strong></span> as the closure
(clockwise, counterclockwise) of the specified geometry type.
</p>
<h6>
<a name="geometry.reference.core.closure.h0"></a>
- <span><a name="geometry.reference.core.closure.synopsis"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.closure.synopsis"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -47,7 +47,7 @@ Metafunction defining <span class="bold"><strong>value</strong></span> as the cl
</p>
<h6>
<a name="geometry.reference.core.closure.h1"></a>
- <span><a name="geometry.reference.core.closure.template_parameter_s_"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.closure.template_parameter_s_"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -82,9 +82,18 @@ Metafunction defining <span class="bold"><strong>value</strong></span> as the cl
</table></div>
<h6>
<a name="geometry.reference.core.closure.h2"></a>
- <span><a name="geometry.reference.core.closure.header"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.closure.header"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">closure</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="note"><table border="0" summary="Note">
@@ -99,14 +108,14 @@ Metafunction defining <span class="bold"><strong>value</strong></span> as the cl
</table></div>
<h6>
<a name="geometry.reference.core.closure.h3"></a>
- <span><a name="geometry.reference.core.closure.complexity"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.core.closure.complexity"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.core.closure.h4"></a>
- <span><a name="geometry.reference.core.closure.example"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.core.closure.example"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.example">Example</a>
</h6>
<p>
Examine if a polygon is defined as "should be closed"
@@ -144,18 +153,18 @@ Metafunction defining <span class="bold"><strong>value</strong></span> as the cl
</pre>
<h6>
<a name="geometry.reference.core.closure.h5"></a>
- <span><a name="geometry.reference.core.closure.see_also"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.see_also">See
+ <span class="phrase"><a name="geometry.reference.core.closure.see_also"></a></span><a class="link" href="closure.html#geometry.reference.core.closure.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../enumerations/closure_selector.html" title="closure_selector">The
closure_selector enumeration</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/coordinate_system.html b/libs/geometry/doc/html/geometry/reference/core/coordinate_system.html
index 9cc3d6e426..fc4158406a 100644
--- a/libs/geometry/doc/html/geometry/reference/core/coordinate_system.html
+++ b/libs/geometry/doc/html/geometry/reference/core/coordinate_system.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>coordinate_system</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="closure.html" title="closure">
@@ -27,14 +27,14 @@
<a name="geometry.reference.core.coordinate_system"></a><a class="link" href="coordinate_system.html" title="coordinate_system">coordinate_system</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id932326"></a>
+ <a class="indexterm" name="idp123865840"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the coordinate
system (cartesian, spherical, etc) of the point type making up the specified
geometry type.
</p>
<h6>
<a name="geometry.reference.core.coordinate_system.h0"></a>
- <span><a name="geometry.reference.core.coordinate_system.synopsis"></a></span><a class="link" href="coordinate_system.html#geometry.reference.core.coordinate_system.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.coordinate_system.synopsis"></a></span><a class="link" href="coordinate_system.html#geometry.reference.core.coordinate_system.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -48,7 +48,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the coo
</p>
<h6>
<a name="geometry.reference.core.coordinate_system.h1"></a>
- <span><a name="geometry.reference.core.coordinate_system.template_parameter_s_"></a></span><a class="link" href="coordinate_system.html#geometry.reference.core.coordinate_system.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.coordinate_system.template_parameter_s_"></a></span><a class="link" href="coordinate_system.html#geometry.reference.core.coordinate_system.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -83,21 +83,30 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the coo
</table></div>
<h6>
<a name="geometry.reference.core.coordinate_system.h2"></a>
- <span><a name="geometry.reference.core.coordinate_system.header"></a></span><a class="link" href="coordinate_system.html#geometry.reference.core.coordinate_system.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.coordinate_system.header"></a></span><a class="link" href="coordinate_system.html#geometry.reference.core.coordinate_system.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">coordinate_system</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.core.coordinate_system.h3"></a>
- <span><a name="geometry.reference.core.coordinate_system.complexity"></a></span><a class="link" href="coordinate_system.html#geometry.reference.core.coordinate_system.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.core.coordinate_system.complexity"></a></span><a class="link" href="coordinate_system.html#geometry.reference.core.coordinate_system.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.core.coordinate_system.h4"></a>
- <span><a name="geometry.reference.core.coordinate_system.example"></a></span><a class="link" href="coordinate_system.html#geometry.reference.core.coordinate_system.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.core.coordinate_system.example"></a></span><a class="link" href="coordinate_system.html#geometry.reference.core.coordinate_system.example">Example</a>
</h6>
<p>
Examine the coordinate system of a point
@@ -133,8 +142,8 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the coo
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/coordinate_type.html b/libs/geometry/doc/html/geometry/reference/core/coordinate_type.html
index ec0da50bd7..12a0d907b9 100644
--- a/libs/geometry/doc/html/geometry/reference/core/coordinate_type.html
+++ b/libs/geometry/doc/html/geometry/reference/core/coordinate_type.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>coordinate_type</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="coordinate_system.html" title="coordinate_system">
@@ -27,14 +27,14 @@
<a name="geometry.reference.core.coordinate_type"></a><a class="link" href="coordinate_type.html" title="coordinate_type">coordinate_type</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id933194"></a>
+ <a class="indexterm" name="idp123969872"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the coordinate
type (int, float, double, etc) of the point type making up the specified
geometry type.
</p>
<h6>
<a name="geometry.reference.core.coordinate_type.h0"></a>
- <span><a name="geometry.reference.core.coordinate_type.synopsis"></a></span><a class="link" href="coordinate_type.html#geometry.reference.core.coordinate_type.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.coordinate_type.synopsis"></a></span><a class="link" href="coordinate_type.html#geometry.reference.core.coordinate_type.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -48,7 +48,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the coo
</p>
<h6>
<a name="geometry.reference.core.coordinate_type.h1"></a>
- <span><a name="geometry.reference.core.coordinate_type.template_parameter_s_"></a></span><a class="link" href="coordinate_type.html#geometry.reference.core.coordinate_type.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.coordinate_type.template_parameter_s_"></a></span><a class="link" href="coordinate_type.html#geometry.reference.core.coordinate_type.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -83,21 +83,30 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the coo
</table></div>
<h6>
<a name="geometry.reference.core.coordinate_type.h2"></a>
- <span><a name="geometry.reference.core.coordinate_type.header"></a></span><a class="link" href="coordinate_type.html#geometry.reference.core.coordinate_type.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.coordinate_type.header"></a></span><a class="link" href="coordinate_type.html#geometry.reference.core.coordinate_type.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">coordinate_type</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.core.coordinate_type.h3"></a>
- <span><a name="geometry.reference.core.coordinate_type.complexity"></a></span><a class="link" href="coordinate_type.html#geometry.reference.core.coordinate_type.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.core.coordinate_type.complexity"></a></span><a class="link" href="coordinate_type.html#geometry.reference.core.coordinate_type.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.core.coordinate_type.h4"></a>
- <span><a name="geometry.reference.core.coordinate_type.example"></a></span><a class="link" href="coordinate_type.html#geometry.reference.core.coordinate_type.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.core.coordinate_type.example"></a></span><a class="link" href="coordinate_type.html#geometry.reference.core.coordinate_type.example">Example</a>
</h6>
<p>
Examine the coordinate type of a point
@@ -133,8 +142,8 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the coo
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/cs_tag.html b/libs/geometry/doc/html/geometry/reference/core/cs_tag.html
index 0b23a6b633..bc9343b852 100644
--- a/libs/geometry/doc/html/geometry/reference/core/cs_tag.html
+++ b/libs/geometry/doc/html/geometry/reference/core/cs_tag.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>cs_tag</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="coordinate_type.html" title="coordinate_type">
@@ -27,16 +27,16 @@
<a name="geometry.reference.core.cs_tag"></a><a class="link" href="cs_tag.html" title="cs_tag">cs_tag</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id934060"></a>
+ <a class="indexterm" name="idp124080736"></a>
Meta-function returning coordinate system tag (cs family) of any geometry.
</p>
<h6>
<a name="geometry.reference.core.cs_tag.h0"></a>
- <span><a name="geometry.reference.core.cs_tag.synopsis"></a></span><a class="link" href="cs_tag.html#geometry.reference.core.cs_tag.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.cs_tag.synopsis"></a></span><a class="link" href="cs_tag.html#geometry.reference.core.cs_tag.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">cs_tag</span>
<span class="special">{</span>
<span class="comment">// ...</span>
@@ -46,7 +46,7 @@ Meta-function returning coordinate system tag (cs family) of any geometry.
</p>
<h6>
<a name="geometry.reference.core.cs_tag.h1"></a>
- <span><a name="geometry.reference.core.cs_tag.template_parameter_s_"></a></span><a class="link" href="cs_tag.html#geometry.reference.core.cs_tag.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.cs_tag.template_parameter_s_"></a></span><a class="link" href="cs_tag.html#geometry.reference.core.cs_tag.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -69,22 +69,25 @@ Meta-function returning coordinate system tag (cs family) of any geometry.
<tbody><tr>
<td>
<p>
- typename G
+ typename Geometry
</p>
</td>
<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
</td>
</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.core.cs_tag.h2"></a>
- <span><a name="geometry.reference.core.cs_tag.header"></a></span><a class="link" href="cs_tag.html#geometry.reference.core.cs_tag.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.cs_tag.header"></a></span><a class="link" href="cs_tag.html#geometry.reference.core.cs_tag.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -95,8 +98,8 @@ Meta-function returning coordinate system tag (cs family) of any geometry.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/degree.html b/libs/geometry/doc/html/geometry/reference/core/degree.html
index 487aa81e85..3f54dc7b44 100644
--- a/libs/geometry/doc/html/geometry/reference/core/degree.html
+++ b/libs/geometry/doc/html/geometry/reference/core/degree.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>degree</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="cs_tag.html" title="cs_tag">
@@ -27,12 +27,12 @@
<a name="geometry.reference.core.degree"></a><a class="link" href="degree.html" title="degree">degree</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id934378"></a>
+ <a class="indexterm" name="idp124119888"></a>
Unit of plane angle: Degrees.
</p>
<h6>
<a name="geometry.reference.core.degree.h0"></a>
- <span><a name="geometry.reference.core.degree.description"></a></span><a class="link" href="degree.html#geometry.reference.core.degree.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.core.degree.description"></a></span><a class="link" href="degree.html#geometry.reference.core.degree.description">Description</a>
</h6>
<p>
Tag defining the unit of plane angle for spherical coordinate systems.
@@ -41,7 +41,7 @@ Unit of plane angle: Degrees.
</p>
<h6>
<a name="geometry.reference.core.degree.h1"></a>
- <span><a name="geometry.reference.core.degree.synopsis"></a></span><a class="link" href="degree.html#geometry.reference.core.degree.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.degree.synopsis"></a></span><a class="link" href="degree.html#geometry.reference.core.degree.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,13 +54,13 @@ Unit of plane angle: Degrees.
</p>
<h6>
<a name="geometry.reference.core.degree.h2"></a>
- <span><a name="geometry.reference.core.degree.header"></a></span><a class="link" href="degree.html#geometry.reference.core.degree.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.degree.header"></a></span><a class="link" href="degree.html#geometry.reference.core.degree.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -70,7 +70,7 @@ Unit of plane angle: Degrees.
</p>
<h6>
<a name="geometry.reference.core.degree.h3"></a>
- <span><a name="geometry.reference.core.degree.example"></a></span><a class="link" href="degree.html#geometry.reference.core.degree.example">example</a>
+ <span class="phrase"><a name="geometry.reference.core.degree.example"></a></span><a class="link" href="degree.html#geometry.reference.core.degree.example">example</a>
</h6>
<p>
Specify two coordinate systems, one in degrees, one in radians.
@@ -111,8 +111,8 @@ Unit of plane angle: Degrees.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/dimension.html b/libs/geometry/doc/html/geometry/reference/core/dimension.html
index c69861e551..00ea43bc7f 100644
--- a/libs/geometry/doc/html/geometry/reference/core/dimension.html
+++ b/libs/geometry/doc/html/geometry/reference/core/dimension.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>dimension</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="degree.html" title="degree">
@@ -27,19 +27,20 @@
<a name="geometry.reference.core.dimension"></a><a class="link" href="dimension.html" title="dimension">dimension</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id935166"></a>
+ <a class="indexterm" name="idp124224608"></a>
Metafunction defining <span class="bold"><strong>value</strong></span> as the number
of coordinates (the number of axes of any geometry) of the point type making
up the specified geometry type.
</p>
<h6>
<a name="geometry.reference.core.dimension.h0"></a>
- <span><a name="geometry.reference.core.dimension.synopsis"></a></span><a class="link" href="dimension.html#geometry.reference.core.dimension.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.dimension.synopsis"></a></span><a class="link" href="dimension.html#geometry.reference.core.dimension.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">dimension</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">core_dispatch</span><span class="special">::</span><span class="identifier">dimension</span><span class="special">&lt;</span> <span class="identifier">tag</span><span class="special">&lt;</span> <span class="identifier">Geometry</span> <span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">geometry</span><span class="special">::</span><span class="identifier">util</span><span class="special">::</span><span class="identifier">bare_type</span><span class="special">&lt;</span> <span class="identifier">Geometry</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -48,7 +49,7 @@ Metafunction defining <span class="bold"><strong>value</strong></span> as the nu
</p>
<h6>
<a name="geometry.reference.core.dimension.h1"></a>
- <span><a name="geometry.reference.core.dimension.template_parameter_s_"></a></span><a class="link" href="dimension.html#geometry.reference.core.dimension.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.dimension.template_parameter_s_"></a></span><a class="link" href="dimension.html#geometry.reference.core.dimension.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -83,21 +84,30 @@ Metafunction defining <span class="bold"><strong>value</strong></span> as the nu
</table></div>
<h6>
<a name="geometry.reference.core.dimension.h2"></a>
- <span><a name="geometry.reference.core.dimension.header"></a></span><a class="link" href="dimension.html#geometry.reference.core.dimension.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.dimension.header"></a></span><a class="link" href="dimension.html#geometry.reference.core.dimension.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">coordinate_dimension</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.core.dimension.h3"></a>
- <span><a name="geometry.reference.core.dimension.complexity"></a></span><a class="link" href="dimension.html#geometry.reference.core.dimension.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.core.dimension.complexity"></a></span><a class="link" href="dimension.html#geometry.reference.core.dimension.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.core.dimension.h4"></a>
- <span><a name="geometry.reference.core.dimension.example"></a></span><a class="link" href="dimension.html#geometry.reference.core.dimension.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.core.dimension.example"></a></span><a class="link" href="dimension.html#geometry.reference.core.dimension.example">Example</a>
</h6>
<p>
Examine the number of coordinates making up the points in a linestring
@@ -138,8 +148,8 @@ Metafunction defining <span class="bold"><strong>value</strong></span> as the nu
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/interior_type.html b/libs/geometry/doc/html/geometry/reference/core/interior_type.html
index c857f0646a..73bc91638e 100644
--- a/libs/geometry/doc/html/geometry/reference/core/interior_type.html
+++ b/libs/geometry/doc/html/geometry/reference/core/interior_type.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>interior_type</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="dimension.html" title="dimension">
@@ -27,13 +27,13 @@
<a name="geometry.reference.core.interior_type"></a><a class="link" href="interior_type.html" title="interior_type">interior_type</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id935903"></a>
+ <a class="indexterm" name="idp124343008"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the interior_type
(container type of inner rings) of the specified geometry type.
</p>
<h6>
<a name="geometry.reference.core.interior_type.h0"></a>
- <span><a name="geometry.reference.core.interior_type.description"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.core.interior_type.description"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.description">Description</a>
</h6>
<p>
Interior rings should be organized as a container (std::vector, std::deque,
@@ -42,7 +42,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the int
</p>
<h6>
<a name="geometry.reference.core.interior_type.h1"></a>
- <span><a name="geometry.reference.core.interior_type.synopsis"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.interior_type.synopsis"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -56,7 +56,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the int
</p>
<h6>
<a name="geometry.reference.core.interior_type.h2"></a>
- <span><a name="geometry.reference.core.interior_type.template_parameter_s_"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.interior_type.template_parameter_s_"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -91,21 +91,30 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the int
</table></div>
<h6>
<a name="geometry.reference.core.interior_type.h3"></a>
- <span><a name="geometry.reference.core.interior_type.header"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.interior_type.header"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">interior_type</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.core.interior_type.h4"></a>
- <span><a name="geometry.reference.core.interior_type.complexity"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.core.interior_type.complexity"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.core.interior_type.h5"></a>
- <span><a name="geometry.reference.core.interior_type.example"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.core.interior_type.example"></a></span><a class="link" href="interior_type.html#geometry.reference.core.interior_type.example">Example</a>
</h6>
<p>
Shows how to use the interior_type metafunction
@@ -125,7 +134,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the int
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
<span class="comment">// Define a polygon storing points in a deque and storing interior rings</span>
- <span class="comment">// in a list (note that std::list is not supported by most algorithms </span>
+ <span class="comment">// in a list (note that std::list is not supported by most algorithms</span>
<span class="comment">// because not supporting a random access iterator)</span>
<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span>
<span class="special">&lt;</span>
@@ -149,8 +158,8 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the int
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/is_radian.html b/libs/geometry/doc/html/geometry/reference/core/is_radian.html
index e6a57a9e9f..349b638ae4 100644
--- a/libs/geometry/doc/html/geometry/reference/core/is_radian.html
+++ b/libs/geometry/doc/html/geometry/reference/core/is_radian.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>is_radian</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="interior_type.html" title="interior_type">
@@ -27,17 +27,18 @@
<a name="geometry.reference.core.is_radian"></a><a class="link" href="is_radian.html" title="is_radian">is_radian</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id936802"></a>
+ <a class="indexterm" name="idp124468864"></a>
Meta-function to verify if a coordinate system is radian.
</p>
<h6>
<a name="geometry.reference.core.is_radian.h0"></a>
- <span><a name="geometry.reference.core.is_radian.synopsis"></a></span><a class="link" href="is_radian.html#geometry.reference.core.is_radian.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.is_radian.synopsis"></a></span><a class="link" href="is_radian.html#geometry.reference.core.is_radian.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CoordinateSystem</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">is_radian</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">true_type</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -46,7 +47,7 @@ Meta-function to verify if a coordinate system is radian.
</p>
<h6>
<a name="geometry.reference.core.is_radian.h1"></a>
- <span><a name="geometry.reference.core.is_radian.template_parameter_s_"></a></span><a class="link" href="is_radian.html#geometry.reference.core.is_radian.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.is_radian.template_parameter_s_"></a></span><a class="link" href="is_radian.html#geometry.reference.core.is_radian.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -73,18 +74,21 @@ Meta-function to verify if a coordinate system is radian.
</p>
</td>
<td>
+ <p>
+ Any coordinate system.
+ </p>
</td>
</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.core.is_radian.h2"></a>
- <span><a name="geometry.reference.core.is_radian.header"></a></span><a class="link" href="is_radian.html#geometry.reference.core.is_radian.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.is_radian.header"></a></span><a class="link" href="is_radian.html#geometry.reference.core.is_radian.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -95,8 +99,8 @@ Meta-function to verify if a coordinate system is radian.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/point_order.html b/libs/geometry/doc/html/geometry/reference/core/point_order.html
index 63de9c2df6..ee2f6c03b9 100644
--- a/libs/geometry/doc/html/geometry/reference/core/point_order.html
+++ b/libs/geometry/doc/html/geometry/reference/core/point_order.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>point_order</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="is_radian.html" title="is_radian">
@@ -27,13 +27,13 @@
<a name="geometry.reference.core.point_order"></a><a class="link" href="point_order.html" title="point_order">point_order</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id937120"></a>
+ <a class="indexterm" name="idp124509856"></a>
Metafunction defining <span class="bold"><strong>value</strong></span> as the point
order (clockwise, counterclockwise) of the specified geometry type.
</p>
<h6>
<a name="geometry.reference.core.point_order.h0"></a>
- <span><a name="geometry.reference.core.point_order.synopsis"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.point_order.synopsis"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -47,7 +47,7 @@ Metafunction defining <span class="bold"><strong>value</strong></span> as the po
</p>
<h6>
<a name="geometry.reference.core.point_order.h1"></a>
- <span><a name="geometry.reference.core.point_order.template_parameter_s_"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.point_order.template_parameter_s_"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -82,9 +82,18 @@ Metafunction defining <span class="bold"><strong>value</strong></span> as the po
</table></div>
<h6>
<a name="geometry.reference.core.point_order.h2"></a>
- <span><a name="geometry.reference.core.point_order.header"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.point_order.header"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">point_order</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="note"><table border="0" summary="Note">
@@ -99,14 +108,14 @@ Metafunction defining <span class="bold"><strong>value</strong></span> as the po
</table></div>
<h6>
<a name="geometry.reference.core.point_order.h3"></a>
- <span><a name="geometry.reference.core.point_order.complexity"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.core.point_order.complexity"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.core.point_order.h4"></a>
- <span><a name="geometry.reference.core.point_order.example"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.core.point_order.example"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.example">Example</a>
</h6>
<p>
Examine the expected point order of a polygon type
@@ -144,18 +153,18 @@ Metafunction defining <span class="bold"><strong>value</strong></span> as the po
</pre>
<h6>
<a name="geometry.reference.core.point_order.h5"></a>
- <span><a name="geometry.reference.core.point_order.see_also"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.see_also">See
+ <span class="phrase"><a name="geometry.reference.core.point_order.see_also"></a></span><a class="link" href="point_order.html#geometry.reference.core.point_order.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../enumerations/order_selector.html" title="order_selector">The
order_selector enumeration</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/point_type.html b/libs/geometry/doc/html/geometry/reference/core/point_type.html
index 3f81a436a2..b0730f8ef9 100644
--- a/libs/geometry/doc/html/geometry/reference/core/point_type.html
+++ b/libs/geometry/doc/html/geometry/reference/core/point_type.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>point_type</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="point_order.html" title="point_order">
@@ -27,13 +27,13 @@
<a name="geometry.reference.core.point_type"></a><a class="link" href="point_type.html" title="point_type">point_type</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id938134"></a>
+ <a class="indexterm" name="idp124638560"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the point_type
of the specified geometry type.
</p>
<h6>
<a name="geometry.reference.core.point_type.h0"></a>
- <span><a name="geometry.reference.core.point_type.synopsis"></a></span><a class="link" href="point_type.html#geometry.reference.core.point_type.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.point_type.synopsis"></a></span><a class="link" href="point_type.html#geometry.reference.core.point_type.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -47,7 +47,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the poi
</p>
<h6>
<a name="geometry.reference.core.point_type.h1"></a>
- <span><a name="geometry.reference.core.point_type.template_parameter_s_"></a></span><a class="link" href="point_type.html#geometry.reference.core.point_type.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.point_type.template_parameter_s_"></a></span><a class="link" href="point_type.html#geometry.reference.core.point_type.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -82,21 +82,30 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the poi
</table></div>
<h6>
<a name="geometry.reference.core.point_type.h2"></a>
- <span><a name="geometry.reference.core.point_type.header"></a></span><a class="link" href="point_type.html#geometry.reference.core.point_type.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.point_type.header"></a></span><a class="link" href="point_type.html#geometry.reference.core.point_type.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">point_type</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.core.point_type.h3"></a>
- <span><a name="geometry.reference.core.point_type.complexity"></a></span><a class="link" href="point_type.html#geometry.reference.core.point_type.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.core.point_type.complexity"></a></span><a class="link" href="point_type.html#geometry.reference.core.point_type.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.core.point_type.h4"></a>
- <span><a name="geometry.reference.core.point_type.example"></a></span><a class="link" href="point_type.html#geometry.reference.core.point_type.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.core.point_type.example"></a></span><a class="link" href="point_type.html#geometry.reference.core.point_type.example">Example</a>
</h6>
<p>
Examine the point type of a multi_polygon
@@ -109,7 +118,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the poi
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
<span class="special">{</span>
@@ -134,8 +143,8 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the poi
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/radian.html b/libs/geometry/doc/html/geometry/reference/core/radian.html
index 9eb56f02a6..7cdf7dd039 100644
--- a/libs/geometry/doc/html/geometry/reference/core/radian.html
+++ b/libs/geometry/doc/html/geometry/reference/core/radian.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>radian</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="point_type.html" title="point_type">
@@ -27,12 +27,12 @@
<a name="geometry.reference.core.radian"></a><a class="link" href="radian.html" title="radian">radian</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id939122"></a>
+ <a class="indexterm" name="idp124763344"></a>
Unit of plane angle: Radians.
</p>
<h6>
<a name="geometry.reference.core.radian.h0"></a>
- <span><a name="geometry.reference.core.radian.description"></a></span><a class="link" href="radian.html#geometry.reference.core.radian.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.core.radian.description"></a></span><a class="link" href="radian.html#geometry.reference.core.radian.description">Description</a>
</h6>
<p>
Tag defining the unit of plane angle for spherical coordinate systems.
@@ -41,7 +41,7 @@ Unit of plane angle: Radians.
</p>
<h6>
<a name="geometry.reference.core.radian.h1"></a>
- <span><a name="geometry.reference.core.radian.synopsis"></a></span><a class="link" href="radian.html#geometry.reference.core.radian.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.radian.synopsis"></a></span><a class="link" href="radian.html#geometry.reference.core.radian.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,13 +54,13 @@ Unit of plane angle: Radians.
</p>
<h6>
<a name="geometry.reference.core.radian.h2"></a>
- <span><a name="geometry.reference.core.radian.header"></a></span><a class="link" href="radian.html#geometry.reference.core.radian.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.radian.header"></a></span><a class="link" href="radian.html#geometry.reference.core.radian.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -70,7 +70,7 @@ Unit of plane angle: Radians.
</p>
<h6>
<a name="geometry.reference.core.radian.h3"></a>
- <span><a name="geometry.reference.core.radian.example"></a></span><a class="link" href="radian.html#geometry.reference.core.radian.example">example</a>
+ <span class="phrase"><a name="geometry.reference.core.radian.example"></a></span><a class="link" href="radian.html#geometry.reference.core.radian.example">example</a>
</h6>
<p>
Specify two coordinate systems, one in degrees, one in radians.
@@ -111,8 +111,8 @@ Unit of plane angle: Radians.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/ring_type.html b/libs/geometry/doc/html/geometry/reference/core/ring_type.html
index 8bd2a538b9..1e4fc001bd 100644
--- a/libs/geometry/doc/html/geometry/reference/core/ring_type.html
+++ b/libs/geometry/doc/html/geometry/reference/core/ring_type.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>ring_type</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="radian.html" title="radian">
@@ -27,13 +27,13 @@
<a name="geometry.reference.core.ring_type"></a><a class="link" href="ring_type.html" title="ring_type">ring_type</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id940000"></a>
+ <a class="indexterm" name="idp124867968"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the ring_type
of the specified geometry type.
</p>
<h6>
<a name="geometry.reference.core.ring_type.h0"></a>
- <span><a name="geometry.reference.core.ring_type.description"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.core.ring_type.description"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.description">Description</a>
</h6>
<p>
A polygon contains one exterior ring and zero or more interior rings (holes).
@@ -42,7 +42,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the rin
</p>
<h6>
<a name="geometry.reference.core.ring_type.h1"></a>
- <span><a name="geometry.reference.core.ring_type.synopsis"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.ring_type.synopsis"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -56,7 +56,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the rin
</p>
<h6>
<a name="geometry.reference.core.ring_type.h2"></a>
- <span><a name="geometry.reference.core.ring_type.template_parameter_s_"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.ring_type.template_parameter_s_"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -91,21 +91,30 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the rin
</table></div>
<h6>
<a name="geometry.reference.core.ring_type.h3"></a>
- <span><a name="geometry.reference.core.ring_type.header"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.ring_type.header"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">ring_type</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.core.ring_type.h4"></a>
- <span><a name="geometry.reference.core.ring_type.complexity"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.core.ring_type.complexity"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.core.ring_type.h5"></a>
- <span><a name="geometry.reference.core.ring_type.example"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.core.ring_type.example"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.example">Example</a>
</h6>
<p>
Shows how to use the ring_type metafunction, as well as interior_type
@@ -130,7 +139,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the rin
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">ring_type</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">int_type</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="comment">// So int_type defines a collection of rings, </span>
+ <span class="comment">// So int_type defines a collection of rings,</span>
<span class="comment">// which is a Boost.Range compatible range</span>
<span class="comment">// The type of an element of the collection is the very same ring type again.</span>
<span class="comment">// We show that.</span>
@@ -156,8 +165,8 @@ true
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/tag.html b/libs/geometry/doc/html/geometry/reference/core/tag.html
index 1efbd5f97d..f4ba31d862 100644
--- a/libs/geometry/doc/html/geometry/reference/core/tag.html
+++ b/libs/geometry/doc/html/geometry/reference/core/tag.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>tag</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="ring_type.html" title="ring_type">
@@ -27,13 +27,13 @@
<a name="geometry.reference.core.tag"></a><a class="link" href="tag.html" title="tag">tag</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id941190"></a>
+ <a class="indexterm" name="idp125018304"></a>
Metafunction defining <span class="bold"><strong>type</strong></span> as the tag
of the specified geometry type.
</p>
<h6>
<a name="geometry.reference.core.tag.h0"></a>
- <span><a name="geometry.reference.core.tag.description"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.core.tag.description"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.description">Description</a>
</h6>
<p>
With Boost.Geometry, tags are the driving force of the tag dispatching
@@ -41,7 +41,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the tag
</p>
<h6>
<a name="geometry.reference.core.tag.h1"></a>
- <span><a name="geometry.reference.core.tag.synopsis"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.tag.synopsis"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -55,7 +55,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the tag
</p>
<h6>
<a name="geometry.reference.core.tag.h2"></a>
- <span><a name="geometry.reference.core.tag.template_parameter_s_"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.tag.template_parameter_s_"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -90,13 +90,13 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the tag
</table></div>
<h6>
<a name="geometry.reference.core.tag.h3"></a>
- <span><a name="geometry.reference.core.tag.header"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.tag.header"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -106,14 +106,14 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the tag
</p>
<h6>
<a name="geometry.reference.core.tag.h4"></a>
- <span><a name="geometry.reference.core.tag.metafunction_result_type"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.metafunction_result_type">Metafunction
+ <span class="phrase"><a name="geometry.reference.core.tag.metafunction_result_type"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.metafunction_result_type">Metafunction
result type</a>
</h6>
<p>
The metafunction tag defines <span class="bold"><strong>type</strong></span> as one
of the following tags:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
point_tag
</li>
@@ -144,14 +144,14 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the tag
</ul></div>
<h6>
<a name="geometry.reference.core.tag.h5"></a>
- <span><a name="geometry.reference.core.tag.complexity"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.core.tag.complexity"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.core.tag.h6"></a>
- <span><a name="geometry.reference.core.tag.example"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.core.tag.example"></a></span><a class="link" href="tag.html#geometry.reference.core.tag.example">Example</a>
</h6>
<p>
Shows how tag dispatching essentially works in Boost.Geometry
@@ -164,7 +164,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the tag
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="identifier">BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS</span><span class="special">(</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">)</span>
@@ -192,7 +192,7 @@ Metafunction defining <span class="bold"><strong>type</strong></span> as the tag
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Polygon</span><span class="special">&gt;</span>
<span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">void</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Polygon</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
<span class="special">{</span>
- <span class="comment">// Use the Boost.Geometry manipulator "dsv" </span>
+ <span class="comment">// Use the Boost.Geometry manipulator "dsv"</span>
<span class="comment">// working on all supported geometries</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Hello POLYGON, you look like: "</span>
<span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">dsv</span><span class="special">(</span><span class="identifier">p</span><span class="special">)</span>
@@ -256,8 +256,8 @@ Hello MULTIPOLYGON, you contain: 1 polygon(s)
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/core/tag_cast.html b/libs/geometry/doc/html/geometry/reference/core/tag_cast.html
index 7bb20d8437..32ceb087c3 100644
--- a/libs/geometry/doc/html/geometry/reference/core/tag_cast.html
+++ b/libs/geometry/doc/html/geometry/reference/core/tag_cast.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>tag_cast</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../core.html" title="Core Metafunctions">
<link rel="prev" href="tag.html" title="tag">
@@ -27,27 +27,28 @@
<a name="geometry.reference.core.tag_cast"></a><a class="link" href="tag_cast.html" title="tag_cast">tag_cast</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id943876"></a>
+ <a class="indexterm" name="idp125308288"></a>
Metafunction defining a type being either the specified tag, or one of
the specified basetags if the type inherits from them.
</p>
<h6>
<a name="geometry.reference.core.tag_cast.h0"></a>
- <span><a name="geometry.reference.core.tag_cast.description"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.core.tag_cast.description"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.description">Description</a>
</h6>
<p>
Tags can inherit each other. A multi_point inherits, for example, both
- the multi_tag and the pointlike tag. Often behaviour can be shared between
+ the multi_tag and the pointlike_tag. Often behaviour can be shared between
different geometry types. A tag, found by the metafunction tag, can be
casted to a more basic tag, and then dispatched by that tag.
</p>
<h6>
<a name="geometry.reference.core.tag_cast.h1"></a>
- <span><a name="geometry.reference.core.tag_cast.synopsis"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.core.tag_cast.synopsis"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Tag</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag3</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag4</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag5</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag6</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag7</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Tag</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag3</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">BaseTag4</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag5</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag6</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseTag7</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">tag_cast</span>
<span class="special">{</span>
<span class="comment">// ...</span>
@@ -57,7 +58,7 @@ Metafunction defining a type being either the specified tag, or one of
</p>
<h6>
<a name="geometry.reference.core.tag_cast.h2"></a>
- <span><a name="geometry.reference.core.tag_cast.template_parameter_s_"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.core.tag_cast.template_parameter_s_"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -218,13 +219,13 @@ Metafunction defining a type being either the specified tag, or one of
</table></div>
<h6>
<a name="geometry.reference.core.tag_cast.h3"></a>
- <span><a name="geometry.reference.core.tag_cast.header"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.core.tag_cast.header"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -256,14 +257,14 @@ Metafunction defining a type being either the specified tag, or one of
</table></div>
<h6>
<a name="geometry.reference.core.tag_cast.h4"></a>
- <span><a name="geometry.reference.core.tag_cast.complexity"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.core.tag_cast.complexity"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.core.tag_cast.h5"></a>
- <span><a name="geometry.reference.core.tag_cast.example"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.core.tag_cast.example"></a></span><a class="link" href="tag_cast.html#geometry.reference.core.tag_cast.example">Example</a>
</h6>
<p>
Check if the polygon_tag can be casted to the areal_tag
@@ -303,8 +304,8 @@ base tag: struct boost::geometry::areal_tag
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/cs.html b/libs/geometry/doc/html/geometry/reference/cs.html
index 8918259d24..249b6fcca5 100644
--- a/libs/geometry/doc/html/geometry/reference/cs.html
+++ b/libs/geometry/doc/html/geometry/reference/cs.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Coordinate Systems</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="constants/max_corner.html" title="max_corner">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.cs"></a><a class="link" href="cs.html" title="Coordinate Systems">Coordinate Systems</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="cs/cs_cartesian.html">cs::cartesian</a></span></dt>
<dt><span class="section"><a href="cs/cs_spherical.html">cs::spherical</a></span></dt>
<dt><span class="section"><a href="cs/cs_spherical_equatorial.html">cs::spherical_equatorial</a></span></dt>
@@ -35,8 +35,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/cs/cs_cartesian.html b/libs/geometry/doc/html/geometry/reference/cs/cs_cartesian.html
index 573f26386e..63d66eec86 100644
--- a/libs/geometry/doc/html/geometry/reference/cs/cs_cartesian.html
+++ b/libs/geometry/doc/html/geometry/reference/cs/cs_cartesian.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>cs::cartesian</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../cs.html" title="Coordinate Systems">
<link rel="prev" href="../cs.html" title="Coordinate Systems">
@@ -27,12 +27,12 @@
<a name="geometry.reference.cs.cs_cartesian"></a><a class="link" href="cs_cartesian.html" title="cs::cartesian">cs::cartesian</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id929869"></a><a class="indexterm" name="id929873"></a>
+ <a class="indexterm" name="idp123517024"></a><a class="indexterm" name="idp123517680"></a>
Cartesian coordinate system.
</p>
<h6>
<a name="geometry.reference.cs.cs_cartesian.h0"></a>
- <span><a name="geometry.reference.cs.cs_cartesian.description"></a></span><a class="link" href="cs_cartesian.html#geometry.reference.cs.cs_cartesian.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_cartesian.description"></a></span><a class="link" href="cs_cartesian.html#geometry.reference.cs.cs_cartesian.description">Description</a>
</h6>
<p>
Defines the Cartesian or rectangular coordinate system where points are
@@ -41,7 +41,7 @@ Cartesian coordinate system.
</p>
<h6>
<a name="geometry.reference.cs.cs_cartesian.h1"></a>
- <span><a name="geometry.reference.cs.cs_cartesian.synopsis"></a></span><a class="link" href="cs_cartesian.html#geometry.reference.cs.cs_cartesian.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_cartesian.synopsis"></a></span><a class="link" href="cs_cartesian.html#geometry.reference.cs.cs_cartesian.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,13 +54,13 @@ Cartesian coordinate system.
</p>
<h6>
<a name="geometry.reference.cs.cs_cartesian.h2"></a>
- <span><a name="geometry.reference.cs.cs_cartesian.header"></a></span><a class="link" href="cs_cartesian.html#geometry.reference.cs.cs_cartesian.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_cartesian.header"></a></span><a class="link" href="cs_cartesian.html#geometry.reference.cs.cs_cartesian.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -71,8 +71,8 @@ Cartesian coordinate system.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/cs/cs_geographic.html b/libs/geometry/doc/html/geometry/reference/cs/cs_geographic.html
index f262369dc7..c1bbb8ee95 100644
--- a/libs/geometry/doc/html/geometry/reference/cs/cs_geographic.html
+++ b/libs/geometry/doc/html/geometry/reference/cs/cs_geographic.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>cs::geographic</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../cs.html" title="Coordinate Systems">
<link rel="prev" href="cs_spherical_equatorial.html" title="cs::spherical_equatorial">
@@ -27,12 +27,12 @@
<a name="geometry.reference.cs.cs_geographic"></a><a class="link" href="cs_geographic.html" title="cs::geographic">cs::geographic</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id930922"></a><a class="indexterm" name="id930927"></a>
+ <a class="indexterm" name="idp123715248"></a><a class="indexterm" name="idp123715872"></a>
Geographic coordinate system, in degree or in radian.
</p>
<h6>
<a name="geometry.reference.cs.cs_geographic.h0"></a>
- <span><a name="geometry.reference.cs.cs_geographic.description"></a></span><a class="link" href="cs_geographic.html#geometry.reference.cs.cs_geographic.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_geographic.description"></a></span><a class="link" href="cs_geographic.html#geometry.reference.cs.cs_geographic.description">Description</a>
</h6>
<p>
Defines the geographic coordinate system where points are defined in two
@@ -40,7 +40,7 @@ Geographic coordinate system, in degree or in radian.
</p>
<h6>
<a name="geometry.reference.cs.cs_geographic.h1"></a>
- <span><a name="geometry.reference.cs.cs_geographic.synopsis"></a></span><a class="link" href="cs_geographic.html#geometry.reference.cs.cs_geographic.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_geographic.synopsis"></a></span><a class="link" href="cs_geographic.html#geometry.reference.cs.cs_geographic.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Geographic coordinate system, in degree or in radian.
</p>
<h6>
<a name="geometry.reference.cs.cs_geographic.h2"></a>
- <span><a name="geometry.reference.cs.cs_geographic.template_parameter_s_"></a></span><a class="link" href="cs_geographic.html#geometry.reference.cs.cs_geographic.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.cs.cs_geographic.template_parameter_s_"></a></span><a class="link" href="cs_geographic.html#geometry.reference.cs.cs_geographic.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -86,13 +86,13 @@ Geographic coordinate system, in degree or in radian.
</table></div>
<h6>
<a name="geometry.reference.cs.cs_geographic.h3"></a>
- <span><a name="geometry.reference.cs.cs_geographic.header"></a></span><a class="link" href="cs_geographic.html#geometry.reference.cs.cs_geographic.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_geographic.header"></a></span><a class="link" href="cs_geographic.html#geometry.reference.cs.cs_geographic.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -103,8 +103,8 @@ Geographic coordinate system, in degree or in radian.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/cs/cs_spherical.html b/libs/geometry/doc/html/geometry/reference/cs/cs_spherical.html
index 4f87f1a1c7..822f852203 100644
--- a/libs/geometry/doc/html/geometry/reference/cs/cs_spherical.html
+++ b/libs/geometry/doc/html/geometry/reference/cs/cs_spherical.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>cs::spherical</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../cs.html" title="Coordinate Systems">
<link rel="prev" href="cs_cartesian.html" title="cs::cartesian">
@@ -27,12 +27,12 @@
<a name="geometry.reference.cs.cs_spherical"></a><a class="link" href="cs_spherical.html" title="cs::spherical">cs::spherical</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id930150"></a><a class="indexterm" name="id930154"></a>
+ <a class="indexterm" name="idp123549296"></a><a class="indexterm" name="idp123549952"></a>
Spherical (polar) coordinate system, in degree or in radian.
</p>
<h6>
<a name="geometry.reference.cs.cs_spherical.h0"></a>
- <span><a name="geometry.reference.cs.cs_spherical.description"></a></span><a class="link" href="cs_spherical.html#geometry.reference.cs.cs_spherical.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_spherical.description"></a></span><a class="link" href="cs_spherical.html#geometry.reference.cs.cs_spherical.description">Description</a>
</h6>
<p>
Defines the spherical coordinate system where points are defined in two
@@ -40,7 +40,7 @@ Spherical (polar) coordinate system, in degree or in radian.
</p>
<h6>
<a name="geometry.reference.cs.cs_spherical.h1"></a>
- <span><a name="geometry.reference.cs.cs_spherical.synopsis"></a></span><a class="link" href="cs_spherical.html#geometry.reference.cs.cs_spherical.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_spherical.synopsis"></a></span><a class="link" href="cs_spherical.html#geometry.reference.cs.cs_spherical.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Spherical (polar) coordinate system, in degree or in radian.
</p>
<h6>
<a name="geometry.reference.cs.cs_spherical.h2"></a>
- <span><a name="geometry.reference.cs.cs_spherical.template_parameter_s_"></a></span><a class="link" href="cs_spherical.html#geometry.reference.cs.cs_spherical.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.cs.cs_spherical.template_parameter_s_"></a></span><a class="link" href="cs_spherical.html#geometry.reference.cs.cs_spherical.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -86,13 +86,13 @@ Spherical (polar) coordinate system, in degree or in radian.
</table></div>
<h6>
<a name="geometry.reference.cs.cs_spherical.h3"></a>
- <span><a name="geometry.reference.cs.cs_spherical.header"></a></span><a class="link" href="cs_spherical.html#geometry.reference.cs.cs_spherical.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_spherical.header"></a></span><a class="link" href="cs_spherical.html#geometry.reference.cs.cs_spherical.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -103,8 +103,8 @@ Spherical (polar) coordinate system, in degree or in radian.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/cs/cs_spherical_equatorial.html b/libs/geometry/doc/html/geometry/reference/cs/cs_spherical_equatorial.html
index aee25ed6b9..30056f5f77 100644
--- a/libs/geometry/doc/html/geometry/reference/cs/cs_spherical_equatorial.html
+++ b/libs/geometry/doc/html/geometry/reference/cs/cs_spherical_equatorial.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>cs::spherical_equatorial</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../cs.html" title="Coordinate Systems">
<link rel="prev" href="cs_spherical.html" title="cs::spherical">
@@ -27,12 +27,12 @@
<a name="geometry.reference.cs.cs_spherical_equatorial"></a><a class="link" href="cs_spherical_equatorial.html" title="cs::spherical_equatorial">cs::spherical_equatorial</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id930532"></a><a class="indexterm" name="id930537"></a>
+ <a class="indexterm" name="idp123677280"></a><a class="indexterm" name="idp123677904"></a>
Spherical equatorial coordinate system, in degree or in radian.
</p>
<h6>
<a name="geometry.reference.cs.cs_spherical_equatorial.h0"></a>
- <span><a name="geometry.reference.cs.cs_spherical_equatorial.description"></a></span><a class="link" href="cs_spherical_equatorial.html#geometry.reference.cs.cs_spherical_equatorial.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_spherical_equatorial.description"></a></span><a class="link" href="cs_spherical_equatorial.html#geometry.reference.cs.cs_spherical_equatorial.description">Description</a>
</h6>
<p>
This one resembles the geographic coordinate system, and has latitude up
@@ -42,7 +42,7 @@ Spherical equatorial coordinate system, in degree or in radian.
</p>
<h6>
<a name="geometry.reference.cs.cs_spherical_equatorial.h1"></a>
- <span><a name="geometry.reference.cs.cs_spherical_equatorial.synopsis"></a></span><a class="link" href="cs_spherical_equatorial.html#geometry.reference.cs.cs_spherical_equatorial.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_spherical_equatorial.synopsis"></a></span><a class="link" href="cs_spherical_equatorial.html#geometry.reference.cs.cs_spherical_equatorial.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -56,7 +56,7 @@ Spherical equatorial coordinate system, in degree or in radian.
</p>
<h6>
<a name="geometry.reference.cs.cs_spherical_equatorial.h2"></a>
- <span><a name="geometry.reference.cs.cs_spherical_equatorial.template_parameter_s_"></a></span><a class="link" href="cs_spherical_equatorial.html#geometry.reference.cs.cs_spherical_equatorial.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.cs.cs_spherical_equatorial.template_parameter_s_"></a></span><a class="link" href="cs_spherical_equatorial.html#geometry.reference.cs.cs_spherical_equatorial.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -88,13 +88,13 @@ Spherical equatorial coordinate system, in degree or in radian.
</table></div>
<h6>
<a name="geometry.reference.cs.cs_spherical_equatorial.h3"></a>
- <span><a name="geometry.reference.cs.cs_spherical_equatorial.header"></a></span><a class="link" href="cs_spherical_equatorial.html#geometry.reference.cs.cs_spherical_equatorial.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.cs.cs_spherical_equatorial.header"></a></span><a class="link" href="cs_spherical_equatorial.html#geometry.reference.cs.cs_spherical_equatorial.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -105,8 +105,8 @@ Spherical equatorial coordinate system, in degree or in radian.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/enumerations.html b/libs/geometry/doc/html/geometry/reference/enumerations.html
index a47d3d2370..6c48c59d27 100644
--- a/libs/geometry/doc/html/geometry/reference/enumerations.html
+++ b/libs/geometry/doc/html/geometry/reference/enumerations.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Enumerations</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="core/tag_cast.html" title="tag_cast">
-<link rel="next" href="enumerations/closure_selector.html" title="closure_selector">
+<link rel="next" href="enumerations/buffer_side_selector.html" title="buffer_side_selector">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,21 +20,24 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="core/tag_cast.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="enumerations/closure_selector.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="core/tag_cast.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="enumerations/buffer_side_selector.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.enumerations"></a><a class="link" href="enumerations.html" title="Enumerations">Enumerations</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="enumerations/buffer_side_selector.html">buffer_side_selector</a></span></dt>
<dt><span class="section"><a href="enumerations/closure_selector.html">closure_selector</a></span></dt>
+<dt><span class="section"><a href="enumerations/join_selector.html">join_selector</a></span></dt>
<dt><span class="section"><a href="enumerations/order_selector.html">order_selector</a></span></dt>
+<dt><span class="section"><a href="enumerations/piece_type.html">piece_type</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -42,7 +45,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="core/tag_cast.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="enumerations/closure_selector.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="core/tag_cast.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="enumerations/buffer_side_selector.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/enumerations/buffer_side_selector.html b/libs/geometry/doc/html/geometry/reference/enumerations/buffer_side_selector.html
new file mode 100644
index 0000000000..ce0faab9a9
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/enumerations/buffer_side_selector.html
@@ -0,0 +1,117 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>buffer_side_selector</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../enumerations.html" title="Enumerations">
+<link rel="prev" href="../enumerations.html" title="Enumerations">
+<link rel="next" href="closure_selector.html" title="closure_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../enumerations.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="closure_selector.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.enumerations.buffer_side_selector"></a><a class="link" href="buffer_side_selector.html" title="buffer_side_selector">buffer_side_selector</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp125480576"></a>
+<a class="indexterm" name="idp125481392"></a>
+<a class="indexterm" name="idp125482208"></a>
+Enumerates options for side of buffer (left/right w.r.t. directed segment)
+ </p>
+<h6>
+<a name="geometry.reference.enumerations.buffer_side_selector.h0"></a>
+ <span class="phrase"><a name="geometry.reference.enumerations.buffer_side_selector.description"></a></span><a class="link" href="buffer_side_selector.html#geometry.reference.enumerations.buffer_side_selector.description">Description</a>
+ </h6>
+<p>
+ Around a linestring, a buffer can be defined left or right. Around a polygon,
+ assumed clockwise internally, a buffer is either on the left side (inflates
+ the polygon), or on the right side (deflates the polygon)
+ </p>
+<h6>
+<a name="geometry.reference.enumerations.buffer_side_selector.h1"></a>
+ <span class="phrase"><a name="geometry.reference.enumerations.buffer_side_selector.synopsis"></a></span><a class="link" href="buffer_side_selector.html#geometry.reference.enumerations.buffer_side_selector.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">enum</span> <span class="identifier">buffer_side_selector</span> <span class="special">{</span><span class="identifier">buffer_side_left</span><span class="special">,</span> <span class="identifier">buffer_side_right</span><span class="special">};</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.enumerations.buffer_side_selector.h2"></a>
+ <span class="phrase"><a name="geometry.reference.enumerations.buffer_side_selector.values"></a></span><a class="link" href="buffer_side_selector.html#geometry.reference.enumerations.buffer_side_selector.values">Values</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Value
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ buffer_side_left
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ buffer_side_right
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.enumerations.buffer_side_selector.h3"></a>
+ <span class="phrase"><a name="geometry.reference.enumerations.buffer_side_selector.header"></a></span><a class="link" href="buffer_side_selector.html#geometry.reference.enumerations.buffer_side_selector.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../enumerations.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="closure_selector.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/enumerations/closure_selector.html b/libs/geometry/doc/html/geometry/reference/enumerations/closure_selector.html
index 5013f7638f..80425ac64c 100644
--- a/libs/geometry/doc/html/geometry/reference/enumerations/closure_selector.html
+++ b/libs/geometry/doc/html/geometry/reference/enumerations/closure_selector.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>closure_selector</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../enumerations.html" title="Enumerations">
-<link rel="prev" href="../enumerations.html" title="Enumerations">
-<link rel="next" href="order_selector.html" title="order_selector">
+<link rel="prev" href="buffer_side_selector.html" title="buffer_side_selector">
+<link rel="next" href="join_selector.html" title="join_selector">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,22 +20,22 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../enumerations.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="order_selector.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="buffer_side_selector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="join_selector.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.enumerations.closure_selector"></a><a class="link" href="closure_selector.html" title="closure_selector">closure_selector</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id945323"></a>
-<a class="indexterm" name="id945330"></a>
-<a class="indexterm" name="id945337"></a>
-<a class="indexterm" name="id945344"></a>
+ <a class="indexterm" name="idp125517680"></a>
+<a class="indexterm" name="idp125518496"></a>
+<a class="indexterm" name="idp125519312"></a>
+<a class="indexterm" name="idp125520128"></a>
Enumerates options for defining if polygons are open or closed.
</p>
<h6>
<a name="geometry.reference.enumerations.closure_selector.h0"></a>
- <span><a name="geometry.reference.enumerations.closure_selector.description"></a></span><a class="link" href="closure_selector.html#geometry.reference.enumerations.closure_selector.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.enumerations.closure_selector.description"></a></span><a class="link" href="closure_selector.html#geometry.reference.enumerations.closure_selector.description">Description</a>
</h6>
<p>
The enumeration closure_selector describes options for if a polygon is
@@ -46,7 +46,7 @@ Enumerates options for defining if polygons are open or closed.
</p>
<h6>
<a name="geometry.reference.enumerations.closure_selector.h1"></a>
- <span><a name="geometry.reference.enumerations.closure_selector.synopsis"></a></span><a class="link" href="closure_selector.html#geometry.reference.enumerations.closure_selector.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.enumerations.closure_selector.synopsis"></a></span><a class="link" href="closure_selector.html#geometry.reference.enumerations.closure_selector.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -55,7 +55,7 @@ Enumerates options for defining if polygons are open or closed.
</p>
<h6>
<a name="geometry.reference.enumerations.closure_selector.h2"></a>
- <span><a name="geometry.reference.enumerations.closure_selector.values"></a></span><a class="link" href="closure_selector.html#geometry.reference.enumerations.closure_selector.values">Values</a>
+ <span class="phrase"><a name="geometry.reference.enumerations.closure_selector.values"></a></span><a class="link" href="closure_selector.html#geometry.reference.enumerations.closure_selector.values">Values</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -117,14 +117,23 @@ Enumerates options for defining if polygons are open or closed.
</table></div>
<h6>
<a name="geometry.reference.enumerations.closure_selector.h3"></a>
- <span><a name="geometry.reference.enumerations.closure_selector.header"></a></span><a class="link" href="closure_selector.html#geometry.reference.enumerations.closure_selector.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.enumerations.closure_selector.header"></a></span><a class="link" href="closure_selector.html#geometry.reference.enumerations.closure_selector.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">closure</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.enumerations.closure_selector.h4"></a>
- <span><a name="geometry.reference.enumerations.closure_selector.see_also"></a></span><a class="link" href="closure_selector.html#geometry.reference.enumerations.closure_selector.see_also">See
+ <span class="phrase"><a name="geometry.reference.enumerations.closure_selector.see_also"></a></span><a class="link" href="closure_selector.html#geometry.reference.enumerations.closure_selector.see_also">See
also</a>
</h6>
<p>
@@ -133,8 +142,8 @@ Enumerates options for defining if polygons are open or closed.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -142,7 +151,7 @@ Enumerates options for defining if polygons are open or closed.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../enumerations.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="order_selector.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="buffer_side_selector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="join_selector.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/enumerations/join_selector.html b/libs/geometry/doc/html/geometry/reference/enumerations/join_selector.html
new file mode 100644
index 0000000000..5f6c938db0
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/enumerations/join_selector.html
@@ -0,0 +1,128 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>join_selector</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../enumerations.html" title="Enumerations">
+<link rel="prev" href="closure_selector.html" title="closure_selector">
+<link rel="next" href="order_selector.html" title="order_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="closure_selector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="order_selector.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.enumerations.join_selector"></a><a class="link" href="join_selector.html" title="join_selector">join_selector</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp125575040"></a>
+<a class="indexterm" name="idp125575856"></a>
+<a class="indexterm" name="idp125576672"></a>
+<a class="indexterm" name="idp125577488"></a>
+<a class="indexterm" name="idp125578304"></a>
+Enumerates types of joins.
+ </p>
+<h6>
+<a name="geometry.reference.enumerations.join_selector.h0"></a>
+ <span class="phrase"><a name="geometry.reference.enumerations.join_selector.synopsis"></a></span><a class="link" href="join_selector.html#geometry.reference.enumerations.join_selector.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">enum</span> <span class="identifier">join_selector</span> <span class="special">{</span><span class="identifier">join_convex</span><span class="special">,</span> <span class="identifier">join_concave</span><span class="special">,</span> <span class="identifier">join_continue</span><span class="special">,</span> <span class="identifier">join_spike</span><span class="special">};</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.enumerations.join_selector.h1"></a>
+ <span class="phrase"><a name="geometry.reference.enumerations.join_selector.values"></a></span><a class="link" href="join_selector.html#geometry.reference.enumerations.join_selector.values">Values</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Value
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ join_convex
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ join_concave
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ join_continue
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ join_spike
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.enumerations.join_selector.h2"></a>
+ <span class="phrase"><a name="geometry.reference.enumerations.join_selector.header"></a></span><a class="link" href="join_selector.html#geometry.reference.enumerations.join_selector.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="closure_selector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="order_selector.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/enumerations/order_selector.html b/libs/geometry/doc/html/geometry/reference/enumerations/order_selector.html
index 997682335e..0f46a26d4d 100644
--- a/libs/geometry/doc/html/geometry/reference/enumerations/order_selector.html
+++ b/libs/geometry/doc/html/geometry/reference/enumerations/order_selector.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>order_selector</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../enumerations.html" title="Enumerations">
-<link rel="prev" href="closure_selector.html" title="closure_selector">
-<link rel="next" href="../exceptions.html" title="Exceptions">
+<link rel="prev" href="join_selector.html" title="join_selector">
+<link rel="next" href="piece_type.html" title="piece_type">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,22 +20,22 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="closure_selector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../exceptions.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="join_selector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="piece_type.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.enumerations.order_selector"></a><a class="link" href="order_selector.html" title="order_selector">order_selector</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id945768"></a>
-<a class="indexterm" name="id945774"></a>
-<a class="indexterm" name="id945781"></a>
-<a class="indexterm" name="id945788"></a>
+ <a class="indexterm" name="idp125615712"></a>
+<a class="indexterm" name="idp125616528"></a>
+<a class="indexterm" name="idp125617344"></a>
+<a class="indexterm" name="idp125618160"></a>
Enumerates options for the order of points within polygons.
</p>
<h6>
<a name="geometry.reference.enumerations.order_selector.h0"></a>
- <span><a name="geometry.reference.enumerations.order_selector.description"></a></span><a class="link" href="order_selector.html#geometry.reference.enumerations.order_selector.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.enumerations.order_selector.description"></a></span><a class="link" href="order_selector.html#geometry.reference.enumerations.order_selector.description">Description</a>
</h6>
<p>
The enumeration order_selector describes options for the order of points
@@ -46,7 +46,7 @@ Enumerates options for the order of points within polygons.
</p>
<h6>
<a name="geometry.reference.enumerations.order_selector.h1"></a>
- <span><a name="geometry.reference.enumerations.order_selector.synopsis"></a></span><a class="link" href="order_selector.html#geometry.reference.enumerations.order_selector.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.enumerations.order_selector.synopsis"></a></span><a class="link" href="order_selector.html#geometry.reference.enumerations.order_selector.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -55,7 +55,7 @@ Enumerates options for the order of points within polygons.
</p>
<h6>
<a name="geometry.reference.enumerations.order_selector.h2"></a>
- <span><a name="geometry.reference.enumerations.order_selector.values"></a></span><a class="link" href="order_selector.html#geometry.reference.enumerations.order_selector.values">Values</a>
+ <span class="phrase"><a name="geometry.reference.enumerations.order_selector.values"></a></span><a class="link" href="order_selector.html#geometry.reference.enumerations.order_selector.values">Values</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -116,14 +116,23 @@ Enumerates options for the order of points within polygons.
</table></div>
<h6>
<a name="geometry.reference.enumerations.order_selector.h3"></a>
- <span><a name="geometry.reference.enumerations.order_selector.header"></a></span><a class="link" href="order_selector.html#geometry.reference.enumerations.order_selector.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.enumerations.order_selector.header"></a></span><a class="link" href="order_selector.html#geometry.reference.enumerations.order_selector.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">point_order</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.enumerations.order_selector.h4"></a>
- <span><a name="geometry.reference.enumerations.order_selector.see_also"></a></span><a class="link" href="order_selector.html#geometry.reference.enumerations.order_selector.see_also">See also</a>
+ <span class="phrase"><a name="geometry.reference.enumerations.order_selector.see_also"></a></span><a class="link" href="order_selector.html#geometry.reference.enumerations.order_selector.see_also">See also</a>
</h6>
<p>
<a class="link" href="../core/point_order.html" title="point_order">The point_order metafunction</a>
@@ -131,8 +140,8 @@ Enumerates options for the order of points within polygons.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -140,7 +149,7 @@ Enumerates options for the order of points within polygons.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="closure_selector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../exceptions.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="join_selector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="piece_type.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/enumerations/piece_type.html b/libs/geometry/doc/html/geometry/reference/enumerations/piece_type.html
new file mode 100644
index 0000000000..a998401489
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/enumerations/piece_type.html
@@ -0,0 +1,148 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>piece_type</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../enumerations.html" title="Enumerations">
+<link rel="prev" href="order_selector.html" title="order_selector">
+<link rel="next" href="../exceptions.html" title="Exceptions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="order_selector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../exceptions.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.enumerations.piece_type"></a><a class="link" href="piece_type.html" title="piece_type">piece_type</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp125672336"></a>
+<a class="indexterm" name="idp125673152"></a>
+<a class="indexterm" name="idp125673968"></a>
+<a class="indexterm" name="idp125674784"></a>
+<a class="indexterm" name="idp125675600"></a>
+<a class="indexterm" name="idp125676416"></a>
+<a class="indexterm" name="idp125677232"></a>
+Enumerates types of pieces (parts of buffer) around geometries.
+ </p>
+<h6>
+<a name="geometry.reference.enumerations.piece_type.h0"></a>
+ <span class="phrase"><a name="geometry.reference.enumerations.piece_type.synopsis"></a></span><a class="link" href="piece_type.html#geometry.reference.enumerations.piece_type.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">enum</span> <span class="identifier">piece_type</span> <span class="special">{</span><span class="identifier">buffered_segment</span><span class="special">,</span> <span class="identifier">buffered_join</span><span class="special">,</span> <span class="identifier">buffered_round_end</span><span class="special">,</span> <span class="identifier">buffered_flat_end</span><span class="special">,</span> <span class="identifier">buffered_point</span><span class="special">,</span> <span class="identifier">buffered_concave</span><span class="special">};</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.enumerations.piece_type.h1"></a>
+ <span class="phrase"><a name="geometry.reference.enumerations.piece_type.values"></a></span><a class="link" href="piece_type.html#geometry.reference.enumerations.piece_type.values">Values</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Value
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ buffered_segment
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ buffered_join
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ buffered_round_end
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ buffered_flat_end
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ buffered_point
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ buffered_concave
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.enumerations.piece_type.h2"></a>
+ <span class="phrase"><a name="geometry.reference.enumerations.piece_type.header"></a></span><a class="link" href="piece_type.html#geometry.reference.enumerations.piece_type.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="order_selector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../enumerations.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../exceptions.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/exceptions.html b/libs/geometry/doc/html/geometry/reference/exceptions.html
index 69c481f852..182f0768e1 100644
--- a/libs/geometry/doc/html/geometry/reference/exceptions.html
+++ b/libs/geometry/doc/html/geometry/reference/exceptions.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Exceptions</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="enumerations/order_selector.html" title="order_selector">
+<link rel="prev" href="enumerations/piece_type.html" title="piece_type">
<link rel="next" href="exceptions/exception.html" title="exception">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,21 +20,21 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="enumerations/order_selector.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="exceptions/exception.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="enumerations/piece_type.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="exceptions/exception.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.exceptions"></a><a class="link" href="exceptions.html" title="Exceptions">Exceptions</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="exceptions/exception.html">exception</a></span></dt>
<dt><span class="section"><a href="exceptions/centroid_exception.html">centroid_exception</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -42,7 +42,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="enumerations/order_selector.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="exceptions/exception.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="enumerations/piece_type.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="exceptions/exception.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/exceptions/centroid_exception.html b/libs/geometry/doc/html/geometry/reference/exceptions/centroid_exception.html
index 4b7a7a7869..63bb34e870 100644
--- a/libs/geometry/doc/html/geometry/reference/exceptions/centroid_exception.html
+++ b/libs/geometry/doc/html/geometry/reference/exceptions/centroid_exception.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>centroid_exception</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../exceptions.html" title="Exceptions">
<link rel="prev" href="exception.html" title="exception">
-<link rel="next" href="../iterators.html" title="Iterators">
+<link rel="next" href="../io.html" title="IO (input/output)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="exception.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../exceptions.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../iterators.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="exception.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../exceptions.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../io.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.exceptions.centroid_exception"></a><a class="link" href="centroid_exception.html" title="centroid_exception">centroid_exception</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id946454"></a>
+ <a class="indexterm" name="idp125749664"></a>
Centroid Exception.
</p>
<h6>
<a name="geometry.reference.exceptions.centroid_exception.h0"></a>
- <span><a name="geometry.reference.exceptions.centroid_exception.description"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.exceptions.centroid_exception.description"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.description">Description</a>
</h6>
<p>
The centroid_exception is thrown if the free centroid function is called
@@ -41,7 +41,7 @@ Centroid Exception.
</p>
<h6>
<a name="geometry.reference.exceptions.centroid_exception.h1"></a>
- <span><a name="geometry.reference.exceptions.centroid_exception.synopsis"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.exceptions.centroid_exception.synopsis"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -55,7 +55,7 @@ Centroid Exception.
</p>
<h6>
<a name="geometry.reference.exceptions.centroid_exception.h2"></a>
- <span><a name="geometry.reference.exceptions.centroid_exception.constructor_s_"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.exceptions.centroid_exception.constructor_s_"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -89,6 +89,9 @@ Centroid Exception.
</p>
</td>
<td>
+ <p>
+ The default constructor.
+ </p>
</td>
<td>
</td>
@@ -96,7 +99,7 @@ Centroid Exception.
</table></div>
<h6>
<a name="geometry.reference.exceptions.centroid_exception.h3"></a>
- <span><a name="geometry.reference.exceptions.centroid_exception.member_function_s_"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.exceptions.centroid_exception.member_function_s_"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -104,6 +107,7 @@ Centroid Exception.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -136,20 +140,28 @@ Centroid Exception.
</p>
</td>
<td>
+ <p>
+ Returns the explanatory string.
+ </p>
</td>
<td>
</td>
+<td>
+ <p>
+ Pointer to a null-terminated string with explanatory information.
+ </p>
+ </td>
</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.exceptions.centroid_exception.h4"></a>
- <span><a name="geometry.reference.exceptions.centroid_exception.header"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.exceptions.centroid_exception.header"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -159,18 +171,18 @@ Centroid Exception.
</p>
<h6>
<a name="geometry.reference.exceptions.centroid_exception.h5"></a>
- <span><a name="geometry.reference.exceptions.centroid_exception.see_also"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.see_also">See
+ <span class="phrase"><a name="geometry.reference.exceptions.centroid_exception.see_also"></a></span><a class="link" href="centroid_exception.html#geometry.reference.exceptions.centroid_exception.see_also">See
also</a>
</h6>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a class="link" href="../algorithms/centroid.html" title="centroid">the centroid
function</a>
</li></ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -178,7 +190,7 @@ Centroid Exception.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="exception.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../exceptions.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../iterators.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="exception.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../exceptions.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../io.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/exceptions/exception.html b/libs/geometry/doc/html/geometry/reference/exceptions/exception.html
index 8bfb4c9e2b..0ab511758c 100644
--- a/libs/geometry/doc/html/geometry/reference/exceptions/exception.html
+++ b/libs/geometry/doc/html/geometry/reference/exceptions/exception.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>exception</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../exceptions.html" title="Exceptions">
<link rel="prev" href="../exceptions.html" title="Exceptions">
@@ -27,12 +27,12 @@
<a name="geometry.reference.exceptions.exception"></a><a class="link" href="exception.html" title="exception">exception</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id946220"></a>
+ <a class="indexterm" name="idp125722320"></a>
Base exception class for Boost.Geometry algorithms.
</p>
<h6>
<a name="geometry.reference.exceptions.exception.h0"></a>
- <span><a name="geometry.reference.exceptions.exception.description"></a></span><a class="link" href="exception.html#geometry.reference.exceptions.exception.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.exceptions.exception.description"></a></span><a class="link" href="exception.html#geometry.reference.exceptions.exception.description">Description</a>
</h6>
<p>
This class is never thrown. All exceptions thrown in Boost.Geometry are
@@ -40,7 +40,7 @@ Base exception class for Boost.Geometry algorithms.
</p>
<h6>
<a name="geometry.reference.exceptions.exception.h1"></a>
- <span><a name="geometry.reference.exceptions.exception.synopsis"></a></span><a class="link" href="exception.html#geometry.reference.exceptions.exception.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.exceptions.exception.synopsis"></a></span><a class="link" href="exception.html#geometry.reference.exceptions.exception.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Base exception class for Boost.Geometry algorithms.
</p>
<h6>
<a name="geometry.reference.exceptions.exception.h2"></a>
- <span><a name="geometry.reference.exceptions.exception.header"></a></span><a class="link" href="exception.html#geometry.reference.exceptions.exception.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.exceptions.exception.header"></a></span><a class="link" href="exception.html#geometry.reference.exceptions.exception.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">exception</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -62,8 +62,8 @@ Base exception class for Boost.Geometry algorithms.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/io.html b/libs/geometry/doc/html/geometry/reference/io.html
new file mode 100644
index 0000000000..4abdb4eb81
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/io.html
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>IO (input/output)</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="exceptions/centroid_exception.html" title="centroid_exception">
+<link rel="next" href="io/wkt.html" title="WKT (Well-Known Text)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="exceptions/centroid_exception.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="io/wkt.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="geometry.reference.io"></a><a class="link" href="io.html" title="IO (input/output)">IO (input/output)</a>
+</h3></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="io/wkt.html">WKT (Well-Known Text)</a></span></dt>
+<dt><span class="section"><a href="io/svg.html">SVG (Scalable Vector Graphics)</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="exceptions/centroid_exception.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="io/wkt.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/io/svg.html b/libs/geometry/doc/html/geometry/reference/io/svg.html
new file mode 100644
index 0000000000..fa5937fbaa
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/io/svg.html
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>SVG (Scalable Vector Graphics)</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../io.html" title="IO (input/output)">
+<link rel="prev" href="wkt/wkt.html" title="wkt">
+<link rel="next" href="svg/svg.html" title="svg">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wkt/wkt.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../io.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="svg/svg.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.io.svg"></a><a class="link" href="svg.html" title="SVG (Scalable Vector Graphics)">SVG (Scalable Vector Graphics)</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="svg/svg.html">svg</a></span></dt>
+<dt><span class="section"><a href="svg/svg_mapper.html">svg_mapper</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="wkt/wkt.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../io.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="svg/svg.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/io/svg/svg.html b/libs/geometry/doc/html/geometry/reference/io/svg/svg.html
new file mode 100644
index 0000000000..1ce876cb1b
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/io/svg/svg.html
@@ -0,0 +1,171 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>svg</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../svg.html" title="SVG (Scalable Vector Graphics)">
+<link rel="prev" href="../svg.html" title="SVG (Scalable Vector Graphics)">
+<link rel="next" href="svg_mapper.html" title="svg_mapper">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../svg.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../svg.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="svg_mapper.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.io.svg.svg"></a><a class="link" href="svg.html" title="svg">svg</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp126187888"></a>
+Manipulator to stream geometries as SVG.
+ </p>
+<h6>
+<a name="geometry.reference.io.svg.svg.h0"></a>
+ <span class="phrase"><a name="geometry.reference.io.svg.svg.synopsis"></a></span><a class="link" href="svg.html#geometry.reference.io.svg.svg.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">&gt;</span>
+<span class="identifier">svg_manipulator</span><span class="special">&lt;</span><span class="identifier">Geometry</span><span class="special">&gt;</span> <span class="identifier">svg</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">style</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">size</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.io.svg.svg.h1"></a>
+ <span class="phrase"><a name="geometry.reference.io.svg.svg.parameters"></a></span><a class="link" href="svg.html#geometry.reference.io.svg.svg.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Geometry const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ std::string const &amp;
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ style
+ </p>
+ </td>
+<td>
+ <p>
+ String containing verbatim SVG style information
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ int
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ size
+ </p>
+ </td>
+<td>
+ <p>
+ Optional size (used for SVG points) in SVG pixels. For linestrings,
+ specify linewidth in the SVG style information
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.io.svg.svg.h2"></a>
+ <span class="phrase"><a name="geometry.reference.io.svg.svg.header"></a></span><a class="link" href="svg.html#geometry.reference.io.svg.svg.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">svg</span><span class="special">/</span><span class="identifier">write_svg</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../svg.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../svg.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="svg_mapper.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/io/svg/svg_mapper.html b/libs/geometry/doc/html/geometry/reference/io/svg/svg_mapper.html
new file mode 100644
index 0000000000..610693cc1f
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/io/svg/svg_mapper.html
@@ -0,0 +1,431 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>svg_mapper</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../svg.html" title="SVG (Scalable Vector Graphics)">
+<link rel="prev" href="svg.html" title="svg">
+<link rel="next" href="../../iterators.html" title="Iterators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="svg.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../svg.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../iterators.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.io.svg.svg_mapper"></a><a class="link" href="svg_mapper.html" title="svg_mapper">svg_mapper</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp126249392"></a>
+Helper class to create SVG maps.
+ </p>
+<h6>
+<a name="geometry.reference.io.svg.svg_mapper.h0"></a>
+ <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.synopsis"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">SameScale</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">svg_mapper</span>
+ <span class="special">:</span> <span class="identifier">noncopyable</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.io.svg.svg_mapper.h1"></a>
+ <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.template_parameter_s_"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ typename Point
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Point type, for input geometries.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ bool SameScale
+ </p>
+ </td>
+<td>
+ <p>
+ true
+ </p>
+ </td>
+<td>
+ <p>
+ Boolean flag indicating if horizontal and vertical scale should
+ be the same. The default value is true
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.io.svg.svg_mapper.h2"></a>
+ <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.constructor_s_"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.constructor_s_">Constructor(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Parameters
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">svg_mapper</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span> <span class="special">&amp;</span> <span class="identifier">stream</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">width</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">height</span><span class="special">,</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">width_height</span> <span class="special">=</span> <span class="string">"width=\"100%\" height=\"100%\""</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructor, initializing the SVG map. Opens and initializes
+ the SVG. Should be called explicitly.
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>std::ostream &amp;</strong></span>: <span class="emphasis"><em>stream</em></span>:
+ Output stream, should be a stream already open
+ </p>
+ <p>
+ <span class="bold"><strong>int</strong></span>: <span class="emphasis"><em>width</em></span>:
+ Width of the SVG map (in SVG pixels)
+ </p>
+ <p>
+ <span class="bold"><strong>int</strong></span>: <span class="emphasis"><em>height</em></span>:
+ Height of the SVG map (in SVG pixels)
+ </p>
+ <p>
+ <span class="bold"><strong>std::string const &amp;</strong></span>:
+ <span class="emphasis"><em>width_height</em></span>: Optional information to
+ increase width and/or height
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">~</span><span class="identifier">svg_mapper</span><span class="special">()</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Destructor, called automatically. Closes the SVG by streaming
+ &lt;/svg&gt;
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.io.svg.svg_mapper.h3"></a>
+ <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.member_function_s_"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.member_function_s_">Member
+ Function(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Parameters
+ </p>
+ </th>
+<th>
+ <p>
+ Returns
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">add</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Adds a geometry to the transformation matrix. After doing this,
+ the specified geometry can be mapped fully into the SVG map.
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Geometry const &amp;</strong></span>: <span class="emphasis"><em>geometry</em></span>:
+ A model of the specified concept
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">map</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">style</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">size</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Maps a geometry into the SVG map using the specified style.
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Geometry const &amp;</strong></span>: <span class="emphasis"><em>geometry</em></span>:
+ A model of the specified concept
+ </p>
+ <p>
+ <span class="bold"><strong>std::string const &amp;</strong></span>:
+ <span class="emphasis"><em>style</em></span>: String containing verbatim SVG
+ style information
+ </p>
+ <p>
+ <span class="bold"><strong>int</strong></span>: <span class="emphasis"><em>size</em></span>:
+ Optional size (used for SVG points) in SVG pixels. For linestrings,
+ specify linewidth in the SVG style information
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">TextPoint</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">text</span><span class="special">(</span><span class="identifier">TextPoint</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">point</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">style</span><span class="special">,</span>
+ <span class="keyword">int</span> <span class="identifier">offset_x</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">offset_y</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">lineheight</span> <span class="special">=</span> <span class="number">10</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Adds a text to the SVG map.
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>TextPoint const &amp;</strong></span>: <span class="emphasis"><em>point</em></span>:
+ Location of the text (in map units)
+ </p>
+ <p>
+ <span class="bold"><strong>std::string const &amp;</strong></span>:
+ <span class="emphasis"><em>s</em></span>: The text itself
+ </p>
+ <p>
+ <span class="bold"><strong>std::string const &amp;</strong></span>:
+ <span class="emphasis"><em>style</em></span>: String containing verbatim SVG
+ style information, of the text
+ </p>
+ <p>
+ <span class="bold"><strong>int</strong></span>: <span class="emphasis"><em>offset_x</em></span>:
+ Offset in SVG pixels, defaults to 0
+ </p>
+ <p>
+ <span class="bold"><strong>int</strong></span>: <span class="emphasis"><em>offset_y</em></span>:
+ Offset in SVG pixels, defaults to 0
+ </p>
+ <p>
+ <span class="bold"><strong>int</strong></span>: <span class="emphasis"><em>lineheight</em></span>:
+ Line height in SVG pixels, in case the text contains
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.io.svg.svg_mapper.h4"></a>
+ <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.header"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">svg</span><span class="special">/</span><span class="identifier">svg_mapper</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.io.svg.svg_mapper.h5"></a>
+ <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.example"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.example">Example</a>
+ </h6>
+<p>
+ Shows the usage of svg_mapper
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">fstream</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="comment">// Specify the basic type</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point_type</span><span class="special">;</span>
+
+ <span class="comment">// Declare some geometries and set their values</span>
+ <span class="identifier">point_type</span> <span class="identifier">a</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">assign_values</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="number">3</span><span class="special">,</span> <span class="number">6</span><span class="special">);</span>
+
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">b</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"POLYGON((0 0,0 7,4 2,2 0,0 0))"</span><span class="special">,</span> <span class="identifier">b</span><span class="special">);</span>
+
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">c</span><span class="special">;</span>
+ <span class="identifier">c</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">point_type</span><span class="special">(</span><span class="number">3</span><span class="special">,</span> <span class="number">4</span><span class="special">));</span>
+ <span class="identifier">c</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">point_type</span><span class="special">(</span><span class="number">4</span><span class="special">,</span> <span class="number">5</span><span class="special">));</span>
+
+ <span class="comment">// Declare a stream and an SVG mapper</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">ofstream</span> <span class="identifier">svg</span><span class="special">(</span><span class="string">"my_map.svg"</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">svg_mapper</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">mapper</span><span class="special">(</span><span class="identifier">svg</span><span class="special">,</span> <span class="number">400</span><span class="special">,</span> <span class="number">400</span><span class="special">);</span>
+
+ <span class="comment">// Add geometries such that all these geometries fit on the map</span>
+ <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">a</span><span class="special">);</span>
+ <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">b</span><span class="special">);</span>
+ <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">c</span><span class="special">);</span>
+
+ <span class="comment">// Draw the geometries on the SVG map, using a specific SVG style</span>
+ <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">map</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="string">"fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:2"</span><span class="special">,</span> <span class="number">5</span><span class="special">);</span>
+ <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">map</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="string">"fill-opacity:0.3;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2"</span><span class="special">);</span>
+ <span class="identifier">mapper</span><span class="special">.</span><span class="identifier">map</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span> <span class="string">"opacity:0.4;fill:none;stroke:rgb(212,0,0);stroke-width:5"</span><span class="special">);</span>
+
+ <span class="comment">// Destructor of map will be called - adding &lt;/svg&gt;</span>
+ <span class="comment">// Destructor of stream will be called, closing the file</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ Output:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../../../img/io/svg_mapper.png" alt="svg_mapper"></span>
+ </p>
+<h6>
+<a name="geometry.reference.io.svg.svg_mapper.h6"></a>
+ <span class="phrase"><a name="geometry.reference.io.svg.svg_mapper.see_also"></a></span><a class="link" href="svg_mapper.html#geometry.reference.io.svg.svg_mapper.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ <a class="link" href="svg.html" title="svg">The SVG manipulator</a>
+ </li></ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="svg.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../svg.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../iterators.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/io/wkt.html b/libs/geometry/doc/html/geometry/reference/io/wkt.html
new file mode 100644
index 0000000000..cb31457eeb
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/io/wkt.html
@@ -0,0 +1,98 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>WKT (Well-Known Text)</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../io.html" title="IO (input/output)">
+<link rel="prev" href="../io.html" title="IO (input/output)">
+<link rel="next" href="wkt/read_wkt.html" title="read_wkt">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../io.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../io.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="wkt/read_wkt.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.io.wkt"></a><a class="link" href="wkt.html" title="WKT (Well-Known Text)">WKT (Well-Known Text)</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="wkt/read_wkt.html">read_wkt</a></span></dt>
+<dt><span class="section"><a href="wkt/wkt.html">wkt</a></span></dt>
+</dl></div>
+<p>
+ WKT is a general markup format in ASCII. It is described in detail on
+ <a href="http://en.wikipedia.org/wiki/Well-known_text" target="_top">Wikipedia</a>
+ </p>
+<p>
+ Boost Geometry supports the common formats (POINT, LINESTRING, POLYGON,
+ MULTIPOINT, MULTILINESTRING, MULTIPOLYGON).
+ </p>
+<p>
+ Because Boost.Geometry also supports Box and Segment geometries, which
+ are not standard OGC geometries, there are some extensions:
+ </p>
+<h6>
+<a name="geometry.reference.io.wkt.h0"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.box"></a></span><a class="link" href="wkt.html#geometry.reference.io.wkt.box">Box</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ can be read from WKT by specifying either a polygon (with 4 points)
+ or a specific BOX string (non OGC)
+ </li>
+<li class="listitem">
+ streamed to WKT as a POLYGON
+ </li>
+</ul></div>
+<h6>
+<a name="geometry.reference.io.wkt.h1"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.segment"></a></span><a class="link" href="wkt.html#geometry.reference.io.wkt.segment">Segment</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ can be read from WKT by specifying either a linestring (with 2 points)
+ or a specific SEGMENT string (non OGC)
+ </li>
+<li class="listitem">
+ streamed to WKT as a LINESTRING
+ </li>
+</ul></div>
+<h6>
+<a name="geometry.reference.io.wkt.h2"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.ring"></a></span><a class="link" href="wkt.html#geometry.reference.io.wkt.ring">Ring</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ can be read from WKT by specifying a polygon (with no holes)
+ </li>
+<li class="listitem">
+ streamed to WKT as POLYGON
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../io.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../io.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="wkt/read_wkt.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/io/wkt/read_wkt.html b/libs/geometry/doc/html/geometry/reference/io/wkt/read_wkt.html
new file mode 100644
index 0000000000..ba1ca130ba
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/io/wkt/read_wkt.html
@@ -0,0 +1,206 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>read_wkt</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../wkt.html" title="WKT (Well-Known Text)">
+<link rel="prev" href="../wkt.html" title="WKT (Well-Known Text)">
+<link rel="next" href="wkt.html" title="wkt">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../wkt.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../wkt.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="wkt.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.io.wkt.read_wkt"></a><a class="link" href="read_wkt.html" title="read_wkt">read_wkt</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp125835008"></a>
+Parses OGC Well-Known Text (WKT (Well-Known Text)) into a geometry (any
+ geometry)
+ </p>
+<h6>
+<a name="geometry.reference.io.wkt.read_wkt.h0"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.read_wkt.synopsis"></a></span><a class="link" href="read_wkt.html#geometry.reference.io.wkt.read_wkt.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">read_wkt</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">wkt</span><span class="special">,</span> <span class="identifier">Geometry</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">)</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.io.wkt.read_wkt.h1"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.read_wkt.parameters"></a></span><a class="link" href="read_wkt.html#geometry.reference.io.wkt.read_wkt.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ std::string const &amp;
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ wkt
+ </p>
+ </td>
+<td>
+ <p>
+ string containing WKT (Well-Known Text)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Geometry &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept output geometry
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.io.wkt.read_wkt.h2"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.read_wkt.header"></a></span><a class="link" href="read_wkt.html#geometry.reference.io.wkt.read_wkt.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">read</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.io.wkt.read_wkt.h3"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.read_wkt.conformance"></a></span><a class="link" href="read_wkt.html#geometry.reference.io.wkt.read_wkt.conformance">Conformance</a>
+ </h6>
+<p>
+ Other libraries refer to this functionality as <span class="bold"><strong>ST_GeomFromText</strong></span>
+ or <span class="bold"><strong>STGeomFromText</strong></span>. That is not done
+ here because Boost.Geometry support more text formats. The name GeomFromText
+ is reserved for future usage, which will then have an indication of the
+ used text format.
+ </p>
+<h6>
+<a name="geometry.reference.io.wkt.read_wkt.h4"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.read_wkt.example"></a></span><a class="link" href="read_wkt.html#geometry.reference.io.wkt.read_wkt.example">Example</a>
+ </h6>
+<p>
+ Shows the usage of read_wkt
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point_type</span><span class="special">;</span>
+
+ <span class="identifier">point_type</span> <span class="identifier">a</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">b</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">c</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">d</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">segment</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">e</span><span class="special">;</span>
+
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"POINT(1 2)"</span><span class="special">,</span> <span class="identifier">a</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"LINESTRING(0 0,2 2,3 1)"</span><span class="special">,</span> <span class="identifier">b</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"POLYGON((0 0,0 7,4 2,2 0,0 0))"</span><span class="special">,</span> <span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"BOX(0 0,3 3)"</span><span class="special">,</span> <span class="identifier">d</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"SEGMENT(1 0,3 4)"</span><span class="special">,</span> <span class="identifier">e</span><span class="special">);</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.io.wkt.read_wkt.h5"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.read_wkt.see_also"></a></span><a class="link" href="read_wkt.html#geometry.reference.io.wkt.read_wkt.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ <a class="link" href="wkt.html" title="wkt">WKT streaming manipulator</a>
+ </li></ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../wkt.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../wkt.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="wkt.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/io/wkt/wkt.html b/libs/geometry/doc/html/geometry/reference/io/wkt/wkt.html
new file mode 100644
index 0000000000..e442bff395
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/io/wkt/wkt.html
@@ -0,0 +1,198 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>wkt</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../wkt.html" title="WKT (Well-Known Text)">
+<link rel="prev" href="read_wkt.html" title="read_wkt">
+<link rel="next" href="../svg.html" title="SVG (Scalable Vector Graphics)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="read_wkt.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../wkt.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../svg.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.io.wkt.wkt"></a><a class="link" href="wkt.html" title="wkt">wkt</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp125997008"></a>
+Main WKT-streaming function.
+ </p>
+<h6>
+<a name="geometry.reference.io.wkt.wkt.h0"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.wkt.synopsis"></a></span><a class="link" href="wkt.html#geometry.reference.io.wkt.wkt.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">&gt;</span>
+<span class="identifier">wkt_manipulator</span><span class="special">&lt;</span><span class="identifier">Geometry</span><span class="special">&gt;</span> <span class="identifier">wkt</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">)</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.io.wkt.wkt.h1"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.wkt.parameters"></a></span><a class="link" href="wkt.html#geometry.reference.io.wkt.wkt.parameters">Parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Concept
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Geometry const &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ Any type fulfilling a Geometry Concept
+ </p>
+ </td>
+<td>
+ <p>
+ geometry
+ </p>
+ </td>
+<td>
+ <p>
+ A model of the specified concept
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.io.wkt.wkt.h2"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.wkt.header"></a></span><a class="link" href="wkt.html#geometry.reference.io.wkt.wkt.header">Header</a>
+ </h6>
+<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">write</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.io.wkt.wkt.h3"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.wkt.conformance"></a></span><a class="link" href="wkt.html#geometry.reference.io.wkt.wkt.conformance">Conformance</a>
+ </h6>
+<p>
+ The function wkt implements function AsText from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
+ Simple Feature Specification</a>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ wkt is not named "AsText" or "as_text" because
+ Boost.Geometry also supports other textformats (svg, dsv)
+ </p></td></tr>
+</table></div>
+<h6>
+<a name="geometry.reference.io.wkt.wkt.h4"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.wkt.example"></a></span><a class="link" href="wkt.html#geometry.reference.io.wkt.wkt.example">Example</a>
+ </h6>
+<p>
+ Shows the usage of wkt
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">geom</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">geom</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point_type</span><span class="special">;</span>
+
+ <span class="identifier">point_type</span> <span class="identifier">point</span> <span class="special">=</span> <span class="identifier">geom</span><span class="special">::</span><span class="identifier">make</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;(</span><span class="number">3</span><span class="special">,</span> <span class="number">6</span><span class="special">);</span>
+ <span class="identifier">geom</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+ <span class="identifier">geom</span><span class="special">::</span><span class="identifier">append</span><span class="special">(</span><span class="identifier">geom</span><span class="special">::</span><span class="identifier">exterior_ring</span><span class="special">(</span><span class="identifier">polygon</span><span class="special">),</span> <span class="identifier">geom</span><span class="special">::</span><span class="identifier">make</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">));</span>
+ <span class="identifier">geom</span><span class="special">::</span><span class="identifier">append</span><span class="special">(</span><span class="identifier">geom</span><span class="special">::</span><span class="identifier">exterior_ring</span><span class="special">(</span><span class="identifier">polygon</span><span class="special">),</span> <span class="identifier">geom</span><span class="special">::</span><span class="identifier">make</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">,</span> <span class="number">4</span><span class="special">));</span>
+ <span class="identifier">geom</span><span class="special">::</span><span class="identifier">append</span><span class="special">(</span><span class="identifier">geom</span><span class="special">::</span><span class="identifier">exterior_ring</span><span class="special">(</span><span class="identifier">polygon</span><span class="special">),</span> <span class="identifier">geom</span><span class="special">::</span><span class="identifier">make</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;(</span><span class="number">4</span><span class="special">,</span> <span class="number">4</span><span class="special">));</span>
+ <span class="identifier">geom</span><span class="special">::</span><span class="identifier">append</span><span class="special">(</span><span class="identifier">geom</span><span class="special">::</span><span class="identifier">exterior_ring</span><span class="special">(</span><span class="identifier">polygon</span><span class="special">),</span> <span class="identifier">geom</span><span class="special">::</span><span class="identifier">make</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;(</span><span class="number">4</span><span class="special">,</span> <span class="number">0</span><span class="special">));</span>
+ <span class="identifier">geom</span><span class="special">::</span><span class="identifier">append</span><span class="special">(</span><span class="identifier">geom</span><span class="special">::</span><span class="identifier">exterior_ring</span><span class="special">(</span><span class="identifier">polygon</span><span class="special">),</span> <span class="identifier">geom</span><span class="special">::</span><span class="identifier">make</span><span class="special">&lt;</span><span class="identifier">point_type</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">));</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">(</span><span class="identifier">point</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">(</span><span class="identifier">polygon</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ Output:
+ </p>
+<pre class="programlisting">POINT(3 6)
+POLYGON((0 0,0 4,4 4,4 0,0 0))
+</pre>
+<h6>
+<a name="geometry.reference.io.wkt.wkt.h5"></a>
+ <span class="phrase"><a name="geometry.reference.io.wkt.wkt.see_also"></a></span><a class="link" href="wkt.html#geometry.reference.io.wkt.wkt.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ <a class="link" href="read_wkt.html" title="read_wkt">Read WKT</a>
+ </li></ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="read_wkt.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../wkt.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../svg.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/iterators.html b/libs/geometry/doc/html/geometry/reference/iterators.html
index f877d063ec..9284774d6b 100644
--- a/libs/geometry/doc/html/geometry/reference/iterators.html
+++ b/libs/geometry/doc/html/geometry/reference/iterators.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Iterators</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="exceptions/centroid_exception.html" title="centroid_exception">
+<link rel="prev" href="io/svg/svg_mapper.html" title="svg_mapper">
<link rel="next" href="iterators/closing_iterator.html" title="closing_iterator">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,21 +20,21 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="exceptions/centroid_exception.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="iterators/closing_iterator.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="io/svg/svg_mapper.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="iterators/closing_iterator.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.iterators"></a><a class="link" href="iterators.html" title="Iterators">Iterators</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="iterators/closing_iterator.html">closing_iterator</a></span></dt>
<dt><span class="section"><a href="iterators/ever_circling_iterator.html">ever_circling_iterator</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -42,7 +42,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="exceptions/centroid_exception.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="iterators/closing_iterator.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="io/svg/svg_mapper.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="iterators/closing_iterator.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/iterators/closing_iterator.html b/libs/geometry/doc/html/geometry/reference/iterators/closing_iterator.html
index e4c84cbd37..ba0c89f622 100644
--- a/libs/geometry/doc/html/geometry/reference/iterators/closing_iterator.html
+++ b/libs/geometry/doc/html/geometry/reference/iterators/closing_iterator.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>closing_iterator</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../iterators.html" title="Iterators">
<link rel="prev" href="../iterators.html" title="Iterators">
@@ -27,18 +27,19 @@
<a name="geometry.reference.iterators.closing_iterator"></a><a class="link" href="closing_iterator.html" title="closing_iterator">closing_iterator</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id947025"></a>
+ <a class="indexterm" name="idp126551392"></a>
Iterator which iterates through a range, but adds first element at end
of the range.
</p>
<h6>
<a name="geometry.reference.iterators.closing_iterator.h0"></a>
- <span><a name="geometry.reference.iterators.closing_iterator.synopsis"></a></span><a class="link" href="closing_iterator.html#geometry.reference.iterators.closing_iterator.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.iterators.closing_iterator.synopsis"></a></span><a class="link" href="closing_iterator.html#geometry.reference.iterators.closing_iterator.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Range</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">closing_iterator</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_facade</span><span class="special">&lt;</span> <span class="identifier">closing_iterator</span><span class="special">&lt;</span> <span class="identifier">Range</span> <span class="special">&gt;,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range_value</span><span class="special">&lt;</span> <span class="identifier">Range</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="keyword">const</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">random_access_traversal_tag</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -47,7 +48,7 @@ Iterator which iterates through a range, but adds first element at end
</p>
<h6>
<a name="geometry.reference.iterators.closing_iterator.h1"></a>
- <span><a name="geometry.reference.iterators.closing_iterator.template_parameter_s_"></a></span><a class="link" href="closing_iterator.html#geometry.reference.iterators.closing_iterator.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.iterators.closing_iterator.template_parameter_s_"></a></span><a class="link" href="closing_iterator.html#geometry.reference.iterators.closing_iterator.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -82,7 +83,7 @@ Iterator which iterates through a range, but adds first element at end
</table></div>
<h6>
<a name="geometry.reference.iterators.closing_iterator.h2"></a>
- <span><a name="geometry.reference.iterators.closing_iterator.constructor_s_"></a></span><a class="link" href="closing_iterator.html#geometry.reference.iterators.closing_iterator.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.iterators.closing_iterator.constructor_s_"></a></span><a class="link" href="closing_iterator.html#geometry.reference.iterators.closing_iterator.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -169,7 +170,7 @@ Iterator which iterates through a range, but adds first element at end
</table></div>
<h6>
<a name="geometry.reference.iterators.closing_iterator.h3"></a>
- <span><a name="geometry.reference.iterators.closing_iterator.member_function_s_"></a></span><a class="link" href="closing_iterator.html#geometry.reference.iterators.closing_iterator.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.iterators.closing_iterator.member_function_s_"></a></span><a class="link" href="closing_iterator.html#geometry.reference.iterators.closing_iterator.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -177,6 +178,7 @@ Iterator which iterates through a range, but adds first element at end
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -216,11 +218,13 @@ Iterator which iterates through a range, but adds first element at end
<span class="emphasis"><em>source</em></span>:
</p>
</td>
+<td>
+ </td>
</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.iterators.closing_iterator.h4"></a>
- <span><a name="geometry.reference.iterators.closing_iterator.header"></a></span><a class="link" href="closing_iterator.html#geometry.reference.iterators.closing_iterator.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.iterators.closing_iterator.header"></a></span><a class="link" href="closing_iterator.html#geometry.reference.iterators.closing_iterator.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">iterators</span><span class="special">/</span><span class="identifier">closing_iterator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -228,8 +232,8 @@ Iterator which iterates through a range, but adds first element at end
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/iterators/ever_circling_iterator.html b/libs/geometry/doc/html/geometry/reference/iterators/ever_circling_iterator.html
index 480376ce16..c7a5bacbfb 100644
--- a/libs/geometry/doc/html/geometry/reference/iterators/ever_circling_iterator.html
+++ b/libs/geometry/doc/html/geometry/reference/iterators/ever_circling_iterator.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>ever_circling_iterator</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../iterators.html" title="Iterators">
<link rel="prev" href="closing_iterator.html" title="closing_iterator">
@@ -27,17 +27,18 @@
<a name="geometry.reference.iterators.ever_circling_iterator"></a><a class="link" href="ever_circling_iterator.html" title="ever_circling_iterator">ever_circling_iterator</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id947764"></a>
+ <a class="indexterm" name="idp126652128"></a>
Iterator which ever circles through a range.
</p>
<h6>
<a name="geometry.reference.iterators.ever_circling_iterator.h0"></a>
- <span><a name="geometry.reference.iterators.ever_circling_iterator.synopsis"></a></span><a class="link" href="ever_circling_iterator.html#geometry.reference.iterators.ever_circling_iterator.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.iterators.ever_circling_iterator.synopsis"></a></span><a class="link" href="ever_circling_iterator.html#geometry.reference.iterators.ever_circling_iterator.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">ever_circling_iterator</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">iterators</span><span class="special">::</span><span class="identifier">iterator_base</span><span class="special">&lt;</span> <span class="identifier">ever_circling_iterator</span><span class="special">&lt;</span> <span class="identifier">Iterator</span> <span class="special">&gt;,</span> <span class="identifier">Iterator</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -46,7 +47,7 @@ Iterator which ever circles through a range.
</p>
<h6>
<a name="geometry.reference.iterators.ever_circling_iterator.h1"></a>
- <span><a name="geometry.reference.iterators.ever_circling_iterator.template_parameter_s_"></a></span><a class="link" href="ever_circling_iterator.html#geometry.reference.iterators.ever_circling_iterator.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.iterators.ever_circling_iterator.template_parameter_s_"></a></span><a class="link" href="ever_circling_iterator.html#geometry.reference.iterators.ever_circling_iterator.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -81,7 +82,7 @@ Iterator which ever circles through a range.
</table></div>
<h6>
<a name="geometry.reference.iterators.ever_circling_iterator.h2"></a>
- <span><a name="geometry.reference.iterators.ever_circling_iterator.constructor_s_"></a></span><a class="link" href="ever_circling_iterator.html#geometry.reference.iterators.ever_circling_iterator.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.iterators.ever_circling_iterator.constructor_s_"></a></span><a class="link" href="ever_circling_iterator.html#geometry.reference.iterators.ever_circling_iterator.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -133,7 +134,8 @@ Iterator which ever circles through a range.
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">ever_circling_iterator</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">begin</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">end</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">start</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">skip_first</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">)</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">ever_circling_iterator</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">begin</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">end</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">start</span><span class="special">,</span>
+ <span class="keyword">bool</span> <span class="identifier">skip_first</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -158,7 +160,7 @@ Iterator which ever circles through a range.
</table></div>
<h6>
<a name="geometry.reference.iterators.ever_circling_iterator.h3"></a>
- <span><a name="geometry.reference.iterators.ever_circling_iterator.member_function_s_"></a></span><a class="link" href="ever_circling_iterator.html#geometry.reference.iterators.ever_circling_iterator.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.iterators.ever_circling_iterator.member_function_s_"></a></span><a class="link" href="ever_circling_iterator.html#geometry.reference.iterators.ever_circling_iterator.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -166,6 +168,7 @@ Iterator which ever circles through a range.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -204,11 +207,13 @@ Iterator which ever circles through a range.
<span class="bold"><strong>Iterator</strong></span>: <span class="emphasis"><em>it</em></span>:
</p>
</td>
+<td>
+ </td>
</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.iterators.ever_circling_iterator.h4"></a>
- <span><a name="geometry.reference.iterators.ever_circling_iterator.header"></a></span><a class="link" href="ever_circling_iterator.html#geometry.reference.iterators.ever_circling_iterator.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.iterators.ever_circling_iterator.header"></a></span><a class="link" href="ever_circling_iterator.html#geometry.reference.iterators.ever_circling_iterator.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">iterators</span><span class="special">/</span><span class="identifier">ever_circling_iterator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -216,8 +221,8 @@ Iterator which ever circles through a range.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/models.html b/libs/geometry/doc/html/geometry/reference/models.html
index fe0d06cef3..cee230d7ec 100644
--- a/libs/geometry/doc/html/geometry/reference/models.html
+++ b/libs/geometry/doc/html/geometry/reference/models.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Models</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="iterators/ever_circling_iterator.html" title="ever_circling_iterator">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.models"></a><a class="link" href="models.html" title="Models">Models</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="models/model_point.html">model::point</a></span></dt>
<dt><span class="section"><a href="models/model_d2_point_xy.html">model::d2::point_xy</a></span></dt>
<dt><span class="section"><a href="models/model_linestring.html">model::linestring</a></span></dt>
@@ -42,8 +42,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_box.html b/libs/geometry/doc/html/geometry/reference/models/model_box.html
index 01aeb278d2..b82f304e65 100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_box.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_box.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>model::box</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../models.html" title="Models">
<link rel="prev" href="model_multi_polygon.html" title="model::multi_polygon">
@@ -27,12 +27,12 @@
<a name="geometry.reference.models.model_box"></a><a class="link" href="model_box.html" title="model::box">model::box</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id955141"></a><a class="indexterm" name="id955146"></a>
+ <a class="indexterm" name="idp127583696"></a><a class="indexterm" name="idp127584384"></a>
Class box: defines a box made of two describing points.
</p>
<h6>
<a name="geometry.reference.models.model_box.h0"></a>
- <span><a name="geometry.reference.models.model_box.description"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.models.model_box.description"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.description">Description</a>
</h6>
<p>
Box is always described by a min_corner() and a max_corner() point. If
@@ -40,7 +40,7 @@ Class box: defines a box made of two describing points.
</p>
<h6>
<a name="geometry.reference.models.model_box.h1"></a>
- <span><a name="geometry.reference.models.model_box.synopsis"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.models.model_box.synopsis"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Class box: defines a box made of two describing points.
</p>
<h6>
<a name="geometry.reference.models.model_box.h2"></a>
- <span><a name="geometry.reference.models.model_box.template_parameter_s_"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.models.model_box.template_parameter_s_"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -92,7 +92,7 @@ Class box: defines a box made of two describing points.
</table></div>
<h6>
<a name="geometry.reference.models.model_box.h3"></a>
- <span><a name="geometry.reference.models.model_box.constructor_s_"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.models.model_box.constructor_s_"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -158,7 +158,7 @@ Class box: defines a box made of two describing points.
</table></div>
<h6>
<a name="geometry.reference.models.model_box.h4"></a>
- <span><a name="geometry.reference.models.model_box.member_function_s_"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.models.model_box.member_function_s_"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -166,6 +166,7 @@ Class box: defines a box made of two describing points.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -202,6 +203,8 @@ Class box: defines a box made of two describing points.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -215,6 +218,8 @@ Class box: defines a box made of two describing points.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -228,6 +233,8 @@ Class box: defines a box made of two describing points.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -241,12 +248,14 @@ Class box: defines a box made of two describing points.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.models.model_box.h5"></a>
- <span><a name="geometry.reference.models.model_box.header"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.models.model_box.header"></a></span><a class="link" href="model_box.html#geometry.reference.models.model_box.header">Header</a>
</h6>
<p>
Either
@@ -263,8 +272,8 @@ Class box: defines a box made of two describing points.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_d2_point_xy.html b/libs/geometry/doc/html/geometry/reference/models/model_d2_point_xy.html
index 7bad9582d7..9df71d05a2 100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_d2_point_xy.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_d2_point_xy.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>model::d2::point_xy</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../models.html" title="Models">
<link rel="prev" href="model_point.html" title="model::point">
@@ -27,19 +27,19 @@
<a name="geometry.reference.models.model_d2_point_xy"></a><a class="link" href="model_d2_point_xy.html" title="model::d2::point_xy">model::d2::point_xy</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id950490"></a><a class="indexterm" name="id950495"></a><a class="indexterm" name="id950500"></a>
+ <a class="indexterm" name="idp126985152"></a><a class="indexterm" name="idp126985840"></a><a class="indexterm" name="idp126986496"></a>
2D point in Cartesian coordinate system
</p>
<h6>
<a name="geometry.reference.models.model_d2_point_xy.h0"></a>
- <span><a name="geometry.reference.models.model_d2_point_xy.model_of"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.model_of">Model of</a>
+ <span class="phrase"><a name="geometry.reference.models.model_d2_point_xy.model_of"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.model_of">Model of</a>
</h6>
<p>
<a class="link" href="../concepts/concept_point.html" title="Point Concept">Point Concept</a>
</p>
<h6>
<a name="geometry.reference.models.model_d2_point_xy.h1"></a>
- <span><a name="geometry.reference.models.model_d2_point_xy.synopsis"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.models.model_d2_point_xy.synopsis"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@
</p>
<h6>
<a name="geometry.reference.models.model_d2_point_xy.h2"></a>
- <span><a name="geometry.reference.models.model_d2_point_xy.template_parameter_s_"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.models.model_d2_point_xy.template_parameter_s_"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -116,7 +116,7 @@
</table></div>
<h6>
<a name="geometry.reference.models.model_d2_point_xy.h3"></a>
- <span><a name="geometry.reference.models.model_d2_point_xy.constructor_s_"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.models.model_d2_point_xy.constructor_s_"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -186,7 +186,7 @@
</table></div>
<h6>
<a name="geometry.reference.models.model_d2_point_xy.h4"></a>
- <span><a name="geometry.reference.models.model_d2_point_xy.member_function_s_"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.models.model_d2_point_xy.member_function_s_"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -194,6 +194,7 @@
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -233,6 +234,8 @@
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -249,6 +252,8 @@
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -269,6 +274,8 @@
<span class="emphasis"><em>v</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -289,19 +296,21 @@
<span class="emphasis"><em>v</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.models.model_d2_point_xy.h5"></a>
- <span><a name="geometry.reference.models.model_d2_point_xy.header"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.models.model_d2_point_xy.header"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.models.model_d2_point_xy.h6"></a>
- <span><a name="geometry.reference.models.model_d2_point_xy.notes"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.notes">Notes</a>
+ <span class="phrase"><a name="geometry.reference.models.model_d2_point_xy.notes"></a></span><a class="link" href="model_d2_point_xy.html#geometry.reference.models.model_d2_point_xy.notes">Notes</a>
</h6>
<div class="note"><table border="0" summary="Note">
<tr>
@@ -318,8 +327,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_linestring.html b/libs/geometry/doc/html/geometry/reference/models/model_linestring.html
index edea36c20d..1db3806f8e 100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_linestring.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>model::linestring</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../models.html" title="Models">
<link rel="prev" href="model_d2_point_xy.html" title="model::d2::point_xy">
@@ -27,12 +27,12 @@
<a name="geometry.reference.models.model_linestring"></a><a class="link" href="model_linestring.html" title="model::linestring">model::linestring</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id951557"></a><a class="indexterm" name="id951562"></a>
+ <a class="indexterm" name="idp127112112"></a><a class="indexterm" name="idp127112800"></a>
A linestring (named so by OGC) is a collection (default a vector) of points.
</p>
<h6>
<a name="geometry.reference.models.model_linestring.h0"></a>
- <span><a name="geometry.reference.models.model_linestring.model_of"></a></span><a class="link" href="model_linestring.html#geometry.reference.models.model_linestring.model_of">Model of</a>
+ <span class="phrase"><a name="geometry.reference.models.model_linestring.model_of"></a></span><a class="link" href="model_linestring.html#geometry.reference.models.model_linestring.model_of">Model of</a>
</h6>
<p>
<a class="link" href="../concepts/concept_linestring.html" title="Linestring Concept">Linestring
@@ -40,12 +40,13 @@ A linestring (named so by OGC) is a collection (default a vector) of points.
</p>
<h6>
<a name="geometry.reference.models.model_linestring.h1"></a>
- <span><a name="geometry.reference.models.model_linestring.synopsis"></a></span><a class="link" href="model_linestring.html#geometry.reference.models.model_linestring.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.models.model_linestring.synopsis"></a></span><a class="link" href="model_linestring.html#geometry.reference.models.model_linestring.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">Container</span><span class="special">&lt;</span> <span class="identifier">Point</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&lt;</span> <span class="identifier">Point</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -54,7 +55,7 @@ A linestring (named so by OGC) is a collection (default a vector) of points.
</p>
<h6>
<a name="geometry.reference.models.model_linestring.h2"></a>
- <span><a name="geometry.reference.models.model_linestring.template_parameter_s_"></a></span><a class="link" href="model_linestring.html#geometry.reference.models.model_linestring.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.models.model_linestring.template_parameter_s_"></a></span><a class="link" href="model_linestring.html#geometry.reference.models.model_linestring.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -133,7 +134,7 @@ A linestring (named so by OGC) is a collection (default a vector) of points.
</table></div>
<h6>
<a name="geometry.reference.models.model_linestring.h3"></a>
- <span><a name="geometry.reference.models.model_linestring.constructor_s_"></a></span><a class="link" href="model_linestring.html#geometry.reference.models.model_linestring.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.models.model_linestring.constructor_s_"></a></span><a class="link" href="model_linestring.html#geometry.reference.models.model_linestring.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -202,7 +203,7 @@ A linestring (named so by OGC) is a collection (default a vector) of points.
</table></div>
<h6>
<a name="geometry.reference.models.model_linestring.h4"></a>
- <span><a name="geometry.reference.models.model_linestring.header"></a></span><a class="link" href="model_linestring.html#geometry.reference.models.model_linestring.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.models.model_linestring.header"></a></span><a class="link" href="model_linestring.html#geometry.reference.models.model_linestring.header">Header</a>
</h6>
<p>
Either
@@ -219,8 +220,8 @@ A linestring (named so by OGC) is a collection (default a vector) of points.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_multi_linestring.html b/libs/geometry/doc/html/geometry/reference/models/model_multi_linestring.html
index 341bdd8e4c..7d72092d29 100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_multi_linestring.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_multi_linestring.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>model::multi_linestring</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../models.html" title="Models">
<link rel="prev" href="model_multi_point.html" title="model::multi_point">
@@ -27,12 +27,12 @@
<a name="geometry.reference.models.model_multi_linestring"></a><a class="link" href="model_multi_linestring.html" title="model::multi_linestring">model::multi_linestring</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id954115"></a><a class="indexterm" name="id954120"></a>
+ <a class="indexterm" name="idp127435584"></a><a class="indexterm" name="idp127436272"></a>
multi_line, a collection of linestring
</p>
<h6>
<a name="geometry.reference.models.model_multi_linestring.h0"></a>
- <span><a name="geometry.reference.models.model_multi_linestring.description"></a></span><a class="link" href="model_multi_linestring.html#geometry.reference.models.model_multi_linestring.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.models.model_multi_linestring.description"></a></span><a class="link" href="model_multi_linestring.html#geometry.reference.models.model_multi_linestring.description">Description</a>
</h6>
<p>
Multi-linestring can be used to group lines belonging to each other, e.g.
@@ -40,7 +40,7 @@ multi_line, a collection of linestring
</p>
<h6>
<a name="geometry.reference.models.model_multi_linestring.h1"></a>
- <span><a name="geometry.reference.models.model_multi_linestring.model_of"></a></span><a class="link" href="model_multi_linestring.html#geometry.reference.models.model_multi_linestring.model_of">Model
+ <span class="phrase"><a name="geometry.reference.models.model_multi_linestring.model_of"></a></span><a class="link" href="model_multi_linestring.html#geometry.reference.models.model_multi_linestring.model_of">Model
of</a>
</h6>
<p>
@@ -49,12 +49,13 @@ multi_line, a collection of linestring
</p>
<h6>
<a name="geometry.reference.models.model_multi_linestring.h2"></a>
- <span><a name="geometry.reference.models.model_multi_linestring.synopsis"></a></span><a class="link" href="model_multi_linestring.html#geometry.reference.models.model_multi_linestring.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.models.model_multi_linestring.synopsis"></a></span><a class="link" href="model_multi_linestring.html#geometry.reference.models.model_multi_linestring.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">LineString</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_linestring</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">Container</span><span class="special">&lt;</span> <span class="identifier">LineString</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&lt;</span> <span class="identifier">LineString</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -63,7 +64,7 @@ multi_line, a collection of linestring
</p>
<h6>
<a name="geometry.reference.models.model_multi_linestring.h3"></a>
- <span><a name="geometry.reference.models.model_multi_linestring.template_parameter_s_"></a></span><a class="link" href="model_multi_linestring.html#geometry.reference.models.model_multi_linestring.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.models.model_multi_linestring.template_parameter_s_"></a></span><a class="link" href="model_multi_linestring.html#geometry.reference.models.model_multi_linestring.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -133,16 +134,25 @@ multi_line, a collection of linestring
</table></div>
<h6>
<a name="geometry.reference.models.model_multi_linestring.h4"></a>
- <span><a name="geometry.reference.models.model_multi_linestring.header"></a></span><a class="link" href="model_multi_linestring.html#geometry.reference.models.model_multi_linestring.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.models.model_multi_linestring.header"></a></span><a class="link" href="model_multi_linestring.html#geometry.reference.models.model_multi_linestring.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_multi_point.html b/libs/geometry/doc/html/geometry/reference/models/model_multi_point.html
index 7020d560ba..5ec76a62c8 100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_multi_point.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_multi_point.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>model::multi_point</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../models.html" title="Models">
<link rel="prev" href="model_polygon.html" title="model::polygon">
@@ -27,12 +27,12 @@
<a name="geometry.reference.models.model_multi_point"></a><a class="link" href="model_multi_point.html" title="model::multi_point">model::multi_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id953403"></a><a class="indexterm" name="id953408"></a>
+ <a class="indexterm" name="idp127337856"></a><a class="indexterm" name="idp127338544"></a>
multi_point, a collection of points
</p>
<h6>
<a name="geometry.reference.models.model_multi_point.h0"></a>
- <span><a name="geometry.reference.models.model_multi_point.model_of"></a></span><a class="link" href="model_multi_point.html#geometry.reference.models.model_multi_point.model_of">Model of</a>
+ <span class="phrase"><a name="geometry.reference.models.model_multi_point.model_of"></a></span><a class="link" href="model_multi_point.html#geometry.reference.models.model_multi_point.model_of">Model of</a>
</h6>
<p>
<a class="link" href="../concepts/concept_multi_point.html" title="MultiPoint Concept">MultiPoint
@@ -40,12 +40,13 @@ multi_point, a collection of points
</p>
<h6>
<a name="geometry.reference.models.model_multi_point.h1"></a>
- <span><a name="geometry.reference.models.model_multi_point.synopsis"></a></span><a class="link" href="model_multi_point.html#geometry.reference.models.model_multi_point.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.models.model_multi_point.synopsis"></a></span><a class="link" href="model_multi_point.html#geometry.reference.models.model_multi_point.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_point</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">Container</span><span class="special">&lt;</span> <span class="identifier">Point</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&lt;</span> <span class="identifier">Point</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -54,7 +55,7 @@ multi_point, a collection of points
</p>
<h6>
<a name="geometry.reference.models.model_multi_point.h2"></a>
- <span><a name="geometry.reference.models.model_multi_point.template_parameter_s_"></a></span><a class="link" href="model_multi_point.html#geometry.reference.models.model_multi_point.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.models.model_multi_point.template_parameter_s_"></a></span><a class="link" href="model_multi_point.html#geometry.reference.models.model_multi_point.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -133,7 +134,7 @@ multi_point, a collection of points
</table></div>
<h6>
<a name="geometry.reference.models.model_multi_point.h3"></a>
- <span><a name="geometry.reference.models.model_multi_point.constructor_s_"></a></span><a class="link" href="model_multi_point.html#geometry.reference.models.model_multi_point.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.models.model_multi_point.constructor_s_"></a></span><a class="link" href="model_multi_point.html#geometry.reference.models.model_multi_point.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -202,16 +203,25 @@ multi_point, a collection of points
</table></div>
<h6>
<a name="geometry.reference.models.model_multi_point.h4"></a>
- <span><a name="geometry.reference.models.model_multi_point.header"></a></span><a class="link" href="model_multi_point.html#geometry.reference.models.model_multi_point.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.models.model_multi_point.header"></a></span><a class="link" href="model_multi_point.html#geometry.reference.models.model_multi_point.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_multi_polygon.html b/libs/geometry/doc/html/geometry/reference/models/model_multi_polygon.html
index 4484974521..0336245ffb 100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_multi_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_multi_polygon.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>model::multi_polygon</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../models.html" title="Models">
<link rel="prev" href="model_multi_linestring.html" title="model::multi_linestring">
@@ -27,12 +27,12 @@
<a name="geometry.reference.models.model_multi_polygon"></a><a class="link" href="model_multi_polygon.html" title="model::multi_polygon">model::multi_polygon</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id954630"></a><a class="indexterm" name="id954634"></a>
+ <a class="indexterm" name="idp127509728"></a><a class="indexterm" name="idp127510416"></a>
multi_polygon, a collection of polygons
</p>
<h6>
<a name="geometry.reference.models.model_multi_polygon.h0"></a>
- <span><a name="geometry.reference.models.model_multi_polygon.description"></a></span><a class="link" href="model_multi_polygon.html#geometry.reference.models.model_multi_polygon.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.models.model_multi_polygon.description"></a></span><a class="link" href="model_multi_polygon.html#geometry.reference.models.model_multi_polygon.description">Description</a>
</h6>
<p>
Multi-polygon can be used to group polygons belonging to each other, e.g.
@@ -40,7 +40,7 @@ multi_polygon, a collection of polygons
</p>
<h6>
<a name="geometry.reference.models.model_multi_polygon.h1"></a>
- <span><a name="geometry.reference.models.model_multi_polygon.model_of"></a></span><a class="link" href="model_multi_polygon.html#geometry.reference.models.model_multi_polygon.model_of">Model
+ <span class="phrase"><a name="geometry.reference.models.model_multi_polygon.model_of"></a></span><a class="link" href="model_multi_polygon.html#geometry.reference.models.model_multi_polygon.model_of">Model
of</a>
</h6>
<p>
@@ -49,12 +49,13 @@ multi_polygon, a collection of polygons
</p>
<h6>
<a name="geometry.reference.models.model_multi_polygon.h2"></a>
- <span><a name="geometry.reference.models.model_multi_polygon.synopsis"></a></span><a class="link" href="model_multi_polygon.html#geometry.reference.models.model_multi_polygon.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.models.model_multi_polygon.synopsis"></a></span><a class="link" href="model_multi_polygon.html#geometry.reference.models.model_multi_polygon.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Polygon</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">Container</span><span class="special">&lt;</span> <span class="identifier">Polygon</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&lt;</span> <span class="identifier">Polygon</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -63,7 +64,7 @@ multi_polygon, a collection of polygons
</p>
<h6>
<a name="geometry.reference.models.model_multi_polygon.h3"></a>
- <span><a name="geometry.reference.models.model_multi_polygon.template_parameter_s_"></a></span><a class="link" href="model_multi_polygon.html#geometry.reference.models.model_multi_polygon.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.models.model_multi_polygon.template_parameter_s_"></a></span><a class="link" href="model_multi_polygon.html#geometry.reference.models.model_multi_polygon.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -133,16 +134,25 @@ multi_polygon, a collection of polygons
</table></div>
<h6>
<a name="geometry.reference.models.model_multi_polygon.h4"></a>
- <span><a name="geometry.reference.models.model_multi_polygon.header"></a></span><a class="link" href="model_multi_polygon.html#geometry.reference.models.model_multi_polygon.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.models.model_multi_polygon.header"></a></span><a class="link" href="model_multi_polygon.html#geometry.reference.models.model_multi_polygon.header">Header</a>
</h6>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">multi_polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_point.html b/libs/geometry/doc/html/geometry/reference/models/model_point.html
index 7418047236..7fcc931c31 100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_point.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_point.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>model::point</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../models.html" title="Models">
<link rel="prev" href="../models.html" title="Models">
@@ -27,12 +27,12 @@
<a name="geometry.reference.models.model_point"></a><a class="link" href="model_point.html" title="model::point">model::point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id948552"></a><a class="indexterm" name="id948557"></a>
+ <a class="indexterm" name="idp126753856"></a><a class="indexterm" name="idp126754544"></a>
Basic point class, having coordinates defined in a neutral way.
</p>
<h6>
<a name="geometry.reference.models.model_point.h0"></a>
- <span><a name="geometry.reference.models.model_point.description"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.models.model_point.description"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.description">Description</a>
</h6>
<p>
Defines a neutral point class, fulfilling the Point Concept. Library users
@@ -43,7 +43,7 @@ Basic point class, having coordinates defined in a neutral way.
</p>
<h6>
<a name="geometry.reference.models.model_point.h1"></a>
- <span><a name="geometry.reference.models.model_point.model_of"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.model_of">Model
+ <span class="phrase"><a name="geometry.reference.models.model_point.model_of"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.model_of">Model
of</a>
</h6>
<p>
@@ -51,7 +51,7 @@ Basic point class, having coordinates defined in a neutral way.
</p>
<h6>
<a name="geometry.reference.models.model_point.h2"></a>
- <span><a name="geometry.reference.models.model_point.synopsis"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.models.model_point.synopsis"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -65,7 +65,7 @@ Basic point class, having coordinates defined in a neutral way.
</p>
<h6>
<a name="geometry.reference.models.model_point.h3"></a>
- <span><a name="geometry.reference.models.model_point.template_parameter_s_"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.models.model_point.template_parameter_s_"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -126,7 +126,7 @@ Basic point class, having coordinates defined in a neutral way.
</table></div>
<h6>
<a name="geometry.reference.models.model_point.h4"></a>
- <span><a name="geometry.reference.models.model_point.constructor_s_"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.models.model_point.constructor_s_"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -200,7 +200,7 @@ Basic point class, having coordinates defined in a neutral way.
</table></div>
<h6>
<a name="geometry.reference.models.model_point.h5"></a>
- <span><a name="geometry.reference.models.model_point.member_function_s_"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.models.model_point.member_function_s_"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -208,6 +208,7 @@ Basic point class, having coordinates defined in a neutral way.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -274,12 +275,14 @@ Basic point class, having coordinates defined in a neutral way.
<span class="emphasis"><em>value</em></span>: value to set
</p>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.models.model_point.h6"></a>
- <span><a name="geometry.reference.models.model_point.header"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.models.model_point.header"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.header">Header</a>
</h6>
<p>
Either
@@ -295,7 +298,7 @@ Basic point class, having coordinates defined in a neutral way.
</p>
<h6>
<a name="geometry.reference.models.model_point.h7"></a>
- <span><a name="geometry.reference.models.model_point.examples"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.examples">Examples</a>
+ <span class="phrase"><a name="geometry.reference.models.model_point.examples"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.examples">Examples</a>
</h6>
<p>
Declaration and use of the Boost.Geometry model::point, modelling the Point
@@ -355,7 +358,7 @@ Basic point class, having coordinates defined in a neutral way.
</pre>
<h6>
<a name="geometry.reference.models.model_point.h8"></a>
- <span><a name="geometry.reference.models.model_point.notes"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.notes">Notes</a>
+ <span class="phrase"><a name="geometry.reference.models.model_point.notes"></a></span><a class="link" href="model_point.html#geometry.reference.models.model_point.notes">Notes</a>
</h6>
<div class="note"><table border="0" summary="Note">
<tr>
@@ -372,8 +375,8 @@ Basic point class, having coordinates defined in a neutral way.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_polygon.html b/libs/geometry/doc/html/geometry/reference/models/model_polygon.html
index 8bd82887e8..aa04a6c486 100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_polygon.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_polygon.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>model::polygon</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../models.html" title="Models">
<link rel="prev" href="model_linestring.html" title="model::linestring">
@@ -27,12 +27,12 @@
<a name="geometry.reference.models.model_polygon"></a><a class="link" href="model_polygon.html" title="model::polygon">model::polygon</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id952331"></a><a class="indexterm" name="id952336"></a>
+ <a class="indexterm" name="idp127209824"></a><a class="indexterm" name="idp127210512"></a>
The polygon contains an outer ring and zero or more inner rings.
</p>
<h6>
<a name="geometry.reference.models.model_polygon.h0"></a>
- <span><a name="geometry.reference.models.model_polygon.model_of"></a></span><a class="link" href="model_polygon.html#geometry.reference.models.model_polygon.model_of">Model
+ <span class="phrase"><a name="geometry.reference.models.model_polygon.model_of"></a></span><a class="link" href="model_polygon.html#geometry.reference.models.model_polygon.model_of">Model
of</a>
</h6>
<p>
@@ -40,11 +40,12 @@ The polygon contains an outer ring and zero or more inner rings.
</p>
<h6>
<a name="geometry.reference.models.model_polygon.h1"></a>
- <span><a name="geometry.reference.models.model_polygon.synopsis"></a></span><a class="link" href="model_polygon.html#geometry.reference.models.model_polygon.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.models.model_polygon.synopsis"></a></span><a class="link" href="model_polygon.html#geometry.reference.models.model_polygon.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">ClockWise</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">Closed</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">PointList</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">RingList</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">PointAlloc</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">RingAlloc</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">ClockWise</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">Closed</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">PointList</span><span class="special">,</span>
+ <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">RingList</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">PointAlloc</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">RingAlloc</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span>
<span class="special">{</span>
<span class="comment">// ...</span>
@@ -54,7 +55,7 @@ The polygon contains an outer ring and zero or more inner rings.
</p>
<h6>
<a name="geometry.reference.models.model_polygon.h2"></a>
- <span><a name="geometry.reference.models.model_polygon.template_parameter_s_"></a></span><a class="link" href="model_polygon.html#geometry.reference.models.model_polygon.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.models.model_polygon.template_parameter_s_"></a></span><a class="link" href="model_polygon.html#geometry.reference.models.model_polygon.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -204,7 +205,7 @@ The polygon contains an outer ring and zero or more inner rings.
</table></div>
<h6>
<a name="geometry.reference.models.model_polygon.h3"></a>
- <span><a name="geometry.reference.models.model_polygon.member_function_s_"></a></span><a class="link" href="model_polygon.html#geometry.reference.models.model_polygon.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.models.model_polygon.member_function_s_"></a></span><a class="link" href="model_polygon.html#geometry.reference.models.model_polygon.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -212,6 +213,7 @@ The polygon contains an outer ring and zero or more inner rings.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -248,6 +250,8 @@ The polygon contains an outer ring and zero or more inner rings.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -261,6 +265,8 @@ The polygon contains an outer ring and zero or more inner rings.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -274,6 +280,8 @@ The polygon contains an outer ring and zero or more inner rings.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -287,6 +295,8 @@ The polygon contains an outer ring and zero or more inner rings.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -303,12 +313,14 @@ The polygon contains an outer ring and zero or more inner rings.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.models.model_polygon.h4"></a>
- <span><a name="geometry.reference.models.model_polygon.header"></a></span><a class="link" href="model_polygon.html#geometry.reference.models.model_polygon.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.models.model_polygon.header"></a></span><a class="link" href="model_polygon.html#geometry.reference.models.model_polygon.header">Header</a>
</h6>
<p>
Either
@@ -325,8 +337,8 @@ The polygon contains an outer ring and zero or more inner rings.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_referring_segment.html b/libs/geometry/doc/html/geometry/reference/models/model_referring_segment.html
index ef8d786b26..2fd806e029 100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_referring_segment.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_referring_segment.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>model::referring_segment</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../models.html" title="Models">
<link rel="prev" href="model_segment.html" title="model::segment">
-<link rel="next" href="../strategies.html" title="Strategies">
+<link rel="next" href="../spatial_indexes.html" title="Spatial Indexes">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="model_segment.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../models.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../strategies.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="model_segment.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../models.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.models.model_referring_segment"></a><a class="link" href="model_referring_segment.html" title="model::referring_segment">model::referring_segment</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id957453"></a><a class="indexterm" name="id957459"></a>
+ <a class="indexterm" name="idp127870640"></a><a class="indexterm" name="idp127871328"></a>
Class segment: small class containing two (templatized) point references.
</p>
<h6>
<a name="geometry.reference.models.model_referring_segment.h0"></a>
- <span><a name="geometry.reference.models.model_referring_segment.description"></a></span><a class="link" href="model_referring_segment.html#geometry.reference.models.model_referring_segment.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.models.model_referring_segment.description"></a></span><a class="link" href="model_referring_segment.html#geometry.reference.models.model_referring_segment.description">Description</a>
</h6>
<p>
From Wikipedia: In geometry, a line segment is a part of a line that is
@@ -41,7 +41,7 @@ Class segment: small class containing two (templatized) point references.
</p>
<h6>
<a name="geometry.reference.models.model_referring_segment.h1"></a>
- <span><a name="geometry.reference.models.model_referring_segment.synopsis"></a></span><a class="link" href="model_referring_segment.html#geometry.reference.models.model_referring_segment.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.models.model_referring_segment.synopsis"></a></span><a class="link" href="model_referring_segment.html#geometry.reference.models.model_referring_segment.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -55,7 +55,7 @@ Class segment: small class containing two (templatized) point references.
</p>
<h6>
<a name="geometry.reference.models.model_referring_segment.h2"></a>
- <span><a name="geometry.reference.models.model_referring_segment.template_parameter_s_"></a></span><a class="link" href="model_referring_segment.html#geometry.reference.models.model_referring_segment.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.models.model_referring_segment.template_parameter_s_"></a></span><a class="link" href="model_referring_segment.html#geometry.reference.models.model_referring_segment.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -90,7 +90,7 @@ Class segment: small class containing two (templatized) point references.
</table></div>
<h6>
<a name="geometry.reference.models.model_referring_segment.h3"></a>
- <span><a name="geometry.reference.models.model_referring_segment.constructor_s_"></a></span><a class="link" href="model_referring_segment.html#geometry.reference.models.model_referring_segment.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.models.model_referring_segment.constructor_s_"></a></span><a class="link" href="model_referring_segment.html#geometry.reference.models.model_referring_segment.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -137,7 +137,7 @@ Class segment: small class containing two (templatized) point references.
</table></div>
<h6>
<a name="geometry.reference.models.model_referring_segment.h4"></a>
- <span><a name="geometry.reference.models.model_referring_segment.header"></a></span><a class="link" href="model_referring_segment.html#geometry.reference.models.model_referring_segment.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.models.model_referring_segment.header"></a></span><a class="link" href="model_referring_segment.html#geometry.reference.models.model_referring_segment.header">Header</a>
</h6>
<p>
Either
@@ -154,8 +154,8 @@ Class segment: small class containing two (templatized) point references.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -163,7 +163,7 @@ Class segment: small class containing two (templatized) point references.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="model_segment.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../models.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../strategies.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="model_segment.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../models.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_ring.html b/libs/geometry/doc/html/geometry/reference/models/model_ring.html
index 45c571fb80..9905ac32f0 100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_ring.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_ring.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>model::ring</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../models.html" title="Models">
<link rel="prev" href="model_box.html" title="model::box">
@@ -27,12 +27,12 @@
<a name="geometry.reference.models.model_ring"></a><a class="link" href="model_ring.html" title="model::ring">model::ring</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id956002"></a><a class="indexterm" name="id956007"></a>
+ <a class="indexterm" name="idp127686736"></a><a class="indexterm" name="idp127687424"></a>
A ring (aka linear ring) is a closed line which should not be selfintersecting.
</p>
<h6>
<a name="geometry.reference.models.model_ring.h0"></a>
- <span><a name="geometry.reference.models.model_ring.model_of"></a></span><a class="link" href="model_ring.html#geometry.reference.models.model_ring.model_of">Model
+ <span class="phrase"><a name="geometry.reference.models.model_ring.model_of"></a></span><a class="link" href="model_ring.html#geometry.reference.models.model_ring.model_of">Model
of</a>
</h6>
<p>
@@ -40,12 +40,14 @@ A ring (aka linear ring) is a closed line which should not be selfintersecting.
</p>
<h6>
<a name="geometry.reference.models.model_ring.h1"></a>
- <span><a name="geometry.reference.models.model_ring.synopsis"></a></span><a class="link" href="model_ring.html#geometry.reference.models.model_ring.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.models.model_ring.synopsis"></a></span><a class="link" href="model_ring.html#geometry.reference.models.model_ring.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">ClockWise</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">Closed</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">ClockWise</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">Closed</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Container</span><span class="special">,</span>
+ <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">model</span><span class="special">::</span><span class="identifier">ring</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">Container</span><span class="special">&lt;</span> <span class="identifier">Point</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&lt;</span> <span class="identifier">Point</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -54,7 +56,7 @@ A ring (aka linear ring) is a closed line which should not be selfintersecting.
</p>
<h6>
<a name="geometry.reference.models.model_ring.h2"></a>
- <span><a name="geometry.reference.models.model_ring.template_parameter_s_"></a></span><a class="link" href="model_ring.html#geometry.reference.models.model_ring.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.models.model_ring.template_parameter_s_"></a></span><a class="link" href="model_ring.html#geometry.reference.models.model_ring.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -168,7 +170,7 @@ A ring (aka linear ring) is a closed line which should not be selfintersecting.
</table></div>
<h6>
<a name="geometry.reference.models.model_ring.h3"></a>
- <span><a name="geometry.reference.models.model_ring.constructor_s_"></a></span><a class="link" href="model_ring.html#geometry.reference.models.model_ring.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.models.model_ring.constructor_s_"></a></span><a class="link" href="model_ring.html#geometry.reference.models.model_ring.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -237,7 +239,7 @@ A ring (aka linear ring) is a closed line which should not be selfintersecting.
</table></div>
<h6>
<a name="geometry.reference.models.model_ring.h4"></a>
- <span><a name="geometry.reference.models.model_ring.header"></a></span><a class="link" href="model_ring.html#geometry.reference.models.model_ring.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.models.model_ring.header"></a></span><a class="link" href="model_ring.html#geometry.reference.models.model_ring.header">Header</a>
</h6>
<p>
Either
@@ -254,8 +256,8 @@ A ring (aka linear ring) is a closed line which should not be selfintersecting.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/models/model_segment.html b/libs/geometry/doc/html/geometry/reference/models/model_segment.html
index c255656a0b..ab4c6db011 100644
--- a/libs/geometry/doc/html/geometry/reference/models/model_segment.html
+++ b/libs/geometry/doc/html/geometry/reference/models/model_segment.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>model::segment</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../models.html" title="Models">
<link rel="prev" href="model_ring.html" title="model::ring">
@@ -27,12 +27,12 @@
<a name="geometry.reference.models.model_segment"></a><a class="link" href="model_segment.html" title="model::segment">model::segment</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id956855"></a><a class="indexterm" name="id956860"></a>
+ <a class="indexterm" name="idp127793936"></a><a class="indexterm" name="idp127794624"></a>
Class segment: small class containing two points.
</p>
<h6>
<a name="geometry.reference.models.model_segment.h0"></a>
- <span><a name="geometry.reference.models.model_segment.description"></a></span><a class="link" href="model_segment.html#geometry.reference.models.model_segment.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.models.model_segment.description"></a></span><a class="link" href="model_segment.html#geometry.reference.models.model_segment.description">Description</a>
</h6>
<p>
From Wikipedia: In geometry, a line segment is a part of a line that is
@@ -41,12 +41,13 @@ Class segment: small class containing two points.
</p>
<h6>
<a name="geometry.reference.models.model_segment.h1"></a>
- <span><a name="geometry.reference.models.model_segment.synopsis"></a></span><a class="link" href="model_segment.html#geometry.reference.models.model_segment.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.models.model_segment.synopsis"></a></span><a class="link" href="model_segment.html#geometry.reference.models.model_segment.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">model</span><span class="special">::</span><span class="identifier">segment</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span> <span class="identifier">Point</span><span class="special">,</span> <span class="identifier">Point</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -55,7 +56,7 @@ Class segment: small class containing two points.
</p>
<h6>
<a name="geometry.reference.models.model_segment.h2"></a>
- <span><a name="geometry.reference.models.model_segment.template_parameter_s_"></a></span><a class="link" href="model_segment.html#geometry.reference.models.model_segment.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.models.model_segment.template_parameter_s_"></a></span><a class="link" href="model_segment.html#geometry.reference.models.model_segment.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -87,7 +88,7 @@ Class segment: small class containing two points.
</table></div>
<h6>
<a name="geometry.reference.models.model_segment.h3"></a>
- <span><a name="geometry.reference.models.model_segment.constructor_s_"></a></span><a class="link" href="model_segment.html#geometry.reference.models.model_segment.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.models.model_segment.constructor_s_"></a></span><a class="link" href="model_segment.html#geometry.reference.models.model_segment.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -149,7 +150,7 @@ Class segment: small class containing two points.
</table></div>
<h6>
<a name="geometry.reference.models.model_segment.h4"></a>
- <span><a name="geometry.reference.models.model_segment.header"></a></span><a class="link" href="model_segment.html#geometry.reference.models.model_segment.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.models.model_segment.header"></a></span><a class="link" href="model_segment.html#geometry.reference.models.model_segment.header">Header</a>
</h6>
<p>
Either
@@ -166,8 +167,8 @@ Class segment: small class containing two points.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes.html
new file mode 100644
index 0000000000..1675750f9a
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes.html
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Spatial Indexes</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="models/model_referring_segment.html" title="model::referring_segment">
+<link rel="next" href="spatial_indexes/boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="models/model_referring_segment.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="spatial_indexes/boost__geometry__index__rtree.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="geometry.reference.spatial_indexes"></a><a class="link" href="spatial_indexes.html" title="Spatial Indexes">Spatial Indexes</a>
+</h3></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="spatial_indexes/boost__geometry__index__rtree.html">boost::geometry::index::rtree</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/group__rtree__functions.html">R-tree
+ free functions (boost::geometry::index::)</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/parameters.html">R-tree
+ parameters (boost::geometry::index::)</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/observers.html">Observers
+ (boost::geometry::index::)</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/group__inserters.html">Inserters
+ (boost::geometry::index::)</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/group__adaptors.html">Adaptors
+ (boost::geometry::index::adaptors::)</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/group__predicates.html">Predicates
+ (boost::geometry::index::)</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="models/model_referring_segment.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="spatial_indexes/boost__geometry__index__rtree.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree.html
new file mode 100644
index 0000000000..835af2b1df
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree.html
@@ -0,0 +1,990 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>boost::geometry::index::rtree</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="next" href="boost__geometry__index__rtree/rtree__.html" title="rtree()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__rtree/rtree__.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree"></a><a name="classboost_1_1geometry_1_1index_1_1rtree"></a><a class="link" href="boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">boost::geometry::index::rtree</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="boost__geometry__index__rtree/rtree__.html">rtree()</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html">rtree(parameters_type
+ const &amp;, indexable_getter const &amp;, value_equal const &amp;, allocator_type
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/rtree_iterator__iterator_.html">rtree(Iterator,
+ Iterator)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/rtree_range_const___.html">rtree(Range
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/_rtree__.html">~rtree()</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/rtree_rtree_const___.html">rtree(rtree
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/rtree_rtree_const____allocator_type_const___.html">rtree(rtree
+ const &amp;, allocator_type const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/rtree_rtree____.html">rtree(rtree
+ &amp;&amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/rtree_rtree_____allocator_type_const___.html">rtree(rtree
+ &amp;&amp;, allocator_type const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/operator__rtree_const___.html">operator=(rtree
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/operator__rtree____.html">operator=(rtree
+ &amp;&amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/swap_rtree___.html">swap(rtree
+ &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/insert_value_type_const___.html">insert(value_type
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/insert_iterator__iterator_.html">insert(Iterator,
+ Iterator)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/insert_convertibleorrange_const___.html">insert(ConvertibleOrRange
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/remove_value_type_const___.html">remove(value_type
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/remove_iterator__iterator_.html">remove(Iterator,
+ Iterator)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/remove_convertibleorrange_const___.html">remove(ConvertibleOrRange
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/query_predicates_const____outiter_.html">query(Predicates
+ const &amp;, OutIter)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/qbegin_predicates_const___.html">qbegin(Predicates
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/qend__.html">qend()</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/size__.html">size()</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/empty__.html">empty()</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/clear__.html">clear()</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/bounds__.html">bounds()</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/count_valueorindexable_const___.html">count(ValueOrIndexable
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/parameters__.html">parameters()</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/indexable_get__.html">indexable_get()</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/value_eq__.html">value_eq()</a></span></dt>
+<dt><span class="section"><a href="boost__geometry__index__rtree/get_allocator__.html">get_allocator()</a></span></dt>
+</dl></div>
+<p>
+ <a class="indexterm" name="idp127939584"></a><a class="indexterm" name="idp127940272"></a><a class="indexterm" name="idp127940960"></a><a class="indexterm" name="idp127941648"></a>
+The R-tree spatial index.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.description"></a></span><a class="link" href="boost__geometry__index__rtree.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.description">Description</a>
+ </h6>
+<p>
+ This is self-balancing spatial index capable to store various types of
+ Values and balancing algorithms.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters"></a></span><a class="link" href="boost__geometry__index__rtree.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters">Parameters</a>
+ </h6>
+<p>
+ The user must pass a type defining the Parameters which will be used in
+ rtree creation process. This type is used e.g. to specify balancing algorithm
+ with specific parameters like min and max number of elements in node.
+ </p>
+<p>
+ Predefined algorithms with compile-time parameters are:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="literal"><a class="link" href="parameters/boost__geometry__index__linear.html#structboost_1_1geometry_1_1index_1_1linear">boost::geometry::index::linear</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="parameters/boost__geometry__index__quadratic.html#structboost_1_1geometry_1_1index_1_1quadratic">boost::geometry::index::quadratic</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="parameters/boost__geometry__index__rstar.html#structboost_1_1geometry_1_1index_1_1rstar">boost::geometry::index::rstar</a></code>.
+ </li>
+</ul></div>
+<p>
+ Predefined algorithms with run-time parameters are:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="literal"><a class="link" href="parameters/boost__geometry__index__dynamic_linear.html#classboost_1_1geometry_1_1index_1_1dynamic__linear">boost::geometry::index::dynamic_linear</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="parameters/boost__geometry__index__dynamic_quadratic.html#classboost_1_1geometry_1_1index_1_1dynamic__quadratic">boost::geometry::index::dynamic_quadratic</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="parameters/boost__geometry__index__dynamic_rstar.html#classboost_1_1geometry_1_1index_1_1dynamic__rstar">boost::geometry::index::dynamic_rstar</a></code>.
+ </li>
+</ul></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexablegetter"></a></span><a class="link" href="boost__geometry__index__rtree.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexablegetter">IndexableGetter</a>
+ </h6>
+<p>
+ The object of IndexableGetter type translates from Value to Indexable each
+ time r-tree requires it. Which means that this operation is done for each
+ Value access. Therefore the IndexableGetter should return the Indexable
+ by const reference instead of a value. Default one can translate all types
+ adapted to Point, Box or Segment concepts (called Indexables). It also
+ handles <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">Indexable</span><span class="special">,</span>
+ <span class="identifier">T</span><span class="special">&gt;</span></code></code>
+ and <code class="literal"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tuple</span><span class="special">&lt;</span><span class="identifier">Indexable</span><span class="special">,</span>
+ <span class="special">...&gt;</span></code></code>. For example,
+ if <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">Box</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span></code></code>
+ is stored in the container, the default IndexableGetter translates from
+ <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">Box</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span></code></code>
+ to <code class="literal"><code class="computeroutput"><span class="identifier">Box</span> <span class="keyword">const</span><span class="special">&amp;</span></code></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.equalto"></a></span><a class="link" href="boost__geometry__index__rtree.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.equalto">EqualTo</a>
+ </h6>
+<p>
+ The object of EqualTo type compares Values and returns <code class="literal"><code class="computeroutput"><span class="keyword">true</span></code></code> if they're equal. It's similar
+ to <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;&gt;</span></code></code>.
+ The default EqualTo returns the result of <code class="literal"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">equals</span><span class="special">()</span></code></code> for types adapted to some Geometry
+ concept defined in Boost.Geometry and the result of operator= for other
+ types. Components of Pairs and Tuples are compared left-to-right.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.header"></a></span><a class="link" href="boost__geometry__index__rtree.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.h5"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.synopsis"></a></span><a class="link" href="boost__geometry__index__rtree.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code> = <code class="literal"><a class="link" href="observers/boost__geometry__index__indexable.html#structboost_1_1geometry_1_1index_1_1indexable">index::indexable</a></code><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code> = <code class="literal"><a class="link" href="observers/boost__geometry__index__equal_to.html#structboost_1_1geometry_1_1index_1_1equal__to">index::equal_to</a></code><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code> = <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">class</span> <span class="identifier">rtree</span></code>
+<code class="computeroutput"><span class="special">{</span></code>
+<code class="computeroutput"> <span class="comment">// ...</span></code>
+<code class="computeroutput"><span class="special">};</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.h6"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.template_parameter_s_"></a></span><a class="link" href="boost__geometry__index__rtree.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Value</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of objects stored in the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Parameters</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compile-time parameters.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IndexableGetter</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object extracting Indexable from Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">EqualTo</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object comparing objects of type Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Allocator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The allocator used to allocate/deallocate memory, construct/destroy
+ nodes and Values.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.h7"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.typedef_s_"></a></span><a class="link" href="boost__geometry__index__rtree.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.typedef_s_">Typedef(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1a5761a41d87b93d4fd548ecb6600ae757"></a><code class="computeroutput"><span class="identifier">value_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of Value stored in the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17"></a><code class="computeroutput"><span class="identifier">parameters_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ R-tree parameters type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5"></a><code class="computeroutput"><span class="identifier">indexable_getter</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object extracting Indexable from Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b"></a><code class="computeroutput"><span class="identifier">value_equal</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object comparing objects of type Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e"></a><code class="computeroutput"><span class="identifier">allocator_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of allocator used by the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1a28e88e55d260a454688fe1bd5e5af96b"></a><code class="computeroutput"><span class="identifier">indexable_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Indexable type to which Value is translated.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1a12e80f9da4c68e0e687f1c2012321147"></a><code class="computeroutput"><span class="identifier">bounds_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Box type used by the R-tree.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1a5301c3d7ee3589751579e0573a9e8165"></a><code class="computeroutput"><span class="identifier">reference</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Type of reference to Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1a615e622930be97ab1f3b8ceee641feaf"></a><code class="computeroutput"><span class="identifier">const_reference</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Type of reference to const Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1a762ced6b98d2cc6503e2b00549c6a89a"></a><code class="computeroutput"><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Type of pointer to Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1abad30462044d5d8fb607c24a05e8c9c2"></a><code class="computeroutput"><span class="identifier">const_pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Type of pointer to const Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1ac256168e9371a070515fc61f29c691ed"></a><code class="computeroutput"><span class="identifier">difference_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Type of difference type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1acc1f90d7b70afebc58107c523ece5cd5"></a><code class="computeroutput"><span class="identifier">size_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Unsigned integral type used by the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a name="classboost_1_1geometry_1_1index_1_1rtree_1a83fce1047d890f327ea195ed252af176"></a><code class="computeroutput"><span class="identifier">const_query_iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Type of const query iterator.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.h8"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.constructor_s__and_destructor"></a></span><a class="link" href="boost__geometry__index__rtree.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.constructor_s__and_destructor">Constructor(s)
+ and destructor</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/rtree__.html#classboost_1_1geometry_1_1index_1_1rtree_1a55d5fd5d205df08db5267253689ccf0c"><code class="computeroutput"><span class="identifier">rtree</span><span class="special">()</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The constructor.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a1a6b696d4855cbf1866196fe058c3a87"><code class="computeroutput"><span class="identifier">rtree</span><span class="special">(</span><span class="identifier">parameters_type</span> <span class="keyword">const</span>
+ <span class="special">&amp;,</span> <span class="identifier">indexable_getter</span>
+ <span class="keyword">const</span> <span class="special">&amp;,</span>
+ <span class="identifier">value_equal</span> <span class="keyword">const</span>
+ <span class="special">&amp;,</span> <span class="identifier">allocator_type</span>
+ <span class="keyword">const</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The constructor.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/rtree_iterator__iterator_.html#classboost_1_1geometry_1_1index_1_1rtree_1a037f17d8a1dfa4a818ff471dec61c912"><code class="computeroutput"><span class="identifier">rtree</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">,</span>
+ <span class="identifier">Iterator</span><span class="special">)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The constructor.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/rtree_range_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a7b96b715c52ddc13d7a81db344825848"><code class="computeroutput"><span class="identifier">rtree</span><span class="special">(</span><span class="identifier">Range</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The constructor.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/_rtree__.html#classboost_1_1geometry_1_1index_1_1rtree_1af8db72811d2be53c409240204e63fb5a"><code class="computeroutput"><span class="special">~</span><span class="identifier">rtree</span><span class="special">()</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The destructor.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/rtree_rtree_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a826fc3236e181ad718d5283e95d7866f"><code class="computeroutput"><span class="identifier">rtree</span><span class="special">(</span><span class="identifier">rtree</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The copy constructor.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/rtree_rtree_const____allocator_type_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a72b6b75e083eea2ed26f54d4a2265375"><code class="computeroutput"><span class="identifier">rtree</span><span class="special">(</span><span class="identifier">rtree</span> <span class="keyword">const</span>
+ <span class="special">&amp;,</span> <span class="identifier">allocator_type</span>
+ <span class="keyword">const</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The copy constructor.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/rtree_rtree____.html#classboost_1_1geometry_1_1index_1_1rtree_1aa8b27db8cb783282ab5274e6769da26a"><code class="computeroutput"><span class="identifier">rtree</span><span class="special">(</span><span class="identifier">rtree</span> <span class="special">&amp;&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The moving constructor.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/rtree_rtree_____allocator_type_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a8508c4236d17ff39a1caef058aac8486"><code class="computeroutput"><span class="identifier">rtree</span><span class="special">(</span><span class="identifier">rtree</span> <span class="special">&amp;&amp;,</span>
+ <span class="identifier">allocator_type</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The moving constructor.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.h9"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.member_s_"></a></span><a class="link" href="boost__geometry__index__rtree.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.member_s_">Member(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Modifier
+ </p>
+ </th>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/operator__rtree_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1ad0db5e9e41e1553f944b7e740dbbb883"><code class="computeroutput"><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">rtree</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The assignment operator.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/operator__rtree____.html#classboost_1_1geometry_1_1index_1_1rtree_1af0bf9622ed3e901580b73ed39b746fb7"><code class="computeroutput"><span class="keyword">operator</span><span class="special">=(</span><span class="identifier">rtree</span> <span class="special">&amp;&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The moving assignment.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/swap_rtree___.html#classboost_1_1geometry_1_1index_1_1rtree_1aedb719dfece91d298e9ee56878524c9b"><code class="computeroutput"><span class="identifier">swap</span><span class="special">(</span><span class="identifier">rtree</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Swaps contents of two rtrees.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/insert_value_type_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1ad47980467e66b8644df18a480dbf9d86"><code class="computeroutput"><span class="identifier">insert</span><span class="special">(</span><span class="identifier">value_type</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Insert a value to the index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/insert_iterator__iterator_.html#classboost_1_1geometry_1_1index_1_1rtree_1a60d4c8790fd8810ff8b57f049e6bed8d"><code class="computeroutput"><span class="identifier">insert</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">,</span>
+ <span class="identifier">Iterator</span><span class="special">)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Insert a range of values to the index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/insert_convertibleorrange_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a5db294b14ebf1319edcfc92e78c8167e"><code class="computeroutput"><span class="identifier">insert</span><span class="special">(</span><span class="identifier">ConvertibleOrRange</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Insert a value created using convertible object or a range of
+ values to the index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/remove_value_type_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a1ce933b0b833faec5349bfc27bde15d4"><code class="computeroutput"><span class="identifier">remove</span><span class="special">(</span><span class="identifier">value_type</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Remove a value from the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/remove_iterator__iterator_.html#classboost_1_1geometry_1_1index_1_1rtree_1aa97084231d17564a94f0142d095cecaa"><code class="computeroutput"><span class="identifier">remove</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">,</span>
+ <span class="identifier">Iterator</span><span class="special">)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Remove a range of values from the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/remove_convertibleorrange_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a320cd1861ba7b43364ed53e1f93a4411"><code class="computeroutput"><span class="identifier">remove</span><span class="special">(</span><span class="identifier">ConvertibleOrRange</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Remove value corresponding to an object convertible to it or
+ a range of values from the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/query_predicates_const____outiter_.html#classboost_1_1geometry_1_1index_1_1rtree_1a7baa88eb4e7a5c640ab847513de45b3e"><code class="computeroutput"><span class="identifier">query</span><span class="special">(</span><span class="identifier">Predicates</span> <span class="keyword">const</span>
+ <span class="special">&amp;,</span> <span class="identifier">OutIter</span><span class="special">)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Finds values meeting passed predicates e.g. nearest to some Point
+ and/or intersecting some Box.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/qbegin_predicates_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a63d15f3b5b157a47045fcac3fec3b7a0"><code class="computeroutput"><span class="identifier">qbegin</span><span class="special">(</span><span class="identifier">Predicates</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the query iterator pointing at the begin of the query
+ range.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/qend__.html#classboost_1_1geometry_1_1index_1_1rtree_1af3b16f4732fa8113c0b2187005182513"><code class="computeroutput"><span class="identifier">qend</span><span class="special">()</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the query iterator pointing at the end of the query range.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/size__.html#classboost_1_1geometry_1_1index_1_1rtree_1ac9f152c8c96525e3735b81635d8171b1"><code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the number of stored values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/empty__.html#classboost_1_1geometry_1_1index_1_1rtree_1aa5302ce1c26105d722aac20793e83f0e"><code class="computeroutput"><span class="identifier">empty</span><span class="special">()</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Query if the container is empty.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/clear__.html#classboost_1_1geometry_1_1index_1_1rtree_1a1bec40977c175983f585c4488cf8fe3c"><code class="computeroutput"><span class="identifier">clear</span><span class="special">()</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Removes all values stored in the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/bounds__.html#classboost_1_1geometry_1_1index_1_1rtree_1a0dad06d0f117f45ed54b5c123cb41d6e"><code class="computeroutput"><span class="identifier">bounds</span><span class="special">()</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the box able to contain all values stored in the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/count_valueorindexable_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1aaa834c241c191ac9de67f134564f36fa"><code class="computeroutput"><span class="identifier">count</span><span class="special">(</span><span class="identifier">ValueOrIndexable</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Count Values or Indexables stored in the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/parameters__.html#classboost_1_1geometry_1_1index_1_1rtree_1a9076baef90a3a9c6018871fa25115a73"><code class="computeroutput"><span class="identifier">parameters</span><span class="special">()</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns parameters.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/indexable_get__.html#classboost_1_1geometry_1_1index_1_1rtree_1af391fd642a218c5fb10fc68d643a62b5"><code class="computeroutput"><span class="identifier">indexable_get</span><span class="special">()</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns function retrieving Indexable from Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/value_eq__.html#classboost_1_1geometry_1_1index_1_1rtree_1a16424563d0973960ac01f7a1969eeebe"><code class="computeroutput"><span class="identifier">value_eq</span><span class="special">()</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns function comparing Values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__rtree/get_allocator__.html#classboost_1_1geometry_1_1index_1_1rtree_1a17d9cef211feb7f674a5b4602f4cc81e"><code class="computeroutput"><span class="identifier">get_allocator</span><span class="special">()</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns allocator used by the rtree.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__rtree/rtree__.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/_rtree__.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/_rtree__.html
new file mode 100644
index 0000000000..65d6100255
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/_rtree__.html
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>~rtree()</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="rtree_range_const___.html" title="rtree(Range const &amp;)">
+<link rel="next" href="rtree_rtree_const___.html" title="rtree(rtree const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_range_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_rtree_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree._rtree__"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1af8db72811d2be53c409240204e63fb5a"></a><a class="link" href="_rtree__.html" title="~rtree()">~rtree()</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128720784"></a>
+The destructor.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree._rtree__.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree._rtree__.synopsis"></a></span><a class="link" href="_rtree__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree._rtree__.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="special">~</span><span class="identifier">rtree</span></code><code class="computeroutput"><span class="special">()</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree._rtree__.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree._rtree__.throws"></a></span><a class="link" href="_rtree__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree._rtree__.throws">Throws</a>
+ </h6>
+<p>
+ Nothing.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_range_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_rtree_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/bounds__.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/bounds__.html
new file mode 100644
index 0000000000..16254487b1
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/bounds__.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>bounds()</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="clear__.html" title="clear()">
+<link rel="next" href="count_valueorindexable_const___.html" title="count(ValueOrIndexable const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="clear__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="count_valueorindexable_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a0dad06d0f117f45ed54b5c123cb41d6e"></a><a class="link" href="bounds__.html" title="bounds()">bounds()</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129689968"></a>
+Returns the box able to contain all values stored in the container.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.description"></a></span><a class="link" href="bounds__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.description">Description</a>
+ </h6>
+<p>
+ Returns the box able to contain all values stored in the container. If
+ the container is empty the result of <code class="literal"><code class="computeroutput"><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">assign_inverse</span><span class="special">()</span></code></code> is returned.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.synopsis"></a></span><a class="link" href="bounds__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a12e80f9da4c68e0e687f1c2012321147">bounds_type</a></code> <code class="computeroutput"><span class="identifier">bounds</span></code><code class="computeroutput"><span class="special">()</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.modifier_s_"></a></span><a class="link" href="bounds__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.returns"></a></span><a class="link" href="bounds__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.returns">Returns</a>
+ </h6>
+<p>
+ The box able to contain all values stored in the container or an invalid
+ box if there are no values in the container.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.throws"></a></span><a class="link" href="bounds__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__.throws">Throws</a>
+ </h6>
+<p>
+ Nothing.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="clear__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="count_valueorindexable_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/clear__.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/clear__.html
new file mode 100644
index 0000000000..faa77e637c
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/clear__.html
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>clear()</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="empty__.html" title="empty()">
+<link rel="next" href="bounds__.html" title="bounds()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="empty__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="bounds__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.clear__"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a1bec40977c175983f585c4488cf8fe3c"></a><a class="link" href="clear__.html" title="clear()">clear()</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129675808"></a>
+Removes all values stored in the container.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.clear__.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.clear__.synopsis"></a></span><a class="link" href="clear__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.clear__.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">void</span></code> <code class="computeroutput"><span class="identifier">clear</span></code><code class="computeroutput"><span class="special">()</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.clear__.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.clear__.throws"></a></span><a class="link" href="clear__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.clear__.throws">Throws</a>
+ </h6>
+<p>
+ Nothing.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="empty__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="bounds__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/count_valueorindexable_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/count_valueorindexable_const___.html
new file mode 100644
index 0000000000..47334062ea
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/count_valueorindexable_const___.html
@@ -0,0 +1,134 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>count(ValueOrIndexable const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="bounds__.html" title="bounds()">
+<link rel="next" href="parameters__.html" title="parameters()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bounds__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="parameters__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1aaa834c241c191ac9de67f134564f36fa"></a><a class="link" href="count_valueorindexable_const___.html" title="count(ValueOrIndexable const &amp;)">count(ValueOrIndexable
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129719920"></a>
+Count Values or Indexables stored in the container.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.description"></a></span><a class="link" href="count_valueorindexable_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.description">Description</a>
+ </h6>
+<p>
+ For indexable_type it returns the number of values which indexables equals
+ the parameter. For value_type it returns the number of values which equals
+ the parameter.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.synopsis"></a></span><a class="link" href="count_valueorindexable_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">ValueOrIndexable</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1acc1f90d7b70afebc58107c523ece5cd5">size_type</a></code> <code class="computeroutput"><span class="identifier">count</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">ValueOrIndexable</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">vori</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.modifier_s_"></a></span><a class="link" href="count_valueorindexable_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.parameter_s_"></a></span><a class="link" href="count_valueorindexable_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ValueOrIndexable</span>
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">vori</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The value or indexable which will be counted.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.returns"></a></span><a class="link" href="count_valueorindexable_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.returns">Returns</a>
+ </h6>
+<p>
+ The number of values found.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.h5"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.throws"></a></span><a class="link" href="count_valueorindexable_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___.throws">Throws</a>
+ </h6>
+<p>
+ Nothing.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bounds__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="parameters__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/empty__.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/empty__.html
new file mode 100644
index 0000000000..6c9e569c80
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/empty__.html
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>empty()</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="size__.html" title="size()">
+<link rel="next" href="clear__.html" title="clear()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="size__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="clear__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1aa5302ce1c26105d722aac20793e83f0e"></a><a class="link" href="empty__.html" title="empty()">empty()</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129653792"></a>
+Query if the container is empty.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.synopsis"></a></span><a class="link" href="empty__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">bool</span></code> <code class="computeroutput"><span class="identifier">empty</span></code><code class="computeroutput"><span class="special">()</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.modifier_s_"></a></span><a class="link" href="empty__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.returns"></a></span><a class="link" href="empty__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.returns">Returns</a>
+ </h6>
+<p>
+ true if the container is empty.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.throws"></a></span><a class="link" href="empty__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__.throws">Throws</a>
+ </h6>
+<p>
+ Nothing.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="size__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="clear__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/get_allocator__.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/get_allocator__.html
new file mode 100644
index 0000000000..56deeea7e2
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/get_allocator__.html
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>get_allocator()</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="value_eq__.html" title="value_eq()">
+<link rel="next" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="value_eq__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a17d9cef211feb7f674a5b4602f4cc81e"></a><a class="link" href="get_allocator__.html" title="get_allocator()">get_allocator()</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129838144"></a>
+Returns allocator used by the rtree.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.synopsis"></a></span><a class="link" href="get_allocator__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code> <code class="computeroutput"><span class="identifier">get_allocator</span></code><code class="computeroutput"><span class="special">()</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.modifier_s_"></a></span><a class="link" href="get_allocator__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.returns"></a></span><a class="link" href="get_allocator__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.returns">Returns</a>
+ </h6>
+<p>
+ The allocator.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.throws"></a></span><a class="link" href="get_allocator__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__.throws">Throws</a>
+ </h6>
+<p>
+ If allocator copy constructor throws.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="value_eq__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/indexable_get__.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/indexable_get__.html
new file mode 100644
index 0000000000..94a7d57968
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/indexable_get__.html
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>indexable_get()</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="parameters__.html" title="parameters()">
+<link rel="next" href="value_eq__.html" title="value_eq()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameters__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="value_eq__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1af391fd642a218c5fb10fc68d643a62b5"></a><a class="link" href="indexable_get__.html" title="indexable_get()">indexable_get()</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129792720"></a>
+Returns function retrieving Indexable from Value.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.synopsis"></a></span><a class="link" href="indexable_get__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code> <code class="computeroutput"><span class="identifier">indexable_get</span></code><code class="computeroutput"><span class="special">()</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.modifier_s_"></a></span><a class="link" href="indexable_get__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.returns"></a></span><a class="link" href="indexable_get__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.returns">Returns</a>
+ </h6>
+<p>
+ The indexable_getter object.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.throws"></a></span><a class="link" href="indexable_get__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__.throws">Throws</a>
+ </h6>
+<p>
+ Nothing.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameters__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="value_eq__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_convertibleorrange_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_convertibleorrange_const___.html
new file mode 100644
index 0000000000..6428eec551
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_convertibleorrange_const___.html
@@ -0,0 +1,127 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>insert(ConvertibleOrRange const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="insert_iterator__iterator_.html" title="insert(Iterator, Iterator)">
+<link rel="next" href="remove_value_type_const___.html" title="remove(value_type const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_value_type_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_convertibleorrange_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a5db294b14ebf1319edcfc92e78c8167e"></a><a class="link" href="insert_convertibleorrange_const___.html" title="insert(ConvertibleOrRange const &amp;)">insert(ConvertibleOrRange
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129115824"></a>
+Insert a value created using convertible object or a range of values
+ to the index.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_convertibleorrange_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_convertibleorrange_const___.synopsis"></a></span><a class="link" href="insert_convertibleorrange_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_convertibleorrange_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">ConvertibleOrRange</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">void</span></code> <code class="computeroutput"><span class="identifier">insert</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">ConvertibleOrRange</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">conv_or_rng</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_convertibleorrange_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_convertibleorrange_const___.parameter_s_"></a></span><a class="link" href="insert_convertibleorrange_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_convertibleorrange_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ConvertibleOrRange</span>
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">conv_or_rng</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ An object of type convertible to value_type or a range of values.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_convertibleorrange_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_convertibleorrange_const___.throws"></a></span><a class="link" href="insert_convertibleorrange_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_convertibleorrange_const___.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If Value copy constructor or copy assignment throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../../doc/src/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This operation only guarantees that there will be no memory leaks.
+ After an exception is thrown the R-tree may be left in an inconsistent
+ state, elements must not be inserted or removed. Other operations are
+ allowed however some of them may return invalid data.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_value_type_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_iterator__iterator_.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_iterator__iterator_.html
new file mode 100644
index 0000000000..5d9da7ad52
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_iterator__iterator_.html
@@ -0,0 +1,144 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>insert(Iterator, Iterator)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="insert_value_type_const___.html" title="insert(value_type const &amp;)">
+<link rel="next" href="insert_convertibleorrange_const___.html" title="insert(ConvertibleOrRange const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_value_type_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_iterator__iterator_"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a60d4c8790fd8810ff8b57f049e6bed8d"></a><a class="link" href="insert_iterator__iterator_.html" title="insert(Iterator, Iterator)">insert(Iterator,
+ Iterator)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129069664"></a>
+Insert a range of values to the index.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_iterator__iterator_.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_iterator__iterator_.synopsis"></a></span><a class="link" href="insert_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_iterator__iterator_.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Iterator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">void</span></code> <code class="computeroutput"><span class="identifier">insert</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Iterator</span></code> <code class="computeroutput"><span class="identifier">first</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">Iterator</span></code> <code class="computeroutput"><span class="identifier">last</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_iterator__iterator_.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_iterator__iterator_.parameter_s_"></a></span><a class="link" href="insert_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_iterator__iterator_.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">first</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The beginning of the range of values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">last</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The end of the range of values.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_iterator__iterator_.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_iterator__iterator_.throws"></a></span><a class="link" href="insert_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_iterator__iterator_.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If Value copy constructor or copy assignment throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../../doc/src/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This operation only guarantees that there will be no memory leaks.
+ After an exception is thrown the R-tree may be left in an inconsistent
+ state, elements must not be inserted or removed. Other operations are
+ allowed however some of them may return invalid data.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_value_type_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_value_type_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_value_type_const___.html
new file mode 100644
index 0000000000..cfd9087cd0
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_value_type_const___.html
@@ -0,0 +1,125 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>insert(value_type const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="swap_rtree___.html" title="swap(rtree &amp;)">
+<link rel="next" href="insert_iterator__iterator_.html" title="insert(Iterator, Iterator)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="swap_rtree___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_value_type_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1ad47980467e66b8644df18a480dbf9d86"></a><a class="link" href="insert_value_type_const___.html" title="insert(value_type const &amp;)">insert(value_type
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129032000"></a>
+Insert a value to the index.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_value_type_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_value_type_const___.synopsis"></a></span><a class="link" href="insert_value_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_value_type_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">void</span></code> <code class="computeroutput"><span class="identifier">insert</span></code><code class="computeroutput"><span class="special">(</span></code><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a5761a41d87b93d4fd548ecb6600ae757">value_type</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">value</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_value_type_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_value_type_const___.parameter_s_"></a></span><a class="link" href="insert_value_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_value_type_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a5761a41d87b93d4fd548ecb6600ae757">value_type</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">value</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The value which will be stored in the container.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_value_type_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_value_type_const___.throws"></a></span><a class="link" href="insert_value_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_value_type_const___.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If Value copy constructor or copy assignment throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../../doc/src/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This operation only guarantees that there will be no memory leaks.
+ After an exception is thrown the R-tree may be left in an inconsistent
+ state, elements must not be inserted or removed. Other operations are
+ allowed however some of them may return invalid data.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="swap_rtree___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree____.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree____.html
new file mode 100644
index 0000000000..75b8482751
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree____.html
@@ -0,0 +1,123 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>operator=(rtree &amp;&amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="operator__rtree_const___.html" title="operator=(rtree const &amp;)">
+<link rel="next" href="swap_rtree___.html" title="swap(rtree &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="operator__rtree_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="swap_rtree___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1af0bf9622ed3e901580b73ed39b746fb7"></a><a class="link" href="operator__rtree____.html" title="operator=(rtree &amp;&amp;)">operator=(rtree
+ &amp;&amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128955120"></a>
+The moving assignment.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.description"></a></span><a class="link" href="operator__rtree____.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.description">Description</a>
+ </h6>
+<p>
+ It uses parameters and translator from the source tree.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.synopsis"></a></span><a class="link" href="operator__rtree____.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput"> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="keyword">operator</span><span class="special">=</span></code><code class="computeroutput"><span class="special">(</span></code><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput"> <span class="special">&amp;&amp;</span></code> <code class="computeroutput"><span class="identifier">src</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.parameter_s_"></a></span><a class="link" href="operator__rtree____.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput">
+ <span class="special">&amp;&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">src</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The rtree which content will be moved.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.throws"></a></span><a class="link" href="operator__rtree____.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____.throws">Throws</a>
+ </h6>
+<p>
+ Only if allocators aren't equal.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If Value copy constructor throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="operator__rtree_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="swap_rtree___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree_const___.html
new file mode 100644
index 0000000000..21a7d0654f
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree_const___.html
@@ -0,0 +1,123 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>operator=(rtree const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="rtree_rtree_____allocator_type_const___.html" title="rtree(rtree &amp;&amp;, allocator_type const &amp;)">
+<link rel="next" href="operator__rtree____.html" title="operator=(rtree &amp;&amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_rtree_____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="operator__rtree____.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1ad0db5e9e41e1553f944b7e740dbbb883"></a><a class="link" href="operator__rtree_const___.html" title="operator=(rtree const &amp;)">operator=(rtree
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128913152"></a>
+The assignment operator.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.description"></a></span><a class="link" href="operator__rtree_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.description">Description</a>
+ </h6>
+<p>
+ It uses parameters and translator from the source tree.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.synopsis"></a></span><a class="link" href="operator__rtree_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput"> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="keyword">operator</span><span class="special">=</span></code><code class="computeroutput"><span class="special">(</span></code><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">src</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.parameter_s_"></a></span><a class="link" href="operator__rtree_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">src</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The rtree which content will be copied.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.throws"></a></span><a class="link" href="operator__rtree_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If Value copy constructor throws.
+ </li>
+<li class="listitem">
+ If allocation throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_rtree_____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="operator__rtree____.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/parameters__.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/parameters__.html
new file mode 100644
index 0000000000..8a15e5cd95
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/parameters__.html
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>parameters()</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="count_valueorindexable_const___.html" title="count(ValueOrIndexable const &amp;)">
+<link rel="next" href="indexable_get__.html" title="indexable_get()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="count_valueorindexable_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexable_get__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a9076baef90a3a9c6018871fa25115a73"></a><a class="link" href="parameters__.html" title="parameters()">parameters()</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129770192"></a>
+Returns parameters.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.synopsis"></a></span><a class="link" href="parameters__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code> <code class="computeroutput"><span class="identifier">parameters</span></code><code class="computeroutput"><span class="special">()</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.modifier_s_"></a></span><a class="link" href="parameters__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.returns"></a></span><a class="link" href="parameters__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.returns">Returns</a>
+ </h6>
+<p>
+ The parameters object.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.throws"></a></span><a class="link" href="parameters__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__.throws">Throws</a>
+ </h6>
+<p>
+ Nothing.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="count_valueorindexable_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexable_get__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/qbegin_predicates_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/qbegin_predicates_const___.html
new file mode 100644
index 0000000000..8cd2888b3f
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/qbegin_predicates_const___.html
@@ -0,0 +1,149 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>qbegin(Predicates const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="query_predicates_const____outiter_.html" title="query(Predicates const &amp;, OutIter)">
+<link rel="next" href="qend__.html" title="qend()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="query_predicates_const____outiter_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="qend__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a63d15f3b5b157a47045fcac3fec3b7a0"></a><a class="link" href="qbegin_predicates_const___.html" title="qbegin(Predicates const &amp;)">qbegin(Predicates
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129497728"></a>
+Returns the query iterator pointing at the begin of the query range.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.description"></a></span><a class="link" href="qbegin_predicates_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.description">Description</a>
+ </h6>
+<p>
+ This method returns the iterator which may be used to perform iterative
+ queries. For the information about the predicates which may be passed
+ to this method see <a class="link" href="query_predicates_const____outiter_.html#classboost_1_1geometry_1_1index_1_1rtree_1a7baa88eb4e7a5c640ab847513de45b3e">query()</a>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.synopsis"></a></span><a class="link" href="qbegin_predicates_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Predicates</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a83fce1047d890f327ea195ed252af176">const_query_iterator</a></code> <code class="computeroutput"><span class="identifier">qbegin</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Predicates</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">predicates</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.modifier_s_"></a></span><a class="link" href="qbegin_predicates_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.parameter_s_"></a></span><a class="link" href="qbegin_predicates_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Predicates</span> <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">predicates</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Predicates.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.returns"></a></span><a class="link" href="qbegin_predicates_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.returns">Returns</a>
+ </h6>
+<p>
+ The iterator pointing at the begin of the query range.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.h5"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.example"></a></span><a class="link" href="qbegin_predicates_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">for</span> <span class="special">(</span> <span class="identifier">Rtree</span><span class="special">::</span><span class="identifier">const_query_iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">tree</span><span class="special">.</span><span class="identifier">qbegin</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="number">10000</span><span class="special">))</span> <span class="special">;</span>
+ <span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">tree</span><span class="special">.</span><span class="identifier">qend</span><span class="special">()</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">it</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// do something with value</span>
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">has_enough_nearest_values</span><span class="special">()</span> <span class="special">)</span>
+ <span class="keyword">break</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.h6"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.throws"></a></span><a class="link" href="qbegin_predicates_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___.throws">Throws</a>
+ </h6>
+<p>
+ If predicates copy throws. If allocation throws.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="query_predicates_const____outiter_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="qend__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/qend__.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/qend__.html
new file mode 100644
index 0000000000..8e4acb9e9d
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/qend__.html
@@ -0,0 +1,101 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>qend()</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="qbegin_predicates_const___.html" title="qbegin(Predicates const &amp;)">
+<link rel="next" href="size__.html" title="size()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qbegin_predicates_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="size__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1af3b16f4732fa8113c0b2187005182513"></a><a class="link" href="qend__.html" title="qend()">qend()</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129576928"></a>
+Returns the query iterator pointing at the end of the query range.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.description"></a></span><a class="link" href="qend__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.description">Description</a>
+ </h6>
+<p>
+ This method returns the iterator which may be used to check if the query
+ has ended.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.synopsis"></a></span><a class="link" href="qend__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a83fce1047d890f327ea195ed252af176">const_query_iterator</a></code> <code class="computeroutput"><span class="identifier">qend</span></code><code class="computeroutput"><span class="special">()</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.modifier_s_"></a></span><a class="link" href="qend__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.returns"></a></span><a class="link" href="qend__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.returns">Returns</a>
+ </h6>
+<p>
+ The iterator pointing at the end of the query range.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.example"></a></span><a class="link" href="qend__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">for</span> <span class="special">(</span> <span class="identifier">Rtree</span><span class="special">::</span><span class="identifier">const_query_iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">tree</span><span class="special">.</span><span class="identifier">qbegin</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="number">10000</span><span class="special">))</span> <span class="special">;</span>
+ <span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">tree</span><span class="special">.</span><span class="identifier">qend</span><span class="special">()</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">it</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// do something with value</span>
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">has_enough_nearest_values</span><span class="special">()</span> <span class="special">)</span>
+ <span class="keyword">break</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.h5"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.throws"></a></span><a class="link" href="qend__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__.throws">Throws</a>
+ </h6>
+<p>
+ Nothing
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qbegin_predicates_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="size__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/query_predicates_const____outiter_.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/query_predicates_const____outiter_.html
new file mode 100644
index 0000000000..0efff7ca3b
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/query_predicates_const____outiter_.html
@@ -0,0 +1,266 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>query(Predicates const &amp;, OutIter)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="remove_convertibleorrange_const___.html" title="remove(ConvertibleOrRange const &amp;)">
+<link rel="next" href="qbegin_predicates_const___.html" title="qbegin(Predicates const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="qbegin_predicates_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a7baa88eb4e7a5c640ab847513de45b3e"></a><a class="link" href="query_predicates_const____outiter_.html" title="query(Predicates const &amp;, OutIter)">query(Predicates
+ const &amp;, OutIter)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129323792"></a>
+Finds values meeting passed predicates e.g. nearest to some Point and/or
+ intersecting some Box.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.description"></a></span><a class="link" href="query_predicates_const____outiter_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.description">Description</a>
+ </h6>
+<p>
+ This query function performs spatial and k-nearest neighbor searches.
+ It allows to pass a set of predicates. Values will be returned only if
+ all predicates are met.
+ </p>
+<p>
+ <span class="bold"><strong>Spatial predicates</strong></span>
+ </p>
+<p>
+ Spatial predicates may be generated by one of the functions listed below:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/contains_geometry_const___.html#group__predicates_1gac11ebb8df9e5f344e8db4af1641f6996">boost::geometry::index::contains()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/covered_by_geometry_const___.html#group__predicates_1ga67e42f17aad97c80f7c0b7a8c111cab4">boost::geometry::index::covered_by()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/covers_geometry_const___.html#group__predicates_1ga8e657466bca0bb6439680a35f08acf27">boost::geometry::index::covers()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/disjoint_geometry_const___.html#group__predicates_1gab23f7e3fa751bbbd34edec7e5387ff95">boost::geometry::index::disjoint()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/intersects_geometry_const___.html#group__predicates_1gac5e7478046508c80b6df67b7e272e374">boost::geometry::index::intersects()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/overlaps_geometry_const___.html#group__predicates_1gaf7244ba36fc959e0155c1a0b6a6fe682">boost::geometry::index::overlaps()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/within_geometry_const___.html#group__predicates_1ga3467393a0d089c8b989b16940100da71">boost::geometry::index::within()</a></code>,
+ </li>
+</ul></div>
+<p>
+ It is possible to negate spatial predicates:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/contains_geometry_const___.html#group__predicates_1gac11ebb8df9e5f344e8db4af1641f6996">boost::geometry::index::contains()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/covered_by_geometry_const___.html#group__predicates_1ga67e42f17aad97c80f7c0b7a8c111cab4">boost::geometry::index::covered_by()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/covers_geometry_const___.html#group__predicates_1ga8e657466bca0bb6439680a35f08acf27">boost::geometry::index::covers()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/disjoint_geometry_const___.html#group__predicates_1gab23f7e3fa751bbbd34edec7e5387ff95">boost::geometry::index::disjoint()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/intersects_geometry_const___.html#group__predicates_1gac5e7478046508c80b6df67b7e272e374">boost::geometry::index::intersects()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/overlaps_geometry_const___.html#group__predicates_1gaf7244ba36fc959e0155c1a0b6a6fe682">boost::geometry::index::overlaps()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/within_geometry_const___.html#group__predicates_1ga3467393a0d089c8b989b16940100da71">boost::geometry::index::within()</a></code>
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Satisfies predicate</strong></span>
+ </p>
+<p>
+ This is a special kind of predicate which allows to pass a user-defined
+ function or function object which checks if Value should be returned
+ by the query. It's generated by:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/satisfies_unarypredicate_const___.html#group__predicates_1gae24a83ce8fc7d452e16ee7d16a9ec9e3">boost::geometry::index::satisfies()</a></code>.
+ </li></ul></div>
+<p>
+ <span class="bold"><strong>Nearest predicate</strong></span>
+ </p>
+<p>
+ If the nearest predicate is passed a k-nearest neighbor search will be
+ performed. This query will result in returning k values to the output
+ iterator. Only one nearest predicate may be passed to the query. It may
+ be generated by:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/nearest_geometry_const____unsigned_.html#group__predicates_1gaa34131d6438ae2960bc3215d5bd10c36">boost::geometry::index::nearest()</a></code>.
+ </li></ul></div>
+<p>
+ <span class="bold"><strong>Connecting predicates</strong></span>
+ </p>
+<p>
+ Predicates may be passed together connected with <code class="literal"><code class="computeroutput"><span class="keyword">operator</span><span class="special">&amp;&amp;()</span></code></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.synopsis"></a></span><a class="link" href="query_predicates_const____outiter_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Predicates</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">OutIter</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1acc1f90d7b70afebc58107c523ece5cd5">size_type</a></code> <code class="computeroutput"><span class="identifier">query</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Predicates</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">predicates</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">OutIter</span></code> <code class="computeroutput"><span class="identifier">out_it</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.modifier_s_"></a></span><a class="link" href="query_predicates_const____outiter_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.parameter_s_"></a></span><a class="link" href="query_predicates_const____outiter_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Predicates</span> <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">predicates</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Predicates.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">OutIter</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">out_it</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The output iterator, e.g. generated by std::back_inserter().
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.returns"></a></span><a class="link" href="query_predicates_const____outiter_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.returns">Returns</a>
+ </h6>
+<p>
+ The number of values found.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.h5"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.example"></a></span><a class="link" href="query_predicates_const____outiter_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="comment">// return elements intersecting box</span>
+<span class="identifier">tree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="comment">// return elements intersecting poly but not within box</span>
+<span class="identifier">tree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">poly</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="special">!</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">within</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="comment">// return elements overlapping box and meeting my_fun unary predicate</span>
+<span class="identifier">tree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">overlaps</span><span class="special">(</span><span class="identifier">box</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">(</span><span class="identifier">my_fun</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="comment">// return 5 elements nearest to pt and elements are intersecting box</span>
+<span class="identifier">tree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="number">5</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.h6"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.throws"></a></span><a class="link" href="query_predicates_const____outiter_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_.throws">Throws</a>
+ </h6>
+<p>
+ If Value copy constructor or copy assignment throws. If predicates copy
+ throws.
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../../doc/src/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Only one <code class="literal"><a class="link" href="../group__predicates/nearest_geometry_const____unsigned_.html#group__predicates_1gaa34131d6438ae2960bc3215d5bd10c36">nearest()</a></code>
+ perdicate may be passed to the query. Passing more of them results
+ in compile-time error.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="qbegin_predicates_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_convertibleorrange_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_convertibleorrange_const___.html
new file mode 100644
index 0000000000..7c274bcccb
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_convertibleorrange_const___.html
@@ -0,0 +1,145 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>remove(ConvertibleOrRange const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="remove_iterator__iterator_.html" title="remove(Iterator, Iterator)">
+<link rel="next" href="query_predicates_const____outiter_.html" title="query(Predicates const &amp;, OutIter)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="query_predicates_const____outiter_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a320cd1861ba7b43364ed53e1f93a4411"></a><a class="link" href="remove_convertibleorrange_const___.html" title="remove(ConvertibleOrRange const &amp;)">remove(ConvertibleOrRange
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129268736"></a>
+Remove value corresponding to an object convertible to it or a range
+ of values from the container.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.description"></a></span><a class="link" href="remove_convertibleorrange_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.description">Description</a>
+ </h6>
+<p>
+ In contrast to the <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span></code></code>
+ or <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span> <span class="identifier">erase</span><span class="special">()</span></code></code> method it removes values
+ equal to these passed as a range. Furthermore, this method removes only
+ one value for each one passed in the range, not all equal values.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.synopsis"></a></span><a class="link" href="remove_convertibleorrange_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">ConvertibleOrRange</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1acc1f90d7b70afebc58107c523ece5cd5">size_type</a></code> <code class="computeroutput"><span class="identifier">remove</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">ConvertibleOrRange</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">conv_or_rng</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.parameter_s_"></a></span><a class="link" href="remove_convertibleorrange_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ConvertibleOrRange</span>
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">conv_or_rng</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The object of type convertible to value_type or a range of
+ values.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.returns"></a></span><a class="link" href="remove_convertibleorrange_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.returns">Returns</a>
+ </h6>
+<p>
+ The number of removed values.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.throws"></a></span><a class="link" href="remove_convertibleorrange_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If Value copy constructor or copy assignment throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../../doc/src/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This operation only guarantees that there will be no memory leaks.
+ After an exception is thrown the R-tree may be left in an inconsistent
+ state, elements must not be inserted or removed. Other operations are
+ allowed however some of them may return invalid data.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="query_predicates_const____outiter_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_iterator__iterator_.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_iterator__iterator_.html
new file mode 100644
index 0000000000..b589388893
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_iterator__iterator_.html
@@ -0,0 +1,162 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>remove(Iterator, Iterator)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="remove_value_type_const___.html" title="remove(value_type const &amp;)">
+<link rel="next" href="remove_convertibleorrange_const___.html" title="remove(ConvertibleOrRange const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_value_type_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1aa97084231d17564a94f0142d095cecaa"></a><a class="link" href="remove_iterator__iterator_.html" title="remove(Iterator, Iterator)">remove(Iterator,
+ Iterator)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129208096"></a>
+Remove a range of values from the container.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.description"></a></span><a class="link" href="remove_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.description">Description</a>
+ </h6>
+<p>
+ In contrast to the <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span></code></code>
+ or <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span> <span class="identifier">erase</span><span class="special">()</span></code></code> method it doesn't take iterators
+ pointing to values stored in this container. It removes values equal
+ to these passed as a range. Furthermore this method removes only one
+ value for each one passed in the range, not all equal values.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.synopsis"></a></span><a class="link" href="remove_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Iterator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1acc1f90d7b70afebc58107c523ece5cd5">size_type</a></code> <code class="computeroutput"><span class="identifier">remove</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Iterator</span></code> <code class="computeroutput"><span class="identifier">first</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">Iterator</span></code> <code class="computeroutput"><span class="identifier">last</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.parameter_s_"></a></span><a class="link" href="remove_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">first</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The beginning of the range of values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">last</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The end of the range of values.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.returns"></a></span><a class="link" href="remove_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.returns">Returns</a>
+ </h6>
+<p>
+ The number of removed values.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.throws"></a></span><a class="link" href="remove_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If Value copy constructor or copy assignment throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../../doc/src/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This operation only guarantees that there will be no memory leaks.
+ After an exception is thrown the R-tree may be left in an inconsistent
+ state, elements must not be inserted or removed. Other operations are
+ allowed however some of them may return invalid data.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_value_type_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_value_type_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_value_type_const___.html
new file mode 100644
index 0000000000..cd4bf46e97
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_value_type_const___.html
@@ -0,0 +1,141 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>remove(value_type const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="insert_convertibleorrange_const___.html" title="insert(ConvertibleOrRange const &amp;)">
+<link rel="next" href="remove_iterator__iterator_.html" title="remove(Iterator, Iterator)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a1ce933b0b833faec5349bfc27bde15d4"></a><a class="link" href="remove_value_type_const___.html" title="remove(value_type const &amp;)">remove(value_type
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129156512"></a>
+Remove a value from the container.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.description"></a></span><a class="link" href="remove_value_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.description">Description</a>
+ </h6>
+<p>
+ In contrast to the <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span></code></code>
+ or <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span> <span class="identifier">erase</span><span class="special">()</span></code></code> method this method removes
+ only one value from the container.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.synopsis"></a></span><a class="link" href="remove_value_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1acc1f90d7b70afebc58107c523ece5cd5">size_type</a></code> <code class="computeroutput"><span class="identifier">remove</span></code><code class="computeroutput"><span class="special">(</span></code><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a5761a41d87b93d4fd548ecb6600ae757">value_type</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">value</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.parameter_s_"></a></span><a class="link" href="remove_value_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a5761a41d87b93d4fd548ecb6600ae757">value_type</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">value</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The value which will be removed from the container.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.returns"></a></span><a class="link" href="remove_value_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.returns">Returns</a>
+ </h6>
+<p>
+ 1 if the value was removed, 0 otherwise.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.throws"></a></span><a class="link" href="remove_value_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If Value copy constructor or copy assignment throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../../doc/src/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This operation only guarantees that there will be no memory leaks.
+ After an exception is thrown the R-tree may be left in an inconsistent
+ state, elements must not be inserted or removed. Other operations are
+ allowed however some of them may return invalid data.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree__.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree__.html
new file mode 100644
index 0000000000..81caf23d71
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree__.html
@@ -0,0 +1,156 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>rtree()</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="next" href="rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html" title="rtree(parameters_type const &amp;, indexable_getter const &amp;, value_equal const &amp;, allocator_type const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a55d5fd5d205df08db5267253689ccf0c"></a><a class="link" href="rtree__.html" title="rtree()">rtree()</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128365600"></a>
+The constructor.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.synopsis"></a></span><a class="link" href="rtree__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="identifier">rtree</span></code><code class="computeroutput"><span class="special">(</span></code><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">parameters</span></code> = <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code><code class="computeroutput"><span class="special">()</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">getter</span></code> = <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code><code class="computeroutput"><span class="special">()</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">equal</span></code> = <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code><code class="computeroutput"><span class="special">()</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.modifier_s_"></a></span><a class="link" href="rtree__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">explicit</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.parameter_s_"></a></span><a class="link" href="rtree__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">parameters</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The parameters object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">getter</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object extracting Indexable from Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">equal</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object comparing Values.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.throws"></a></span><a class="link" href="rtree__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__.throws">Throws</a>
+ </h6>
+<p>
+ If allocator default constructor throws.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_iterator__iterator_.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_iterator__iterator_.html
new file mode 100644
index 0000000000..004c729e50
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_iterator__iterator_.html
@@ -0,0 +1,219 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>rtree(Iterator, Iterator)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html" title="rtree(parameters_type const &amp;, indexable_getter const &amp;, value_equal const &amp;, allocator_type const &amp;)">
+<link rel="next" href="rtree_range_const___.html" title="rtree(Range const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_range_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a037f17d8a1dfa4a818ff471dec61c912"></a><a class="link" href="rtree_iterator__iterator_.html" title="rtree(Iterator, Iterator)">rtree(Iterator,
+ Iterator)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128508240"></a>
+The constructor.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.description"></a></span><a class="link" href="rtree_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.description">Description</a>
+ </h6>
+<p>
+ The tree is created using packing algorithm.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.synopsis"></a></span><a class="link" href="rtree_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Iterator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">rtree</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Iterator</span></code> <code class="computeroutput"><span class="identifier">first</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code> <code class="computeroutput"><span class="identifier">last</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">parameters</span></code> = <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code><code class="computeroutput"><span class="special">()</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">getter</span></code> = <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code><code class="computeroutput"><span class="special">()</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">equal</span></code> = <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code><code class="computeroutput"><span class="special">()</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">allocator</span></code> = <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput"><span class="special">()</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.parameter_s_"></a></span><a class="link" href="rtree_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">first</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The beginning of the range of Values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">last</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The end of the range of Values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">parameters</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The parameters object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">getter</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object extracting Indexable from Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">equal</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object comparing Values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">allocator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The allocator object.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.throws"></a></span><a class="link" href="rtree_iterator__iterator_.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If allocator copy constructor throws.
+ </li>
+<li class="listitem">
+ If Value copy constructor or copy assignment throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_range_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html
new file mode 100644
index 0000000000..c0289a4c5c
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html
@@ -0,0 +1,168 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>rtree(parameters_type const &amp;, indexable_getter const &amp;, value_equal const &amp;, allocator_type const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="rtree__.html" title="rtree()">
+<link rel="next" href="rtree_iterator__iterator_.html" title="rtree(Iterator, Iterator)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a1a6b696d4855cbf1866196fe058c3a87"></a><a class="link" href="rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html" title="rtree(parameters_type const &amp;, indexable_getter const &amp;, value_equal const &amp;, allocator_type const &amp;)">rtree(parameters_type
+ const &amp;, indexable_getter const &amp;, value_equal const &amp;, allocator_type
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128436016"></a>
+The constructor.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.synopsis"></a></span><a class="link" href="rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="identifier">rtree</span></code><code class="computeroutput"><span class="special">(</span></code><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">getter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">equal</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">allocator</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.parameter_s_"></a></span><a class="link" href="rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">parameters</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The parameters object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">getter</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object extracting Indexable from Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">equal</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object comparing Values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">allocator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The allocator object.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.throws"></a></span><a class="link" href="rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.throws">Throws</a>
+ </h6>
+<p>
+ If allocator copy constructor throws.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_range_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_range_const___.html
new file mode 100644
index 0000000000..92b67ff5e3
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_range_const___.html
@@ -0,0 +1,211 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>rtree(Range const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="rtree_iterator__iterator_.html" title="rtree(Iterator, Iterator)">
+<link rel="next" href="_rtree__.html" title="~rtree()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="_rtree__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a7b96b715c52ddc13d7a81db344825848"></a><a class="link" href="rtree_range_const___.html" title="rtree(Range const &amp;)">rtree(Range
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128614992"></a>
+The constructor.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.description"></a></span><a class="link" href="rtree_range_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.description">Description</a>
+ </h6>
+<p>
+ The tree is created using packing algorithm.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.synopsis"></a></span><a class="link" href="rtree_range_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Range</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">rtree</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Range</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">rng</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">parameters</span></code> = <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code><code class="computeroutput"><span class="special">()</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">getter</span></code> = <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code><code class="computeroutput"><span class="special">()</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">equal</span></code> = <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code><code class="computeroutput"><span class="special">()</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">allocator</span></code> = <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput"><span class="special">()</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.modifier_s_"></a></span><a class="link" href="rtree_range_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">explicit</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.parameter_s_"></a></span><a class="link" href="rtree_range_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Range</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rng</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The range of Values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a80db5532eb59f7a809bd44ded265eb17">parameters_type</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">parameters</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The parameters object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1a43a7adb311cafc08e23010ccb4e97fb5">indexable_getter</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">getter</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object extracting Indexable from Value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">equal</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The function object comparing Values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">allocator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The allocator object.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.throws"></a></span><a class="link" href="rtree_range_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If allocator copy constructor throws.
+ </li>
+<li class="listitem">
+ If Value copy constructor or copy assignment throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="_rtree__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree____.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree____.html
new file mode 100644
index 0000000000..0a792806d9
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree____.html
@@ -0,0 +1,115 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>rtree(rtree &amp;&amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="rtree_rtree_const____allocator_type_const___.html" title="rtree(rtree const &amp;, allocator_type const &amp;)">
+<link rel="next" href="rtree_rtree_____allocator_type_const___.html" title="rtree(rtree &amp;&amp;, allocator_type const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_rtree_const____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_rtree_____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1aa8b27db8cb783282ab5274e6769da26a"></a><a class="link" href="rtree_rtree____.html" title="rtree(rtree &amp;&amp;)">rtree(rtree
+ &amp;&amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128826720"></a>
+The moving constructor.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.description"></a></span><a class="link" href="rtree_rtree____.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.description">Description</a>
+ </h6>
+<p>
+ It uses parameters, translator and allocator from the source tree.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.synopsis"></a></span><a class="link" href="rtree_rtree____.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="identifier">rtree</span></code><code class="computeroutput"><span class="special">(</span></code><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput"> <span class="special">&amp;&amp;</span></code> <code class="computeroutput"><span class="identifier">src</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.parameter_s_"></a></span><a class="link" href="rtree_rtree____.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput">
+ <span class="special">&amp;&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">src</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The rtree which content will be moved.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.throws"></a></span><a class="link" href="rtree_rtree____.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____.throws">Throws</a>
+ </h6>
+<p>
+ Nothing.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_rtree_const____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_rtree_____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_____allocator_type_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_____allocator_type_const___.html
new file mode 100644
index 0000000000..105a58be68
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_____allocator_type_const___.html
@@ -0,0 +1,144 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>rtree(rtree &amp;&amp;, allocator_type const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="rtree_rtree____.html" title="rtree(rtree &amp;&amp;)">
+<link rel="next" href="operator__rtree_const___.html" title="operator=(rtree const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_rtree____.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="operator__rtree_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a8508c4236d17ff39a1caef058aac8486"></a><a class="link" href="rtree_rtree_____allocator_type_const___.html" title="rtree(rtree &amp;&amp;, allocator_type const &amp;)">rtree(rtree
+ &amp;&amp;, allocator_type const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128862176"></a>
+The moving constructor.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.description"></a></span><a class="link" href="rtree_rtree_____allocator_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.description">Description</a>
+ </h6>
+<p>
+ It uses parameters and translator from the source tree.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.synopsis"></a></span><a class="link" href="rtree_rtree_____allocator_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="identifier">rtree</span></code><code class="computeroutput"><span class="special">(</span></code><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput"> <span class="special">&amp;&amp;</span></code> <code class="computeroutput"><span class="identifier">src</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">allocator</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.parameter_s_"></a></span><a class="link" href="rtree_rtree_____allocator_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput">
+ <span class="special">&amp;&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">src</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The rtree which content will be moved.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">allocator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The allocator.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.throws"></a></span><a class="link" href="rtree_rtree_____allocator_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If allocator copy constructor throws.
+ </li>
+<li class="listitem">
+ If Value copy constructor throws (only if allocators aren't equal).
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value (only if allocators
+ aren't equal).
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_rtree____.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="operator__rtree_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const___.html
new file mode 100644
index 0000000000..3de941fc15
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const___.html
@@ -0,0 +1,123 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>rtree(rtree const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="_rtree__.html" title="~rtree()">
+<link rel="next" href="rtree_rtree_const____allocator_type_const___.html" title="rtree(rtree const &amp;, allocator_type const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="_rtree__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_rtree_const____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a826fc3236e181ad718d5283e95d7866f"></a><a class="link" href="rtree_rtree_const___.html" title="rtree(rtree const &amp;)">rtree(rtree
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128734288"></a>
+The copy constructor.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.description"></a></span><a class="link" href="rtree_rtree_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.description">Description</a>
+ </h6>
+<p>
+ It uses parameters, translator and allocator from the source tree.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.synopsis"></a></span><a class="link" href="rtree_rtree_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="identifier">rtree</span></code><code class="computeroutput"><span class="special">(</span></code><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">src</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.parameter_s_"></a></span><a class="link" href="rtree_rtree_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">src</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The rtree which content will be copied.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.throws"></a></span><a class="link" href="rtree_rtree_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If allocator copy constructor throws.
+ </li>
+<li class="listitem">
+ If Value copy constructor throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="_rtree__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_rtree_const____allocator_type_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const____allocator_type_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const____allocator_type_const___.html
new file mode 100644
index 0000000000..a45861e039
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const____allocator_type_const___.html
@@ -0,0 +1,143 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>rtree(rtree const &amp;, allocator_type const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="rtree_rtree_const___.html" title="rtree(rtree const &amp;)">
+<link rel="next" href="rtree_rtree____.html" title="rtree(rtree &amp;&amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_rtree_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_rtree____.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a72b6b75e083eea2ed26f54d4a2265375"></a><a class="link" href="rtree_rtree_const____allocator_type_const___.html" title="rtree(rtree const &amp;, allocator_type const &amp;)">rtree(rtree
+ const &amp;, allocator_type const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128774048"></a>
+The copy constructor.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.description"></a></span><a class="link" href="rtree_rtree_const____allocator_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.description">Description</a>
+ </h6>
+<p>
+ It uses Parameters and translator from the source tree.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.synopsis"></a></span><a class="link" href="rtree_rtree_const____allocator_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="identifier">rtree</span></code><code class="computeroutput"><span class="special">(</span></code><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">src</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput"> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">allocator</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.parameter_s_"></a></span><a class="link" href="rtree_rtree_const____allocator_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">src</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The rtree which content will be copied.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ab6618b5c7e88ed70533233fbac0f5b2e">allocator_type</a></code><code class="computeroutput">
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">allocator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The allocator which will be used.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.throws"></a></span><a class="link" href="rtree_rtree_const____allocator_type_const___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___.throws">Throws</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ If allocator copy constructor throws.
+ </li>
+<li class="listitem">
+ If Value copy constructor throws.
+ </li>
+<li class="listitem">
+ If allocation throws or returns invalid value.
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_rtree_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_rtree____.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/size__.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/size__.html
new file mode 100644
index 0000000000..652fe2057f
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/size__.html
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>size()</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="qend__.html" title="qend()">
+<link rel="next" href="empty__.html" title="empty()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qend__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="empty__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1ac9f152c8c96525e3735b81635d8171b1"></a><a class="link" href="size__.html" title="size()">size()</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129631504"></a>
+Returns the number of stored values.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.synopsis"></a></span><a class="link" href="size__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1acc1f90d7b70afebc58107c523ece5cd5">size_type</a></code> <code class="computeroutput"><span class="identifier">size</span></code><code class="computeroutput"><span class="special">()</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.modifier_s_"></a></span><a class="link" href="size__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.returns"></a></span><a class="link" href="size__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.returns">Returns</a>
+ </h6>
+<p>
+ The number of stored values.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.throws"></a></span><a class="link" href="size__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__.throws">Throws</a>
+ </h6>
+<p>
+ Nothing.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qend__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="empty__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/swap_rtree___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/swap_rtree___.html
new file mode 100644
index 0000000000..4fd131287f
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/swap_rtree___.html
@@ -0,0 +1,115 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>swap(rtree &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="operator__rtree____.html" title="operator=(rtree &amp;&amp;)">
+<link rel="next" href="insert_value_type_const___.html" title="insert(value_type const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="operator__rtree____.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_value_type_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1aedb719dfece91d298e9ee56878524c9b"></a><a class="link" href="swap_rtree___.html" title="swap(rtree &amp;)">swap(rtree
+ &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp128995520"></a>
+Swaps contents of two rtrees.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.description"></a></span><a class="link" href="swap_rtree___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.description">Description</a>
+ </h6>
+<p>
+ Parameters, translator and allocators are swapped as well.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.synopsis"></a></span><a class="link" href="swap_rtree___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">void</span></code> <code class="computeroutput"><span class="identifier">swap</span></code><code class="computeroutput"><span class="special">(</span></code><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput"> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">other</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.parameter_s_"></a></span><a class="link" href="swap_rtree___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree">rtree</a></code><code class="computeroutput">
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">other</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The rtree which content will be swapped with this rtree content.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.throws"></a></span><a class="link" href="swap_rtree___.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___.throws">Throws</a>
+ </h6>
+<p>
+ If allocators swap throws.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="operator__rtree____.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_value_type_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/value_eq__.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/value_eq__.html
new file mode 100644
index 0000000000..dd6bd517e5
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree/value_eq__.html
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>value_eq()</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../boost__geometry__index__rtree.html" title="boost::geometry::index::rtree">
+<link rel="prev" href="indexable_get__.html" title="indexable_get()">
+<link rel="next" href="get_allocator__.html" title="get_allocator()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="indexable_get__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_allocator__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__"></a><a name="classboost_1_1geometry_1_1index_1_1rtree_1a16424563d0973960ac01f7a1969eeebe"></a><a class="link" href="value_eq__.html" title="value_eq()">value_eq()</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129815536"></a>
+Returns function comparing Values.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.synopsis"></a></span><a class="link" href="value_eq__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="literal"><a class="link" href="../boost__geometry__index__rtree.html#classboost_1_1geometry_1_1index_1_1rtree_1ad8fe544de514014a1bd87ea1b881ff9b">value_equal</a></code> <code class="computeroutput"><span class="identifier">value_eq</span></code><code class="computeroutput"><span class="special">()</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.modifier_s_"></a></span><a class="link" href="value_eq__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.modifier_s_">Modifier(s)</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.returns"></a></span><a class="link" href="value_eq__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.returns">Returns</a>
+ </h6>
+<p>
+ The value_equal function.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.throws"></a></span><a class="link" href="value_eq__.html#geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__.throws">Throws</a>
+ </h6>
+<p>
+ Nothing.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="indexable_get__.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost__geometry__index__rtree.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_allocator__.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__adaptors.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__adaptors.html
new file mode 100644
index 0000000000..6aebbae75c
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__adaptors.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Adaptors (boost::geometry::index::adaptors::)</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="group__inserters/inserter_container___.html" title="inserter(Container &amp;)">
+<link rel="next" href="group__adaptors/queried_predicates_const___.html" title="queried(Predicates const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="group__inserters/inserter_container___.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="group__adaptors/queried_predicates_const___.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.spatial_indexes.group__adaptors"></a><a class="link" href="group__adaptors.html" title="Adaptors (boost::geometry::index::adaptors::)">Adaptors
+ (boost::geometry::index::adaptors::)</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section"><a href="group__adaptors/queried_predicates_const___.html">queried(Predicates
+ const &amp;)</a></span></dt></dl></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__adaptors.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__adaptors.functions"></a></span><a class="link" href="group__adaptors.html#geometry.reference.spatial_indexes.group__adaptors.functions">Functions</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <a class="link" href="group__adaptors/queried_predicates_const___.html#group__adaptors_1ga4716cd5423bfed3ff3e69e9ec274ac81"><code class="computeroutput"><span class="identifier">queried</span><span class="special">(</span><span class="identifier">Predicates</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The query index adaptor generator.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="group__inserters/inserter_container___.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="group__adaptors/queried_predicates_const___.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__adaptors/queried_predicates_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__adaptors/queried_predicates_const___.html
new file mode 100644
index 0000000000..31e0c528b2
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__adaptors/queried_predicates_const___.html
@@ -0,0 +1,101 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>queried(Predicates const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__adaptors.html" title="Adaptors (boost::geometry::index::adaptors::)">
+<link rel="prev" href="../group__adaptors.html" title="Adaptors (boost::geometry::index::adaptors::)">
+<link rel="next" href="../group__predicates.html" title="Predicates (boost::geometry::index::)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../group__adaptors.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__adaptors.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__adaptors.queried_predicates_const___"></a><a name="group__adaptors_1ga4716cd5423bfed3ff3e69e9ec274ac81"></a><a class="link" href="queried_predicates_const___.html" title="queried(Predicates const &amp;)">queried(Predicates
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp132076544"></a>
+The query index adaptor generator.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__adaptors.queried_predicates_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__adaptors.queried_predicates_const___.synopsis"></a></span><a class="link" href="queried_predicates_const___.html#geometry.reference.spatial_indexes.group__adaptors.queried_predicates_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Predicates</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">query</span><span class="special">&lt;</span><span class="identifier">Predicates</span><span class="special">&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">queried</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Predicates</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">pred</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__adaptors.queried_predicates_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__adaptors.queried_predicates_const___.parameter_s_"></a></span><a class="link" href="queried_predicates_const___.html#geometry.reference.spatial_indexes.group__adaptors.queried_predicates_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Predicates</span> <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pred</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Predicates.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../group__adaptors.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__adaptors.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__inserters.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__inserters.html
new file mode 100644
index 0000000000..b96ac1c210
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__inserters.html
@@ -0,0 +1,81 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Inserters (boost::geometry::index::)</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="observers/boost__geometry__index__equal_to.html" title="boost::geometry::index::equal_to">
+<link rel="next" href="group__inserters/inserter_container___.html" title="inserter(Container &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="observers/boost__geometry__index__equal_to.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="group__inserters/inserter_container___.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.spatial_indexes.group__inserters"></a><a class="link" href="group__inserters.html" title="Inserters (boost::geometry::index::)">Inserters
+ (boost::geometry::index::)</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section"><a href="group__inserters/inserter_container___.html">inserter(Container
+ &amp;)</a></span></dt></dl></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__inserters.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__inserters.functions"></a></span><a class="link" href="group__inserters.html#geometry.reference.spatial_indexes.group__inserters.functions">Functions</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <a class="link" href="group__inserters/inserter_container___.html#group__inserters_1gab22c33d31b9805250e54ee6d6d240a47"><code class="computeroutput"><span class="identifier">inserter</span><span class="special">(</span><span class="identifier">Container</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Insert iterator generator.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="observers/boost__geometry__index__equal_to.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="group__inserters/inserter_container___.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__inserters/inserter_container___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__inserters/inserter_container___.html
new file mode 100644
index 0000000000..860b0514aa
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__inserters/inserter_container___.html
@@ -0,0 +1,117 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>inserter(Container &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__inserters.html" title="Inserters (boost::geometry::index::)">
+<link rel="prev" href="../group__inserters.html" title="Inserters (boost::geometry::index::)">
+<link rel="next" href="../group__adaptors.html" title="Adaptors (boost::geometry::index::adaptors::)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../group__inserters.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__inserters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../group__adaptors.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__inserters.inserter_container___"></a><a name="group__inserters_1gab22c33d31b9805250e54ee6d6d240a47"></a><a class="link" href="inserter_container___.html" title="inserter(Container &amp;)">inserter(Container
+ &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp132016736"></a>
+Insert iterator generator.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__inserters.inserter_container___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__inserters.inserter_container___.description"></a></span><a class="link" href="inserter_container___.html#geometry.reference.spatial_indexes.group__inserters.inserter_container___.description">Description</a>
+ </h6>
+<p>
+ Returns insert iterator capable to insert values to the container (spatial
+ index) which has member function insert(value_type const&amp;) defined.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__inserters.inserter_container___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__inserters.inserter_container___.synopsis"></a></span><a class="link" href="inserter_container___.html#geometry.reference.spatial_indexes.group__inserters.inserter_container___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Container</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">insert_iterator</span><span class="special">&lt;</span><span class="identifier">Container</span><span class="special">&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">inserter</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Container</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">c</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__inserters.inserter_container___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__inserters.inserter_container___.parameter_s_"></a></span><a class="link" href="inserter_container___.html#geometry.reference.spatial_indexes.group__inserters.inserter_container___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Container</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">c</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The reference to the container (spatial index) to which values
+ will be inserted.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__inserters.inserter_container___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__inserters.inserter_container___.returns"></a></span><a class="link" href="inserter_container___.html#geometry.reference.spatial_indexes.group__inserters.inserter_container___.returns">Returns</a>
+ </h6>
+<p>
+ The insert iterator inserting values to the container.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../group__inserters.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__inserters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../group__adaptors.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates.html
new file mode 100644
index 0000000000..9e18cecc31
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates.html
@@ -0,0 +1,215 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Predicates (boost::geometry::index::)</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="group__adaptors/queried_predicates_const___.html" title="queried(Predicates const &amp;)">
+<link rel="next" href="group__predicates/contains_geometry_const___.html" title="contains(Geometry const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="group__adaptors/queried_predicates_const___.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="group__predicates/contains_geometry_const___.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.spatial_indexes.group__predicates"></a><a class="link" href="group__predicates.html" title="Predicates (boost::geometry::index::)">Predicates
+ (boost::geometry::index::)</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="group__predicates/contains_geometry_const___.html">contains(Geometry
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__predicates/covered_by_geometry_const___.html">covered_by(Geometry
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__predicates/covers_geometry_const___.html">covers(Geometry
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__predicates/disjoint_geometry_const___.html">disjoint(Geometry
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__predicates/intersects_geometry_const___.html">intersects(Geometry
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__predicates/overlaps_geometry_const___.html">overlaps(Geometry
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__predicates/within_geometry_const___.html">within(Geometry
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__predicates/satisfies_unarypredicate_const___.html">satisfies(UnaryPredicate
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__predicates/nearest_geometry_const____unsigned_.html">nearest(Geometry
+ const &amp;, unsigned)</a></span></dt>
+</dl></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.functions"></a></span><a class="link" href="group__predicates.html#geometry.reference.spatial_indexes.group__predicates.functions">Functions</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__predicates/contains_geometry_const___.html#group__predicates_1gac11ebb8df9e5f344e8db4af1641f6996"><code class="computeroutput"><span class="identifier">contains</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate <code class="literal"><a class="link" href="group__predicates/contains_geometry_const___.html#group__predicates_1gac11ebb8df9e5f344e8db4af1641f6996">contains()</a></code>
+ predicate.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__predicates/covered_by_geometry_const___.html#group__predicates_1ga67e42f17aad97c80f7c0b7a8c111cab4"><code class="computeroutput"><span class="identifier">covered_by</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate <code class="literal"><a class="link" href="group__predicates/covered_by_geometry_const___.html#group__predicates_1ga67e42f17aad97c80f7c0b7a8c111cab4">covered_by()</a></code>
+ predicate.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__predicates/covers_geometry_const___.html#group__predicates_1ga8e657466bca0bb6439680a35f08acf27"><code class="computeroutput"><span class="identifier">covers</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate <code class="literal"><a class="link" href="group__predicates/covers_geometry_const___.html#group__predicates_1ga8e657466bca0bb6439680a35f08acf27">covers()</a></code>
+ predicate.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__predicates/disjoint_geometry_const___.html#group__predicates_1gab23f7e3fa751bbbd34edec7e5387ff95"><code class="computeroutput"><span class="identifier">disjoint</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate <code class="literal"><a class="link" href="group__predicates/disjoint_geometry_const___.html#group__predicates_1gab23f7e3fa751bbbd34edec7e5387ff95">disjoint()</a></code>
+ predicate.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__predicates/intersects_geometry_const___.html#group__predicates_1gac5e7478046508c80b6df67b7e272e374"><code class="computeroutput"><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate <code class="literal"><a class="link" href="group__predicates/intersects_geometry_const___.html#group__predicates_1gac5e7478046508c80b6df67b7e272e374">intersects()</a></code>
+ predicate.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__predicates/overlaps_geometry_const___.html#group__predicates_1gaf7244ba36fc959e0155c1a0b6a6fe682"><code class="computeroutput"><span class="identifier">overlaps</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate <code class="literal"><a class="link" href="group__predicates/overlaps_geometry_const___.html#group__predicates_1gaf7244ba36fc959e0155c1a0b6a6fe682">overlaps()</a></code>
+ predicate.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__predicates/within_geometry_const___.html#group__predicates_1ga3467393a0d089c8b989b16940100da71"><code class="computeroutput"><span class="identifier">within</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate <code class="literal"><a class="link" href="group__predicates/within_geometry_const___.html#group__predicates_1ga3467393a0d089c8b989b16940100da71">within()</a></code>
+ predicate.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__predicates/satisfies_unarypredicate_const___.html#group__predicates_1gae24a83ce8fc7d452e16ee7d16a9ec9e3"><code class="computeroutput"><span class="identifier">satisfies</span><span class="special">(</span><span class="identifier">UnaryPredicate</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate <a class="link" href="group__predicates/satisfies_unarypredicate_const___.html#group__predicates_1gae24a83ce8fc7d452e16ee7d16a9ec9e3">satisfies()</a>
+ predicate.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__predicates/nearest_geometry_const____unsigned_.html#group__predicates_1gaa34131d6438ae2960bc3215d5bd10c36"><code class="computeroutput"><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;,</span> <span class="keyword">unsigned</span><span class="special">)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate <a class="link" href="group__predicates/nearest_geometry_const____unsigned_.html#group__predicates_1gaa34131d6438ae2960bc3215d5bd10c36">nearest()</a>
+ predicate.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="group__adaptors/queried_predicates_const___.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="group__predicates/contains_geometry_const___.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/contains_geometry_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/contains_geometry_const___.html
new file mode 100644
index 0000000000..cf66f6c6f3
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/contains_geometry_const___.html
@@ -0,0 +1,156 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>contains(Geometry const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__predicates.html" title="Predicates (boost::geometry::index::)">
+<link rel="prev" href="../group__predicates.html" title="Predicates (boost::geometry::index::)">
+<link rel="next" href="covered_by_geometry_const___.html" title="covered_by(Geometry const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="covered_by_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___"></a><a name="group__predicates_1gac11ebb8df9e5f344e8db4af1641f6996"></a><a class="link" href="contains_geometry_const___.html" title="contains(Geometry const &amp;)">contains(Geometry
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp132194704"></a>
+Generate <code class="literal"><a class="link" href="contains_geometry_const___.html#group__predicates_1gac11ebb8df9e5f344e8db4af1641f6996">contains()</a></code>
+ predicate.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.description"></a></span><a class="link" href="contains_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.description">Description</a>
+ </h6>
+<p>
+ Generate a predicate defining Value and Geometry relationship. Value
+ will be returned by the query if <code class="literal"><code class="computeroutput"><span class="identifier">bg</span><span class="special">::</span><span class="identifier">within</span><span class="special">(</span><span class="identifier">Geometry</span><span class="special">,</span> <span class="identifier">Indexable</span><span class="special">)</span></code></code> returns true.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.synopsis"></a></span><a class="link" href="contains_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Geometry</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">spatial_predicate</span><span class="special">&lt;</span><span class="identifier">Geometry</span><span class="special">,</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">contains_tag</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">contains</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">g</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.template_parameter_s_"></a></span><a class="link" href="contains_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry type.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.parameter_s_"></a></span><a class="link" href="contains_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">g</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry object.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.example"></a></span><a class="link" href="contains_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">contains</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="covered_by_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/covered_by_geometry_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/covered_by_geometry_const___.html
new file mode 100644
index 0000000000..f6f03fcf16
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/covered_by_geometry_const___.html
@@ -0,0 +1,156 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>covered_by(Geometry const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__predicates.html" title="Predicates (boost::geometry::index::)">
+<link rel="prev" href="contains_geometry_const___.html" title="contains(Geometry const &amp;)">
+<link rel="next" href="covers_geometry_const___.html" title="covers(Geometry const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contains_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="covers_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___"></a><a name="group__predicates_1ga67e42f17aad97c80f7c0b7a8c111cab4"></a><a class="link" href="covered_by_geometry_const___.html" title="covered_by(Geometry const &amp;)">covered_by(Geometry
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp132272496"></a>
+Generate <code class="literal"><a class="link" href="covered_by_geometry_const___.html#group__predicates_1ga67e42f17aad97c80f7c0b7a8c111cab4">covered_by()</a></code>
+ predicate.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.description"></a></span><a class="link" href="covered_by_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.description">Description</a>
+ </h6>
+<p>
+ Generate a predicate defining Value and Geometry relationship. Value
+ will be returned by the query if <code class="literal"><code class="computeroutput"><span class="identifier">bg</span><span class="special">::</span><span class="identifier">covered_by</span><span class="special">(</span><span class="identifier">Indexable</span><span class="special">,</span> <span class="identifier">Geometry</span><span class="special">)</span></code></code> returns true.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.synopsis"></a></span><a class="link" href="covered_by_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Geometry</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">spatial_predicate</span><span class="special">&lt;</span><span class="identifier">Geometry</span><span class="special">,</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">covered_by_tag</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">covered_by</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">g</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.template_parameter_s_"></a></span><a class="link" href="covered_by_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry type.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.parameter_s_"></a></span><a class="link" href="covered_by_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">g</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry object.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.example"></a></span><a class="link" href="covered_by_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">covered_by</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="contains_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="covers_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/covers_geometry_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/covers_geometry_const___.html
new file mode 100644
index 0000000000..8f9fae295b
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/covers_geometry_const___.html
@@ -0,0 +1,156 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>covers(Geometry const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__predicates.html" title="Predicates (boost::geometry::index::)">
+<link rel="prev" href="covered_by_geometry_const___.html" title="covered_by(Geometry const &amp;)">
+<link rel="next" href="disjoint_geometry_const___.html" title="disjoint(Geometry const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="covered_by_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="disjoint_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___"></a><a name="group__predicates_1ga8e657466bca0bb6439680a35f08acf27"></a><a class="link" href="covers_geometry_const___.html" title="covers(Geometry const &amp;)">covers(Geometry
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp132350288"></a>
+Generate <code class="literal"><a class="link" href="covers_geometry_const___.html#group__predicates_1ga8e657466bca0bb6439680a35f08acf27">covers()</a></code>
+ predicate.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.description"></a></span><a class="link" href="covers_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.description">Description</a>
+ </h6>
+<p>
+ Generate a predicate defining Value and Geometry relationship. Value
+ will be returned by the query if <code class="literal"><code class="computeroutput"><span class="identifier">bg</span><span class="special">::</span><span class="identifier">covered_by</span><span class="special">(</span><span class="identifier">Geometry</span><span class="special">,</span> <span class="identifier">Indexable</span><span class="special">)</span></code></code> returns true.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.synopsis"></a></span><a class="link" href="covers_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Geometry</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">spatial_predicate</span><span class="special">&lt;</span><span class="identifier">Geometry</span><span class="special">,</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">covers_tag</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">covers</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">g</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.template_parameter_s_"></a></span><a class="link" href="covers_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry type.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.parameter_s_"></a></span><a class="link" href="covers_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">g</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry object.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.example"></a></span><a class="link" href="covers_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">covers</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="covered_by_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="disjoint_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/disjoint_geometry_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/disjoint_geometry_const___.html
new file mode 100644
index 0000000000..5d63e6735d
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/disjoint_geometry_const___.html
@@ -0,0 +1,156 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>disjoint(Geometry const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__predicates.html" title="Predicates (boost::geometry::index::)">
+<link rel="prev" href="covers_geometry_const___.html" title="covers(Geometry const &amp;)">
+<link rel="next" href="intersects_geometry_const___.html" title="intersects(Geometry const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="covers_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="intersects_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___"></a><a name="group__predicates_1gab23f7e3fa751bbbd34edec7e5387ff95"></a><a class="link" href="disjoint_geometry_const___.html" title="disjoint(Geometry const &amp;)">disjoint(Geometry
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp132428400"></a>
+Generate <code class="literal"><a class="link" href="disjoint_geometry_const___.html#group__predicates_1gab23f7e3fa751bbbd34edec7e5387ff95">disjoint()</a></code>
+ predicate.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.description"></a></span><a class="link" href="disjoint_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.description">Description</a>
+ </h6>
+<p>
+ Generate a predicate defining Value and Geometry relationship. Value
+ will be returned by the query if <code class="literal"><code class="computeroutput"><span class="identifier">bg</span><span class="special">::</span><span class="identifier">disjoint</span><span class="special">(</span><span class="identifier">Indexable</span><span class="special">,</span> <span class="identifier">Geometry</span><span class="special">)</span></code></code> returns true.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.synopsis"></a></span><a class="link" href="disjoint_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Geometry</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">spatial_predicate</span><span class="special">&lt;</span><span class="identifier">Geometry</span><span class="special">,</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">disjoint_tag</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">disjoint</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">g</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.template_parameter_s_"></a></span><a class="link" href="disjoint_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry type.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.parameter_s_"></a></span><a class="link" href="disjoint_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">g</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry object.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.example"></a></span><a class="link" href="disjoint_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">disjoint</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="covers_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="intersects_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/intersects_geometry_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/intersects_geometry_const___.html
new file mode 100644
index 0000000000..575b796513
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/intersects_geometry_const___.html
@@ -0,0 +1,158 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>intersects(Geometry const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__predicates.html" title="Predicates (boost::geometry::index::)">
+<link rel="prev" href="disjoint_geometry_const___.html" title="disjoint(Geometry const &amp;)">
+<link rel="next" href="overlaps_geometry_const___.html" title="overlaps(Geometry const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="disjoint_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="overlaps_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___"></a><a name="group__predicates_1gac5e7478046508c80b6df67b7e272e374"></a><a class="link" href="intersects_geometry_const___.html" title="intersects(Geometry const &amp;)">intersects(Geometry
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp132506544"></a>
+Generate <code class="literal"><a class="link" href="intersects_geometry_const___.html#group__predicates_1gac5e7478046508c80b6df67b7e272e374">intersects()</a></code>
+ predicate.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.description"></a></span><a class="link" href="intersects_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.description">Description</a>
+ </h6>
+<p>
+ Generate a predicate defining Value and Geometry relationship. Value
+ will be returned by the query if <code class="literal"><code class="computeroutput"><span class="identifier">bg</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">Indexable</span><span class="special">,</span> <span class="identifier">Geometry</span><span class="special">)</span></code></code> returns true.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.synopsis"></a></span><a class="link" href="intersects_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Geometry</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">spatial_predicate</span><span class="special">&lt;</span><span class="identifier">Geometry</span><span class="special">,</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">intersects_tag</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">g</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.template_parameter_s_"></a></span><a class="link" href="intersects_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry type.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.parameter_s_"></a></span><a class="link" href="intersects_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">g</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry object.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.example"></a></span><a class="link" href="intersects_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">ring</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">polygon</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="disjoint_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="overlaps_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/nearest_geometry_const____unsigned_.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/nearest_geometry_const____unsigned_.html
new file mode 100644
index 0000000000..52cce6327a
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/nearest_geometry_const____unsigned_.html
@@ -0,0 +1,157 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>nearest(Geometry const &amp;, unsigned)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__predicates.html" title="Predicates (boost::geometry::index::)">
+<link rel="prev" href="satisfies_unarypredicate_const___.html" title="satisfies(UnaryPredicate const &amp;)">
+<link rel="next" href="../../strategies.html" title="Strategies">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="satisfies_unarypredicate_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../strategies.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_"></a><a name="group__predicates_1gaa34131d6438ae2960bc3215d5bd10c36"></a><a class="link" href="nearest_geometry_const____unsigned_.html" title="nearest(Geometry const &amp;, unsigned)">nearest(Geometry
+ const &amp;, unsigned)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp132893184"></a>
+Generate <a class="link" href="nearest_geometry_const____unsigned_.html#group__predicates_1gaa34131d6438ae2960bc3215d5bd10c36">nearest()</a>
+ predicate.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.description"></a></span><a class="link" href="nearest_geometry_const____unsigned_.html#geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.description">Description</a>
+ </h6>
+<p>
+ When nearest predicate is passed to the query, k-nearest neighbour search
+ will be performed. <code class="literal"><a class="link" href="nearest_geometry_const____unsigned_.html#group__predicates_1gaa34131d6438ae2960bc3215d5bd10c36">nearest()</a></code>
+ predicate takes a <code class="literal"><code class="computeroutput"><span class="identifier">Geometry</span></code></code>
+ from which distances to <code class="literal"><code class="computeroutput"><span class="identifier">Values</span></code></code>
+ are calculated and the maximum number of <code class="literal"><code class="computeroutput"><span class="identifier">Values</span></code></code>
+ that should be returned. Internally boost::geometry::comparable_distance()
+ is used to perform the calculation.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.synopsis"></a></span><a class="link" href="nearest_geometry_const____unsigned_.html#geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Geometry</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">&lt;</span><span class="identifier">Geometry</span><span class="special">&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">nearest</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">geometry</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="keyword">unsigned</span></code> <code class="computeroutput"><span class="identifier">k</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.parameter_s_"></a></span><a class="link" href="nearest_geometry_const____unsigned_.html#geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">geometry</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The geometry from which distance is calculated.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">unsigned</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">k</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The maximum number of values to return.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.example"></a></span><a class="link" href="nearest_geometry_const____unsigned_.html#geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="number">5</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="number">5</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">box</span><span class="special">,</span> <span class="number">5</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../../doc/src/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Only one <code class="literal"><a class="link" href="nearest_geometry_const____unsigned_.html#group__predicates_1gaa34131d6438ae2960bc3215d5bd10c36">nearest()</a></code>
+ predicate may be used in a query.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="satisfies_unarypredicate_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../strategies.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/overlaps_geometry_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/overlaps_geometry_const___.html
new file mode 100644
index 0000000000..be77b9f7df
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/overlaps_geometry_const___.html
@@ -0,0 +1,156 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>overlaps(Geometry const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__predicates.html" title="Predicates (boost::geometry::index::)">
+<link rel="prev" href="intersects_geometry_const___.html" title="intersects(Geometry const &amp;)">
+<link rel="next" href="within_geometry_const___.html" title="within(Geometry const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intersects_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="within_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___"></a><a name="group__predicates_1gaf7244ba36fc959e0155c1a0b6a6fe682"></a><a class="link" href="overlaps_geometry_const___.html" title="overlaps(Geometry const &amp;)">overlaps(Geometry
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp132604928"></a>
+Generate <code class="literal"><a class="link" href="overlaps_geometry_const___.html#group__predicates_1gaf7244ba36fc959e0155c1a0b6a6fe682">overlaps()</a></code>
+ predicate.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.description"></a></span><a class="link" href="overlaps_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.description">Description</a>
+ </h6>
+<p>
+ Generate a predicate defining Value and Geometry relationship. Value
+ will be returned by the query if <code class="literal"><code class="computeroutput"><span class="identifier">bg</span><span class="special">::</span><span class="identifier">overlaps</span><span class="special">(</span><span class="identifier">Indexable</span><span class="special">,</span> <span class="identifier">Geometry</span><span class="special">)</span></code></code> returns true.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.synopsis"></a></span><a class="link" href="overlaps_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Geometry</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">spatial_predicate</span><span class="special">&lt;</span><span class="identifier">Geometry</span><span class="special">,</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">overlaps_tag</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">overlaps</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">g</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.template_parameter_s_"></a></span><a class="link" href="overlaps_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry type.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.parameter_s_"></a></span><a class="link" href="overlaps_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">g</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry object.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.example"></a></span><a class="link" href="overlaps_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">overlaps</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intersects_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="within_geometry_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/satisfies_unarypredicate_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/satisfies_unarypredicate_const___.html
new file mode 100644
index 0000000000..472f2c4fb6
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/satisfies_unarypredicate_const___.html
@@ -0,0 +1,172 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>satisfies(UnaryPredicate const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__predicates.html" title="Predicates (boost::geometry::index::)">
+<link rel="prev" href="within_geometry_const___.html" title="within(Geometry const &amp;)">
+<link rel="next" href="nearest_geometry_const____unsigned_.html" title="nearest(Geometry const &amp;, unsigned)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="within_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nearest_geometry_const____unsigned_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___"></a><a name="group__predicates_1gae24a83ce8fc7d452e16ee7d16a9ec9e3"></a><a class="link" href="satisfies_unarypredicate_const___.html" title="satisfies(UnaryPredicate const &amp;)">satisfies(UnaryPredicate
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp132760768"></a>
+Generate <a class="link" href="satisfies_unarypredicate_const___.html#group__predicates_1gae24a83ce8fc7d452e16ee7d16a9ec9e3">satisfies()</a>
+ predicate.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.description"></a></span><a class="link" href="satisfies_unarypredicate_const___.html#geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.description">Description</a>
+ </h6>
+<p>
+ A wrapper around user-defined UnaryPredicate checking if Value should
+ be returned by spatial query.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.synopsis"></a></span><a class="link" href="satisfies_unarypredicate_const___.html#geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">UnaryPredicate</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">&lt;</span><span class="identifier">UnaryPredicate</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">satisfies</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">UnaryPredicate</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">pred</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.template_parameter_s_"></a></span><a class="link" href="satisfies_unarypredicate_const___.html#geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">UnaryPredicate</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A type of unary predicate function or function object.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.parameter_s_"></a></span><a class="link" href="satisfies_unarypredicate_const___.html#geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">UnaryPredicate</span> <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pred</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The unary predicate function or function object.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.example"></a></span><a class="link" href="satisfies_unarypredicate_const___.html#geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">is_red</span><span class="special">(</span><span class="identifier">Value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">is_red</span><span class="special">();</span> <span class="special">}</span>
+
+<span class="keyword">struct</span> <span class="identifier">is_red_o</span> <span class="special">{</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Value</span><span class="special">&gt;</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">is_red</span><span class="special">();</span> <span class="special">}</span>
+<span class="special">}</span>
+
+<span class="comment">// ...</span>
+
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">(</span><span class="identifier">is_red</span><span class="special">),</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">(</span><span class="identifier">is_red_o</span><span class="special">()),</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+
+<span class="preprocessor">#ifndef</span> <span class="identifier">BOOST_NO_CXX11_LAMBDAS</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">([](</span><span class="identifier">Value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">is_red</span><span class="special">();</span> <span class="special">}),</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="preprocessor">#endif</span>
+</pre>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="within_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nearest_geometry_const____unsigned_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/within_geometry_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/within_geometry_const___.html
new file mode 100644
index 0000000000..4d0bbcc1ea
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__predicates/within_geometry_const___.html
@@ -0,0 +1,156 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>within(Geometry const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__predicates.html" title="Predicates (boost::geometry::index::)">
+<link rel="prev" href="overlaps_geometry_const___.html" title="overlaps(Geometry const &amp;)">
+<link rel="next" href="satisfies_unarypredicate_const___.html" title="satisfies(UnaryPredicate const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="overlaps_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="satisfies_unarypredicate_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___"></a><a name="group__predicates_1ga3467393a0d089c8b989b16940100da71"></a><a class="link" href="within_geometry_const___.html" title="within(Geometry const &amp;)">within(Geometry
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp132683072"></a>
+Generate <code class="literal"><a class="link" href="within_geometry_const___.html#group__predicates_1ga3467393a0d089c8b989b16940100da71">within()</a></code>
+ predicate.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.description"></a></span><a class="link" href="within_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.description">Description</a>
+ </h6>
+<p>
+ Generate a predicate defining Value and Geometry relationship. Value
+ will be returned by the query if <code class="literal"><code class="computeroutput"><span class="identifier">bg</span><span class="special">::</span><span class="identifier">within</span><span class="special">(</span><span class="identifier">Indexable</span><span class="special">,</span> <span class="identifier">Geometry</span><span class="special">)</span></code></code> returns true.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.synopsis"></a></span><a class="link" href="within_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Geometry</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">spatial_predicate</span><span class="special">&lt;</span><span class="identifier">Geometry</span><span class="special">,</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">within_tag</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">within</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">g</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.template_parameter_s_"></a></span><a class="link" href="within_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry type.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.parameter_s_"></a></span><a class="link" href="within_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Geometry</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">g</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Geometry object.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.example"></a></span><a class="link" href="within_geometry_const___.html#geometry.reference.spatial_indexes.group__predicates.within_geometry_const___.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">spatial_index</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">within</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="overlaps_geometry_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__predicates.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="satisfies_unarypredicate_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions.html
new file mode 100644
index 0000000000..b0e20f1731
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions.html
@@ -0,0 +1,294 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>R-tree free functions (boost::geometry::index::)</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="boost__geometry__index__rtree/get_allocator__.html" title="get_allocator()">
+<link rel="next" href="group__rtree__functions/insert_rtree_________value_const___.html" title="insert(rtree&lt;...&gt; &amp;, Value const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__rtree/get_allocator__.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="group__rtree__functions/insert_rtree_________value_const___.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions"></a><a class="link" href="group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">R-tree
+ free functions (boost::geometry::index::)</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="group__rtree__functions/insert_rtree_________value_const___.html">insert(rtree&lt;...&gt;
+ &amp;, Value const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/insert_rtree_________iterator__iterator_.html">insert(rtree&lt;...&gt;
+ &amp;, Iterator, Iterator)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/insert_rtree_________convertibleorrange_const___.html">insert(rtree&lt;...&gt;
+ &amp;, ConvertibleOrRange const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/remove_rtree_________value_const___.html">remove(rtree&lt;...&gt;
+ &amp;, Value const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/remove_rtree_________iterator__iterator_.html">remove(rtree&lt;...&gt;
+ &amp;, Iterator, Iterator)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/remove_rtree_________convertibleorrange_const___.html">remove(rtree&lt;...&gt;
+ &amp;, ConvertibleOrRange const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/query_rtree______const____predicates_const____outiter_.html">query(rtree&lt;...&gt;
+ const &amp;, Predicates const &amp;, OutIter)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/qbegin_rtree______const____predicates_const___.html">qbegin(rtree&lt;...&gt;
+ const &amp;, Predicates const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/qend_rtree______const___.html">qend(rtree&lt;...&gt;
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/clear_rtree________.html">clear(rtree&lt;...&gt;
+ &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/size_rtree______const___.html">size(rtree&lt;...&gt;
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/empty_rtree______const___.html">empty(rtree&lt;...&gt;
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/bounds_rtree______const___.html">bounds(rtree&lt;...&gt;
+ const &amp;)</a></span></dt>
+<dt><span class="section"><a href="group__rtree__functions/swap_rtree_________rtree________.html">swap(rtree&lt;...&gt;
+ &amp;, rtree&lt;...&gt; &amp;)</a></span></dt>
+</dl></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.functions"></a></span><a class="link" href="group__rtree__functions.html#geometry.reference.spatial_indexes.group__rtree__functions.functions">Functions</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/insert_rtree_________value_const___.html#group__rtree__functions_1gada4f62111ed22eb2860ea30995c1ce60"><code class="computeroutput"><span class="identifier">insert</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="special">&amp;,</span> <span class="identifier">Value</span>
+ <span class="keyword">const</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Insert a value to the index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/insert_rtree_________iterator__iterator_.html#group__rtree__functions_1ga056469ea699e609e67762fe1b789997f"><code class="computeroutput"><span class="identifier">insert</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="special">&amp;,</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">Iterator</span><span class="special">)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Insert a range of values to the index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/insert_rtree_________convertibleorrange_const___.html#group__rtree__functions_1gab4edad000d63eb103f2dad3813ceb2b3"><code class="computeroutput"><span class="identifier">insert</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="special">&amp;,</span> <span class="identifier">ConvertibleOrRange</span>
+ <span class="keyword">const</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Insert a value created using convertible object or a range of
+ values to the index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/remove_rtree_________value_const___.html#group__rtree__functions_1gaf353d90fd933e6110b031f63166fb45a"><code class="computeroutput"><span class="identifier">remove</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="special">&amp;,</span> <span class="identifier">Value</span>
+ <span class="keyword">const</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Remove a value from the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/remove_rtree_________iterator__iterator_.html#group__rtree__functions_1gaa460a8985496cf133f63f245527ac6e7"><code class="computeroutput"><span class="identifier">remove</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="special">&amp;,</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">Iterator</span><span class="special">)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Remove a range of values from the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/remove_rtree_________convertibleorrange_const___.html#group__rtree__functions_1ga700c922f8b4d5ebd073e999e12b55249"><code class="computeroutput"><span class="identifier">remove</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="special">&amp;,</span> <span class="identifier">ConvertibleOrRange</span>
+ <span class="keyword">const</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Remove a value corresponding to an object convertible to it or
+ a range of values from the container.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/query_rtree______const____predicates_const____outiter_.html#group__rtree__functions_1gadb43b211d5d743ebe2ef256328286e95"><code class="computeroutput"><span class="identifier">query</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="keyword">const</span> <span class="special">&amp;,</span>
+ <span class="identifier">Predicates</span> <span class="keyword">const</span>
+ <span class="special">&amp;,</span> <span class="identifier">OutIter</span><span class="special">)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Finds values meeting passed predicates e.g. nearest to some Point
+ and/or intersecting some Box.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/qbegin_rtree______const____predicates_const___.html#group__rtree__functions_1ga45c2b7b112bf730d10367e10df62aa3c"><code class="computeroutput"><span class="identifier">qbegin</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="keyword">const</span> <span class="special">&amp;,</span>
+ <span class="identifier">Predicates</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the query iterator pointing at the begin of the query
+ range.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/qend_rtree______const___.html#group__rtree__functions_1ga5c9a1eb0421bf2c702392247d48143e5"><code class="computeroutput"><span class="identifier">qend</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="keyword">const</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the query iterator pointing at the end of the query range.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/clear_rtree________.html#group__rtree__functions_1gabaca6c24c3838a8164aa3700c459e7a4"><code class="computeroutput"><span class="identifier">clear</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Remove all values from the index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/size_rtree______const___.html#group__rtree__functions_1gaa19a09e7b5f0a86a4b74ef2342de1d68"><code class="computeroutput"><span class="identifier">size</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="keyword">const</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Get the number of values stored in the index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/empty_rtree______const___.html#group__rtree__functions_1gaba44e2fb12fdc7b528bfee56a88e0844"><code class="computeroutput"><span class="identifier">empty</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="keyword">const</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Query if there are no values stored in the index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/bounds_rtree______const___.html#group__rtree__functions_1ga4e43e7720c66e88959ff511a7462a3ff"><code class="computeroutput"><span class="identifier">bounds</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="keyword">const</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Get the box containing all stored values or an invalid box if
+ the index has no values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <a class="link" href="group__rtree__functions/swap_rtree_________rtree________.html#group__rtree__functions_1gaa1250318a78d7e27ba8f3537eb0ddb3f"><code class="computeroutput"><span class="identifier">swap</span><span class="special">(</span><span class="identifier">rtree</span><span class="special">&lt;...&gt;</span>
+ <span class="special">&amp;,</span> <span class="identifier">rtree</span><span class="special">&lt;...&gt;</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Exchanges the contents of the container with those of other.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__rtree/get_allocator__.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="group__rtree__functions/insert_rtree_________value_const___.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/bounds_rtree______const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/bounds_rtree______const___.html
new file mode 100644
index 0000000000..d379c04a7a
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/bounds_rtree______const___.html
@@ -0,0 +1,126 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>bounds(rtree&lt;...&gt; const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="empty_rtree______const___.html" title="empty(rtree&lt;...&gt; const &amp;)">
+<link rel="next" href="swap_rtree_________rtree________.html" title="swap(rtree&lt;...&gt; &amp;, rtree&lt;...&gt; &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="empty_rtree______const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="swap_rtree_________rtree________.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___"></a><a name="group__rtree__functions_1ga4e43e7720c66e88959ff511a7462a3ff"></a><a class="link" href="bounds_rtree______const___.html" title="bounds(rtree&lt;...&gt; const &amp;)">bounds(rtree&lt;...&gt;
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp131153088"></a>
+Get the box containing all stored values or an invalid box if the index
+ has no values.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.description"></a></span><a class="link" href="bounds_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.description">Description</a>
+ </h6>
+<p>
+ It calls <code class="literal"><code class="computeroutput"><span class="identifier">rtree</span><span class="special">::</span><span class="identifier">envelope</span><span class="special">()</span></code></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.synopsis"></a></span><a class="link" href="bounds_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;::</span><span class="identifier">bounds_type</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">bounds</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.parameter_s_"></a></span><a class="link" href="bounds_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The spatial index.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.returns"></a></span><a class="link" href="bounds_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___.returns">Returns</a>
+ </h6>
+<p>
+ The box containing all stored values or an invalid box.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="empty_rtree______const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="swap_rtree_________rtree________.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/clear_rtree________.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/clear_rtree________.html
new file mode 100644
index 0000000000..32691573af
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/clear_rtree________.html
@@ -0,0 +1,118 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>clear(rtree&lt;...&gt; &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="qend_rtree______const___.html" title="qend(rtree&lt;...&gt; const &amp;)">
+<link rel="next" href="size_rtree______const___.html" title="size(rtree&lt;...&gt; const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qend_rtree______const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="size_rtree______const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.clear_rtree________"></a><a name="group__rtree__functions_1gabaca6c24c3838a8164aa3700c459e7a4"></a><a class="link" href="clear_rtree________.html" title="clear(rtree&lt;...&gt; &amp;)">clear(rtree&lt;...&gt;
+ &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp130948672"></a>
+Remove all values from the index.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.clear_rtree________.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.clear_rtree________.description"></a></span><a class="link" href="clear_rtree________.html#geometry.reference.spatial_indexes.group__rtree__functions.clear_rtree________.description">Description</a>
+ </h6>
+<p>
+ It calls <code class="literal"><a class="link" href="../boost__geometry__index__rtree/clear__.html#classboost_1_1geometry_1_1index_1_1rtree_1a1bec40977c175983f585c4488cf8fe3c">rtree::clear()</a></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.clear_rtree________.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.clear_rtree________.synopsis"></a></span><a class="link" href="clear_rtree________.html#geometry.reference.spatial_indexes.group__rtree__functions.clear_rtree________.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">void</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">clear</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.clear_rtree________.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.clear_rtree________.parameter_s_"></a></span><a class="link" href="clear_rtree________.html#geometry.reference.spatial_indexes.group__rtree__functions.clear_rtree________.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The spatial index.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qend_rtree______const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="size_rtree______const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/empty_rtree______const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/empty_rtree______const___.html
new file mode 100644
index 0000000000..5a3c8404a6
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/empty_rtree______const___.html
@@ -0,0 +1,125 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>empty(rtree&lt;...&gt; const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="size_rtree______const___.html" title="size(rtree&lt;...&gt; const &amp;)">
+<link rel="next" href="bounds_rtree______const___.html" title="bounds(rtree&lt;...&gt; const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="size_rtree______const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="bounds_rtree______const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___"></a><a name="group__rtree__functions_1gaba44e2fb12fdc7b528bfee56a88e0844"></a><a class="link" href="empty_rtree______const___.html" title="empty(rtree&lt;...&gt; const &amp;)">empty(rtree&lt;...&gt;
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp131083120"></a>
+Query if there are no values stored in the index.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.description"></a></span><a class="link" href="empty_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.description">Description</a>
+ </h6>
+<p>
+ It calls <code class="literal"><a class="link" href="../boost__geometry__index__rtree/empty__.html#classboost_1_1geometry_1_1index_1_1rtree_1aa5302ce1c26105d722aac20793e83f0e">rtree::empty()</a></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.synopsis"></a></span><a class="link" href="empty_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">bool</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">empty</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.parameter_s_"></a></span><a class="link" href="empty_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The spatial index.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.returns"></a></span><a class="link" href="empty_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___.returns">Returns</a>
+ </h6>
+<p>
+ true if there are no values in the index.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="size_rtree______const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="bounds_rtree______const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________convertibleorrange_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________convertibleorrange_const___.html
new file mode 100644
index 0000000000..38163044a6
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________convertibleorrange_const___.html
@@ -0,0 +1,142 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>insert(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="insert_rtree_________iterator__iterator_.html" title="insert(rtree&lt;...&gt; &amp;, Iterator, Iterator)">
+<link rel="next" href="remove_rtree_________value_const___.html" title="remove(rtree&lt;...&gt; &amp;, Value const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_rtree_________iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_rtree_________value_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________convertibleorrange_const___"></a><a name="group__rtree__functions_1gab4edad000d63eb103f2dad3813ceb2b3"></a><a class="link" href="insert_rtree_________convertibleorrange_const___.html" title="insert(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)">insert(rtree&lt;...&gt;
+ &amp;, ConvertibleOrRange const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp130143968"></a>
+Insert a value created using convertible object or a range of values
+ to the index.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________convertibleorrange_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________convertibleorrange_const___.description"></a></span><a class="link" href="insert_rtree_________convertibleorrange_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________convertibleorrange_const___.description">Description</a>
+ </h6>
+<p>
+ It calls <code class="literal"><a class="link" href="../boost__geometry__index__rtree/insert_convertibleorrange_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a5db294b14ebf1319edcfc92e78c8167e">rtree::insert(ConvertibleOrRange
+ const&amp;)</a></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________convertibleorrange_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________convertibleorrange_const___.synopsis"></a></span><a class="link" href="insert_rtree_________convertibleorrange_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________convertibleorrange_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">ConvertibleOrRange</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">void</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">insert</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">ConvertibleOrRange</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">conv_or_rng</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________convertibleorrange_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________convertibleorrange_const___.parameter_s_"></a></span><a class="link" href="insert_rtree_________convertibleorrange_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________convertibleorrange_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The spatial index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ConvertibleOrRange</span>
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">conv_or_rng</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The object of type convertible to value_type or a range of
+ values.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_rtree_________iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_rtree_________value_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________iterator__iterator_.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________iterator__iterator_.html
new file mode 100644
index 0000000000..9b090cb9f3
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________iterator__iterator_.html
@@ -0,0 +1,158 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>insert(rtree&lt;...&gt; &amp;, Iterator, Iterator)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="insert_rtree_________value_const___.html" title="insert(rtree&lt;...&gt; &amp;, Value const &amp;)">
+<link rel="next" href="insert_rtree_________convertibleorrange_const___.html" title="insert(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_rtree_________value_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_rtree_________convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________iterator__iterator_"></a><a name="group__rtree__functions_1ga056469ea699e609e67762fe1b789997f"></a><a class="link" href="insert_rtree_________iterator__iterator_.html" title="insert(rtree&lt;...&gt; &amp;, Iterator, Iterator)">insert(rtree&lt;...&gt;
+ &amp;, Iterator, Iterator)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp130059504"></a>
+Insert a range of values to the index.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________iterator__iterator_.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________iterator__iterator_.description"></a></span><a class="link" href="insert_rtree_________iterator__iterator_.html#geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________iterator__iterator_.description">Description</a>
+ </h6>
+<p>
+ It calls <code class="literal"><a class="link" href="../boost__geometry__index__rtree/insert_iterator__iterator_.html#classboost_1_1geometry_1_1index_1_1rtree_1a60d4c8790fd8810ff8b57f049e6bed8d">rtree::insert(Iterator,
+ Iterator)</a></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________iterator__iterator_.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________iterator__iterator_.synopsis"></a></span><a class="link" href="insert_rtree_________iterator__iterator_.html#geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________iterator__iterator_.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Iterator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">void</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">insert</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code> <code class="computeroutput"><span class="identifier">first</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code> <code class="computeroutput"><span class="identifier">last</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________iterator__iterator_.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________iterator__iterator_.parameter_s_"></a></span><a class="link" href="insert_rtree_________iterator__iterator_.html#geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________iterator__iterator_.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The spatial index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">first</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The beginning of the range of values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">last</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The end of the range of values.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_rtree_________value_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_rtree_________convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________value_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________value_const___.html
new file mode 100644
index 0000000000..569853e316
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________value_const___.html
@@ -0,0 +1,139 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>insert(rtree&lt;...&gt; &amp;, Value const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="next" href="insert_rtree_________iterator__iterator_.html" title="insert(rtree&lt;...&gt; &amp;, Iterator, Iterator)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_rtree_________iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________value_const___"></a><a name="group__rtree__functions_1gada4f62111ed22eb2860ea30995c1ce60"></a><a class="link" href="insert_rtree_________value_const___.html" title="insert(rtree&lt;...&gt; &amp;, Value const &amp;)">insert(rtree&lt;...&gt;
+ &amp;, Value const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp129983456"></a>
+Insert a value to the index.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________value_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________value_const___.description"></a></span><a class="link" href="insert_rtree_________value_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________value_const___.description">Description</a>
+ </h6>
+<p>
+ It calls <code class="literal"><a class="link" href="../boost__geometry__index__rtree/insert_value_type_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1ad47980467e66b8644df18a480dbf9d86">rtree::insert(value_type
+ const&amp;)</a></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________value_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________value_const___.synopsis"></a></span><a class="link" href="insert_rtree_________value_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________value_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">void</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">insert</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">Value</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">v</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________value_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________value_const___.parameter_s_"></a></span><a class="link" href="insert_rtree_________value_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________value_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The spatial index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Value</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">v</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The value which will be stored in the index.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_rtree_________iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/qbegin_rtree______const____predicates_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/qbegin_rtree______const____predicates_const___.html
new file mode 100644
index 0000000000..586a5d3206
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/qbegin_rtree______const____predicates_const___.html
@@ -0,0 +1,170 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>qbegin(rtree&lt;...&gt; const &amp;, Predicates const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="query_rtree______const____predicates_const____outiter_.html" title="query(rtree&lt;...&gt; const &amp;, Predicates const &amp;, OutIter)">
+<link rel="next" href="qend_rtree______const___.html" title="qend(rtree&lt;...&gt; const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="query_rtree______const____predicates_const____outiter_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="qend_rtree______const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___"></a><a name="group__rtree__functions_1ga45c2b7b112bf730d10367e10df62aa3c"></a><a class="link" href="qbegin_rtree______const____predicates_const___.html" title="qbegin(rtree&lt;...&gt; const &amp;, Predicates const &amp;)">qbegin(rtree&lt;...&gt;
+ const &amp;, Predicates const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp130739296"></a>
+Returns the query iterator pointing at the begin of the query range.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.description"></a></span><a class="link" href="qbegin_rtree______const____predicates_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.description">Description</a>
+ </h6>
+<p>
+ This method returns the iterator which may be used to perform iterative
+ queries. For the information about the predicates which may be passed
+ to this method see <a class="link" href="query_rtree______const____predicates_const____outiter_.html#group__rtree__functions_1gadb43b211d5d743ebe2ef256328286e95">query()</a>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.synopsis"></a></span><a class="link" href="qbegin_rtree______const____predicates_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Predicates</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;::</span><span class="identifier">const_query_iterator</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">qbegin</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">Predicates</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">predicates</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.parameter_s_"></a></span><a class="link" href="qbegin_rtree______const____predicates_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The rtree.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Predicates</span> <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">predicates</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Predicates.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.returns"></a></span><a class="link" href="qbegin_rtree______const____predicates_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.returns">Returns</a>
+ </h6>
+<p>
+ The iterator pointing at the begin of the query range.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.example"></a></span><a class="link" href="qbegin_rtree______const____predicates_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">for</span> <span class="special">(</span> <span class="identifier">Rtree</span><span class="special">::</span><span class="identifier">const_query_iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">qbegin</span><span class="special">(</span><span class="identifier">tree</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="number">10000</span><span class="special">))</span> <span class="special">;</span>
+ <span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">qend</span><span class="special">(</span><span class="identifier">tree</span><span class="special">)</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">it</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// do something with value</span>
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">has_enough_nearest_values</span><span class="special">()</span> <span class="special">)</span>
+ <span class="keyword">break</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.h5"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.throws"></a></span><a class="link" href="qbegin_rtree______const____predicates_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___.throws">Throws</a>
+ </h6>
+<p>
+ If predicates copy throws. If allocation throws.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="query_rtree______const____predicates_const____outiter_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="qend_rtree______const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/qend_rtree______const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/qend_rtree______const___.html
new file mode 100644
index 0000000000..c5d4cfb7ac
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/qend_rtree______const___.html
@@ -0,0 +1,98 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>qend(rtree&lt;...&gt; const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="qbegin_rtree______const____predicates_const___.html" title="qbegin(rtree&lt;...&gt; const &amp;, Predicates const &amp;)">
+<link rel="next" href="clear_rtree________.html" title="clear(rtree&lt;...&gt; &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qbegin_rtree______const____predicates_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="clear_rtree________.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___"></a><a name="group__rtree__functions_1ga5c9a1eb0421bf2c702392247d48143e5"></a><a class="link" href="qend_rtree______const___.html" title="qend(rtree&lt;...&gt; const &amp;)">qend(rtree&lt;...&gt;
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp130862464"></a>
+Returns the query iterator pointing at the end of the query range.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.description"></a></span><a class="link" href="qend_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.description">Description</a>
+ </h6>
+<p>
+ This method returns the iterator which may be used to check if the query
+ has ended.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.synopsis"></a></span><a class="link" href="qend_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;::</span><span class="identifier">const_query_iterator</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">qend</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.returns"></a></span><a class="link" href="qend_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.returns">Returns</a>
+ </h6>
+<p>
+ The iterator pointing at the end of the query range.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.example"></a></span><a class="link" href="qend_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">for</span> <span class="special">(</span> <span class="identifier">Rtree</span><span class="special">::</span><span class="identifier">const_query_iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">qbegin</span><span class="special">(</span><span class="identifier">tree</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="number">10000</span><span class="special">))</span> <span class="special">;</span>
+ <span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">qend</span><span class="special">(</span><span class="identifier">tree</span><span class="special">)</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">it</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// do something with value</span>
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">has_enough_nearest_values</span><span class="special">()</span> <span class="special">)</span>
+ <span class="keyword">break</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.throws"></a></span><a class="link" href="qend_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___.throws">Throws</a>
+ </h6>
+<p>
+ Nothing
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qbegin_rtree______const____predicates_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="clear_rtree________.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/query_rtree______const____predicates_const____outiter_.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/query_rtree______const____predicates_const____outiter_.html
new file mode 100644
index 0000000000..ff85348ff6
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/query_rtree______const____predicates_const____outiter_.html
@@ -0,0 +1,287 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>query(rtree&lt;...&gt; const &amp;, Predicates const &amp;, OutIter)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="remove_rtree_________convertibleorrange_const___.html" title="remove(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)">
+<link rel="next" href="qbegin_rtree______const____predicates_const___.html" title="qbegin(rtree&lt;...&gt; const &amp;, Predicates const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_rtree_________convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="qbegin_rtree______const____predicates_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_"></a><a name="group__rtree__functions_1gadb43b211d5d743ebe2ef256328286e95"></a><a class="link" href="query_rtree______const____predicates_const____outiter_.html" title="query(rtree&lt;...&gt; const &amp;, Predicates const &amp;, OutIter)">query(rtree&lt;...&gt;
+ const &amp;, Predicates const &amp;, OutIter)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp130518016"></a>
+Finds values meeting passed predicates e.g. nearest to some Point and/or
+ intersecting some Box.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.description"></a></span><a class="link" href="query_rtree______const____predicates_const____outiter_.html#geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.description">Description</a>
+ </h6>
+<p>
+ This query function performs spatial and k-nearest neighbor searches.
+ It allows to pass a set of predicates. Values will be returned only if
+ all predicates are met.
+ </p>
+<p>
+ <span class="bold"><strong>Spatial predicates</strong></span>
+ </p>
+<p>
+ Spatial predicates may be generated by one of the functions listed below:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/contains_geometry_const___.html#group__predicates_1gac11ebb8df9e5f344e8db4af1641f6996">boost::geometry::index::contains()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/covered_by_geometry_const___.html#group__predicates_1ga67e42f17aad97c80f7c0b7a8c111cab4">boost::geometry::index::covered_by()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/covers_geometry_const___.html#group__predicates_1ga8e657466bca0bb6439680a35f08acf27">boost::geometry::index::covers()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/disjoint_geometry_const___.html#group__predicates_1gab23f7e3fa751bbbd34edec7e5387ff95">boost::geometry::index::disjoint()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/intersects_geometry_const___.html#group__predicates_1gac5e7478046508c80b6df67b7e272e374">boost::geometry::index::intersects()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/overlaps_geometry_const___.html#group__predicates_1gaf7244ba36fc959e0155c1a0b6a6fe682">boost::geometry::index::overlaps()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/within_geometry_const___.html#group__predicates_1ga3467393a0d089c8b989b16940100da71">boost::geometry::index::within()</a></code>,
+ </li>
+</ul></div>
+<p>
+ It is possible to negate spatial predicates:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/contains_geometry_const___.html#group__predicates_1gac11ebb8df9e5f344e8db4af1641f6996">boost::geometry::index::contains()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/covered_by_geometry_const___.html#group__predicates_1ga67e42f17aad97c80f7c0b7a8c111cab4">boost::geometry::index::covered_by()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/covers_geometry_const___.html#group__predicates_1ga8e657466bca0bb6439680a35f08acf27">boost::geometry::index::covers()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/disjoint_geometry_const___.html#group__predicates_1gab23f7e3fa751bbbd34edec7e5387ff95">boost::geometry::index::disjoint()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/intersects_geometry_const___.html#group__predicates_1gac5e7478046508c80b6df67b7e272e374">boost::geometry::index::intersects()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/overlaps_geometry_const___.html#group__predicates_1gaf7244ba36fc959e0155c1a0b6a6fe682">boost::geometry::index::overlaps()</a></code>,
+ </li>
+<li class="listitem">
+ <code class="literal"><code class="computeroutput"><span class="special">!</span> </code><a class="link" href="../group__predicates/within_geometry_const___.html#group__predicates_1ga3467393a0d089c8b989b16940100da71">boost::geometry::index::within()</a></code>
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Satisfies predicate</strong></span>
+ </p>
+<p>
+ This is a special kind of predicate which allows to pass a user-defined
+ function or function object which checks if Value should be returned
+ by the query. It's generated by:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/satisfies_unarypredicate_const___.html#group__predicates_1gae24a83ce8fc7d452e16ee7d16a9ec9e3">boost::geometry::index::satisfies()</a></code>.
+ </li></ul></div>
+<p>
+ <span class="bold"><strong>Nearest predicate</strong></span>
+ </p>
+<p>
+ If the nearest predicate is passed a k-nearest neighbor search will be
+ performed. This query will result in returning k values to the output
+ iterator. Only one nearest predicate may be passed to the query. It may
+ be generated by:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ <code class="literal"><a class="link" href="../group__predicates/nearest_geometry_const____unsigned_.html#group__predicates_1gaa34131d6438ae2960bc3215d5bd10c36">boost::geometry::index::nearest()</a></code>.
+ </li></ul></div>
+<p>
+ <span class="bold"><strong>Connecting predicates</strong></span>
+ </p>
+<p>
+ Predicates may be passed together connected with <code class="literal"><code class="computeroutput"><span class="keyword">operator</span><span class="special">&amp;&amp;()</span></code></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.synopsis"></a></span><a class="link" href="query_rtree______const____predicates_const____outiter_.html#geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Predicates</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">OutIter</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;::</span><span class="identifier">size_type</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">query</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">Predicates</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">predicates</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">OutIter</span></code> <code class="computeroutput"><span class="identifier">out_it</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.parameter_s_"></a></span><a class="link" href="query_rtree______const____predicates_const____outiter_.html#geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The rtree.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Predicates</span> <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">predicates</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Predicates.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">OutIter</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">out_it</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The output iterator, e.g. generated by std::back_inserter().
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.returns"></a></span><a class="link" href="query_rtree______const____predicates_const____outiter_.html#geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.returns">Returns</a>
+ </h6>
+<p>
+ The number of values found.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.example"></a></span><a class="link" href="query_rtree______const____predicates_const____outiter_.html#geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.example">Example</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="comment">// return elements intersecting box</span>
+<span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">tree</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="comment">// return elements intersecting poly but not within box</span>
+<span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">tree</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">poly</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="special">!</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">within</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="comment">// return elements overlapping box and meeting my_fun value predicate</span>
+<span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">tree</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">overlaps</span><span class="special">(</span><span class="identifier">box</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">(</span><span class="identifier">my_fun</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="comment">// return 5 elements nearest to pt and elements are intersecting box</span>
+<span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">tree</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="number">5</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.h5"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.throws"></a></span><a class="link" href="query_rtree______const____predicates_const____outiter_.html#geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_.throws">Throws</a>
+ </h6>
+<p>
+ If Value copy constructor or copy assignment throws.
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../../doc/src/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Only one <code class="literal"><a class="link" href="../group__predicates/nearest_geometry_const____unsigned_.html#group__predicates_1gaa34131d6438ae2960bc3215d5bd10c36">nearest()</a></code>
+ perdicate may be passed to the query. Passing more of them results
+ in compile-time error.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_rtree_________convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="qbegin_rtree______const____predicates_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________convertibleorrange_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________convertibleorrange_const___.html
new file mode 100644
index 0000000000..0fd0123b20
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________convertibleorrange_const___.html
@@ -0,0 +1,155 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>remove(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="remove_rtree_________iterator__iterator_.html" title="remove(rtree&lt;...&gt; &amp;, Iterator, Iterator)">
+<link rel="next" href="query_rtree______const____predicates_const____outiter_.html" title="query(rtree&lt;...&gt; const &amp;, Predicates const &amp;, OutIter)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_rtree_________iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="query_rtree______const____predicates_const____outiter_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___"></a><a name="group__rtree__functions_1ga700c922f8b4d5ebd073e999e12b55249"></a><a class="link" href="remove_rtree_________convertibleorrange_const___.html" title="remove(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)">remove(rtree&lt;...&gt;
+ &amp;, ConvertibleOrRange const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp130420512"></a>
+Remove a value corresponding to an object convertible to it or a range
+ of values from the container.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.description"></a></span><a class="link" href="remove_rtree_________convertibleorrange_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.description">Description</a>
+ </h6>
+<p>
+ Remove a value corresponding to an object convertible to it or a range
+ of values from the container. In contrast to the <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span></code></code> or <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span> <span class="identifier">erase</span><span class="special">()</span></code></code> method it removes values
+ equal to these passed as a range. Furthermore this method removes only
+ one value for each one passed in the range, not all equal values.
+ </p>
+<p>
+ It calls <code class="literal"><a class="link" href="../boost__geometry__index__rtree/remove_convertibleorrange_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a320cd1861ba7b43364ed53e1f93a4411">rtree::remove(ConvertibleOrRange
+ const&amp;)</a></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.synopsis"></a></span><a class="link" href="remove_rtree_________convertibleorrange_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">ConvertibleOrRange</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;::</span><span class="identifier">size_type</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">remove</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">ConvertibleOrRange</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">conv_or_rng</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.parameter_s_"></a></span><a class="link" href="remove_rtree_________convertibleorrange_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The spatial index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ConvertibleOrRange</span>
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">conv_or_rng</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The object of type convertible to value_type or the range of
+ values.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.returns"></a></span><a class="link" href="remove_rtree_________convertibleorrange_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___.returns">Returns</a>
+ </h6>
+<p>
+ The number of removed values.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_rtree_________iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="query_rtree______const____predicates_const____outiter_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________iterator__iterator_.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________iterator__iterator_.html
new file mode 100644
index 0000000000..1f2e4c5618
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________iterator__iterator_.html
@@ -0,0 +1,171 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>remove(rtree&lt;...&gt; &amp;, Iterator, Iterator)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="remove_rtree_________value_const___.html" title="remove(rtree&lt;...&gt; &amp;, Value const &amp;)">
+<link rel="next" href="remove_rtree_________convertibleorrange_const___.html" title="remove(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_rtree_________value_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_rtree_________convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_"></a><a name="group__rtree__functions_1gaa460a8985496cf133f63f245527ac6e7"></a><a class="link" href="remove_rtree_________iterator__iterator_.html" title="remove(rtree&lt;...&gt; &amp;, Iterator, Iterator)">remove(rtree&lt;...&gt;
+ &amp;, Iterator, Iterator)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp130317600"></a>
+Remove a range of values from the container.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.description"></a></span><a class="link" href="remove_rtree_________iterator__iterator_.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.description">Description</a>
+ </h6>
+<p>
+ Remove a range of values from the container. In contrast to the <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span></code></code> or <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span> <span class="identifier">erase</span><span class="special">()</span></code></code> method it doesn't take iterators
+ pointing to values stored in this container. It removes values equal
+ to these passed as a range. Furthermore this function removes only one
+ value for each one passed in the range, not all equal values.
+ </p>
+<p>
+ It calls <code class="literal"><a class="link" href="../boost__geometry__index__rtree/remove_iterator__iterator_.html#classboost_1_1geometry_1_1index_1_1rtree_1aa97084231d17564a94f0142d095cecaa">rtree::remove(Iterator,
+ Iterator)</a></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.synopsis"></a></span><a class="link" href="remove_rtree_________iterator__iterator_.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Iterator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;::</span><span class="identifier">size_type</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">remove</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code> <code class="computeroutput"><span class="identifier">first</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code> <code class="computeroutput"><span class="identifier">last</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.parameter_s_"></a></span><a class="link" href="remove_rtree_________iterator__iterator_.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The spatial index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">first</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The beginning of the range of values.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">last</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The end of the range of values.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.returns"></a></span><a class="link" href="remove_rtree_________iterator__iterator_.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_.returns">Returns</a>
+ </h6>
+<p>
+ The number of removed values.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_rtree_________value_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_rtree_________convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________value_const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________value_const___.html
new file mode 100644
index 0000000000..4afc4c9088
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________value_const___.html
@@ -0,0 +1,150 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>remove(rtree&lt;...&gt; &amp;, Value const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="insert_rtree_________convertibleorrange_const___.html" title="insert(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)">
+<link rel="next" href="remove_rtree_________iterator__iterator_.html" title="remove(rtree&lt;...&gt; &amp;, Iterator, Iterator)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_rtree_________convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_rtree_________iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___"></a><a name="group__rtree__functions_1gaf353d90fd933e6110b031f63166fb45a"></a><a class="link" href="remove_rtree_________value_const___.html" title="remove(rtree&lt;...&gt; &amp;, Value const &amp;)">remove(rtree&lt;...&gt;
+ &amp;, Value const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp130223568"></a>
+Remove a value from the container.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.description"></a></span><a class="link" href="remove_rtree_________value_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.description">Description</a>
+ </h6>
+<p>
+ Remove a value from the container. In contrast to the <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span></code></code> or <code class="literal"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span> <span class="identifier">erase</span><span class="special">()</span></code></code> method this function removes
+ only one value from the container.
+ </p>
+<p>
+ It calls <code class="literal"><a class="link" href="../boost__geometry__index__rtree/remove_value_type_const___.html#classboost_1_1geometry_1_1index_1_1rtree_1a1ce933b0b833faec5349bfc27bde15d4">rtree::remove(value_type
+ const&amp;)</a></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.synopsis"></a></span><a class="link" href="remove_rtree_________value_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;::</span><span class="identifier">size_type</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">remove</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">Value</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">v</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.parameter_s_"></a></span><a class="link" href="remove_rtree_________value_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The spatial index.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Value</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">v</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The value which will be removed from the index.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.returns"></a></span><a class="link" href="remove_rtree_________value_const___.html#geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___.returns">Returns</a>
+ </h6>
+<p>
+ 1 if value was removed, 0 otherwise.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_rtree_________convertibleorrange_const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="remove_rtree_________iterator__iterator_.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/size_rtree______const___.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/size_rtree______const___.html
new file mode 100644
index 0000000000..046045d49b
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/size_rtree______const___.html
@@ -0,0 +1,125 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>size(rtree&lt;...&gt; const &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="clear_rtree________.html" title="clear(rtree&lt;...&gt; &amp;)">
+<link rel="next" href="empty_rtree______const___.html" title="empty(rtree&lt;...&gt; const &amp;)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="clear_rtree________.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="empty_rtree______const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___"></a><a name="group__rtree__functions_1gaa19a09e7b5f0a86a4b74ef2342de1d68"></a><a class="link" href="size_rtree______const___.html" title="size(rtree&lt;...&gt; const &amp;)">size(rtree&lt;...&gt;
+ const &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp131013536"></a>
+Get the number of values stored in the index.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.description"></a></span><a class="link" href="size_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.description">Description</a>
+ </h6>
+<p>
+ It calls <code class="literal"><a class="link" href="../boost__geometry__index__rtree/size__.html#classboost_1_1geometry_1_1index_1_1rtree_1ac9f152c8c96525e3735b81635d8171b1">rtree::size()</a></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.synopsis"></a></span><a class="link" href="size_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">size</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">tree</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.parameter_s_"></a></span><a class="link" href="size_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="keyword">const</span> <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The spatial index.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.returns"></a></span><a class="link" href="size_rtree______const___.html#geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___.returns">Returns</a>
+ </h6>
+<p>
+ The number of values stored in the index.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="clear_rtree________.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="empty_rtree______const___.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/swap_rtree_________rtree________.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/swap_rtree_________rtree________.html
new file mode 100644
index 0000000000..5fccaec287
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/group__rtree__functions/swap_rtree_________rtree________.html
@@ -0,0 +1,143 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>swap(rtree&lt;...&gt; &amp;, rtree&lt;...&gt; &amp;)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../group__rtree__functions.html" title="R-tree free functions (boost::geometry::index::)">
+<link rel="prev" href="bounds_rtree______const___.html" title="bounds(rtree&lt;...&gt; const &amp;)">
+<link rel="next" href="../parameters.html" title="R-tree parameters (boost::geometry::index::)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bounds_rtree______const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../parameters.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.swap_rtree_________rtree________"></a><a name="group__rtree__functions_1gaa1250318a78d7e27ba8f3537eb0ddb3f"></a><a class="link" href="swap_rtree_________rtree________.html" title="swap(rtree&lt;...&gt; &amp;, rtree&lt;...&gt; &amp;)">swap(rtree&lt;...&gt;
+ &amp;, rtree&lt;...&gt; &amp;)</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp131231696"></a>
+Exchanges the contents of the container with those of other.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.swap_rtree_________rtree________.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.swap_rtree_________rtree________.description"></a></span><a class="link" href="swap_rtree_________rtree________.html#geometry.reference.spatial_indexes.group__rtree__functions.swap_rtree_________rtree________.description">Description</a>
+ </h6>
+<p>
+ It calls <code class="literal"><a class="link" href="../boost__geometry__index__rtree/swap_rtree___.html#classboost_1_1geometry_1_1index_1_1rtree_1aedb719dfece91d298e9ee56878524c9b">rtree::swap()</a></code>.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.swap_rtree_________rtree________.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.swap_rtree_________rtree________.synopsis"></a></span><a class="link" href="swap_rtree_________rtree________.html#geometry.reference.spatial_indexes.group__rtree__functions.swap_rtree_________rtree________.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Parameters</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">IndexableGetter</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">EqualTo</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Allocator</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">void</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">swap</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">l</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">Value</span><span class="special">,</span> <span class="identifier">Parameters</span><span class="special">,</span> <span class="identifier">IndexableGetter</span><span class="special">,</span> <span class="identifier">EqualTo</span><span class="special">,</span> <span class="identifier">Allocator</span> <span class="special">&gt;</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">r</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.group__rtree__functions.swap_rtree_________rtree________.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.group__rtree__functions.swap_rtree_________rtree________.parameter_s_"></a></span><a class="link" href="swap_rtree_________rtree________.html#geometry.reference.spatial_indexes.group__rtree__functions.swap_rtree_________rtree________.parameter_s_">Parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">l</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The first rtree.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">rtree</span><span class="special">&lt;</span>
+ <span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span><span class="special">,</span>
+ <span class="identifier">EqualTo</span><span class="special">,</span>
+ <span class="identifier">Allocator</span> <span class="special">&gt;</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The second rtree.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="bounds_rtree______const___.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../group__rtree__functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../parameters.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/observers.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/observers.html
new file mode 100644
index 0000000000..1258faa335
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/observers.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Observers (boost::geometry::index::)</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="parameters/boost__geometry__index__dynamic_rstar.html" title="boost::geometry::index::dynamic_rstar">
+<link rel="next" href="observers/boost__geometry__index__indexable.html" title="boost::geometry::index::indexable">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameters/boost__geometry__index__dynamic_rstar.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="observers/boost__geometry__index__indexable.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.spatial_indexes.observers"></a><a class="link" href="observers.html" title="Observers (boost::geometry::index::)">Observers
+ (boost::geometry::index::)</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="observers/boost__geometry__index__indexable.html">boost::geometry::index::indexable</a></span></dt>
+<dt><span class="section"><a href="observers/boost__geometry__index__equal_to.html">boost::geometry::index::equal_to</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameters/boost__geometry__index__dynamic_rstar.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="observers/boost__geometry__index__indexable.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/observers/boost__geometry__index__equal_to.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/observers/boost__geometry__index__equal_to.html
new file mode 100644
index 0000000000..2b95e92a25
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/observers/boost__geometry__index__equal_to.html
@@ -0,0 +1,285 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>boost::geometry::index::equal_to</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../observers.html" title="Observers (boost::geometry::index::)">
+<link rel="prev" href="boost__geometry__index__indexable.html" title="boost::geometry::index::indexable">
+<link rel="next" href="../group__inserters.html" title="Inserters (boost::geometry::index::)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__indexable.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../observers.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../group__inserters.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to"></a><a name="structboost_1_1geometry_1_1index_1_1equal__to"></a><a class="link" href="boost__geometry__index__equal_to.html" title="boost::geometry::index::equal_to">boost::geometry::index::equal_to</a>
+</h5></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section"><a href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___">operator()(Value
+ const &amp;, Value const &amp;)</a></span></dt></dl></div>
+<p>
+ <a class="indexterm" name="idp131868752"></a><a class="indexterm" name="idp131869440"></a><a class="indexterm" name="idp131870128"></a><a class="indexterm" name="idp131870816"></a>
+The function object comparing Values.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.description"></a></span><a class="link" href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.description">Description</a>
+ </h6>
+<p>
+ The default version handles Values which are Indexables, std::pair&lt;T1,
+ T2&gt;, boost::tuple&lt;...&gt; and std::tuple&lt;...&gt; if STD tuples
+ and variadic templates are supported. All members are compared from left
+ to right, Geometries using boost::geometry::equals() function, other
+ types using operator==.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.header"></a></span><a class="link" href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">equal_to</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.synopsis"></a></span><a class="link" href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">struct</span> <span class="identifier">equal_to</span></code>
+<code class="computeroutput"> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span> <span class="identifier">Value</span> <span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="special">{</span></code>
+<code class="computeroutput"> <span class="comment">// ...</span></code>
+<code class="computeroutput"><span class="special">};</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.template_parameter_s_"></a></span><a class="link" href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Value</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of objects which are compared by this function object.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.typedef_s_"></a></span><a class="link" href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.typedef_s_">Typedef(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <a name="structboost_1_1geometry_1_1index_1_1equal__to_1ae6a986988e380c2ba4afa646294cfd93"></a><code class="computeroutput"><span class="identifier">result_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of result returned by function object.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.h5"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.member_s_"></a></span><a class="link" href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.member_s_">Member(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Modifier
+ </p>
+ </th>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__equal_to.html#structboost_1_1geometry_1_1index_1_1equal__to_1adb497915885d69df9aff938d16922ff3"><code class="computeroutput"><span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Value</span> <span class="keyword">const</span>
+ <span class="special">&amp;,</span> <span class="identifier">Value</span>
+ <span class="keyword">const</span> <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Compare Values.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___"></a><a name="structboost_1_1geometry_1_1index_1_1equal__to_1adb497915885d69df9aff938d16922ff3"></a><a class="link" href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___" title="operator()(Value const &amp;, Value const &amp;)">operator()(Value
+ const &amp;, Value const &amp;)</a>
+</h6></div></div></div>
+<p>
+ <a class="indexterm" name="idp131951440"></a>
+Compare Values.
+ </p>
+<h7><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.synopsis"></a></span><a class="link" href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.synopsis">Synopsis</a>
+ </h7><pre class="programlisting"><code class="computeroutput"><span class="keyword">bool</span></code> <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Value</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">l</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">Value</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">r</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h7><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.modifier_s_"></a></span><a class="link" href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.modifier_s_">Modifier(s)</a>
+ </h7><p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h7><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.parameter_s_"></a></span><a class="link" href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.parameter_s_">Parameter(s)</a>
+ </h7><div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Value</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">l</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ First value.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Value</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">r</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Second value.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h7><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.returns"></a></span><a class="link" href="boost__geometry__index__equal_to.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to.operator___value_const____value_const___.returns">Returns</a>
+ </h7><p>
+ true if Values are equal.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__indexable.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../observers.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../group__inserters.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/observers/boost__geometry__index__indexable.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/observers/boost__geometry__index__indexable.html
new file mode 100644
index 0000000000..fccfaeee85
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/observers/boost__geometry__index__indexable.html
@@ -0,0 +1,264 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>boost::geometry::index::indexable</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../observers.html" title="Observers (boost::geometry::index::)">
+<link rel="prev" href="../observers.html" title="Observers (boost::geometry::index::)">
+<link rel="next" href="boost__geometry__index__equal_to.html" title="boost::geometry::index::equal_to">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../observers.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../observers.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__equal_to.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable"></a><a name="structboost_1_1geometry_1_1index_1_1indexable"></a><a class="link" href="boost__geometry__index__indexable.html" title="boost::geometry::index::indexable">boost::geometry::index::indexable</a>
+</h5></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section"><a href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___">operator()(Value
+ const &amp;)</a></span></dt></dl></div>
+<p>
+ <a class="indexterm" name="idp131748640"></a><a class="indexterm" name="idp131749328"></a><a class="indexterm" name="idp131750016"></a><a class="indexterm" name="idp131750704"></a>
+The function object extracting Indexable from Value.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.description"></a></span><a class="link" href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.description">Description</a>
+ </h6>
+<p>
+ It translates Value object to Indexable object. By default, it can handle
+ Values which are Indexables, std::pair&lt;Indexable, T2&gt;, boost::tuple&lt;Indexable,
+ ...&gt; and std::tuple&lt;Indexable, ...&gt; if STD tuples and variadic
+ templates are supported.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.header"></a></span><a class="link" href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">indexable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.synopsis"></a></span><a class="link" href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Value</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">struct</span> <span class="identifier">indexable</span></code>
+<code class="computeroutput"> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">indexable</span><span class="special">&lt;</span> <span class="identifier">Value</span> <span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="special">{</span></code>
+<code class="computeroutput"> <span class="comment">// ...</span></code>
+<code class="computeroutput"><span class="special">};</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.template_parameter_s_"></a></span><a class="link" href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Value</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Value type which may be translated directly to the Indexable.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.h4"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.typedef_s_"></a></span><a class="link" href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.typedef_s_">Typedef(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <a name="structboost_1_1geometry_1_1index_1_1indexable_1af6f21324f6484330b9deb0ee0629f4b4"></a><code class="computeroutput"><span class="identifier">result_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of result returned by function object. It should be
+ const Indexable reference.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.h5"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.member_s_"></a></span><a class="link" href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.member_s_">Member(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Modifier
+ </p>
+ </th>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__indexable.html#structboost_1_1geometry_1_1index_1_1indexable_1afa5f2cdc3390a6f1f394890e479df794"><code class="computeroutput"><span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Value</span> <span class="keyword">const</span>
+ <span class="special">&amp;)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ Return indexable extracted from the value.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___"></a><a name="structboost_1_1geometry_1_1index_1_1indexable_1afa5f2cdc3390a6f1f394890e479df794"></a><a class="link" href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___" title="operator()(Value const &amp;)">operator()(Value
+ const &amp;)</a>
+</h6></div></div></div>
+<p>
+ <a class="indexterm" name="idp131829536"></a>
+Return indexable extracted from the value.
+ </p>
+<h7><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.synopsis"></a></span><a class="link" href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.synopsis">Synopsis</a>
+ </h7><pre class="programlisting"><code class="literal"><a class="link" href="boost__geometry__index__indexable.html#structboost_1_1geometry_1_1index_1_1indexable_1af6f21324f6484330b9deb0ee0629f4b4">result_type</a></code> <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">Value</span> <span class="keyword">const</span> <span class="special">&amp;</span></code> <code class="computeroutput"><span class="identifier">v</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h7><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.modifier_s_"></a></span><a class="link" href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.modifier_s_">Modifier(s)</a>
+ </h7><p>
+</p>
+<pre class="programlisting"><span class="keyword">const</span></pre>
+<p>
+ </p>
+<h7><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.parameter_s_"></a></span><a class="link" href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.parameter_s_">Parameter(s)</a>
+ </h7><div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Value</span> <span class="keyword">const</span>
+ <span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">v</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The value.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h7><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.h3"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.returns"></a></span><a class="link" href="boost__geometry__index__indexable.html#geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable.operator___value_const___.returns">Returns</a>
+ </h7><p>
+ The indexable.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../observers.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../observers.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__equal_to.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters.html
new file mode 100644
index 0000000000..34302514e1
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>R-tree parameters (boost::geometry::index::)</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="group__rtree__functions/swap_rtree_________rtree________.html" title="swap(rtree&lt;...&gt; &amp;, rtree&lt;...&gt; &amp;)">
+<link rel="next" href="parameters/boost__geometry__index__linear.html" title="boost::geometry::index::linear">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="group__rtree__functions/swap_rtree_________rtree________.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="parameters/boost__geometry__index__linear.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.spatial_indexes.parameters"></a><a class="link" href="parameters.html" title="R-tree parameters (boost::geometry::index::)">R-tree
+ parameters (boost::geometry::index::)</a>
+</h4></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="parameters/boost__geometry__index__linear.html">boost::geometry::index::linear</a></span></dt>
+<dt><span class="section"><a href="parameters/boost__geometry__index__quadratic.html">boost::geometry::index::quadratic</a></span></dt>
+<dt><span class="section"><a href="parameters/boost__geometry__index__rstar.html">boost::geometry::index::rstar</a></span></dt>
+<dt><span class="section"><a href="parameters/boost__geometry__index__dynamic_linear.html">boost::geometry::index::dynamic_linear</a></span></dt>
+<dt><span class="section"><a href="parameters/boost__geometry__index__dynamic_quadratic.html">boost::geometry::index::dynamic_quadratic</a></span></dt>
+<dt><span class="section"><a href="parameters/boost__geometry__index__dynamic_rstar.html">boost::geometry::index::dynamic_rstar</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="group__rtree__functions/swap_rtree_________rtree________.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="parameters/boost__geometry__index__linear.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_linear.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_linear.html
new file mode 100644
index 0000000000..1e98ea6ab1
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_linear.html
@@ -0,0 +1,175 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>boost::geometry::index::dynamic_linear</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../parameters.html" title="R-tree parameters (boost::geometry::index::)">
+<link rel="prev" href="boost__geometry__index__rstar.html" title="boost::geometry::index::rstar">
+<link rel="next" href="boost__geometry__index__dynamic_quadratic.html" title="boost::geometry::index::dynamic_quadratic">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__rstar.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__dynamic_quadratic.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear"></a><a name="classboost_1_1geometry_1_1index_1_1dynamic__linear"></a><a class="link" href="boost__geometry__index__dynamic_linear.html" title="boost::geometry::index::dynamic_linear">boost::geometry::index::dynamic_linear</a>
+</h5></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section"><a href="boost__geometry__index__dynamic_linear.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.dynamic_linear_size_t_">dynamic_linear(size_t)</a></span></dt></dl></div>
+<p>
+ <a class="indexterm" name="idp131496928"></a><a class="indexterm" name="idp131497616"></a><a class="indexterm" name="idp131498304"></a><a class="indexterm" name="idp131498992"></a>
+Linear r-tree creation algorithm parameters - run-time version.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.header"></a></span><a class="link" href="boost__geometry__index__dynamic_linear.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">parameters</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.synopsis"></a></span><a class="link" href="boost__geometry__index__dynamic_linear.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">class</span> <span class="identifier">dynamic_linear</span></code>
+<code class="computeroutput"><span class="special">{</span></code>
+<code class="computeroutput"> <span class="comment">// ...</span></code>
+<code class="computeroutput"><span class="special">};</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.constructor_s__and_destructor"></a></span><a class="link" href="boost__geometry__index__dynamic_linear.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.constructor_s__and_destructor">Constructor(s)
+ and destructor</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__dynamic_linear.html#classboost_1_1geometry_1_1index_1_1dynamic__linear_1a01a756ed100c5ac7364a487c40d33f2b"><code class="computeroutput"><span class="identifier">dynamic_linear</span><span class="special">(</span><span class="identifier">size_t</span><span class="special">)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The constructor.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.dynamic_linear_size_t_"></a><a name="classboost_1_1geometry_1_1index_1_1dynamic__linear_1a01a756ed100c5ac7364a487c40d33f2b"></a><a class="link" href="boost__geometry__index__dynamic_linear.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.dynamic_linear_size_t_" title="dynamic_linear(size_t)">dynamic_linear(size_t)</a>
+</h6></div></div></div>
+<p>
+ <a class="indexterm" name="idp131535424"></a>
+The constructor.
+ </p>
+<h7><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.dynamic_linear_size_t_.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.dynamic_linear_size_t_.synopsis"></a></span><a class="link" href="boost__geometry__index__dynamic_linear.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.dynamic_linear_size_t_.synopsis">Synopsis</a>
+ </h7><pre class="programlisting"><code class="computeroutput"><span class="identifier">dynamic_linear</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">size_t</span></code> <code class="computeroutput"><span class="identifier">max_elements</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">size_t</span></code> <code class="computeroutput"><span class="identifier">min_elements</span></code> = <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_min_elements_d</span><span class="special">()</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h7><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.dynamic_linear_size_t_.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.dynamic_linear_size_t_.parameter_s_"></a></span><a class="link" href="boost__geometry__index__dynamic_linear.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear.dynamic_linear_size_t_.parameter_s_">Parameter(s)</a>
+ </h7><div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">max_elements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Maximum number of elements in nodes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">min_elements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Minimum number of elements in nodes. Default: 0.3*Max.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__rstar.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__dynamic_quadratic.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_quadratic.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_quadratic.html
new file mode 100644
index 0000000000..d543e0dbab
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_quadratic.html
@@ -0,0 +1,175 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>boost::geometry::index::dynamic_quadratic</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../parameters.html" title="R-tree parameters (boost::geometry::index::)">
+<link rel="prev" href="boost__geometry__index__dynamic_linear.html" title="boost::geometry::index::dynamic_linear">
+<link rel="next" href="boost__geometry__index__dynamic_rstar.html" title="boost::geometry::index::dynamic_rstar">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__dynamic_linear.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__dynamic_rstar.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic"></a><a name="classboost_1_1geometry_1_1index_1_1dynamic__quadratic"></a><a class="link" href="boost__geometry__index__dynamic_quadratic.html" title="boost::geometry::index::dynamic_quadratic">boost::geometry::index::dynamic_quadratic</a>
+</h5></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section"><a href="boost__geometry__index__dynamic_quadratic.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.dynamic_quadratic_size_t_">dynamic_quadratic(size_t)</a></span></dt></dl></div>
+<p>
+ <a class="indexterm" name="idp131572928"></a><a class="indexterm" name="idp131573616"></a><a class="indexterm" name="idp131574304"></a><a class="indexterm" name="idp131574992"></a>
+Quadratic r-tree creation algorithm parameters - run-time version.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.header"></a></span><a class="link" href="boost__geometry__index__dynamic_quadratic.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">parameters</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.synopsis"></a></span><a class="link" href="boost__geometry__index__dynamic_quadratic.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">class</span> <span class="identifier">dynamic_quadratic</span></code>
+<code class="computeroutput"><span class="special">{</span></code>
+<code class="computeroutput"> <span class="comment">// ...</span></code>
+<code class="computeroutput"><span class="special">};</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.constructor_s__and_destructor"></a></span><a class="link" href="boost__geometry__index__dynamic_quadratic.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.constructor_s__and_destructor">Constructor(s)
+ and destructor</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__dynamic_quadratic.html#classboost_1_1geometry_1_1index_1_1dynamic__quadratic_1a84a1db438cd93666082b7ff736a2189d"><code class="computeroutput"><span class="identifier">dynamic_quadratic</span><span class="special">(</span><span class="identifier">size_t</span><span class="special">)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The constructor.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.dynamic_quadratic_size_t_"></a><a name="classboost_1_1geometry_1_1index_1_1dynamic__quadratic_1a84a1db438cd93666082b7ff736a2189d"></a><a class="link" href="boost__geometry__index__dynamic_quadratic.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.dynamic_quadratic_size_t_" title="dynamic_quadratic(size_t)">dynamic_quadratic(size_t)</a>
+</h6></div></div></div>
+<p>
+ <a class="indexterm" name="idp131611856"></a>
+The constructor.
+ </p>
+<h7><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.dynamic_quadratic_size_t_.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.dynamic_quadratic_size_t_.synopsis"></a></span><a class="link" href="boost__geometry__index__dynamic_quadratic.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.dynamic_quadratic_size_t_.synopsis">Synopsis</a>
+ </h7><pre class="programlisting"><code class="computeroutput"><span class="identifier">dynamic_quadratic</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">size_t</span></code> <code class="computeroutput"><span class="identifier">max_elements</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">size_t</span></code> <code class="computeroutput"><span class="identifier">min_elements</span></code> = <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_min_elements_d</span><span class="special">()</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h7><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.dynamic_quadratic_size_t_.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.dynamic_quadratic_size_t_.parameter_s_"></a></span><a class="link" href="boost__geometry__index__dynamic_quadratic.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic.dynamic_quadratic_size_t_.parameter_s_">Parameter(s)</a>
+ </h7><div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">max_elements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Maximum number of elements in nodes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">min_elements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Minimum number of elements in nodes. Default: 0.3*Max.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__dynamic_linear.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__dynamic_rstar.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_rstar.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_rstar.html
new file mode 100644
index 0000000000..e18f189f1a
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_rstar.html
@@ -0,0 +1,220 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>boost::geometry::index::dynamic_rstar</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../parameters.html" title="R-tree parameters (boost::geometry::index::)">
+<link rel="prev" href="boost__geometry__index__dynamic_quadratic.html" title="boost::geometry::index::dynamic_quadratic">
+<link rel="next" href="../observers.html" title="Observers (boost::geometry::index::)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__dynamic_quadratic.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../observers.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar"></a><a name="classboost_1_1geometry_1_1index_1_1dynamic__rstar"></a><a class="link" href="boost__geometry__index__dynamic_rstar.html" title="boost::geometry::index::dynamic_rstar">boost::geometry::index::dynamic_rstar</a>
+</h5></div></div></div>
+<div class="toc"><dl class="toc"><dt><span class="section"><a href="boost__geometry__index__dynamic_rstar.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.dynamic_rstar_size_t_">dynamic_rstar(size_t)</a></span></dt></dl></div>
+<p>
+ <a class="indexterm" name="idp131649504"></a><a class="indexterm" name="idp131650192"></a><a class="indexterm" name="idp131650880"></a><a class="indexterm" name="idp131651568"></a>
+R*-tree creation algorithm parameters - run-time version.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.header"></a></span><a class="link" href="boost__geometry__index__dynamic_rstar.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">parameters</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.synopsis"></a></span><a class="link" href="boost__geometry__index__dynamic_rstar.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">class</span> <span class="identifier">dynamic_rstar</span></code>
+<code class="computeroutput"><span class="special">{</span></code>
+<code class="computeroutput"> <span class="comment">// ...</span></code>
+<code class="computeroutput"><span class="special">};</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.constructor_s__and_destructor"></a></span><a class="link" href="boost__geometry__index__dynamic_rstar.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.constructor_s__and_destructor">Constructor(s)
+ and destructor</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <a class="link" href="boost__geometry__index__dynamic_rstar.html#classboost_1_1geometry_1_1index_1_1dynamic__rstar_1ad5115c769752603a179bf158f02fdb1c"><code class="computeroutput"><span class="identifier">dynamic_rstar</span><span class="special">(</span><span class="identifier">size_t</span><span class="special">)</span></code></a>
+ </p>
+ </td>
+<td>
+ <p>
+ The constructor.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<div class="section">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.dynamic_rstar_size_t_"></a><a name="classboost_1_1geometry_1_1index_1_1dynamic__rstar_1ad5115c769752603a179bf158f02fdb1c"></a><a class="link" href="boost__geometry__index__dynamic_rstar.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.dynamic_rstar_size_t_" title="dynamic_rstar(size_t)">dynamic_rstar(size_t)</a>
+</h6></div></div></div>
+<p>
+ <a class="indexterm" name="idp131688064"></a>
+The constructor.
+ </p>
+<h7><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.dynamic_rstar_size_t_.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.dynamic_rstar_size_t_.synopsis"></a></span><a class="link" href="boost__geometry__index__dynamic_rstar.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.dynamic_rstar_size_t_.synopsis">Synopsis</a>
+ </h7><pre class="programlisting"><code class="computeroutput"><span class="identifier">dynamic_rstar</span></code><code class="computeroutput"><span class="special">(</span></code><code class="computeroutput"><span class="identifier">size_t</span></code> <code class="computeroutput"><span class="identifier">max_elements</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">size_t</span></code> <code class="computeroutput"><span class="identifier">min_elements</span></code> = <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_min_elements_d</span><span class="special">()</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">size_t</span></code> <code class="computeroutput"><span class="identifier">reinserted_elements</span></code> = <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_rstar_reinserted_elements_d</span><span class="special">()</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">size_t</span></code> <code class="computeroutput"><span class="identifier">overlap_cost_threshold</span></code> = <code class="computeroutput"><span class="number">32</span></code><code class="computeroutput"><span class="special">)</span></code>
+</pre>
+<h7><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.dynamic_rstar_size_t_.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.dynamic_rstar_size_t_.parameter_s_"></a></span><a class="link" href="boost__geometry__index__dynamic_rstar.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar.dynamic_rstar_size_t_.parameter_s_">Parameter(s)</a>
+ </h7><div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">max_elements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Maximum number of elements in nodes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">min_elements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Minimum number of elements in nodes. Default: 0.3*Max.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reinserted_elements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The number of elements reinserted by forced reinsertions
+ algorithm. If 0 forced reinsertions are disabled. Maximum
+ value is Max-Min+1. Greater values are truncated. Default:
+ 0.3*Max.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">overlap_cost_threshold</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The number of most suitable leafs taken into account while
+ choosing the leaf node to which currently inserted value
+ will be added. If value is in range (0, MaxElements) - the
+ algorithm calculates nearly minimum overlap cost, otherwise
+ all leafs are analyzed and true minimum overlap cost is calculated.
+ Default: 32.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__dynamic_quadratic.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../observers.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__linear.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__linear.html
new file mode 100644
index 0000000000..27badfcfcd
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__linear.html
@@ -0,0 +1,114 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>boost::geometry::index::linear</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../parameters.html" title="R-tree parameters (boost::geometry::index::)">
+<link rel="prev" href="../parameters.html" title="R-tree parameters (boost::geometry::index::)">
+<link rel="next" href="boost__geometry__index__quadratic.html" title="boost::geometry::index::quadratic">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../parameters.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__quadratic.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__linear"></a><a name="structboost_1_1geometry_1_1index_1_1linear"></a><a class="link" href="boost__geometry__index__linear.html" title="boost::geometry::index::linear">boost::geometry::index::linear</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp131321776"></a><a class="indexterm" name="idp131322464"></a><a class="indexterm" name="idp131323152"></a><a class="indexterm" name="idp131323840"></a>
+Linear r-tree creation algorithm parameters.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__linear.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__linear.header"></a></span><a class="link" href="boost__geometry__index__linear.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__linear.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">parameters</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__linear.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__linear.synopsis"></a></span><a class="link" href="boost__geometry__index__linear.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__linear.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MaxElements</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MinElements</span></code> = <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_min_elements_s</span><span class="special">&lt;</span><span class="identifier">MaxElements</span><span class="special">&gt;::</span><span class="identifier">value</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">struct</span> <span class="identifier">linear</span></code>
+<code class="computeroutput"><span class="special">{</span></code>
+<code class="computeroutput"> <span class="comment">// ...</span></code>
+<code class="computeroutput"><span class="special">};</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__linear.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__linear.template_parameter_s_"></a></span><a class="link" href="boost__geometry__index__linear.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__linear.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MaxElements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Maximum number of elements in nodes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MinElements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Minimum number of elements in nodes. Default: 0.3*Max.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../parameters.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__quadratic.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__quadratic.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__quadratic.html
new file mode 100644
index 0000000000..e3dbf3afda
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__quadratic.html
@@ -0,0 +1,114 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>boost::geometry::index::quadratic</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../parameters.html" title="R-tree parameters (boost::geometry::index::)">
+<link rel="prev" href="boost__geometry__index__linear.html" title="boost::geometry::index::linear">
+<link rel="next" href="boost__geometry__index__rstar.html" title="boost::geometry::index::rstar">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__linear.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__rstar.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__quadratic"></a><a name="structboost_1_1geometry_1_1index_1_1quadratic"></a><a class="link" href="boost__geometry__index__quadratic.html" title="boost::geometry::index::quadratic">boost::geometry::index::quadratic</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp131373568"></a><a class="indexterm" name="idp131374256"></a><a class="indexterm" name="idp131374944"></a><a class="indexterm" name="idp131375632"></a>
+Quadratic r-tree creation algorithm parameters.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__quadratic.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__quadratic.header"></a></span><a class="link" href="boost__geometry__index__quadratic.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__quadratic.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">parameters</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__quadratic.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__quadratic.synopsis"></a></span><a class="link" href="boost__geometry__index__quadratic.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__quadratic.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MaxElements</span></code><code class="computeroutput"><span class="special">,</span></code> <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MinElements</span></code> = <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_min_elements_s</span><span class="special">&lt;</span><span class="identifier">MaxElements</span><span class="special">&gt;::</span><span class="identifier">value</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">struct</span> <span class="identifier">quadratic</span></code>
+<code class="computeroutput"><span class="special">{</span></code>
+<code class="computeroutput"> <span class="comment">// ...</span></code>
+<code class="computeroutput"><span class="special">};</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__quadratic.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__quadratic.template_parameter_s_"></a></span><a class="link" href="boost__geometry__index__quadratic.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__quadratic.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MaxElements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Maximum number of elements in nodes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MinElements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Minimum number of elements in nodes. Default: 0.3*Max.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__linear.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__rstar.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__rstar.html b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__rstar.html
new file mode 100644
index 0000000000..241d9ef251
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/spatial_indexes/parameters/boost__geometry__index__rstar.html
@@ -0,0 +1,148 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>boost::geometry::index::rstar</title>
+<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../parameters.html" title="R-tree parameters (boost::geometry::index::)">
+<link rel="prev" href="boost__geometry__index__quadratic.html" title="boost::geometry::index::quadratic">
+<link rel="next" href="boost__geometry__index__dynamic_linear.html" title="boost::geometry::index::dynamic_linear">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__quadratic.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__dynamic_linear.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__rstar"></a><a name="structboost_1_1geometry_1_1index_1_1rstar"></a><a class="link" href="boost__geometry__index__rstar.html" title="boost::geometry::index::rstar">boost::geometry::index::rstar</a>
+</h5></div></div></div>
+<p>
+ <a class="indexterm" name="idp131425472"></a><a class="indexterm" name="idp131426160"></a><a class="indexterm" name="idp131426848"></a><a class="indexterm" name="idp131427536"></a>
+R*-tree creation algorithm parameters.
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__rstar.h0"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__rstar.header"></a></span><a class="link" href="boost__geometry__index__rstar.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__rstar.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">parameters</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__rstar.h1"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__rstar.synopsis"></a></span><a class="link" href="boost__geometry__index__rstar.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__rstar.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span></code><code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MaxElements</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MinElements</span></code> = <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_min_elements_s</span><span class="special">&lt;</span><span class="identifier">MaxElements</span><span class="special">&gt;::</span><span class="identifier">value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">ReinsertedElements</span></code> = <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_rstar_reinserted_elements_s</span><span class="special">&lt;</span><span class="identifier">MaxElements</span><span class="special">&gt;::</span><span class="identifier">value</span></code><code class="computeroutput"><span class="special">,</span></code>
+ <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">OverlapCostThreshold</span></code> = <code class="computeroutput"><span class="number">32</span></code><code class="computeroutput"><span class="special">&gt;</span></code>
+<code class="computeroutput"><span class="keyword">struct</span> <span class="identifier">rstar</span></code>
+<code class="computeroutput"><span class="special">{</span></code>
+<code class="computeroutput"> <span class="comment">// ...</span></code>
+<code class="computeroutput"><span class="special">};</span></code>
+</pre>
+<h6>
+<a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__rstar.h2"></a>
+ <span class="phrase"><a name="geometry.reference.spatial_indexes.parameters.boost__geometry__index__rstar.template_parameter_s_"></a></span><a class="link" href="boost__geometry__index__rstar.html#geometry.reference.spatial_indexes.parameters.boost__geometry__index__rstar.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MaxElements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Maximum number of elements in nodes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">MinElements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Minimum number of elements in nodes. Default: 0.3*Max.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">ReinsertedElements</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The number of elements reinserted by forced reinsertions algorithm.
+ If 0 forced reinsertions are disabled. Maximum value is Max+1-Min.
+ Greater values are truncated. Default: 0.3*Max.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">size_t</span> <span class="identifier">OverlapCostThreshold</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The number of most suitable leafs taken into account while
+ choosing the leaf node to which currently inserted value will
+ be added. If value is in range (0, MaxElements) - the algorithm
+ calculates nearly minimum overlap cost, otherwise all leafs
+ are analyzed and true minimum overlap cost is calculated. Default:
+ 32.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost__geometry__index__quadratic.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parameters.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost__geometry__index__dynamic_linear.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies.html b/libs/geometry/doc/html/geometry/reference/strategies.html
index b75fe31dcf..a52fa59fc9 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Strategies</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
-<link rel="prev" href="models/model_referring_segment.html" title="model::referring_segment">
+<link rel="prev" href="spatial_indexes/group__predicates/nearest_geometry_const____unsigned_.html" title="nearest(Geometry const &amp;, unsigned)">
<link rel="next" href="strategies/strategy_distance_pythagoras.html" title="strategy::distance::pythagoras">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,19 +20,30 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="models/model_referring_segment.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategies/strategy_distance_pythagoras.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="spatial_indexes/group__predicates/nearest_geometry_const____unsigned_.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategies/strategy_distance_pythagoras.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.strategies"></a><a class="link" href="strategies.html" title="Strategies">Strategies</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="strategies/strategy_distance_pythagoras.html">strategy::distance::pythagoras</a></span></dt>
+<dt><span class="section"><a href="strategies/strategy_distance_pythagoras_box_box.html">strategy::distance::pythagoras_box_box</a></span></dt>
+<dt><span class="section"><a href="strategies/strategy_distance_pythagoras_point_box.html">strategy::distance::pythagoras_point_box</a></span></dt>
<dt><span class="section"><a href="strategies/strategy_distance_haversine.html">strategy::distance::haversine</a></span></dt>
<dt><span class="section"><a href="strategies/strategy_distance_projected_point.html">strategy::distance::projected_point</a></span></dt>
<dt><span class="section"><a href="strategies/strategy_distance_cross_track.html">strategy::distance::cross_track</a></span></dt>
<dt><span class="section"><a href="strategies/strategy_area_surveyor.html">strategy::area::surveyor</a></span></dt>
<dt><span class="section"><a href="strategies/strategy_area_huiller.html">strategy::area::huiller</a></span></dt>
+<dt><span class="section"><a href="strategies/strategy_buffer_join_round.html">strategy::buffer::join_round</a></span></dt>
+<dt><span class="section"><a href="strategies/strategy_buffer_join_miter.html">strategy::buffer::join_miter</a></span></dt>
+<dt><span class="section"><a href="strategies/strategy_buffer_end_round.html">strategy::buffer::end_round</a></span></dt>
+<dt><span class="section"><a href="strategies/strategy_buffer_end_flat.html">strategy::buffer::end_flat</a></span></dt>
+<dt><span class="section"><a href="strategies/strategy_buffer_distance_symmetric.html">strategy::buffer::distance_symmetric</a></span></dt>
+<dt><span class="section"><a href="strategies/strategy_buffer_distance_asymmetric.html">strategy::buffer::distance_asymmetric</a></span></dt>
+<dt><span class="section"><a href="strategies/strategy_buffer_point_circle.html">strategy::buffer::point_circle</a></span></dt>
+<dt><span class="section"><a href="strategies/strategy_buffer_point_square.html">strategy::buffer::point_square</a></span></dt>
+<dt><span class="section"><a href="strategies/strategy_buffer_side_straight.html">strategy::buffer::side_straight</a></span></dt>
<dt><span class="section"><a href="strategies/strategy_centroid_average.html">strategy::centroid::average</a></span></dt>
<dt><span class="section"><a href="strategies/strategy_centroid_bashein_detmer.html">strategy::centroid::bashein_detmer</a></span></dt>
<dt><span class="section"><a href="strategies/strategy_convex_hull_graham_andrew.html">strategy::convex_hull::graham_andrew</a></span></dt>
@@ -53,8 +64,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -62,7 +73,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="models/model_referring_segment.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategies/strategy_distance_pythagoras.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="spatial_indexes/group__predicates/nearest_geometry_const____unsigned_.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategies/strategy_distance_pythagoras.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_huiller.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_huiller.html
index 081327ba77..68d2a7a585 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_huiller.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_huiller.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::area::huiller</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_area_surveyor.html" title="strategy::area::surveyor">
-<link rel="next" href="strategy_centroid_average.html" title="strategy::centroid::average">
+<link rel="next" href="strategy_buffer_join_round.html" title="strategy::buffer::join_round">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="strategy_area_surveyor.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_centroid_average.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="strategy_area_surveyor.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_join_round.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.strategies.strategy_area_huiller"></a><a class="link" href="strategy_area_huiller.html" title="strategy::area::huiller">strategy::area::huiller</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id962477"></a><a class="indexterm" name="id962483"></a><a class="indexterm" name="id962488"></a>
+ <a class="indexterm" name="idp133650528"></a><a class="indexterm" name="idp133651216"></a><a class="indexterm" name="idp133651904"></a>
Area calculation by spherical excess / Huiller's formula.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_area_huiller.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_area_huiller.synopsis"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_huiller.synopsis"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -46,7 +46,7 @@ Area calculation by spherical excess / Huiller's formula.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_area_huiller.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_area_huiller.template_parameter_s_"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_huiller.template_parameter_s_"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -110,7 +110,7 @@ Area calculation by spherical excess / Huiller's formula.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_area_huiller.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_area_huiller.constructor_s_"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_huiller.constructor_s_"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -154,7 +154,7 @@ Area calculation by spherical excess / Huiller's formula.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_area_huiller.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_area_huiller.member_function_s_"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_huiller.member_function_s_"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -162,6 +162,7 @@ Area calculation by spherical excess / Huiller's formula.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -209,6 +210,8 @@ Area calculation by spherical excess / Huiller's formula.
<span class="bold"><strong>excess_sum &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -225,19 +228,21 @@ Area calculation by spherical excess / Huiller's formula.
<span class="bold"><strong>excess_sum const &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_area_huiller.h4"></a>
- <span><a name="geometry.reference.strategies.strategy_area_huiller.header"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_huiller.header"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">spherical</span><span class="special">/</span><span class="identifier">area_huiller</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.strategies.strategy_area_huiller.h5"></a>
- <span><a name="geometry.reference.strategies.strategy_area_huiller.example"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_huiller.example"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.example">Example</a>
</h6>
<p>
Calculate the area of a polygon
@@ -249,7 +254,6 @@ Area calculation by spherical excess / Huiller's formula.
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">io</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">/</span><span class="identifier">wkt</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span> <a class="co" name="geometry.reference.strategies.strategy_area_huiller.c0" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.c1"><img src="../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a>
@@ -286,7 +290,7 @@ Area: 0.339837
</pre>
<h6>
<a name="geometry.reference.strategies.strategy_area_huiller.h6"></a>
- <span><a name="geometry.reference.strategies.strategy_area_huiller.see_also"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.see_also">See
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_huiller.see_also"></a></span><a class="link" href="strategy_area_huiller.html#geometry.reference.strategies.strategy_area_huiller.see_also">See
also</a>
</h6>
<p>
@@ -296,8 +300,8 @@ Area: 0.339837
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -305,7 +309,7 @@ Area: 0.339837
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="strategy_area_surveyor.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_centroid_average.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="strategy_area_surveyor.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_join_round.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_surveyor.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_surveyor.html
index 6b28549629..a61dc8b15d 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_surveyor.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_area_surveyor.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::area::surveyor</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_distance_cross_track.html" title="strategy::distance::cross_track">
@@ -27,12 +27,12 @@
<a name="geometry.reference.strategies.strategy_area_surveyor"></a><a class="link" href="strategy_area_surveyor.html" title="strategy::area::surveyor">strategy::area::surveyor</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id961719"></a><a class="indexterm" name="id961724"></a><a class="indexterm" name="id961730"></a>
+ <a class="indexterm" name="idp133561936"></a><a class="indexterm" name="idp133562624"></a><a class="indexterm" name="idp133563312"></a>
Area calculation for cartesian points.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_area_surveyor.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_area_surveyor.description"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_surveyor.description"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.description">Description</a>
</h6>
<p>
Calculates area using the Surveyor's formula, a well-known triangulation
@@ -40,7 +40,7 @@ Area calculation for cartesian points.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_area_surveyor.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_area_surveyor.synopsis"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_surveyor.synopsis"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -54,7 +54,7 @@ Area calculation for cartesian points.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_area_surveyor.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_area_surveyor.template_parameter_s_"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_surveyor.template_parameter_s_"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -118,7 +118,7 @@ Area calculation for cartesian points.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_area_surveyor.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_area_surveyor.member_function_s_"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_surveyor.member_function_s_"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -126,6 +126,7 @@ Area calculation for cartesian points.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -173,6 +174,8 @@ Area calculation for cartesian points.
<span class="bold"><strong>summation &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -189,19 +192,21 @@ Area calculation for cartesian points.
<span class="bold"><strong>summation const &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_area_surveyor.h4"></a>
- <span><a name="geometry.reference.strategies.strategy_area_surveyor.header"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_surveyor.header"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">area_surveyor</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.strategies.strategy_area_surveyor.h5"></a>
- <span><a name="geometry.reference.strategies.strategy_area_surveyor.see_also"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.see_also">See
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_area_surveyor.see_also"></a></span><a class="link" href="strategy_area_surveyor.html#geometry.reference.strategies.strategy_area_surveyor.see_also">See
also</a>
</h6>
<p>
@@ -211,8 +216,8 @@ Area calculation for cartesian points.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_distance_asymmetric.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_distance_asymmetric.html
new file mode 100644
index 0000000000..5931879a7b
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_distance_asymmetric.html
@@ -0,0 +1,223 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>strategy::buffer::distance_asymmetric</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../strategies.html" title="Strategies">
+<link rel="prev" href="strategy_buffer_distance_symmetric.html" title="strategy::buffer::distance_symmetric">
+<link rel="next" href="strategy_buffer_point_circle.html" title="strategy::buffer::point_circle">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_distance_symmetric.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_point_circle.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric"></a><a class="link" href="strategy_buffer_distance_asymmetric.html" title="strategy::buffer::distance_asymmetric">strategy::buffer::distance_asymmetric</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp134722064"></a><a class="indexterm" name="idp134722752"></a><a class="indexterm" name="idp134723440"></a>
+Let the buffer for linestrings be asymmetric.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.h0"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.synopsis"></a></span><a class="link" href="strategy_buffer_distance_asymmetric.html#geometry.reference.strategies.strategy_buffer_distance_asymmetric.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NumericType</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_asymmetric</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.h1"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.template_parameter_s_"></a></span><a class="link" href="strategy_buffer_distance_asymmetric.html#geometry.reference.strategies.strategy_buffer_distance_asymmetric.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ typename NumericType
+ </p>
+ </td>
+<td>
+ <p>
+ numerical type (int, double, ttmath, ...)
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.h2"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.constructor_s_"></a></span><a class="link" href="strategy_buffer_distance_asymmetric.html#geometry.reference.strategies.strategy_buffer_distance_asymmetric.constructor_s_">Constructor(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Parameters
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">distance_asymmetric</span><span class="special">(</span><span class="identifier">NumericType</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">left</span><span class="special">,</span> <span class="identifier">NumericType</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">right</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs the strategy, two distances must be specified.
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>NumericType const &amp;</strong></span>: <span class="emphasis"><em>left</em></span>:
+ The distance (or radius) of the buffer on the left side
+ </p>
+ <p>
+ <span class="bold"><strong>NumericType const &amp;</strong></span>: <span class="emphasis"><em>right</em></span>:
+ The distance on the right side
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.h3"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.header"></a></span><a class="link" href="strategy_buffer_distance_asymmetric.html#geometry.reference.strategies.strategy_buffer_distance_asymmetric.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">agnostic</span><span class="special">/</span><span class="identifier">buffer_distance_asymmetric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.h4"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.example"></a></span><a class="link" href="strategy_buffer_distance_asymmetric.html#geometry.reference.strategies.strategy_buffer_distance_asymmetric.example">Example</a>
+ </h6>
+<p>
+ Shows how the distance_asymmetric strategy can be used as a DistanceStrategy
+ to create asymmetric buffers
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">linestring</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+
+ <span class="comment">// Declare the asymmetric distance strategy</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_asymmetric</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">distance_strategy</span><span class="special">(</span><span class="number">1.0</span><span class="special">,</span> <span class="number">0.5</span><span class="special">);</span>
+
+ <span class="comment">// Declare other strategies</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">side_straight</span> <span class="identifier">side_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_round</span> <span class="identifier">join_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_round</span> <span class="identifier">end_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_circle</span> <span class="identifier">point_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare/fill a multi linestring</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_linestring</span><span class="special">&lt;</span><span class="identifier">linestring</span><span class="special">&gt;</span> <span class="identifier">ml</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"MULTILINESTRING((3 5,5 10,7 5),(7 7,11 10,15 7,19 10))"</span><span class="special">,</span> <span class="identifier">ml</span><span class="special">);</span>
+
+ <span class="comment">// Create the buffered geometry with left/right a different distance</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">ml</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
+ <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
+ <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">point_strategy</span><span class="special">);</span>
+
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.h5"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.output"></a></span><a class="link" href="strategy_buffer_distance_asymmetric.html#geometry.reference.strategies.strategy_buffer_distance_asymmetric.output">Output</a>
+ </h6>
+<p>
+ <span class="inlinemediaobject"><img src="../../../img/strategies/buffer_distance_asymmetric.png" alt="buffer_distance_asymmetric"></span>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.h6"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_asymmetric.see_also"></a></span><a class="link" href="strategy_buffer_distance_asymmetric.html#geometry.reference.strategies.strategy_buffer_distance_asymmetric.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="../algorithms/buffer/buffer_7_with_strategies.html" title="buffer (with strategies)">buffer
+ (with strategies)</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="strategy_buffer_distance_symmetric.html" title="strategy::buffer::distance_symmetric">distance_symmetric</a>
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_distance_symmetric.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_point_circle.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_distance_symmetric.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_distance_symmetric.html
new file mode 100644
index 0000000000..7b0eba5dce
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_distance_symmetric.html
@@ -0,0 +1,219 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>strategy::buffer::distance_symmetric</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../strategies.html" title="Strategies">
+<link rel="prev" href="strategy_buffer_end_flat.html" title="strategy::buffer::end_flat">
+<link rel="next" href="strategy_buffer_distance_asymmetric.html" title="strategy::buffer::distance_asymmetric">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_end_flat.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_distance_asymmetric.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.strategies.strategy_buffer_distance_symmetric"></a><a class="link" href="strategy_buffer_distance_symmetric.html" title="strategy::buffer::distance_symmetric">strategy::buffer::distance_symmetric</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp134535680"></a><a class="indexterm" name="idp134536368"></a><a class="indexterm" name="idp134537056"></a>
+Let the buffer algorithm create buffers with same distances.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.h0"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.synopsis"></a></span><a class="link" href="strategy_buffer_distance_symmetric.html#geometry.reference.strategies.strategy_buffer_distance_symmetric.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NumericType</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_symmetric</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.h1"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.template_parameter_s_"></a></span><a class="link" href="strategy_buffer_distance_symmetric.html#geometry.reference.strategies.strategy_buffer_distance_symmetric.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ typename NumericType
+ </p>
+ </td>
+<td>
+ <p>
+ numerical type (int, double, ttmath, ...)
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.h2"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.constructor_s_"></a></span><a class="link" href="strategy_buffer_distance_symmetric.html#geometry.reference.strategies.strategy_buffer_distance_symmetric.constructor_s_">Constructor(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Parameters
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">distance_symmetric</span><span class="special">(</span><span class="identifier">NumericType</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">distance</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs the strategy, a distance must be specified.
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>NumericType const &amp;</strong></span>: <span class="emphasis"><em>distance</em></span>:
+ The distance (or radius) of the buffer
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.h3"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.header"></a></span><a class="link" href="strategy_buffer_distance_symmetric.html#geometry.reference.strategies.strategy_buffer_distance_symmetric.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">agnostic</span><span class="special">/</span><span class="identifier">buffer_distance_symmetric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.h4"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.example"></a></span><a class="link" href="strategy_buffer_distance_symmetric.html#geometry.reference.strategies.strategy_buffer_distance_symmetric.example">Example</a>
+ </h6>
+<p>
+ Shows how the distance_symmetric strategy can be used as a DistanceStrategy
+ to create symmetric buffers
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">linestring</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+
+ <span class="comment">// Declare the symmetric distance strategy</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_symmetric</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">distance_strategy</span><span class="special">(</span><span class="number">0.5</span><span class="special">);</span>
+
+ <span class="comment">// Declare other strategies</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">side_straight</span> <span class="identifier">side_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_round</span> <span class="identifier">join_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_round</span> <span class="identifier">end_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_circle</span> <span class="identifier">point_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare/fill a multi linestring</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_linestring</span><span class="special">&lt;</span><span class="identifier">linestring</span><span class="special">&gt;</span> <span class="identifier">ml</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"MULTILINESTRING((3 5,5 10,7 5),(7 7,11 10,15 7,19 10))"</span><span class="special">,</span> <span class="identifier">ml</span><span class="special">);</span>
+
+ <span class="comment">// Create the buffered geometry with left/right the same distance</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">ml</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
+ <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
+ <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">point_strategy</span><span class="special">);</span>
+
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.h5"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.output"></a></span><a class="link" href="strategy_buffer_distance_symmetric.html#geometry.reference.strategies.strategy_buffer_distance_symmetric.output">Output</a>
+ </h6>
+<p>
+ <span class="inlinemediaobject"><img src="../../../img/strategies/buffer_distance_symmetric.png" alt="buffer_distance_symmetric"></span>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.h6"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_distance_symmetric.see_also"></a></span><a class="link" href="strategy_buffer_distance_symmetric.html#geometry.reference.strategies.strategy_buffer_distance_symmetric.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="../algorithms/buffer/buffer_7_with_strategies.html" title="buffer (with strategies)">buffer
+ (with strategies)</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="strategy_buffer_distance_asymmetric.html" title="strategy::buffer::distance_asymmetric">distance_asymmetric</a>
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_end_flat.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_distance_asymmetric.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_end_flat.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_end_flat.html
new file mode 100644
index 0000000000..6d36129d91
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_end_flat.html
@@ -0,0 +1,145 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>strategy::buffer::end_flat</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../strategies.html" title="Strategies">
+<link rel="prev" href="strategy_buffer_end_round.html" title="strategy::buffer::end_round">
+<link rel="next" href="strategy_buffer_distance_symmetric.html" title="strategy::buffer::distance_symmetric">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_end_round.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_distance_symmetric.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.strategies.strategy_buffer_end_flat"></a><a class="link" href="strategy_buffer_end_flat.html" title="strategy::buffer::end_flat">strategy::buffer::end_flat</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp134375360"></a><a class="indexterm" name="idp134376048"></a><a class="indexterm" name="idp134376736"></a>
+Let the buffer create flat ends.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_flat.h0"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_flat.description"></a></span><a class="link" href="strategy_buffer_end_flat.html#geometry.reference.strategies.strategy_buffer_end_flat.description">Description</a>
+ </h6>
+<p>
+ This strategy can be used as EndStrategy for the buffer algorithm. It creates
+ a flat end for each linestring-end. It can be applied for (multi)linestrings.
+ Also it is applicable for spikes in (multi)polygons. This strategy is only
+ applicable for Cartesian coordinate systems.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_flat.h1"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_flat.synopsis"></a></span><a class="link" href="strategy_buffer_end_flat.html#geometry.reference.strategies.strategy_buffer_end_flat.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_flat</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_flat.h2"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_flat.header"></a></span><a class="link" href="strategy_buffer_end_flat.html#geometry.reference.strategies.strategy_buffer_end_flat.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">buffer_end_flat</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_flat.h3"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_flat.example"></a></span><a class="link" href="strategy_buffer_end_flat.html#geometry.reference.strategies.strategy_buffer_end_flat.example">Example</a>
+ </h6>
+<p>
+ Shows how the end_flat strategy can be used as a EndStrategy to create
+ flat ends
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">linestring</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+
+ <span class="comment">// Declare the flat-end strategy</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_flat</span> <span class="identifier">end_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare other strategies</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_symmetric</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">distance_strategy</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">side_straight</span> <span class="identifier">side_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_round</span> <span class="identifier">join_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_circle</span> <span class="identifier">point_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare/fill a multi linestring</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_linestring</span><span class="special">&lt;</span><span class="identifier">linestring</span><span class="special">&gt;</span> <span class="identifier">ml</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"MULTILINESTRING((3 5,5 10,7 5),(7 7,11 10,15 7,19 10))"</span><span class="special">,</span> <span class="identifier">ml</span><span class="special">);</span>
+
+ <span class="comment">// Create the buffered geometry with flat ends</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">ml</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
+ <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
+ <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">point_strategy</span><span class="special">);</span>
+
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_flat.h4"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_flat.output"></a></span><a class="link" href="strategy_buffer_end_flat.html#geometry.reference.strategies.strategy_buffer_end_flat.output">Output</a>
+ </h6>
+<p>
+ <span class="inlinemediaobject"><img src="../../../img/strategies/buffer_end_flat.png" alt="buffer_end_flat"></span>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_flat.h5"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_flat.see_also"></a></span><a class="link" href="strategy_buffer_end_flat.html#geometry.reference.strategies.strategy_buffer_end_flat.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="../algorithms/buffer/buffer_7_with_strategies.html" title="buffer (with strategies)">buffer
+ (with strategies)</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="strategy_buffer_end_round.html" title="strategy::buffer::end_round">end_round</a>
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_end_round.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_distance_symmetric.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_end_round.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_end_round.html
new file mode 100644
index 0000000000..3a0853214e
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_end_round.html
@@ -0,0 +1,193 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>strategy::buffer::end_round</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../strategies.html" title="Strategies">
+<link rel="prev" href="strategy_buffer_join_miter.html" title="strategy::buffer::join_miter">
+<link rel="next" href="strategy_buffer_end_flat.html" title="strategy::buffer::end_flat">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_join_miter.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_end_flat.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.strategies.strategy_buffer_end_round"></a><a class="link" href="strategy_buffer_end_round.html" title="strategy::buffer::end_round">strategy::buffer::end_round</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp134196176"></a><a class="indexterm" name="idp134196864"></a><a class="indexterm" name="idp134197552"></a>
+Let the buffer create rounded ends.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_round.h0"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_round.description"></a></span><a class="link" href="strategy_buffer_end_round.html#geometry.reference.strategies.strategy_buffer_end_round.description">Description</a>
+ </h6>
+<p>
+ This strategy can be used as EndStrategy for the buffer algorithm. It creates
+ a rounded end for each linestring-end. It can be applied for (multi)linestrings.
+ Also it is applicable for spikes in (multi)polygons. This strategy is only
+ applicable for Cartesian coordinate systems.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_round.h1"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_round.synopsis"></a></span><a class="link" href="strategy_buffer_end_round.html#geometry.reference.strategies.strategy_buffer_end_round.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_round</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_round.h2"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_round.constructor_s_"></a></span><a class="link" href="strategy_buffer_end_round.html#geometry.reference.strategies.strategy_buffer_end_round.constructor_s_">Constructor(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Parameters
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">end_round</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">points_per_circle</span> <span class="special">=</span> <span class="number">90</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs the strategy.
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>std::size_t</strong></span>: <span class="emphasis"><em>points_per_circle</em></span>:
+ points which would be used for a full circle
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_round.h3"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_round.header"></a></span><a class="link" href="strategy_buffer_end_round.html#geometry.reference.strategies.strategy_buffer_end_round.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">buffer_end_round</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_round.h4"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_round.example"></a></span><a class="link" href="strategy_buffer_end_round.html#geometry.reference.strategies.strategy_buffer_end_round.example">Example</a>
+ </h6>
+<p>
+ Shows how the end_round strategy can be used as a EndStrategy to create
+ rounded ends
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">linestring</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+
+ <span class="comment">// Declare the round-end strategy with 36 points for a full circle</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_round</span> <span class="identifier">end_strategy</span><span class="special">(</span><span class="number">36</span><span class="special">);</span>
+
+ <span class="comment">// Declare other strategies</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_symmetric</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">distance_strategy</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">side_straight</span> <span class="identifier">side_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_round</span> <span class="identifier">join_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_circle</span> <span class="identifier">point_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare/fill a multi linestring</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_linestring</span><span class="special">&lt;</span><span class="identifier">linestring</span><span class="special">&gt;</span> <span class="identifier">ml</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"MULTILINESTRING((3 5,5 10,7 5),(7 7,11 10,15 7,19 10))"</span><span class="special">,</span> <span class="identifier">ml</span><span class="special">);</span>
+
+ <span class="comment">// Create the buffered geometry with rounded ends</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">ml</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
+ <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
+ <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">point_strategy</span><span class="special">);</span>
+
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_round.h5"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_round.output"></a></span><a class="link" href="strategy_buffer_end_round.html#geometry.reference.strategies.strategy_buffer_end_round.output">Output</a>
+ </h6>
+<p>
+ <span class="inlinemediaobject"><img src="../../../img/strategies/buffer_end_round.png" alt="buffer_end_round"></span>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_end_round.h6"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_end_round.see_also"></a></span><a class="link" href="strategy_buffer_end_round.html#geometry.reference.strategies.strategy_buffer_end_round.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="../algorithms/buffer/buffer_7_with_strategies.html" title="buffer (with strategies)">buffer
+ (with strategies)</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="strategy_buffer_end_flat.html" title="strategy::buffer::end_flat">end_flat</a>
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_join_miter.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_end_flat.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_join_miter.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_join_miter.html
new file mode 100644
index 0000000000..96e0b0895a
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_join_miter.html
@@ -0,0 +1,197 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>strategy::buffer::join_miter</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../strategies.html" title="Strategies">
+<link rel="prev" href="strategy_buffer_join_round.html" title="strategy::buffer::join_round">
+<link rel="next" href="strategy_buffer_end_round.html" title="strategy::buffer::end_round">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_join_round.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_end_round.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.strategies.strategy_buffer_join_miter"></a><a class="link" href="strategy_buffer_join_miter.html" title="strategy::buffer::join_miter">strategy::buffer::join_miter</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp134026320"></a><a class="indexterm" name="idp134027008"></a><a class="indexterm" name="idp134027696"></a>
+Let the buffer create sharp corners.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_miter.h0"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.description"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.description">Description</a>
+ </h6>
+<p>
+ This strategy can be used as JoinStrategy for the buffer algorithm. It
+ creates a sharp corners around each convex vertex. It can be applied for
+ (multi)linestrings and (multi)polygons. If corners are sharp by themselves,
+ the miters might become very long. Therefore there is a limit (miter_limit),
+ in terms of the used distance, which limits their length. The miter is
+ not changed to a bevel form (as done in some other software), it is just
+ adapted to the specified miter_limit but keeps its miter form. This strategy
+ is only applicable for Cartesian coordinate systems.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_miter.h1"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.synopsis"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_miter</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_miter.h2"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.constructor_s_"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.constructor_s_">Constructor(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Parameters
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">join_miter</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">miter_limit</span> <span class="special">=</span> <span class="number">5.0</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs the strategy.
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>double</strong></span>: <span class="emphasis"><em>miter_limit</em></span>:
+ The miter limit, to avoid excessively long miters around sharp
+ corners
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_miter.h3"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.header"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">buffer_join_miter</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_miter.h4"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.example"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.example">Example</a>
+ </h6>
+<p>
+ Shows how the join_miter strategy can be used as a JoinStrategy to create
+ sharp corners
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+
+ <span class="comment">// Declare the join_miter strategy</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_miter</span> <span class="identifier">join_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare other strategies</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_symmetric</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">distance_strategy</span><span class="special">(</span><span class="number">0.5</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_flat</span> <span class="identifier">end_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">side_straight</span> <span class="identifier">side_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_circle</span> <span class="identifier">point_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare/fill a multi polygon</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">mp</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"MULTIPOLYGON(((5 5,7 8,9 5,5 5)),((8 7,8 10,11 10,11 7,8 7)))"</span><span class="special">,</span> <span class="identifier">mp</span><span class="special">);</span>
+
+ <span class="comment">// Create the buffered geometry with sharp corners</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">mp</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
+ <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
+ <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">point_strategy</span><span class="special">);</span>
+
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_miter.h5"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.output"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.output">Output</a>
+ </h6>
+<p>
+ <span class="inlinemediaobject"><img src="../../../img/strategies/buffer_join_miter.png" alt="buffer_join_miter"></span>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_miter.h6"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_miter.see_also"></a></span><a class="link" href="strategy_buffer_join_miter.html#geometry.reference.strategies.strategy_buffer_join_miter.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="../algorithms/buffer/buffer_7_with_strategies.html" title="buffer (with strategies)">buffer
+ (with strategies)</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="strategy_buffer_join_round.html" title="strategy::buffer::join_round">join_round</a>
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_join_round.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_end_round.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_join_round.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_join_round.html
new file mode 100644
index 0000000000..98ef9d0564
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_join_round.html
@@ -0,0 +1,192 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>strategy::buffer::join_round</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../strategies.html" title="Strategies">
+<link rel="prev" href="strategy_area_huiller.html" title="strategy::area::huiller">
+<link rel="next" href="strategy_buffer_join_miter.html" title="strategy::buffer::join_miter">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_area_huiller.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_join_miter.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.strategies.strategy_buffer_join_round"></a><a class="link" href="strategy_buffer_join_round.html" title="strategy::buffer::join_round">strategy::buffer::join_round</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp133854784"></a><a class="indexterm" name="idp133855472"></a><a class="indexterm" name="idp133856160"></a>
+Let the buffer create rounded corners.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_round.h0"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_round.description"></a></span><a class="link" href="strategy_buffer_join_round.html#geometry.reference.strategies.strategy_buffer_join_round.description">Description</a>
+ </h6>
+<p>
+ This strategy can be used as JoinStrategy for the buffer algorithm. It
+ creates a rounded corners around each convex vertex. It can be applied
+ for (multi)linestrings and (multi)polygons. This strategy is only applicable
+ for Cartesian coordinate systems.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_round.h1"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_round.synopsis"></a></span><a class="link" href="strategy_buffer_join_round.html#geometry.reference.strategies.strategy_buffer_join_round.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_round</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_round.h2"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_round.constructor_s_"></a></span><a class="link" href="strategy_buffer_join_round.html#geometry.reference.strategies.strategy_buffer_join_round.constructor_s_">Constructor(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Parameters
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">join_round</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">points_per_circle</span> <span class="special">=</span> <span class="number">90</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs the strategy.
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>std::size_t</strong></span>: <span class="emphasis"><em>points_per_circle</em></span>:
+ points which would be used for a full circle
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_round.h3"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_round.header"></a></span><a class="link" href="strategy_buffer_join_round.html#geometry.reference.strategies.strategy_buffer_join_round.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">buffer_join_round</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_round.h4"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_round.example"></a></span><a class="link" href="strategy_buffer_join_round.html#geometry.reference.strategies.strategy_buffer_join_round.example">Example</a>
+ </h6>
+<p>
+ Shows how the join_round strategy can be used as a JoinStrategy to create
+ rounded corners
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+
+ <span class="comment">// Declare the join_round strategy with 72 points for a full circle</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_round</span> <span class="identifier">join_strategy</span><span class="special">(</span><span class="number">72</span><span class="special">);</span>
+
+ <span class="comment">// Declare other strategies</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_symmetric</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">distance_strategy</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_flat</span> <span class="identifier">end_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">side_straight</span> <span class="identifier">side_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_circle</span> <span class="identifier">point_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare/fill a multi polygon</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">mp</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"MULTIPOLYGON(((5 5,7 8,9 5,5 5)),((8 7,8 10,11 10,11 7,8 7)))"</span><span class="special">,</span> <span class="identifier">mp</span><span class="special">);</span>
+
+ <span class="comment">// Create the buffered geometry with rounded corners</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">mp</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
+ <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
+ <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">point_strategy</span><span class="special">);</span>
+
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_round.h5"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_round.output"></a></span><a class="link" href="strategy_buffer_join_round.html#geometry.reference.strategies.strategy_buffer_join_round.output">Output</a>
+ </h6>
+<p>
+ <span class="inlinemediaobject"><img src="../../../img/strategies/buffer_join_round.png" alt="buffer_join_round"></span>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_join_round.h6"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_join_round.see_also"></a></span><a class="link" href="strategy_buffer_join_round.html#geometry.reference.strategies.strategy_buffer_join_round.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="../algorithms/buffer/buffer_7_with_strategies.html" title="buffer (with strategies)">buffer
+ (with strategies)</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="strategy_buffer_join_miter.html" title="strategy::buffer::join_miter">join_miter</a>
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_area_huiller.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_join_miter.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_point_circle.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_point_circle.html
new file mode 100644
index 0000000000..c6633b7c52
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_point_circle.html
@@ -0,0 +1,193 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>strategy::buffer::point_circle</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../strategies.html" title="Strategies">
+<link rel="prev" href="strategy_buffer_distance_asymmetric.html" title="strategy::buffer::distance_asymmetric">
+<link rel="next" href="strategy_buffer_point_square.html" title="strategy::buffer::point_square">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_distance_asymmetric.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_point_square.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.strategies.strategy_buffer_point_circle"></a><a class="link" href="strategy_buffer_point_circle.html" title="strategy::buffer::point_circle">strategy::buffer::point_circle</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp134914448"></a><a class="indexterm" name="idp134915136"></a><a class="indexterm" name="idp134915824"></a>
+Create a circular buffer around a point.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_circle.h0"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_circle.description"></a></span><a class="link" href="strategy_buffer_point_circle.html#geometry.reference.strategies.strategy_buffer_point_circle.description">Description</a>
+ </h6>
+<p>
+ This strategy can be used as PointStrategy for the buffer algorithm. It
+ creates a circular buffer around a point. It can be applied for points
+ and multi_points, but also for a linestring (if it is degenerate, so consisting
+ of only one point) and for polygons (if it is degenerate). This strategy
+ is only applicable for Cartesian coordinate systems.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_circle.h1"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_circle.synopsis"></a></span><a class="link" href="strategy_buffer_point_circle.html#geometry.reference.strategies.strategy_buffer_point_circle.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_circle</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_circle.h2"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_circle.constructor_s_"></a></span><a class="link" href="strategy_buffer_point_circle.html#geometry.reference.strategies.strategy_buffer_point_circle.constructor_s_">Constructor(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Parameters
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">point_circle</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span> <span class="special">=</span> <span class="number">90</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs the strategy.
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>std::size_t</strong></span>: <span class="emphasis"><em>count</em></span>:
+ number of points for the created circle
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_circle.h3"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_circle.header"></a></span><a class="link" href="strategy_buffer_point_circle.html#geometry.reference.strategies.strategy_buffer_point_circle.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">buffer_point_circle</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_circle.h4"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_circle.example"></a></span><a class="link" href="strategy_buffer_point_circle.html#geometry.reference.strategies.strategy_buffer_point_circle.example">Example</a>
+ </h6>
+<p>
+ Shows how the point_circle strategy can be used as a PointStrategy to create
+ circular buffers around points
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+
+ <span class="comment">// Declare the point_circle strategy</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_circle</span> <span class="identifier">point_strategy</span><span class="special">(</span><span class="number">360</span><span class="special">);</span>
+
+ <span class="comment">// Declare other strategies</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_symmetric</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">distance_strategy</span><span class="special">(</span><span class="number">0.7</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_round</span> <span class="identifier">join_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_round</span> <span class="identifier">end_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">side_straight</span> <span class="identifier">side_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare/fill of a multi point</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_point</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">mp</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"MULTIPOINT((3 3),(3 4),(4 4),(7 3))"</span><span class="special">,</span> <span class="identifier">mp</span><span class="special">);</span>
+
+ <span class="comment">// Create the buffer of a multi point</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">mp</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
+ <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
+ <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">point_strategy</span><span class="special">);</span>
+
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_circle.h5"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_circle.output"></a></span><a class="link" href="strategy_buffer_point_circle.html#geometry.reference.strategies.strategy_buffer_point_circle.output">Output</a>
+ </h6>
+<p>
+ <span class="inlinemediaobject"><img src="../../../img/strategies/buffer_point_circle.png" alt="buffer_point_circle"></span>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_circle.h6"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_circle.see_also"></a></span><a class="link" href="strategy_buffer_point_circle.html#geometry.reference.strategies.strategy_buffer_point_circle.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="../algorithms/buffer/buffer_7_with_strategies.html" title="buffer (with strategies)">buffer
+ (with strategies)</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="strategy_buffer_point_square.html" title="strategy::buffer::point_square">point_square</a>
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_distance_asymmetric.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_point_square.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_point_square.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_point_square.html
new file mode 100644
index 0000000000..cc824cf0ff
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_point_square.html
@@ -0,0 +1,146 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>strategy::buffer::point_square</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../strategies.html" title="Strategies">
+<link rel="prev" href="strategy_buffer_point_circle.html" title="strategy::buffer::point_circle">
+<link rel="next" href="strategy_buffer_side_straight.html" title="strategy::buffer::side_straight">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_point_circle.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_side_straight.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.strategies.strategy_buffer_point_square"></a><a class="link" href="strategy_buffer_point_square.html" title="strategy::buffer::point_square">strategy::buffer::point_square</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp135086384"></a><a class="indexterm" name="idp135087072"></a><a class="indexterm" name="idp135087760"></a>
+Create a squared form buffer around a point.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_square.h0"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_square.description"></a></span><a class="link" href="strategy_buffer_point_square.html#geometry.reference.strategies.strategy_buffer_point_square.description">Description</a>
+ </h6>
+<p>
+ This strategy can be used as PointStrategy for the buffer algorithm. It
+ creates a square from each point, where the point lies in the center. It
+ can be applied for points and multi_points, but also for a linestring (if
+ it is degenerate, so consisting of only one point) and for polygons (if
+ it is degenerate). This strategy is only applicable for Cartesian coordinate
+ systems.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_square.h1"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_square.synopsis"></a></span><a class="link" href="strategy_buffer_point_square.html#geometry.reference.strategies.strategy_buffer_point_square.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_square</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_square.h2"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_square.header"></a></span><a class="link" href="strategy_buffer_point_square.html#geometry.reference.strategies.strategy_buffer_point_square.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">buffer_point_square</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_square.h3"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_square.example"></a></span><a class="link" href="strategy_buffer_point_square.html#geometry.reference.strategies.strategy_buffer_point_square.example">Example</a>
+ </h6>
+<p>
+ Shows how the point_square strategy can be used as a PointStrategy to create
+ square buffers where the original point lies in the center
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
+
+ <span class="comment">// Declare the point_square strategy</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">point_square</span> <span class="identifier">point_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare other strategies</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">distance_symmetric</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">distance_strategy</span><span class="special">(</span><span class="number">0.5</span><span class="special">);</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">join_round</span> <span class="identifier">join_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">end_round</span> <span class="identifier">end_strategy</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">side_straight</span> <span class="identifier">side_strategy</span><span class="special">;</span>
+
+ <span class="comment">// Declare/fill of a multi point</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_point</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">mp</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"MULTIPOINT((3 3),(3 4),(4 4),(7 3))"</span><span class="special">,</span> <span class="identifier">mp</span><span class="special">);</span>
+
+ <span class="comment">// Create the buffer of a multi point</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">multi_polygon</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">(</span><span class="identifier">mp</span><span class="special">,</span> <span class="identifier">result</span><span class="special">,</span>
+ <span class="identifier">distance_strategy</span><span class="special">,</span> <span class="identifier">side_strategy</span><span class="special">,</span>
+ <span class="identifier">join_strategy</span><span class="special">,</span> <span class="identifier">end_strategy</span><span class="special">,</span> <span class="identifier">point_strategy</span><span class="special">);</span>
+
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_square.h4"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_square.output"></a></span><a class="link" href="strategy_buffer_point_square.html#geometry.reference.strategies.strategy_buffer_point_square.output">Output</a>
+ </h6>
+<p>
+ <span class="inlinemediaobject"><img src="../../../img/strategies/buffer_point_square.png" alt="buffer_point_square"></span>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_point_square.h5"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_point_square.see_also"></a></span><a class="link" href="strategy_buffer_point_square.html#geometry.reference.strategies.strategy_buffer_point_square.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a class="link" href="../algorithms/buffer/buffer_7_with_strategies.html" title="buffer (with strategies)">buffer
+ (with strategies)</a>
+ </li>
+<li class="listitem">
+ <a class="link" href="strategy_buffer_point_circle.html" title="strategy::buffer::point_circle">point_circle</a>
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_point_circle.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_buffer_side_straight.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_side_straight.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_side_straight.html
new file mode 100644
index 0000000000..5610c61bc0
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_buffer_side_straight.html
@@ -0,0 +1,92 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>strategy::buffer::side_straight</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../strategies.html" title="Strategies">
+<link rel="prev" href="strategy_buffer_point_square.html" title="strategy::buffer::point_square">
+<link rel="next" href="strategy_centroid_average.html" title="strategy::centroid::average">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_point_square.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_centroid_average.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.strategies.strategy_buffer_side_straight"></a><a class="link" href="strategy_buffer_side_straight.html" title="strategy::buffer::side_straight">strategy::buffer::side_straight</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp135239440"></a><a class="indexterm" name="idp135240128"></a><a class="indexterm" name="idp135240816"></a>
+Let the buffer use straight sides along segments (the default)
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_side_straight.h0"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_side_straight.description"></a></span><a class="link" href="strategy_buffer_side_straight.html#geometry.reference.strategies.strategy_buffer_side_straight.description">Description</a>
+ </h6>
+<p>
+ This strategy can be used as SideStrategy for the buffer algorithm. It
+ is currently the only provided strategy for this purpose
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_side_straight.h1"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_side_straight.synopsis"></a></span><a class="link" href="strategy_buffer_side_straight.html#geometry.reference.strategies.strategy_buffer_side_straight.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">::</span><span class="identifier">side_straight</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_side_straight.h2"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_side_straight.header"></a></span><a class="link" href="strategy_buffer_side_straight.html#geometry.reference.strategies.strategy_buffer_side_straight.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">buffer_side_straight</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_side_straight.h3"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_side_straight.example"></a></span><a class="link" href="strategy_buffer_side_straight.html#geometry.reference.strategies.strategy_buffer_side_straight.example">Example</a>
+ </h6>
+<p>
+ See the examples for other buffer strategies, for example <a class="link" href="strategy_buffer_join_round.html" title="strategy::buffer::join_round">join_round</a>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_buffer_side_straight.h4"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_buffer_side_straight.see_also"></a></span><a class="link" href="strategy_buffer_side_straight.html#geometry.reference.strategies.strategy_buffer_side_straight.see_also">See
+ also</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ <a class="link" href="../algorithms/buffer/buffer_7_with_strategies.html" title="buffer (with strategies)">buffer
+ (with strategies)</a>
+ </li></ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_buffer_point_square.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_centroid_average.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_average.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_average.html
index bd1496dd90..cb216bda82 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_average.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_average.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::centroid::average</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
-<link rel="prev" href="strategy_area_huiller.html" title="strategy::area::huiller">
+<link rel="prev" href="strategy_buffer_side_straight.html" title="strategy::buffer::side_straight">
<link rel="next" href="strategy_centroid_bashein_detmer.html" title="strategy::centroid::bashein_detmer">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="strategy_area_huiller.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_centroid_bashein_detmer.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="strategy_buffer_side_straight.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_centroid_bashein_detmer.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.strategies.strategy_centroid_average"></a><a class="link" href="strategy_centroid_average.html" title="strategy::centroid::average">strategy::centroid::average</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id964248"></a><a class="indexterm" name="id964254"></a><a class="indexterm" name="id964260"></a>
+ <a class="indexterm" name="idp135278272"></a><a class="indexterm" name="idp135278960"></a><a class="indexterm" name="idp135279648"></a>
Centroid calculation taking average of points.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_centroid_average.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_centroid_average.synopsis"></a></span><a class="link" href="strategy_centroid_average.html#geometry.reference.strategies.strategy_centroid_average.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_centroid_average.synopsis"></a></span><a class="link" href="strategy_centroid_average.html#geometry.reference.strategies.strategy_centroid_average.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -46,7 +46,7 @@ Centroid calculation taking average of points.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_centroid_average.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_centroid_average.template_parameter_s_"></a></span><a class="link" href="strategy_centroid_average.html#geometry.reference.strategies.strategy_centroid_average.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_centroid_average.template_parameter_s_"></a></span><a class="link" href="strategy_centroid_average.html#geometry.reference.strategies.strategy_centroid_average.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -102,7 +102,7 @@ Centroid calculation taking average of points.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_centroid_average.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_centroid_average.member_function_s_"></a></span><a class="link" href="strategy_centroid_average.html#geometry.reference.strategies.strategy_centroid_average.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_centroid_average.member_function_s_"></a></span><a class="link" href="strategy_centroid_average.html#geometry.reference.strategies.strategy_centroid_average.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -110,6 +110,7 @@ Centroid calculation taking average of points.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -152,6 +153,8 @@ Centroid calculation taking average of points.
<span class="bold"><strong>sum &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -171,30 +174,23 @@ Centroid calculation taking average of points.
<span class="bold"><strong>PointCentroid &amp;</strong></span>: <span class="emphasis"><em>centroid</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_centroid_average.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_centroid_average.header"></a></span><a class="link" href="strategy_centroid_average.html#geometry.reference.strategies.strategy_centroid_average.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_centroid_average.header"></a></span><a class="link" href="strategy_centroid_average.html#geometry.reference.strategies.strategy_centroid_average.header">Header</a>
</h6>
<p>
- Either
- </p>
-<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">multi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
- </p>
-<p>
- Or
- </p>
-<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">multi</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">centroid_average</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">centroid_average</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -202,7 +198,7 @@ Centroid calculation taking average of points.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="strategy_area_huiller.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_centroid_bashein_detmer.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="strategy_buffer_side_straight.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_centroid_bashein_detmer.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_bashein_detmer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_bashein_detmer.html
index 26342fb365..c986c5e3a6 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_bashein_detmer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_centroid_bashein_detmer.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::centroid::bashein_detmer</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_centroid_average.html" title="strategy::centroid::average">
@@ -27,28 +27,19 @@
<a name="geometry.reference.strategies.strategy_centroid_bashein_detmer"></a><a class="link" href="strategy_centroid_bashein_detmer.html" title="strategy::centroid::bashein_detmer">strategy::centroid::bashein_detmer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id964989"></a><a class="indexterm" name="id964994"></a><a class="indexterm" name="id965000"></a>
-Centroid calculation using algorith Bashein / Detmer.
+ <a class="indexterm" name="idp135357104"></a><a class="indexterm" name="idp135357792"></a><a class="indexterm" name="idp135358480"></a>
+Centroid calculation using algorithm Bashein / Detmer.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.description"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.description"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.description">Description</a>
</h6>
<p>
Calculates centroid using triangulation method published by Bashein / Detmer
</p>
-<p>
- Statements:
- </p>
-<p>
- With holes:
- </p>
-<p>
- Statements:
- </p>
<h6>
<a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.synopsis"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.synopsis"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -62,7 +53,7 @@ Centroid calculation using algorith Bashein / Detmer.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.template_parameter_s_"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.template_parameter_s_"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -132,13 +123,18 @@ Centroid calculation using algorith Bashein / Detmer.
</p>
</td>
<td>
+ <p>
+ numeric type for calculation (e.g. high precision); if <span class="bold"><strong>void</strong></span> then it is extracted automatically
+ from the coordinate type and (if necessary) promoted to floating
+ point
+ </p>
</td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.member_function_s_"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.member_function_s_"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -146,6 +142,7 @@ Centroid calculation using algorith Bashein / Detmer.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -193,6 +190,8 @@ Centroid calculation using algorith Bashein / Detmer.
<span class="bold"><strong>sums &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -212,19 +211,21 @@ Centroid calculation using algorith Bashein / Detmer.
<span class="bold"><strong>Point &amp;</strong></span>: <span class="emphasis"><em>centroid</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.h4"></a>
- <span><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.header"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.header"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">centroid_bashein_detmer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.h5"></a>
- <span><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.see_also"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.see_also">See
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_centroid_bashein_detmer.see_also"></a></span><a class="link" href="strategy_centroid_bashein_detmer.html#geometry.reference.strategies.strategy_centroid_bashein_detmer.see_also">See
also</a>
</h6>
<p>
@@ -234,8 +235,8 @@ Centroid calculation using algorith Bashein / Detmer.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_convex_hull_graham_andrew.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_convex_hull_graham_andrew.html
index 6cabf394c1..977961cf98 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_convex_hull_graham_andrew.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_convex_hull_graham_andrew.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::convex_hull::graham_andrew</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_centroid_bashein_detmer.html" title="strategy::centroid::bashein_detmer">
@@ -27,12 +27,12 @@
<a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew"></a><a class="link" href="strategy_convex_hull_graham_andrew.html" title="strategy::convex_hull::graham_andrew">strategy::convex_hull::graham_andrew</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id965823"></a><a class="indexterm" name="id965829"></a><a class="indexterm" name="id965834"></a>
+ <a class="indexterm" name="idp135455296"></a><a class="indexterm" name="idp135455984"></a><a class="indexterm" name="idp135456672"></a>
Graham scan strategy to calculate convex hull.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.synopsis"></a></span><a class="link" href="strategy_convex_hull_graham_andrew.html#geometry.reference.strategies.strategy_convex_hull_graham_andrew.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.synopsis"></a></span><a class="link" href="strategy_convex_hull_graham_andrew.html#geometry.reference.strategies.strategy_convex_hull_graham_andrew.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -46,7 +46,7 @@ Graham scan strategy to calculate convex hull.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.template_parameter_s_"></a></span><a class="link" href="strategy_convex_hull_graham_andrew.html#geometry.reference.strategies.strategy_convex_hull_graham_andrew.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.template_parameter_s_"></a></span><a class="link" href="strategy_convex_hull_graham_andrew.html#geometry.reference.strategies.strategy_convex_hull_graham_andrew.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -89,7 +89,7 @@ Graham scan strategy to calculate convex hull.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.member_function_s_"></a></span><a class="link" href="strategy_convex_hull_graham_andrew.html#geometry.reference.strategies.strategy_convex_hull_graham_andrew.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.member_function_s_"></a></span><a class="link" href="strategy_convex_hull_graham_andrew.html#geometry.reference.strategies.strategy_convex_hull_graham_andrew.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -97,6 +97,7 @@ Graham scan strategy to calculate convex hull.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -140,13 +141,16 @@ Graham scan strategy to calculate convex hull.
<span class="bold"><strong>partitions &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
<p>
</p>
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">OutputIterator</span><span class="special">&gt;</span>
-<span class="keyword">void</span> <span class="identifier">result</span><span class="special">(</span><span class="identifier">partitions</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">state</span><span class="special">,</span> <span class="identifier">OutputIterator</span> <span class="identifier">out</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">clockwise</span><span class="special">)</span></pre>
+<span class="keyword">void</span> <span class="identifier">result</span><span class="special">(</span><span class="identifier">partitions</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">state</span><span class="special">,</span> <span class="identifier">OutputIterator</span> <span class="identifier">out</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">clockwise</span><span class="special">,</span>
+ <span class="keyword">bool</span> <span class="identifier">closed</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -162,13 +166,18 @@ Graham scan strategy to calculate convex hull.
<p>
<span class="bold"><strong>bool</strong></span>: <span class="emphasis"><em>clockwise</em></span>:
</p>
+ <p>
+ <span class="bold"><strong>bool</strong></span>: <span class="emphasis"><em>closed</em></span>:
+ </p>
+ </td>
+<td>
</td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.header"></a></span><a class="link" href="strategy_convex_hull_graham_andrew.html#geometry.reference.strategies.strategy_convex_hull_graham_andrew.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_convex_hull_graham_andrew.header"></a></span><a class="link" href="strategy_convex_hull_graham_andrew.html#geometry.reference.strategies.strategy_convex_hull_graham_andrew.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">agnostic</span><span class="special">/</span><span class="identifier">hull_graham_andrew</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -176,8 +185,8 @@ Graham scan strategy to calculate convex hull.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_cross_track.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_cross_track.html
index d81f41d478..5fe69535b0 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_cross_track.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_cross_track.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::distance::cross_track</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_distance_projected_point.html" title="strategy::distance::projected_point">
@@ -27,24 +27,24 @@
<a name="geometry.reference.strategies.strategy_distance_cross_track"></a><a class="link" href="strategy_distance_cross_track.html" title="strategy::distance::cross_track">strategy::distance::cross_track</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id960402"></a><a class="indexterm" name="id960408"></a><a class="indexterm" name="id960413"></a>
+ <a class="indexterm" name="idp133436480"></a><a class="indexterm" name="idp133437168"></a><a class="indexterm" name="idp133437856"></a>
Strategy functor for distance point to segment calculation.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_cross_track.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_cross_track.description"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_cross_track.description"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.description">Description</a>
</h6>
<p>
- Class which calculates the distance of a point to a segment, using latlong
- points
+ Class which calculates the distance of a point to a segment, for points
+ on a sphere or globe
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_cross_track.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_cross_track.synopsis"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_cross_track.synopsis"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">PointOfSegment</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Strategy</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Strategy</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">distance</span><span class="special">::</span><span class="identifier">cross_track</span>
<span class="special">{</span>
<span class="comment">// ...</span>
@@ -54,7 +54,7 @@ Strategy functor for distance point to segment calculation.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_cross_track.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_cross_track.template_parameter_s_"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_cross_track.template_parameter_s_"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -84,37 +84,6 @@ Strategy functor for distance point to segment calculation.
<tr>
<td>
<p>
- typename Point
- </p>
- </td>
-<td>
- </td>
-<td>
- <p>
- point type
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- typename PointOfSegment
- </p>
- </td>
-<td>
- <p>
- Point
- </p>
- </td>
-<td>
- <p>
- segment point type
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
typename CalculationType
</p>
</td>
@@ -139,7 +108,7 @@ Strategy functor for distance point to segment calculation.
</td>
<td>
<p>
- typename services::default_strategy&lt;point_tag, Point&gt;::type
+ haversine&lt;double, CalculationType&gt;
</p>
</td>
<td>
@@ -152,7 +121,7 @@ Strategy functor for distance point to segment calculation.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_distance_cross_track.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_cross_track.constructor_s_"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_cross_track.constructor_s_"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -195,7 +164,7 @@ Strategy functor for distance point to segment calculation.
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">cross_track</span><span class="special">(</span><span class="identifier">return_type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">cross_track</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">Strategy</span><span class="special">::</span><span class="identifier">radius_type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">r</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -203,7 +172,8 @@ Strategy functor for distance point to segment calculation.
</td>
<td>
<p>
- <span class="bold"><strong>return_type const &amp;</strong></span>: <span class="emphasis"><em>r</em></span>:
+ <span class="bold"><strong>typename Strategy::radius_type const &amp;</strong></span>:
+ <span class="emphasis"><em>r</em></span>:
</p>
</td>
</tr>
@@ -227,7 +197,7 @@ Strategy functor for distance point to segment calculation.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_distance_cross_track.h4"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_cross_track.member_function_s_"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_cross_track.member_function_s_"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -235,6 +205,7 @@ Strategy functor for distance point to segment calculation.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -263,7 +234,8 @@ Strategy functor for distance point to segment calculation.
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">return_type</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">sp1</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">sp2</span><span class="special">)</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">PointOfSegment</span><span class="special">&gt;</span>
+<span class="identifier">return_type</span><span class="special">&lt;</span> <span class="identifier">Point</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">sp1</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">sp2</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -282,12 +254,14 @@ Strategy functor for distance point to segment calculation.
<span class="emphasis"><em>sp2</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">return_type</span> <span class="identifier">radius</span><span class="special">()</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">Strategy</span><span class="special">::</span><span class="identifier">radius_type</span> <span class="identifier">radius</span><span class="special">()</span></pre>
<p>
</p>
</td>
@@ -295,19 +269,21 @@ Strategy functor for distance point to segment calculation.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_distance_cross_track.h5"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_cross_track.header"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_cross_track.header"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">spherical</span><span class="special">/</span><span class="identifier">distance_cross_track</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_cross_track.h6"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_cross_track.see_also"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.see_also">See
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_cross_track.see_also"></a></span><a class="link" href="strategy_distance_cross_track.html#geometry.reference.strategies.strategy_distance_cross_track.see_also">See
also</a>
</h6>
<p>
@@ -317,8 +293,8 @@ Strategy functor for distance point to segment calculation.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_haversine.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_haversine.html
index a1136aad13..006e6713c2 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_haversine.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_haversine.html
@@ -3,10 +3,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::distance::haversine</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
-<link rel="prev" href="strategy_distance_pythagoras.html" title="strategy::distance::pythagoras">
+<link rel="prev" href="strategy_distance_pythagoras_point_box.html" title="strategy::distance::pythagoras_point_box">
<link rel="next" href="strategy_distance_projected_point.html" title="strategy::distance::projected_point">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,24 +20,24 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="strategy_distance_pythagoras.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_projected_point.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="strategy_distance_pythagoras_point_box.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_projected_point.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.strategies.strategy_distance_haversine"></a><a class="link" href="strategy_distance_haversine.html" title="strategy::distance::haversine">strategy::distance::haversine</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id958748"></a><a class="indexterm" name="id958754"></a><a class="indexterm" name="id958760"></a>
+ <a class="indexterm" name="idp133241568"></a><a class="indexterm" name="idp133242256"></a><a class="indexterm" name="idp133242944"></a>
Distance calculation for spherical coordinates on a perfect sphere using
haversine.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_haversine.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_haversine.synopsis"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_haversine.synopsis"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Point2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">RadiusType</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">distance</span><span class="special">::</span><span class="identifier">haversine</span>
<span class="special">{</span>
<span class="comment">// ...</span>
@@ -47,7 +47,7 @@ Distance calculation for spherical coordinates on a perfect sphere using
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_haversine.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_haversine.template_parameter_s_"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_haversine.template_parameter_s_"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -77,31 +77,14 @@ Distance calculation for spherical coordinates on a perfect sphere using
<tr>
<td>
<p>
- typename Point1
+ typename RadiusType
</p>
</td>
<td>
</td>
<td>
<p>
- point type
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- typename Point2
- </p>
- </td>
-<td>
- <p>
- Point1
- </p>
- </td>
-<td>
- <p>
- second point type
+ numeric type for radius (of sphere, earth)
</p>
</td>
</tr>
@@ -128,7 +111,7 @@ Distance calculation for spherical coordinates on a perfect sphere using
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_distance_haversine.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_haversine.constructor_s_"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_haversine.constructor_s_"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -157,7 +140,7 @@ Distance calculation for spherical coordinates on a perfect sphere using
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">haversine</span><span class="special">(</span><span class="identifier">calculation_type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">radius</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">)</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">haversine</span><span class="special">(</span><span class="identifier">RadiusType</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">radius</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -168,16 +151,15 @@ Distance calculation for spherical coordinates on a perfect sphere using
</td>
<td>
<p>
- <span class="bold"><strong>calculation_type const &amp;</strong></span>:
- <span class="emphasis"><em>radius</em></span>: radius of the sphere, defaults to
- 1.0 for the unit sphere
+ <span class="bold"><strong>RadiusType const &amp;</strong></span>: <span class="emphasis"><em>radius</em></span>:
+ radius of the sphere, defaults to 1.0 for the unit sphere
</p>
</td>
</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_distance_haversine.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_haversine.member_function_s_"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_haversine.member_function_s_"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -214,7 +196,8 @@ Distance calculation for spherical coordinates on a perfect sphere using
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">calculation_type</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p1</span><span class="special">,</span> <span class="identifier">Point2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p2</span><span class="special">)</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Point2</span><span class="special">&gt;</span>
+<span class="identifier">calculation_type</span><span class="special">&lt;</span> <span class="identifier">Point1</span><span class="special">,</span> <span class="identifier">Point2</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p1</span><span class="special">,</span> <span class="identifier">Point2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p2</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -243,7 +226,7 @@ Distance calculation for spherical coordinates on a perfect sphere using
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">calculation_type</span> <span class="identifier">radius</span><span class="special">()</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">RadiusType</span> <span class="identifier">radius</span><span class="special">()</span></pre>
<p>
</p>
</td>
@@ -264,14 +247,14 @@ Distance calculation for spherical coordinates on a perfect sphere using
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_distance_haversine.h4"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_haversine.header"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_haversine.header"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">spherical</span><span class="special">/</span><span class="identifier">distance_haversine</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_haversine.h5"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_haversine.see_also"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.see_also">See
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_haversine.see_also"></a></span><a class="link" href="strategy_distance_haversine.html#geometry.reference.strategies.strategy_distance_haversine.see_also">See
also</a>
</h6>
<p>
@@ -281,8 +264,8 @@ Distance calculation for spherical coordinates on a perfect sphere using
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -290,7 +273,7 @@ Distance calculation for spherical coordinates on a perfect sphere using
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="strategy_distance_pythagoras.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_projected_point.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="strategy_distance_pythagoras_point_box.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_projected_point.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_projected_point.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_projected_point.html
index abf7a52b18..ec6549baaf 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_projected_point.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_projected_point.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::distance::projected_point</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_distance_haversine.html" title="strategy::distance::haversine">
@@ -27,23 +27,23 @@
<a name="geometry.reference.strategies.strategy_distance_projected_point"></a><a class="link" href="strategy_distance_projected_point.html" title="strategy::distance::projected_point">strategy::distance::projected_point</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id959623"></a><a class="indexterm" name="id959629"></a><a class="indexterm" name="id959634"></a>
+ <a class="indexterm" name="idp133346800"></a><a class="indexterm" name="idp133347488"></a><a class="indexterm" name="idp133348176"></a>
Strategy for distance point to segment.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_projected_point.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_projected_point.description"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_projected_point.description"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.description">Description</a>
</h6>
<p>
Calculates distance using projected-point method, and (optionally) Pythagoras
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_projected_point.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_projected_point.synopsis"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_projected_point.synopsis"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">PointOfSegment</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Strategy</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Strategy</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">distance</span><span class="special">::</span><span class="identifier">projected_point</span>
<span class="special">{</span>
<span class="comment">// ...</span>
@@ -53,7 +53,7 @@ Strategy for distance point to segment.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_projected_point.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_projected_point.template_parameter_s_"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_projected_point.template_parameter_s_"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -83,37 +83,6 @@ Strategy for distance point to segment.
<tr>
<td>
<p>
- typename Point
- </p>
- </td>
-<td>
- </td>
-<td>
- <p>
- Any type fulfilling a Point Concept
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- typename PointOfSegment
- </p>
- </td>
-<td>
- <p>
- Point
- </p>
- </td>
-<td>
- <p>
- segment point type
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
typename CalculationType
</p>
</td>
@@ -138,7 +107,7 @@ Strategy for distance point to segment.
</td>
<td>
<p>
- pythagoras&lt;Point, PointOfSegment, CalculationType&gt;
+ pythagoras&lt;CalculationType&gt;
</p>
</td>
<td>
@@ -151,7 +120,7 @@ Strategy for distance point to segment.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_distance_projected_point.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_projected_point.member_function_s_"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_projected_point.member_function_s_"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -159,6 +128,7 @@ Strategy for distance point to segment.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -186,7 +156,8 @@ Strategy for distance point to segment.
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">calculation_type</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p1</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p2</span><span class="special">)</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">PointOfSegment</span><span class="special">&gt;</span>
+<span class="identifier">calculation_type</span><span class="special">&lt;</span> <span class="identifier">Point</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p1</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p2</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -205,18 +176,20 @@ Strategy for distance point to segment.
<span class="emphasis"><em>p2</em></span>:
</p>
</td>
+<td>
+ </td>
</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_distance_projected_point.h4"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_projected_point.header"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_projected_point.header"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">distance_projected_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_projected_point.h5"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_projected_point.see_also"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.see_also">See
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_projected_point.see_also"></a></span><a class="link" href="strategy_distance_projected_point.html#geometry.reference.strategies.strategy_distance_projected_point.see_also">See
also</a>
</h6>
<p>
@@ -226,8 +199,8 @@ Strategy for distance point to segment.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras.html
index 92c8c8167f..150bd56ec0 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::distance::pythagoras</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="../strategies.html" title="Strategies">
-<link rel="next" href="strategy_distance_haversine.html" title="strategy::distance::haversine">
+<link rel="next" href="strategy_distance_pythagoras_box_box.html" title="strategy::distance::pythagoras_box_box">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,23 +20,23 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../strategies.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_haversine.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../strategies.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_pythagoras_box_box.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.strategies.strategy_distance_pythagoras"></a><a class="link" href="strategy_distance_pythagoras.html" title="strategy::distance::pythagoras">strategy::distance::pythagoras</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id958041"></a><a class="indexterm" name="id958047"></a><a class="indexterm" name="id958053"></a>
+ <a class="indexterm" name="idp132997536"></a><a class="indexterm" name="idp132998224"></a><a class="indexterm" name="idp132998912"></a>
Strategy to calculate the distance between two points.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_pythagoras.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_pythagoras.synopsis"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras.synopsis"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Point2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">distance</span><span class="special">::</span><span class="identifier">pythagoras</span>
<span class="special">{</span>
<span class="comment">// ...</span>
@@ -46,7 +46,7 @@ Strategy to calculate the distance between two points.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_pythagoras.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_pythagoras.template_parameter_s_"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras.template_parameter_s_"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -72,39 +72,7 @@ Strategy to calculate the distance between two points.
</p>
</th>
</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- typename Point1
- </p>
- </td>
-<td>
- </td>
-<td>
- <p>
- point type
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- typename Point2
- </p>
- </td>
-<td>
- <p>
- Point1
- </p>
- </td>
-<td>
- <p>
- second point type
- </p>
- </td>
-</tr>
-<tr>
+<tbody><tr>
<td>
<p>
typename CalculationType
@@ -122,12 +90,11 @@ Strategy to calculate the distance between two points.
point
</p>
</td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_distance_pythagoras.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_pythagoras.member_function_s_"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras.member_function_s_"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -163,7 +130,8 @@ Strategy to calculate the distance between two points.
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">calculation_type</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p1</span><span class="special">,</span> <span class="identifier">Point2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p2</span><span class="special">)</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">P1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P2</span><span class="special">&gt;</span>
+<span class="identifier">calculation_type</span><span class="special">&lt;</span> <span class="identifier">P1</span><span class="special">,</span> <span class="identifier">P2</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">P1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p1</span><span class="special">,</span> <span class="identifier">P2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p2</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -174,11 +142,11 @@ Strategy to calculate the distance between two points.
</td>
<td>
<p>
- <span class="bold"><strong>Point1 const &amp;</strong></span>: <span class="emphasis"><em>p1</em></span>:
+ <span class="bold"><strong>P1 const &amp;</strong></span>: <span class="emphasis"><em>p1</em></span>:
first point
</p>
<p>
- <span class="bold"><strong>Point2 const &amp;</strong></span>: <span class="emphasis"><em>p2</em></span>:
+ <span class="bold"><strong>P2 const &amp;</strong></span>: <span class="emphasis"><em>p2</em></span>:
second point
</p>
</td>
@@ -191,14 +159,14 @@ Strategy to calculate the distance between two points.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_distance_pythagoras.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_pythagoras.header"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras.header"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">distance_pythagoras</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.strategies.strategy_distance_pythagoras.h4"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_pythagoras.notes"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.notes">Notes</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras.notes"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.notes">Notes</a>
</h6>
<div class="note"><table border="0" summary="Note">
<tr>
@@ -211,7 +179,7 @@ Strategy to calculate the distance between two points.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_distance_pythagoras.h5"></a>
- <span><a name="geometry.reference.strategies.strategy_distance_pythagoras.see_also"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.see_also">See
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras.see_also"></a></span><a class="link" href="strategy_distance_pythagoras.html#geometry.reference.strategies.strategy_distance_pythagoras.see_also">See
also</a>
</h6>
<p>
@@ -221,8 +189,8 @@ Strategy to calculate the distance between two points.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -230,7 +198,7 @@ Strategy to calculate the distance between two points.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="../strategies.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_haversine.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="../strategies.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_pythagoras_box_box.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras_box_box.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras_box_box.html
new file mode 100644
index 0000000000..544737aefb
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras_box_box.html
@@ -0,0 +1,204 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>strategy::distance::pythagoras_box_box</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../strategies.html" title="Strategies">
+<link rel="prev" href="strategy_distance_pythagoras.html" title="strategy::distance::pythagoras">
+<link rel="next" href="strategy_distance_pythagoras_point_box.html" title="strategy::distance::pythagoras_point_box">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_distance_pythagoras.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_pythagoras_point_box.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box"></a><a class="link" href="strategy_distance_pythagoras_box_box.html" title="strategy::distance::pythagoras_box_box">strategy::distance::pythagoras_box_box</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp133078352"></a><a class="indexterm" name="idp133079040"></a><a class="indexterm" name="idp133079728"></a>
+Strategy to calculate the distance between two boxes.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.h0"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.synopsis"></a></span><a class="link" href="strategy_distance_pythagoras_box_box.html#geometry.reference.strategies.strategy_distance_pythagoras_box_box.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">distance</span><span class="special">::</span><span class="identifier">pythagoras_box_box</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.h1"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.template_parameter_s_"></a></span><a class="link" href="strategy_distance_pythagoras_box_box.html#geometry.reference.strategies.strategy_distance_pythagoras_box_box.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ typename CalculationType
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ numeric type for calculation (e.g. high precision); if <span class="bold"><strong>void</strong></span> then it is extracted automatically
+ from the coordinate type and (if necessary) promoted to floating
+ point
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.h2"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.member_function_s_"></a></span><a class="link" href="strategy_distance_pythagoras_box_box.html#geometry.reference.strategies.strategy_distance_pythagoras_box_box.member_function_s_">Member
+ Function(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Parameters
+ </p>
+ </th>
+<th>
+ <p>
+ Returns
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Box1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Box2</span><span class="special">&gt;</span>
+<span class="identifier">calculation_type</span><span class="special">&lt;</span> <span class="identifier">Box1</span><span class="special">,</span> <span class="identifier">Box2</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Box1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">box1</span><span class="special">,</span> <span class="identifier">Box2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">box2</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ applies the distance calculation using pythagoras_box_box
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Box1 const &amp;</strong></span>: <span class="emphasis"><em>box1</em></span>:
+ first box
+ </p>
+ <p>
+ <span class="bold"><strong>Box2 const &amp;</strong></span>: <span class="emphasis"><em>box2</em></span>:
+ second box
+ </p>
+ </td>
+<td>
+ <p>
+ the calculated distance (including taking the square root)
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.h3"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.header"></a></span><a class="link" href="strategy_distance_pythagoras_box_box.html#geometry.reference.strategies.strategy_distance_pythagoras_box_box.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">distance_pythagoras_box_box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.h4"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.notes"></a></span><a class="link" href="strategy_distance_pythagoras_box_box.html#geometry.reference.strategies.strategy_distance_pythagoras_box_box.notes">Notes</a>
+ </h6>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Can be used for boxes with two, three or more dimensions
+ </p></td></tr>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.h5"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_box_box.see_also"></a></span><a class="link" href="strategy_distance_pythagoras_box_box.html#geometry.reference.strategies.strategy_distance_pythagoras_box_box.see_also">See
+ also</a>
+ </h6>
+<p>
+ <a class="link" href="../algorithms/distance/distance_3_with_strategy.html" title="distance (with strategy)">distance
+ (with strategy)</a>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_distance_pythagoras.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_pythagoras_point_box.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras_point_box.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras_point_box.html
new file mode 100644
index 0000000000..be6965921d
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_distance_pythagoras_point_box.html
@@ -0,0 +1,204 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>strategy::distance::pythagoras_point_box</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../strategies.html" title="Strategies">
+<link rel="prev" href="strategy_distance_pythagoras_box_box.html" title="strategy::distance::pythagoras_box_box">
+<link rel="next" href="strategy_distance_haversine.html" title="strategy::distance::haversine">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_distance_pythagoras_box_box.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_haversine.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box"></a><a class="link" href="strategy_distance_pythagoras_point_box.html" title="strategy::distance::pythagoras_point_box">strategy::distance::pythagoras_point_box</a>
+</h4></div></div></div>
+<p>
+ <a class="indexterm" name="idp133160160"></a><a class="indexterm" name="idp133160848"></a><a class="indexterm" name="idp133161536"></a>
+Strategy to calculate the distance between a point and a box.
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.h0"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.synopsis"></a></span><a class="link" href="strategy_distance_pythagoras_point_box.html#geometry.reference.strategies.strategy_distance_pythagoras_point_box.synopsis">Synopsis</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">distance</span><span class="special">::</span><span class="identifier">pythagoras_point_box</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.h1"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.template_parameter_s_"></a></span><a class="link" href="strategy_distance_pythagoras_point_box.html#geometry.reference.strategies.strategy_distance_pythagoras_point_box.template_parameter_s_">Template
+ parameter(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ typename CalculationType
+ </p>
+ </td>
+<td>
+ <p>
+ void
+ </p>
+ </td>
+<td>
+ <p>
+ numeric type for calculation (e.g. high precision); if <span class="bold"><strong>void</strong></span> then it is extracted automatically
+ from the coordinate type and (if necessary) promoted to floating
+ point
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.h2"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.member_function_s_"></a></span><a class="link" href="strategy_distance_pythagoras_point_box.html#geometry.reference.strategies.strategy_distance_pythagoras_point_box.member_function_s_">Member
+ Function(s)</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Parameters
+ </p>
+ </th>
+<th>
+ <p>
+ Returns
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Point</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Box</span><span class="special">&gt;</span>
+<span class="identifier">calculation_type</span><span class="special">&lt;</span> <span class="identifier">Point</span><span class="special">,</span> <span class="identifier">Box</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">point</span><span class="special">,</span> <span class="identifier">Box</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">box</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ applies the distance calculation using pythagoras
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Point const &amp;</strong></span>: <span class="emphasis"><em>point</em></span>:
+ point
+ </p>
+ <p>
+ <span class="bold"><strong>Box const &amp;</strong></span>: <span class="emphasis"><em>box</em></span>:
+ box
+ </p>
+ </td>
+<td>
+ <p>
+ the calculated distance (including taking the square root)
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.h3"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.header"></a></span><a class="link" href="strategy_distance_pythagoras_point_box.html#geometry.reference.strategies.strategy_distance_pythagoras_point_box.header">Header</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">distance_pythagoras_point_box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.h4"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.notes"></a></span><a class="link" href="strategy_distance_pythagoras_point_box.html#geometry.reference.strategies.strategy_distance_pythagoras_point_box.notes">Notes</a>
+ </h6>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Can be used for points and boxes with two, three or more dimensions
+ </p></td></tr>
+</table></div>
+<h6>
+<a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.h5"></a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_distance_pythagoras_point_box.see_also"></a></span><a class="link" href="strategy_distance_pythagoras_point_box.html#geometry.reference.strategies.strategy_distance_pythagoras_point_box.see_also">See
+ also</a>
+ </h6>
+<p>
+ <a class="link" href="../algorithms/distance/distance_3_with_strategy.html" title="distance (with strategy)">distance
+ (with strategy)</a>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="strategy_distance_pythagoras_box_box.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../strategies.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="strategy_distance_haversine.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_cross_track.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_cross_track.html
index 263995d708..cff8dfc7ed 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_cross_track.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_cross_track.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::side::side_by_cross_track</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_side_side_by_triangle.html" title="strategy::side::side_by_triangle">
@@ -27,13 +27,13 @@
<a name="geometry.reference.strategies.strategy_side_side_by_cross_track"></a><a class="link" href="strategy_side_side_by_cross_track.html" title="strategy::side::side_by_cross_track">strategy::side::side_by_cross_track</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id967151"></a><a class="indexterm" name="id967156"></a><a class="indexterm" name="id967162"></a>
+ <a class="indexterm" name="idp135645712"></a><a class="indexterm" name="idp135646400"></a><a class="indexterm" name="idp135647088"></a>
Check at which side of a Great Circle segment a point lies left of segment
(&gt; 0), right of segment (&lt; 0), on segment (0)
</p>
<h6>
<a name="geometry.reference.strategies.strategy_side_side_by_cross_track.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_side_side_by_cross_track.synopsis"></a></span><a class="link" href="strategy_side_side_by_cross_track.html#geometry.reference.strategies.strategy_side_side_by_cross_track.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_side_by_cross_track.synopsis"></a></span><a class="link" href="strategy_side_side_by_cross_track.html#geometry.reference.strategies.strategy_side_side_by_cross_track.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -47,7 +47,7 @@ Check at which side of a Great Circle segment a point lies left of segment
</p>
<h6>
<a name="geometry.reference.strategies.strategy_side_side_by_cross_track.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_side_side_by_cross_track.template_parameter_s_"></a></span><a class="link" href="strategy_side_side_by_cross_track.html#geometry.reference.strategies.strategy_side_side_by_cross_track.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_side_by_cross_track.template_parameter_s_"></a></span><a class="link" href="strategy_side_side_by_cross_track.html#geometry.reference.strategies.strategy_side_side_by_cross_track.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -95,7 +95,7 @@ Check at which side of a Great Circle segment a point lies left of segment
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_side_side_by_cross_track.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_side_side_by_cross_track.member_function_s_"></a></span><a class="link" href="strategy_side_side_by_cross_track.html#geometry.reference.strategies.strategy_side_side_by_cross_track.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_side_by_cross_track.member_function_s_"></a></span><a class="link" href="strategy_side_side_by_cross_track.html#geometry.reference.strategies.strategy_side_side_by_cross_track.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -103,6 +103,7 @@ Check at which side of a Great Circle segment a point lies left of segment
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -148,11 +149,13 @@ Check at which side of a Great Circle segment a point lies left of segment
<span class="bold"><strong>P const &amp;</strong></span>: <span class="emphasis"><em>p</em></span>:
</p>
</td>
+<td>
+ </td>
</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_side_side_by_cross_track.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_side_side_by_cross_track.header"></a></span><a class="link" href="strategy_side_side_by_cross_track.html#geometry.reference.strategies.strategy_side_side_by_cross_track.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_side_by_cross_track.header"></a></span><a class="link" href="strategy_side_side_by_cross_track.html#geometry.reference.strategies.strategy_side_side_by_cross_track.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">spherical</span><span class="special">/</span><span class="identifier">side_by_cross_track</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -160,8 +163,8 @@ Check at which side of a Great Circle segment a point lies left of segment
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_triangle.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_triangle.html
index 38ffac32bd..43a936f94f 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_triangle.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_side_by_triangle.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::side::side_by_triangle</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_convex_hull_graham_andrew.html" title="strategy::convex_hull::graham_andrew">
@@ -27,13 +27,13 @@
<a name="geometry.reference.strategies.strategy_side_side_by_triangle"></a><a class="link" href="strategy_side_side_by_triangle.html" title="strategy::side::side_by_triangle">strategy::side::side_by_triangle</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id966517"></a><a class="indexterm" name="id966523"></a><a class="indexterm" name="id966528"></a>
+ <a class="indexterm" name="idp135541584"></a><a class="indexterm" name="idp135542272"></a><a class="indexterm" name="idp135542960"></a>
Check at which side of a segment a point lies: left of segment (&gt; 0),
right of segment (&lt; 0), on segment (0)
</p>
<h6>
<a name="geometry.reference.strategies.strategy_side_side_by_triangle.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_side_side_by_triangle.synopsis"></a></span><a class="link" href="strategy_side_side_by_triangle.html#geometry.reference.strategies.strategy_side_side_by_triangle.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_side_by_triangle.synopsis"></a></span><a class="link" href="strategy_side_side_by_triangle.html#geometry.reference.strategies.strategy_side_side_by_triangle.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -47,7 +47,7 @@ Check at which side of a segment a point lies: left of segment (&gt; 0),
</p>
<h6>
<a name="geometry.reference.strategies.strategy_side_side_by_triangle.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_side_side_by_triangle.template_parameter_s_"></a></span><a class="link" href="strategy_side_side_by_triangle.html#geometry.reference.strategies.strategy_side_side_by_triangle.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_side_by_triangle.template_parameter_s_"></a></span><a class="link" href="strategy_side_side_by_triangle.html#geometry.reference.strategies.strategy_side_side_by_triangle.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -95,7 +95,7 @@ Check at which side of a segment a point lies: left of segment (&gt; 0),
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_side_side_by_triangle.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_side_side_by_triangle.member_function_s_"></a></span><a class="link" href="strategy_side_side_by_triangle.html#geometry.reference.strategies.strategy_side_side_by_triangle.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_side_by_triangle.member_function_s_"></a></span><a class="link" href="strategy_side_side_by_triangle.html#geometry.reference.strategies.strategy_side_side_by_triangle.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -103,6 +103,7 @@ Check at which side of a segment a point lies: left of segment (&gt; 0),
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -126,7 +127,34 @@ Check at which side of a segment a point lies: left of segment (&gt; 0),
</p>
</th>
</tr></thead>
-<tbody><tr>
+<tbody>
+<tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">coordinate_type</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">promoted_type</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P2</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">P</span><span class="special">&gt;</span>
+<span class="identifier">promoted_type</span> <span class="identifier">side_value</span><span class="special">(</span><span class="identifier">P1</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p1</span><span class="special">,</span> <span class="identifier">P2</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p2</span><span class="special">,</span> <span class="identifier">P</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>P1 const &amp;</strong></span>: <span class="emphasis"><em>p1</em></span>:
+ </p>
+ <p>
+ <span class="bold"><strong>P2 const &amp;</strong></span>: <span class="emphasis"><em>p2</em></span>:
+ </p>
+ <p>
+ <span class="bold"><strong>P const &amp;</strong></span>: <span class="emphasis"><em>p</em></span>:
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
<td>
<p>
</p>
@@ -148,11 +176,14 @@ Check at which side of a segment a point lies: left of segment (&gt; 0),
<span class="bold"><strong>P const &amp;</strong></span>: <span class="emphasis"><em>p</em></span>:
</p>
</td>
-</tr></tbody>
+<td>
+ </td>
+</tr>
+</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_side_side_by_triangle.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_side_side_by_triangle.header"></a></span><a class="link" href="strategy_side_side_by_triangle.html#geometry.reference.strategies.strategy_side_side_by_triangle.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_side_by_triangle.header"></a></span><a class="link" href="strategy_side_side_by_triangle.html#geometry.reference.strategies.strategy_side_side_by_triangle.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">side_by_triangle</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -160,8 +191,8 @@ Check at which side of a segment a point lies: left of segment (&gt; 0),
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_spherical_side_formula.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_spherical_side_formula.html
index 70a339d1dc..9325dcef04 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_spherical_side_formula.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_side_spherical_side_formula.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::side::spherical_side_formula</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_side_side_by_cross_track.html" title="strategy::side::side_by_cross_track">
@@ -27,13 +27,13 @@
<a name="geometry.reference.strategies.strategy_side_spherical_side_formula"></a><a class="link" href="strategy_side_spherical_side_formula.html" title="strategy::side::spherical_side_formula">strategy::side::spherical_side_formula</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id967792"></a><a class="indexterm" name="id967798"></a><a class="indexterm" name="id967804"></a>
+ <a class="indexterm" name="idp135720928"></a><a class="indexterm" name="idp135721616"></a><a class="indexterm" name="idp135722304"></a>
Check at which side of a Great Circle segment a point lies left of segment
(&gt; 0), right of segment (&lt; 0), on segment (0)
</p>
<h6>
<a name="geometry.reference.strategies.strategy_side_spherical_side_formula.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_side_spherical_side_formula.synopsis"></a></span><a class="link" href="strategy_side_spherical_side_formula.html#geometry.reference.strategies.strategy_side_spherical_side_formula.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_spherical_side_formula.synopsis"></a></span><a class="link" href="strategy_side_spherical_side_formula.html#geometry.reference.strategies.strategy_side_spherical_side_formula.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -47,7 +47,7 @@ Check at which side of a Great Circle segment a point lies left of segment
</p>
<h6>
<a name="geometry.reference.strategies.strategy_side_spherical_side_formula.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_side_spherical_side_formula.template_parameter_s_"></a></span><a class="link" href="strategy_side_spherical_side_formula.html#geometry.reference.strategies.strategy_side_spherical_side_formula.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_spherical_side_formula.template_parameter_s_"></a></span><a class="link" href="strategy_side_spherical_side_formula.html#geometry.reference.strategies.strategy_side_spherical_side_formula.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -95,7 +95,7 @@ Check at which side of a Great Circle segment a point lies left of segment
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_side_spherical_side_formula.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_side_spherical_side_formula.member_function_s_"></a></span><a class="link" href="strategy_side_spherical_side_formula.html#geometry.reference.strategies.strategy_side_spherical_side_formula.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_spherical_side_formula.member_function_s_"></a></span><a class="link" href="strategy_side_spherical_side_formula.html#geometry.reference.strategies.strategy_side_spherical_side_formula.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -103,6 +103,7 @@ Check at which side of a Great Circle segment a point lies left of segment
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -148,11 +149,13 @@ Check at which side of a Great Circle segment a point lies left of segment
<span class="bold"><strong>P const &amp;</strong></span>: <span class="emphasis"><em>p</em></span>:
</p>
</td>
+<td>
+ </td>
</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_side_spherical_side_formula.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_side_spherical_side_formula.header"></a></span><a class="link" href="strategy_side_spherical_side_formula.html#geometry.reference.strategies.strategy_side_spherical_side_formula.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_side_spherical_side_formula.header"></a></span><a class="link" href="strategy_side_spherical_side_formula.html#geometry.reference.strategies.strategy_side_spherical_side_formula.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">spherical</span><span class="special">/</span><span class="identifier">ssf</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -160,8 +163,8 @@ Check at which side of a Great Circle segment a point lies left of segment
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_simplify_douglas_peucker.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_simplify_douglas_peucker.html
index 1f3ef40a2f..dff91952cf 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_simplify_douglas_peucker.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_simplify_douglas_peucker.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::simplify::douglas_peucker</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_side_spherical_side_formula.html" title="strategy::side::spherical_side_formula">
@@ -27,21 +27,20 @@
<a name="geometry.reference.strategies.strategy_simplify_douglas_peucker"></a><a class="link" href="strategy_simplify_douglas_peucker.html" title="strategy::simplify::douglas_peucker">strategy::simplify::douglas_peucker</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id968429"></a><a class="indexterm" name="id968434"></a><a class="indexterm" name="id968440"></a>
+ <a class="indexterm" name="idp135796256"></a><a class="indexterm" name="idp135796944"></a><a class="indexterm" name="idp135797632"></a>
Implements the simplify algorithm.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.description"></a></span><a class="link" href="strategy_simplify_douglas_peucker.html#geometry.reference.strategies.strategy_simplify_douglas_peucker.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.description"></a></span><a class="link" href="strategy_simplify_douglas_peucker.html#geometry.reference.strategies.strategy_simplify_douglas_peucker.description">Description</a>
</h6>
<p>
The douglas_peucker strategy simplifies a linestring, ring or vector of
- points using the well-known Douglas-Peucker algorithm. For the algorithm,
- see for example:
+ points using the well-known Douglas-Peucker algorithm.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.synopsis"></a></span><a class="link" href="strategy_simplify_douglas_peucker.html#geometry.reference.strategies.strategy_simplify_douglas_peucker.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.synopsis"></a></span><a class="link" href="strategy_simplify_douglas_peucker.html#geometry.reference.strategies.strategy_simplify_douglas_peucker.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -55,7 +54,7 @@ Implements the simplify algorithm.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.template_parameter_s_"></a></span><a class="link" href="strategy_simplify_douglas_peucker.html#geometry.reference.strategies.strategy_simplify_douglas_peucker.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.template_parameter_s_"></a></span><a class="link" href="strategy_simplify_douglas_peucker.html#geometry.reference.strategies.strategy_simplify_douglas_peucker.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -104,7 +103,7 @@ Implements the simplify algorithm.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.member_function_s_"></a></span><a class="link" href="strategy_simplify_douglas_peucker.html#geometry.reference.strategies.strategy_simplify_douglas_peucker.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.member_function_s_"></a></span><a class="link" href="strategy_simplify_douglas_peucker.html#geometry.reference.strategies.strategy_simplify_douglas_peucker.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -112,6 +111,7 @@ Implements the simplify algorithm.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -140,7 +140,7 @@ Implements the simplify algorithm.
<p>
</p>
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Range</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">OutputIterator</span><span class="special">&gt;</span>
-<span class="identifier">OutputIterator</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Range</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">range</span><span class="special">,</span> <span class="identifier">OutputIterator</span> <span class="identifier">out</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">max_distance</span><span class="special">)</span></pre>
+<span class="identifier">OutputIterator</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Range</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">range</span><span class="special">,</span> <span class="identifier">OutputIterator</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">distance_type</span> <span class="identifier">max_distance</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -154,14 +154,16 @@ Implements the simplify algorithm.
<span class="bold"><strong>OutputIterator</strong></span>: <span class="emphasis"><em>out</em></span>:
</p>
<p>
- <span class="bold"><strong>double</strong></span>: <span class="emphasis"><em>max_distance</em></span>:
+ <span class="bold"><strong>distance_type</strong></span>: <span class="emphasis"><em>max_distance</em></span>:
</p>
</td>
+<td>
+ </td>
</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.h4"></a>
- <span><a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.header"></a></span><a class="link" href="strategy_simplify_douglas_peucker.html#geometry.reference.strategies.strategy_simplify_douglas_peucker.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_simplify_douglas_peucker.header"></a></span><a class="link" href="strategy_simplify_douglas_peucker.html#geometry.reference.strategies.strategy_simplify_douglas_peucker.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">agnostic</span><span class="special">/</span><span class="identifier">simplify_douglas_peucker</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -169,8 +171,8 @@ Implements the simplify algorithm.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_inverse_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_inverse_transformer.html
index 5227e3e55d..c9ba3ddf3f 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_inverse_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_inverse_transformer.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::transform::inverse_transformer</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_simplify_douglas_peucker.html" title="strategy::simplify::douglas_peucker">
@@ -27,18 +27,19 @@
<a name="geometry.reference.strategies.strategy_transform_inverse_transformer"></a><a class="link" href="strategy_transform_inverse_transformer.html" title="strategy::transform::inverse_transformer">strategy::transform::inverse_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id969076"></a><a class="indexterm" name="id969081"></a><a class="indexterm" name="id969087"></a>
-Transformation strategy to do an inverse ransformation in Cartesian system.
+ <a class="indexterm" name="idp135871936"></a><a class="indexterm" name="idp135872624"></a><a class="indexterm" name="idp135873312"></a>
+Transformation strategy to do an inverse transformation in a Cartesian
+ coordinate system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_inverse_transformer.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_inverse_transformer.synopsis"></a></span><a class="link" href="strategy_transform_inverse_transformer.html#geometry.reference.strategies.strategy_transform_inverse_transformer.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_inverse_transformer.synopsis"></a></span><a class="link" href="strategy_transform_inverse_transformer.html#geometry.reference.strategies.strategy_transform_inverse_transformer.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">P1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P2</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension2</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">transform</span><span class="special">::</span><span class="identifier">inverse_transformer</span>
- <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">transform</span><span class="special">::</span><span class="identifier">ublas_transformer</span><span class="special">&lt;</span> <span class="identifier">P1</span><span class="special">,</span> <span class="identifier">P2</span><span class="special">,</span> <span class="identifier">dimension</span><span class="special">&lt;</span> <span class="identifier">P1</span> <span class="special">&gt;::</span><span class="identifier">type</span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">dimension</span><span class="special">&lt;</span> <span class="identifier">P2</span> <span class="special">&gt;::</span><span class="identifier">type</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">transform</span><span class="special">::</span><span class="identifier">ublas_transformer</span><span class="special">&lt;</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">Dimension2</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -47,7 +48,7 @@ Transformation strategy to do an inverse ransformation in Cartesian system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_inverse_transformer.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_inverse_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_inverse_transformer.html#geometry.reference.strategies.strategy_transform_inverse_transformer.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_inverse_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_inverse_transformer.html#geometry.reference.strategies.strategy_transform_inverse_transformer.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -71,32 +72,35 @@ Transformation strategy to do an inverse ransformation in Cartesian system.
<tr>
<td>
<p>
- typename P1
+ typename CalculationType
</p>
</td>
<td>
- <p>
- first point type
- </p>
</td>
</tr>
<tr>
<td>
<p>
- typename P2
+ std::size_t Dimension1
</p>
</td>
<td>
+ </td>
+</tr>
+<tr>
+<td>
<p>
- second point type
+ std::size_t Dimension2
</p>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_transform_inverse_transformer.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_inverse_transformer.constructor_s_"></a></span><a class="link" href="strategy_transform_inverse_transformer.html#geometry.reference.strategies.strategy_transform_inverse_transformer.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_inverse_transformer.constructor_s_"></a></span><a class="link" href="strategy_transform_inverse_transformer.html#geometry.reference.strategies.strategy_transform_inverse_transformer.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -141,7 +145,7 @@ Transformation strategy to do an inverse ransformation in Cartesian system.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_transform_inverse_transformer.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_inverse_transformer.header"></a></span><a class="link" href="strategy_transform_inverse_transformer.html#geometry.reference.strategies.strategy_transform_inverse_transformer.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_inverse_transformer.header"></a></span><a class="link" href="strategy_transform_inverse_transformer.html#geometry.reference.strategies.strategy_transform_inverse_transformer.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">transform</span><span class="special">/</span><span class="identifier">inverse_transformer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -149,8 +153,8 @@ Transformation strategy to do an inverse ransformation in Cartesian system.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_map_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_map_transformer.html
index 9c20c9a395..4a281c2cbb 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_map_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_map_transformer.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::transform::map_transformer</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_transform_inverse_transformer.html" title="strategy::transform::inverse_transformer">
@@ -27,18 +27,20 @@
<a name="geometry.reference.strategies.strategy_transform_map_transformer"></a><a class="link" href="strategy_transform_map_transformer.html" title="strategy::transform::map_transformer">strategy::transform::map_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id969740"></a><a class="indexterm" name="id969746"></a><a class="indexterm" name="id969751"></a>
-Transformation strategy to do map from one to another Cartesian system.
+ <a class="indexterm" name="idp135946864"></a><a class="indexterm" name="idp135947552"></a><a class="indexterm" name="idp135948240"></a>
+Transformation strategy to map from one to another Cartesian coordinate
+ system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_map_transformer.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_map_transformer.synopsis"></a></span><a class="link" href="strategy_transform_map_transformer.html#geometry.reference.strategies.strategy_transform_map_transformer.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_map_transformer.synopsis"></a></span><a class="link" href="strategy_transform_map_transformer.html#geometry.reference.strategies.strategy_transform_map_transformer.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">P1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P2</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">Mirror</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">SameScale</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension2</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension2</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">Mirror</span><span class="special">,</span>
+ <span class="keyword">bool</span> <span class="identifier">SameScale</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">transform</span><span class="special">::</span><span class="identifier">map_transformer</span>
- <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">transform</span><span class="special">::</span><span class="identifier">ublas_transformer</span><span class="special">&lt;</span> <span class="identifier">P1</span><span class="special">,</span> <span class="identifier">P2</span><span class="special">,</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">Dimension2</span> <span class="special">&gt;</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">transform</span><span class="special">::</span><span class="identifier">ublas_transformer</span><span class="special">&lt;</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">Dimension2</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -47,7 +49,7 @@ Transformation strategy to do map from one to another Cartesian system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_map_transformer.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_map_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_map_transformer.html#geometry.reference.strategies.strategy_transform_map_transformer.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_map_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_map_transformer.html#geometry.reference.strategies.strategy_transform_map_transformer.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -77,86 +79,63 @@ Transformation strategy to do map from one to another Cartesian system.
<tr>
<td>
<p>
- typename P1
+ typename CalculationType
</p>
</td>
<td>
</td>
<td>
- <p>
- first point type
- </p>
</td>
</tr>
<tr>
<td>
<p>
- typename P2
+ std::size_t Dimension1
</p>
</td>
<td>
</td>
<td>
- <p>
- second point type
- </p>
</td>
</tr>
<tr>
<td>
<p>
- bool Mirror
+ std::size_t Dimension2
</p>
</td>
<td>
- <p>
- false
- </p>
</td>
<td>
- <p>
- if true map is mirrored upside-down (in most cases pixels are
- from top to bottom, while map is from bottom to top)
- </p>
</td>
</tr>
<tr>
<td>
<p>
- bool SameScale
- </p>
- </td>
-<td>
- <p>
- true
+ bool Mirror
</p>
</td>
<td>
- </td>
-</tr>
-<tr>
-<td>
<p>
- std::size_t Dimension1
+ false
</p>
</td>
<td>
<p>
- dimension&lt;P1&gt;::type::value
+ if true map is mirrored upside-down (in most cases pixels are
+ from top to bottom, while map is from bottom to top)
</p>
</td>
-<td>
- </td>
</tr>
<tr>
<td>
<p>
- std::size_t Dimension2
+ bool SameScale
</p>
</td>
<td>
<p>
- dimension&lt;P2&gt;::type::value
+ true
</p>
</td>
<td>
@@ -166,7 +145,7 @@ Transformation strategy to do map from one to another Cartesian system.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_transform_map_transformer.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_map_transformer.constructor_s_"></a></span><a class="link" href="strategy_transform_map_transformer.html#geometry.reference.strategies.strategy_transform_map_transformer.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_map_transformer.constructor_s_"></a></span><a class="link" href="strategy_transform_map_transformer.html#geometry.reference.strategies.strategy_transform_map_transformer.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -220,7 +199,8 @@ Transformation strategy to do map from one to another Cartesian system.
<p>
</p>
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">W</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">D</span><span class="special">&gt;</span>
-<span class="identifier">map_transformer</span><span class="special">(</span><span class="identifier">W</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">wx1</span><span class="special">,</span> <span class="identifier">W</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">wy1</span><span class="special">,</span> <span class="identifier">W</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">wx2</span><span class="special">,</span> <span class="identifier">W</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">wy2</span><span class="special">,</span> <span class="identifier">D</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">width</span><span class="special">,</span> <span class="identifier">D</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">height</span><span class="special">)</span></pre>
+<span class="identifier">map_transformer</span><span class="special">(</span><span class="identifier">W</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">wx1</span><span class="special">,</span> <span class="identifier">W</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">wy1</span><span class="special">,</span> <span class="identifier">W</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">wx2</span><span class="special">,</span>
+ <span class="identifier">W</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">wy2</span><span class="special">,</span> <span class="identifier">D</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">width</span><span class="special">,</span> <span class="identifier">D</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">height</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -251,7 +231,7 @@ Transformation strategy to do map from one to another Cartesian system.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_transform_map_transformer.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_map_transformer.header"></a></span><a class="link" href="strategy_transform_map_transformer.html#geometry.reference.strategies.strategy_transform_map_transformer.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_map_transformer.header"></a></span><a class="link" href="strategy_transform_map_transformer.html#geometry.reference.strategies.strategy_transform_map_transformer.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">transform</span><span class="special">/</span><span class="identifier">map_transformer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -259,8 +239,8 @@ Transformation strategy to do map from one to another Cartesian system.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_rotate_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_rotate_transformer.html
index 357c82814e..0a3463daf1 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_rotate_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_rotate_transformer.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::transform::rotate_transformer</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_transform_map_transformer.html" title="strategy::transform::map_transformer">
@@ -27,12 +27,12 @@
<a name="geometry.reference.strategies.strategy_transform_rotate_transformer"></a><a class="link" href="strategy_transform_rotate_transformer.html" title="strategy::transform::rotate_transformer">strategy::transform::rotate_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id970933"></a><a class="indexterm" name="id970938"></a><a class="indexterm" name="id970944"></a>
-Strategy of rotate transformation in Cartesian system.
+ <a class="indexterm" name="idp136081312"></a><a class="indexterm" name="idp136082000"></a><a class="indexterm" name="idp136082688"></a>
+Strategy for rotate transformation in Cartesian coordinate system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_rotate_transformer.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_rotate_transformer.description"></a></span><a class="link" href="strategy_transform_rotate_transformer.html#geometry.reference.strategies.strategy_transform_rotate_transformer.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_rotate_transformer.description"></a></span><a class="link" href="strategy_transform_rotate_transformer.html#geometry.reference.strategies.strategy_transform_rotate_transformer.description">Description</a>
</h6>
<p>
Rotate rotates a geometry of specified angle about a fixed point (e.g.
@@ -40,12 +40,13 @@ Strategy of rotate transformation in Cartesian system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_rotate_transformer.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_rotate_transformer.synopsis"></a></span><a class="link" href="strategy_transform_rotate_transformer.html#geometry.reference.strategies.strategy_transform_rotate_transformer.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_rotate_transformer.synopsis"></a></span><a class="link" href="strategy_transform_rotate_transformer.html#geometry.reference.strategies.strategy_transform_rotate_transformer.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">P1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">DegreeOrRadian</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">DegreeOrRadian</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension2</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">transform</span><span class="special">::</span><span class="identifier">rotate_transformer</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">rad_rotate_transformer</span><span class="special">&lt;</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">Dimension2</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -54,7 +55,7 @@ Strategy of rotate transformation in Cartesian system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_rotate_transformer.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_rotate_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_rotate_transformer.html#geometry.reference.strategies.strategy_transform_rotate_transformer.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_rotate_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_rotate_transformer.html#geometry.reference.strategies.strategy_transform_rotate_transformer.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -78,44 +79,47 @@ Strategy of rotate transformation in Cartesian system.
<tr>
<td>
<p>
- typename P1
+ typename DegreeOrRadian
</p>
</td>
<td>
<p>
- first point type
+ degree/or/radian, type of rotation angle specification
</p>
</td>
</tr>
<tr>
<td>
<p>
- typename P2
+ typename CalculationType
</p>
</td>
<td>
- <p>
- second point type
- </p>
</td>
</tr>
<tr>
<td>
<p>
- typename DegreeOrRadian
+ std::size_t Dimension1
</p>
</td>
<td>
+ </td>
+</tr>
+<tr>
+<td>
<p>
- degree/or/radian, type of rotation angle specification
+ std::size_t Dimension2
</p>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_transform_rotate_transformer.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_rotate_transformer.constructor_s_"></a></span><a class="link" href="strategy_transform_rotate_transformer.html#geometry.reference.strategies.strategy_transform_rotate_transformer.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_rotate_transformer.constructor_s_"></a></span><a class="link" href="strategy_transform_rotate_transformer.html#geometry.reference.strategies.strategy_transform_rotate_transformer.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -144,7 +148,7 @@ Strategy of rotate transformation in Cartesian system.
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">rotate_transformer</span><span class="special">(</span><span class="identifier">angle_type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">angle</span><span class="special">)</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">rotate_transformer</span><span class="special">(</span><span class="identifier">CalculationType</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">angle</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -152,14 +156,15 @@ Strategy of rotate transformation in Cartesian system.
</td>
<td>
<p>
- <span class="bold"><strong>angle_type const &amp;</strong></span>: <span class="emphasis"><em>angle</em></span>:
+ <span class="bold"><strong>CalculationType const &amp;</strong></span>:
+ <span class="emphasis"><em>angle</em></span>:
</p>
</td>
</tr></tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_transform_rotate_transformer.h4"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_rotate_transformer.header"></a></span><a class="link" href="strategy_transform_rotate_transformer.html#geometry.reference.strategies.strategy_transform_rotate_transformer.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_rotate_transformer.header"></a></span><a class="link" href="strategy_transform_rotate_transformer.html#geometry.reference.strategies.strategy_transform_rotate_transformer.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">transform</span><span class="special">/</span><span class="identifier">matrix_transformers</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -167,8 +172,8 @@ Strategy of rotate transformation in Cartesian system.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_scale_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_scale_transformer.html
index aab81a6eb3..4339a5a0fd 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_scale_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_scale_transformer.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::transform::scale_transformer</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_transform_rotate_transformer.html" title="strategy::transform::rotate_transformer">
@@ -27,23 +27,23 @@
<a name="geometry.reference.strategies.strategy_transform_scale_transformer"></a><a class="link" href="strategy_transform_scale_transformer.html" title="strategy::transform::scale_transformer">strategy::transform::scale_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id971506"></a><a class="indexterm" name="id971512"></a><a class="indexterm" name="id971518"></a>
+ <a class="indexterm" name="idp136159648"></a><a class="indexterm" name="idp136160336"></a><a class="indexterm" name="idp136161024"></a>
Strategy of scale transformation in Cartesian system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_scale_transformer.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_scale_transformer.description"></a></span><a class="link" href="strategy_transform_scale_transformer.html#geometry.reference.strategies.strategy_transform_scale_transformer.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_scale_transformer.description"></a></span><a class="link" href="strategy_transform_scale_transformer.html#geometry.reference.strategies.strategy_transform_scale_transformer.description">Description</a>
</h6>
<p>
Scale scales a geometry up or down in all its dimensions.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_scale_transformer.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_scale_transformer.synopsis"></a></span><a class="link" href="strategy_transform_scale_transformer.html#geometry.reference.strategies.strategy_transform_scale_transformer.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_scale_transformer.synopsis"></a></span><a class="link" href="strategy_transform_scale_transformer.html#geometry.reference.strategies.strategy_transform_scale_transformer.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">P1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P2</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension2</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension2</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">transform</span><span class="special">::</span><span class="identifier">scale_transformer</span>
<span class="special">{</span>
<span class="comment">// ...</span>
@@ -53,14 +53,13 @@ Strategy of scale transformation in Cartesian system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_scale_transformer.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_scale_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_scale_transformer.html#geometry.reference.strategies.strategy_transform_scale_transformer.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_scale_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_scale_transformer.html#geometry.reference.strategies.strategy_transform_scale_transformer.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
-<col>
</colgroup>
<thead><tr>
<th>
@@ -70,11 +69,6 @@ Strategy of scale transformation in Cartesian system.
</th>
<th>
<p>
- Default
- </p>
- </th>
-<th>
- <p>
Description
</p>
</th>
@@ -83,33 +77,11 @@ Strategy of scale transformation in Cartesian system.
<tr>
<td>
<p>
- typename P1
+ typename CalculationType
</p>
</td>
<td>
</td>
-<td>
- <p>
- first point type
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- typename P2
- </p>
- </td>
-<td>
- <p>
- P1
- </p>
- </td>
-<td>
- <p>
- second point type
- </p>
- </td>
</tr>
<tr>
<td>
@@ -119,12 +91,7 @@ Strategy of scale transformation in Cartesian system.
</td>
<td>
<p>
- geometry::dimension&lt;P1&gt;::type::value
- </p>
- </td>
-<td>
- <p>
- number of dimensions to transform to second point
+ number of dimensions to transform from
</p>
</td>
</tr>
@@ -136,17 +103,15 @@ Strategy of scale transformation in Cartesian system.
</td>
<td>
<p>
- geometry::dimension&lt;P2&gt;::type::value
+ number of dimensions to transform to
</p>
</td>
-<td>
- </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_transform_scale_transformer.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_scale_transformer.header"></a></span><a class="link" href="strategy_transform_scale_transformer.html#geometry.reference.strategies.strategy_transform_scale_transformer.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_scale_transformer.header"></a></span><a class="link" href="strategy_transform_scale_transformer.html#geometry.reference.strategies.strategy_transform_scale_transformer.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">transform</span><span class="special">/</span><span class="identifier">matrix_transformers</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -154,8 +119,8 @@ Strategy of scale transformation in Cartesian system.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_translate_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_translate_transformer.html
index 1522c9c488..244c2b0c31 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_translate_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_translate_transformer.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::transform::translate_transformer</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_transform_scale_transformer.html" title="strategy::transform::scale_transformer">
@@ -27,23 +27,23 @@
<a name="geometry.reference.strategies.strategy_transform_translate_transformer"></a><a class="link" href="strategy_transform_translate_transformer.html" title="strategy::transform::translate_transformer">strategy::transform::translate_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id972015"></a><a class="indexterm" name="id972021"></a><a class="indexterm" name="id972026"></a>
+ <a class="indexterm" name="idp136210960"></a><a class="indexterm" name="idp136211648"></a><a class="indexterm" name="idp136212336"></a>
Strategy of translate transformation in Cartesian system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_translate_transformer.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_translate_transformer.description"></a></span><a class="link" href="strategy_transform_translate_transformer.html#geometry.reference.strategies.strategy_transform_translate_transformer.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_translate_transformer.description"></a></span><a class="link" href="strategy_transform_translate_transformer.html#geometry.reference.strategies.strategy_transform_translate_transformer.description">Description</a>
</h6>
<p>
Translate moves a geometry a fixed distance in 2 or 3 dimensions.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_translate_transformer.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_translate_transformer.synopsis"></a></span><a class="link" href="strategy_transform_translate_transformer.html#geometry.reference.strategies.strategy_transform_translate_transformer.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_translate_transformer.synopsis"></a></span><a class="link" href="strategy_transform_translate_transformer.html#geometry.reference.strategies.strategy_transform_translate_transformer.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">P1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P2</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension2</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension2</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">transform</span><span class="special">::</span><span class="identifier">translate_transformer</span>
<span class="special">{</span>
<span class="comment">// ...</span>
@@ -53,14 +53,13 @@ Strategy of translate transformation in Cartesian system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_translate_transformer.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_translate_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_translate_transformer.html#geometry.reference.strategies.strategy_transform_translate_transformer.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_translate_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_translate_transformer.html#geometry.reference.strategies.strategy_transform_translate_transformer.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
-<col>
</colgroup>
<thead><tr>
<th>
@@ -70,11 +69,6 @@ Strategy of translate transformation in Cartesian system.
</th>
<th>
<p>
- Default
- </p>
- </th>
-<th>
- <p>
Description
</p>
</th>
@@ -83,30 +77,11 @@ Strategy of translate transformation in Cartesian system.
<tr>
<td>
<p>
- typename P1
+ typename CalculationType
</p>
</td>
<td>
</td>
-<td>
- <p>
- first point type
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- typename P2
- </p>
- </td>
-<td>
- </td>
-<td>
- <p>
- second point type
- </p>
- </td>
</tr>
<tr>
<td>
@@ -116,12 +91,7 @@ Strategy of translate transformation in Cartesian system.
</td>
<td>
<p>
- geometry::dimension&lt;P1&gt;::type::value
- </p>
- </td>
-<td>
- <p>
- number of dimensions to transform to second point
+ number of dimensions to transform from
</p>
</td>
</tr>
@@ -133,17 +103,15 @@ Strategy of translate transformation in Cartesian system.
</td>
<td>
<p>
- geometry::dimension&lt;P2&gt;::type::value
+ number of dimensions to transform to
</p>
</td>
-<td>
- </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_transform_translate_transformer.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_translate_transformer.header"></a></span><a class="link" href="strategy_transform_translate_transformer.html#geometry.reference.strategies.strategy_transform_translate_transformer.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_translate_transformer.header"></a></span><a class="link" href="strategy_transform_translate_transformer.html#geometry.reference.strategies.strategy_transform_translate_transformer.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">transform</span><span class="special">/</span><span class="identifier">matrix_transformers</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -151,8 +119,8 @@ Strategy of translate transformation in Cartesian system.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_ublas_transformer.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_ublas_transformer.html
index d7d230de0d..10c0b8abaa 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_ublas_transformer.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_transform_ublas_transformer.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::transform::ublas_transformer</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_transform_translate_transformer.html" title="strategy::transform::translate_transformer">
@@ -27,12 +27,12 @@
<a name="geometry.reference.strategies.strategy_transform_ublas_transformer"></a><a class="link" href="strategy_transform_ublas_transformer.html" title="strategy::transform::ublas_transformer">strategy::transform::ublas_transformer</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id972521"></a><a class="indexterm" name="id972526"></a><a class="indexterm" name="id972532"></a>
+ <a class="indexterm" name="idp136262512"></a><a class="indexterm" name="idp136263200"></a><a class="indexterm" name="idp136263888"></a>
Affine transformation strategy in Cartesian system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_ublas_transformer.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_ublas_transformer.description"></a></span><a class="link" href="strategy_transform_ublas_transformer.html#geometry.reference.strategies.strategy_transform_ublas_transformer.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_ublas_transformer.description"></a></span><a class="link" href="strategy_transform_ublas_transformer.html#geometry.reference.strategies.strategy_transform_ublas_transformer.description">Description</a>
</h6>
<p>
The strategy serves as a generic definition of affine transformation matrix
@@ -40,11 +40,11 @@ Affine transformation strategy in Cartesian system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_ublas_transformer.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_ublas_transformer.synopsis"></a></span><a class="link" href="strategy_transform_ublas_transformer.html#geometry.reference.strategies.strategy_transform_ublas_transformer.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_ublas_transformer.synopsis"></a></span><a class="link" href="strategy_transform_ublas_transformer.html#geometry.reference.strategies.strategy_transform_ublas_transformer.synopsis">Synopsis</a>
</h6>
<p>
</p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">P1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P2</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension2</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CalculationType</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension1</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Dimension2</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">strategy</span><span class="special">::</span><span class="identifier">transform</span><span class="special">::</span><span class="identifier">ublas_transformer</span>
<span class="special">{</span>
<span class="comment">// ...</span>
@@ -54,7 +54,7 @@ Affine transformation strategy in Cartesian system.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_transform_ublas_transformer.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_ublas_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_ublas_transformer.html#geometry.reference.strategies.strategy_transform_ublas_transformer.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_ublas_transformer.template_parameter_s_"></a></span><a class="link" href="strategy_transform_ublas_transformer.html#geometry.reference.strategies.strategy_transform_ublas_transformer.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -78,25 +78,10 @@ Affine transformation strategy in Cartesian system.
<tr>
<td>
<p>
- typename P1
+ typename CalculationType
</p>
</td>
<td>
- <p>
- first point type (source)
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- typename P2
- </p>
- </td>
-<td>
- <p>
- second point type (target)
- </p>
</td>
</tr>
<tr>
@@ -107,7 +92,7 @@ Affine transformation strategy in Cartesian system.
</td>
<td>
<p>
- number of dimensions to transform to second point
+ number of dimensions to transform from
</p>
</td>
</tr>
@@ -118,13 +103,16 @@ Affine transformation strategy in Cartesian system.
</p>
</td>
<td>
+ <p>
+ number of dimensions to transform to
+ </p>
</td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_transform_ublas_transformer.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_transform_ublas_transformer.header"></a></span><a class="link" href="strategy_transform_ublas_transformer.html#geometry.reference.strategies.strategy_transform_ublas_transformer.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_transform_ublas_transformer.header"></a></span><a class="link" href="strategy_transform_ublas_transformer.html#geometry.reference.strategies.strategy_transform_ublas_transformer.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">transform</span><span class="special">/</span><span class="identifier">matrix_transformers</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -132,8 +120,8 @@ Affine transformation strategy in Cartesian system.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_crossings_multiply.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_crossings_multiply.html
index 8d3b86fa44..d9e451ec0c 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_crossings_multiply.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_crossings_multiply.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::within::crossings_multiply</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_within_franklin.html" title="strategy::within::franklin">
@@ -27,12 +27,12 @@
<a name="geometry.reference.strategies.strategy_within_crossings_multiply"></a><a class="link" href="strategy_within_crossings_multiply.html" title="strategy::within::crossings_multiply">strategy::within::crossings_multiply</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id974603"></a><a class="indexterm" name="id974609"></a><a class="indexterm" name="id974614"></a>
+ <a class="indexterm" name="idp136503728"></a><a class="indexterm" name="idp136504416"></a><a class="indexterm" name="idp136505104"></a>
Within detection using cross counting,.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_within_crossings_multiply.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_within_crossings_multiply.synopsis"></a></span><a class="link" href="strategy_within_crossings_multiply.html#geometry.reference.strategies.strategy_within_crossings_multiply.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_crossings_multiply.synopsis"></a></span><a class="link" href="strategy_within_crossings_multiply.html#geometry.reference.strategies.strategy_within_crossings_multiply.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -46,7 +46,7 @@ Within detection using cross counting,.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_within_crossings_multiply.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_within_crossings_multiply.template_parameter_s_"></a></span><a class="link" href="strategy_within_crossings_multiply.html#geometry.reference.strategies.strategy_within_crossings_multiply.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_crossings_multiply.template_parameter_s_"></a></span><a class="link" href="strategy_within_crossings_multiply.html#geometry.reference.strategies.strategy_within_crossings_multiply.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -127,7 +127,7 @@ Within detection using cross counting,.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_within_crossings_multiply.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_within_crossings_multiply.member_function_s_"></a></span><a class="link" href="strategy_within_crossings_multiply.html#geometry.reference.strategies.strategy_within_crossings_multiply.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_crossings_multiply.member_function_s_"></a></span><a class="link" href="strategy_within_crossings_multiply.html#geometry.reference.strategies.strategy_within_crossings_multiply.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -135,6 +135,7 @@ Within detection using cross counting,.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -163,7 +164,8 @@ Within detection using cross counting,.
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">point</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">seg1</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">seg2</span><span class="special">,</span> <span class="identifier">flags</span> <span class="special">&amp;</span> <span class="identifier">state</span><span class="special">)</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">point</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">seg1</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">seg2</span><span class="special">,</span>
+ <span class="identifier">flags</span> <span class="special">&amp;</span> <span class="identifier">state</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -185,6 +187,8 @@ Within detection using cross counting,.
<span class="bold"><strong>flags &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -201,12 +205,14 @@ Within detection using cross counting,.
<span class="bold"><strong>flags const &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_within_crossings_multiply.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_within_crossings_multiply.header"></a></span><a class="link" href="strategy_within_crossings_multiply.html#geometry.reference.strategies.strategy_within_crossings_multiply.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_crossings_multiply.header"></a></span><a class="link" href="strategy_within_crossings_multiply.html#geometry.reference.strategies.strategy_within_crossings_multiply.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">point_in_poly_crossings_multiply</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
@@ -214,8 +220,8 @@ Within detection using cross counting,.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_franklin.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_franklin.html
index 1b95b394c7..98baec4ff9 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_franklin.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_franklin.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::within::franklin</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_within_winding.html" title="strategy::within::winding">
@@ -27,12 +27,12 @@
<a name="geometry.reference.strategies.strategy_within_franklin"></a><a class="link" href="strategy_within_franklin.html" title="strategy::within::franklin">strategy::within::franklin</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id973797"></a><a class="indexterm" name="id973803"></a><a class="indexterm" name="id973809"></a>
+ <a class="indexterm" name="idp136408736"></a><a class="indexterm" name="idp136409424"></a><a class="indexterm" name="idp136410112"></a>
Within detection using cross counting.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_within_franklin.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_within_franklin.synopsis"></a></span><a class="link" href="strategy_within_franklin.html#geometry.reference.strategies.strategy_within_franklin.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_franklin.synopsis"></a></span><a class="link" href="strategy_within_franklin.html#geometry.reference.strategies.strategy_within_franklin.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -46,7 +46,7 @@ Within detection using cross counting.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_within_franklin.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_within_franklin.template_parameter_s_"></a></span><a class="link" href="strategy_within_franklin.html#geometry.reference.strategies.strategy_within_franklin.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_franklin.template_parameter_s_"></a></span><a class="link" href="strategy_within_franklin.html#geometry.reference.strategies.strategy_within_franklin.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -127,7 +127,7 @@ Within detection using cross counting.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_within_franklin.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_within_franklin.member_function_s_"></a></span><a class="link" href="strategy_within_franklin.html#geometry.reference.strategies.strategy_within_franklin.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_franklin.member_function_s_"></a></span><a class="link" href="strategy_within_franklin.html#geometry.reference.strategies.strategy_within_franklin.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -135,6 +135,7 @@ Within detection using cross counting.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -163,7 +164,8 @@ Within detection using cross counting.
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">point</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">seg1</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">seg2</span><span class="special">,</span> <span class="identifier">crossings</span> <span class="special">&amp;</span> <span class="identifier">state</span><span class="special">)</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">point</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">seg1</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">seg2</span><span class="special">,</span>
+ <span class="identifier">crossings</span> <span class="special">&amp;</span> <span class="identifier">state</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -185,6 +187,8 @@ Within detection using cross counting.
<span class="bold"><strong>crossings &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -201,19 +205,21 @@ Within detection using cross counting.
<span class="bold"><strong>crossings const &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_within_franklin.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_within_franklin.header"></a></span><a class="link" href="strategy_within_franklin.html#geometry.reference.strategies.strategy_within_franklin.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_franklin.header"></a></span><a class="link" href="strategy_within_franklin.html#geometry.reference.strategies.strategy_within_franklin.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">cartesian</span><span class="special">/</span><span class="identifier">point_in_poly_franklin</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.strategies.strategy_within_franklin.h4"></a>
- <span><a name="geometry.reference.strategies.strategy_within_franklin.see_also"></a></span><a class="link" href="strategy_within_franklin.html#geometry.reference.strategies.strategy_within_franklin.see_also">See
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_franklin.see_also"></a></span><a class="link" href="strategy_within_franklin.html#geometry.reference.strategies.strategy_within_franklin.see_also">See
also</a>
</h6>
<p>
@@ -223,8 +229,8 @@ Within detection using cross counting.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_winding.html b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_winding.html
index 5e2390dacf..6c5b40424e 100644
--- a/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_winding.html
+++ b/libs/geometry/doc/html/geometry/reference/strategies/strategy_within_winding.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>strategy::within::winding</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../strategies.html" title="Strategies">
<link rel="prev" href="strategy_transform_ublas_transformer.html" title="strategy::transform::ublas_transformer">
@@ -27,12 +27,12 @@
<a name="geometry.reference.strategies.strategy_within_winding"></a><a class="link" href="strategy_within_winding.html" title="strategy::within::winding">strategy::within::winding</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id972995"></a><a class="indexterm" name="id973001"></a><a class="indexterm" name="id973006"></a>
+ <a class="indexterm" name="idp136313680"></a><a class="indexterm" name="idp136314368"></a><a class="indexterm" name="idp136315056"></a>
Within detection using winding rule.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_within_winding.h0"></a>
- <span><a name="geometry.reference.strategies.strategy_within_winding.synopsis"></a></span><a class="link" href="strategy_within_winding.html#geometry.reference.strategies.strategy_within_winding.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_winding.synopsis"></a></span><a class="link" href="strategy_within_winding.html#geometry.reference.strategies.strategy_within_winding.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -46,7 +46,7 @@ Within detection using winding rule.
</p>
<h6>
<a name="geometry.reference.strategies.strategy_within_winding.h1"></a>
- <span><a name="geometry.reference.strategies.strategy_within_winding.template_parameter_s_"></a></span><a class="link" href="strategy_within_winding.html#geometry.reference.strategies.strategy_within_winding.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_winding.template_parameter_s_"></a></span><a class="link" href="strategy_within_winding.html#geometry.reference.strategies.strategy_within_winding.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -127,7 +127,7 @@ Within detection using winding rule.
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_within_winding.h2"></a>
- <span><a name="geometry.reference.strategies.strategy_within_winding.member_function_s_"></a></span><a class="link" href="strategy_within_winding.html#geometry.reference.strategies.strategy_within_winding.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_winding.member_function_s_"></a></span><a class="link" href="strategy_within_winding.html#geometry.reference.strategies.strategy_within_winding.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -135,6 +135,7 @@ Within detection using winding rule.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -163,7 +164,8 @@ Within detection using winding rule.
<td>
<p>
</p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">point</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">s1</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">s2</span><span class="special">,</span> <span class="identifier">counter</span> <span class="special">&amp;</span> <span class="identifier">state</span><span class="special">)</span></pre>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">apply</span><span class="special">(</span><span class="identifier">Point</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">point</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">s1</span><span class="special">,</span> <span class="identifier">PointOfSegment</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">s2</span><span class="special">,</span>
+ <span class="identifier">counter</span> <span class="special">&amp;</span> <span class="identifier">state</span><span class="special">)</span></pre>
<p>
</p>
</td>
@@ -185,6 +187,8 @@ Within detection using winding rule.
<span class="bold"><strong>counter &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -201,19 +205,21 @@ Within detection using winding rule.
<span class="bold"><strong>counter const &amp;</strong></span>: <span class="emphasis"><em>state</em></span>:
</p>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.strategies.strategy_within_winding.h3"></a>
- <span><a name="geometry.reference.strategies.strategy_within_winding.header"></a></span><a class="link" href="strategy_within_winding.html#geometry.reference.strategies.strategy_within_winding.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_winding.header"></a></span><a class="link" href="strategy_within_winding.html#geometry.reference.strategies.strategy_within_winding.header">Header</a>
</h6>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">strategies</span><span class="special">/</span><span class="identifier">agnostic</span><span class="special">/</span><span class="identifier">point_in_poly_winding</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<h6>
<a name="geometry.reference.strategies.strategy_within_winding.h4"></a>
- <span><a name="geometry.reference.strategies.strategy_within_winding.see_also"></a></span><a class="link" href="strategy_within_winding.html#geometry.reference.strategies.strategy_within_winding.see_also">See
+ <span class="phrase"><a name="geometry.reference.strategies.strategy_within_winding.see_also"></a></span><a class="link" href="strategy_within_winding.html#geometry.reference.strategies.strategy_within_winding.see_also">See
also</a>
</h6>
<p>
@@ -223,8 +229,8 @@ Within detection using winding rule.
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/views.html b/libs/geometry/doc/html/geometry/reference/views.html
index 2d82f1ac15..3ea91df131 100644
--- a/libs/geometry/doc/html/geometry/reference/views.html
+++ b/libs/geometry/doc/html/geometry/reference/views.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Views</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="strategies/strategy_within_crossings_multiply.html" title="strategy::within::crossings_multiply">
@@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="geometry.reference.views"></a><a class="link" href="views.html" title="Views">Views</a>
</h3></div></div></div>
-<div class="toc"><dl>
+<div class="toc"><dl class="toc">
<dt><span class="section"><a href="views/box_view.html">box_view</a></span></dt>
<dt><span class="section"><a href="views/segment_view.html">segment_view</a></span></dt>
<dt><span class="section"><a href="views/closeable_view.html">closeable_view</a></span></dt>
@@ -36,8 +36,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/views/box_view.html b/libs/geometry/doc/html/geometry/reference/views/box_view.html
index c02dd19946..39dd0b3ff9 100644
--- a/libs/geometry/doc/html/geometry/reference/views/box_view.html
+++ b/libs/geometry/doc/html/geometry/reference/views/box_view.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>box_view</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../views.html" title="Views">
<link rel="prev" href="../views.html" title="Views">
@@ -27,12 +27,12 @@
<a name="geometry.reference.views.box_view"></a><a class="link" href="box_view.html" title="box_view">box_view</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id975390"></a>
+ <a class="indexterm" name="idp136597072"></a>
Makes a box behave like a ring or a range.
</p>
<h6>
<a name="geometry.reference.views.box_view.h0"></a>
- <span><a name="geometry.reference.views.box_view.description"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.views.box_view.description"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.description">Description</a>
</h6>
<p>
Adapts a box to the Boost.Range concept, enabling the user to iterating
@@ -40,7 +40,7 @@ Makes a box behave like a ring or a range.
</p>
<h6>
<a name="geometry.reference.views.box_view.h1"></a>
- <span><a name="geometry.reference.views.box_view.model_of"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.model_of">Model
+ <span class="phrase"><a name="geometry.reference.views.box_view.model_of"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.model_of">Model
of</a>
</h6>
<p>
@@ -48,12 +48,13 @@ Makes a box behave like a ring or a range.
</p>
<h6>
<a name="geometry.reference.views.box_view.h2"></a>
- <span><a name="geometry.reference.views.box_view.synopsis"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.views.box_view.synopsis"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Box</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">Clockwise</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">box_view</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">points_view</span><span class="special">&lt;</span> <span class="identifier">geometry</span><span class="special">::</span><span class="identifier">point_type</span><span class="special">&lt;</span> <span class="identifier">Box</span> <span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span> <span class="number">5</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -62,7 +63,7 @@ Makes a box behave like a ring or a range.
</p>
<h6>
<a name="geometry.reference.views.box_view.h3"></a>
- <span><a name="geometry.reference.views.box_view.template_parameter_s_"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.views.box_view.template_parameter_s_"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -125,7 +126,7 @@ Makes a box behave like a ring or a range.
</table></div>
<h6>
<a name="geometry.reference.views.box_view.h4"></a>
- <span><a name="geometry.reference.views.box_view.constructor_s_"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.views.box_view.constructor_s_"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -172,13 +173,13 @@ Makes a box behave like a ring or a range.
</table></div>
<h6>
<a name="geometry.reference.views.box_view.h5"></a>
- <span><a name="geometry.reference.views.box_view.header"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.views.box_view.header"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -188,14 +189,14 @@ Makes a box behave like a ring or a range.
</p>
<h6>
<a name="geometry.reference.views.box_view.h6"></a>
- <span><a name="geometry.reference.views.box_view.complexity"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.views.box_view.complexity"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.views.box_view.h7"></a>
- <span><a name="geometry.reference.views.box_view.example"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.views.box_view.example"></a></span><a class="link" href="box_view.html#geometry.reference.views.box_view.example">Example</a>
</h6>
<p>
Shows usage of the Boost.Range compatible view on a box
@@ -247,8 +248,8 @@ Area: 16
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/views/closeable_view.html b/libs/geometry/doc/html/geometry/reference/views/closeable_view.html
index f5a2c109f0..619c8e985f 100644
--- a/libs/geometry/doc/html/geometry/reference/views/closeable_view.html
+++ b/libs/geometry/doc/html/geometry/reference/views/closeable_view.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>closeable_view</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../views.html" title="Views">
<link rel="prev" href="segment_view.html" title="segment_view">
@@ -27,12 +27,12 @@
<a name="geometry.reference.views.closeable_view"></a><a class="link" href="closeable_view.html" title="closeable_view">closeable_view</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id978244"></a>
+ <a class="indexterm" name="idp136957808"></a>
View on a range, either closing it or leaving it as it is.
</p>
<h6>
<a name="geometry.reference.views.closeable_view.h0"></a>
- <span><a name="geometry.reference.views.closeable_view.description"></a></span><a class="link" href="closeable_view.html#geometry.reference.views.closeable_view.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.views.closeable_view.description"></a></span><a class="link" href="closeable_view.html#geometry.reference.views.closeable_view.description">Description</a>
</h6>
<p>
The closeable_view is used internally by the library to handle all rings,
@@ -43,7 +43,7 @@ View on a range, either closing it or leaving it as it is.
</p>
<h6>
<a name="geometry.reference.views.closeable_view.h1"></a>
- <span><a name="geometry.reference.views.closeable_view.synopsis"></a></span><a class="link" href="closeable_view.html#geometry.reference.views.closeable_view.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.views.closeable_view.synopsis"></a></span><a class="link" href="closeable_view.html#geometry.reference.views.closeable_view.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -57,7 +57,7 @@ View on a range, either closing it or leaving it as it is.
</p>
<h6>
<a name="geometry.reference.views.closeable_view.h2"></a>
- <span><a name="geometry.reference.views.closeable_view.template_parameter_s_"></a></span><a class="link" href="closeable_view.html#geometry.reference.views.closeable_view.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.views.closeable_view.template_parameter_s_"></a></span><a class="link" href="closeable_view.html#geometry.reference.views.closeable_view.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -108,16 +108,25 @@ View on a range, either closing it or leaving it as it is.
</table></div>
<h6>
<a name="geometry.reference.views.closeable_view.h3"></a>
- <span><a name="geometry.reference.views.closeable_view.header"></a></span><a class="link" href="closeable_view.html#geometry.reference.views.closeable_view.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.views.closeable_view.header"></a></span><a class="link" href="closeable_view.html#geometry.reference.views.closeable_view.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">views</span><span class="special">/</span><span class="identifier">closeable_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/views/identity_view.html b/libs/geometry/doc/html/geometry/reference/views/identity_view.html
index 73bdc1f776..a215203d6a 100644
--- a/libs/geometry/doc/html/geometry/reference/views/identity_view.html
+++ b/libs/geometry/doc/html/geometry/reference/views/identity_view.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>identity_view</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../views.html" title="Views">
<link rel="prev" href="reversible_view.html" title="reversible_view">
-<link rel="next" href="../../release_notes.html" title="Release Notes">
+<link rel="next" href="../../indexes.html" title="Indexes">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,19 +20,19 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="reversible_view.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../views.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../release_notes.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="reversible_view.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../views.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../indexes.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="geometry.reference.views.identity_view"></a><a class="link" href="identity_view.html" title="identity_view">identity_view</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id979182"></a>
+ <a class="indexterm" name="idp137048400"></a>
View on a range, not modifying anything.
</p>
<h6>
<a name="geometry.reference.views.identity_view.h0"></a>
- <span><a name="geometry.reference.views.identity_view.synopsis"></a></span><a class="link" href="identity_view.html#geometry.reference.views.identity_view.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.views.identity_view.synopsis"></a></span><a class="link" href="identity_view.html#geometry.reference.views.identity_view.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -46,7 +46,7 @@ View on a range, not modifying anything.
</p>
<h6>
<a name="geometry.reference.views.identity_view.h1"></a>
- <span><a name="geometry.reference.views.identity_view.template_parameter_s_"></a></span><a class="link" href="identity_view.html#geometry.reference.views.identity_view.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.views.identity_view.template_parameter_s_"></a></span><a class="link" href="identity_view.html#geometry.reference.views.identity_view.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -81,7 +81,7 @@ View on a range, not modifying anything.
</table></div>
<h6>
<a name="geometry.reference.views.identity_view.h2"></a>
- <span><a name="geometry.reference.views.identity_view.constructor_s_"></a></span><a class="link" href="identity_view.html#geometry.reference.views.identity_view.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.views.identity_view.constructor_s_"></a></span><a class="link" href="identity_view.html#geometry.reference.views.identity_view.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -125,7 +125,7 @@ View on a range, not modifying anything.
</table></div>
<h6>
<a name="geometry.reference.views.identity_view.h3"></a>
- <span><a name="geometry.reference.views.identity_view.member_function_s_"></a></span><a class="link" href="identity_view.html#geometry.reference.views.identity_view.member_function_s_">Member
+ <span class="phrase"><a name="geometry.reference.views.identity_view.member_function_s_"></a></span><a class="link" href="identity_view.html#geometry.reference.views.identity_view.member_function_s_">Member
Function(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -133,6 +133,7 @@ View on a range, not modifying anything.
<col>
<col>
<col>
+<col>
</colgroup>
<thead><tr>
<th>
@@ -169,6 +170,8 @@ View on a range, not modifying anything.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -182,6 +185,8 @@ View on a range, not modifying anything.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -195,6 +200,8 @@ View on a range, not modifying anything.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
<tr>
<td>
@@ -208,21 +215,32 @@ View on a range, not modifying anything.
</td>
<td>
</td>
+<td>
+ </td>
</tr>
</tbody>
</table></div>
<h6>
<a name="geometry.reference.views.identity_view.h4"></a>
- <span><a name="geometry.reference.views.identity_view.header"></a></span><a class="link" href="identity_view.html#geometry.reference.views.identity_view.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.views.identity_view.header"></a></span><a class="link" href="identity_view.html#geometry.reference.views.identity_view.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">views</span><span class="special">/</span><span class="identifier">identity_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -230,7 +248,7 @@ View on a range, not modifying anything.
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="reversible_view.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../views.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../release_notes.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="reversible_view.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../views.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../indexes.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/reference/views/reversible_view.html b/libs/geometry/doc/html/geometry/reference/views/reversible_view.html
index de5cc39593..92edd390d8 100644
--- a/libs/geometry/doc/html/geometry/reference/views/reversible_view.html
+++ b/libs/geometry/doc/html/geometry/reference/views/reversible_view.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>reversible_view</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../views.html" title="Views">
<link rel="prev" href="closeable_view.html" title="closeable_view">
@@ -27,12 +27,12 @@
<a name="geometry.reference.views.reversible_view"></a><a class="link" href="reversible_view.html" title="reversible_view">reversible_view</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id978869"></a>
+ <a class="indexterm" name="idp137005088"></a>
View on a range, reversing direction if necessary.
</p>
<h6>
<a name="geometry.reference.views.reversible_view.h0"></a>
- <span><a name="geometry.reference.views.reversible_view.synopsis"></a></span><a class="link" href="reversible_view.html#geometry.reference.views.reversible_view.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.views.reversible_view.synopsis"></a></span><a class="link" href="reversible_view.html#geometry.reference.views.reversible_view.synopsis">Synopsis</a>
</h6>
<p>
</p>
@@ -46,7 +46,7 @@ View on a range, reversing direction if necessary.
</p>
<h6>
<a name="geometry.reference.views.reversible_view.h1"></a>
- <span><a name="geometry.reference.views.reversible_view.template_parameter_s_"></a></span><a class="link" href="reversible_view.html#geometry.reference.views.reversible_view.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.views.reversible_view.template_parameter_s_"></a></span><a class="link" href="reversible_view.html#geometry.reference.views.reversible_view.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -95,16 +95,25 @@ View on a range, reversing direction if necessary.
</table></div>
<h6>
<a name="geometry.reference.views.reversible_view.h2"></a>
- <span><a name="geometry.reference.views.reversible_view.header"></a></span><a class="link" href="reversible_view.html#geometry.reference.views.reversible_view.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.views.reversible_view.header"></a></span><a class="link" href="reversible_view.html#geometry.reference.views.reversible_view.header">Header</a>
</h6>
<p>
+ Either
+ </p>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ Or
+ </p>
+<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">views</span><span class="special">/</span><span class="identifier">reversible_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/reference/views/segment_view.html b/libs/geometry/doc/html/geometry/reference/views/segment_view.html
index 625a02e887..4f2dfa2798 100644
--- a/libs/geometry/doc/html/geometry/reference/views/segment_view.html
+++ b/libs/geometry/doc/html/geometry/reference/views/segment_view.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>segment_view</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../views.html" title="Views">
<link rel="prev" href="box_view.html" title="box_view">
@@ -27,12 +27,12 @@
<a name="geometry.reference.views.segment_view"></a><a class="link" href="segment_view.html" title="segment_view">segment_view</a>
</h4></div></div></div>
<p>
- <a class="indexterm" name="id976843"></a>
+ <a class="indexterm" name="idp136780368"></a>
Makes a segment behave like a linestring or a range.
</p>
<h6>
<a name="geometry.reference.views.segment_view.h0"></a>
- <span><a name="geometry.reference.views.segment_view.description"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.description">Description</a>
+ <span class="phrase"><a name="geometry.reference.views.segment_view.description"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.description">Description</a>
</h6>
<p>
Adapts a segment to the Boost.Range concept, enabling the user to iterate
@@ -41,7 +41,7 @@ Makes a segment behave like a linestring or a range.
</p>
<h6>
<a name="geometry.reference.views.segment_view.h1"></a>
- <span><a name="geometry.reference.views.segment_view.model_of"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.model_of">Model
+ <span class="phrase"><a name="geometry.reference.views.segment_view.model_of"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.model_of">Model
of</a>
</h6>
<p>
@@ -50,12 +50,13 @@ Makes a segment behave like a linestring or a range.
</p>
<h6>
<a name="geometry.reference.views.segment_view.h2"></a>
- <span><a name="geometry.reference.views.segment_view.synopsis"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.synopsis">Synopsis</a>
+ <span class="phrase"><a name="geometry.reference.views.segment_view.synopsis"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.synopsis">Synopsis</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Segment</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">segment_view</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">points_view</span><span class="special">&lt;</span> <span class="identifier">geometry</span><span class="special">::</span><span class="identifier">point_type</span><span class="special">&lt;</span> <span class="identifier">Segment</span> <span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span> <span class="number">2</span> <span class="special">&gt;</span>
<span class="special">{</span>
<span class="comment">// ...</span>
<span class="special">};</span>
@@ -64,7 +65,7 @@ Makes a segment behave like a linestring or a range.
</p>
<h6>
<a name="geometry.reference.views.segment_view.h3"></a>
- <span><a name="geometry.reference.views.segment_view.template_parameter_s_"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.template_parameter_s_">Template
+ <span class="phrase"><a name="geometry.reference.views.segment_view.template_parameter_s_"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.template_parameter_s_">Template
parameter(s)</a>
</h6>
<div class="informaltable"><table class="table">
@@ -99,7 +100,7 @@ Makes a segment behave like a linestring or a range.
</table></div>
<h6>
<a name="geometry.reference.views.segment_view.h4"></a>
- <span><a name="geometry.reference.views.segment_view.constructor_s_"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.constructor_s_">Constructor(s)</a>
+ <span class="phrase"><a name="geometry.reference.views.segment_view.constructor_s_"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.constructor_s_">Constructor(s)</a>
</h6>
<div class="informaltable"><table class="table">
<colgroup>
@@ -146,13 +147,13 @@ Makes a segment behave like a linestring or a range.
</table></div>
<h6>
<a name="geometry.reference.views.segment_view.h5"></a>
- <span><a name="geometry.reference.views.segment_view.header"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.header">Header</a>
+ <span class="phrase"><a name="geometry.reference.views.segment_view.header"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.header">Header</a>
</h6>
<p>
Either
</p>
<p>
- <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
Or
@@ -162,14 +163,14 @@ Makes a segment behave like a linestring or a range.
</p>
<h6>
<a name="geometry.reference.views.segment_view.h6"></a>
- <span><a name="geometry.reference.views.segment_view.complexity"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.complexity">Complexity</a>
+ <span class="phrase"><a name="geometry.reference.views.segment_view.complexity"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.complexity">Complexity</a>
</h6>
<p>
Compile time
</p>
<h6>
<a name="geometry.reference.views.segment_view.h7"></a>
- <span><a name="geometry.reference.views.segment_view.example"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.example">Example</a>
+ <span class="phrase"><a name="geometry.reference.views.segment_view.example"></a></span><a class="link" href="segment_view.html#geometry.reference.views.segment_view.example">Example</a>
</h6>
<p>
Shows usage of the Boost.Range compatible view on a box
@@ -220,8 +221,8 @@ Area: 16
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
diff --git a/libs/geometry/doc/html/geometry/release_notes.html b/libs/geometry/doc/html/geometry/release_notes.html
index 6b9d3ea4a5..fd7406e07c 100644
--- a/libs/geometry/doc/html/geometry/release_notes.html
+++ b/libs/geometry/doc/html/geometry/release_notes.html
@@ -3,11 +3,11 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Release Notes</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
-<link rel="prev" href="reference/views/identity_view.html" title="identity_view">
-<link rel="next" href="aboutdoc.html" title="About this documentation">
+<link rel="prev" href="examples/example_source_code__adapting_a_legacy_geometry_object_model.html" title="Example source code: Adapting a legacy geometry object model">
+<link rel="next" href="aboutdoc.html" title="About this Documentation">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="reference/views/identity_view.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="aboutdoc.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="examples/example_source_code__adapting_a_legacy_geometry_object_model.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="aboutdoc.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -28,13 +28,500 @@
</h2></div></div></div>
<h4>
<a name="geometry.release_notes.h0"></a>
- <span><a name="geometry.release_notes.boost_1_51"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_51">Boost
+ <span class="phrase"><a name="geometry.release_notes.boost_1_57"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_57">Boost
+ 1.57</a>
+ </h4>
+<p>
+ <span class="bold"><strong>Additional functionality</strong></span>
+ </p>
+<p>
+ <span class="bold"><strong>Improvements</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ The support of parameters convertible to value_type in rtree insert(),
+ remove() and count() functions
+ </li>
+<li class="listitem">
+ Support for counterclockwise input/output in algorithm buffer
+ </li>
+<li class="listitem">
+ Support for open-geometry input in algorithm buffer (open output not yet
+ supported)
+ </li>
+<li class="listitem">
+ Support for degenerate input (point-like linestrings, polygons) in algorithm
+ buffer
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Solved tickets</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8402" target="_top">8402</a>
+ Implicit conversion warnings
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/9354" target="_top">9354</a>
+ Bug in winding strategy affecting within() and covered_by() for non-cartesian
+ coordinate systems
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/10177" target="_top">10177</a>
+ Missing include
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/10345" target="_top">10345</a>
+ Distance fails to compile for some coordinate types
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/10398" target="_top">10398</a>
+ Wrong neighbour check in buffer, calculating turns
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/10421" target="_top">10421</a>
+ Invalid Point-Box distance for spherical CS
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/10615" target="_top">10615</a>
+ Rtree constructor feature request
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/10643" target="_top">10643</a>
+ Invalid point_on_surface() result for big coordinates
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/10668" target="_top">10668</a>
+ Implicit conversion warnings (duplicated 8402)
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Bugfixes</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Several fixes of bugs in algorithm buffer
+ </li>
+<li class="listitem">
+ Bug in point_on_surface() for CCW Polygons (extreme_points()) and numerical
+ issue (thanks to Matt Amos)
+ </li>
+<li class="listitem">
+ Bug in disjoint() for A/A fixed by replacement of point_on_surface() with
+ point_on_border() (thanks to Matt Amos)
+ </li>
+<li class="listitem">
+ The result of convex_hull(), duplicated Point in open output, too small
+ number of Points for 1- and 2-Point input
+ </li>
+<li class="listitem">
+ Imprecision for big coordinates in centroid(), fixed by Points translation
+ (related with ticket 10643)
+ </li>
+<li class="listitem">
+ for_each_segment() not taking into account the last segment of open Geometry
+ </li>
+</ul></div>
+<h4>
+<a name="geometry.release_notes.h1"></a>
+ <span class="phrase"><a name="geometry.release_notes.boost_1_56"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_56">Boost
+ 1.56</a>
+ </h4>
+<p>
+ <span class="bold"><strong>Additional functionality</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ New algorithm buffer for inflating/deflating geometries (buffer itself
+ already existed but that was only to enlarge a box)
+ </li>
+<li class="listitem">
+ New algorithm remove_spikes, algorithm to remove spikes from a ring, polygon
+ or multi_polygon
+ </li>
+<li class="listitem">
+ New algorithm point_on_surface, generating a point lying on the surface
+ (interior) of the polygon
+ </li>
+<li class="listitem">
+ New algorithm is_simple, returning true if a geometry is simple according
+ to the OGC standard
+ </li>
+<li class="listitem">
+ New algorithm is_valid, returning true if a geometry is valid according
+ to the OGC standard
+ </li>
+<li class="listitem">
+ New algorithm crosses for checking this spatial relation according to the
+ OGC standard
+ </li>
+<li class="listitem">
+ The set operation algorithms (difference, intersection, sym_difference
+ and union_) now support as input pairs of pointlike or linear geometries
+ </li>
+<li class="listitem">
+ The distance and comparable_distance algorithms now support all pairs of
+ geometry combinations
+ </li>
+<li class="listitem">
+ The spatial relations which didn't support it (covered_by, touches, within,
+ etc.) now support as input linear and/or areal geometries
+ </li>
+<li class="listitem">
+ The support for boost::variants as input geometries in various algorithms
+ </li>
+<li class="listitem">
+ The rtree support for indexing segments
+ </li>
+<li class="listitem">
+ The rtree nearest() predicate support for arbitrary geometries
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Improvements</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ The rtree pack-creation algorithm optimization (thanks to Lu Wang)
+ </li></ul></div>
+<p>
+ <span class="bold"><strong>Solved tickets</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8310" target="_top">8310</a>
+ Wrong results with overlapping polygons (fixed using point_on_surface for
+ disjoint)
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8375" target="_top">8375</a>
+ sym_difference of non-closed polygons returns closed polygon
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8376" target="_top">8376</a>
+ difference of non-closed polygons returns closed polygon
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/9081" target="_top">9081</a>
+ Booleans create self-intersecting polygons from non-self-intersecting polygons
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/9245" target="_top">9245</a>
+ Check for process errors in make_qbk.py
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/9563" target="_top">9563</a>
+ (Sym)difference not successful, fixed by rescaling to robust type
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/9628" target="_top">9628</a>
+ Wrong result of within() due to the winding strategy not working correctly
+ for nearly-horizontal segments
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/9828" target="_top">9828</a>
+ boost::geometry::union_(...) creates redundant closing point
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/9871" target="_top">9871</a>
+ Remove spike in polygon with only a spike
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/9941" target="_top">9941</a>
+ Add support for touches(box, box)
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/9947" target="_top">9947</a>
+ Missing info about WKT in documentation
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/9759" target="_top">9759</a>
+ Invalid results of R-tree knn queries for non-cartesian coordinate systems
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/10019" target="_top">10019</a>
+ Difference of Linestring and Box returns their intersection
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/10077" target="_top">10077</a>
+ Wrong types in concept checks in boost/geometry/arithmetic/arithmetic.hpp
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/10234" target="_top">10234</a>
+ Wrong results of covered_by() for nearly-horizontal segments
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Bugfixes</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ intersects(polygon) could return a self-intersection-point for its closing
+ point, fixed
+ </li>
+<li class="listitem">
+ equals() could return invalid results for non-simple linear geometries
+ according to the OGC standard, fixed
+ </li>
+<li class="listitem">
+ touches() didn't work properly for CCW areal geomtries, fixed
+ </li>
+<li class="listitem">
+ rtree nearest queries returned wrong elements for non-cartesian coordinate
+ systems, fixed
+ </li>
+<li class="listitem">
+ rtree crashed in some cases when used with Interprocess allocator, fixed
+ </li>
+</ul></div>
+<h4>
+<a name="geometry.release_notes.h2"></a>
+ <span class="phrase"><a name="geometry.release_notes.boost_1_55"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_55">Boost
+ 1.55</a>
+ </h4>
+<p>
+ <span class="bold"><strong>Additional functionality</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Added centroid for segment type
+ </li>
+<li class="listitem">
+ Added intersects() and disjoints() for Segment-Box and Linestring-Box
+ </li>
+<li class="listitem">
+ Added rtree creation using packing algorithm
+ </li>
+<li class="listitem">
+ Added contains() and covers() spatial query predicates
+ </li>
+<li class="listitem">
+ Added iterative queries
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Documentation</strong></span>
+ </p>
+<p>
+ <span class="bold"><strong>Bugfixes</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ In some cases .back() or .clear() was called, violating the usage of Concepts.
+ Fixed for the reported cases
+ </li>
+<li class="listitem">
+ Use consistent side information in cart_intersect and get_turn_info and
+ handle_tangencies and enrich_intersection_info. This is done by switching
+ to integer (if necessary) for the specific 6 points only, zooming in on
+ the 4 or 3 segments
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Solved tickets</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/6958" target="_top">6958</a>
+ Intersection generates self-intersection. Caused by spike, fixed
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8364" target="_top">8364</a>
+ Invalid input exception, caused by spikes in previous steps, fixed
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8365" target="_top">8365</a>
+ Invalid input exception, caused by spikes in previous steps, fixed
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8969" target="_top">8969</a>
+ boost::geometry::model::point single argument constructor should be explicit
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8825" target="_top">8825</a>
+ Patch adding member variable documentation to doxygen_xml2qbk
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8652" target="_top">8652</a>
+ Intersection fails for triangle-triangle intersection. Caused by spike,
+ fixed
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/9047" target="_top">9047</a>
+ Boost files that include themselves (strategies/intersection.hpp), fixed
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Internal changes</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Distance-strategy TODO
+ </li>
+<li class="listitem">
+ Transform-strategy TODO
+ </li>
+<li class="listitem">
+ Spikes (could be generated in difference) in integer-based overlays are
+ now avoided during generation
+ </li>
+<li class="listitem">
+ Cleanup, removed old MSVC2005 project files, let all tests pass green (also
+ in extensions)
+ </li>
+<li class="listitem">
+ R*-tree balancing algorithm optimized
+ </li>
+</ul></div>
+<h4>
+<a name="geometry.release_notes.h3"></a>
+ <span class="phrase"><a name="geometry.release_notes.boost_1_54"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_54">Boost
+ 1.54</a>
+ </h4>
+<p>
+ <span class="bold"><strong>Additional functionality</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ added Spatial Index, developed for Boost.Geometry by Adam Wulkiewicz. The
+ spatial index was originally started by Federico J. Fernandez during the
+ Google Summer of Code 2008 program, mentored by Hartmut Kaiser.
+ </li>
+<li class="listitem">
+ added SVG-output, this was already in extensions for several years
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Documentation</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ small fixes of missing words
+ </li>
+<li class="listitem">
+ fixes in doc of template parameters (convex_hull, exterior_ring, return_buffer)
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Bugfixes</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ collinear opposite segments did sometimes (in circles) have a robustness
+ issue, fixed
+ </li>
+<li class="listitem">
+ fixed insertion of false intersection point (found by buffer)
+ </li>
+<li class="listitem">
+ applied patch of Vladimir Petrovic for debugging traversals
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Solved tickets</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/7462" target="_top">7462</a>
+ degenerate union result for float, fixed
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/7465" target="_top">7465</a>
+ wrong construtors access type in scale_transformer class, fixed
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/7802" target="_top">7802</a>
+ cart_intersect.hpp unused parameter warnings, fixed
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8254" target="_top">8254</a>
+ faulty intersection, fixed
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8393" target="_top">8393</a>
+ polygon model doesn't adhere to stated Polygon concept rules, doc updated.
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8403" target="_top">8403</a>
+ silenced compiler warning C4127: conditional expression is constant
+ </li>
+<li class="listitem">
+ <a href="https://svn.boost.org/trac/boost/ticket/8405" target="_top">8405</a>
+ silenced compiler warning C4189: '...' : local variable is initialized
+ but not referenced
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Internal changes</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+ Made several algorithms variant-aware (append, area, clear, convert, equals,
+ length, num_points)
+ </li></ul></div>
+<h4>
+<a name="geometry.release_notes.h4"></a>
+ <span class="phrase"><a name="geometry.release_notes.boost_1_53"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_53">Boost
+ 1.53</a>
+ </h4>
+<p>
+ <span class="bold"><strong>Bugfixes</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ avoid generating output polygons with interior rings below minimum size
+ (e.g. one or two points)
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">disjoint</span></code> for degenerate segments (patched
+ by Karsten Ahnert)
+ </li>
+<li class="listitem">
+ problem in <code class="computeroutput"><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">difference</span></code> for missing handling tangency,
+ reported by H2
+ </li>
+<li class="listitem">
+ fixed <code class="computeroutput"><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">for_each</span></code> for use with Lambda's
+ </li>
+<li class="listitem">
+ fixed <code class="computeroutput"><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">comparable_distance</span></code> point-linestring
+ (and -range, -polygon)
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Additional functionality</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ combinations for <code class="computeroutput"><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">disjoint</span></code>:
+ point/ring, point/polygon, point/multi_polygon
+ </li>
+<li class="listitem">
+ combinations for <code class="computeroutput"><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">intersects</span></code>:
+ point/ring, point/polygon, point/multi_polygon
+ </li>
+</ul></div>
+<p>
+ <span class="bold"><strong>Internal changes</strong></span>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ updates in specializations/not_implemented for various algorithms (as in
+ an earlier version, these changes are still going on; they take care for
+ simplified structs, better error reporting, and automatized documentation)
+ </li>
+<li class="listitem">
+ fixes in unit tests
+ </li>
+</ul></div>
+<h4>
+<a name="geometry.release_notes.h5"></a>
+ <span class="phrase"><a name="geometry.release_notes.boost_1_51"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_51">Boost
1.51</a>
</h4>
<p>
<span class="bold"><strong>Breaking changes</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
points accessed through a pointer (e.g. in a linestring) should now be
specialized without the pointer. In previous versions a type <code class="computeroutput"><span class="identifier">my_point</span></code> used like <code class="computeroutput"><span class="identifier">linestring</span><span class="special">&lt;</span><span class="identifier">my_point</span><span class="special">*&gt;</span></code> had to be specalized like: <code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;&gt;</span>
<span class="keyword">struct</span> <span class="identifier">tag</span><span class="special">&lt;</span><span class="identifier">my_point</span><span class="special">*&gt;</span></code>. Now the library itself removes the
@@ -44,7 +531,7 @@
<p>
<span class="bold"><strong>Bugfixes</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
intersection was sometimes wrong for integer points, fixed
</li>
@@ -55,19 +542,19 @@
<p>
<span class="bold"><strong>Solved tickets</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/7030" target="_top">7030</a>
spherical distance, fixed (by patch of Karsten Ahnert)
</li></ul></div>
<h4>
-<a name="geometry.release_notes.h1"></a>
- <span><a name="geometry.release_notes.boost_1_50"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_50">Boost
+<a name="geometry.release_notes.h6"></a>
+ <span class="phrase"><a name="geometry.release_notes.boost_1_50"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_50">Boost
1.50</a>
</h4>
<p>
<span class="bold"><strong>Bugfixes</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
the return type of comparable projected point strategy for integer points
was wrong (integer), fixed
@@ -85,7 +572,7 @@
<p>
<span class="bold"><strong>Solved tickets</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/6585" target="_top">6585</a>
patch for alternative syntax multipoint, applied
@@ -111,25 +598,25 @@
<p>
<span class="bold"><strong>Additional functionality</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
added algorithm "touches" (OGC SF compliant) for *polygon/*polygon
</li></ul></div>
<h4>
-<a name="geometry.release_notes.h2"></a>
- <span><a name="geometry.release_notes.boost_1_49"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_49">Boost
+<a name="geometry.release_notes.h7"></a>
+ <span class="phrase"><a name="geometry.release_notes.boost_1_49"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_49">Boost
1.49</a>
</h4>
<p>
<span class="bold"><strong>Breaking changes</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
point_xy was accidentally included in one of the headerfiles. If the point_xy
class is used, it should be included explicitly now.
</li></ul></div>
<p>
<span class="bold"><strong>Bugfixes</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
bugfix: distance for multi-geometries ignored specified distance strategy.
Fixed
@@ -165,7 +652,7 @@
<p>
<span class="bold"><strong>Solved tickets</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/6019" target="_top">6019</a>
convex_hull / area, fixed.
@@ -186,7 +673,7 @@
<p>
<span class="bold"><strong>Additional functionality</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
support for line/polygon intersections and differences
</li>
@@ -204,7 +691,7 @@
<p>
<span class="bold"><strong>Documentation</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
updated support status in several algorithms
</li>
@@ -218,7 +705,7 @@
<p>
<span class="bold"><strong>Internal changes</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
updates in specializations/not_implemented for distance/convert/assign/area/with/covered_by
</li>
@@ -235,14 +722,14 @@
</li>
</ul></div>
<h4>
-<a name="geometry.release_notes.h3"></a>
- <span><a name="geometry.release_notes.boost_1_48"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_48">Boost
+<a name="geometry.release_notes.h8"></a>
+ <span class="phrase"><a name="geometry.release_notes.boost_1_48"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_48">Boost
1.48</a>
</h4>
<p>
<span class="bold"><strong>Bugfixes</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Robustness issue, in some circumstances the union failed to output. Fixed.
</li>
@@ -264,7 +751,7 @@
<p>
<span class="bold"><strong>Solved tickets</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/5726" target="_top">5726</a>
Segment intersection algorithm still assumes 'first', 'second' members
@@ -285,7 +772,7 @@
<p>
<span class="bold"><strong>Improvements on algorithms</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Checking self-intersections is now not done automatically, this can blast
performance.
@@ -301,14 +788,14 @@
<p>
<span class="bold"><strong>Additional algorithms</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
covered_by: within is defined as "within, not on boundary". covered_by
is "within or on boundary"
</li></ul></div>
<p>
<span class="bold"><strong>Additional functionality</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
within: strategies can now be specified for within&lt;point, box&gt; and
within&lt;box, box&gt;
@@ -323,12 +810,12 @@
<p>
<span class="bold"><strong>Additional coordinate types</strong></span>
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Basic (limited) support for Boost.Rational
</li></ul></div>
<h4>
-<a name="geometry.release_notes.h4"></a>
- <span><a name="geometry.release_notes.boost_1_47"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_47">Boost
+<a name="geometry.release_notes.h9"></a>
+ <span class="phrase"><a name="geometry.release_notes.boost_1_47"></a></span><a class="link" href="release_notes.html#geometry.release_notes.boost_1_47">Boost
1.47</a>
</h4>
<p>
@@ -337,8 +824,8 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot<p>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@@ -346,7 +833,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="reference/views/identity_view.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="aboutdoc.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="examples/example_source_code__adapting_a_legacy_geometry_object_model.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="aboutdoc.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes.html b/libs/geometry/doc/html/geometry/spatial_indexes.html
new file mode 100644
index 0000000000..5d8f0c2bf7
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes.html
@@ -0,0 +1,75 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Spatial Indexes</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="prev" href="quickstart.html" title="Quick Start">
+<link rel="next" href="spatial_indexes/introduction.html" title="Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quickstart.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="spatial_indexes/introduction.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="geometry.spatial_indexes"></a><a class="link" href="spatial_indexes.html" title="Spatial Indexes">Spatial Indexes</a>
+</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="spatial_indexes/introduction.html">Introduction</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/rtree_quickstart.html">Quick Start</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/creation_and_modification.html">Creation
+ and Modification</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/queries.html">Queries</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/rtree_examples.html">Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="spatial_indexes/rtree_examples/quick_start.html">Quick
+ start</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/rtree_examples/index_of_polygons_stored_in_vector.html">Index
+ of polygons stored in vector</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/rtree_examples/index_of_shared_pointers_to_polygons.html">Index
+ of shared pointers to polygons</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/rtree_examples/index_of_iterators_of_a_map_storing_variant_geometries.html">Index
+ of iterators of a map storing variant geometries</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/rtree_examples/specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html">Specializing
+ index::indexable function object - storing shared pointers in the rtree</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/rtree_examples/using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html">Using
+ IndexableGetter function object - storing indexes of external container's
+ elements</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/rtree_examples/range_adaptors.html">Range
+ adaptors</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/rtree_examples/iterative_query.html">Iterative
+ query</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/rtree_examples/index_stored_in_shared_memory_using_boost_interprocess.html">Index
+ stored in shared memory using Boost.Interprocess</a></span></dt>
+<dt><span class="section"><a href="spatial_indexes/rtree_examples/index_stored_in_mapped_file_using_boost_interprocess.html">Index
+ stored in mapped file using Boost.Interprocess</a></span></dt>
+</dl></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quickstart.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="spatial_indexes/introduction.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/creation_and_modification.html b/libs/geometry/doc/html/geometry/spatial_indexes/creation_and_modification.html
new file mode 100644
index 0000000000..b50030e62a
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/creation_and_modification.html
@@ -0,0 +1,410 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Creation and Modification</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="rtree_quickstart.html" title="Quick Start">
+<link rel="next" href="queries.html" title="Queries">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_quickstart.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="queries.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="geometry.spatial_indexes.creation_and_modification"></a><a class="link" href="creation_and_modification.html" title="Creation and Modification">Creation
+ and Modification</a>
+</h3></div></div></div>
+<h5>
+<a name="geometry.spatial_indexes.creation_and_modification.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.creation_and_modification.template_parameters"></a></span><a class="link" href="creation_and_modification.html#geometry.spatial_indexes.creation_and_modification.template_parameters">Template
+ parameters</a>
+ </h5>
+<p>
+ R-tree has 5 parameters but only 2 are required:
+ </p>
+<pre class="programlisting"><span class="identifier">rtree</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">,</span>
+ <span class="identifier">Parameters</span><span class="special">,</span>
+ <span class="identifier">IndexableGetter</span> <span class="special">=</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">indexable</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;,</span>
+ <span class="identifier">EqualTo</span> <span class="special">=</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;,</span>
+ <span class="identifier">Allocator</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+</pre>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="computeroutput">Value</code> - type of object which will be stored in the container,
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">Parameters</span></code> - parameters
+ type, inserting/splitting algorithm,
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">IndexableGetter</span></code> - function
+ object translating <code class="computeroutput">Value</code> to <code class="computeroutput">Indexable</code> (<code class="computeroutput">Point</code>
+ or <code class="computeroutput">Box</code>) which R-tree can handle,
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">EqualTo</span></code> - function object
+ comparing <code class="computeroutput">Value</code>s,
+ </li>
+<li class="listitem">
+ <code class="computeroutput"><span class="identifier">Allocator</span></code> - <code class="computeroutput"><span class="identifier">Value</span></code>s allocator, all allocators needed
+ by the container are created from it.
+ </li>
+</ul></div>
+<h5>
+<a name="geometry.spatial_indexes.creation_and_modification.h1"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.creation_and_modification.values_and_indexables"></a></span><a class="link" href="creation_and_modification.html#geometry.spatial_indexes.creation_and_modification.values_and_indexables">Values
+ and Indexables</a>
+ </h5>
+<p>
+ R-tree may store <code class="computeroutput">Value</code>s of any type as long as passed function
+ objects know how to interpret those <code class="computeroutput">Value</code>s, that is extract
+ an <code class="computeroutput">Indexable</code> that the R-tree can handle and compare <code class="computeroutput">Value</code>s.
+ The <code class="computeroutput">Indexable</code> is a type adapted to Point, Box or Segment concept.
+ The examples of rtrees storing <code class="computeroutput">Value</code>s translatable to various
+ <code class="computeroutput">Indexable</code>s are presented below.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ rtree&lt;Point, ...&gt;
+ </p>
+ </th>
+<th>
+ <p>
+ rtree&lt;Box, ...&gt;
+ </p>
+ </th>
+<th>
+ <p>
+ rtree&lt;Segment, ...&gt;
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_pt.png" alt="rtree_pt"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rstar.png" alt="rstar"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_seg.png" alt="rtree_seg"></span>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<p>
+ By default function objects <code class="computeroutput"><span class="identifier">index</span><span class="special">::</span><span class="identifier">indexable</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;</span></code> and <code class="computeroutput"><span class="identifier">index</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;</span></code> are defined for some typically used
+ <code class="computeroutput">Value</code> types which may be stored without defining any additional
+ classes. By default the rtree may store pure <code class="computeroutput">Indexable</code>s, pairs
+ and tuples. In the case of those two collection types, the <code class="computeroutput">Indexable</code>
+ must be the first stored type.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="computeroutput">Indexable <span class="special">=</span> Point <span class="special">|</span>
+ Box <span class="special">|</span> <span class="identifier">Segment</span></code>
+ </li>
+<li class="listitem">
+ <code class="computeroutput">Value <span class="special">=</span> <span class="identifier">Indexable</span>
+ <span class="special">|</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span>Indexable<span class="special">,</span>
+ <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="special">|</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tuple</span><span class="special">&lt;</span>Indexable<span class="special">,</span>
+ <span class="special">...&gt;</span> <span class="special">[</span>
+ <span class="special">|</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span><span class="special">&lt;</span>Indexable<span class="special">,</span>
+ <span class="special">...&gt;</span> <span class="special">]</span></code>
+ </li>
+</ul></div>
+<p>
+ By default <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tuple</span><span class="special">&lt;...&gt;</span></code>
+ is supported on all compilers. If the compiler supports C++11 tuples and
+ variadic templates then <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span><span class="special">&lt;...&gt;</span></code> may be used "out of the box"
+ as well.
+ </p>
+<p>
+ Examples of default <code class="computeroutput">Value</code> types:
+ </p>
+<pre class="programlisting"><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;...&gt;</span>
+<span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;...&gt;</span>
+<span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;...&gt;</span>
+<span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">segment</span><span class="special">&lt;...&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;...&gt;,</span> <span class="keyword">unsigned</span><span class="special">&gt;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">tuple</span><span class="special">&lt;</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;...&gt;,</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">float</span><span class="special">&gt;</span>
+</pre>
+<p>
+ The predefined <code class="computeroutput"><span class="identifier">index</span><span class="special">::</span><span class="identifier">indexable</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;</span></code>
+ returns const reference to the <code class="computeroutput">Indexable</code> stored in the <code class="computeroutput">Value</code>.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../doc/src/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The translation is done quite frequently inside the container - each time
+ the rtree needs it.
+ </p></td></tr>
+</table></div>
+<p>
+ The predefined <code class="computeroutput"><span class="identifier">index</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;</span></code>:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ for <code class="computeroutput">Point</code>, <code class="computeroutput">Box</code> and <code class="computeroutput"><span class="identifier">Segment</span></code>
+ - compares <code class="computeroutput">Value</code>s with geometry::equals().
+ </li>
+<li class="listitem">
+ for <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;...&gt;</span></code>
+ - compares both components of the <code class="computeroutput">Value</code>. The first value
+ stored in the pair is compared before the second one. If the value stored
+ in the pair is a Geometry, <code class="computeroutput"><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">equals</span><span class="special">()</span></code> is used. For other types it uses <code class="computeroutput"><span class="keyword">operator</span><span class="special">==()</span></code>.
+ </li>
+<li class="listitem">
+ for <code class="computeroutput"><span class="identifier">tuple</span><span class="special">&lt;...&gt;</span></code>
+ - compares all components of the <code class="computeroutput">Value</code>. If the component
+ is a <code class="computeroutput"><span class="identifier">Geometry</span></code>, <code class="computeroutput"><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">equals</span><span class="special">()</span></code>
+ function is used. For other types it uses <code class="computeroutput"><span class="keyword">operator</span><span class="special">==()</span></code>.
+ </li>
+</ul></div>
+<h5>
+<a name="geometry.spatial_indexes.creation_and_modification.h2"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.creation_and_modification.balancing_algorithms_compile_time_parameters"></a></span><a class="link" href="creation_and_modification.html#geometry.spatial_indexes.creation_and_modification.balancing_algorithms_compile_time_parameters">Balancing
+ algorithms compile-time parameters</a>
+ </h5>
+<p>
+ <code class="computeroutput">Value</code>s may be inserted to the R-tree in many various ways. Final
+ internal structure of the R-tree depends on algorithms used in the insertion
+ process and parameters. The most important is nodes' balancing algorithm.
+ Currently, three well-known types of R-trees may be created.
+ </p>
+<p>
+ Linear - classic R-tree using balancing algorithm of linear complexity
+ </p>
+<pre class="programlisting"><span class="identifier">index</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> Value<span class="special">,</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">linear</span><span class="special">&lt;</span><span class="number">16</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rt</span><span class="special">;</span>
+</pre>
+<p>
+ Quadratic - classic R-tree using balancing algorithm of quadratic complexity
+ </p>
+<pre class="programlisting"><span class="identifier">index</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> Value<span class="special">,</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">quadratic</span><span class="special">&lt;</span><span class="number">16</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rt</span><span class="special">;</span>
+</pre>
+<p>
+ R*-tree - balancing algorithm minimizing nodes' overlap with forced reinsertions
+ </p>
+<pre class="programlisting"><span class="identifier">index</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> Value<span class="special">,</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">rstar</span><span class="special">&lt;</span><span class="number">16</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rt</span><span class="special">;</span>
+</pre>
+<h5>
+<a name="geometry.spatial_indexes.creation_and_modification.h3"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.creation_and_modification.balancing_algorithms_run_time_parameters"></a></span><a class="link" href="creation_and_modification.html#geometry.spatial_indexes.creation_and_modification.balancing_algorithms_run_time_parameters">Balancing
+ algorithms run-time parameters</a>
+ </h5>
+<p>
+ Balancing algorithm parameters may be passed to the R-tree in run-time. To
+ use run-time versions of the R-tree one may pass parameters which names start
+ with <code class="computeroutput"><span class="identifier">dynamic_</span></code>.
+ </p>
+<pre class="programlisting"><span class="comment">// linear</span>
+<span class="identifier">index</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span>Value<span class="special">,</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">dynamic_linear</span><span class="special">&gt;</span> <span class="identifier">rt</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">dynamic_linear</span><span class="special">(</span><span class="number">16</span><span class="special">));</span>
+
+<span class="comment">// quadratic</span>
+<span class="identifier">index</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span>Value<span class="special">,</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">dynamic_quadratic</span><span class="special">&gt;</span> <span class="identifier">rt</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">dynamic_quadratic</span><span class="special">(</span><span class="number">16</span><span class="special">));</span>
+
+<span class="comment">// rstar</span>
+<span class="identifier">index</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span>Value<span class="special">,</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">dynamic_rstar</span><span class="special">&gt;</span> <span class="identifier">rt</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">dynamic_rstar</span><span class="special">(</span><span class="number">16</span><span class="special">));</span>
+</pre>
+<p>
+ The obvious drawback is a slightly slower R-tree.
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.creation_and_modification.h4"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.creation_and_modification.non_default_parameters"></a></span><a class="link" href="creation_and_modification.html#geometry.spatial_indexes.creation_and_modification.non_default_parameters">Non-default
+ parameters</a>
+ </h5>
+<p>
+ Non-default R-tree parameters are described in the reference.
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.creation_and_modification.h5"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.creation_and_modification.copying__moving_and_swapping"></a></span><a class="link" href="creation_and_modification.html#geometry.spatial_indexes.creation_and_modification.copying__moving_and_swapping">Copying,
+ moving and swapping</a>
+ </h5>
+<p>
+ The R-tree is copyable and movable container. Move semantics is implemented
+ using Boost.Move library so it's possible to move the container on a compilers
+ without rvalue references support.
+ </p>
+<pre class="programlisting"><span class="comment">// default constructor</span>
+<span class="identifier">index</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> Value<span class="special">,</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">rstar</span><span class="special">&lt;</span><span class="number">8</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rt1</span><span class="special">;</span>
+
+<span class="comment">// copy constructor</span>
+<span class="identifier">index</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> Value<span class="special">,</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">rstar</span><span class="special">&lt;</span><span class="number">8</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rt2</span><span class="special">(</span><span class="identifier">r1</span><span class="special">);</span>
+
+<span class="comment">// copy assignment</span>
+<span class="identifier">rt2</span> <span class="special">=</span> <span class="identifier">r1</span><span class="special">;</span>
+
+<span class="comment">// move constructor</span>
+<span class="identifier">index</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> Value<span class="special">,</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">rstar</span><span class="special">&lt;</span><span class="number">8</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rt3</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">rt1</span><span class="special">));</span>
+
+<span class="comment">// move assignment</span>
+<span class="identifier">rt3</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">move</span><span class="special">(</span><span class="identifier">rt2</span><span class="special">);</span>
+
+<span class="comment">// swap</span>
+<span class="identifier">rt3</span><span class="special">.</span><span class="identifier">swap</span><span class="special">(</span><span class="identifier">rt2</span><span class="special">);</span>
+</pre>
+<h5>
+<a name="geometry.spatial_indexes.creation_and_modification.h6"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.creation_and_modification.inserting_and_removing_values"></a></span><a class="link" href="creation_and_modification.html#geometry.spatial_indexes.creation_and_modification.inserting_and_removing_values">Inserting
+ and removing Values</a>
+ </h5>
+<p>
+ The following code creates an R-tree using quadratic balancing algorithm.
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">Box</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> Value<span class="special">;</span>
+<span class="identifier">index</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> Value<span class="special">,</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">quadratic</span><span class="special">&lt;</span><span class="number">16</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rt</span><span class="special">;</span>
+</pre>
+<p>
+ To insert or remove a `Value' by method call one may use the following code.
+ </p>
+<pre class="programlisting">Value <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span>Box<span class="special">(...),</span> <span class="number">0</span><span class="special">);</span>
+
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">remove</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+</pre>
+<p>
+ To insert or remove a `Value' by function call one may use the following
+ code.
+ </p>
+<pre class="programlisting">Value <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span>Box<span class="special">(...),</span> <span class="number">0</span><span class="special">);</span>
+
+<span class="identifier">index</span><span class="special">::</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">rt</span><span class="special">,</span> <span class="identifier">v</span><span class="special">);</span>
+
+<span class="identifier">index</span><span class="special">::</span><span class="identifier">remove</span><span class="special">(</span><span class="identifier">rt</span><span class="special">,</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+<p>
+ Typically you will perform those operations in a loop in order to e.g. insert
+ some number of <code class="computeroutput">Value</code>s corresponding to geometrical objects (e.g.
+ <code class="computeroutput"><span class="identifier">Polygons</span></code>) stored in another
+ container.
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.creation_and_modification.h7"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.creation_and_modification.additional_interface"></a></span><a class="link" href="creation_and_modification.html#geometry.spatial_indexes.creation_and_modification.additional_interface">Additional
+ interface</a>
+ </h5>
+<p>
+ The R-tree allows creation, inserting and removing of Values from a range.
+ The range may be passed as <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">)</span></code> Iterators
+ pair or as a Range adapted to one of the Boost.Range Concepts.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">Box</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> Value<span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> Value<span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">linear</span><span class="special">&lt;</span><span class="number">32</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">RTree</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>Value<span class="special">&gt;</span> <span class="identifier">values</span><span class="special">;</span>
+<span class="comment">/* vector filling code, here */</span>
+
+<span class="comment">// create R-tree with default constructor and insert values with insert(Value const&amp;)</span>
+<span class="identifier">RTree</span> <span class="identifier">rt1</span><span class="special">;</span>
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span>Value <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">values</span><span class="special">)</span>
+ <span class="identifier">rt1</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+
+<span class="comment">// create R-tree with default constructor and insert values with insert(Iter, Iter)</span>
+<span class="identifier">RTree</span> <span class="identifier">rt2</span><span class="special">;</span>
+<span class="identifier">rt2</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">values</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">values</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+
+<span class="comment">// create R-tree with default constructor and insert values with insert(Range)</span>
+<span class="identifier">RTree</span> <span class="identifier">rt3</span><span class="special">;</span>
+<span class="identifier">rt3</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">values_range</span><span class="special">);</span>
+
+<span class="comment">// create R-tree with constructor taking Iterators</span>
+<span class="identifier">RTree</span> <span class="identifier">rt4</span><span class="special">(</span><span class="identifier">values</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">values</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+
+<span class="comment">// create R-tree with constructor taking Range</span>
+<span class="identifier">RTree</span> <span class="identifier">rt5</span><span class="special">(</span><span class="identifier">values_range</span><span class="special">);</span>
+
+<span class="comment">// remove values with remove(Value const&amp;)</span>
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span>Value <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">values</span><span class="special">)</span>
+ <span class="identifier">rt1</span><span class="special">.</span><span class="identifier">remove</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span>
+
+<span class="comment">// remove values with remove(Iter, Iter)</span>
+<span class="identifier">rt2</span><span class="special">.</span><span class="identifier">remove</span><span class="special">(</span><span class="identifier">values</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">values</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+
+<span class="comment">// remove values with remove(Range)</span>
+<span class="identifier">rt3</span><span class="special">.</span><span class="identifier">remove</span><span class="special">(</span><span class="identifier">values_range</span><span class="special">);</span>
+</pre>
+<p>
+ Furthermore, it's possible to pass a Range adapted by one of the Boost.Range
+ adaptors into the rtree (more complete example can be found in the <span class="bold"><strong>Examples</strong></span> section).
+ </p>
+<pre class="programlisting"><span class="comment">// create Rtree containing `std::pair&lt;Box, int&gt;` from a container of Boxes on the fly.</span>
+<span class="identifier">RTree</span> <span class="identifier">rt6</span><span class="special">(</span><span class="identifier">boxes</span> <span class="special">|</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">indexed</span><span class="special">()</span>
+ <span class="special">|</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">transformed</span><span class="special">(</span><span class="identifier">pair_maker</span><span class="special">()));</span>
+</pre>
+<h5>
+<a name="geometry.spatial_indexes.creation_and_modification.h8"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.creation_and_modification.insert_iterator"></a></span><a class="link" href="creation_and_modification.html#geometry.spatial_indexes.creation_and_modification.insert_iterator">Insert
+ iterator</a>
+ </h5>
+<p>
+ There are functions like <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">()</span></code>, or R-tree's queries that copy values to
+ an output iterator. In order to insert values to a container in this kind
+ of function insert iterators may be used. Geometry.Index provide its own
+ <code class="computeroutput"><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">insert_iterator</span><span class="special">&lt;</span><span class="identifier">Container</span><span class="special">&gt;</span></code>
+ which is generated by <code class="computeroutput"><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">inserter</span><span class="special">()</span></code> function.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">Box</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> Value<span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> Value<span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">linear</span><span class="special">&lt;</span><span class="number">32</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">RTree</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>Value<span class="special">&gt;</span> <span class="identifier">values</span><span class="special">;</span>
+<span class="comment">/* vector filling code, here */</span>
+
+<span class="comment">// create R-tree and insert values from the vector</span>
+<span class="identifier">RTree</span> <span class="identifier">rt1</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span><span class="identifier">values</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">values</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">inserter</span><span class="special">(</span><span class="identifier">rt1</span><span class="special">));</span>
+
+<span class="comment">// create R-tree and insert values returned by a query</span>
+<span class="identifier">RTree</span> <span class="identifier">rt2</span><span class="special">;</span>
+<span class="identifier">rt1</span><span class="special">.</span><span class="identifier">spatial_query</span><span class="special">(</span><span class="identifier">Box</span><span class="special">(/*...*/),</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">inserter</span><span class="special">(</span><span class="identifier">rt2</span><span class="special">));</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rtree_quickstart.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="queries.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/introduction.html b/libs/geometry/doc/html/geometry/spatial_indexes/introduction.html
new file mode 100644
index 0000000000..002371ea96
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/introduction.html
@@ -0,0 +1,400 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Introduction</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="next" href="rtree_quickstart.html" title="Quick Start">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_quickstart.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="geometry.spatial_indexes.introduction"></a><a class="link" href="introduction.html" title="Introduction">Introduction</a>
+</h3></div></div></div>
+<p>
+ The Boost.Geometry.Index is intended to gather data structures called spatial
+ indexes which may be used to accelerate searching for objects in space. In
+ general, spatial indexes stores geometric objects' representations and allows
+ searching for objects occupying some space or close to some point in space.
+ </p>
+<p>
+ Currently, only one spatial index is implemented - R-tree.
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.introduction.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.introduction.r_tree"></a></span><a class="link" href="introduction.html#geometry.spatial_indexes.introduction.r_tree">R-tree</a>
+ </h5>
+<p>
+ R-tree is a tree data structure used for spatial searching. It was proposed
+ by Antonin Guttman in 1984 <a href="#ftn.geometry.spatial_indexes.introduction.f0" class="footnote" name="geometry.spatial_indexes.introduction.f0"><sup class="footnote">[1]</sup></a> as an expansion of B-tree for multi-dimensional data. It may
+ be used to store points or volumetric data in order to perform a spatial
+ query. This query may for example return objects that are inside some area
+ or are close to some point in space <a href="#ftn.geometry.spatial_indexes.introduction.f1" class="footnote" name="geometry.spatial_indexes.introduction.f1"><sup class="footnote">[2]</sup></a>. It's possible to insert new objects or to remove the ones already
+ stored.
+ </p>
+<p>
+ The R-tree structure is presented on the image below. Each R-tree's node
+ store a box describing the space occupied by its children nodes. At the bottom
+ of the structure, there are leaf-nodes which contains values (geometric objects
+ representations).
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rstar.png" alt="rstar"></span>
+ </p>
+<p>
+ The R-tree is a self-balanced data structure. The key part of balancing algorithm
+ is node splitting algorithm <a href="#ftn.geometry.spatial_indexes.introduction.f2" class="footnote" name="geometry.spatial_indexes.introduction.f2"><sup class="footnote">[3]</sup></a> <a href="#ftn.geometry.spatial_indexes.introduction.f3" class="footnote" name="geometry.spatial_indexes.introduction.f3"><sup class="footnote">[4]</sup></a>. Each algorithm produces different splits so the internal structure
+ of a tree may be different for each one of them. In general, more complex
+ algorithms analyses elements better and produces less overlapping nodes.
+ In the searching process less nodes must be traversed in order to find desired
+ objects. On the other hand more complex analysis takes more time. In general
+ faster inserting will result in slower searching and vice versa. The performance
+ of the R-tree depends on balancing algorithm, parameters and data inserted
+ into the container.
+ </p>
+<p>
+ Additionally there are also algorithms creating R-tree containing some, number
+ of objects. This technique is called bulk loading and is done by use of packing
+ algorithm <a href="#ftn.geometry.spatial_indexes.introduction.f4" class="footnote" name="geometry.spatial_indexes.introduction.f4"><sup class="footnote">[5]</sup></a> <a href="#ftn.geometry.spatial_indexes.introduction.f5" class="footnote" name="geometry.spatial_indexes.introduction.f5"><sup class="footnote">[6]</sup></a>. This method is faster and results in R-trees with better internal
+ structure. This means that the query performance is increased.
+ </p>
+<p>
+ The examples of structures of trees created by use of different algorithms
+ and exemplary operations times are presented below.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ </th>
+<th>
+ <p>
+ Linear algorithm
+ </p>
+ </th>
+<th>
+ <p>
+ Quadratic algorithm
+ </p>
+ </th>
+<th>
+ <p>
+ R*-tree
+ </p>
+ </th>
+<th>
+ <p>
+ Packing algorithm
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>Example structure</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/linear.png" alt="linear"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/quadratic.png" alt="quadratic"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rstar.png" alt="rstar"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/bulk.png" alt="bulk"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>1M Values inserts</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ 1.76s
+ </p>
+ </td>
+<td>
+ <p>
+ 2.47s
+ </p>
+ </td>
+<td>
+ <p>
+ 6.19s
+ </p>
+ </td>
+<td>
+ <p>
+ 0.64s
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>100k spatial queries</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ 2.21s
+ </p>
+ </td>
+<td>
+ <p>
+ 0.51s
+ </p>
+ </td>
+<td>
+ <p>
+ 0.12s
+ </p>
+ </td>
+<td>
+ <p>
+ 0.07s
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>100k knn queries</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ 6.37s
+ </p>
+ </td>
+<td>
+ <p>
+ 2.09s
+ </p>
+ </td>
+<td>
+ <p>
+ 0.64s
+ </p>
+ </td>
+<td>
+ <p>
+ 0.52s
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ The performance of the R-tree for different values of Max parameter and Min=0.5*Max
+ is presented in the table below. The configuration of the machine used for
+ testing is: <span class="emphasis"><em>Intel(R) Core(TM) i7 870 @ 2.93GHz, 8GB RAM, MS Windows
+ 7 x64</em></span>. In the two upper figures you can see the performance of
+ the R-tree storing random, relatively small, non-overlapping, 2d boxes. In
+ the lower ones, the performance of the R-tree also storing random, 2d boxes,
+ but this time quite big and possibly overlapping. As you can see, the R-tree
+ performance is different in both cases.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ </th>
+<th>
+ <p>
+ building
+ </p>
+ </th>
+<th>
+ <p>
+ querying
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>non overlapping</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/build_non_ovl.png" alt="build_non_ovl"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/query_non_ovl.png" alt="query_non_ovl"></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <span class="bold"><strong>overlapping</strong></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/build_ovl.png" alt="build_ovl"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/query_ovl.png" alt="query_ovl"></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<h5>
+<a name="geometry.spatial_indexes.introduction.h1"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.introduction.implementation_details"></a></span><a class="link" href="introduction.html#geometry.spatial_indexes.introduction.implementation_details">Implementation
+ details</a>
+ </h5>
+<p>
+ Key features of this implementation of the R-tree are:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ capable to store arbitrary Value type,
+ </li>
+<li class="listitem">
+ three different balancing algorithms - linear, quadratic or rstar,
+ </li>
+<li class="listitem">
+ creation using packing algorithm,
+ </li>
+<li class="listitem">
+ parameters (including maximal and minimal number of elements) may be
+ passed as compile- or run-time parameters, in compile-time version nodes
+ elements are stored in static-size containers,
+ </li>
+<li class="listitem">
+ advanced queries, e.g. search for 5 nearest Values to some point and
+ intersecting some Geometry but not within the other one,
+ </li>
+<li class="listitem">
+ iterative queries by use of iterators,
+ </li>
+<li class="listitem">
+ C++11 conformant - move semantics, stateful allocators,
+ </li>
+<li class="listitem">
+ capable to store Value type with no default constructor,
+ </li>
+<li class="listitem">
+ in-memory storage by use of the default std::allocator&lt;&gt;,
+ </li>
+<li class="listitem">
+ other storage options - shared memory and mapped file by use of Boost.Interprocess
+ allocators.
+ </li>
+</ul></div>
+<h5>
+<a name="geometry.spatial_indexes.introduction.h2"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.introduction.dependencies"></a></span><a class="link" href="introduction.html#geometry.spatial_indexes.introduction.dependencies">Dependencies</a>
+ </h5>
+<p>
+ R-tree depends on Boost.Container, Boost.Core, Boost.Move, Boost.MPL, Boost.Range,
+ Boost.Tuple.
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.introduction.h3"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.introduction.contributors"></a></span><a class="link" href="introduction.html#geometry.spatial_indexes.introduction.contributors">Contributors</a>
+ </h5>
+<p>
+ The spatial index was originally started by Federico J. Fernandez during
+ the Google Summer of Code 2008 program, mentored by Hartmut Kaiser.
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.introduction.h4"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.introduction.spatial_thanks"></a></span><a class="link" href="introduction.html#geometry.spatial_indexes.introduction.spatial_thanks">Spatial thanks</a>
+ </h5>
+<p>
+ I'd like to thank Barend Gehrels, Bruno Lalande, Mateusz &#321;oskot, Lucanus
+ J. Simonson for their support and ideas.
+ </p>
+<div class="footnotes">
+<br><hr style="width:100; text-align:left;margin-left: 0">
+<div id="ftn.geometry.spatial_indexes.introduction.f0" class="footnote"><p><a href="#geometry.spatial_indexes.introduction.f0" class="para"><sup class="para">[1] </sup></a>
+ Guttman, A. (1984). <span class="emphasis"><em>R-Trees: A Dynamic Index Structure for Spatial
+ Searching</em></span>
+ </p></div>
+<div id="ftn.geometry.spatial_indexes.introduction.f1" class="footnote"><p><a href="#geometry.spatial_indexes.introduction.f1" class="para"><sup class="para">[2] </sup></a>
+ Cheung, K.; Fu, A. (1998). <span class="emphasis"><em>Enhanced Nearest Neighbour Search
+ on the R-tree</em></span>
+ </p></div>
+<div id="ftn.geometry.spatial_indexes.introduction.f2" class="footnote"><p><a href="#geometry.spatial_indexes.introduction.f2" class="para"><sup class="para">[3] </sup></a>
+ Greene, D. (1989). <span class="emphasis"><em>An implementation and performance analysis
+ of spatial data access methods</em></span>
+ </p></div>
+<div id="ftn.geometry.spatial_indexes.introduction.f3" class="footnote"><p><a href="#geometry.spatial_indexes.introduction.f3" class="para"><sup class="para">[4] </sup></a>
+ Beckmann, N.; Kriegel, H. P.; Schneider, R.; Seeger, B. (1990). <span class="emphasis"><em>The
+ R*-tree: an efficient and robust access method for points and rectangles</em></span>
+ </p></div>
+<div id="ftn.geometry.spatial_indexes.introduction.f4" class="footnote"><p><a href="#geometry.spatial_indexes.introduction.f4" class="para"><sup class="para">[5] </sup></a>
+ Leutenegger, Scott T.; Edgington, Jeffrey M.; Lopez, Mario A. (1997).
+ <span class="emphasis"><em>STR: A Simple and Efficient Algorithm for R-Tree Packing</em></span>
+ </p></div>
+<div id="ftn.geometry.spatial_indexes.introduction.f5" class="footnote"><p><a href="#geometry.spatial_indexes.introduction.f5" class="para"><sup class="para">[6] </sup></a>
+ Garcia, Yvan J.; Lopez, Mario A.; Leutenegger, Scott T. (1997). <span class="emphasis"><em>A
+ Greedy Algorithm for Bulk Loading R-trees</em></span>
+ </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_quickstart.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/queries.html b/libs/geometry/doc/html/geometry/spatial_indexes/queries.html
new file mode 100644
index 0000000000..5935176628
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/queries.html
@@ -0,0 +1,642 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Queries</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="creation_and_modification.html" title="Creation and Modification">
+<link rel="next" href="rtree_examples.html" title="Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="creation_and_modification.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_examples.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="geometry.spatial_indexes.queries"></a><a class="link" href="queries.html" title="Queries">Queries</a>
+</h3></div></div></div>
+<p>
+ Queries returns <code class="computeroutput">Value</code>s which meets some predicates. Currently
+ supported are three types of predicates:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ spatial predicates - spatial conditions that must be met by stored Value
+ and some Geometry,
+ </li>
+<li class="listitem">
+ distance predicates - distance conditions that must be met by stored
+ Value and some Geometry,
+ </li>
+<li class="listitem">
+ user-defined unary predicate - function, function object or lambda expression
+ checking user-defined condition.
+ </li>
+</ul></div>
+<p>
+ For example queries may be used to retrieve Values:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ intersecting some area but not within other area,
+ </li>
+<li class="listitem">
+ are nearest to some point,
+ </li>
+<li class="listitem">
+ overlapping a box and has user-defined property.
+ </li>
+</ul></div>
+<h5>
+<a name="geometry.spatial_indexes.queries.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.queries.performing_a_query"></a></span><a class="link" href="queries.html#geometry.spatial_indexes.queries.performing_a_query">Performing
+ a query</a>
+ </h5>
+<p>
+ There are various ways to perform a query. They are presented below. All
+ of them returns <code class="computeroutput">Value</code>s intersecting some region defined as a
+ <code class="computeroutput">Box</code>.
+ </p>
+<p>
+ Member function call
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>Value<span class="special">&gt;</span> <span class="identifier">returned_values</span><span class="special">;</span>
+Box <span class="identifier">box_region</span><span class="special">(...);</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box_region</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">returned_values</span><span class="special">));</span>
+</pre>
+<p>
+ Free function call
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>Value<span class="special">&gt;</span> <span class="identifier">returned_values</span><span class="special">;</span>
+Box <span class="identifier">box_region</span><span class="special">(...);</span>
+<span class="identifier">bgi</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">rt</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box_region</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">returned_values</span><span class="special">));</span>
+</pre>
+<p>
+ Range generated by <code class="computeroutput"><span class="keyword">operator</span><span class="special">|</span></code>
+ </p>
+<pre class="programlisting">Box <span class="identifier">box_region</span><span class="special">(...);</span>
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span>Value <span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">rt</span> <span class="special">|</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">queried</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box_region</span><span class="special">)))</span>
+ <span class="special">;</span> <span class="comment">// do something with v</span>
+</pre>
+<p>
+ Query iterators returned by member functions
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>Value<span class="special">&gt;</span> <span class="identifier">returned_values</span><span class="special">;</span>
+Box <span class="identifier">box_region</span><span class="special">(...);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span><span class="identifier">rt</span><span class="special">.</span><span class="identifier">qbegin</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box_region</span><span class="special">)),</span> <span class="identifier">rt</span><span class="special">.</span><span class="identifier">qend</span><span class="special">(),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">returned_values</span><span class="special">));</span>
+</pre>
+<p>
+ Query iterators returned by free functions
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>Value<span class="special">&gt;</span> <span class="identifier">returned_values</span><span class="special">;</span>
+Box <span class="identifier">box_region</span><span class="special">(...);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">qbegin</span><span class="special">(</span><span class="identifier">rt</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box_region</span><span class="special">)),</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">qend</span><span class="special">(</span><span class="identifier">rt</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">returned_values</span><span class="special">));</span>
+</pre>
+<h5>
+<a name="geometry.spatial_indexes.queries.h1"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.queries.spatial_predicates"></a></span><a class="link" href="queries.html#geometry.spatial_indexes.queries.spatial_predicates">Spatial
+ predicates</a>
+ </h5>
+<p>
+ Queries using spatial predicates returns <code class="computeroutput">Value</code>s which are related
+ somehow to some Geometry - box, polygon, etc. Names of spatial predicates
+ correspond to names of Boost.Geometry algorithms (boolean operations). Examples
+ of some basic queries may be found in the tables below. The query region
+ and result <code class="computeroutput"><span class="identifier">Value</span></code>s are orange.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ intersects(Box)
+ </p>
+ </th>
+<th>
+ <p>
+ covered_by(Box)
+ </p>
+ </th>
+<th>
+ <p>
+ disjoint(Box)
+ </p>
+ </th>
+<th>
+ <p>
+ overlaps(Box)
+ </p>
+ </th>
+<th>
+ <p>
+ within(Box)
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/intersects.png" alt="intersects"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/within.png" alt="within"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/disjoint.png" alt="disjoint"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/overlaps.png" alt="overlaps"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/within.png" alt="within"></span>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ intersects(Ring)
+ </p>
+ </th>
+<th>
+ <p>
+ intersects(Polygon)
+ </p>
+ </th>
+<th>
+ <p>
+ intersects(MultiPolygon)
+ </p>
+ </th>
+<th>
+ <p>
+ intersects(Segment)
+ </p>
+ </th>
+<th>
+ <p>
+ intersects(Linestring)
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/intersects_ring.png" alt="intersects_ring"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/intersects_poly.png" alt="intersects_poly"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/intersects_mpoly.png" alt="intersects_mpoly"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/intersects_segment.png" alt="intersects_segment"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/intersects_linestring.png" alt="intersects_linestring"></span>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ intersects(Box)
+ </p>
+ </th>
+<th>
+ <p>
+ disjoint(Box)
+ </p>
+ </th>
+<th>
+ <p>
+ intersects(Box)
+ </p>
+ </th>
+<th>
+ <p>
+ disjoint(Box)
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_pt_intersects_box.png" alt="rtree_pt_intersects_box"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_pt_disjoint_box.png" alt="rtree_pt_disjoint_box"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_seg_intersects_box.png" alt="rtree_seg_intersects_box"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_seg_disjoint_box.png" alt="rtree_seg_disjoint_box"></span>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<p>
+ Spatial predicates are generated by functions defined in <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span></code>
+ namespace.
+ </p>
+<pre class="programlisting"><span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">contains</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">covered_by</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">covers</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">disjont</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">overlaps</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">within</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ All spatial predicates may be negated, e.g.:
+ </p>
+<pre class="programlisting"><span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(!</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="comment">// the same as</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">disjoint</span><span class="special">(</span><span class="identifier">box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<h5>
+<a name="geometry.spatial_indexes.queries.h2"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.queries.nearest_neighbours_queries"></a></span><a class="link" href="queries.html#geometry.spatial_indexes.queries.nearest_neighbours_queries">Nearest
+ neighbours queries</a>
+ </h5>
+<p>
+ Nearest neighbours queries returns <code class="computeroutput">Value</code>s which are closest
+ to some Geometry. The examples of k-NN queries are presented below. 5 <code class="computeroutput">Value</code>s
+ nearest to the Geometry are orange.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ nearest(Point, k)
+ </p>
+ </th>
+<th>
+ <p>
+ nearest(Box, k)
+ </p>
+ </th>
+<th>
+ <p>
+ nearest(Point, k)
+ </p>
+ </th>
+<th>
+ <p>
+ nearest(Box, k)
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/knn_pt_box.png" alt="knn_pt_box"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/knn_box_box.png" alt="knn_box_box"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_pt_knn_pt.png" alt="rtree_pt_knn_pt"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_pt_knn_box.png" alt="rtree_pt_knn_box"></span>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ nearest(Segment, k)
+ </p>
+ </th>
+<th>
+ <p>
+ nearest(Point, k)
+ </p>
+ </th>
+<th>
+ <p>
+ nearest(Box, k)
+ </p>
+ </th>
+<th>
+ <p>
+ nearest(Segment, k)
+ </p>
+ </th>
+<th>
+ <p>
+ nearest(Segment, k)
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/knn_seg_box.png" alt="knn_seg_box"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_seg_knn_pt.png" alt="rtree_seg_knn_pt"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_seg_knn_box.png" alt="rtree_seg_knn_box"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_seg_knn_seg.png" alt="rtree_seg_knn_seg"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../img/index/rtree/rtree_pt_knn_seg.png" alt="rtree_pt_knn_seg"></span>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<p>
+ To perform the knn query one must pass the nearest predicate generated by
+ the <code class="computeroutput"><span class="identifier">nearest</span><span class="special">()</span></code>
+ function defined in <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span></code>
+ namespace. For non-point <code class="computeroutput">Indexable</code>s the shortest distance is
+ calculated using <code class="computeroutput"><span class="identifier">bg</span><span class="special">::</span><span class="identifier">comparable_distance</span><span class="special">()</span></code>
+ function. The following query returns <code class="computeroutput"><span class="identifier">k</span></code>
+ <code class="computeroutput">Value</code>s closest to some Point in space.
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span>Value<span class="special">&gt;</span> <span class="identifier">returned_values</span><span class="special">;</span>
+Point <span class="identifier">pt</span><span class="special">(/*...*/);</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="identifier">k</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">returned_values</span><span class="special">));</span>
+</pre>
+<p>
+ The same way different query Geometries can be used:
+ </p>
+<pre class="programlisting">Box <span class="identifier">box</span><span class="special">(/*...*/);</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">box</span><span class="special">,</span> <span class="identifier">k</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">returned_values</span><span class="special">));</span>
+
+<span class="identifier">Segment</span> <span class="identifier">seg</span><span class="special">(/*...*/);</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">seg</span><span class="special">,</span> <span class="identifier">k</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">returned_values</span><span class="special">));</span>
+</pre>
+<h5>
+<a name="geometry.spatial_indexes.queries.h3"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.queries.user_defined_unary_predicate"></a></span><a class="link" href="queries.html#geometry.spatial_indexes.queries.user_defined_unary_predicate">User-defined
+ unary predicate</a>
+ </h5>
+<p>
+ The user may pass a <code class="computeroutput"><span class="identifier">UnaryPredicate</span></code>
+ - function, function object or lambda expression taking const reference to
+ Value and returning bool. This object may be passed to the query in order
+ to check if <code class="computeroutput">Value</code> should be returned by the query. To do it
+ one may use <code class="computeroutput"><span class="identifier">index</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">()</span></code>
+ function like on the example below:
+ </p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">is_red</span><span class="special">(</span>Value <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">is_red</span><span class="special">();</span>
+<span class="special">}</span>
+
+<span class="keyword">struct</span> <span class="identifier">is_red_o</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Value</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span>Value <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">is_red</span><span class="special">();</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+
+<span class="comment">// ...</span>
+
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">(</span><span class="identifier">is_red</span><span class="special">),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">(</span><span class="identifier">is_red_o</span><span class="special">()),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+
+<span class="preprocessor">#ifndef</span> <span class="identifier">BOOST_NO_CXX11_LAMBDAS</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">([](</span>Value <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">is_red</span><span class="special">();</span> <span class="special">}),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="preprocessor">#endif</span>
+</pre>
+<p>
+ <code class="computeroutput"><span class="identifier">satisfies</span><span class="special">()</span></code>
+ may be negated, e.g.:
+ </p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">is_red</span><span class="special">(</span>Value <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">is_red</span><span class="special">();</span> <span class="special">}</span>
+<span class="keyword">bool</span> <span class="identifier">is_not_red</span><span class="special">(</span>Value <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="special">!</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">is_red</span><span class="special">();</span> <span class="special">}</span>
+
+<span class="comment">// ...</span>
+
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">(</span><span class="identifier">is_red</span><span class="special">),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="comment">// the same as</span>
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="special">!</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">satisfies</span><span class="special">(</span><span class="identifier">is_not_red</span><span class="special">),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<h5>
+<a name="geometry.spatial_indexes.queries.h4"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.queries.passing_a_set_of_predicates"></a></span><a class="link" href="queries.html#geometry.spatial_indexes.queries.passing_a_set_of_predicates">Passing
+ a set of predicates</a>
+ </h5>
+<p>
+ It's possible to use some number of predicates in one query by connecting
+ them with <code class="computeroutput"><span class="keyword">operator</span><span class="special">&amp;&amp;</span></code>
+ e.g. <code class="computeroutput"><span class="identifier">Pred1</span> <span class="special">&amp;&amp;</span>
+ <span class="identifier">Pred2</span> <span class="special">&amp;&amp;</span>
+ <span class="identifier">Pred3</span> <span class="special">&amp;&amp;</span>
+ <span class="special">...</span></code>.
+ </p>
+<p>
+ These predicates are connected by logical AND. Passing all predicates together
+ not only makes possible to construct advanced queries but is also faster
+ than separate calls because the tree is traversed only once. Traversing is
+ continued and <code class="computeroutput"><span class="identifier">Value</span></code>s are
+ returned only if all predicates are met. Predicates are checked left-to-right
+ so placing most restrictive predicates first should accelerate the search.
+ </p>
+<pre class="programlisting"><span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box1</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="special">!</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">within</span><span class="special">(</span><span class="identifier">box2</span><span class="special">),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+
+<span class="identifier">rt</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">box1</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="special">!</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">within</span><span class="special">(</span><span class="identifier">box2</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">overlaps</span><span class="special">(</span><span class="identifier">box3</span><span class="special">),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+</pre>
+<p>
+ Of course it's possible to connect different types of predicates together.
+ </p>
+<pre class="programlisting"><span class="identifier">index</span><span class="special">::</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">rt</span><span class="special">,</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="identifier">k</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">within</span><span class="special">(</span><span class="identifier">b</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">returned_values</span><span class="special">));</span>
+
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">Value</span> <span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">rt</span> <span class="special">|</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">queried</span><span class="special">(</span><span class="identifier">index</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="identifier">k</span><span class="special">)</span> <span class="special">&amp;&amp;</span> <span class="identifier">index</span><span class="special">::</span><span class="identifier">covered_by</span><span class="special">(</span><span class="identifier">b</span><span class="special">)))</span>
+ <span class="special">;</span> <span class="comment">// do something with v</span>
+</pre>
+<h5>
+<a name="geometry.spatial_indexes.queries.h5"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.queries.iterative_queries"></a></span><a class="link" href="queries.html#geometry.spatial_indexes.queries.iterative_queries">Iterative
+ queries</a>
+ </h5>
+<p>
+ The query performed using query iterators may be paused and resumed if needed,
+ e.g. when the query takes too long, or may be stopped at some point, when
+ all interesting values were gathered. The query iterator is returned by
+ <code class="computeroutput"><span class="identifier">qbegin</span><span class="special">()</span></code>
+ member function which requires passing predicates, like <code class="computeroutput"><span class="identifier">query</span><span class="special">()</span></code> member function.
+ </p>
+<pre class="programlisting"><span class="keyword">for</span> <span class="special">(</span> <span class="identifier">Rtree</span><span class="special">::</span><span class="identifier">const_query_iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">tree</span><span class="special">.</span><span class="identifier">qbegin</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="number">10000</span><span class="special">))</span> <span class="special">;</span>
+ <span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">tree</span><span class="special">.</span><span class="identifier">qend</span><span class="special">()</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">it</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// do something with value</span>
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">has_enough_nearest_values</span><span class="special">()</span> <span class="special">)</span>
+ <span class="keyword">break</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ In the case of iterative k-NN queries it's guaranteed to iterate over the
+ closest <code class="computeroutput">Value</code>s first.
+ </p></td></tr>
+</table></div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/src/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The modification of the <code class="computeroutput"><span class="identifier">rtree</span></code>,
+ e.g. insertion or removal of <code class="computeroutput">Value</code>s may invalidate the iterators.
+ </p></td></tr>
+</table></div>
+<h5>
+<a name="geometry.spatial_indexes.queries.h6"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.queries.inserting_query_results_into_the_other_r_tree"></a></span><a class="link" href="queries.html#geometry.spatial_indexes.queries.inserting_query_results_into_the_other_r_tree">Inserting
+ query results into the other R-tree</a>
+ </h5>
+<p>
+ There are several ways of inserting Values returned by a query to the other
+ R-tree container. The most basic way is creating a temporary container for
+ Values and insert them later.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">Box</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> Value<span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> Value<span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">linear</span><span class="special">&lt;</span><span class="number">32</span><span class="special">,</span> <span class="number">8</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">RTree</span><span class="special">;</span>
+
+<span class="identifier">RTree</span> <span class="identifier">rt1</span><span class="special">;</span>
+<span class="comment">/* some inserting into the tree */</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">;</span>
+<span class="identifier">rt1</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">Box</span><span class="special">(/*...*/)),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+<span class="identifier">RTree</span> <span class="identifier">rt2</span><span class="special">(</span><span class="identifier">result</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">result</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+</pre>
+<p>
+ However there are better ways. One of these methods is mentioned in the "Creation
+ and modification" section. The insert iterator may be passed directly
+ into the query.
+ </p>
+<pre class="programlisting"><span class="identifier">RTree</span> <span class="identifier">rt3</span><span class="special">;</span>
+<span class="identifier">rt1</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">Box</span><span class="special">(/*...*/))),</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">inserter</span><span class="special">(</span><span class="identifier">rt3</span><span class="special">));</span>
+</pre>
+<p>
+ If you're a user of Boost.Range you'll appreciate the third option. You may
+ pass the result Range directly into the constructor or <code class="computeroutput"><span class="identifier">insert</span><span class="special">()</span></code> member function.
+ </p>
+<pre class="programlisting"><span class="identifier">RTree</span> <span class="identifier">rt4</span><span class="special">(</span><span class="identifier">rt1</span> <span class="special">|</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">queried</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">Box</span><span class="special">(/*...*/)))));</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="creation_and_modification.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_examples.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples.html
new file mode 100644
index 0000000000..53dbff414f
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Examples</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="queries.html" title="Queries">
+<link rel="next" href="rtree_examples/quick_start.html" title="Quick start">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="queries.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_examples/quick_start.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="geometry.spatial_indexes.rtree_examples"></a><a class="link" href="rtree_examples.html" title="Examples">Examples</a>
+</h3></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="rtree_examples/quick_start.html">Quick
+ start</a></span></dt>
+<dt><span class="section"><a href="rtree_examples/index_of_polygons_stored_in_vector.html">Index
+ of polygons stored in vector</a></span></dt>
+<dt><span class="section"><a href="rtree_examples/index_of_shared_pointers_to_polygons.html">Index
+ of shared pointers to polygons</a></span></dt>
+<dt><span class="section"><a href="rtree_examples/index_of_iterators_of_a_map_storing_variant_geometries.html">Index
+ of iterators of a map storing variant geometries</a></span></dt>
+<dt><span class="section"><a href="rtree_examples/specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html">Specializing
+ index::indexable function object - storing shared pointers in the rtree</a></span></dt>
+<dt><span class="section"><a href="rtree_examples/using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html">Using
+ IndexableGetter function object - storing indexes of external container's
+ elements</a></span></dt>
+<dt><span class="section"><a href="rtree_examples/range_adaptors.html">Range
+ adaptors</a></span></dt>
+<dt><span class="section"><a href="rtree_examples/iterative_query.html">Iterative
+ query</a></span></dt>
+<dt><span class="section"><a href="rtree_examples/index_stored_in_shared_memory_using_boost_interprocess.html">Index
+ stored in shared memory using Boost.Interprocess</a></span></dt>
+<dt><span class="section"><a href="rtree_examples/index_stored_in_mapped_file_using_boost_interprocess.html">Index
+ stored in mapped file using Boost.Interprocess</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="queries.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rtree_examples/quick_start.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_iterators_of_a_map_storing_variant_geometries.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_iterators_of_a_map_storing_variant_geometries.html
new file mode 100644
index 0000000000..d0f61ce6ae
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_iterators_of_a_map_storing_variant_geometries.html
@@ -0,0 +1,218 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index of iterators of a map storing variant geometries</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../rtree_examples.html" title="Examples">
+<link rel="prev" href="index_of_shared_pointers_to_polygons.html" title="Index of shared pointers to polygons">
+<link rel="next" href="specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html" title="Specializing index::indexable function object - storing shared pointers in the rtree">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="index_of_shared_pointers_to_polygons.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.spatial_indexes.rtree_examples.index_of_iterators_of_a_map_storing_variant_geometries"></a><a class="link" href="index_of_iterators_of_a_map_storing_variant_geometries.html" title="Index of iterators of a map storing variant geometries">Index
+ of iterators of a map storing variant geometries</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">ring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">linestring</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cmath</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">map</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">variant</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">box</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span> <span class="comment">// ccw, open polygon</span>
+<span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">ring</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">ring</span><span class="special">;</span> <span class="comment">// ccw, open ring</span>
+<span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">linestring</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">linestring</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">,</span> <span class="identifier">ring</span><span class="special">,</span> <span class="identifier">linestring</span><span class="special">&gt;</span> <span class="identifier">geometry</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="identifier">geometry</span><span class="special">&gt;</span> <span class="identifier">map</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">,</span> <span class="identifier">map</span><span class="special">::</span><span class="identifier">iterator</span><span class="special">&gt;</span> <span class="identifier">value</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Container</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">fill</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">Container</span> <span class="special">&amp;</span> <span class="identifier">container</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">float</span> <span class="identifier">a</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">a</span> <span class="special">&lt;</span> <span class="number">6.28316f</span> <span class="special">;</span> <span class="identifier">a</span> <span class="special">+=</span> <span class="number">1.04720f</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">float</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">i</span> <span class="special">+</span> <span class="keyword">int</span><span class="special">(</span><span class="number">10</span><span class="special">*::</span><span class="identifier">cos</span><span class="special">(</span><span class="identifier">a</span><span class="special">))*</span><span class="number">0.1f</span><span class="special">;</span>
+ <span class="keyword">float</span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">i</span> <span class="special">+</span> <span class="keyword">int</span><span class="special">(</span><span class="number">10</span><span class="special">*::</span><span class="identifier">sin</span><span class="special">(</span><span class="identifier">a</span><span class="special">))*</span><span class="number">0.1f</span><span class="special">;</span>
+ <span class="identifier">container</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">));</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+
+<span class="keyword">struct</span> <span class="identifier">print_visitor</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_visitor</span><span class="special">&lt;&gt;</span>
+<span class="special">{</span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">polygon</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">g</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;(</span><span class="identifier">g</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ring</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">g</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">ring</span><span class="special">&gt;(</span><span class="identifier">g</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+ <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">linestring</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">g</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">linestring</span><span class="special">&gt;(</span><span class="identifier">g</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">struct</span> <span class="identifier">envelope_visitor</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_visitor</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="identifier">box</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">polygon</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">g</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">return_envelope</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">g</span><span class="special">);</span> <span class="special">}</span>
+ <span class="identifier">box</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">ring</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">g</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">return_envelope</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">g</span><span class="special">);</span> <span class="special">}</span>
+ <span class="identifier">box</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">linestring</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">g</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">return_envelope</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">g</span><span class="special">);</span> <span class="special">}</span>
+<span class="special">};</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="comment">// geometries container</span>
+ <span class="identifier">map</span> <span class="identifier">geometries</span><span class="special">;</span>
+
+ <span class="comment">// create some geometries</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">unsigned</span> <span class="identifier">c</span> <span class="special">=</span> <span class="identifier">rand</span><span class="special">()</span> <span class="special">%</span> <span class="number">3</span><span class="special">;</span>
+
+ <span class="keyword">if</span> <span class="special">(</span> <span class="number">0</span> <span class="special">==</span> <span class="identifier">c</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// create polygon</span>
+ <span class="identifier">polygon</span> <span class="identifier">p</span><span class="special">;</span>
+ <span class="identifier">fill</span><span class="special">(</span><span class="identifier">i</span><span class="special">,</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">outer</span><span class="special">());</span>
+ <span class="identifier">geometries</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">i</span><span class="special">,</span> <span class="identifier">geometry</span><span class="special">(</span><span class="identifier">p</span><span class="special">)));</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span> <span class="keyword">if</span> <span class="special">(</span> <span class="number">1</span> <span class="special">==</span> <span class="identifier">c</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// create ring</span>
+ <span class="identifier">ring</span> <span class="identifier">r</span><span class="special">;</span>
+ <span class="identifier">fill</span><span class="special">(</span><span class="identifier">i</span><span class="special">,</span> <span class="identifier">r</span><span class="special">);</span>
+ <span class="identifier">geometries</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">i</span><span class="special">,</span> <span class="identifier">geometry</span><span class="special">(</span><span class="identifier">r</span><span class="special">)));</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span> <span class="keyword">if</span> <span class="special">(</span> <span class="number">2</span> <span class="special">==</span> <span class="identifier">c</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// create linestring</span>
+ <span class="identifier">linestring</span> <span class="identifier">l</span><span class="special">;</span>
+ <span class="identifier">fill</span><span class="special">(</span><span class="identifier">i</span><span class="special">,</span> <span class="identifier">l</span><span class="special">);</span>
+ <span class="identifier">geometries</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">i</span><span class="special">,</span> <span class="identifier">geometry</span><span class="special">(</span><span class="identifier">l</span><span class="special">)));</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+
+ <span class="comment">// display geometries</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"generated geometries:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">map</span><span class="special">::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">geometries</span><span class="special">)</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">apply_visitor</span><span class="special">(</span><span class="identifier">print_visitor</span><span class="special">(),</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">second</span><span class="special">);</span>
+
+ <span class="comment">// create the rtree using default constructor</span>
+ <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">quadratic</span><span class="special">&lt;</span><span class="number">16</span><span class="special">,</span> <span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rtree</span><span class="special">;</span>
+
+ <span class="comment">// fill the spatial index</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="identifier">map</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">geometries</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">;</span> <span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">geometries</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">it</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// calculate polygon bounding box</span>
+ <span class="identifier">box</span> <span class="identifier">b</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">apply_visitor</span><span class="special">(</span><span class="identifier">envelope_visitor</span><span class="special">(),</span> <span class="identifier">it</span><span class="special">-&gt;</span><span class="identifier">second</span><span class="special">);</span>
+ <span class="comment">// insert new value</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">it</span><span class="special">));</span>
+ <span class="special">}</span>
+
+ <span class="comment">// find values intersecting some area defined by a box</span>
+ <span class="identifier">box</span> <span class="identifier">query_box</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">5</span><span class="special">));</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_s</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">query_box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_s</span><span class="special">));</span>
+
+ <span class="comment">// find 5 nearest values to a point</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_n</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="number">5</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_n</span><span class="special">));</span>
+
+ <span class="comment">// note: in Boost.Geometry the WKT representation of a box is polygon</span>
+
+ <span class="comment">// note: the values store the bounding boxes of geometries</span>
+ <span class="comment">// the geometries aren't used for querying but are printed</span>
+
+ <span class="comment">// display results</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query box:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">query_box</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_s</span><span class="special">)</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">apply_visitor</span><span class="special">(</span><span class="identifier">print_visitor</span><span class="special">(),</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">second</span><span class="special">-&gt;</span><span class="identifier">second</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query point:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_n</span><span class="special">)</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">apply_visitor</span><span class="special">(</span><span class="identifier">print_visitor</span><span class="special">(),</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">second</span><span class="special">-&gt;</span><span class="identifier">second</span><span class="special">);</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.rtree_examples.index_of_iterators_of_a_map_storing_variant_geometries.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.rtree_examples.index_of_iterators_of_a_map_storing_variant_geometries.expected_results"></a></span><a class="link" href="index_of_iterators_of_a_map_storing_variant_geometries.html#geometry.spatial_indexes.rtree_examples.index_of_iterators_of_a_map_storing_variant_geometries.expected_results">Expected
+ results</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">generated</span> <span class="identifier">geometries</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">0</span><span class="special">,</span><span class="number">0.4</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.5</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.9</span> <span class="number">0</span><span class="special">,-</span><span class="number">0.4</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">0.5</span> <span class="special">-</span><span class="number">0.8</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">1</span><span class="special">,</span><span class="number">1.4</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.5</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.1</span> <span class="number">1</span><span class="special">,</span><span class="number">0.6</span> <span class="number">0.2</span><span class="special">,</span><span class="number">1.5</span> <span class="number">0.2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">2</span><span class="special">,</span><span class="number">2.4</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.5</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.1</span> <span class="number">2</span><span class="special">,</span><span class="number">1.6</span> <span class="number">1.2</span><span class="special">,</span><span class="number">2.5</span> <span class="number">1.2</span><span class="special">,</span><span class="number">3</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">3</span><span class="special">,</span><span class="number">3.4</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.5</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.1</span> <span class="number">3</span><span class="special">,</span><span class="number">2.6</span> <span class="number">2.2</span><span class="special">,</span><span class="number">3.5</span> <span class="number">2.2</span><span class="special">))</span>
+<span class="identifier">LINESTRING</span><span class="special">(</span><span class="number">5</span> <span class="number">4</span><span class="special">,</span><span class="number">4.4</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.5</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.1</span> <span class="number">4</span><span class="special">,</span><span class="number">3.6</span> <span class="number">3.2</span><span class="special">,</span><span class="number">4.5</span> <span class="number">3.2</span><span class="special">)</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">6</span> <span class="number">5</span><span class="special">,</span><span class="number">5.4</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.5</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.1</span> <span class="number">5</span><span class="special">,</span><span class="number">4.6</span> <span class="number">4.2</span><span class="special">,</span><span class="number">5.5</span> <span class="number">4.2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">7</span> <span class="number">6</span><span class="special">,</span><span class="number">6.4</span> <span class="number">6.8</span><span class="special">,</span><span class="number">5.5</span> <span class="number">6.8</span><span class="special">,</span><span class="number">5.1</span> <span class="number">6</span><span class="special">,</span><span class="number">5.6</span> <span class="number">5.2</span><span class="special">,</span><span class="number">6.5</span> <span class="number">5.2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">8</span> <span class="number">7</span><span class="special">,</span><span class="number">7.4</span> <span class="number">7.8</span><span class="special">,</span><span class="number">6.5</span> <span class="number">7.8</span><span class="special">,</span><span class="number">6.1</span> <span class="number">7</span><span class="special">,</span><span class="number">6.6</span> <span class="number">6.2</span><span class="special">,</span><span class="number">7.5</span> <span class="number">6.2</span><span class="special">,</span><span class="number">8</span> <span class="number">7</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">9</span> <span class="number">8</span><span class="special">,</span><span class="number">8.4</span> <span class="number">8.8</span><span class="special">,</span><span class="number">7.5</span> <span class="number">8.8</span><span class="special">,</span><span class="number">7.1</span> <span class="number">8</span><span class="special">,</span><span class="number">7.6</span> <span class="number">7.2</span><span class="special">,</span><span class="number">8.5</span> <span class="number">7.2</span><span class="special">,</span><span class="number">9</span> <span class="number">8</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">10</span> <span class="number">9</span><span class="special">,</span><span class="number">9.4</span> <span class="number">9.8</span><span class="special">,</span><span class="number">8.5</span> <span class="number">9.8</span><span class="special">,</span><span class="number">8.1</span> <span class="number">9</span><span class="special">,</span><span class="number">8.6</span> <span class="number">8.2</span><span class="special">,</span><span class="number">9.5</span> <span class="number">8.2</span><span class="special">))</span>
+<span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">box</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">0</span><span class="special">,</span><span class="number">0.4</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.5</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.9</span> <span class="number">0</span><span class="special">,-</span><span class="number">0.4</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">0.5</span> <span class="special">-</span><span class="number">0.8</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">1</span><span class="special">,</span><span class="number">1.4</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.5</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.1</span> <span class="number">1</span><span class="special">,</span><span class="number">0.6</span> <span class="number">0.2</span><span class="special">,</span><span class="number">1.5</span> <span class="number">0.2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">2</span><span class="special">,</span><span class="number">2.4</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.5</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.1</span> <span class="number">2</span><span class="special">,</span><span class="number">1.6</span> <span class="number">1.2</span><span class="special">,</span><span class="number">2.5</span> <span class="number">1.2</span><span class="special">,</span><span class="number">3</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">3</span><span class="special">,</span><span class="number">3.4</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.5</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.1</span> <span class="number">3</span><span class="special">,</span><span class="number">2.6</span> <span class="number">2.2</span><span class="special">,</span><span class="number">3.5</span> <span class="number">2.2</span><span class="special">))</span>
+<span class="identifier">LINESTRING</span><span class="special">(</span><span class="number">5</span> <span class="number">4</span><span class="special">,</span><span class="number">4.4</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.5</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.1</span> <span class="number">4</span><span class="special">,</span><span class="number">3.6</span> <span class="number">3.2</span><span class="special">,</span><span class="number">4.5</span> <span class="number">3.2</span><span class="special">)</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">6</span> <span class="number">5</span><span class="special">,</span><span class="number">5.4</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.5</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.1</span> <span class="number">5</span><span class="special">,</span><span class="number">4.6</span> <span class="number">4.2</span><span class="special">,</span><span class="number">5.5</span> <span class="number">4.2</span><span class="special">))</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">point</span><span class="special">:</span>
+<span class="identifier">POINT</span><span class="special">(</span><span class="number">0</span> <span class="number">0</span><span class="special">)</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">LINESTRING</span><span class="special">(</span><span class="number">5</span> <span class="number">4</span><span class="special">,</span><span class="number">4.4</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.5</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.1</span> <span class="number">4</span><span class="special">,</span><span class="number">3.6</span> <span class="number">3.2</span><span class="special">,</span><span class="number">4.5</span> <span class="number">3.2</span><span class="special">)</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">3</span><span class="special">,</span><span class="number">3.4</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.5</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.1</span> <span class="number">3</span><span class="special">,</span><span class="number">2.6</span> <span class="number">2.2</span><span class="special">,</span><span class="number">3.5</span> <span class="number">2.2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">2</span><span class="special">,</span><span class="number">2.4</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.5</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.1</span> <span class="number">2</span><span class="special">,</span><span class="number">1.6</span> <span class="number">1.2</span><span class="special">,</span><span class="number">2.5</span> <span class="number">1.2</span><span class="special">,</span><span class="number">3</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">0</span><span class="special">,</span><span class="number">0.4</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.5</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.9</span> <span class="number">0</span><span class="special">,-</span><span class="number">0.4</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">0.5</span> <span class="special">-</span><span class="number">0.8</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">1</span><span class="special">,</span><span class="number">1.4</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.5</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.1</span> <span class="number">1</span><span class="special">,</span><span class="number">0.6</span> <span class="number">0.2</span><span class="special">,</span><span class="number">1.5</span> <span class="number">0.2</span><span class="special">))</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="index_of_shared_pointers_to_polygons.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_polygons_stored_in_vector.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_polygons_stored_in_vector.html
new file mode 100644
index 0000000000..14fbb8cd9d
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_polygons_stored_in_vector.html
@@ -0,0 +1,171 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index of polygons stored in vector</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../rtree_examples.html" title="Examples">
+<link rel="prev" href="quick_start.html" title="Quick start">
+<link rel="next" href="index_of_shared_pointers_to_polygons.html" title="Index of shared pointers to polygons">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_start.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index_of_shared_pointers_to_polygons.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.spatial_indexes.rtree_examples.index_of_polygons_stored_in_vector"></a><a class="link" href="index_of_polygons_stored_in_vector.html" title="Index of polygons stored in vector">Index
+ of polygons stored in vector</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cmath</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">box</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span> <span class="comment">// ccw, open polygon</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">&gt;</span> <span class="identifier">value</span><span class="special">;</span>
+
+ <span class="comment">// polygons</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">polygons</span><span class="special">;</span>
+
+ <span class="comment">// create some polygons</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// create a polygon</span>
+ <span class="identifier">polygon</span> <span class="identifier">p</span><span class="special">;</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">float</span> <span class="identifier">a</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">a</span> <span class="special">&lt;</span> <span class="number">6.28316f</span> <span class="special">;</span> <span class="identifier">a</span> <span class="special">+=</span> <span class="number">1.04720f</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">float</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">i</span> <span class="special">+</span> <span class="keyword">int</span><span class="special">(</span><span class="number">10</span><span class="special">*::</span><span class="identifier">cos</span><span class="special">(</span><span class="identifier">a</span><span class="special">))*</span><span class="number">0.1f</span><span class="special">;</span>
+ <span class="keyword">float</span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">i</span> <span class="special">+</span> <span class="keyword">int</span><span class="special">(</span><span class="number">10</span><span class="special">*::</span><span class="identifier">sin</span><span class="special">(</span><span class="identifier">a</span><span class="special">))*</span><span class="number">0.1f</span><span class="special">;</span>
+ <span class="identifier">p</span><span class="special">.</span><span class="identifier">outer</span><span class="special">().</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">));</span>
+ <span class="special">}</span>
+
+ <span class="comment">// add polygon</span>
+ <span class="identifier">polygons</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">p</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="comment">// display polygons</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"generated polygons:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">polygon</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">polygons</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;(</span><span class="identifier">p</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// create the rtree using default constructor</span>
+ <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rstar</span><span class="special">&lt;</span><span class="number">16</span><span class="special">,</span> <span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rtree</span><span class="special">;</span>
+
+ <span class="comment">// fill the spatial index</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">polygons</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// calculate polygon bounding box</span>
+ <span class="identifier">box</span> <span class="identifier">b</span> <span class="special">=</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">return_envelope</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">polygons</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+ <span class="comment">// insert new value</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">i</span><span class="special">));</span>
+ <span class="special">}</span>
+
+ <span class="comment">// find values intersecting some area defined by a box</span>
+ <span class="identifier">box</span> <span class="identifier">query_box</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">5</span><span class="special">));</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_s</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">query_box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_s</span><span class="special">));</span>
+
+ <span class="comment">// find 5 nearest values to a point</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_n</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="number">5</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_n</span><span class="special">));</span>
+
+ <span class="comment">// note: in Boost.Geometry the WKT representation of a box is polygon</span>
+
+ <span class="comment">// note: the values store the bounding boxes of polygons</span>
+ <span class="comment">// the polygons aren't used for querying but are printed</span>
+
+ <span class="comment">// display results</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query box:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">query_box</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_s</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;(</span><span class="identifier">polygons</span><span class="special">[</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">second</span><span class="special">])</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query point:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_n</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;(</span><span class="identifier">polygons</span><span class="special">[</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">second</span><span class="special">])</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.rtree_examples.index_of_polygons_stored_in_vector.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.rtree_examples.index_of_polygons_stored_in_vector.expected_results"></a></span><a class="link" href="index_of_polygons_stored_in_vector.html#geometry.spatial_indexes.rtree_examples.index_of_polygons_stored_in_vector.expected_results">Expected
+ results</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">generated</span> <span class="identifier">polygons</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">0</span><span class="special">,</span><span class="number">0.4</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.5</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.9</span> <span class="number">0</span><span class="special">,-</span><span class="number">0.4</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">0.5</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">1</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">1</span><span class="special">,</span><span class="number">1.4</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.5</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.1</span> <span class="number">1</span><span class="special">,</span><span class="number">0.6</span> <span class="number">0.2</span><span class="special">,</span><span class="number">1.5</span> <span class="number">0.2</span><span class="special">,</span><span class="number">2</span> <span class="number">1</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">2</span><span class="special">,</span><span class="number">2.4</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.5</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.1</span> <span class="number">2</span><span class="special">,</span><span class="number">1.6</span> <span class="number">1.2</span><span class="special">,</span><span class="number">2.5</span> <span class="number">1.2</span><span class="special">,</span><span class="number">3</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">3</span><span class="special">,</span><span class="number">3.4</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.5</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.1</span> <span class="number">3</span><span class="special">,</span><span class="number">2.6</span> <span class="number">2.2</span><span class="special">,</span><span class="number">3.5</span> <span class="number">2.2</span><span class="special">,</span><span class="number">4</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">5</span> <span class="number">4</span><span class="special">,</span><span class="number">4.4</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.5</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.1</span> <span class="number">4</span><span class="special">,</span><span class="number">3.6</span> <span class="number">3.2</span><span class="special">,</span><span class="number">4.5</span> <span class="number">3.2</span><span class="special">,</span><span class="number">5</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">6</span> <span class="number">5</span><span class="special">,</span><span class="number">5.4</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.5</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.1</span> <span class="number">5</span><span class="special">,</span><span class="number">4.6</span> <span class="number">4.2</span><span class="special">,</span><span class="number">5.5</span> <span class="number">4.2</span><span class="special">,</span><span class="number">6</span> <span class="number">5</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">7</span> <span class="number">6</span><span class="special">,</span><span class="number">6.4</span> <span class="number">6.8</span><span class="special">,</span><span class="number">5.5</span> <span class="number">6.8</span><span class="special">,</span><span class="number">5.1</span> <span class="number">6</span><span class="special">,</span><span class="number">5.6</span> <span class="number">5.2</span><span class="special">,</span><span class="number">6.5</span> <span class="number">5.2</span><span class="special">,</span><span class="number">7</span> <span class="number">6</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">8</span> <span class="number">7</span><span class="special">,</span><span class="number">7.4</span> <span class="number">7.8</span><span class="special">,</span><span class="number">6.5</span> <span class="number">7.8</span><span class="special">,</span><span class="number">6.1</span> <span class="number">7</span><span class="special">,</span><span class="number">6.6</span> <span class="number">6.2</span><span class="special">,</span><span class="number">7.5</span> <span class="number">6.2</span><span class="special">,</span><span class="number">8</span> <span class="number">7</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">9</span> <span class="number">8</span><span class="special">,</span><span class="number">8.4</span> <span class="number">8.8</span><span class="special">,</span><span class="number">7.5</span> <span class="number">8.8</span><span class="special">,</span><span class="number">7.1</span> <span class="number">8</span><span class="special">,</span><span class="number">7.6</span> <span class="number">7.2</span><span class="special">,</span><span class="number">8.5</span> <span class="number">7.2</span><span class="special">,</span><span class="number">9</span> <span class="number">8</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">10</span> <span class="number">9</span><span class="special">,</span><span class="number">9.4</span> <span class="number">9.8</span><span class="special">,</span><span class="number">8.5</span> <span class="number">9.8</span><span class="special">,</span><span class="number">8.1</span> <span class="number">9</span><span class="special">,</span><span class="number">8.6</span> <span class="number">8.2</span><span class="special">,</span><span class="number">9.5</span> <span class="number">8.2</span><span class="special">,</span><span class="number">10</span> <span class="number">9</span><span class="special">))</span>
+<span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">box</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">0</span><span class="special">,</span><span class="number">0.4</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.5</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.9</span> <span class="number">0</span><span class="special">,-</span><span class="number">0.4</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">0.5</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">1</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">1</span><span class="special">,</span><span class="number">1.4</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.5</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.1</span> <span class="number">1</span><span class="special">,</span><span class="number">0.6</span> <span class="number">0.2</span><span class="special">,</span><span class="number">1.5</span> <span class="number">0.2</span><span class="special">,</span><span class="number">2</span> <span class="number">1</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">2</span><span class="special">,</span><span class="number">2.4</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.5</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.1</span> <span class="number">2</span><span class="special">,</span><span class="number">1.6</span> <span class="number">1.2</span><span class="special">,</span><span class="number">2.5</span> <span class="number">1.2</span><span class="special">,</span><span class="number">3</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">3</span><span class="special">,</span><span class="number">3.4</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.5</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.1</span> <span class="number">3</span><span class="special">,</span><span class="number">2.6</span> <span class="number">2.2</span><span class="special">,</span><span class="number">3.5</span> <span class="number">2.2</span><span class="special">,</span><span class="number">4</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">5</span> <span class="number">4</span><span class="special">,</span><span class="number">4.4</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.5</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.1</span> <span class="number">4</span><span class="special">,</span><span class="number">3.6</span> <span class="number">3.2</span><span class="special">,</span><span class="number">4.5</span> <span class="number">3.2</span><span class="special">,</span><span class="number">5</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">6</span> <span class="number">5</span><span class="special">,</span><span class="number">5.4</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.5</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.1</span> <span class="number">5</span><span class="special">,</span><span class="number">4.6</span> <span class="number">4.2</span><span class="special">,</span><span class="number">5.5</span> <span class="number">4.2</span><span class="special">,</span><span class="number">6</span> <span class="number">5</span><span class="special">))</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">point</span><span class="special">:</span>
+<span class="identifier">POINT</span><span class="special">(</span><span class="number">0</span> <span class="number">0</span><span class="special">)</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">5</span> <span class="number">4</span><span class="special">,</span><span class="number">4.4</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.5</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.1</span> <span class="number">4</span><span class="special">,</span><span class="number">3.6</span> <span class="number">3.2</span><span class="special">,</span><span class="number">4.5</span> <span class="number">3.2</span><span class="special">,</span><span class="number">5</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">3</span><span class="special">,</span><span class="number">3.4</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.5</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.1</span> <span class="number">3</span><span class="special">,</span><span class="number">2.6</span> <span class="number">2.2</span><span class="special">,</span><span class="number">3.5</span> <span class="number">2.2</span><span class="special">,</span><span class="number">4</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">2</span><span class="special">,</span><span class="number">2.4</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.5</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.1</span> <span class="number">2</span><span class="special">,</span><span class="number">1.6</span> <span class="number">1.2</span><span class="special">,</span><span class="number">2.5</span> <span class="number">1.2</span><span class="special">,</span><span class="number">3</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">0</span><span class="special">,</span><span class="number">0.4</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.5</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.9</span> <span class="number">0</span><span class="special">,-</span><span class="number">0.4</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">0.5</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">1</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">1</span><span class="special">,</span><span class="number">1.4</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.5</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.1</span> <span class="number">1</span><span class="special">,</span><span class="number">0.6</span> <span class="number">0.2</span><span class="special">,</span><span class="number">1.5</span> <span class="number">0.2</span><span class="special">,</span><span class="number">2</span> <span class="number">1</span><span class="special">))</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_start.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index_of_shared_pointers_to_polygons.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_shared_pointers_to_polygons.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_shared_pointers_to_polygons.html
new file mode 100644
index 0000000000..cbcde36bab
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_of_shared_pointers_to_polygons.html
@@ -0,0 +1,163 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index of shared pointers to polygons</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../rtree_examples.html" title="Examples">
+<link rel="prev" href="index_of_polygons_stored_in_vector.html" title="Index of polygons stored in vector">
+<link rel="next" href="index_of_iterators_of_a_map_storing_variant_geometries.html" title="Index of iterators of a map storing variant geometries">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="index_of_polygons_stored_in_vector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index_of_iterators_of_a_map_storing_variant_geometries.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.spatial_indexes.rtree_examples.index_of_shared_pointers_to_polygons"></a><a class="link" href="index_of_shared_pointers_to_polygons.html" title="Index of shared pointers to polygons">Index
+ of shared pointers to polygons</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cmath</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">shared_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">box</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span> <span class="comment">// ccw, open polygon</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;</span> <span class="identifier">shp</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">,</span> <span class="identifier">shp</span><span class="special">&gt;</span> <span class="identifier">value</span><span class="special">;</span>
+
+ <span class="comment">// create the rtree using default constructor</span>
+ <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">linear</span><span class="special">&lt;</span><span class="number">16</span><span class="special">,</span> <span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rtree</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"filling index with polygons shared pointers:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// create some polygons and fill the spatial index</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// create a polygon</span>
+ <span class="identifier">shp</span> <span class="identifier">p</span><span class="special">(</span><span class="keyword">new</span> <span class="identifier">polygon</span><span class="special">());</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">float</span> <span class="identifier">a</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">a</span> <span class="special">&lt;</span> <span class="number">6.28316f</span> <span class="special">;</span> <span class="identifier">a</span> <span class="special">+=</span> <span class="number">1.04720f</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">float</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">i</span> <span class="special">+</span> <span class="keyword">int</span><span class="special">(</span><span class="number">10</span><span class="special">*::</span><span class="identifier">cos</span><span class="special">(</span><span class="identifier">a</span><span class="special">))*</span><span class="number">0.1f</span><span class="special">;</span>
+ <span class="keyword">float</span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">i</span> <span class="special">+</span> <span class="keyword">int</span><span class="special">(</span><span class="number">10</span><span class="special">*::</span><span class="identifier">sin</span><span class="special">(</span><span class="identifier">a</span><span class="special">))*</span><span class="number">0.1f</span><span class="special">;</span>
+ <span class="identifier">p</span><span class="special">-&gt;</span><span class="identifier">outer</span><span class="special">().</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">));</span>
+ <span class="special">}</span>
+
+ <span class="comment">// display new polygon</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;(*</span><span class="identifier">p</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// calculate polygon bounding box</span>
+ <span class="identifier">box</span> <span class="identifier">b</span> <span class="special">=</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">return_envelope</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(*</span><span class="identifier">p</span><span class="special">);</span>
+ <span class="comment">// insert new value</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">p</span><span class="special">));</span>
+ <span class="special">}</span>
+
+ <span class="comment">// find values intersecting some area defined by a box</span>
+ <span class="identifier">box</span> <span class="identifier">query_box</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">5</span><span class="special">));</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_s</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">query_box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_s</span><span class="special">));</span>
+
+ <span class="comment">// find 5 nearest values to a point</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_n</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="number">5</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_n</span><span class="special">));</span>
+
+ <span class="comment">// note: in Boost.Geometry the WKT representation of a box is polygon</span>
+
+ <span class="comment">// note: the values store the bounding boxes of polygons</span>
+ <span class="comment">// the polygons aren't used for querying but are printed</span>
+
+ <span class="comment">// display results</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query box:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">query_box</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_s</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;(*</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">second</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query point:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_n</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;(*</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">second</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.rtree_examples.index_of_shared_pointers_to_polygons.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.rtree_examples.index_of_shared_pointers_to_polygons.expected_results"></a></span><a class="link" href="index_of_shared_pointers_to_polygons.html#geometry.spatial_indexes.rtree_examples.index_of_shared_pointers_to_polygons.expected_results">Expected
+ results</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">filling</span> <span class="identifier">index</span> <span class="identifier">with</span> <span class="identifier">polygons</span> <span class="identifier">shared</span> <span class="identifier">pointers</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">0</span><span class="special">,</span><span class="number">0.4</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.5</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.9</span> <span class="number">0</span><span class="special">,-</span><span class="number">0.4</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">0.5</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">1</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">1</span><span class="special">,</span><span class="number">1.4</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.5</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.1</span> <span class="number">1</span><span class="special">,</span><span class="number">0.6</span> <span class="number">0.2</span><span class="special">,</span><span class="number">1.5</span> <span class="number">0.2</span><span class="special">,</span><span class="number">2</span> <span class="number">1</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">2</span><span class="special">,</span><span class="number">2.4</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.5</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.1</span> <span class="number">2</span><span class="special">,</span><span class="number">1.6</span> <span class="number">1.2</span><span class="special">,</span><span class="number">2.5</span> <span class="number">1.2</span><span class="special">,</span><span class="number">3</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">3</span><span class="special">,</span><span class="number">3.4</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.5</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.1</span> <span class="number">3</span><span class="special">,</span><span class="number">2.6</span> <span class="number">2.2</span><span class="special">,</span><span class="number">3.5</span> <span class="number">2.2</span><span class="special">,</span><span class="number">4</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">5</span> <span class="number">4</span><span class="special">,</span><span class="number">4.4</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.5</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.1</span> <span class="number">4</span><span class="special">,</span><span class="number">3.6</span> <span class="number">3.2</span><span class="special">,</span><span class="number">4.5</span> <span class="number">3.2</span><span class="special">,</span><span class="number">5</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">6</span> <span class="number">5</span><span class="special">,</span><span class="number">5.4</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.5</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.1</span> <span class="number">5</span><span class="special">,</span><span class="number">4.6</span> <span class="number">4.2</span><span class="special">,</span><span class="number">5.5</span> <span class="number">4.2</span><span class="special">,</span><span class="number">6</span> <span class="number">5</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">7</span> <span class="number">6</span><span class="special">,</span><span class="number">6.4</span> <span class="number">6.8</span><span class="special">,</span><span class="number">5.5</span> <span class="number">6.8</span><span class="special">,</span><span class="number">5.1</span> <span class="number">6</span><span class="special">,</span><span class="number">5.6</span> <span class="number">5.2</span><span class="special">,</span><span class="number">6.5</span> <span class="number">5.2</span><span class="special">,</span><span class="number">7</span> <span class="number">6</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">8</span> <span class="number">7</span><span class="special">,</span><span class="number">7.4</span> <span class="number">7.8</span><span class="special">,</span><span class="number">6.5</span> <span class="number">7.8</span><span class="special">,</span><span class="number">6.1</span> <span class="number">7</span><span class="special">,</span><span class="number">6.6</span> <span class="number">6.2</span><span class="special">,</span><span class="number">7.5</span> <span class="number">6.2</span><span class="special">,</span><span class="number">8</span> <span class="number">7</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">9</span> <span class="number">8</span><span class="special">,</span><span class="number">8.4</span> <span class="number">8.8</span><span class="special">,</span><span class="number">7.5</span> <span class="number">8.8</span><span class="special">,</span><span class="number">7.1</span> <span class="number">8</span><span class="special">,</span><span class="number">7.6</span> <span class="number">7.2</span><span class="special">,</span><span class="number">8.5</span> <span class="number">7.2</span><span class="special">,</span><span class="number">9</span> <span class="number">8</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">10</span> <span class="number">9</span><span class="special">,</span><span class="number">9.4</span> <span class="number">9.8</span><span class="special">,</span><span class="number">8.5</span> <span class="number">9.8</span><span class="special">,</span><span class="number">8.1</span> <span class="number">9</span><span class="special">,</span><span class="number">8.6</span> <span class="number">8.2</span><span class="special">,</span><span class="number">9.5</span> <span class="number">8.2</span><span class="special">,</span><span class="number">10</span> <span class="number">9</span><span class="special">))</span>
+<span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">box</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">0</span><span class="special">,</span><span class="number">0.4</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.5</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.9</span> <span class="number">0</span><span class="special">,-</span><span class="number">0.4</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">0.5</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">1</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">1</span><span class="special">,</span><span class="number">1.4</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.5</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.1</span> <span class="number">1</span><span class="special">,</span><span class="number">0.6</span> <span class="number">0.2</span><span class="special">,</span><span class="number">1.5</span> <span class="number">0.2</span><span class="special">,</span><span class="number">2</span> <span class="number">1</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">2</span><span class="special">,</span><span class="number">2.4</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.5</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.1</span> <span class="number">2</span><span class="special">,</span><span class="number">1.6</span> <span class="number">1.2</span><span class="special">,</span><span class="number">2.5</span> <span class="number">1.2</span><span class="special">,</span><span class="number">3</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">3</span><span class="special">,</span><span class="number">3.4</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.5</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.1</span> <span class="number">3</span><span class="special">,</span><span class="number">2.6</span> <span class="number">2.2</span><span class="special">,</span><span class="number">3.5</span> <span class="number">2.2</span><span class="special">,</span><span class="number">4</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">5</span> <span class="number">4</span><span class="special">,</span><span class="number">4.4</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.5</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.1</span> <span class="number">4</span><span class="special">,</span><span class="number">3.6</span> <span class="number">3.2</span><span class="special">,</span><span class="number">4.5</span> <span class="number">3.2</span><span class="special">,</span><span class="number">5</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">6</span> <span class="number">5</span><span class="special">,</span><span class="number">5.4</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.5</span> <span class="number">5.8</span><span class="special">,</span><span class="number">4.1</span> <span class="number">5</span><span class="special">,</span><span class="number">4.6</span> <span class="number">4.2</span><span class="special">,</span><span class="number">5.5</span> <span class="number">4.2</span><span class="special">,</span><span class="number">6</span> <span class="number">5</span><span class="special">))</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">point</span><span class="special">:</span>
+<span class="identifier">POINT</span><span class="special">(</span><span class="number">0</span> <span class="number">0</span><span class="special">)</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">5</span> <span class="number">4</span><span class="special">,</span><span class="number">4.4</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.5</span> <span class="number">4.8</span><span class="special">,</span><span class="number">3.1</span> <span class="number">4</span><span class="special">,</span><span class="number">3.6</span> <span class="number">3.2</span><span class="special">,</span><span class="number">4.5</span> <span class="number">3.2</span><span class="special">,</span><span class="number">5</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">3</span><span class="special">,</span><span class="number">3.4</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.5</span> <span class="number">3.8</span><span class="special">,</span><span class="number">2.1</span> <span class="number">3</span><span class="special">,</span><span class="number">2.6</span> <span class="number">2.2</span><span class="special">,</span><span class="number">3.5</span> <span class="number">2.2</span><span class="special">,</span><span class="number">4</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">2</span><span class="special">,</span><span class="number">2.4</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.5</span> <span class="number">2.8</span><span class="special">,</span><span class="number">1.1</span> <span class="number">2</span><span class="special">,</span><span class="number">1.6</span> <span class="number">1.2</span><span class="special">,</span><span class="number">2.5</span> <span class="number">1.2</span><span class="special">,</span><span class="number">3</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">0</span><span class="special">,</span><span class="number">0.4</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.5</span> <span class="number">0.8</span><span class="special">,-</span><span class="number">0.9</span> <span class="number">0</span><span class="special">,-</span><span class="number">0.4</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">0.5</span> <span class="special">-</span><span class="number">0.8</span><span class="special">,</span><span class="number">1</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">1</span><span class="special">,</span><span class="number">1.4</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.5</span> <span class="number">1.8</span><span class="special">,</span><span class="number">0.1</span> <span class="number">1</span><span class="special">,</span><span class="number">0.6</span> <span class="number">0.2</span><span class="special">,</span><span class="number">1.5</span> <span class="number">0.2</span><span class="special">,</span><span class="number">2</span> <span class="number">1</span><span class="special">))</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="index_of_polygons_stored_in_vector.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index_of_iterators_of_a_map_storing_variant_geometries.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_stored_in_mapped_file_using_boost_interprocess.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_stored_in_mapped_file_using_boost_interprocess.html
new file mode 100644
index 0000000000..7751f232c4
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_stored_in_mapped_file_using_boost_interprocess.html
@@ -0,0 +1,112 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index stored in mapped file using Boost.Interprocess</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../rtree_examples.html" title="Examples">
+<link rel="prev" href="index_stored_in_shared_memory_using_boost_interprocess.html" title="Index stored in shared memory using Boost.Interprocess">
+<link rel="next" href="../../reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="index_stored_in_shared_memory_using_boost_interprocess.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../reference.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.spatial_indexes.rtree_examples.index_stored_in_mapped_file_using_boost_interprocess"></a><a class="link" href="index_stored_in_mapped_file_using_boost_interprocess.html" title="Index stored in mapped file using Boost.Interprocess">Index
+ stored in mapped file using Boost.Interprocess</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interprocess</span><span class="special">/</span><span class="identifier">managed_mapped_file</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">interprocess</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bgm</span> <span class="special">=</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">bgm</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">point_t</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">point_t</span> <span class="identifier">value_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">linear</span><span class="special">&lt;</span><span class="number">32</span><span class="special">,</span> <span class="number">8</span><span class="special">&gt;</span> <span class="identifier">params_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">indexable</span><span class="special">&lt;</span><span class="identifier">value_t</span><span class="special">&gt;</span> <span class="identifier">indexable_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span><span class="identifier">value_t</span><span class="special">&gt;</span> <span class="identifier">equal_to_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bi</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">value_t</span><span class="special">,</span> <span class="identifier">bi</span><span class="special">::</span><span class="identifier">managed_mapped_file</span><span class="special">::</span><span class="identifier">segment_manager</span><span class="special">&gt;</span> <span class="identifier">allocator_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span><span class="identifier">value_t</span><span class="special">,</span> <span class="identifier">params_t</span><span class="special">,</span> <span class="identifier">indexable_t</span><span class="special">,</span> <span class="identifier">equal_to_t</span><span class="special">,</span> <span class="identifier">allocator_t</span><span class="special">&gt;</span> <span class="identifier">rtree_t</span><span class="special">;</span>
+
+ <span class="special">{</span>
+ <span class="identifier">bi</span><span class="special">::</span><span class="identifier">managed_mapped_file</span> <span class="identifier">file</span><span class="special">(</span><span class="identifier">bi</span><span class="special">::</span><span class="identifier">open_or_create</span><span class="special">,</span> <span class="string">"data.bin"</span><span class="special">,</span> <span class="number">1024</span><span class="special">*</span><span class="number">1024</span><span class="special">);</span>
+ <span class="identifier">allocator_t</span> <span class="identifier">alloc</span><span class="special">(</span><span class="identifier">file</span><span class="special">.</span><span class="identifier">get_segment_manager</span><span class="special">());</span>
+ <span class="identifier">rtree_t</span> <span class="special">*</span> <span class="identifier">rtree_ptr</span> <span class="special">=</span> <span class="identifier">file</span><span class="special">.</span><span class="identifier">find_or_construct</span><span class="special">&lt;</span><span class="identifier">rtree_t</span><span class="special">&gt;(</span><span class="string">"rtree"</span><span class="special">)(</span><span class="identifier">params_t</span><span class="special">(),</span> <span class="identifier">indexable_t</span><span class="special">(),</span> <span class="identifier">equal_to_t</span><span class="special">(),</span> <span class="identifier">alloc</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">rtree_ptr</span><span class="special">-&gt;</span><span class="identifier">size</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">rtree_ptr</span><span class="special">-&gt;</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">point_t</span><span class="special">(</span><span class="number">1.0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">));</span>
+ <span class="identifier">rtree_ptr</span><span class="special">-&gt;</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">point_t</span><span class="special">(</span><span class="number">2.0</span><span class="special">,</span> <span class="number">2.0</span><span class="special">));</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">rtree_ptr</span><span class="special">-&gt;</span><span class="identifier">size</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="special">{</span>
+ <span class="identifier">bi</span><span class="special">::</span><span class="identifier">managed_mapped_file</span> <span class="identifier">file</span><span class="special">(</span><span class="identifier">bi</span><span class="special">::</span><span class="identifier">open_or_create</span><span class="special">,</span> <span class="string">"data.bin"</span><span class="special">,</span> <span class="number">1024</span><span class="special">*</span><span class="number">1024</span><span class="special">);</span>
+ <span class="identifier">allocator_t</span> <span class="identifier">alloc</span><span class="special">(</span><span class="identifier">file</span><span class="special">.</span><span class="identifier">get_segment_manager</span><span class="special">());</span>
+ <span class="identifier">rtree_t</span> <span class="special">*</span> <span class="identifier">rtree_ptr</span> <span class="special">=</span> <span class="identifier">file</span><span class="special">.</span><span class="identifier">find_or_construct</span><span class="special">&lt;</span><span class="identifier">rtree_t</span><span class="special">&gt;(</span><span class="string">"rtree"</span><span class="special">)(</span><span class="identifier">params_t</span><span class="special">(),</span> <span class="identifier">indexable_t</span><span class="special">(),</span> <span class="identifier">equal_to_t</span><span class="special">(),</span> <span class="identifier">alloc</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">rtree_ptr</span><span class="special">-&gt;</span><span class="identifier">size</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">rtree_ptr</span><span class="special">-&gt;</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">point_t</span><span class="special">(</span><span class="number">3.0</span><span class="special">,</span> <span class="number">3.0</span><span class="special">));</span>
+ <span class="identifier">rtree_ptr</span><span class="special">-&gt;</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">point_t</span><span class="special">(</span><span class="number">4.0</span><span class="special">,</span> <span class="number">4.0</span><span class="special">));</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">rtree_ptr</span><span class="special">-&gt;</span><span class="identifier">size</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.rtree_examples.index_stored_in_mapped_file_using_boost_interprocess.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.rtree_examples.index_stored_in_mapped_file_using_boost_interprocess.expected_results"></a></span><a class="link" href="index_stored_in_mapped_file_using_boost_interprocess.html#geometry.spatial_indexes.rtree_examples.index_stored_in_mapped_file_using_boost_interprocess.expected_results">Expected
+ results</a>
+ </h5>
+<pre class="programlisting"><span class="number">0</span>
+<span class="number">2</span>
+<span class="number">2</span>
+<span class="number">4</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="index_stored_in_shared_memory_using_boost_interprocess.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../reference.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_stored_in_shared_memory_using_boost_interprocess.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_stored_in_shared_memory_using_boost_interprocess.html
new file mode 100644
index 0000000000..b4172289a1
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/index_stored_in_shared_memory_using_boost_interprocess.html
@@ -0,0 +1,177 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index stored in shared memory using Boost.Interprocess</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../rtree_examples.html" title="Examples">
+<link rel="prev" href="iterative_query.html" title="Iterative query">
+<link rel="next" href="index_stored_in_mapped_file_using_boost_interprocess.html" title="Index stored in mapped file using Boost.Interprocess">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="iterative_query.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index_stored_in_mapped_file_using_boost_interprocess.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.spatial_indexes.rtree_examples.index_stored_in_shared_memory_using_boost_interprocess"></a><a class="link" href="index_stored_in_shared_memory_using_boost_interprocess.html" title="Index stored in shared memory using Boost.Interprocess">Index
+ stored in shared memory using Boost.Interprocess</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interprocess</span><span class="special">/</span><span class="identifier">managed_shared_memory</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interprocess</span><span class="special">/</span><span class="identifier">allocators</span><span class="special">/</span><span class="identifier">allocator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cstdlib</span><span class="special">&gt;</span> <span class="comment">//std::system</span>
+
+<span class="comment">//For parent process argc == 1, for child process argc &gt; 1</span>
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span> <span class="special">*</span><span class="identifier">argv</span><span class="special">[])</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">interprocess</span><span class="special">;</span>
+ <span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+ <span class="keyword">namespace</span> <span class="identifier">bgm</span> <span class="special">=</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">;</span>
+ <span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">bgm</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">P</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bgm</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">&gt;</span> <span class="identifier">B</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">linear</span><span class="special">&lt;</span><span class="number">32</span><span class="special">,</span> <span class="number">8</span><span class="special">&gt;</span> <span class="identifier">Par</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">indexable</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;</span> <span class="identifier">I</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;</span> <span class="identifier">E</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">,</span> <span class="identifier">managed_shared_memory</span><span class="special">::</span><span class="identifier">segment_manager</span><span class="special">&gt;</span> <span class="identifier">Alloc</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">,</span> <span class="identifier">Par</span><span class="special">,</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">E</span><span class="special">,</span> <span class="identifier">Alloc</span><span class="special">&gt;</span> <span class="identifier">Rtree</span><span class="special">;</span>
+
+ <span class="comment">//Parent process</span>
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">argc</span> <span class="special">==</span> <span class="number">1</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">shm_remove</span>
+ <span class="special">{</span>
+ <span class="identifier">shm_remove</span><span class="special">()</span> <span class="special">{</span> <span class="identifier">shared_memory_object</span><span class="special">::</span><span class="identifier">remove</span><span class="special">(</span><span class="string">"MySharedMemory"</span><span class="special">);</span> <span class="special">}</span>
+ <span class="special">~</span><span class="identifier">shm_remove</span><span class="special">(){</span> <span class="identifier">shared_memory_object</span><span class="special">::</span><span class="identifier">remove</span><span class="special">(</span><span class="string">"MySharedMemory"</span><span class="special">);</span> <span class="special">}</span>
+ <span class="special">}</span> <span class="identifier">remover</span><span class="special">;</span>
+
+ <span class="identifier">managed_shared_memory</span> <span class="identifier">segment</span><span class="special">(</span><span class="identifier">create_only</span><span class="special">,</span> <span class="string">"MySharedMemory"</span><span class="special">,</span> <span class="number">65536</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Parent: Constructing container\n"</span><span class="special">;</span>
+
+ <span class="identifier">Rtree</span> <span class="special">*</span> <span class="identifier">tree</span> <span class="special">=</span> <span class="identifier">segment</span><span class="special">.</span><span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">Rtree</span><span class="special">&gt;(</span><span class="string">"Rtree"</span><span class="special">)(</span><span class="identifier">Par</span><span class="special">(),</span> <span class="identifier">I</span><span class="special">(),</span> <span class="identifier">E</span><span class="special">(),</span> <span class="identifier">Alloc</span><span class="special">(</span><span class="identifier">segment</span><span class="special">.</span><span class="identifier">get_segment_manager</span><span class="special">()));</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Parent: Filling container with 100 boxes\n"</span><span class="special">;</span>
+
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">float</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">100</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">+=</span> <span class="number">1</span> <span class="special">)</span>
+ <span class="identifier">tree</span><span class="special">-&gt;</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">B</span><span class="special">(</span><span class="identifier">P</span><span class="special">(</span><span class="identifier">i</span><span class="special">,</span> <span class="identifier">i</span><span class="special">),</span> <span class="identifier">P</span><span class="special">(</span><span class="identifier">i</span><span class="special">+</span><span class="number">0.5f</span><span class="special">,</span> <span class="identifier">i</span><span class="special">+</span><span class="number">0.5f</span><span class="special">)));</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Parent: Tree content\n"</span><span class="special">;</span>
+ <span class="identifier">Rtree</span><span class="special">::</span><span class="identifier">bounds_type</span> <span class="identifier">bb</span> <span class="special">=</span> <span class="identifier">tree</span><span class="special">-&gt;</span><span class="identifier">bounds</span><span class="special">();</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"[("</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">get</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;(</span><span class="identifier">bb</span><span class="special">.</span><span class="identifier">min_corner</span><span class="special">())</span> <span class="special">&lt;&lt;</span> <span class="string">", "</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">get</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;(</span><span class="identifier">bb</span><span class="special">.</span><span class="identifier">min_corner</span><span class="special">())</span>
+ <span class="special">&lt;&lt;</span> <span class="string">")("</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">get</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;(</span><span class="identifier">bb</span><span class="special">.</span><span class="identifier">max_corner</span><span class="special">())</span> <span class="special">&lt;&lt;</span> <span class="string">", "</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">get</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;(</span><span class="identifier">bb</span><span class="special">.</span><span class="identifier">max_corner</span><span class="special">())</span> <span class="special">&lt;&lt;</span> <span class="string">")]\n"</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Parent: Running child process\n"</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">(</span><span class="identifier">argv</span><span class="special">[</span><span class="number">0</span><span class="special">]);</span> <span class="identifier">s</span> <span class="special">+=</span> <span class="string">" child "</span><span class="special">;</span>
+ <span class="keyword">if</span> <span class="special">(</span> <span class="number">0</span> <span class="special">!=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">system</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">())</span> <span class="special">)</span>
+ <span class="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">segment</span><span class="special">.</span><span class="identifier">find</span><span class="special">&lt;</span><span class="identifier">Rtree</span><span class="special">&gt;(</span><span class="string">"Rtree"</span><span class="special">).</span><span class="identifier">first</span> <span class="special">)</span>
+ <span class="keyword">return</span> <span class="number">1</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Parent: Container was properly destroyed by the child process\n"</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="comment">//Child process</span>
+ <span class="keyword">else</span>
+ <span class="special">{</span>
+ <span class="identifier">managed_shared_memory</span> <span class="identifier">segment</span><span class="special">(</span><span class="identifier">open_only</span><span class="special">,</span> <span class="string">"MySharedMemory"</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Child: Searching of the container in shared memory\n"</span><span class="special">;</span>
+
+ <span class="identifier">Rtree</span> <span class="special">*</span> <span class="identifier">tree</span> <span class="special">=</span> <span class="identifier">segment</span><span class="special">.</span><span class="identifier">find</span><span class="special">&lt;</span><span class="identifier">Rtree</span><span class="special">&gt;(</span><span class="string">"Rtree"</span><span class="special">).</span><span class="identifier">first</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Child: Querying for objects intersecting box = [(45, 45)(55, 55)]\n"</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">&gt;</span> <span class="identifier">result</span><span class="special">;</span>
+ <span class="keyword">unsigned</span> <span class="identifier">k</span> <span class="special">=</span> <span class="identifier">tree</span><span class="special">-&gt;</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">B</span><span class="special">(</span><span class="identifier">P</span><span class="special">(</span><span class="number">45</span><span class="special">,</span> <span class="number">45</span><span class="special">),</span> <span class="identifier">P</span><span class="special">(</span><span class="number">55</span><span class="special">,</span> <span class="number">55</span><span class="special">))),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Child: Found objects:\n"</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">k</span> <span class="special">&lt;&lt;</span> <span class="string">"\n"</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">B</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">result</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"[("</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">get</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;(</span><span class="identifier">b</span><span class="special">.</span><span class="identifier">min_corner</span><span class="special">())</span> <span class="special">&lt;&lt;</span> <span class="string">", "</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">get</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;(</span><span class="identifier">b</span><span class="special">.</span><span class="identifier">min_corner</span><span class="special">())</span>
+ <span class="special">&lt;&lt;</span> <span class="string">")("</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">get</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;(</span><span class="identifier">b</span><span class="special">.</span><span class="identifier">max_corner</span><span class="special">())</span> <span class="special">&lt;&lt;</span> <span class="string">", "</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">get</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;(</span><span class="identifier">b</span><span class="special">.</span><span class="identifier">max_corner</span><span class="special">())</span> <span class="special">&lt;&lt;</span> <span class="string">")]\n"</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"\n"</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Child: Destroying container\n"</span><span class="special">;</span>
+
+ <span class="identifier">segment</span><span class="special">.</span><span class="identifier">destroy</span><span class="special">&lt;</span><span class="identifier">Rtree</span><span class="special">&gt;(</span><span class="string">"Rtree"</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.rtree_examples.index_stored_in_shared_memory_using_boost_interprocess.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.rtree_examples.index_stored_in_shared_memory_using_boost_interprocess.expected_results"></a></span><a class="link" href="index_stored_in_shared_memory_using_boost_interprocess.html#geometry.spatial_indexes.rtree_examples.index_stored_in_shared_memory_using_boost_interprocess.expected_results">Expected
+ results</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">Parent</span><span class="special">:</span> <span class="identifier">Constructing</span> <span class="identifier">container</span>
+<span class="identifier">Parent</span><span class="special">:</span> <span class="identifier">Filling</span> <span class="identifier">container</span> <span class="identifier">with</span> <span class="number">100</span> <span class="identifier">boxes</span>
+<span class="identifier">Parent</span><span class="special">:</span> <span class="identifier">Tree</span> <span class="identifier">content</span>
+<span class="special">[(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">)(</span><span class="number">99.5</span><span class="special">,</span> <span class="number">99.5</span><span class="special">)]</span>
+<span class="identifier">Parent</span><span class="special">:</span> <span class="identifier">Running</span> <span class="identifier">child</span> <span class="identifier">process</span>
+<span class="identifier">Child</span><span class="special">:</span> <span class="identifier">Searching</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">container</span> <span class="identifier">in</span> <span class="identifier">shared</span> <span class="identifier">memory</span>
+<span class="identifier">Child</span><span class="special">:</span> <span class="identifier">Querying</span> <span class="keyword">for</span> <span class="identifier">objects</span> <span class="identifier">intersecting</span> <span class="identifier">box</span> <span class="special">=</span> <span class="special">[(</span><span class="number">45</span><span class="special">,</span> <span class="number">45</span><span class="special">)(</span><span class="number">55</span><span class="special">,</span> <span class="number">55</span><span class="special">)]</span>
+<span class="identifier">Child</span><span class="special">:</span> <span class="identifier">Found</span> <span class="identifier">objects</span><span class="special">:</span>
+<span class="number">11</span>
+<span class="special">[(</span><span class="number">45</span><span class="special">,</span> <span class="number">45</span><span class="special">)(</span><span class="number">45.5</span><span class="special">,</span> <span class="number">45.5</span><span class="special">)]</span>
+<span class="special">[(</span><span class="number">46</span><span class="special">,</span> <span class="number">46</span><span class="special">)(</span><span class="number">46.5</span><span class="special">,</span> <span class="number">46.5</span><span class="special">)]</span>
+<span class="special">[(</span><span class="number">47</span><span class="special">,</span> <span class="number">47</span><span class="special">)(</span><span class="number">47.5</span><span class="special">,</span> <span class="number">47.5</span><span class="special">)]</span>
+<span class="special">[(</span><span class="number">48</span><span class="special">,</span> <span class="number">48</span><span class="special">)(</span><span class="number">48.5</span><span class="special">,</span> <span class="number">48.5</span><span class="special">)]</span>
+<span class="special">[(</span><span class="number">49</span><span class="special">,</span> <span class="number">49</span><span class="special">)(</span><span class="number">49.5</span><span class="special">,</span> <span class="number">49.5</span><span class="special">)]</span>
+<span class="special">[(</span><span class="number">50</span><span class="special">,</span> <span class="number">50</span><span class="special">)(</span><span class="number">50.5</span><span class="special">,</span> <span class="number">50.5</span><span class="special">)]</span>
+<span class="special">[(</span><span class="number">51</span><span class="special">,</span> <span class="number">51</span><span class="special">)(</span><span class="number">51.5</span><span class="special">,</span> <span class="number">51.5</span><span class="special">)]</span>
+<span class="special">[(</span><span class="number">52</span><span class="special">,</span> <span class="number">52</span><span class="special">)(</span><span class="number">52.5</span><span class="special">,</span> <span class="number">52.5</span><span class="special">)]</span>
+<span class="special">[(</span><span class="number">53</span><span class="special">,</span> <span class="number">53</span><span class="special">)(</span><span class="number">53.5</span><span class="special">,</span> <span class="number">53.5</span><span class="special">)]</span>
+<span class="special">[(</span><span class="number">54</span><span class="special">,</span> <span class="number">54</span><span class="special">)(</span><span class="number">54.5</span><span class="special">,</span> <span class="number">54.5</span><span class="special">)]</span>
+<span class="special">[(</span><span class="number">55</span><span class="special">,</span> <span class="number">55</span><span class="special">)(</span><span class="number">55.5</span><span class="special">,</span> <span class="number">55.5</span><span class="special">)]</span>
+
+<span class="identifier">Child</span><span class="special">:</span> <span class="identifier">Destroying</span> <span class="identifier">container</span>
+<span class="identifier">Parent</span><span class="special">:</span> <span class="identifier">Container</span> <span class="identifier">was</span> <span class="identifier">properly</span> <span class="identifier">destroyed</span> <span class="identifier">by</span> <span class="identifier">the</span> <span class="identifier">child</span> <span class="identifier">process</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="iterative_query.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index_stored_in_mapped_file_using_boost_interprocess.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/iterative_query.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/iterative_query.html
new file mode 100644
index 0000000000..05acd8575e
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/iterative_query.html
@@ -0,0 +1,112 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Iterative query</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../rtree_examples.html" title="Examples">
+<link rel="prev" href="range_adaptors.html" title="Range adaptors">
+<link rel="next" href="index_stored_in_shared_memory_using_boost_interprocess.html" title="Index stored in shared memory using Boost.Interprocess">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="range_adaptors.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index_stored_in_shared_memory_using_boost_interprocess.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.spatial_indexes.rtree_examples.iterative_query"></a><a class="link" href="iterative_query.html" title="Iterative query">Iterative
+ query</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="comment">// just for output</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">point</span> <span class="identifier">value</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">linear</span><span class="special">&lt;</span><span class="number">16</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rtree_t</span><span class="special">;</span>
+
+ <span class="comment">// create the rtree using default constructor</span>
+ <span class="identifier">rtree_t</span> <span class="identifier">rtree</span><span class="special">;</span>
+
+ <span class="comment">// create some values</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">double</span> <span class="identifier">f</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">f</span> <span class="special">&lt;</span> <span class="number">10</span> <span class="special">;</span> <span class="identifier">f</span> <span class="special">+=</span> <span class="number">1</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// insert new value</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">f</span><span class="special">));</span>
+ <span class="special">}</span>
+
+ <span class="comment">// query point</span>
+ <span class="identifier">point</span> <span class="identifier">pt</span><span class="special">(</span><span class="number">5.1</span><span class="special">,</span> <span class="number">5.1</span><span class="special">);</span>
+
+ <span class="comment">// iterate over nearest Values</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="identifier">rtree_t</span><span class="special">::</span><span class="identifier">const_query_iterator</span>
+ <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">qbegin</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="number">100</span><span class="special">))</span> <span class="special">;</span>
+ <span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">qend</span><span class="special">()</span> <span class="special">;</span>
+ <span class="special">++</span><span class="identifier">it</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">pt</span><span class="special">,</span> <span class="special">*</span><span class="identifier">it</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">(*</span><span class="identifier">it</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">", distance= "</span> <span class="special">&lt;&lt;</span> <span class="identifier">d</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// break if the distance is too big</span>
+ <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">d</span> <span class="special">&gt;</span> <span class="number">2</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"break!"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">break</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.rtree_examples.iterative_query.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.rtree_examples.iterative_query.expected_results"></a></span><a class="link" href="iterative_query.html#geometry.spatial_indexes.rtree_examples.iterative_query.expected_results">Expected
+ results</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">POINT</span><span class="special">(</span><span class="number">5</span> <span class="number">5</span><span class="special">),</span> <span class="identifier">distance</span><span class="special">=</span> <span class="number">0.141421</span>
+<span class="identifier">POINT</span><span class="special">(</span><span class="number">6</span> <span class="number">6</span><span class="special">),</span> <span class="identifier">distance</span><span class="special">=</span> <span class="number">1.27279</span>
+<span class="identifier">POINT</span><span class="special">(</span><span class="number">4</span> <span class="number">4</span><span class="special">),</span> <span class="identifier">distance</span><span class="special">=</span> <span class="number">1.55563</span>
+<span class="identifier">POINT</span><span class="special">(</span><span class="number">7</span> <span class="number">7</span><span class="special">),</span> <span class="identifier">distance</span><span class="special">=</span> <span class="number">2.68701</span>
+<span class="keyword">break</span><span class="special">!</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="range_adaptors.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index_stored_in_shared_memory_using_boost_interprocess.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/quick_start.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/quick_start.html
new file mode 100644
index 0000000000..67a529fbc0
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/quick_start.html
@@ -0,0 +1,133 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Quick start</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../rtree_examples.html" title="Examples">
+<link rel="prev" href="../rtree_examples.html" title="Examples">
+<link rel="next" href="index_of_polygons_stored_in_vector.html" title="Index of polygons stored in vector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index_of_polygons_stored_in_vector.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.spatial_indexes.rtree_examples.quick_start"></a><a class="link" href="quick_start.html" title="Quick start">Quick
+ start</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="comment">// to store queries results</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+
+<span class="comment">// just for output</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">box</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">&gt;</span> <span class="identifier">value</span><span class="special">;</span>
+
+ <span class="comment">// create the rtree using default constructor</span>
+ <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">quadratic</span><span class="special">&lt;</span><span class="number">16</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rtree</span><span class="special">;</span>
+
+ <span class="comment">// create some values</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// create a box</span>
+ <span class="identifier">box</span> <span class="identifier">b</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="identifier">i</span> <span class="special">+</span> <span class="number">0.0f</span><span class="special">,</span> <span class="identifier">i</span> <span class="special">+</span> <span class="number">0.0f</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="identifier">i</span> <span class="special">+</span> <span class="number">0.5f</span><span class="special">,</span> <span class="identifier">i</span> <span class="special">+</span> <span class="number">0.5f</span><span class="special">));</span>
+ <span class="comment">// insert new value</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">i</span><span class="special">));</span>
+ <span class="special">}</span>
+
+ <span class="comment">// find values intersecting some area defined by a box</span>
+ <span class="identifier">box</span> <span class="identifier">query_box</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">5</span><span class="special">));</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_s</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">query_box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_s</span><span class="special">));</span>
+
+ <span class="comment">// find 5 nearest values to a point</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_n</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="number">5</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_n</span><span class="special">));</span>
+
+ <span class="comment">// note: in Boost.Geometry WKT representation of a box is polygon</span>
+
+ <span class="comment">// display results</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query box:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">query_box</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_s</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">first</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">" - "</span> <span class="special">&lt;&lt;</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">second</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query point:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_n</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">first</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">" - "</span> <span class="special">&lt;&lt;</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">second</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.rtree_examples.quick_start.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.rtree_examples.quick_start.expected_results"></a></span><a class="link" href="quick_start.html#geometry.spatial_indexes.rtree_examples.quick_start.expected_results">Expected
+ results</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">box</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span> <span class="special">-</span> <span class="number">0</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1</span><span class="special">))</span> <span class="special">-</span> <span class="number">1</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2</span><span class="special">))</span> <span class="special">-</span> <span class="number">2</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3</span><span class="special">))</span> <span class="special">-</span> <span class="number">3</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4</span><span class="special">))</span> <span class="special">-</span> <span class="number">4</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5.5</span><span class="special">,</span><span class="number">5.5</span> <span class="number">5.5</span><span class="special">,</span><span class="number">5.5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5</span><span class="special">))</span> <span class="special">-</span> <span class="number">5</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">point</span><span class="special">:</span>
+<span class="identifier">POINT</span><span class="special">(</span><span class="number">0</span> <span class="number">0</span><span class="special">)</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4</span><span class="special">))</span> <span class="special">-</span> <span class="number">4</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3</span><span class="special">))</span> <span class="special">-</span> <span class="number">3</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2</span><span class="special">))</span> <span class="special">-</span> <span class="number">2</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span> <span class="special">-</span> <span class="number">0</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1</span><span class="special">))</span> <span class="special">-</span> <span class="number">1</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="index_of_polygons_stored_in_vector.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/range_adaptors.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/range_adaptors.html
new file mode 100644
index 0000000000..dc5f74dbce
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/range_adaptors.html
@@ -0,0 +1,122 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Range adaptors</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../rtree_examples.html" title="Examples">
+<link rel="prev" href="using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html" title="Using IndexableGetter function object - storing indexes of external container's elements">
+<link rel="next" href="iterative_query.html" title="Iterative query">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="iterative_query.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.spatial_indexes.rtree_examples.range_adaptors"></a><a class="link" href="range_adaptors.html" title="Range adaptors">Range
+ adaptors</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="comment">// Boost.Range</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="comment">// adaptors</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">adaptor</span><span class="special">/</span><span class="identifier">indexed</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">adaptor</span><span class="special">/</span><span class="identifier">transformed</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="comment">// a container</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+
+<span class="comment">// just for output</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+
+<span class="comment">// Define a function object converting a value_type of indexed Range into std::pair&lt;&gt;.</span>
+<span class="comment">// This is a generic implementation but of course it'd be possible to use some</span>
+<span class="comment">// specific types. One could also take Value as template parameter and access</span>
+<span class="comment">// first_type and second_type members, etc.</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">First</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Second</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">pair_maker</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">First</span><span class="special">,</span> <span class="identifier">Second</span><span class="special">&gt;</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">result_type</span><span class="special">(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">value</span><span class="special">(),</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">index</span><span class="special">());</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">box</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;</span> <span class="identifier">container</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">container</span><span class="special">::</span><span class="identifier">size_type</span> <span class="identifier">size_type</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">,</span> <span class="identifier">size_type</span><span class="special">&gt;</span> <span class="identifier">value</span><span class="special">;</span>
+
+ <span class="comment">// create a container of boxes</span>
+ <span class="identifier">container</span> <span class="identifier">boxes</span><span class="special">;</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="identifier">size_type</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// add a box into the container</span>
+ <span class="identifier">box</span> <span class="identifier">b</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="identifier">i</span> <span class="special">+</span> <span class="number">0.0f</span><span class="special">,</span> <span class="identifier">i</span> <span class="special">+</span> <span class="number">0.0f</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="identifier">i</span> <span class="special">+</span> <span class="number">0.5f</span><span class="special">,</span> <span class="identifier">i</span> <span class="special">+</span> <span class="number">0.5f</span><span class="special">));</span>
+ <span class="identifier">boxes</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">b</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="comment">// create the rtree using default constructor</span>
+ <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">quadratic</span><span class="special">&lt;</span><span class="number">16</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="identifier">rtree</span><span class="special">(</span><span class="identifier">boxes</span> <span class="special">|</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">indexed</span><span class="special">()</span>
+ <span class="special">|</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">transformed</span><span class="special">(</span><span class="identifier">pair_maker</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">,</span> <span class="identifier">size_type</span><span class="special">&gt;()));</span>
+
+ <span class="comment">// print the number of values using boxes[0] as indexable</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">count</span><span class="special">(</span><span class="identifier">boxes</span><span class="special">[</span><span class="number">0</span><span class="special">])</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.rtree_examples.range_adaptors.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.rtree_examples.range_adaptors.expected_results"></a></span><a class="link" href="range_adaptors.html#geometry.spatial_indexes.rtree_examples.range_adaptors.expected_results">Expected
+ results</a>
+ </h5>
+<pre class="programlisting"><span class="number">1</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="iterative_query.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html
new file mode 100644
index 0000000000..99bc305e22
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html
@@ -0,0 +1,163 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Specializing index::indexable function object - storing shared pointers in the rtree</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../rtree_examples.html" title="Examples">
+<link rel="prev" href="index_of_iterators_of_a_map_storing_variant_geometries.html" title="Index of iterators of a map storing variant geometries">
+<link rel="next" href="using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html" title="Using IndexableGetter function object - storing indexes of external container's elements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="index_of_iterators_of_a_map_storing_variant_geometries.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.spatial_indexes.rtree_examples.specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree"></a><a class="link" href="specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html" title="Specializing index::indexable function object - storing shared pointers in the rtree">Specializing
+ index::indexable function object - storing shared pointers in the rtree</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cmath</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">shared_ptr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">geometry</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">index</span> <span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Box</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">indexable</span><span class="special">&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">Box</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">Box</span><span class="special">&gt;</span> <span class="identifier">V</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">Box</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">V</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="special">*</span><span class="identifier">v</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="special">}}}</span> <span class="comment">// namespace boost::geometry::index</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">box</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;</span> <span class="identifier">shp</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">shp</span> <span class="identifier">value</span><span class="special">;</span>
+
+ <span class="comment">// create the rtree using default constructor</span>
+ <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">linear</span><span class="special">&lt;</span><span class="number">16</span><span class="special">,</span> <span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rtree</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"filling index with boxes shared pointers:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// fill the spatial index</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// create a box</span>
+ <span class="identifier">shp</span> <span class="identifier">b</span><span class="special">(</span><span class="keyword">new</span> <span class="identifier">box</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="identifier">i</span><span class="special">+</span><span class="number">0.0f</span><span class="special">,</span> <span class="identifier">i</span><span class="special">+</span><span class="number">0.0f</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="identifier">i</span><span class="special">+</span><span class="number">0.5f</span><span class="special">,</span> <span class="identifier">i</span><span class="special">+</span><span class="number">0.5f</span><span class="special">)));</span>
+
+ <span class="comment">// display new box</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(*</span><span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// insert new value</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">b</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="comment">// find values intersecting some area defined by a box</span>
+ <span class="identifier">box</span> <span class="identifier">query_box</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">5</span><span class="special">));</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_s</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">query_box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_s</span><span class="special">));</span>
+
+ <span class="comment">// find 5 nearest values to a point</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_n</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="number">5</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_n</span><span class="special">));</span>
+
+ <span class="comment">// note: in Boost.Geometry the WKT representation of a box is polygon</span>
+
+ <span class="comment">// display results</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query box:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">query_box</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_s</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(*</span><span class="identifier">v</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query point:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_n</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(*</span><span class="identifier">v</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.rtree_examples.specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.rtree_examples.specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.expected_results"></a></span><a class="link" href="specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html#geometry.spatial_indexes.rtree_examples.specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.expected_results">Expected
+ results</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">filling</span> <span class="identifier">index</span> <span class="identifier">with</span> <span class="identifier">boxes</span> <span class="identifier">shared</span> <span class="identifier">pointers</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5.5</span><span class="special">,</span><span class="number">5.5</span> <span class="number">5.5</span><span class="special">,</span><span class="number">5.5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">6</span> <span class="number">6</span><span class="special">,</span><span class="number">6</span> <span class="number">6.5</span><span class="special">,</span><span class="number">6.5</span> <span class="number">6.5</span><span class="special">,</span><span class="number">6.5</span> <span class="number">6</span><span class="special">,</span><span class="number">6</span> <span class="number">6</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">7</span> <span class="number">7</span><span class="special">,</span><span class="number">7</span> <span class="number">7.5</span><span class="special">,</span><span class="number">7.5</span> <span class="number">7.5</span><span class="special">,</span><span class="number">7.5</span> <span class="number">7</span><span class="special">,</span><span class="number">7</span> <span class="number">7</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">8</span> <span class="number">8</span><span class="special">,</span><span class="number">8</span> <span class="number">8.5</span><span class="special">,</span><span class="number">8.5</span> <span class="number">8.5</span><span class="special">,</span><span class="number">8.5</span> <span class="number">8</span><span class="special">,</span><span class="number">8</span> <span class="number">8</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">9</span> <span class="number">9</span><span class="special">,</span><span class="number">9</span> <span class="number">9.5</span><span class="special">,</span><span class="number">9.5</span> <span class="number">9.5</span><span class="special">,</span><span class="number">9.5</span> <span class="number">9</span><span class="special">,</span><span class="number">9</span> <span class="number">9</span><span class="special">))</span>
+<span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">box</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5.5</span><span class="special">,</span><span class="number">5.5</span> <span class="number">5.5</span><span class="special">,</span><span class="number">5.5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5</span><span class="special">))</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">point</span><span class="special">:</span>
+<span class="identifier">POINT</span><span class="special">(</span><span class="number">0</span> <span class="number">0</span><span class="special">)</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1</span><span class="special">))</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="index_of_iterators_of_a_map_storing_variant_geometries.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html
new file mode 100644
index 0000000000..c8f4210959
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_examples/using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html
@@ -0,0 +1,170 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Using IndexableGetter function object - storing indexes of external container's elements</title>
+<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../rtree_examples.html" title="Examples">
+<link rel="prev" href="specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html" title="Specializing index::indexable function object - storing shared pointers in the rtree">
+<link rel="next" href="range_adaptors.html" title="Range adaptors">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="range_adaptors.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="geometry.spatial_indexes.rtree_examples.using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements"></a><a class="link" href="using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html" title="Using IndexableGetter function object - storing indexes of external container's elements">Using
+ IndexableGetter function object - storing indexes of external container's
+ elements</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cmath</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">my_indexable</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">::</span><span class="identifier">size_type</span> <span class="identifier">size_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">::</span><span class="identifier">const_reference</span> <span class="identifier">cref</span><span class="special">;</span>
+ <span class="identifier">Container</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">container</span><span class="special">;</span>
+
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">cref</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">explicit</span> <span class="identifier">my_indexable</span><span class="special">(</span><span class="identifier">Container</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">c</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">container</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">container</span><span class="special">[</span><span class="identifier">i</span><span class="special">];</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">box</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;::</span><span class="identifier">size_type</span> <span class="identifier">value</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rstar</span><span class="special">&lt;</span><span class="number">16</span><span class="special">,</span> <span class="number">4</span><span class="special">&gt;</span> <span class="identifier">parameters</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">my_indexable</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">indexable_getter</span><span class="special">;</span>
+
+ <span class="comment">// boxes</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;</span> <span class="identifier">boxes</span><span class="special">;</span>
+
+ <span class="comment">// create some boxes</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="comment">// add a box</span>
+ <span class="identifier">boxes</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">box</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="identifier">i</span><span class="special">+</span><span class="number">0.0f</span><span class="special">,</span> <span class="identifier">i</span><span class="special">+</span><span class="number">0.0f</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="identifier">i</span><span class="special">+</span><span class="number">0.5f</span><span class="special">,</span> <span class="identifier">i</span><span class="special">+</span><span class="number">0.5f</span><span class="special">)));</span>
+ <span class="special">}</span>
+
+ <span class="comment">// display boxes</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"generated boxes:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">box</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">,</span> <span class="identifier">boxes</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="comment">// create the rtree</span>
+ <span class="identifier">parameters</span> <span class="identifier">params</span><span class="special">;</span>
+ <span class="identifier">indexable_getter</span> <span class="identifier">ind</span><span class="special">(</span><span class="identifier">boxes</span><span class="special">);</span>
+ <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">parameters</span><span class="special">,</span> <span class="identifier">indexable_getter</span><span class="special">&gt;</span> <span class="identifier">rtree</span><span class="special">(</span><span class="identifier">params</span><span class="special">,</span> <span class="identifier">ind</span><span class="special">);</span>
+
+ <span class="comment">// fill the spatial index</span>
+ <span class="keyword">for</span> <span class="special">(</span> <span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">boxes</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">i</span><span class="special">);</span>
+
+ <span class="comment">// find values intersecting some area defined by a box</span>
+ <span class="identifier">box</span> <span class="identifier">query_box</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">5</span><span class="special">));</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_s</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">query_box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_s</span><span class="special">));</span>
+
+ <span class="comment">// find 5 nearest values to a point</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_n</span><span class="special">;</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="number">5</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_n</span><span class="special">));</span>
+
+ <span class="comment">// note: in Boost.Geometry the WKT representation of a box is polygon</span>
+
+ <span class="comment">// display results</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query box:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">query_box</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">result_s</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">boxes</span><span class="special">[</span><span class="identifier">i</span><span class="special">])</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query point:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">result_n</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">boxes</span><span class="special">[</span><span class="identifier">i</span><span class="special">])</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<h5>
+<a name="geometry.spatial_indexes.rtree_examples.using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.rtree_examples.using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.expected_results"></a></span><a class="link" href="using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html#geometry.spatial_indexes.rtree_examples.using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.expected_results">Expected
+ results</a>
+ </h5>
+<pre class="programlisting"><span class="identifier">generated</span> <span class="identifier">boxes</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5.5</span><span class="special">,</span><span class="number">5.5</span> <span class="number">5.5</span><span class="special">,</span><span class="number">5.5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">6</span> <span class="number">6</span><span class="special">,</span><span class="number">6</span> <span class="number">6.5</span><span class="special">,</span><span class="number">6.5</span> <span class="number">6.5</span><span class="special">,</span><span class="number">6.5</span> <span class="number">6</span><span class="special">,</span><span class="number">6</span> <span class="number">6</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">7</span> <span class="number">7</span><span class="special">,</span><span class="number">7</span> <span class="number">7.5</span><span class="special">,</span><span class="number">7.5</span> <span class="number">7.5</span><span class="special">,</span><span class="number">7.5</span> <span class="number">7</span><span class="special">,</span><span class="number">7</span> <span class="number">7</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">8</span> <span class="number">8</span><span class="special">,</span><span class="number">8</span> <span class="number">8.5</span><span class="special">,</span><span class="number">8.5</span> <span class="number">8.5</span><span class="special">,</span><span class="number">8.5</span> <span class="number">8</span><span class="special">,</span><span class="number">8</span> <span class="number">8</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">9</span> <span class="number">9</span><span class="special">,</span><span class="number">9</span> <span class="number">9.5</span><span class="special">,</span><span class="number">9.5</span> <span class="number">9.5</span><span class="special">,</span><span class="number">9.5</span> <span class="number">9</span><span class="special">,</span><span class="number">9</span> <span class="number">9</span><span class="special">))</span>
+<span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">box</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">spatial</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5.5</span><span class="special">,</span><span class="number">5.5</span> <span class="number">5.5</span><span class="special">,</span><span class="number">5.5</span> <span class="number">5</span><span class="special">,</span><span class="number">5</span> <span class="number">5</span><span class="special">))</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">point</span><span class="special">:</span>
+<span class="identifier">POINT</span><span class="special">(</span><span class="number">0</span> <span class="number">0</span><span class="special">)</span>
+<span class="identifier">knn</span> <span class="identifier">query</span> <span class="identifier">result</span><span class="special">:</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">4</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4.5</span><span class="special">,</span><span class="number">4.5</span> <span class="number">4</span><span class="special">,</span><span class="number">4</span> <span class="number">4</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">3</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3.5</span><span class="special">,</span><span class="number">3.5</span> <span class="number">3</span><span class="special">,</span><span class="number">3</span> <span class="number">3</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">2</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2.5</span><span class="special">,</span><span class="number">2.5</span> <span class="number">2</span><span class="special">,</span><span class="number">2</span> <span class="number">2</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">0</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0.5</span><span class="special">,</span><span class="number">0.5</span> <span class="number">0</span><span class="special">,</span><span class="number">0</span> <span class="number">0</span><span class="special">))</span>
+<span class="identifier">POLYGON</span><span class="special">((</span><span class="number">1</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1.5</span><span class="special">,</span><span class="number">1.5</span> <span class="number">1</span><span class="special">,</span><span class="number">1</span> <span class="number">1</span><span class="special">))</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rtree_examples.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="range_adaptors.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry/spatial_indexes/rtree_quickstart.html b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_quickstart.html
new file mode 100644
index 0000000000..a859591f63
--- /dev/null
+++ b/libs/geometry/doc/html/geometry/spatial_indexes/rtree_quickstart.html
@@ -0,0 +1,179 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Quick Start</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Geometry">
+<link rel="up" href="../spatial_indexes.html" title="Spatial Indexes">
+<link rel="prev" href="introduction.html" title="Introduction">
+<link rel="next" href="creation_and_modification.html" title="Creation and Modification">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="creation_and_modification.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="geometry.spatial_indexes.rtree_quickstart"></a><a class="link" href="rtree_quickstart.html" title="Quick Start">Quick Start</a>
+</h3></div></div></div>
+<p>
+ This Quick Start section shows simple way to creating a typical R-tree and
+ perform spatial query.
+ </p>
+<p>
+ The code below assumes that following files are included and namespaces used.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">index</span><span class="special">/</span><span class="identifier">rtree</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="comment">// to store queries results</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+
+<span class="comment">// just for output</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foreach</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bgi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">index</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ Typically you'll store e.g. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">Box</span><span class="special">,</span> <span class="identifier">MyGeometryId</span><span class="special">&gt;</span></code> in the R-tree. <code class="computeroutput"><span class="identifier">MyGeometryId</span></code>
+ will be some identifier of a complex <code class="computeroutput"><span class="identifier">Geometry</span></code>
+ stored in other container, e.g. index type of a <code class="computeroutput"><span class="identifier">Polygon</span></code>
+ stored in the vector or an iterator of list of <code class="computeroutput"><span class="identifier">Ring</span></code>s.
+ To keep it simple to define <code class="computeroutput"><span class="identifier">Value</span></code>
+ we will use predefined Box and unsigned int.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">box</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">box</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">&gt;</span> <span class="identifier">value</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ R-tree may be created using various algorithm and parameters. You should
+ choose the algorithm you'll find the best for your purpose. In this example
+ we will use quadratic algorithm. Parameters are passed as template parameters.
+ Maximum number of elements in nodes is set to 16.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="comment">// create the rtree using default constructor</span>
+<span class="identifier">bgi</span><span class="special">::</span><span class="identifier">rtree</span><span class="special">&lt;</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">bgi</span><span class="special">::</span><span class="identifier">quadratic</span><span class="special">&lt;</span><span class="number">16</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">rtree</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ Typically <code class="computeroutput"><span class="identifier">Value</span></code>s will be
+ generated in a loop from e.g. <code class="computeroutput"><span class="identifier">Polygon</span></code>s
+ stored in some other container. In this case <code class="computeroutput"><span class="identifier">Box</span></code>
+ objects will probably be created with <code class="computeroutput"><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">envelope</span><span class="special">()</span></code> function. But to keep it simple lets just
+ generate some boxes manually and insert them into the R-tree by using <code class="computeroutput"><span class="identifier">insert</span><span class="special">()</span></code>
+ method.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="comment">// create some values</span>
+<span class="keyword">for</span> <span class="special">(</span> <span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span> <span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// create a box</span>
+ <span class="identifier">box</span> <span class="identifier">b</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="identifier">i</span> <span class="special">+</span> <span class="number">0.0f</span><span class="special">,</span> <span class="identifier">i</span> <span class="special">+</span> <span class="number">0.0f</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="identifier">i</span> <span class="special">+</span> <span class="number">0.5f</span><span class="special">,</span> <span class="identifier">i</span> <span class="special">+</span> <span class="number">0.5f</span><span class="special">));</span>
+ <span class="comment">// insert new value</span>
+ <span class="identifier">rtree</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">i</span><span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ There are various types of spatial queries that may be performed, they can
+ be even combined together in one call. For simplicity, we use the default
+ one. The following query return values intersecting a box. The sequence of
+ <code class="computeroutput"><span class="identifier">Values</span></code> in the result is not
+ specified.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="comment">// find values intersecting some area defined by a box</span>
+<span class="identifier">box</span> <span class="identifier">query_box</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="identifier">point</span><span class="special">(</span><span class="number">5</span><span class="special">,</span> <span class="number">5</span><span class="special">));</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_s</span><span class="special">;</span>
+<span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">query_box</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_s</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+<p>
+ Other type of query is k-nearest neighbor search. It returns some number
+ of values nearest to some point in space. The default knn query may be performed
+ as follows. The sequence of <code class="computeroutput"><span class="identifier">Values</span></code>
+ in the result is not specified.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="comment">// find 5 nearest values to a point</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">result_n</span><span class="special">;</span>
+<span class="identifier">rtree</span><span class="special">.</span><span class="identifier">query</span><span class="special">(</span><span class="identifier">bgi</span><span class="special">::</span><span class="identifier">nearest</span><span class="special">(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">),</span> <span class="number">5</span><span class="special">),</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">result_n</span><span class="special">));</span>
+</pre>
+<p>
+ </p>
+<p>
+ At the end we'll print results.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="comment">// display results</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query box:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">query_box</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"spatial query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_s</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">first</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">" - "</span> <span class="special">&lt;&lt;</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">second</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query point:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;(</span><span class="identifier">point</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"knn query result:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">BOOST_FOREACH</span><span class="special">(</span><span class="identifier">value</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">result_n</span><span class="special">)</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">&lt;</span><span class="identifier">box</span><span class="special">&gt;(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">first</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">" - "</span> <span class="special">&lt;&lt;</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">second</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<h4>
+<a name="geometry.spatial_indexes.rtree_quickstart.h0"></a>
+ <span class="phrase"><a name="geometry.spatial_indexes.rtree_quickstart.more"></a></span><a class="link" href="rtree_quickstart.html#geometry.spatial_indexes.rtree_quickstart.more">More</a>
+ </h4>
+<p>
+ More information about the R-tree implementation, other algorithms and queries
+ may be found in other parts of this documentation.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../spatial_indexes.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="creation_and_modification.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/libs/geometry/doc/html/geometry_HTML.manifest b/libs/geometry/doc/html/geometry_HTML.manifest
index de56933d7f..8024ef8d9f 100644
--- a/libs/geometry/doc/html/geometry_HTML.manifest
+++ b/libs/geometry/doc/html/geometry_HTML.manifest
@@ -1,20 +1,33 @@
index.html
geometry/introduction.html
-geometry/quickstart.html
-geometry/design.html
geometry/compilation.html
-geometry/indexes.html
-geometry/indexes/matrix.html
-geometry/indexes/alphabetical_index.html
+geometry/design.html
+geometry/quickstart.html
+geometry/spatial_indexes.html
+geometry/spatial_indexes/introduction.html
+geometry/spatial_indexes/rtree_quickstart.html
+geometry/spatial_indexes/creation_and_modification.html
+geometry/spatial_indexes/queries.html
+geometry/spatial_indexes/rtree_examples.html
+geometry/spatial_indexes/rtree_examples/quick_start.html
+geometry/spatial_indexes/rtree_examples/index_of_polygons_stored_in_vector.html
+geometry/spatial_indexes/rtree_examples/index_of_shared_pointers_to_polygons.html
+geometry/spatial_indexes/rtree_examples/index_of_iterators_of_a_map_storing_variant_geometries.html
+geometry/spatial_indexes/rtree_examples/specializing_index__indexable_function_object___storing_shared_pointers_in_the_rtree.html
+geometry/spatial_indexes/rtree_examples/using_indexablegetter_function_object___storing_indexes_of_external_container_s_elements.html
+geometry/spatial_indexes/rtree_examples/range_adaptors.html
+geometry/spatial_indexes/rtree_examples/iterative_query.html
+geometry/spatial_indexes/rtree_examples/index_stored_in_shared_memory_using_boost_interprocess.html
+geometry/spatial_indexes/rtree_examples/index_stored_in_mapped_file_using_boost_interprocess.html
geometry/reference.html
geometry/reference/access.html
geometry/reference/access/get.html
-geometry/reference/access/get/get_2.html
-geometry/reference/access/get/get_2_with_index.html
+geometry/reference/access/get/get_1.html
+geometry/reference/access/get/get_1_with_index.html
geometry/reference/access/get/get_as_radian.html
geometry/reference/access/set.html
-geometry/reference/access/set/set_3.html
-geometry/reference/access/set/set_3_with_index.html
+geometry/reference/access/set/set_2.html
+geometry/reference/access/set/set_2_with_index.html
geometry/reference/access/set/set_from_radian.html
geometry/reference/access/exterior_ring.html
geometry/reference/access/exterior_ring/exterior_ring_1.html
@@ -66,12 +79,13 @@ geometry/reference/algorithms/assign/assign.html
geometry/reference/algorithms/assign/assign_inverse.html
geometry/reference/algorithms/assign/assign_points.html
geometry/reference/algorithms/assign/assign_values_3_2_coordinate_values.html
-geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html
geometry/reference/algorithms/assign/assign_values_4_3_coordinate_values.html
+geometry/reference/algorithms/assign/assign_values_5_4_coordinate_values.html
geometry/reference/algorithms/assign/assign_zero.html
geometry/reference/algorithms/append.html
geometry/reference/algorithms/buffer.html
-geometry/reference/algorithms/buffer/buffer.html
+geometry/reference/algorithms/buffer/buffer_4.html
+geometry/reference/algorithms/buffer/buffer_7_with_strategies.html
geometry/reference/algorithms/buffer/return_buffer.html
geometry/reference/algorithms/centroid.html
geometry/reference/algorithms/centroid/centroid_3_with_strategy.html
@@ -85,26 +99,28 @@ geometry/reference/algorithms/correct.html
geometry/reference/algorithms/covered_by.html
geometry/reference/algorithms/covered_by/covered_by_2.html
geometry/reference/algorithms/covered_by/covered_by_3_with_strategy.html
+geometry/reference/algorithms/crosses.html
geometry/reference/algorithms/difference.html
geometry/reference/algorithms/disjoint.html
geometry/reference/algorithms/distance.html
-geometry/reference/algorithms/distance/comparable_distance.html
-geometry/reference/algorithms/distance/distance_2.html
+geometry/reference/algorithms/distance/comparable_distance_3_with_strategy.html
+geometry/reference/algorithms/distance/comparable_distance_2.html
geometry/reference/algorithms/distance/distance_3_with_strategy.html
+geometry/reference/algorithms/distance/distance_2.html
geometry/reference/algorithms/envelope.html
geometry/reference/algorithms/envelope/envelope.html
geometry/reference/algorithms/envelope/return_envelope.html
geometry/reference/algorithms/equals.html
geometry/reference/algorithms/expand.html
geometry/reference/algorithms/for_each.html
-geometry/reference/algorithms/for_each/for_each_point_2_const_version.html
-geometry/reference/algorithms/for_each/for_each_point_2.html
-geometry/reference/algorithms/for_each/for_each_segment_2_const_version.html
-geometry/reference/algorithms/for_each/for_each_segment_2.html
+geometry/reference/algorithms/for_each/for_each_point.html
+geometry/reference/algorithms/for_each/for_each_segment.html
geometry/reference/algorithms/intersection.html
geometry/reference/algorithms/intersects.html
geometry/reference/algorithms/intersects/intersects_1_one_geometry.html
geometry/reference/algorithms/intersects/intersects_2_two_geometries.html
+geometry/reference/algorithms/is_simple.html
+geometry/reference/algorithms/is_valid.html
geometry/reference/algorithms/length.html
geometry/reference/algorithms/length/length_1.html
geometry/reference/algorithms/length/length_2_with_strategy.html
@@ -182,11 +198,21 @@ geometry/reference/core/ring_type.html
geometry/reference/core/tag.html
geometry/reference/core/tag_cast.html
geometry/reference/enumerations.html
+geometry/reference/enumerations/buffer_side_selector.html
geometry/reference/enumerations/closure_selector.html
+geometry/reference/enumerations/join_selector.html
geometry/reference/enumerations/order_selector.html
+geometry/reference/enumerations/piece_type.html
geometry/reference/exceptions.html
geometry/reference/exceptions/exception.html
geometry/reference/exceptions/centroid_exception.html
+geometry/reference/io.html
+geometry/reference/io/wkt.html
+geometry/reference/io/wkt/read_wkt.html
+geometry/reference/io/wkt/wkt.html
+geometry/reference/io/svg.html
+geometry/reference/io/svg/svg.html
+geometry/reference/io/svg/svg_mapper.html
geometry/reference/iterators.html
geometry/reference/iterators/closing_iterator.html
geometry/reference/iterators/ever_circling_iterator.html
@@ -202,13 +228,95 @@ geometry/reference/models/model_box.html
geometry/reference/models/model_ring.html
geometry/reference/models/model_segment.html
geometry/reference/models/model_referring_segment.html
+geometry/reference/spatial_indexes.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree__.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_iterator__iterator_.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_range_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/_rtree__.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_const____allocator_type_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree____.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/rtree_rtree_____allocator_type_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/operator__rtree____.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/swap_rtree___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_value_type_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_iterator__iterator_.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/insert_convertibleorrange_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_value_type_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_iterator__iterator_.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/remove_convertibleorrange_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/query_predicates_const____outiter_.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/qbegin_predicates_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/qend__.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/size__.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/empty__.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/clear__.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/bounds__.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/count_valueorindexable_const___.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/parameters__.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/indexable_get__.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/value_eq__.html
+geometry/reference/spatial_indexes/boost__geometry__index__rtree/get_allocator__.html
+geometry/reference/spatial_indexes/group__rtree__functions.html
+geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________value_const___.html
+geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________iterator__iterator_.html
+geometry/reference/spatial_indexes/group__rtree__functions/insert_rtree_________convertibleorrange_const___.html
+geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________value_const___.html
+geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________iterator__iterator_.html
+geometry/reference/spatial_indexes/group__rtree__functions/remove_rtree_________convertibleorrange_const___.html
+geometry/reference/spatial_indexes/group__rtree__functions/query_rtree______const____predicates_const____outiter_.html
+geometry/reference/spatial_indexes/group__rtree__functions/qbegin_rtree______const____predicates_const___.html
+geometry/reference/spatial_indexes/group__rtree__functions/qend_rtree______const___.html
+geometry/reference/spatial_indexes/group__rtree__functions/clear_rtree________.html
+geometry/reference/spatial_indexes/group__rtree__functions/size_rtree______const___.html
+geometry/reference/spatial_indexes/group__rtree__functions/empty_rtree______const___.html
+geometry/reference/spatial_indexes/group__rtree__functions/bounds_rtree______const___.html
+geometry/reference/spatial_indexes/group__rtree__functions/swap_rtree_________rtree________.html
+geometry/reference/spatial_indexes/parameters.html
+geometry/reference/spatial_indexes/parameters/boost__geometry__index__linear.html
+geometry/reference/spatial_indexes/parameters/boost__geometry__index__quadratic.html
+geometry/reference/spatial_indexes/parameters/boost__geometry__index__rstar.html
+geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_linear.html
+geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_quadratic.html
+geometry/reference/spatial_indexes/parameters/boost__geometry__index__dynamic_rstar.html
+geometry/reference/spatial_indexes/observers.html
+geometry/reference/spatial_indexes/observers/boost__geometry__index__indexable.html
+geometry/reference/spatial_indexes/observers/boost__geometry__index__equal_to.html
+geometry/reference/spatial_indexes/group__inserters.html
+geometry/reference/spatial_indexes/group__inserters/inserter_container___.html
+geometry/reference/spatial_indexes/group__adaptors.html
+geometry/reference/spatial_indexes/group__adaptors/queried_predicates_const___.html
+geometry/reference/spatial_indexes/group__predicates.html
+geometry/reference/spatial_indexes/group__predicates/contains_geometry_const___.html
+geometry/reference/spatial_indexes/group__predicates/covered_by_geometry_const___.html
+geometry/reference/spatial_indexes/group__predicates/covers_geometry_const___.html
+geometry/reference/spatial_indexes/group__predicates/disjoint_geometry_const___.html
+geometry/reference/spatial_indexes/group__predicates/intersects_geometry_const___.html
+geometry/reference/spatial_indexes/group__predicates/overlaps_geometry_const___.html
+geometry/reference/spatial_indexes/group__predicates/within_geometry_const___.html
+geometry/reference/spatial_indexes/group__predicates/satisfies_unarypredicate_const___.html
+geometry/reference/spatial_indexes/group__predicates/nearest_geometry_const____unsigned_.html
geometry/reference/strategies.html
geometry/reference/strategies/strategy_distance_pythagoras.html
+geometry/reference/strategies/strategy_distance_pythagoras_box_box.html
+geometry/reference/strategies/strategy_distance_pythagoras_point_box.html
geometry/reference/strategies/strategy_distance_haversine.html
geometry/reference/strategies/strategy_distance_projected_point.html
geometry/reference/strategies/strategy_distance_cross_track.html
geometry/reference/strategies/strategy_area_surveyor.html
geometry/reference/strategies/strategy_area_huiller.html
+geometry/reference/strategies/strategy_buffer_join_round.html
+geometry/reference/strategies/strategy_buffer_join_miter.html
+geometry/reference/strategies/strategy_buffer_end_round.html
+geometry/reference/strategies/strategy_buffer_end_flat.html
+geometry/reference/strategies/strategy_buffer_distance_symmetric.html
+geometry/reference/strategies/strategy_buffer_distance_asymmetric.html
+geometry/reference/strategies/strategy_buffer_point_circle.html
+geometry/reference/strategies/strategy_buffer_point_square.html
+geometry/reference/strategies/strategy_buffer_side_straight.html
geometry/reference/strategies/strategy_centroid_average.html
geometry/reference/strategies/strategy_centroid_bashein_detmer.html
geometry/reference/strategies/strategy_convex_hull_graham_andrew.html
@@ -231,6 +339,12 @@ geometry/reference/views/segment_view.html
geometry/reference/views/closeable_view.html
geometry/reference/views/reversible_view.html
geometry/reference/views/identity_view.html
+geometry/indexes.html
+geometry/indexes/matrix.html
+geometry/indexes/alphabetical_index.html
+geometry/examples.html
+geometry/examples/example__adapting_a_legacy_geometry_object_model.html
+geometry/examples/example_source_code__adapting_a_legacy_geometry_object_model.html
geometry/release_notes.html
geometry/aboutdoc.html
geometry/acknowledgments.html
diff --git a/libs/geometry/doc/html/img/algorithms/buffer_linestring.png b/libs/geometry/doc/html/img/algorithms/buffer_linestring.png
new file mode 100644
index 0000000000..7613d32a18
--- /dev/null
+++ b/libs/geometry/doc/html/img/algorithms/buffer_linestring.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/algorithms/buffer_multi_point.png b/libs/geometry/doc/html/img/algorithms/buffer_multi_point.png
new file mode 100644
index 0000000000..c4b6504ef4
--- /dev/null
+++ b/libs/geometry/doc/html/img/algorithms/buffer_multi_point.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/algorithms/buffer_multi_polygon.png b/libs/geometry/doc/html/img/algorithms/buffer_multi_polygon.png
new file mode 100644
index 0000000000..4a97da7d38
--- /dev/null
+++ b/libs/geometry/doc/html/img/algorithms/buffer_multi_polygon.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/algorithms/buffer_strategies.png b/libs/geometry/doc/html/img/algorithms/buffer_strategies.png
new file mode 100644
index 0000000000..83e7824e12
--- /dev/null
+++ b/libs/geometry/doc/html/img/algorithms/buffer_strategies.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/algorithms/buffer_strategies.svg b/libs/geometry/doc/html/img/algorithms/buffer_strategies.svg
new file mode 100644
index 0000000000..67590329b3
--- /dev/null
+++ b/libs/geometry/doc/html/img/algorithms/buffer_strategies.svg
@@ -0,0 +1,412 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="100%"
+ height="100%"
+ version="1.1"
+ id="svg2"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="buffer_strategies.svg"
+ inkscape:export-filename="/home/barend/git/boost/modular-boost/libs/geometry/doc/html/img/algorithms/buffer_strategies.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <metadata
+ id="metadata14">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs12">
+ <marker
+ inkscape:stockid="Arrow1Send"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Send"
+ style="overflow:visible;">
+ <path
+ id="path3808"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+ transform="scale(0.2) rotate(180) translate(6,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Sstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Sstart"
+ style="overflow:visible">
+ <path
+ id="path3805"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+ transform="scale(0.2) translate(6,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path3793"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+ transform="scale(0.8) translate(12.5,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1855"
+ inkscape:window-height="1056"
+ id="namedview10"
+ showgrid="false"
+ inkscape:zoom="3.5881183"
+ inkscape:cx="256.34979"
+ inkscape:cy="871.75172"
+ inkscape:window-x="65"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg2" />
+ <g
+ transform="matrix(0.7126682,0,0,0.7126682,117.15071,-6.3333682)"
+ style="fill-rule:evenodd"
+ id="g4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 192,194 130,-86 7,-4 9,-3 8,-1 9,0 9,1 8,4 7,4 7,6 5,7 4,7 3,9 2,8 -1,9 -1,9 -4,8 -4,7 -6,7 -7,5 -150,100 -8,4 -8,3 -9,1 -9,0 -9,-2 -150,-50 -8,-4 -8,-4 -6,-6 -5,-7 -4,-8 -3,-9 0,-8 0,-9 2,-8 4,-8 4,-8 6,-6 7,-5 8,-4 8,-3 9,-1 9,1 8,2 127,42 z"
+ style="fill:#ffff40;fill-opacity:0.6;stroke:#ff8000;stroke-width:3"
+ id="path6" />
+ </g>
+ <polyline
+ transform="matrix(0.7126682,0,0,0.7126682,117.15071,-6.3333682)"
+ points="49,199 200,249 350,149"
+ style="fill:none;stroke:#333399;stroke-width:2"
+ id="polyline8" />
+ <path
+ style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 2;stroke-dashoffset:0;marker-start:url(#Arrow1Sstart);marker-end:url(#Arrow1Send)"
+ d="m 325.13139,124.74285 -17.053,-26.310152"
+ id="polyline8-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ id="text5165"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ transform="matrix(0.83864026,-0.5446857,0.5446857,0.83864026,0.55739522,-0.27869761)">
+ <path
+ inkscape:connector-curvature="0"
+ id="path5316"
+ d="m 208.31557,257.36206 0,5.66895 1.1914,0 c 1.00586,0 1.74153,-0.22787 2.20703,-0.6836 0.46875,-0.45573 0.70312,-1.17513 0.70313,-2.1582 -10e-6,-0.97656 -0.23438,-1.69108 -0.70313,-2.14356 -0.4655,-0.45572 -1.20117,-0.68358 -2.20703,-0.68359 l -1.1914,0 m -0.98633,-0.81055 2.02637,0 c 1.41275,10e-6 2.44953,0.29461 3.11035,0.88379 0.6608,0.58595 0.9912,1.50391 0.99121,2.75391 -1e-5,1.25651 -0.33204,2.17936 -0.9961,2.76855 -0.66406,0.5892 -1.69922,0.88379 -3.10546,0.88379 l -2.02637,0 0,-7.29004" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5318"
+ d="m 214.98549,258.3728 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5320"
+ d="m 221.24525,258.53394 0,0.8496 c -0.25391,-0.1302 -0.51758,-0.22785 -0.79101,-0.29296 -0.27344,-0.0651 -0.55664,-0.0977 -0.84961,-0.0977 -0.44597,0 -0.78125,0.0684 -1.00586,0.20508 -0.22136,0.13672 -0.33203,0.3418 -0.33203,0.61523 0,0.20834 0.0797,0.37273 0.23926,0.49317 0.1595,0.11719 0.48014,0.22949 0.96191,0.33691 l 0.30762,0.0684 c 0.63802,0.13672 1.09049,0.33041 1.35742,0.58105 0.27018,0.2474 0.40527,0.59408 0.40527,1.04004 0,0.50782 -0.20182,0.90983 -0.60547,1.20606 -0.40039,0.29622 -0.95215,0.44433 -1.65527,0.44433 -0.29297,0 -0.59896,-0.0293 -0.91797,-0.0879 -0.31575,-0.0553 -0.64941,-0.13997 -1.00097,-0.2539 l 0,-0.92774 c 0.33203,0.17253 0.65917,0.30274 0.98144,0.39063 0.32226,0.0846 0.64127,0.12695 0.95703,0.12695 0.42318,0 0.7487,-0.0716 0.97656,-0.21484 0.22787,-0.14649 0.3418,-0.35156 0.3418,-0.61524 0,-0.24414 -0.083,-0.43131 -0.24902,-0.56152 -0.16277,-0.13021 -0.52247,-0.25553 -1.0791,-0.37598 l -0.3125,-0.0732 c -0.55665,-0.11718 -0.95866,-0.29622 -1.20606,-0.53711 -0.24739,-0.24414 -0.37109,-0.57779 -0.37109,-1.00098 0,-0.51431 0.18229,-0.91145 0.54687,-1.1914 0.36459,-0.27994 0.88216,-0.41992 1.55274,-0.41992 0.33203,0 0.64453,0.0244 0.9375,0.0732 0.29296,0.0488 0.56314,0.12207 0.81054,0.21973" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5322"
+ d="m 223.86244,256.82007 0,1.55273 1.85059,0 0,0.69824 -1.85059,0 0,2.96875 c 0,0.44597 0.0602,0.73243 0.18067,0.85938 0.12369,0.12695 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69337,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26042 -0.39551,-0.73242 -0.39551,-1.41602 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55273 0.90332,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5324"
+ d="m 229.3849,261.09253 c -0.72591,0 -1.22884,0.083 -1.50879,0.24902 -0.27995,0.16602 -0.41992,0.44922 -0.41992,0.84961 0,0.31901 0.10417,0.57292 0.3125,0.76172 0.21159,0.18555 0.49805,0.27832 0.85938,0.27832 0.49804,0 0.8968,-0.17578 1.19629,-0.52734 0.30273,-0.35482 0.45409,-0.8252 0.4541,-1.41114 l 0,-0.20019 -0.89356,0 m 1.792,-0.37109 0,3.12011 -0.89844,0 0,-0.83008 c -0.20508,0.33204 -0.46062,0.5778 -0.7666,0.73731 -0.306,0.15625 -0.68035,0.23437 -1.12305,0.23437 -0.5599,0 -1.00586,-0.15625 -1.33789,-0.46875 -0.32878,-0.31575 -0.49317,-0.7373 -0.49317,-1.26464 0,-0.61524 0.20508,-1.0791 0.61524,-1.39161 0.41341,-0.31249 1.02864,-0.46874 1.8457,-0.46875 l 1.25977,0 0,-0.0879 c -1e-5,-0.4134 -0.13673,-0.73241 -0.41016,-0.95703 -0.27018,-0.22786 -0.65104,-0.34179 -1.14258,-0.34179 -0.3125,0 -0.61686,0.0374 -0.91308,0.1123 -0.29623,0.0749 -0.58106,0.18718 -0.85449,0.33691 l 0,-0.83007 c 0.32877,-0.12695 0.64778,-0.22135 0.95703,-0.28321 0.30924,-0.0651 0.61035,-0.0976 0.90332,-0.0976 0.79101,0 1.38183,0.20508 1.77246,0.61523 0.39062,0.41016 0.58593,1.03191 0.58594,1.86524" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5326"
+ d="m 237.57826,260.54077 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51758 -0.10091,-0.90495 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15462 -1.14746,0.46386 -0.27995,0.30925 -0.41993,0.7308 -0.41993,1.26465 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21485,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19531 1.42578,0.58593 0.32226,0.38738 0.4834,0.95867 0.4834,1.71387" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5328"
+ d="m 243.31557,258.58276 0,0.83985 c -0.25391,-0.13997 -0.50945,-0.24414 -0.7666,-0.3125 -0.25391,-0.0716 -0.51108,-0.10742 -0.77149,-0.10742 -0.58268,0 -1.03516,0.18555 -1.35742,0.55664 -0.32227,0.36784 -0.4834,0.88542 -0.4834,1.55273 0,0.66732 0.16113,1.18653 0.4834,1.55762 0.32226,0.36784 0.77474,0.55176 1.35742,0.55176 0.26041,0 0.51758,-0.0342 0.77149,-0.10254 0.25715,-0.0716 0.51269,-0.17741 0.7666,-0.31739 l 0,0.83008 c -0.25066,0.11719 -0.51108,0.20508 -0.78125,0.26367 -0.26693,0.0586 -0.55176,0.0879 -0.8545,0.0879 -0.82357,0 -1.47786,-0.25878 -1.96289,-0.77636 -0.48502,-0.51758 -0.72754,-1.21582 -0.72753,-2.09473 -1e-5,-0.89192 0.24413,-1.59342 0.73242,-2.10449 0.49153,-0.51106 1.16373,-0.7666 2.0166,-0.7666 0.27669,0 0.54687,0.0293 0.81055,0.0879 0.26366,0.0553 0.5192,0.13998 0.7666,0.2539" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5330"
+ d="m 249.56557,260.88257 0,0.43945 -4.13086,0 c 0.0391,0.61849 0.22461,1.0905 0.55664,1.41602 0.33528,0.32226 0.80078,0.4834 1.39648,0.4834 0.34505,0 0.67871,-0.0423 1.00098,-0.12696 0.32552,-0.0846 0.64778,-0.21159 0.9668,-0.38086 l 0,0.84961 c -0.32227,0.13672 -0.65268,0.24089 -0.99121,0.3125 -0.33855,0.0716 -0.68197,0.10742 -1.03028,0.10742 -0.8724,0 -1.56413,-0.2539 -2.07519,-0.76171 -0.50782,-0.50782 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89518 0.24088,-1.60481 0.72265,-2.12891 0.48503,-0.52734 1.1377,-0.79101 1.95801,-0.79101 0.73567,0 1.31673,0.23763 1.74317,0.71289 0.42968,0.47201 0.64452,1.11491 0.64453,1.92871 m -0.89844,-0.26367 c -0.007,-0.49154 -0.14486,-0.88379 -0.41504,-1.17676 -0.26693,-0.29297 -0.62175,-0.43945 -1.06445,-0.43945 -0.50131,0 -0.90333,0.1416 -1.20606,0.4248 -0.29948,0.28321 -0.472,0.68197 -0.51758,1.19629 l 3.20313,-0.005" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5332"
+ d="m 211.69936,269.29077 0,0.96192 c -0.37436,-0.17903 -0.72755,-0.3125 -1.05957,-0.4004 -0.33204,-0.0879 -0.65268,-0.13182 -0.96192,-0.13183 -0.53711,10e-6 -0.95215,0.10417 -1.24512,0.3125 -0.28971,0.20834 -0.43457,0.50456 -0.43457,0.88867 0,0.32227 0.096,0.56641 0.28809,0.73242 0.19531,0.16277 0.56315,0.2946 1.10352,0.39551 l 0.5957,0.12207 c 0.73567,0.13998 1.27766,0.38737 1.62598,0.74219 0.35155,0.35156 0.52733,0.82357 0.52734,1.41601 -1e-5,0.70639 -0.23764,1.24187 -0.71289,1.60645 -0.47201,0.36458 -1.16537,0.54687 -2.08008,0.54687 -0.34505,0 -0.71289,-0.0391 -1.10352,-0.11718 -0.38737,-0.0781 -0.78938,-0.19369 -1.20605,-0.34668 l 0,-1.01563 c 0.40039,0.22461 0.79264,0.39388 1.17676,0.50781 0.38411,0.11394 0.76171,0.1709 1.13281,0.1709 0.56315,0 0.99772,-0.11067 1.30371,-0.33203 0.30599,-0.22135 0.45898,-0.53711 0.45899,-0.94726 -1e-5,-0.35807 -0.11069,-0.63802 -0.33204,-0.83985 -0.2181,-0.20182 -0.5778,-0.35318 -1.0791,-0.4541 l -0.60058,-0.11719 c -0.73568,-0.14648 -1.26791,-0.37597 -1.59668,-0.68847 -0.32878,-0.3125 -0.49317,-0.74707 -0.49317,-1.30371 0,-0.64453 0.22624,-1.15234 0.67871,-1.52344 0.45573,-0.37109 1.08236,-0.55663 1.87989,-0.55664 0.34179,10e-6 0.6901,0.0309 1.04492,0.0928 0.35481,0.0619 0.71777,0.15463 1.08887,0.27832" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5334"
+ d="m 214.5265,269.32007 0,1.55273 1.85059,0 0,0.69824 -1.85059,0 0,2.96875 c 0,0.44597 0.0602,0.73243 0.18067,0.85938 0.12369,0.12695 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26042 -0.39551,-0.73242 -0.39551,-1.41602 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55273 0.90332,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5336"
+ d="m 220.73256,271.71265 c -0.10092,-0.0586 -0.21159,-0.10091 -0.33203,-0.12696 -0.11719,-0.0293 -0.2474,-0.0439 -0.39063,-0.0439 -0.50781,0 -0.89844,0.16602 -1.17187,0.49804 -0.27019,0.32878 -0.40528,0.80242 -0.40528,1.4209 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0147 0.0749,0.007 0.15788,0.0179 0.24903,0.0342 l 0.005,0.92286" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5338"
+ d="m 224.17006,273.59253 c -0.72591,0 -1.22884,0.083 -1.50879,0.24902 -0.27995,0.16602 -0.41992,0.44922 -0.41992,0.84961 0,0.31901 0.10416,0.57292 0.3125,0.76172 0.21158,0.18555 0.49804,0.27832 0.85937,0.27832 0.49805,0 0.89681,-0.17578 1.19629,-0.52734 0.30273,-0.35482 0.4541,-0.8252 0.4541,-1.41114 l 0,-0.20019 -0.89355,0 m 1.79199,-0.37109 0,3.12011 -0.89844,0 0,-0.83008 c -0.20508,0.33204 -0.46061,0.5778 -0.7666,0.73731 -0.30599,0.15625 -0.68034,0.23437 -1.12304,0.23437 -0.5599,0 -1.00587,-0.15625 -1.3379,-0.46875 -0.32877,-0.31575 -0.49316,-0.7373 -0.49316,-1.26464 0,-0.61524 0.20508,-1.0791 0.61524,-1.39161 0.4134,-0.31249 1.02864,-0.46874 1.8457,-0.46875 l 1.25976,0 0,-0.0879 c 0,-0.4134 -0.13672,-0.73241 -0.41015,-0.95703 -0.27019,-0.22786 -0.65105,-0.34179 -1.14258,-0.34179 -0.3125,0 -0.61686,0.0374 -0.91309,0.1123 -0.29622,0.0749 -0.58105,0.18718 -0.85449,0.33691 l 0,-0.83007 c 0.32878,-0.12695 0.64779,-0.22135 0.95703,-0.28321 0.30925,-0.0651 0.61035,-0.0976 0.90332,-0.0976 0.79101,0 1.38183,0.20508 1.77246,0.61523 0.39062,0.41016 0.58594,1.03191 0.58594,1.86524" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5340"
+ d="m 228.70619,269.32007 0,1.55273 1.85059,0 0,0.69824 -1.85059,0 0,2.96875 c 0,0.44597 0.0602,0.73243 0.18067,0.85938 0.12369,0.12695 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69337,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26042 -0.39551,-0.73242 -0.39551,-1.41602 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55273 0.90332,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5342"
+ d="m 236.42104,273.38257 0,0.43945 -4.13086,0 c 0.0391,0.61849 0.2246,1.0905 0.55664,1.41602 0.33528,0.32226 0.80078,0.4834 1.39648,0.4834 0.34505,0 0.67871,-0.0423 1.00098,-0.12696 0.32551,-0.0846 0.64778,-0.21159 0.96679,-0.38086 l 0,0.84961 c -0.32227,0.13672 -0.65267,0.24089 -0.99121,0.3125 -0.33854,0.0716 -0.68197,0.10742 -1.03027,0.10742 -0.8724,0 -1.56413,-0.2539 -2.07519,-0.76171 -0.50782,-0.50782 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89518 0.24088,-1.60481 0.72265,-2.12891 0.48503,-0.52734 1.1377,-0.79101 1.95801,-0.79101 0.73567,0 1.31673,0.23763 1.74316,0.71289 0.42969,0.47201 0.64453,1.11491 0.64454,1.92871 m -0.89844,-0.26367 c -0.007,-0.49154 -0.14486,-0.88379 -0.41504,-1.17676 -0.26693,-0.29297 -0.62175,-0.43945 -1.06445,-0.43945 -0.50131,0 -0.90333,0.1416 -1.20606,0.4248 -0.29948,0.28321 -0.47201,0.68197 -0.51758,1.19629 l 3.20313,-0.005" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5344"
+ d="m 241.49428,273.5437 c -1e-5,-0.65104 -0.1351,-1.15559 -0.40528,-1.51367 -0.26693,-0.35807 -0.6429,-0.53711 -1.12793,-0.53711 -0.48177,0 -0.85774,0.17904 -1.12792,0.53711 -0.26693,0.35808 -0.4004,0.86263 -0.4004,1.51367 0,0.64779 0.13347,1.15072 0.4004,1.50879 0.27018,0.35807 0.64615,0.53711 1.12792,0.53711 0.48503,0 0.861,-0.17904 1.12793,-0.53711 0.27018,-0.35807 0.40527,-0.861 0.40528,-1.50879 m 0.89844,2.11914 c -1e-5,0.93099 -0.20672,1.62272 -0.62012,2.0752 -0.41342,0.45572 -1.04655,0.68359 -1.89942,0.68359 -0.31575,0 -0.6136,-0.0244 -0.89355,-0.0732 -0.27995,-0.0456 -0.55176,-0.11719 -0.81543,-0.21485 l 0,-0.87402 c 0.26367,0.14323 0.52409,0.24902 0.78125,0.31738 0.25716,0.0684 0.5192,0.10254 0.78613,0.10254 0.58919,0 1.03027,-0.15462 1.32324,-0.46386 0.29297,-0.30599 0.43945,-0.76986 0.43946,-1.39161 l 0,-0.44433 c -0.18555,0.32226 -0.42318,0.56315 -0.71289,0.72265 -0.28972,0.15951 -0.6364,0.23926 -1.04004,0.23926 -0.67058,0 -1.21094,-0.25553 -1.6211,-0.7666 -0.41015,-0.51107 -0.61523,-1.18815 -0.61523,-2.03125 0,-0.84635 0.20508,-1.52506 0.61523,-2.03613 0.41016,-0.51106 0.95052,-0.7666 1.6211,-0.7666 0.40364,0 0.75032,0.0797 1.04004,0.23925 0.28971,0.15952 0.52734,0.4004 0.71289,0.72266 l 0,-0.83008 0.89844,0 0,4.79004" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5346"
+ d="m 246.51869,276.84937 c -0.25391,0.65104 -0.5013,1.07584 -0.74219,1.27441 -0.24088,0.19857 -0.56315,0.29785 -0.96679,0.29785 l -0.71778,0 0,-0.75195 0.52735,0 c 0.24739,0 0.43945,-0.0586 0.57617,-0.17578 0.13672,-0.11719 0.28808,-0.39388 0.4541,-0.83008 l 0.16113,-0.41016 -2.21191,-5.38086 0.95215,0 1.70898,4.27735 1.70899,-4.27735 0.95215,0 -2.40235,5.97657" />
+ </g>
+ <g
+ id="text5165-5"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ transform="translate(-7.5739522,9.3443692)">
+ <path
+ inkscape:connector-curvature="0"
+ id="path5349"
+ d="m 259.80331,169.10039 0.98633,0 0,6.78222 c 0,0.87891 -0.16764,1.51693 -0.50293,1.91407 -0.33203,0.39713 -0.86751,0.5957 -1.60644,0.5957 l -0.37598,0 0,-0.83008 0.30762,0 c 0.4362,0 0.74381,-0.12207 0.92285,-0.36621 0.17904,-0.24414 0.26855,-0.68197 0.26855,-1.31348 l 0,-6.78222" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5351"
+ d="m 264.83261,171.55156 c -0.48177,0 -0.86263,0.18881 -1.14258,0.56641 -0.27995,0.37435 -0.41992,0.88867 -0.41992,1.54296 0,0.6543 0.13835,1.17025 0.41504,1.54786 0.27995,0.37435 0.66243,0.56152 1.14746,0.56152 0.47851,0 0.85774,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -10e-6,-0.64778 -0.13998,-1.16047 -0.41992,-1.53808 -0.27996,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,1e-5 1.39485,0.25391 1.84082,0.76172 0.44596,0.50782 0.66894,1.21094 0.66895,2.10937 -10e-6,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66407,-1.21419 -0.66406,-2.10938 -1e-5,-0.89843 0.22135,-1.60155 0.66406,-2.10937 0.44596,-0.50781 1.06119,-0.76171 1.8457,-0.76172" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5353"
+ d="m 268.82675,170.92168 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.12891 0.89844,0 0,1.1377 -0.89844,0 0,-1.1377" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5355"
+ d="m 276.14609,173.08965 0,3.30078 -0.89844,0 0,-3.27149 c 0,-0.51757 -0.10092,-0.90494 -0.30273,-1.16211 -0.20183,-0.25715 -0.50457,-0.38573 -0.90821,-0.38574 -0.48503,1e-5 -0.86751,0.15463 -1.14746,0.46387 -0.27995,0.30925 -0.41992,0.7308 -0.41992,1.26465 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32878 0.46712,-0.57454 0.75684,-0.73731 0.29296,-0.16275 0.62988,-0.24413 1.01074,-0.24414 0.62825,1e-5 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.48339,0.95866 0.4834,1.71387" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5357"
+ d="m 251.82968,181.83965 0,0.96191 c -0.37435,-0.17903 -0.72754,-0.31249 -1.05957,-0.40039 -0.33203,-0.0879 -0.65267,-0.13183 -0.96191,-0.13184 -0.53712,1e-5 -0.95215,0.10418 -1.24512,0.3125 -0.28972,0.20834 -0.43457,0.50457 -0.43457,0.88867 0,0.32228 0.096,0.56642 0.28809,0.73243 0.19531,0.16276 0.56314,0.2946 1.10351,0.3955 l 0.5957,0.12207 c 0.73568,0.13998 1.27767,0.38738 1.62598,0.74219 0.35156,0.35157 0.52734,0.82357 0.52734,1.41602 0,0.70638 -0.23763,1.24186 -0.71289,1.60644 -0.47201,0.36459 -1.16536,0.54688 -2.08007,0.54688 -0.34506,0 -0.7129,-0.0391 -1.10352,-0.11719 -0.38737,-0.0781 -0.78939,-0.19368 -1.20605,-0.34668 l 0,-1.01562 c 0.40038,0.22461 0.79264,0.39388 1.17675,0.50781 0.38412,0.11393 0.76172,0.1709 1.13282,0.1709 0.56314,0 0.99771,-0.11068 1.30371,-0.33203 0.30598,-0.22136 0.45898,-0.53711 0.45898,-0.94727 0,-0.35807 -0.11068,-0.63802 -0.33203,-0.83984 -0.2181,-0.20182 -0.5778,-0.35319 -1.0791,-0.45411 l -0.60059,-0.11718 c -0.73568,-0.14648 -1.2679,-0.37598 -1.59668,-0.68848 -0.32877,-0.31249 -0.49316,-0.74706 -0.49316,-1.30371 0,-0.64453 0.22623,-1.15234 0.67871,-1.52344 0.45573,-0.37108 1.08235,-0.55663 1.87988,-0.55664 0.3418,1e-5 0.6901,0.0309 1.04492,0.0928 0.35482,0.0618 0.71777,0.15462 1.08887,0.27832" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5359"
+ d="m 254.65683,181.86894 0,1.55274 1.85059,0 0,0.69824 -1.85059,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92286,0 0,0.75196 -0.92286,0 c -0.69336,0 -1.17187,-0.12858 -1.43554,-0.38575 -0.26368,-0.26041 -0.39551,-0.73242 -0.39551,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55274 0.90332,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5361"
+ d="m 260.86288,184.26152 c -0.10091,-0.0586 -0.21159,-0.10091 -0.33203,-0.12695 -0.11719,-0.0293 -0.2474,-0.0439 -0.39062,-0.0439 -0.50782,1e-5 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.4209 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33203 0.43457,-0.5778 0.7373,-0.73731 0.30274,-0.16275 0.67057,-0.24413 1.10352,-0.24414 0.0618,10e-6 0.1302,0.005 0.20508,0.0146 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5363"
+ d="m 264.30038,186.1414 c -0.72591,1e-5 -1.22884,0.083 -1.50878,0.24903 -0.27995,0.16601 -0.41993,0.44922 -0.41993,0.84961 0,0.31901 0.10417,0.57291 0.3125,0.76171 0.21159,0.18555 0.49805,0.27833 0.85938,0.27833 0.49804,0 0.8968,-0.17579 1.19629,-0.52735 0.30273,-0.35481 0.45409,-0.82519 0.4541,-1.41113 l 0,-0.2002 -0.89356,0 m 1.792,-0.37109 0,3.12012 -0.89844,0 0,-0.83008 c -0.20508,0.33203 -0.46062,0.5778 -0.7666,0.7373 -0.306,0.15625 -0.68034,0.23438 -1.12305,0.23438 -0.5599,0 -1.00586,-0.15625 -1.33789,-0.46875 -0.32878,-0.31576 -0.49316,-0.73731 -0.49316,-1.26465 0,-0.61523 0.20507,-1.0791 0.61523,-1.3916 0.41341,-0.3125 1.02864,-0.46875 1.8457,-0.46875 l 1.25977,0 0,-0.0879 c -10e-6,-0.41341 -0.13672,-0.73242 -0.41016,-0.95703 -0.27018,-0.22786 -0.65104,-0.3418 -1.14258,-0.3418 -0.3125,0 -0.61686,0.0374 -0.91308,0.1123 -0.29623,0.0749 -0.58106,0.18718 -0.85449,0.33692 l 0,-0.83008 c 0.32877,-0.12695 0.64778,-0.22135 0.95703,-0.2832 0.30924,-0.0651 0.61035,-0.0976 0.90332,-0.0977 0.79101,1e-5 1.38183,0.20508 1.77246,0.61524 0.39062,0.41016 0.58593,1.0319 0.58594,1.86523" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5365"
+ d="m 268.83652,181.86894 0,1.55274 1.85058,0 0,0.69824 -1.85058,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75196 -0.92285,0 c -0.69336,0 -1.17187,-0.12858 -1.43555,-0.38575 -0.26367,-0.26041 -0.3955,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55274 0.90332,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5367"
+ d="m 276.55136,185.93144 0,0.43946 -4.13086,0 c 0.0391,0.61849 0.22461,1.09049 0.55664,1.41601 0.33529,0.32227 0.80078,0.4834 1.39649,0.4834 0.34505,0 0.6787,-0.0423 1.00097,-0.12695 0.32552,-0.0846 0.64778,-0.21159 0.9668,-0.38086 l 0,0.84961 c -0.32227,0.13672 -0.65267,0.24088 -0.99121,0.3125 -0.33855,0.0716 -0.68197,0.10742 -1.03027,0.10742 -0.8724,0 -1.56413,-0.25391 -2.0752,-0.76172 -0.50781,-0.50781 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89518 0.24089,-1.60481 0.72266,-2.1289 0.48502,-0.52734 1.13769,-0.79101 1.95801,-0.79102 0.73567,1e-5 1.31672,0.23764 1.74316,0.71289 0.42968,0.47201 0.64453,1.11491 0.64453,1.92871 m -0.89844,-0.26367 c -0.007,-0.49153 -0.14486,-0.88378 -0.41504,-1.17676 -0.26693,-0.29296 -0.62174,-0.43945 -1.06445,-0.43945 -0.5013,0 -0.90332,0.14161 -1.20605,0.4248 -0.29948,0.28321 -0.47201,0.68197 -0.51758,1.19629 l 3.20312,-0.005" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5369"
+ d="m 281.6246,186.09258 c 0,-0.65104 -0.13509,-1.1556 -0.40527,-1.51368 -0.26693,-0.35807 -0.64291,-0.5371 -1.12793,-0.53711 -0.48177,1e-5 -0.85775,0.17904 -1.12793,0.53711 -0.26693,0.35808 -0.40039,0.86264 -0.40039,1.51368 0,0.64778 0.13346,1.15071 0.40039,1.50878 0.27018,0.35808 0.64616,0.53711 1.12793,0.53711 0.48502,0 0.861,-0.17903 1.12793,-0.53711 0.27018,-0.35807 0.40527,-0.861 0.40527,-1.50878 m 0.89844,2.11914 c 0,0.93099 -0.20671,1.62272 -0.62012,2.07519 -0.41341,0.45573 -1.04655,0.68359 -1.89941,0.68359 -0.31576,0 -0.61361,-0.0244 -0.89356,-0.0732 -0.27994,-0.0456 -0.55175,-0.11719 -0.81542,-0.21484 l 0,-0.87402 c 0.26367,0.14322 0.52408,0.24902 0.78125,0.31738 0.25715,0.0684 0.5192,0.10254 0.78613,0.10254 0.58919,0 1.03027,-0.15463 1.32324,-0.46387 0.29296,-0.30599 0.43945,-0.76986 0.43945,-1.3916 l 0,-0.44434 c -0.18555,0.32227 -0.42318,0.56315 -0.71289,0.72266 -0.28971,0.1595 -0.63639,0.23926 -1.04004,0.23926 -0.67057,0 -1.21094,-0.25554 -1.62109,-0.7666 -0.41016,-0.51107 -0.61524,-1.18815 -0.61523,-2.03125 -1e-5,-0.84636 0.20507,-1.52507 0.61523,-2.03614 0.41015,-0.51106 0.95052,-0.76659 1.62109,-0.7666 0.40365,1e-5 0.75033,0.0798 1.04004,0.23926 0.28971,0.15951 0.52734,0.40039 0.71289,0.72265 l 0,-0.83007 0.89844,0 0,4.79004" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5371"
+ d="m 286.64902,189.39824 c -0.25391,0.65104 -0.50131,1.07584 -0.74219,1.27441 -0.24089,0.19857 -0.56315,0.29785 -0.9668,0.29785 l -0.71777,0 0,-0.75195 0.52734,0 c 0.2474,0 0.43945,-0.0586 0.57618,-0.17578 0.13671,-0.11719 0.28808,-0.39388 0.4541,-0.83008 l 0.16113,-0.41015 -2.21191,-5.38086 0.95214,0 1.70899,4.27734 1.70898,-4.27734 0.95215,0 -2.40234,5.97656" />
+ </g>
+ <g
+ id="text5165-5-4"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ inkscape:transform-center-y="9.7457386"
+ inkscape:transform-center-x="-9.453999"
+ transform="matrix(0.54957254,0.835446,-0.835446,0.54957254,1.9508832,0)">
+ <path
+ inkscape:connector-curvature="0"
+ id="path5374"
+ d="m 254.2605,-262.62909 4.60937,0 0,0.83008 -3.62304,0 0,2.1582 3.47168,0 0,0.83008 -3.47168,0 0,2.6416 3.71093,0 0,0.83008 -4.69726,0 0,-7.29004" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5376"
+ d="m 265.09546,-258.63983 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51758 -0.10091,-0.90495 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.90821,-0.38575 -0.48502,10e-6 -0.86751,0.15463 -1.14746,0.46387 -0.27995,0.30925 -0.41992,0.7308 -0.41992,1.26465 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.73731 0.29296,-0.16275 0.62988,-0.24413 1.01074,-0.24414 0.62825,10e-6 1.10351,0.19532 1.42578,0.58594 0.32226,0.38738 0.48339,0.95866 0.4834,1.71387" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5378"
+ d="m 270.49585,-259.97772 0,-2.95899 0.89844,0 0,7.59766 -0.89844,0 0,-0.82031 c -0.18881,0.32552 -0.42806,0.56803 -0.71777,0.72754 -0.28647,0.15625 -0.63152,0.23437 -1.03516,0.23437 -0.66081,0 -1.19955,-0.26367 -1.61621,-0.79101 -0.41341,-0.52735 -0.62012,-1.22071 -0.62012,-2.08008 0,-0.85937 0.20671,-1.55273 0.62012,-2.08008 0.41666,-0.52734 0.9554,-0.79101 1.61621,-0.79102 0.40364,10e-6 0.74869,0.0798 1.03516,0.23926 0.28971,0.15626 0.52896,0.39714 0.71777,0.72266 m -3.06152,1.90918 c -10e-6,0.66081 0.13509,1.18001 0.40527,1.55761 0.27343,0.37435 0.64778,0.56153 1.12305,0.56153 0.47525,0 0.8496,-0.18718 1.12304,-0.56153 0.27344,-0.3776 0.41016,-0.8968 0.41016,-1.55761 0,-0.66081 -0.13672,-1.17838 -0.41016,-1.55274 -0.27344,-0.3776 -0.64779,-0.5664 -1.12304,-0.5664 -0.47527,0 -0.84962,0.1888 -1.12305,0.5664 -0.27018,0.37436 -0.40528,0.89193 -0.40527,1.55274" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5380"
+ d="m 277.65405,-262.38983 0,0.96191 c -0.37435,-0.17903 -0.72754,-0.31249 -1.05957,-0.40039 -0.33203,-0.0879 -0.65267,-0.13183 -0.96191,-0.13183 -0.53711,0 -0.95215,0.10417 -1.24512,0.3125 -0.28971,0.20834 -0.43457,0.50456 -0.43457,0.88867 0,0.32227 0.096,0.56641 0.28809,0.73242 0.19531,0.16276 0.56315,0.2946 1.10351,0.39551 l 0.59571,0.12207 c 0.73567,0.13998 1.27766,0.38737 1.62597,0.74219 0.35156,0.35156 0.52734,0.82357 0.52735,1.41601 -10e-6,0.70638 -0.23764,1.24186 -0.71289,1.60645 -0.47201,0.36458 -1.16537,0.54687 -2.08008,0.54687 -0.34506,0 -0.7129,-0.0391 -1.10352,-0.11719 -0.38737,-0.0781 -0.78939,-0.19368 -1.20605,-0.34668 l 0,-1.01562 c 0.40039,0.22461 0.79264,0.39388 1.17675,0.50781 0.38412,0.11393 0.76172,0.1709 1.13282,0.1709 0.56314,0 0.99771,-0.11068 1.30371,-0.33203 0.30598,-0.22135 0.45898,-0.53711 0.45898,-0.94727 0,-0.35807 -0.11068,-0.63802 -0.33203,-0.83984 -0.2181,-0.20182 -0.5778,-0.35319 -1.0791,-0.4541 l -0.60059,-0.11719 c -0.73568,-0.14648 -1.2679,-0.37597 -1.59668,-0.68848 -0.32877,-0.31249 -0.49316,-0.74706 -0.49316,-1.30371 0,-0.64452 0.22624,-1.15233 0.67871,-1.52343 0.45573,-0.37109 1.08236,-0.55664 1.87988,-0.55665 0.3418,10e-6 0.6901,0.0309 1.04493,0.0928 0.35481,0.0619 0.71776,0.15463 1.08886,0.27832" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5382"
+ d="m 280.4812,-262.36053 0,1.55273 1.85059,0 0,0.69824 -1.85059,0 0,2.96875 c 0,0.44597 0.0602,0.73242 0.18067,0.85938 0.12369,0.12695 0.37271,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69337,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26042 -0.39551,-0.73242 -0.39551,-1.41602 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55273 0.90332,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5384"
+ d="m 286.68726,-259.96796 c -0.10092,-0.0586 -0.2116,-0.1009 -0.33204,-0.12695 -0.11719,-0.0293 -0.24739,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49804 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.4209 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33203 0.43457,-0.5778 0.73731,-0.73731 0.30273,-0.16275 0.67057,-0.24413 1.10351,-0.24414 0.0618,10e-6 0.13021,0.005 0.20508,0.0147 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5386"
+ d="m 290.12476,-258.08807 c -0.72592,0 -1.22885,0.083 -1.50879,0.24902 -0.27995,0.16602 -0.41993,0.44922 -0.41993,0.84961 0,0.31901 0.10417,0.57292 0.3125,0.76172 0.21159,0.18555 0.49805,0.27832 0.85938,0.27832 0.49804,0 0.89681,-0.17578 1.19629,-0.52735 0.30273,-0.35481 0.4541,-0.82519 0.4541,-1.41113 l 0,-0.20019 -0.89355,0 m 1.79199,-0.3711 0,3.12012 -0.89844,0 0,-0.83008 c -0.20508,0.33203 -0.46062,0.5778 -0.7666,0.73731 -0.30599,0.15625 -0.68034,0.23437 -1.12305,0.23437 -0.5599,0 -1.00586,-0.15625 -1.33789,-0.46875 -0.32878,-0.31575 -0.49316,-0.7373 -0.49316,-1.26465 0,-0.61523 0.20507,-1.0791 0.61523,-1.3916 0.41341,-0.3125 1.02865,-0.46875 1.8457,-0.46875 l 1.25977,0 0,-0.0879 c 0,-0.41341 -0.13672,-0.73242 -0.41016,-0.95703 -0.27018,-0.22786 -0.65104,-0.34179 -1.14257,-0.3418 -0.31251,1e-5 -0.61687,0.0374 -0.91309,0.11231 -0.29623,0.0749 -0.58106,0.18718 -0.85449,0.33691 l 0,-0.83008 c 0.32877,-0.12694 0.64778,-0.22135 0.95703,-0.2832 0.30924,-0.0651 0.61035,-0.0977 0.90332,-0.0977 0.79101,10e-6 1.38183,0.20509 1.77246,0.61524 0.39062,0.41016 0.58593,1.0319 0.58594,1.86523" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5388"
+ d="m 294.66089,-262.36053 0,1.55273 1.85058,0 0,0.69824 -1.85058,0 0,2.96875 c 0,0.44597 0.0602,0.73242 0.18066,0.85938 0.1237,0.12695 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17187,-0.12858 -1.43554,-0.38574 -0.26368,-0.26042 -0.39551,-0.73242 -0.39551,-1.41602 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55273 0.90332,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5390"
+ d="m 302.37573,-258.29803 0,0.43945 -4.13086,0 c 0.0391,0.61849 0.22461,1.09049 0.55664,1.41601 0.33529,0.32227 0.80078,0.4834 1.39649,0.4834 0.34505,0 0.6787,-0.0423 1.00097,-0.12695 0.32552,-0.0846 0.64779,-0.21159 0.9668,-0.38086 l 0,0.84961 c -0.32227,0.13672 -0.65267,0.24088 -0.99121,0.3125 -0.33855,0.0716 -0.68197,0.10742 -1.03027,0.10742 -0.8724,0 -1.56413,-0.2539 -2.0752,-0.76172 -0.50781,-0.50781 -0.76172,-1.19466 -0.76172,-2.06054 0,-0.89518 0.24089,-1.60482 0.72266,-2.12891 0.48502,-0.52734 1.13769,-0.79101 1.95801,-0.79102 0.73567,10e-6 1.31672,0.23764 1.74316,0.71289 0.42968,0.47201 0.64453,1.11492 0.64453,1.92872 m -0.89844,-0.26368 c -0.007,-0.49153 -0.14486,-0.88378 -0.41503,-1.17675 -0.26694,-0.29297 -0.62175,-0.43945 -1.06446,-0.43946 -0.5013,10e-6 -0.90332,0.14161 -1.20605,0.42481 -0.29948,0.2832 -0.47201,0.68197 -0.51758,1.19629 l 3.20312,-0.005" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5392"
+ d="m 307.44897,-258.1369 c 0,-0.65104 -0.13509,-1.1556 -0.40527,-1.51367 -0.26693,-0.35807 -0.64291,-0.53711 -1.12793,-0.53711 -0.48177,0 -0.85775,0.17904 -1.12793,0.53711 -0.26693,0.35807 -0.40039,0.86263 -0.40039,1.51367 0,0.64779 0.13346,1.15072 0.40039,1.50879 0.27018,0.35807 0.64616,0.53711 1.12793,0.53711 0.48502,0 0.861,-0.17904 1.12793,-0.53711 0.27018,-0.35807 0.40527,-0.861 0.40527,-1.50879 m 0.89844,2.11914 c 0,0.93099 -0.20671,1.62272 -0.62012,2.07519 -0.41341,0.45573 -1.04655,0.6836 -1.89941,0.6836 -0.31576,0 -0.61361,-0.0244 -0.89355,-0.0732 -0.27995,-0.0456 -0.55176,-0.11719 -0.81543,-0.21485 l 0,-0.87402 c 0.26367,0.14323 0.52408,0.24902 0.78125,0.31738 0.25716,0.0684 0.5192,0.10254 0.78613,0.10254 0.58919,0 1.03027,-0.15462 1.32324,-0.46387 0.29297,-0.30599 0.43945,-0.76985 0.43945,-1.3916 l 0,-0.44433 c -0.18555,0.32226 -0.42318,0.56315 -0.71289,0.72265 -0.28971,0.15951 -0.63639,0.23926 -1.04004,0.23926 -0.67057,0 -1.21093,-0.25553 -1.62109,-0.7666 -0.41016,-0.51107 -0.61523,-1.18815 -0.61523,-2.03125 0,-0.84635 0.20507,-1.52506 0.61523,-2.03613 0.41016,-0.51107 0.95052,-0.7666 1.62109,-0.76661 0.40365,10e-6 0.75033,0.0798 1.04004,0.23926 0.28971,0.15951 0.52734,0.4004 0.71289,0.72266 l 0,-0.83008 0.89844,0 0,4.79004" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5394"
+ d="m 312.47339,-254.83124 c -0.25391,0.65104 -0.50131,1.07585 -0.74219,1.27442 -0.24089,0.19856 -0.56315,0.29785 -0.9668,0.29785 l -0.71777,0 0,-0.75196 0.52734,0 c 0.2474,0 0.43946,-0.0586 0.57618,-0.17578 0.13671,-0.11719 0.28808,-0.39388 0.4541,-0.83007 l 0.16113,-0.41016 -2.21191,-5.38086 0.95215,0 1.70898,4.27734 1.70898,-4.27734 0.95215,0 -2.40234,5.97656" />
+ </g>
+ <g
+ id="text5165-5-4-9"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ transform="matrix(0.83883094,-0.544392,0.544392,0.83883094,0,0)">
+ <path
+ inkscape:connector-curvature="0"
+ id="path5397"
+ d="m 176.55505,301.96356 0,0.96192 c -0.37435,-0.17903 -0.72754,-0.3125 -1.05957,-0.40039 -0.33203,-0.0879 -0.65267,-0.13183 -0.96191,-0.13184 -0.53711,10e-6 -0.95215,0.10417 -1.24512,0.3125 -0.28971,0.20834 -0.43457,0.50456 -0.43457,0.88867 0,0.32227 0.096,0.56641 0.28809,0.73242 0.19531,0.16277 0.56315,0.2946 1.10351,0.39551 l 0.59571,0.12207 c 0.73567,0.13998 1.27766,0.38737 1.62597,0.74219 0.35156,0.35156 0.52734,0.82357 0.52735,1.41601 -1e-5,0.70639 -0.23764,1.24187 -0.71289,1.60645 -0.47201,0.36458 -1.16537,0.54687 -2.08008,0.54687 -0.34506,0 -0.71289,-0.0391 -1.10352,-0.11718 -0.38737,-0.0781 -0.78939,-0.19369 -1.20605,-0.34668 l 0,-1.01563 c 0.40039,0.22461 0.79264,0.39388 1.17676,0.50782 0.38411,0.11393 0.76171,0.17089 1.13281,0.17089 0.56315,0 0.99772,-0.11067 1.30371,-0.33203 0.30598,-0.22135 0.45898,-0.53711 0.45898,-0.94726 0,-0.35807 -0.11068,-0.63802 -0.33203,-0.83985 -0.2181,-0.20182 -0.5778,-0.35318 -1.0791,-0.4541 l -0.60059,-0.11719 c -0.73567,-0.14648 -1.2679,-0.37597 -1.59668,-0.68847 -0.32877,-0.3125 -0.49316,-0.74707 -0.49316,-1.30371 0,-0.64453 0.22624,-1.15234 0.67871,-1.52344 0.45573,-0.37109 1.08236,-0.55663 1.87988,-0.55664 0.3418,1e-5 0.6901,0.0309 1.04493,0.0928 0.35481,0.0619 0.71776,0.15463 1.08886,0.27832" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5399"
+ d="m 178.49353,303.54559 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5401"
+ d="m 184.8656,304.37567 0,-2.95898 0.89844,0 0,7.59765 -0.89844,0 0,-0.82031 c -0.18881,0.32552 -0.42806,0.56803 -0.71777,0.72754 -0.28646,0.15625 -0.63152,0.23437 -1.03516,0.23437 -0.66081,0 -1.19954,-0.26367 -1.61621,-0.79101 -0.41341,-0.52734 -0.62012,-1.2207 -0.62012,-2.08008 0,-0.85937 0.20671,-1.55273 0.62012,-2.08008 0.41667,-0.52734 0.9554,-0.79101 1.61621,-0.79101 0.40364,0 0.7487,0.0798 1.03516,0.23926 0.28971,0.15625 0.52896,0.39714 0.71777,0.72265 m -3.06152,1.90918 c 0,0.66081 0.13509,1.18002 0.40527,1.55762 0.27344,0.37435 0.64778,0.56152 1.12305,0.56152 0.47525,0 0.8496,-0.18717 1.12304,-0.56152 0.27344,-0.3776 0.41016,-0.89681 0.41016,-1.55762 0,-0.6608 -0.13672,-1.17838 -0.41016,-1.55273 -0.27344,-0.3776 -0.64779,-0.5664 -1.12304,-0.56641 -0.47527,1e-5 -0.84961,0.18881 -1.12305,0.56641 -0.27018,0.37435 -0.40527,0.89193 -0.40527,1.55273" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5403"
+ d="m 192.29236,306.05536 0,0.43945 -4.13086,0 c 0.0391,0.61849 0.22461,1.0905 0.55664,1.41602 0.33528,0.32226 0.80078,0.4834 1.39648,0.4834 0.34505,0 0.67871,-0.0423 1.00098,-0.12696 0.32552,-0.0846 0.64778,-0.21158 0.9668,-0.38086 l 0,0.84961 c -0.32227,0.13672 -0.65268,0.24089 -0.99121,0.3125 -0.33855,0.0716 -0.68197,0.10742 -1.03028,0.10742 -0.8724,0 -1.56413,-0.2539 -2.07519,-0.76171 -0.50782,-0.50782 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89518 0.24088,-1.60481 0.72266,-2.12891 0.48502,-0.52734 1.13769,-0.79101 1.958,-0.79101 0.73568,0 1.31673,0.23763 1.74317,0.71289 0.42968,0.47201 0.64452,1.11491 0.64453,1.92871 m -0.89844,-0.26367 c -0.007,-0.49154 -0.14486,-0.88379 -0.41504,-1.17676 -0.26693,-0.29296 -0.62175,-0.43945 -1.06445,-0.43945 -0.50131,0 -0.90332,0.1416 -1.20606,0.4248 -0.29948,0.28321 -0.472,0.68197 -0.51757,1.19629 l 3.20312,-0.005" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5405"
+ d="m 198.17615,301.96356 0,0.96192 c -0.37436,-0.17903 -0.72755,-0.3125 -1.05957,-0.40039 -0.33204,-0.0879 -0.65268,-0.13183 -0.96192,-0.13184 -0.53711,10e-6 -0.95215,0.10417 -1.24511,0.3125 -0.28972,0.20834 -0.43458,0.50456 -0.43457,0.88867 -10e-6,0.32227 0.096,0.56641 0.28808,0.73242 0.19531,0.16277 0.56315,0.2946 1.10352,0.39551 l 0.5957,0.12207 c 0.73567,0.13998 1.27766,0.38737 1.62598,0.74219 0.35155,0.35156 0.52733,0.82357 0.52734,1.41601 -1e-5,0.70639 -0.23764,1.24187 -0.71289,1.60645 -0.47201,0.36458 -1.16537,0.54687 -2.08008,0.54687 -0.34505,0 -0.71289,-0.0391 -1.10351,-0.11718 -0.38738,-0.0781 -0.78939,-0.19369 -1.20606,-0.34668 l 0,-1.01563 c 0.40039,0.22461 0.79264,0.39388 1.17676,0.50782 0.38411,0.11393 0.76172,0.17089 1.13281,0.17089 0.56315,0 0.99772,-0.11067 1.30371,-0.33203 0.30599,-0.22135 0.45898,-0.53711 0.45899,-0.94726 -1e-5,-0.35807 -0.11068,-0.63802 -0.33203,-0.83985 -0.21811,-0.20182 -0.57781,-0.35318 -1.07911,-0.4541 l -0.60058,-0.11719 c -0.73568,-0.14648 -1.26791,-0.37597 -1.59668,-0.68847 -0.32878,-0.3125 -0.49317,-0.74707 -0.49317,-1.30371 0,-0.64453 0.22624,-1.15234 0.67872,-1.52344 0.45572,-0.37109 1.08235,-0.55663 1.87988,-0.55664 0.34179,1e-5 0.6901,0.0309 1.04492,0.0928 0.35481,0.0619 0.71777,0.15463 1.08887,0.27832" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5407"
+ d="m 201.0033,301.99286 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c -1e-5,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12695 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.39551,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5409"
+ d="m 207.20935,304.38544 c -0.10091,-0.0586 -0.21159,-0.10091 -0.33203,-0.12696 -0.11719,-0.0293 -0.2474,-0.0439 -0.39063,-0.0439 -0.50781,0 -0.89844,0.16602 -1.17187,0.49805 -0.27018,0.32878 -0.40528,0.80241 -0.40527,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43456,-0.57779 0.7373,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10352,-0.24414 0.0618,0 0.1302,0.005 0.20507,0.0146 0.0749,0.007 0.15788,0.0179 0.24903,0.0342 l 0.005,0.92285" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5411"
+ d="m 210.64685,306.26532 c -0.72591,0 -1.22884,0.083 -1.50879,0.24902 -0.27995,0.16602 -0.41992,0.44922 -0.41992,0.84961 0,0.31901 0.10416,0.57292 0.3125,0.76172 0.21159,0.18555 0.49804,0.27832 0.85937,0.27832 0.49805,0 0.89681,-0.17578 1.19629,-0.52734 0.30273,-0.35482 0.4541,-0.8252 0.45411,-1.41113 l 0,-0.2002 -0.89356,0 m 1.79199,-0.37109 0,3.12011 -0.89843,0 0,-0.83007 c -0.20509,0.33203 -0.46062,0.57779 -0.76661,0.7373 -0.30599,0.15625 -0.68034,0.23437 -1.12304,0.23437 -0.5599,0 -1.00586,-0.15625 -1.33789,-0.46875 -0.32878,-0.31575 -0.49317,-0.7373 -0.49317,-1.26464 0,-0.61524 0.20508,-1.0791 0.61524,-1.39161 0.41341,-0.31249 1.02864,-0.46874 1.8457,-0.46875 l 1.25977,0 0,-0.0879 c -1e-5,-0.4134 -0.13673,-0.73241 -0.41016,-0.95703 -0.27019,-0.22786 -0.65105,-0.34179 -1.14258,-0.34179 -0.3125,0 -0.61686,0.0374 -0.91309,0.1123 -0.29622,0.0749 -0.58105,0.18718 -0.85449,0.33691 l 0,-0.83007 c 0.32878,-0.12695 0.64779,-0.22135 0.95703,-0.28321 0.30925,-0.0651 0.61035,-0.0976 0.90332,-0.0976 0.79102,0 1.38184,0.20508 1.77247,0.61523 0.39062,0.41016 0.58593,1.03191 0.58593,1.86524" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5413"
+ d="m 215.18298,301.99286 0,1.55273 1.85059,0 0,0.69825 -1.85059,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18067,0.85937 0.12369,0.12695 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.39551,-0.73242 -0.39551,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5415"
+ d="m 222.89783,306.05536 0,0.43945 -4.13086,0 c 0.0391,0.61849 0.22461,1.0905 0.55664,1.41602 0.33528,0.32226 0.80078,0.4834 1.39648,0.4834 0.34505,0 0.67871,-0.0423 1.00098,-0.12696 0.32552,-0.0846 0.64778,-0.21158 0.9668,-0.38086 l 0,0.84961 c -0.32227,0.13672 -0.65268,0.24089 -0.99121,0.3125 -0.33855,0.0716 -0.68197,0.10742 -1.03028,0.10742 -0.8724,0 -1.56413,-0.2539 -2.07519,-0.76171 -0.50782,-0.50782 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89518 0.24088,-1.60481 0.72265,-2.12891 0.48503,-0.52734 1.1377,-0.79101 1.95801,-0.79101 0.73567,0 1.31673,0.23763 1.74317,0.71289 0.42968,0.47201 0.64452,1.11491 0.64453,1.92871 m -0.89844,-0.26367 c -0.007,-0.49154 -0.14486,-0.88379 -0.41504,-1.17676 -0.26693,-0.29296 -0.62175,-0.43945 -1.06445,-0.43945 -0.50131,0 -0.90333,0.1416 -1.20606,0.4248 -0.29948,0.28321 -0.472,0.68197 -0.51758,1.19629 l 3.20313,-0.005" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5417"
+ d="m 227.97107,306.21649 c -1e-5,-0.65104 -0.1351,-1.15559 -0.40527,-1.51367 -0.26694,-0.35807 -0.64291,-0.5371 -1.12793,-0.53711 -0.48178,1e-5 -0.85775,0.17904 -1.12793,0.53711 -0.26693,0.35808 -0.4004,0.86263 -0.40039,1.51367 -1e-5,0.64779 0.13346,1.15072 0.40039,1.50879 0.27018,0.35807 0.64615,0.53711 1.12793,0.53711 0.48502,0 0.86099,-0.17904 1.12793,-0.53711 0.27017,-0.35807 0.40526,-0.861 0.40527,-1.50879 m 0.89844,2.11914 c -1e-5,0.93099 -0.20671,1.62272 -0.62012,2.0752 -0.41342,0.45572 -1.04655,0.68359 -1.89941,0.68359 -0.31576,0 -0.61361,-0.0244 -0.89356,-0.0732 -0.27995,-0.0456 -0.55176,-0.11719 -0.81543,-0.21484 l 0,-0.87403 c 0.26367,0.14323 0.52409,0.24902 0.78125,0.31738 0.25716,0.0684 0.5192,0.10254 0.78613,0.10254 0.58919,0 1.03027,-0.15462 1.32325,-0.46386 0.29296,-0.30599 0.43944,-0.76986 0.43945,-1.3916 l 0,-0.44434 c -0.18555,0.32227 -0.42318,0.56315 -0.71289,0.72266 -0.28972,0.1595 -0.6364,0.23925 -1.04004,0.23925 -0.67058,0 -1.21094,-0.25553 -1.62109,-0.7666 -0.41016,-0.51106 -0.61524,-1.18815 -0.61524,-2.03125 0,-0.84635 0.20508,-1.52506 0.61524,-2.03613 0.41015,-0.51106 0.95051,-0.7666 1.62109,-0.7666 0.40364,0 0.75032,0.0798 1.04004,0.23926 0.28971,0.15951 0.52734,0.40039 0.71289,0.72265 l 0,-0.83008 0.89844,0 0,4.79004" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5419"
+ d="m 232.99548,309.52216 c -0.25391,0.65104 -0.5013,1.07584 -0.74218,1.27441 -0.24089,0.19857 -0.56316,0.29785 -0.9668,0.29785 l -0.71777,0 0,-0.75195 0.52734,0 c 0.24739,0 0.43945,-0.0586 0.57617,-0.17578 0.13672,-0.11719 0.28808,-0.39388 0.4541,-0.83008 l 0.16114,-0.41016 -2.21192,-5.38086 0.95215,0 1.70898,4.27735 1.70899,-4.27735 0.95215,0 -2.40235,5.97657" />
+ </g>
+ <path
+ id="path6-2"
+ style="fill:#ffff40;fill-opacity:0.59999999999999998;fill-rule:evenodd;stroke:#ff8000;stroke-width:2.5;stroke-miterlimit:4;stroke-dasharray:none"
+ d="m 288.13141,229.61023 0.57995,-6.579 1.73985,-6.57899 2.89975,-6.0069 3.76967,-5.43482 4.63959,-4.57669 5.50952,-4.00461 6.37945,-2.57438 6.37944,-1.71626 6.66942,-0.57209 6.66942,0.57209 6.66941,1.71626 6.08947,2.57438 5.50952,4.00461 4.6396,4.57669 4.05964,5.43482 2.60977,6.0069 1.73985,6.57899 0.86993,6.579 -0.86993,6.57899 -1.73985,6.29295 -2.60977,6.29295 -4.05964,5.43482 -4.6396,4.57669 -5.50952,3.71856 -6.08947,2.86043 -6.66941,1.71626 -6.66942,0.57208 -0.57995,6.57899 -1.73985,6.579 -2.89975,6.0069 -3.76967,5.43482 -4.63959,4.57669 -5.50952,4.00461 -6.37945,2.57438 -6.37944,1.71626 -6.66942,0.85813 -6.66941,-0.85813 -6.66942,-1.71626 -6.08947,-2.57438 -5.50952,-4.00461 -4.63959,-4.57669 -4.05965,-5.43482 -2.60977,-6.0069 -1.73985,-6.579 -0.57995,-6.57899 0.57995,-6.57899 1.73985,-6.29295 2.60977,-6.0069 4.05965,-5.72087 4.63959,-4.57669 5.50952,-3.71856 6.08947,-2.86043 6.66942,-1.71626 6.66941,-0.57208 0,0 z"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="circle8"
+ d="m 289.58129,267.65396 c 0,0.78989 -0.64913,1.43022 -1.44988,1.43022 -0.80074,0 -1.44987,-0.64033 -1.44987,-1.43022 0,-0.78988 0.64913,-1.43021 1.44987,-1.43021 0.80075,0 1.44988,0.64033 1.44988,1.43021 z"
+ style="fill:#333399;fill-opacity:0.6;stroke:#333399;stroke-width:0.57600439" />
+ <path
+ inkscape:connector-curvature="0"
+ id="circle10"
+ d="m 328.14792,229.61023 c 0,0.78988 -0.64913,1.43021 -1.44987,1.43021 -0.80074,0 -1.44988,-0.64033 -1.44988,-1.43021 0,-0.78989 0.64914,-1.43022 1.44988,-1.43022 0.80074,0 1.44987,0.64033 1.44987,1.43022 z"
+ style="fill:#333399;fill-opacity:0.6;stroke:#333399;stroke-width:0.57600439" />
+ <g
+ id="text5165-5-4-9-9"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ transform="matrix(0.99962767,-0.02728583,0.02728583,0.99962767,0,0)">
+ <path
+ inkscape:connector-curvature="0"
+ id="path5424"
+ d="m 303.64093,211.91898 0,2.73925 1.24023,0 c 0.45899,1e-5 0.8138,-0.11881 1.06446,-0.35644 0.25064,-0.23763 0.37597,-0.57617 0.37597,-1.01563 0,-0.43619 -0.12533,-0.7731 -0.37597,-1.01074 -0.25066,-0.23762 -0.60547,-0.35644 -1.06446,-0.35644 l -1.24023,0 m -0.98633,-0.81055 2.22656,0 c 0.81706,1e-5 1.43392,0.18555 1.85059,0.55664 0.41992,0.36784 0.62988,0.90821 0.62988,1.62109 0,0.71941 -0.20996,1.26303 -0.62988,1.63086 -0.41667,0.36784 -1.03353,0.55176 -1.85059,0.55176 l -1.24023,0 0,2.92969 -0.98633,0 0,-7.29004" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5426"
+ d="m 310.41827,213.5596 c -0.48177,1e-5 -0.86263,0.18881 -1.14257,0.56641 -0.27995,0.37435 -0.41993,0.88867 -0.41993,1.54297 0,0.65429 0.13835,1.17024 0.41504,1.54785 0.27995,0.37435 0.66244,0.56152 1.14746,0.56152 0.47852,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41992,-0.89192 0.41992,-1.54296 0,-0.64779 -0.13998,-1.16048 -0.41992,-1.53809 -0.27995,-0.38085 -0.65918,-0.57128 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,1e-5 1.39486,0.25391 1.84082,0.76172 0.44596,0.50782 0.66894,1.21094 0.66895,2.10938 -1e-5,0.89518 -0.22299,1.5983 -0.66895,2.10937 -0.44596,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.7845,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10937 0,-0.89844 0.22135,-1.60156 0.66406,-2.10938 0.44596,-0.50781 1.0612,-0.76171 1.8457,-0.76172" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5428"
+ d="m 314.41241,212.92972 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.12891 0.89844,0 0,1.1377 -0.89844,0 0,-1.1377" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5430"
+ d="m 321.73175,215.09769 0,3.30078 -0.89844,0 0,-3.27149 c 0,-0.51757 -0.10091,-0.90494 -0.30273,-1.16211 -0.20183,-0.25715 -0.50456,-0.38573 -0.9082,-0.38574 -0.48503,1e-5 -0.86752,0.15463 -1.14747,0.46387 -0.27995,0.30925 -0.41992,0.7308 -0.41992,1.26465 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.73731 0.29296,-0.16275 0.62988,-0.24413 1.01074,-0.24414 0.62825,1e-5 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.48339,0.95866 0.4834,1.71387" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5432"
+ d="m 324.42218,211.37698 0,1.55274 1.85059,0 0,0.69824 -1.85059,0 0,2.96875 c 0,0.44597 0.0602,0.73242 0.18066,0.85938 0.1237,0.12695 0.37272,0.19043 0.74707,0.19042 l 0.92286,0 0,0.75196 -0.92286,0 c -0.69336,0 -1.17187,-0.12858 -1.43554,-0.38574 -0.26368,-0.26042 -0.39551,-0.73242 -0.39551,-1.41602 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55274 0.90332,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5434"
+ d="m 307.02472,223.84769 0,0.96191 c -0.37435,-0.17903 -0.72754,-0.31249 -1.05957,-0.40039 -0.33204,-0.0879 -0.65267,-0.13183 -0.96192,-0.13184 -0.53711,1e-5 -0.95215,0.10418 -1.24511,0.3125 -0.28972,0.20834 -0.43457,0.50457 -0.43457,0.88868 0,0.32227 0.096,0.56641 0.28808,0.73242 0.19531,0.16276 0.56315,0.2946 1.10352,0.39551 l 0.5957,0.12207 c 0.73567,0.13997 1.27767,0.38737 1.62598,0.74218 0.35156,0.35157 0.52734,0.82357 0.52734,1.41602 0,0.70638 -0.23763,1.24186 -0.71289,1.60644 -0.47201,0.36459 -1.16537,0.54688 -2.08008,0.54688 -0.34505,0 -0.71289,-0.0391 -1.10351,-0.11719 -0.38737,-0.0781 -0.78939,-0.19368 -1.20606,-0.34668 l 0,-1.01562 c 0.40039,0.22461 0.79265,0.39388 1.17676,0.50781 0.38411,0.11393 0.76172,0.1709 1.13281,0.1709 0.56315,0 0.99772,-0.11068 1.30371,-0.33203 0.30599,-0.22136 0.45898,-0.53711 0.45899,-0.94727 -10e-6,-0.35807 -0.11068,-0.63802 -0.33203,-0.83984 -0.21811,-0.20182 -0.57781,-0.35319 -1.0791,-0.4541 l -0.60059,-0.11719 c -0.73568,-0.14648 -1.2679,-0.37597 -1.59668,-0.68848 -0.32878,-0.31249 -0.49316,-0.74706 -0.49316,-1.30371 0,-0.64452 0.22623,-1.15234 0.67871,-1.52344 0.45572,-0.37108 1.08235,-0.55663 1.87988,-0.55664 0.34179,1e-5 0.6901,0.0309 1.04492,0.0928 0.35482,0.0619 0.71777,0.15463 1.08887,0.27832" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5436"
+ d="m 309.85187,223.87698 0,1.55274 1.85058,0 0,0.69824 -1.85058,0 0,2.96875 c 0,0.44597 0.0602,0.73242 0.18066,0.85938 0.1237,0.12695 0.37272,0.19043 0.74707,0.19042 l 0.92285,0 0,0.75196 -0.92285,0 c -0.69336,0 -1.17187,-0.12858 -1.43554,-0.38574 -0.26368,-0.26042 -0.39551,-0.73242 -0.39551,-1.41602 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55274 0.90332,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5438"
+ d="m 316.05792,226.26956 c -0.10091,-0.0586 -0.21159,-0.1009 -0.33203,-0.12695 -0.11719,-0.0293 -0.2474,-0.0439 -0.39062,-0.0439 -0.50782,10e-6 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.4209 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33203 0.43457,-0.5778 0.7373,-0.73731 0.30273,-0.16275 0.67057,-0.24413 1.10352,-0.24414 0.0618,1e-5 0.1302,0.005 0.20508,0.0147 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5440"
+ d="m 319.49542,228.14944 c -0.72591,1e-5 -1.22884,0.083 -1.50879,0.24903 -0.27995,0.16602 -0.41992,0.44922 -0.41992,0.84961 0,0.31901 0.10417,0.57292 0.3125,0.76172 0.21159,0.18554 0.49805,0.27832 0.85938,0.27832 0.49804,0 0.8968,-0.17578 1.19629,-0.52735 0.30273,-0.35481 0.45409,-0.82519 0.4541,-1.41113 l 0,-0.2002 -0.89356,0 m 1.79199,-0.37109 0,3.12012 -0.89843,0 0,-0.83008 c -0.20509,0.33203 -0.46062,0.5778 -0.7666,0.7373 -0.306,0.15625 -0.68035,0.23438 -1.12305,0.23438 -0.5599,0 -1.00586,-0.15625 -1.33789,-0.46875 -0.32878,-0.31575 -0.49317,-0.7373 -0.49317,-1.26465 0,-0.61523 0.20508,-1.0791 0.61524,-1.3916 0.41341,-0.3125 1.02864,-0.46875 1.8457,-0.46875 l 1.25977,0 0,-0.0879 c -1e-5,-0.41341 -0.13673,-0.73242 -0.41016,-0.95703 -0.27019,-0.22786 -0.65104,-0.34179 -1.14258,-0.3418 -0.3125,1e-5 -0.61686,0.0374 -0.91308,0.11231 -0.29623,0.0749 -0.58106,0.18717 -0.8545,0.33691 l 0,-0.83008 c 0.32878,-0.12695 0.64779,-0.22135 0.95704,-0.2832 0.30924,-0.0651 0.61034,-0.0977 0.90332,-0.0977 0.79101,1e-5 1.38183,0.20509 1.77246,0.61524 0.39062,0.41016 0.58593,1.0319 0.58593,1.86523" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5442"
+ d="m 324.03156,223.87698 0,1.55274 1.85058,0 0,0.69824 -1.85058,0 0,2.96875 c -1e-5,0.44597 0.0602,0.73242 0.18066,0.85938 0.1237,0.12695 0.37272,0.19043 0.74707,0.19042 l 0.92285,0 0,0.75196 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26042 -0.39551,-0.73242 -0.39551,-1.41602 l 0,-2.96875 -0.65917,0 0,-0.69824 0.65917,0 0,-1.55274 0.90333,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5444"
+ d="m 331.7464,227.93948 0,0.43946 -4.13086,0 c 0.0391,0.61849 0.22461,1.09049 0.55664,1.41601 0.33528,0.32227 0.80078,0.4834 1.39648,0.4834 0.34505,0 0.67871,-0.0423 1.00098,-0.12695 0.32552,-0.0846 0.64778,-0.21159 0.9668,-0.38086 l 0,0.84961 c -0.32227,0.13672 -0.65268,0.24088 -0.99121,0.3125 -0.33855,0.0716 -0.68197,0.10742 -1.03028,0.10742 -0.87239,0 -1.56413,-0.25391 -2.07519,-0.76172 -0.50782,-0.50781 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89517 0.24088,-1.60481 0.72266,-2.1289 0.48502,-0.52734 1.13769,-0.79101 1.958,-0.79102 0.73568,1e-5 1.31673,0.23764 1.74317,0.71289 0.42968,0.47201 0.64452,1.11492 0.64453,1.92871 m -0.89844,-0.26367 c -0.007,-0.49153 -0.14486,-0.88378 -0.41504,-1.17676 -0.26693,-0.29296 -0.62175,-0.43944 -1.06445,-0.43945 -0.50131,1e-5 -0.90332,0.14161 -1.20606,0.42481 -0.29948,0.2832 -0.472,0.68197 -0.51757,1.19628 l 3.20312,-0.005" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5446"
+ d="m 336.81964,228.10062 c 0,-0.65104 -0.13509,-1.1556 -0.40527,-1.51368 -0.26693,-0.35806 -0.64291,-0.5371 -1.12793,-0.5371 -0.48178,0 -0.85775,0.17904 -1.12793,0.5371 -0.26693,0.35808 -0.40039,0.86264 -0.40039,1.51368 0,0.64779 0.13346,1.15071 0.40039,1.50879 0.27018,0.35807 0.64615,0.53711 1.12793,0.5371 0.48502,1e-5 0.861,-0.17903 1.12793,-0.5371 0.27018,-0.35808 0.40527,-0.861 0.40527,-1.50879 m 0.89844,2.11914 c -10e-6,0.93099 -0.20671,1.62272 -0.62012,2.07519 -0.41341,0.45573 -1.04655,0.68359 -1.89941,0.6836 -0.31576,-1e-5 -0.61361,-0.0244 -0.89356,-0.0733 -0.27995,-0.0456 -0.55176,-0.11719 -0.81543,-0.21484 l 0,-0.87402 c 0.26367,0.14322 0.52409,0.24902 0.78125,0.31738 0.25716,0.0684 0.51921,0.10254 0.78614,0.10254 0.58919,0 1.03027,-0.15462 1.32324,-0.46387 0.29296,-0.30599 0.43945,-0.76986 0.43945,-1.3916 l 0,-0.44434 c -0.18555,0.32227 -0.42318,0.56316 -0.71289,0.72266 -0.28972,0.15951 -0.6364,0.23926 -1.04004,0.23926 -0.67057,0 -1.21094,-0.25554 -1.62109,-0.7666 -0.41016,-0.51107 -0.61524,-1.18815 -0.61524,-2.03125 0,-0.84635 0.20508,-1.52506 0.61524,-2.03614 0.41015,-0.51106 0.95052,-0.76659 1.62109,-0.7666 0.40364,1e-5 0.75032,0.0798 1.04004,0.23926 0.28971,0.15951 0.52734,0.4004 0.71289,0.72266 l 0,-0.83008 0.89844,0 0,4.79004" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5448"
+ d="m 341.84406,231.40628 c -0.25391,0.65104 -0.50131,1.07585 -0.74219,1.27441 -0.24089,0.19857 -0.56316,0.29785 -0.9668,0.29786 l -0.71777,0 0,-0.75196 0.52734,0 c 0.2474,0 0.43945,-0.0586 0.57617,-0.17578 0.13672,-0.11719 0.28809,-0.39388 0.4541,-0.83008 l 0.16114,-0.41015 -2.21192,-5.38086 0.95215,0 1.70899,4.27734 1.70898,-4.27734 0.95215,0 -2.40234,5.97656" />
+ </g>
+</svg>
diff --git a/libs/geometry/doc/html/img/algorithms/is_simple_example.png b/libs/geometry/doc/html/img/algorithms/is_simple_example.png
new file mode 100644
index 0000000000..9e9bd7b96d
--- /dev/null
+++ b/libs/geometry/doc/html/img/algorithms/is_simple_example.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/algorithms/is_valid_example.png b/libs/geometry/doc/html/img/algorithms/is_valid_example.png
new file mode 100644
index 0000000000..e0469a7f58
--- /dev/null
+++ b/libs/geometry/doc/html/img/algorithms/is_valid_example.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/build_non_ovl.png b/libs/geometry/doc/html/img/index/rtree/build_non_ovl.png
new file mode 100644
index 0000000000..4aaedfe36d
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/build_non_ovl.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/build_ovl.png b/libs/geometry/doc/html/img/index/rtree/build_ovl.png
new file mode 100644
index 0000000000..d443def7d5
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/build_ovl.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/bulk.png b/libs/geometry/doc/html/img/index/rtree/bulk.png
new file mode 100644
index 0000000000..7c15e3d4a5
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/bulk.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/disjoint.png b/libs/geometry/doc/html/img/index/rtree/disjoint.png
new file mode 100644
index 0000000000..131a915865
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/disjoint.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/intersects.png b/libs/geometry/doc/html/img/index/rtree/intersects.png
new file mode 100644
index 0000000000..066a1dd80b
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/intersects.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/intersects_linestring.png b/libs/geometry/doc/html/img/index/rtree/intersects_linestring.png
new file mode 100644
index 0000000000..d7d84d210f
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/intersects_linestring.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/intersects_mpoly.png b/libs/geometry/doc/html/img/index/rtree/intersects_mpoly.png
new file mode 100644
index 0000000000..f6172d2109
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/intersects_mpoly.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/intersects_poly.png b/libs/geometry/doc/html/img/index/rtree/intersects_poly.png
new file mode 100644
index 0000000000..d87607857b
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/intersects_poly.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/intersects_ring.png b/libs/geometry/doc/html/img/index/rtree/intersects_ring.png
new file mode 100644
index 0000000000..6af2c96a39
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/intersects_ring.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/intersects_segment.png b/libs/geometry/doc/html/img/index/rtree/intersects_segment.png
new file mode 100644
index 0000000000..213af34bfe
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/intersects_segment.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/knn.png b/libs/geometry/doc/html/img/index/rtree/knn.png
new file mode 100644
index 0000000000..f142919d8c
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/knn.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/knn_box_box.png b/libs/geometry/doc/html/img/index/rtree/knn_box_box.png
new file mode 100644
index 0000000000..6f70f884de
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/knn_box_box.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/knn_pt_box.png b/libs/geometry/doc/html/img/index/rtree/knn_pt_box.png
new file mode 100644
index 0000000000..af9c148740
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/knn_pt_box.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/knn_seg_box.png b/libs/geometry/doc/html/img/index/rtree/knn_seg_box.png
new file mode 100644
index 0000000000..13288d1ac4
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/knn_seg_box.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/linear.png b/libs/geometry/doc/html/img/index/rtree/linear.png
new file mode 100644
index 0000000000..15cbd4c3e6
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/linear.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/overlaps.png b/libs/geometry/doc/html/img/index/rtree/overlaps.png
new file mode 100644
index 0000000000..70d77a120c
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/overlaps.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/path.png b/libs/geometry/doc/html/img/index/rtree/path.png
new file mode 100644
index 0000000000..fa393abff3
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/path.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/quadratic.png b/libs/geometry/doc/html/img/index/rtree/quadratic.png
new file mode 100644
index 0000000000..9fedf85a71
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/quadratic.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/query_non_ovl.png b/libs/geometry/doc/html/img/index/rtree/query_non_ovl.png
new file mode 100644
index 0000000000..2594aea4aa
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/query_non_ovl.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/query_ovl.png b/libs/geometry/doc/html/img/index/rtree/query_ovl.png
new file mode 100644
index 0000000000..5108113898
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/query_ovl.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rstar.png b/libs/geometry/doc/html/img/index/rtree/rstar.png
new file mode 100644
index 0000000000..45308b3618
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rstar.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_pt.png b/libs/geometry/doc/html/img/index/rtree/rtree_pt.png
new file mode 100644
index 0000000000..8c3f5807ef
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_pt.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_pt_disjoint_box.png b/libs/geometry/doc/html/img/index/rtree/rtree_pt_disjoint_box.png
new file mode 100644
index 0000000000..e82275f1a2
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_pt_disjoint_box.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_pt_intersects_box.png b/libs/geometry/doc/html/img/index/rtree/rtree_pt_intersects_box.png
new file mode 100644
index 0000000000..46baf009b5
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_pt_intersects_box.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_box.png b/libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_box.png
new file mode 100644
index 0000000000..237de694c0
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_box.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_pt.png b/libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_pt.png
new file mode 100644
index 0000000000..55d0a2d381
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_pt.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_seg.png b/libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_seg.png
new file mode 100644
index 0000000000..fc3e138110
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_pt_knn_seg.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_seg.png b/libs/geometry/doc/html/img/index/rtree/rtree_seg.png
new file mode 100644
index 0000000000..080433318e
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_seg.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_seg_disjoint_box.png b/libs/geometry/doc/html/img/index/rtree/rtree_seg_disjoint_box.png
new file mode 100644
index 0000000000..72cc1e71a9
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_seg_disjoint_box.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_seg_intersects_box.png b/libs/geometry/doc/html/img/index/rtree/rtree_seg_intersects_box.png
new file mode 100644
index 0000000000..b6135eedae
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_seg_intersects_box.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_box.png b/libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_box.png
new file mode 100644
index 0000000000..251117688c
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_box.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_pt.png b/libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_pt.png
new file mode 100644
index 0000000000..8def785020
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_pt.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_seg.png b/libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_seg.png
new file mode 100644
index 0000000000..68891d6853
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/rtree_seg_knn_seg.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/index/rtree/within.png b/libs/geometry/doc/html/img/index/rtree/within.png
new file mode 100644
index 0000000000..44ab19e48d
--- /dev/null
+++ b/libs/geometry/doc/html/img/index/rtree/within.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/io/svg_mapper.png b/libs/geometry/doc/html/img/io/svg_mapper.png
new file mode 100644
index 0000000000..8330692aaf
--- /dev/null
+++ b/libs/geometry/doc/html/img/io/svg_mapper.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/strategies/buffer_distance_asymmetric.png b/libs/geometry/doc/html/img/strategies/buffer_distance_asymmetric.png
new file mode 100644
index 0000000000..3e93fae592
--- /dev/null
+++ b/libs/geometry/doc/html/img/strategies/buffer_distance_asymmetric.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/strategies/buffer_distance_symmetric.png b/libs/geometry/doc/html/img/strategies/buffer_distance_symmetric.png
new file mode 100644
index 0000000000..e98f2318f5
--- /dev/null
+++ b/libs/geometry/doc/html/img/strategies/buffer_distance_symmetric.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/strategies/buffer_end_flat.png b/libs/geometry/doc/html/img/strategies/buffer_end_flat.png
new file mode 100644
index 0000000000..8e5c212fb1
--- /dev/null
+++ b/libs/geometry/doc/html/img/strategies/buffer_end_flat.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/strategies/buffer_end_round.png b/libs/geometry/doc/html/img/strategies/buffer_end_round.png
new file mode 100644
index 0000000000..07296bd619
--- /dev/null
+++ b/libs/geometry/doc/html/img/strategies/buffer_end_round.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/strategies/buffer_join_miter.png b/libs/geometry/doc/html/img/strategies/buffer_join_miter.png
new file mode 100644
index 0000000000..cf146b6f43
--- /dev/null
+++ b/libs/geometry/doc/html/img/strategies/buffer_join_miter.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/strategies/buffer_join_round.png b/libs/geometry/doc/html/img/strategies/buffer_join_round.png
new file mode 100644
index 0000000000..9746525196
--- /dev/null
+++ b/libs/geometry/doc/html/img/strategies/buffer_join_round.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/strategies/buffer_point_circle.png b/libs/geometry/doc/html/img/strategies/buffer_point_circle.png
new file mode 100644
index 0000000000..c48369ea12
--- /dev/null
+++ b/libs/geometry/doc/html/img/strategies/buffer_point_circle.png
Binary files differ
diff --git a/libs/geometry/doc/html/img/strategies/buffer_point_square.png b/libs/geometry/doc/html/img/strategies/buffer_point_square.png
new file mode 100644
index 0000000000..d03500eecf
--- /dev/null
+++ b/libs/geometry/doc/html/img/strategies/buffer_point_square.png
Binary files differ
diff --git a/libs/geometry/doc/html/index.html b/libs/geometry/doc/html/index.html
index b2e72f990a..a520006aff 100644
--- a/libs/geometry/doc/html/index.html
+++ b/libs/geometry/doc/html/index.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Chapter&#160;1.&#160;Geometry</title>
<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="next" href="geometry/introduction.html" title="Introduction">
</head>
@@ -31,8 +31,14 @@
<div><div class="author"><h3 class="author">
<span class="firstname">Mateusz</span> <span class="surname">Loskot</span>
</h3></div></div>
-<div><p class="copyright">Copyright &#169; 2009-2012 Barend
- Gehrels, Bruno Lalande, Mateusz Loskot</p></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Adam</span> <span class="surname">Wulkiewicz</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Menelaos</span> <span class="surname">Karavelas</span>
+</h3></div></div>
+<div><p class="copyright">Copyright &#169; 2009-2014 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
+ Wulkiewicz, Oracle and/or its affiliates</p></div>
<div><div class="legalnotice">
<a name="geometry.legal"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -42,15 +48,19 @@
</div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
-<dl>
+<dl class="toc">
<dt><span class="section"><a href="geometry/introduction.html">Introduction</a></span></dt>
-<dt><span class="section"><a href="geometry/quickstart.html">Quick Start</a></span></dt>
-<dt><span class="section"><a href="geometry/design.html">Design Rationale</a></span></dt>
<dt><span class="section"><a href="geometry/compilation.html">Compilation</a></span></dt>
-<dt><span class="section"><a href="geometry/indexes.html">Indexes</a></span></dt>
+<dt><span class="section"><a href="geometry/design.html">Design Rationale</a></span></dt>
+<dt><span class="section"><a href="geometry/quickstart.html">Quick Start</a></span></dt>
+<dt><span class="section"><a href="geometry/spatial_indexes.html">Spatial Indexes</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="geometry/indexes/matrix.html">Reference matrix</a></span></dt>
-<dt><span class="section"><a href="geometry/indexes/alphabetical_index.html">Alphabetical Index</a></span></dt>
+<dt><span class="section"><a href="geometry/spatial_indexes/introduction.html">Introduction</a></span></dt>
+<dt><span class="section"><a href="geometry/spatial_indexes/rtree_quickstart.html">Quick Start</a></span></dt>
+<dt><span class="section"><a href="geometry/spatial_indexes/creation_and_modification.html">Creation
+ and Modification</a></span></dt>
+<dt><span class="section"><a href="geometry/spatial_indexes/queries.html">Queries</a></span></dt>
+<dt><span class="section"><a href="geometry/spatial_indexes/rtree_examples.html">Examples</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="geometry/reference.html">Reference</a></span></dt>
<dd><dl>
@@ -64,24 +74,38 @@
<dt><span class="section"><a href="geometry/reference/core.html">Core Metafunctions</a></span></dt>
<dt><span class="section"><a href="geometry/reference/enumerations.html">Enumerations</a></span></dt>
<dt><span class="section"><a href="geometry/reference/exceptions.html">Exceptions</a></span></dt>
+<dt><span class="section"><a href="geometry/reference/io.html">IO (input/output)</a></span></dt>
<dt><span class="section"><a href="geometry/reference/iterators.html">Iterators</a></span></dt>
<dt><span class="section"><a href="geometry/reference/models.html">Models</a></span></dt>
+<dt><span class="section"><a href="geometry/reference/spatial_indexes.html">Spatial Indexes</a></span></dt>
<dt><span class="section"><a href="geometry/reference/strategies.html">Strategies</a></span></dt>
<dt><span class="section"><a href="geometry/reference/views.html">Views</a></span></dt>
</dl></dd>
+<dt><span class="section"><a href="geometry/indexes.html">Indexes</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="geometry/indexes/matrix.html">Reference Matrix</a></span></dt>
+<dt><span class="section"><a href="geometry/indexes/alphabetical_index.html">Alphabetical Index</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="geometry/examples.html">Examples</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="geometry/examples/example__adapting_a_legacy_geometry_object_model.html">Example:
+ Adapting a legacy geometry object model</a></span></dt>
+<dt><span class="section"><a href="geometry/examples/example_source_code__adapting_a_legacy_geometry_object_model.html">Example
+ source code: Adapting a legacy geometry object model</a></span></dt>
+</dl></dd>
<dt><span class="section"><a href="geometry/release_notes.html">Release Notes</a></span></dt>
-<dt><span class="section"><a href="geometry/aboutdoc.html">About this documentation</a></span></dt>
+<dt><span class="section"><a href="geometry/aboutdoc.html">About this Documentation</a></span></dt>
<dt><span class="section"><a href="geometry/acknowledgments.html">Acknowledgments</a></span></dt>
</dl>
</div>
<h3>
<a name="geometry.h0"></a>
- <span><a name="geometry.contributions"></a></span><a class="link" href="index.html#geometry.contributions">Contributions</a>
+ <span class="phrase"><a name="geometry.contributions"></a></span><a class="link" href="index.html#geometry.contributions">Contributions</a>
</h3>
<p>
Boost.Geometry contains contributions by:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Akira Takahashi (adaption of Boost.Fusion)
</li>
@@ -89,27 +113,28 @@
Alfredo Correa (adaption of Boost.Array)
</li>
<li class="listitem">
- Adam Wulkiewicz (spatial indexes) <sup>[<a name="geometry.f0" href="#ftn.geometry.f0" class="footnote">1</a>]</sup>
+ Andrew Hundt (varray container, aka. static_vector)
</li>
<li class="listitem">
- Federico Fern&#225;ndez (spatial indexes) <sup>[<a name="geometry.f1" href="#ftn.geometry.f1" class="footnote">2</a>]</sup>
+ Federico Fern&#225;ndez (preliminary version of R-tree spatial index)
</li>
<li class="listitem">
Karsten Ahnert (patch for cross-track distance)
</li>
+<li class="listitem">
+ Mats Taraldsvik (documentation: adapting a legacy model)
+ </li>
+<li class="listitem">
+ Matt Amos (fixes for point_on_surface)
+ </li>
+<li class="listitem">
+ Samuel Debionne (variant support for distance, assign, crosses, intersection,
+ ...)
+ </li>
</ul></div>
-<div class="footnotes">
-<br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a id="ftn.geometry.f0" href="#geometry.f0" class="para">1</a>] </sup>
- Currently an extension
- </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.geometry.f1" href="#geometry.f1" class="para">2</a>] </sup>
- Currently an extension
- </p></div>
-</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: August 15, 2012 at 23:31:54 GMT</small></p></td>
+<td align="left"><p><small>Last revised: October 30, 2014 at 10:10:02 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
diff --git a/libs/geometry/doc/imports.qbk b/libs/geometry/doc/imports.qbk
index 5fdccf00a8..072e0bcd8d 100644
--- a/libs/geometry/doc/imports.qbk
+++ b/libs/geometry/doc/imports.qbk
@@ -20,6 +20,7 @@
[import src/examples/algorithms/assign_3d_point.cpp]
[import src/examples/algorithms/assign_inverse.cpp]
[import src/examples/algorithms/assign_points.cpp]
+[import src/examples/algorithms/buffer_with_strategies.cpp]
[import src/examples/algorithms/clear.cpp]
[import src/examples/algorithms/centroid.cpp]
[import src/examples/algorithms/comparable_distance.cpp]
@@ -44,9 +45,12 @@
[import src/examples/algorithms/intersection_segment.cpp]
[import src/examples/algorithms/intersection_poly_poly.cpp]
[import src/examples/algorithms/intersects_linestring.cpp]
+[import src/examples/algorithms/is_simple.cpp]
+[import src/examples/algorithms/is_valid.cpp]
[import src/examples/algorithms/num_geometries.cpp]
[import src/examples/algorithms/num_interior_rings.cpp]
[import src/examples/algorithms/num_points.cpp]
+[import src/examples/algorithms/num_segments.cpp]
[import src/examples/algorithms/reverse.cpp]
[import src/examples/algorithms/return_envelope.cpp]
[import src/examples/algorithms/simplify.cpp]
@@ -80,7 +84,10 @@
[import src/examples/geometries/adapted/c_array.cpp]
[import src/examples/geometries/adapted/boost_array.cpp]
[import src/examples/geometries/adapted/boost_fusion.cpp]
-[import src/examples/geometries/adapted/boost_polygon.cpp]
+[import src/examples/geometries/adapted/boost_polygon_box.cpp]
+[import src/examples/geometries/adapted/boost_polygon_point.cpp]
+[import src/examples/geometries/adapted/boost_polygon_polygon.cpp]
+[import src/examples/geometries/adapted/boost_polygon_ring.cpp]
[import src/examples/geometries/adapted/boost_tuple.cpp]
[import src/examples/geometries/adapted/boost_range/filtered.cpp]
@@ -104,5 +111,18 @@
[import src/examples/geometries/register/multi_linestring.cpp]
[import src/examples/geometries/register/multi_polygon.cpp]
+[import src/examples/io/svg.cpp]
+[import src/examples/io/wkt.cpp]
+[import src/examples/io/read_wkt.cpp]
+
+[import src/examples/strategies/buffer_join_round.cpp]
+[import src/examples/strategies/buffer_join_miter.cpp]
+[import src/examples/strategies/buffer_end_round.cpp]
+[import src/examples/strategies/buffer_end_flat.cpp]
+[import src/examples/strategies/buffer_distance_symmetric.cpp]
+[import src/examples/strategies/buffer_distance_asymmetric.cpp]
+[import src/examples/strategies/buffer_point_circle.cpp]
+[import src/examples/strategies/buffer_point_square.cpp]
+
[import src/examples/views/box_view.cpp]
[import src/examples/views/segment_view.cpp]
diff --git a/libs/geometry/doc/index/Doxyfile b/libs/geometry/doc/index/Doxyfile
new file mode 100644
index 0000000000..9e73dedbc8
--- /dev/null
+++ b/libs/geometry/doc/index/Doxyfile
@@ -0,0 +1,331 @@
+# Doxyfile 1.8.1.2
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+DOXYFILE_ENCODING = UTF-8
+PROJECT_NAME = "Boost.Geometry.Index"
+PROJECT_NUMBER =
+PROJECT_BRIEF =
+PROJECT_LOGO =
+OUTPUT_DIRECTORY =
+CREATE_SUBDIRS = NO
+OUTPUT_LANGUAGE = English
+BRIEF_MEMBER_DESC = YES
+REPEAT_BRIEF = YES
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+ALWAYS_DETAILED_SEC = NO
+INLINE_INHERITED_MEMB = NO
+FULL_PATH_NAMES = YES
+STRIP_FROM_PATH =
+STRIP_FROM_INC_PATH =
+SHORT_NAMES = NO
+JAVADOC_AUTOBRIEF = NO
+QT_AUTOBRIEF = NO
+MULTILINE_CPP_IS_BRIEF = NO
+INHERIT_DOCS = YES
+SEPARATE_MEMBER_PAGES = NO
+TAB_SIZE = 8
+ALIASES =
+TCL_SUBST =
+OPTIMIZE_OUTPUT_FOR_C = NO
+OPTIMIZE_OUTPUT_JAVA = NO
+OPTIMIZE_FOR_FORTRAN = NO
+OPTIMIZE_OUTPUT_VHDL = NO
+EXTENSION_MAPPING =
+MARKDOWN_SUPPORT = YES
+BUILTIN_STL_SUPPORT = YES
+CPP_CLI_SUPPORT = NO
+SIP_SUPPORT = NO
+IDL_PROPERTY_SUPPORT = YES
+DISTRIBUTE_GROUP_DOC = NO
+SUBGROUPING = YES
+INLINE_GROUPED_CLASSES = NO
+INLINE_SIMPLE_STRUCTS = NO
+TYPEDEF_HIDES_STRUCT = NO
+LOOKUP_CACHE_SIZE = 0
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL = NO
+EXTRACT_PRIVATE = NO
+EXTRACT_PACKAGE = NO
+EXTRACT_STATIC = NO
+EXTRACT_LOCAL_CLASSES = YES
+EXTRACT_LOCAL_METHODS = NO
+EXTRACT_ANON_NSPACES = NO
+HIDE_UNDOC_MEMBERS = YES
+HIDE_UNDOC_CLASSES = YES
+HIDE_FRIEND_COMPOUNDS = NO
+HIDE_IN_BODY_DOCS = NO
+INTERNAL_DOCS = NO
+CASE_SENSE_NAMES = NO
+HIDE_SCOPE_NAMES = NO
+SHOW_INCLUDE_FILES = YES
+FORCE_LOCAL_INCLUDES = NO
+INLINE_INFO = YES
+SORT_MEMBER_DOCS = YES
+SORT_BRIEF_DOCS = NO
+SORT_MEMBERS_CTORS_1ST = NO
+SORT_GROUP_NAMES = NO
+SORT_BY_SCOPE_NAME = NO
+STRICT_PROTO_MATCHING = NO
+GENERATE_TODOLIST = YES
+GENERATE_TESTLIST = YES
+GENERATE_BUGLIST = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS =
+MAX_INITIALIZER_LINES = 30
+SHOW_USED_FILES = YES
+SHOW_FILES = YES
+SHOW_NAMESPACES = YES
+FILE_VERSION_FILTER =
+LAYOUT_FILE =
+CITE_BIB_FILES =
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET = YES
+WARNINGS = YES
+WARN_IF_UNDOCUMENTED = YES
+WARN_IF_DOC_ERROR = YES
+WARN_NO_PARAMDOC = NO
+WARN_FORMAT = "$file:$line: $text"
+WARN_LOGFILE =
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT = ../../../../boost/geometry/index/ \
+ ../../../../boost/geometry/index/adaptors
+INPUT_ENCODING = UTF-8
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.d \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.h \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.idl \
+ *.odl \
+ *.cs \
+ *.php \
+ *.php3 \
+ *.inc \
+ *.m \
+ *.markdown \
+ *.md \
+ *.mm \
+ *.dox \
+ *.py \
+ *.f90 \
+ *.f \
+ *.for \
+ *.vhd \
+ *.vhdl
+RECURSIVE = NO
+EXCLUDE =
+EXCLUDE_SYMLINKS = NO
+EXCLUDE_PATTERNS =
+EXCLUDE_SYMBOLS =
+EXAMPLE_PATH =
+EXAMPLE_PATTERNS = *
+EXAMPLE_RECURSIVE = NO
+IMAGE_PATH =
+INPUT_FILTER =
+FILTER_PATTERNS =
+FILTER_SOURCE_FILES = NO
+FILTER_SOURCE_PATTERNS =
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER = NO
+INLINE_SOURCES = NO
+STRIP_CODE_COMMENTS = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION = NO
+REFERENCES_LINK_SOURCE = YES
+USE_HTAGS = NO
+VERBATIM_HEADERS = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX = YES
+COLS_IN_ALPHA_INDEX = 5
+IGNORE_PREFIX =
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML = YES
+HTML_OUTPUT = html_by_doxygen
+HTML_FILE_EXTENSION = .html
+HTML_HEADER =
+HTML_FOOTER =
+HTML_STYLESHEET =
+HTML_EXTRA_FILES =
+HTML_COLORSTYLE_HUE = 220
+HTML_COLORSTYLE_SAT = 100
+HTML_COLORSTYLE_GAMMA = 80
+HTML_TIMESTAMP = YES
+HTML_DYNAMIC_SECTIONS = NO
+HTML_INDEX_NUM_ENTRIES = 100
+GENERATE_DOCSET = NO
+DOCSET_FEEDNAME = "Doxygen generated docs"
+DOCSET_BUNDLE_ID = org.doxygen.Project
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+DOCSET_PUBLISHER_NAME = Publisher
+GENERATE_HTMLHELP = NO
+CHM_FILE =
+HHC_LOCATION =
+GENERATE_CHI = NO
+CHM_INDEX_ENCODING =
+BINARY_TOC = NO
+TOC_EXPAND = NO
+GENERATE_QHP = NO
+QCH_FILE =
+QHP_NAMESPACE = org.doxygen.Project
+QHP_VIRTUAL_FOLDER = doc
+QHP_CUST_FILTER_NAME =
+QHP_CUST_FILTER_ATTRS =
+QHP_SECT_FILTER_ATTRS =
+QHG_LOCATION =
+GENERATE_ECLIPSEHELP = NO
+ECLIPSE_DOC_ID = org.doxygen.Project
+DISABLE_INDEX = NO
+GENERATE_TREEVIEW = NO
+ENUM_VALUES_PER_LINE = 4
+TREEVIEW_WIDTH = 250
+EXT_LINKS_IN_WINDOW = NO
+FORMULA_FONTSIZE = 10
+FORMULA_TRANSPARENT = YES
+USE_MATHJAX = NO
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+MATHJAX_EXTENSIONS =
+SEARCHENGINE = YES
+SERVER_BASED_SEARCH = NO
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX = NO
+LATEX_OUTPUT = latex
+LATEX_CMD_NAME = latex
+MAKEINDEX_CMD_NAME = makeindex
+COMPACT_LATEX = NO
+PAPER_TYPE = a4
+EXTRA_PACKAGES =
+LATEX_HEADER =
+LATEX_FOOTER =
+PDF_HYPERLINKS = YES
+USE_PDFLATEX = YES
+LATEX_BATCHMODE = NO
+LATEX_HIDE_INDICES = NO
+LATEX_SOURCE_CODE = NO
+LATEX_BIB_STYLE = plain
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF = NO
+RTF_OUTPUT = rtf
+COMPACT_RTF = NO
+RTF_HYPERLINKS = NO
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN = NO
+MAN_OUTPUT = man
+MAN_EXTENSION = .3
+MAN_LINKS = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML = YES
+XML_OUTPUT = xml
+XML_SCHEMA =
+XML_DTD =
+XML_PROGRAMLISTING = NO
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD = NO
+PERLMOD_LATEX = NO
+PERLMOD_PRETTY = YES
+PERLMOD_MAKEVAR_PREFIX =
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING = YES
+MACRO_EXPANSION = YES
+EXPAND_ONLY_PREDEF = YES
+SEARCH_INCLUDES = YES
+INCLUDE_PATH =
+INCLUDE_FILE_PATTERNS =
+PREDEFINED = "BOOST_RV_REF(T)=T &&" \
+ "BOOST_COPY_ASSIGN_REF(T)=T const &"
+EXPAND_AS_DEFINED =
+SKIP_FUNCTION_MACROS = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+TAGFILES =
+GENERATE_TAGFILE =
+ALLEXTERNALS = NO
+EXTERNAL_GROUPS = YES
+PERL_PATH = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS = YES
+MSCGEN_PATH =
+HIDE_UNDOC_RELATIONS = YES
+HAVE_DOT = NO
+DOT_NUM_THREADS = 0
+DOT_FONTNAME = Helvetica
+DOT_FONTSIZE = 10
+DOT_FONTPATH =
+CLASS_GRAPH = YES
+COLLABORATION_GRAPH = YES
+GROUP_GRAPHS = YES
+UML_LOOK = NO
+UML_LIMIT_NUM_FIELDS = 10
+TEMPLATE_RELATIONS = NO
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = YES
+CALL_GRAPH = NO
+CALLER_GRAPH = NO
+GRAPHICAL_HIERARCHY = YES
+DIRECTORY_GRAPH = YES
+DOT_IMAGE_FORMAT = png
+INTERACTIVE_SVG = NO
+DOT_PATH =
+DOTFILE_DIRS =
+MSCFILE_DIRS =
+DOT_GRAPH_MAX_NODES = 50
+MAX_DOT_GRAPH_DEPTH = 0
+DOT_TRANSPARENT = NO
+DOT_MULTI_TARGETS = NO
+GENERATE_LEGEND = YES
+DOT_CLEANUP = YES
diff --git a/libs/geometry/doc/index/Jamfile.v2 b/libs/geometry/doc/index/Jamfile.v2
new file mode 100644
index 0000000000..e6f507006e
--- /dev/null
+++ b/libs/geometry/doc/index/Jamfile.v2
@@ -0,0 +1,32 @@
+# Boost.Geometry Index
+#
+# Copyright (c) 2011-2012 Adam Wulkiewicz.
+#
+# 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)
+
+project geometry_index/doc ;
+
+import boostbook ;
+import quickbook ;
+
+boostbook geometry_index-doc
+ :
+ index.qbk
+ :
+ <dependency>Jamfile.v2
+ <dependency>generated/rtree.qbk
+
+ <format>html
+ <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
+ <xsl:param>chunk.section.depth=2
+ <xsl:param>chunk.first.sections=1
+ <xsl:param>toc.section.depth=3
+ <xsl:param>toc.max.depth=2
+ <xsl:param>generate.section.toc.level=2
+ <xsl:param>boost.root=http://www.boost.org/doc/libs/release
+
+ <quickbook-define>enable_index
+ <include>$(here)
+ ;
diff --git a/libs/geometry/doc/index/generated/dummy b/libs/geometry/doc/index/generated/dummy
new file mode 100644
index 0000000000..6da9b3dcb4
--- /dev/null
+++ b/libs/geometry/doc/index/generated/dummy
@@ -0,0 +1 @@
+This file is here because GIT doesn't handle empty directories
diff --git a/libs/geometry/doc/index/imports.qbk b/libs/geometry/doc/index/imports.qbk
new file mode 100644
index 0000000000..535395091e
--- /dev/null
+++ b/libs/geometry/doc/index/imports.qbk
@@ -0,0 +1,20 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2012 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[import src/examples/rtree/quick_start.cpp]
+[import src/examples/rtree/polygons_vector.cpp]
+[import src/examples/rtree/polygons_shared_ptr.cpp]
+[import src/examples/rtree/variants_map.cpp]
+[import src/examples/rtree/value_shared_ptr.cpp]
+[import src/examples/rtree/value_index.cpp]
+[import src/examples/rtree/range_adaptors.cpp]
+[import src/examples/rtree/iterative_query.cpp]
+[import src/examples/rtree/interprocess.cpp]
+[import src/examples/rtree/mapped_file.cpp]
diff --git a/libs/geometry/doc/index/index.qbk b/libs/geometry/doc/index/index.qbk
new file mode 100644
index 0000000000..e8021c3e75
--- /dev/null
+++ b/libs/geometry/doc/index/index.qbk
@@ -0,0 +1,43 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2012 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[/library Geometry Index
+ [quickbook 1.5]
+ [authors [Wulkiewicz, Adam]]
+ [copyright 2011-2013 Adam Wulkiewicz]
+ [purpose Documentation of Boost.Geometry Index library]
+ [license
+ Distributed under 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])
+ ]
+ [id geometry]
+ [category geometry]
+/]
+
+[def __boost_geometry_index__ Boost.Geometry.Index]
+
+[def __rtree__ R-tree]
+
+[def __value__ Value]
+[def __parameters__ Parameters]
+[def __allocator__ Allocator]
+[def __indexable__ Indexable]
+
+[include imports.qbk]
+
+[include introduction.qbk]
+
+[/include rtree.qbk]
+[include rtree/quickstart.qbk]
+[include rtree/creation.qbk]
+[include rtree/query.qbk]
+[include rtree/examples.qbk]
+[/include rtree/experimental.qbk]
diff --git a/libs/geometry/doc/index/introduction.qbk b/libs/geometry/doc/index/introduction.qbk
new file mode 100644
index 0000000000..daf2e39f36
--- /dev/null
+++ b/libs/geometry/doc/index/introduction.qbk
@@ -0,0 +1,124 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2013 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[section Introduction]
+
+The __boost_geometry_index__ is intended to gather data structures called spatial
+indexes which may be used to accelerate searching for objects in space. In general,
+spatial indexes stores geometric objects' representations and allows searching for
+objects occupying some space or close to some point in space.
+
+Currently, only one spatial index is implemented - __rtree__.
+
+[heading __rtree__]
+
+__rtree__ is a tree data structure used for spatial searching. It was proposed by
+Antonin Guttman in 1984 [footnote Guttman, A. (1984). /R-Trees: A Dynamic Index Structure for Spatial Searching/]
+as an expansion of B-tree for multi-dimensional data. It may be used to store points or volumetric data in order to
+perform a spatial query. This query may for example return objects that are inside some area or are close to some point in space
+[footnote Cheung, K.; Fu, A. (1998). /Enhanced Nearest Neighbour Search on the R-tree/].
+It's possible to insert new objects or to remove the ones already stored.
+
+The __rtree__ structure is presented on the image below. Each __rtree__'s node store a box describing the space occupied by
+its children nodes. At the bottom of the structure, there are leaf-nodes which contains values
+(geometric objects representations).
+
+[$img/index/rtree/rstar.png]
+
+The __rtree__ is a self-balanced data structure. The key part of balancing algorithm is node splitting algorithm
+[footnote Greene, D. (1989). /An implementation and performance analysis of spatial data access methods/]
+[footnote Beckmann, N.; Kriegel, H. P.; Schneider, R.; Seeger, B. (1990). /The R*-tree: an efficient and robust access method for points and rectangles/].
+Each algorithm produces different splits so the internal structure of a tree may be different for each one of them.
+In general, more complex algorithms analyses elements better and produces less overlapping nodes. In the searching process less nodes must be traversed
+in order to find desired objects. On the other hand more complex analysis takes more time. In general faster inserting will result in slower searching
+and vice versa. The performance of the R-tree depends on balancing algorithm, parameters and data inserted into the container.
+
+Additionally there are also algorithms creating R-tree containing some, number of objects. This technique is called bulk loading and is
+done by use of packing algorithm
+[footnote Leutenegger, Scott T.; Edgington, Jeffrey M.; Lopez, Mario A. (1997). /STR: A Simple and Efficient Algorithm for R-Tree Packing/]
+[footnote Garcia, Yvan J.; Lopez, Mario A.; Leutenegger, Scott T. (1997). /A Greedy Algorithm for Bulk Loading R-trees/].
+This method is faster and results in R-trees with better internal structure. This means that the query performance is increased.
+
+The examples of structures of trees created by use of different algorithms and exemplary operations times are presented below.
+
+[table
+[[] [Linear algorithm] [Quadratic algorithm] [R*-tree] [Packing algorithm]]
+[[*Example structure*] [[$img/index/rtree/linear.png]] [[$img/index/rtree/quadratic.png]] [[$img/index/rtree/rstar.png]] [[$img/index/rtree/bulk.png]]]
+[[*1M Values inserts*] [1.76s] [2.47s] [6.19s] [0.64s]]
+[[*100k spatial queries*] [2.21s] [0.51s] [0.12s] [0.07s]]
+[[*100k knn queries*] [6.37s] [2.09s] [0.64s] [0.52s]]
+]
+
+The performance of the R-tree for different values of Max parameter and Min=0.5*Max is presented in the table below.
+The configuration of the machine used for testing is: /Intel(R) Core(TM) i7 870 @ 2.93GHz, 8GB RAM, MS Windows 7 x64/.
+In the two upper figures you can see the performance of the __rtree__ storing random, relatively small, non-overlapping, 2d boxes.
+In the lower ones, the performance of the __rtree__ also storing random, 2d boxes, but this time quite big and possibly overlapping.
+As you can see, the __rtree__ performance is different in both cases.
+
+[table
+[[] [building] [querying]]
+[[*non overlapping*] [[$img/index/rtree/build_non_ovl.png]] [[$img/index/rtree/query_non_ovl.png]]]
+[[*overlapping*] [[$img/index/rtree/build_ovl.png]] [[$img/index/rtree/query_ovl.png]]]
+]
+
+[heading Implementation details]
+
+Key features of this implementation of the __rtree__ are:
+
+* capable to store arbitrary __value__ type,
+* three different balancing algorithms - linear, quadratic or rstar,
+* creation using packing algorithm,
+* parameters (including maximal and minimal number of elements) may be passed as compile- or run-time parameters, in compile-time
+ version nodes elements are stored in static-size containers,
+* advanced queries, e.g. search for 5 nearest Values to some point and intersecting some Geometry but not within the other one,
+* iterative queries by use of iterators,
+* C++11 conformant - move semantics, stateful allocators,
+* capable to store __value__ type with no default constructor,
+* in-memory storage by use of the default std::allocator<>,
+* other storage options - shared memory and mapped file by use of Boost.Interprocess allocators.
+
+[/
+[heading Planned features]
+
+Below you can find features that will (or probably will) be added in the future releases:
+/]
+[/ Done
+* rstar optimization (planned for release in Boost 1.55),
+* bulk loading (planned for release in Boost 1.55),
+* 'reversed' spatial predicates or additional spatial predicates like contains(),
+* iterative queries - query iterators / type-erased query iterators,
+/]
+[/
+* path/ray query predicate - search for Values along Segment or LineString, closest to the starting point,
+* user-defined distance calculation in nearest() predicate,
+* serialization,
+* persistent storage.
+/]
+[/ Maybe
+* other geometries as Indexables, e.g. NSpheres. Rings would probably require using move semantics instead of copying
+* bounding tree - rtree variation capable to use other Geometries as bounds, e.g. NSpheres, Rings/convex polygons/ (moving required), Capsules, Elipses, Variants etc.
+* moving instead of copying + optimizations for movable/nonthrowing/trivialy copied elements
+* passing more than one nearest/path predicate - "returned value is one of k1 nearest values to p1 and ... and one of kN nearest values to pN"
+/]
+
+[heading Dependencies]
+
+R-tree depends on Boost.Container, Boost.Core, Boost.Move, Boost.MPL, Boost.Range, Boost.Tuple.
+
+[heading Contributors]
+
+The spatial index was originally started by Federico J. Fernandez during the Google Summer of Code 2008 program, mentored by Hartmut Kaiser.
+
+[heading Spatial thanks]
+
+I'd like to thank Barend Gehrels, Bruno Lalande, Mateusz Łoskot, Lucanus J. Simonson for their support and ideas.
+
+[endsect]
+
diff --git a/libs/geometry/doc/index/make_qbk.py b/libs/geometry/doc/index/make_qbk.py
new file mode 100755
index 0000000000..bff6304885
--- /dev/null
+++ b/libs/geometry/doc/index/make_qbk.py
@@ -0,0 +1,50 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+# ===========================================================================
+# Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+# Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+#
+# 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)9
+# ============================================================================
+
+import os, sys
+
+cmd = "doxygen_xml2qbk"
+cmd = cmd + " --xml xml/%s.xml"
+cmd = cmd + " --start_include boost/"
+cmd = cmd + " --output_style alt"
+cmd = cmd + " > generated/%s.qbk"
+
+def run_command(command):
+ if os.system(command) != 0:
+ raise Exception("Error running %s" % command)
+
+def remove_all_files(dir):
+ if os.path.exists(dir):
+ for f in os.listdir(dir):
+ os.remove(dir+f)
+
+remove_all_files("xml/")
+
+run_command("doxygen Doxyfile")
+run_command(cmd % ("classboost_1_1geometry_1_1index_1_1rtree", "rtree"))
+run_command(cmd % ("group__rtree__functions", "rtree_functions"))
+
+run_command(cmd % ("structboost_1_1geometry_1_1index_1_1linear", "rtree_linear"))
+run_command(cmd % ("structboost_1_1geometry_1_1index_1_1quadratic", "rtree_quadratic"))
+run_command(cmd % ("structboost_1_1geometry_1_1index_1_1rstar", "rtree_rstar"))
+run_command(cmd % ("classboost_1_1geometry_1_1index_1_1dynamic__linear", "rtree_dynamic_linear"))
+run_command(cmd % ("classboost_1_1geometry_1_1index_1_1dynamic__quadratic", "rtree_dynamic_quadratic"))
+run_command(cmd % ("classboost_1_1geometry_1_1index_1_1dynamic__rstar", "rtree_dynamic_rstar"))
+
+run_command(cmd % ("structboost_1_1geometry_1_1index_1_1indexable", "indexable"))
+run_command(cmd % ("structboost_1_1geometry_1_1index_1_1equal__to", "equal_to"))
+
+run_command(cmd % ("group__predicates", "predicates"))
+#run_command(cmd % ("group__nearest__relations", "nearest_relations"))
+run_command(cmd % ("group__adaptors", "adaptors"))
+run_command(cmd % ("group__inserters", "inserters"))
+
+#run_command("b2")
diff --git a/libs/geometry/doc/index/rtree.qbk b/libs/geometry/doc/index/rtree.qbk
new file mode 100644
index 0000000000..46063c8f57
--- /dev/null
+++ b/libs/geometry/doc/index/rtree.qbk
@@ -0,0 +1,21 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2012 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[section R-tree]
+
+[include rtree/introduction.qbk]
+[include rtree/quickstart.qbk]
+[include rtree/creation.qbk]
+[include rtree/query.qbk]
+[include rtree/examples.qbk]
+[include rtree/experimental.qbk]
+[/include rtree/reference.qbk]
+
+[endsect]
diff --git a/libs/geometry/doc/index/rtree/creation.qbk b/libs/geometry/doc/index/rtree/creation.qbk
new file mode 100644
index 0000000000..7f5f8290ac
--- /dev/null
+++ b/libs/geometry/doc/index/rtree/creation.qbk
@@ -0,0 +1,233 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2012 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[section Creation and Modification]
+
+[h4 Template parameters]
+
+__rtree__ has 5 parameters but only 2 are required:
+
+ rtree<Value,
+ Parameters,
+ IndexableGetter = index::indexable<Value>,
+ EqualTo = index::equal_to<Value>,
+ Allocator = std::allocator<Value> >
+
+* `__value__` - type of object which will be stored in the container,
+* `Parameters` - parameters type, inserting/splitting algorithm,
+* `IndexableGetter` - function object translating `__value__` to `__indexable__` (`__point__` or `__box__`) which __rtree__ can handle,
+* `EqualTo` - function object comparing `__value__`s,
+* `Allocator` - `Value`s allocator, all allocators needed by the container are created from it.
+
+[h4 Values and Indexables]
+
+__rtree__ may store `__value__`s of any type as long as passed function objects know how to interpret those `__value__`s, that is
+extract an `__indexable__` that the __rtree__ can handle and compare `__value__`s.
+The `__indexable__` is a type adapted to Point, Box or Segment concept.
+The examples of rtrees storing `__value__`s translatable to various `__indexable__`s are presented below.
+
+[table
+[[rtree<Point, ...>] [rtree<Box, ...>] [rtree<Segment, ...>]]
+[[[$img/index/rtree/rtree_pt.png]] [[$img/index/rtree/rstar.png]] [[$img/index/rtree/rtree_seg.png]]]
+]
+
+By default function objects `index::indexable<Value>` and `index::equal_to<Value>` are defined for some typically used `__value__`
+types which may be stored without defining any additional classes. By default the rtree may store pure `__indexable__`s, pairs
+and tuples. In the case of those two collection types, the `__indexable__` must be the first stored type.
+
+* `__indexable__ = __point__ | __box__ | Segment`
+* `__value__ = Indexable | std::pair<__indexable__, T> | boost::tuple<__indexable__, ...> [ | std::tuple<__indexable__, ...> ]`
+
+By default `boost::tuple<...>` is supported on all compilers. If the compiler supports C++11 tuples and variadic templates
+then `std::tuple<...>` may be used "out of the box" as well.
+
+Examples of default `__value__` types:
+
+ geometry::model::point<...>
+ geometry::model::point_xy<...>
+ geometry::model::box<...>
+ geometry::model::segment<...>
+ std::pair<geometry::model::box<...>, unsigned>
+ boost::tuple<geometry::model::point<...>, int, float>
+
+The predefined `index::indexable<Value>` returns const reference to the `__indexable__` stored in the `__value__`.
+
+[important The translation is done quite frequently inside the container - each time the rtree needs it. ]
+
+The predefined `index::equal_to<Value>`:
+
+* for `__point__`, `__box__` and `Segment` - compares `__value__`s with geometry::equals().
+* for `std::pair<...>` - compares both components of the `__value__`. The first value stored in the pair is compared before the second one.
+ If the value stored in the pair is a Geometry, `geometry::equals()` is used. For other types it uses `operator==()`.
+* for `tuple<...>` - compares all components of the `__value__`. If the component is a `Geometry`, `geometry::equals()`
+ function is used. For other types it uses `operator==()`.
+
+[h4 Balancing algorithms compile-time parameters]
+
+`__value__`s may be inserted to the __rtree__ in many various ways. Final internal structure
+of the __rtree__ depends on algorithms used in the insertion process and parameters. The most important is
+nodes' balancing algorithm. Currently, three well-known types of R-trees may be created.
+
+Linear - classic __rtree__ using balancing algorithm of linear complexity
+
+ index::rtree< __value__, index::linear<16> > rt;
+
+Quadratic - classic __rtree__ using balancing algorithm of quadratic complexity
+
+ index::rtree< __value__, index::quadratic<16> > rt;
+
+R*-tree - balancing algorithm minimizing nodes' overlap with forced reinsertions
+
+ index::rtree< __value__, index::rstar<16> > rt;
+
+[h4 Balancing algorithms run-time parameters]
+
+Balancing algorithm parameters may be passed to the __rtree__ in run-time.
+To use run-time versions of the __rtree__ one may pass parameters which
+names start with `dynamic_`.
+
+ // linear
+ index::rtree<__value__, index::dynamic_linear> rt(index::dynamic_linear(16));
+
+ // quadratic
+ index::rtree<__value__, index::dynamic_quadratic> rt(index::dynamic_quadratic(16));
+
+ // rstar
+ index::rtree<__value__, index::dynamic_rstar> rt(index::dynamic_rstar(16));
+
+The obvious drawback is a slightly slower __rtree__.
+
+[h4 Non-default parameters]
+
+Non-default R-tree parameters are described in the reference.
+
+[h4 Copying, moving and swapping]
+
+The __rtree__ is copyable and movable container. Move semantics is implemented using Boost.Move library
+so it's possible to move the container on a compilers without rvalue references support.
+
+ // default constructor
+ index::rtree< __value__, index::rstar<8> > rt1;
+
+ // copy constructor
+ index::rtree< __value__, index::rstar<8> > rt2(r1);
+
+ // copy assignment
+ rt2 = r1;
+
+ // move constructor
+ index::rtree< __value__, index::rstar<8> > rt3(boost::move(rt1));
+
+ // move assignment
+ rt3 = boost::move(rt2);
+
+ // swap
+ rt3.swap(rt2);
+
+[h4 Inserting and removing Values]
+
+The following code creates an __rtree__ using quadratic balancing algorithm.
+
+ using namespace boost::geometry;
+ typedef std::pair<Box, int> __value__;
+ index::rtree< __value__, index::quadratic<16> > rt;
+
+To insert or remove a `__value__' by method call one may use the following
+code.
+
+ __value__ v = std::make_pair(__box__(...), 0);
+
+ rt.insert(v);
+
+ rt.remove(v);
+
+To insert or remove a `__value__' by function call one may use the following
+code.
+
+ __value__ v = std::make_pair(__box__(...), 0);
+
+ index::insert(rt, v);
+
+ index::remove(rt, v);
+
+Typically you will perform those operations in a loop in order to e.g. insert
+some number of `__value__`s corresponding to geometrical objects (e.g. `Polygons`)
+stored in another container.
+
+[h4 Additional interface]
+
+The __rtree__ allows creation, inserting and removing of Values from a range. The range may be passed as
+`[first, last)` Iterators pair or as a Range adapted to one of the Boost.Range Concepts.
+
+ namespace bgi = boost::geometry::index;
+ typedef std::pair<Box, int> __value__;
+ typedef bgi::rtree< __value__, bgi::linear<32> > RTree;
+
+ std::vector<__value__> values;
+ /* vector filling code, here */
+
+ // create R-tree with default constructor and insert values with insert(Value const&)
+ RTree rt1;
+ BOOST_FOREACH(__value__ const& v, values)
+ rt1.insert(v);
+
+ // create R-tree with default constructor and insert values with insert(Iter, Iter)
+ RTree rt2;
+ rt2.insert(values.begin(), values.end());
+
+ // create R-tree with default constructor and insert values with insert(Range)
+ RTree rt3;
+ rt3.insert(values_range);
+
+ // create R-tree with constructor taking Iterators
+ RTree rt4(values.begin(), values.end());
+
+ // create R-tree with constructor taking Range
+ RTree rt5(values_range);
+
+ // remove values with remove(Value const&)
+ BOOST_FOREACH(__value__ const& v, values)
+ rt1.remove(v);
+
+ // remove values with remove(Iter, Iter)
+ rt2.remove(values.begin(), values.end());
+
+ // remove values with remove(Range)
+ rt3.remove(values_range);
+
+Furthermore, it's possible to pass a Range adapted by one of the Boost.Range adaptors into the rtree (more complete example can be found in the *Examples* section).
+
+ // create Rtree containing `std::pair<Box, int>` from a container of Boxes on the fly.
+ RTree rt6(boxes | boost::adaptors::indexed()
+ | boost::adaptors::transformed(pair_maker()));
+
+[h4 Insert iterator]
+
+There are functions like `std::copy()`, or __rtree__'s queries that copy values to an output iterator.
+In order to insert values to a container in this kind of function insert iterators may be used.
+Geometry.Index provide its own `bgi::insert_iterator<Container>` which is generated by
+`bgi::inserter()` function.
+
+ namespace bgi = boost::geometry::index;
+ typedef std::pair<Box, int> __value__;
+ typedef bgi::rtree< __value__, bgi::linear<32> > RTree;
+
+ std::vector<__value__> values;
+ /* vector filling code, here */
+
+ // create R-tree and insert values from the vector
+ RTree rt1;
+ std::copy(values.begin(), values.end(), bgi::inserter(rt1));
+
+ // create R-tree and insert values returned by a query
+ RTree rt2;
+ rt1.spatial_query(Box(/*...*/), bgi::inserter(rt2));
+
+[endsect] [/ Creation and Modification /]
diff --git a/libs/geometry/doc/index/rtree/examples.qbk b/libs/geometry/doc/index/rtree/examples.qbk
new file mode 100644
index 0000000000..37157caa55
--- /dev/null
+++ b/libs/geometry/doc/index/rtree/examples.qbk
@@ -0,0 +1,74 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2013 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[section:rtree_examples Examples]
+
+[section Quick start]
+[rtree_quickstart]
+[h4 Expected results]
+[include ../src/examples/rtree/quick_start_results.qbk]
+[endsect]
+
+[section Index of polygons stored in vector]
+[rtree_polygons_vector]
+[h4 Expected results]
+[include ../src/examples/rtree/polygons_vector_results.qbk]
+[endsect]
+
+[section Index of shared pointers to polygons]
+[rtree_polygons_shared_ptr]
+[h4 Expected results]
+[include ../src/examples/rtree/polygons_shared_ptr_results.qbk]
+[endsect]
+
+[section Index of iterators of a map storing variant geometries]
+[rtree_variants_map]
+[h4 Expected results]
+[include ../src/examples/rtree/variants_map_results.qbk]
+[endsect]
+
+[section Specializing index::indexable function object - storing shared pointers in the rtree]
+[rtree_value_shared_ptr]
+[h4 Expected results]
+[include ../src/examples/rtree/value_shared_ptr_results.qbk]
+[endsect]
+
+[section Using IndexableGetter function object - storing indexes of external container's elements]
+[rtree_value_index]
+[h4 Expected results]
+[include ../src/examples/rtree/value_index_results.qbk]
+[endsect]
+
+[section Range adaptors]
+[rtree_range_adaptors]
+[h4 Expected results]
+[include ../src/examples/rtree/range_adaptors_results.qbk]
+[endsect]
+
+[section Iterative query]
+[rtree_iterative_query]
+[h4 Expected results]
+[include ../src/examples/rtree/iterative_query_results.qbk]
+[endsect]
+
+[section Index stored in shared memory using Boost.Interprocess]
+[rtree_interprocess]
+[h4 Expected results]
+[include ../src/examples/rtree/interprocess_results.qbk]
+[endsect]
+
+[section Index stored in mapped file using Boost.Interprocess]
+[rtree_mapped_file]
+[h4 Expected results]
+[include ../src/examples/rtree/mapped_file_results.qbk]
+[endsect]
+
+
+[endsect]
diff --git a/libs/geometry/doc/index/rtree/exception_safety.qbk b/libs/geometry/doc/index/rtree/exception_safety.qbk
new file mode 100644
index 0000000000..8f1dbb6afc
--- /dev/null
+++ b/libs/geometry/doc/index/rtree/exception_safety.qbk
@@ -0,0 +1,57 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2012 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[section Exception safety]
+
+In order to be exception-safe the __rtree__ requires:
+
+* exception-safe copy constructor and copy assignment of the `__value__`.
+* exception-safe copy constructor and copy assignment of the `CoordinateType` used in the `Indexable`.
+* nonthrowing copy constructor of the `Translator`.
+* nonthrowing destructors of above types.
+
+[table
+[[Operation] [exception-safety]]
+[[`rtree()`] [ /nothrow/ ]]
+[[`rtree(Iterator, Iterator)`] [ *strong* ]]
+[[`~rtree()`] [ /nothrow/ ]]
+[[][]]
+[[`rtree(rtree const&)`] [ *strong* ]]
+[[`operator=(rtree const&)`] [ *strong* ]]
+[[][]]
+[[`rtree(rtree &&)`] [ /nothrow/ ]]
+[[`operator=(rtree &&)`] [ /nothrow/ or *strong*
+[footnote /nothrow/ - if allocators are equal, *strong* - otherwise]]]
+[[`swap(rtree &)`] [ /nothrow/ ]]
+[[][]]
+[[`insert(__value__)`] [ not safe
+[footnote If this operation throws, the R-tree may be left in an inconsistent state, elements must not be inserted or removed, methods may return invalid data.]]]
+[[`insert(Iterator, Iterator)`][ not safe ]]
+[[`insert(Range)`] [ not safe ]]
+[[`remove(__value__)`] [ not safe ]]
+[[`remove(Iterator, Iterator)`][ not safe ]]
+[[`remove(Range)`] [ not safe ]]
+[[`clear()`] [ /nothrow/ ]]
+[[][]]
+[[`spatial_query(...)`] [ *strong* ]]
+[[`nearest_query(...)`] [ *strong* ]]
+[[`count(ValueOrIndexable)`] [ /nothrow/ ]]
+[[][]]
+[[`size()`] [ /nothrow/ ]]
+[[`empty()`] [ /nothrow/ ]]
+[[`box()`] [ /nothrow/ or *strong*
+[footnote /nothrow/ - if `CoordinateType` has nonthrowing copy constructor, *strong* - otherwise]]]
+[[][]]
+[[`get_allocator()`] [ /nothrow/ ]]
+[[`parameters()`] [ /nothrow/ ]]
+[[`translator()`] [ /nothrow/ ]]
+]
+
+[endsect] [/Exception safety/]
diff --git a/libs/geometry/doc/index/rtree/experimental.qbk b/libs/geometry/doc/index/rtree/experimental.qbk
new file mode 100644
index 0000000000..21a7b8d1f9
--- /dev/null
+++ b/libs/geometry/doc/index/rtree/experimental.qbk
@@ -0,0 +1,111 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2013 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[section Experimental Features]
+
+This section describes experimental features which are implemented but unavailable by default.
+Be aware that they may not be released in the future or functionalities may be released but
+behind different interface.
+
+To enable them one must define `BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL` in compiler's command line or before
+including spatial index.
+
+[heading Nearest query distance calculation]
+
+It is possible to define how distance to the non-point `__value__` should be calculated. To do this one may pass
+a relation object instead of a Point to the nearest predicate, as follows:
+
+ /* calculate distance to the Indexables' nearest points */
+ rtree.query(index::nearest(index::to_nearest(pt), k), std::back_inserter(returned_values)); // same as default
+
+ /* calculate distance to the Indexables' centroid */
+ rtree.query(index::nearest(index::to_centroid(pt), k), std::back_inserter(returned_values));
+
+ /* calculate distance to the Indexables' furthest points */
+ rtree.query(index::nearest(index::to_furthest(pt), k), std::back_inserter(returned_values));
+
+[heading Path query]
+
+Path query returns `k` first `__value__`s intersecting a path defined by a `Segment` or a`Linestring`. The result of a query returning first 5
+values intersecting a path is presented below. Path's flow is denoted by blue arrows, returned values are orange.
+
+[$img/index/rtree/path.png]
+
+To perform this query one may pass a `path()` predicate taking a `Segment` or a `Linestring` and maximum number of `__value__`s which
+should be returned:
+
+ rtree.query(index::path(segment, k), std::back_inserter(returned_values));
+ rtree.query(index::path(linestring, k), std::back_inserter(returned_values));
+
+[warning Only one distance predicate may be used in a query. This means that there can be only one `nearest()` or `path()` predicate passed. Passing more of them will result in compile-time error.]
+
+[heading Incremental queries]
+
+Sometimes there is a need to stop querying at some desired moment because for example the decision that query should find another value
+is made after analysis of previously returned values. There can also be desirable to pause querying and resume it later.
+
+Currently, those kind of incremental queries are implemented as input (single pass) const iterators, relatively
+big fat-iterators storing stack used in the tree-traversing process. Because the type of predicates passed
+to the query varies, the type of the iterator varies as well.
+
+Therefore to use query iterators one must pass them to some function template, then types will be deduced
+automatically. If iterators objects must be stored one may use Boost.Typeof library to retrieve a type from
+an expression or use C++11 `auto` or `decltype`.
+
+ /* function call */
+ std::copy(rtree.qbegin(index::intersects(box)), rtree.qend(index::intersects(box)), std::back_inserter(returned_values));
+
+ /* Boost.Typeof */
+ typedef BOOST_TYPEOF(rtree.qbegin(index::nearest(pt, 5))) const_query_iterator;
+ const_query_iterator first = rtree.qbegin(index::nearest(pt, 5));
+ const_query_iterator last = rtree.qend(index::nearest(pt, 5));
+ // ...
+ for ( ; first != last ; ++first )
+ *first; // do something with Value
+
+ /* C++11 */
+ auto first = rtree.qbegin(index::nearest(pt, 5));
+ auto last = rtree.qend(index::nearest(pt, 5));
+ // ...
+ for ( ; first != last ; ++first )
+ *first; // do something with Value
+
+`qend()` method is overloaded to return a different, lighter type of iterator which may be compared
+with query iterator to check if the querying was finished. But since it has different type than the one returned by
+`qbegin(Pred)` it can't be used with STL-like functions like `std::copy()` which expect that `first` and `last`
+iterators have the same type.
+
+ /* function call */
+ template <typename First, typename Last, typename Out>
+ void my_copy(First first, Last last, Out out)
+ {
+ for ( ; first != last ; ++out, ++first )
+ *out = *first;
+ }
+ // ...
+ my_copy(rtree.qbegin(index::intersects(box)), rtree.qend(), std::back_inserter(returned_values));
+
+ /* Boost.Typeof */
+ typedef BOOST_TYPEOF(rtree.qbegin(index::nearest(pt, 5))) const_query_iterator;
+ typedef BOOST_TYPEOF(rtree.qend()) end_iterator;
+ const_query_iterator first = rtree.qbegin(index::nearest(pt, 5));
+ end_iterator last = rtree.qend();
+ // ...
+ for ( ; first != last ; ++first )
+ *first; // do something with Value
+
+ /* C++11 */
+ auto first = rtree.qbegin(index::nearest(pt, 5));
+ auto last = rtree.qend();
+ // ...
+ for ( ; first != last ; ++first )
+ *first; // do something with Value
+
+[endsect] [/ Experimental features /]
diff --git a/libs/geometry/doc/index/rtree/introduction.qbk b/libs/geometry/doc/index/rtree/introduction.qbk
new file mode 100644
index 0000000000..43477cc58c
--- /dev/null
+++ b/libs/geometry/doc/index/rtree/introduction.qbk
@@ -0,0 +1,68 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2012 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[section Introduction]
+
+__rtree__ is a tree data structure used for spatial searching. It was proposed by
+Antonin Guttman in 1984 [footnote Guttman, A. (1984). /R-Trees: A Dynamic Index Structure for Spatial Searching/]
+as an expansion of B-tree for multi-dimensional data. It may be used to store points or volumetric data in order to
+perform a spatial query later. This query may return objects that are inside some area or are close to some point in space
+[footnote Cheung, K.; Fu, A. (1998). /Enhanced Nearest Neighbour Search on the R-tree/].
+
+The __rtree__ structure is presented on the image below. Each __rtree__'s node store a box describing the space occupied by
+its children nodes. At the bottom of the structure, there are leaf-nodes which contains values
+(geometric objects representations).
+
+[$img/index/rtree/rstar.png]
+
+The __rtree__ is a self-balanced data structure. The key part of balancing algorithm is node splitting algorithm
+[footnote Greene, D. (1989). /An implementation and performance analysis of spatial data access methods/]
+[footnote Beckmann, N.; Kriegel, H. P.; Schneider, R.; Seeger, B. (1990). /The R*-tree: an efficient and robust access method for points and rectangles/].
+Each algorithm produces different splits so the internal structure of a tree may be different for each one of them.
+In general more complex algorithms analyses elements better and produces less overlapping nodes. In the searching process less nodes must be traversed
+in order to find desired objects. On the other hand more complex analysis takes more time. In general faster inserting will result in slower searching
+and vice versa. The performance of the R-tree depends on balancing algorithm, parameters and data inserted into the container.
+Example structures of trees created by use of three different algorithms and operations time are presented below. Data used in benchmark was random,
+non-overlapping boxes.
+
+[table
+[[] [linear algorithm] [quadratic algorithm] [R*-tree]]
+[[*Example structure*] [[$img/index/rtree/linear.png]] [[$img/index/rtree/quadratic.png]] [[$img/index/rtree/rstar.png]]]
+[[*1M Values inserts*] [1.65s] [2.51s] [4.96s]]
+[[*100k spatial queries*] [0.87s] [0.25s] [0.09s]]
+[[*100k knn queries*] [3.25s] [1.41s] [0.51s]]
+]
+
+[heading Implementation details]
+
+Key features of this implementation of the __rtree__ are:
+
+* capable to store arbitrary __value__ type,
+* three different creation algorithms - linear, quadratic or rstar,
+* parameters (including maximal and minimal number of elements) may be passed as compile- or run-time parameters,
+* advanced queries - e.g. search for 5 nearest values to some point and intersecting some region but not within the other one,
+* C++11 conformant: move semantics, stateful allocators,
+* capable to store __value__ type with no default constructor.
+
+[heading Dependencies]
+
+R-tree depends on *Boost.Move*, *Boost.Container*, *Boost.Tuple*, *Boost.Utility*, *Boost.MPL*.
+
+[heading Contributors]
+
+The spatial index was originally started by Federico J. Fernandez during the Google Summer of Code 2008 program, mentored by Hartmut Kaiser.
+
+[heading Spatial thanks]
+
+I'd like to thank Barend Gehrels, Bruno Lalande, Mateusz Łoskot, Lucanus J. Simonson for their support and ideas.
+
+[endsect]
+
+
diff --git a/libs/geometry/doc/index/rtree/query.qbk b/libs/geometry/doc/index/rtree/query.qbk
new file mode 100644
index 0000000000..0cf80acc78
--- /dev/null
+++ b/libs/geometry/doc/index/rtree/query.qbk
@@ -0,0 +1,245 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2013 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[section Queries]
+
+Queries returns `__value__`s which meets some predicates. Currently supported are three types of predicates:
+
+* spatial predicates - spatial conditions that must be met by stored Value and some Geometry,
+* distance predicates - distance conditions that must be met by stored Value and some Geometry,
+* user-defined unary predicate - function, function object or lambda expression checking user-defined condition.
+
+For example queries may be used to retrieve Values:
+
+* intersecting some area but not within other area,
+* are nearest to some point,
+* overlapping a box and has user-defined property.
+
+[h4 Performing a query]
+
+There are various ways to perform a query. They are presented below.
+All of them returns `__value__`s intersecting some region defined as a `__box__`.
+
+Member function call
+
+ std::vector<__value__> returned_values;
+ __box__ box_region(...);
+ rt.query(bgi::intersects(box_region), std::back_inserter(returned_values));
+
+Free function call
+
+ std::vector<__value__> returned_values;
+ __box__ box_region(...);
+ bgi::query(rt, bgi::intersects(box_region), std::back_inserter(returned_values));
+
+Range generated by `operator|`
+
+ __box__ box_region(...);
+ BOOST_FOREACH(__value__ & v, rt | bgi::adaptors::queried(bgi::intersects(box_region)))
+ ; // do something with v
+
+Query iterators returned by member functions
+
+ std::vector<__value__> returned_values;
+ __box__ box_region(...);
+ std::copy(rt.qbegin(bgi::intersects(box_region)), rt.qend(), std::back_inserter(returned_values));
+
+Query iterators returned by free functions
+
+ std::vector<__value__> returned_values;
+ __box__ box_region(...);
+ std::copy(bgi::qbegin(rt, bgi::intersects(box_region)), bgi::qend(rt), std::back_inserter(returned_values));
+
+[h4 Spatial predicates]
+
+Queries using spatial predicates returns `__value__`s which are related somehow to some Geometry - box, polygon, etc.
+Names of spatial predicates correspond to names of __boost_geometry__ algorithms (boolean operations).
+Examples of some basic queries may be found in the tables below. The query region and result `Value`s are orange.
+
+[table
+[[intersects(Box)] [covered_by(Box)] [disjoint(Box)] [overlaps(Box)] [within(Box)]]
+[[[$img/index/rtree/intersects.png]] [[$img/index/rtree/within.png]] [[$img/index/rtree/disjoint.png]] [[$img/index/rtree/overlaps.png]] [[$img/index/rtree/within.png]]]
+]
+
+[table
+[[intersects(Ring)] [intersects(Polygon)] [intersects(MultiPolygon)] [intersects(Segment)] [intersects(Linestring)]]
+[[[$img/index/rtree/intersects_ring.png]] [[$img/index/rtree/intersects_poly.png]] [[$img/index/rtree/intersects_mpoly.png]] [[$img/index/rtree/intersects_segment.png]] [[$img/index/rtree/intersects_linestring.png]]]
+]
+
+[table
+[[intersects(Box)] [disjoint(Box)] [intersects(Box)] [disjoint(Box)]]
+[[[$img/index/rtree/rtree_pt_intersects_box.png]] [[$img/index/rtree/rtree_pt_disjoint_box.png]] [[$img/index/rtree/rtree_seg_intersects_box.png]] [[$img/index/rtree/rtree_seg_disjoint_box.png]]]
+]
+
+Spatial predicates are generated by functions defined in `boost::geometry::index` namespace.
+
+ rt.query(index::contains(box), std::back_inserter(result));
+ rt.query(index::covered_by(box), std::back_inserter(result));
+ rt.query(index::covers(box), std::back_inserter(result));
+ rt.query(index::disjont(box), std::back_inserter(result));
+ rt.query(index::intersects(box), std::back_inserter(result));
+ rt.query(index::overlaps(box), std::back_inserter(result));
+ rt.query(index::within(box), std::back_inserter(result));
+
+All spatial predicates may be negated, e.g.:
+
+ rt.query(!index::intersects(box), std::back_inserter(result));
+ // the same as
+ rt.query(index::disjoint(box), std::back_inserter(result));
+
+[h4 Nearest neighbours queries]
+
+Nearest neighbours queries returns `__value__`s which are closest to some Geometry.
+The examples of k-NN queries are presented below. 5 `__value__`s nearest to the Geometry are orange.
+
+[table
+[[nearest(Point, k)] [nearest(Box, k)] [nearest(Point, k)] [nearest(Box, k)]]
+[[[$img/index/rtree/knn_pt_box.png]] [[$img/index/rtree/knn_box_box.png]] [[$img/index/rtree/rtree_pt_knn_pt.png]] [[$img/index/rtree/rtree_pt_knn_box.png]]]
+]
+[table
+[[nearest(Segment, k)]
+ [nearest(Point, k)] [nearest(Box, k)] [nearest(Segment, k)]
+ [nearest(Segment, k)]]
+[[[$img/index/rtree/knn_seg_box.png]]
+ [[$img/index/rtree/rtree_seg_knn_pt.png]] [[$img/index/rtree/rtree_seg_knn_box.png]] [[$img/index/rtree/rtree_seg_knn_seg.png]]
+ [[$img/index/rtree/rtree_pt_knn_seg.png]]]
+]
+
+To perform the knn query one must pass the nearest predicate generated by the
+`nearest()` function defined in `boost::geometry::index` namespace.
+For non-point `__indexable__`s the shortest distance is calculated using `bg::comparable_distance()` function.
+The following query returns `k` `__value__`s closest to some Point in space.
+
+ std::vector<__value__> returned_values;
+ __point__ pt(/*...*/);
+ rt.query(bgi::nearest(pt, k), std::back_inserter(returned_values));
+
+The same way different query Geometries can be used:
+
+ __box__ box(/*...*/);
+ rt.query(bgi::nearest(box, k), std::back_inserter(returned_values));
+
+ Segment seg(/*...*/);
+ rt.query(bgi::nearest(seg, k), std::back_inserter(returned_values));
+
+[h4 User-defined unary predicate]
+
+The user may pass a `UnaryPredicate` - function, function object or lambda expression taking const reference to Value and returning bool.
+This object may be passed to the query in order to check if `__value__` should be returned by the query. To do it one
+may use `index::satisfies()` function like on the example below:
+
+ bool is_red(__value__ const& v)
+ {
+ return v.is_red();
+ }
+
+ struct is_red_o
+ {
+ template <typename Value>
+ bool operator()(__value__ const& v)
+ {
+ return v.is_red();
+ }
+ }
+
+ // ...
+
+ rt.query(index::intersects(box) && index::satisfies(is_red),
+ std::back_inserter(result));
+
+ rt.query(index::intersects(box) && index::satisfies(is_red_o()),
+ std::back_inserter(result));
+
+ #ifndef BOOST_NO_CXX11_LAMBDAS
+ rt.query(index::intersects(box) && index::satisfies([](__value__ const& v) { return v.is_red(); }),
+ std::back_inserter(result));
+ #endif
+
+`satisfies()` may be negated, e.g.:
+
+ bool is_red(__value__ const& v) { return v.is_red(); }
+ bool is_not_red(__value__ const& v) { return !v.is_red(); }
+
+ // ...
+
+ rt.query(index::intersects(box) && index::satisfies(is_red),
+ std::back_inserter(result));
+ // the same as
+ rt.query(index::intersects(box) && !index::satisfies(is_not_red),
+ std::back_inserter(result));
+
+[h4 Passing a set of predicates]
+
+It's possible to use some number of predicates in one query by connecting them with `operator&&` e.g. `Pred1 && Pred2 && Pred3 && ...`.
+
+These predicates are connected by logical AND. Passing all predicates together not only makes possible
+to construct advanced queries but is also faster than separate calls because the tree is traversed only once.
+Traversing is continued and `Value`s are returned only if all predicates are met. Predicates are checked
+left-to-right so placing most restrictive predicates first should accelerate the search.
+
+ rt.query(index::intersects(box1) && !index::within(box2),
+ std::back_inserter(result));
+
+ rt.query(index::intersects(box1) && !index::within(box2) && index::overlaps(box3),
+ std::back_inserter(result));
+
+Of course it's possible to connect different types of predicates together.
+
+ index::query(rt, index::nearest(pt, k) && index::within(b), std::back_inserter(returned_values));
+
+ BOOST_FOREACH(Value & v, rt | index::adaptors::queried(index::nearest(pt, k) && index::covered_by(b)))
+ ; // do something with v
+
+[h4 Iterative queries]
+
+The query performed using query iterators may be paused and resumed if needed, e.g. when the query takes too long,
+or may be stopped at some point, when all interesting values were gathered. The query iterator is returned by
+`qbegin()` member function which requires passing predicates, like `query()` member function.
+
+ for ( Rtree::const_query_iterator it = tree.qbegin(bgi::nearest(pt, 10000)) ;
+ it != tree.qend() ; ++it )
+ {
+ // do something with value
+ if ( has_enough_nearest_values() )
+ break;
+ }
+
+[note In the case of iterative k-NN queries it's guaranteed to iterate over the closest `__value__`s first. ]
+
+[warning The modification of the `rtree`, e.g. insertion or removal of `__value__`s may invalidate the iterators. ]
+
+[h4 Inserting query results into the other R-tree]
+
+There are several ways of inserting Values returned by a query to the other R-tree container.
+The most basic way is creating a temporary container for Values and insert them later.
+
+ namespace bgi = boost::geometry::index;
+ typedef std::pair<Box, int> __value__;
+ typedef bgi::rtree< __value__, bgi::linear<32, 8> > RTree;
+
+ RTree rt1;
+ /* some inserting into the tree */
+
+ std::vector<Value> result;
+ rt1.query(bgi::intersects(Box(/*...*/)), std::back_inserter(result));
+ RTree rt2(result.begin(), result.end());
+
+However there are better ways. One of these methods is mentioned in the "Creation and modification" section.
+The insert iterator may be passed directly into the query.
+
+ RTree rt3;
+ rt1.query(bgi::intersects(Box(/*...*/))), bgi::inserter(rt3));
+
+If you're a user of Boost.Range you'll appreciate the third option. You may pass the result Range directly into the
+constructor or `insert()` member function.
+
+ RTree rt4(rt1 | bgi::adaptors::queried(bgi::intersects(Box(/*...*/)))));
+
+[endsect] [/ Queries /]
diff --git a/libs/geometry/doc/index/rtree/quickstart.qbk b/libs/geometry/doc/index/rtree/quickstart.qbk
new file mode 100644
index 0000000000..37826b6e2e
--- /dev/null
+++ b/libs/geometry/doc/index/rtree/quickstart.qbk
@@ -0,0 +1,59 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2012 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[section:rtree_quickstart Quick Start]
+
+This Quick Start section shows simple way to creating a typical R-tree and perform
+spatial query.
+
+The code below assumes that following files are included and namespaces used.
+
+[rtree_quickstart_include]
+
+Typically you'll store e.g. `std::pair<Box, MyGeometryId>` in the __rtree__. `MyGeometryId`
+will be some identifier of a complex `Geometry` stored in other container, e.g. index type
+of a `Polygon` stored in the vector or an iterator of list of `Ring`s. To keep it simple to
+define `Value` we will use predefined __box__ and unsigned int.
+
+[rtree_quickstart_valuetype]
+
+R-tree may be created using various algorithm and parameters. You should choose the algorithm you'll
+find the best for your purpose. In this example we will use quadratic algorithm. Parameters are
+passed as template parameters. Maximum number of elements in nodes is set to 16.
+
+[rtree_quickstart_create]
+
+Typically `Value`s will be generated in a loop from e.g. `Polygon`s stored in some other container.
+In this case `Box` objects will probably be created with `geometry::envelope()` function.
+But to keep it simple lets just generate some boxes manually and insert them into the R-tree by
+using `insert()` method.
+
+[rtree_quickstart_insert]
+
+There are various types of spatial queries that may be performed, they can be even combined together
+in one call. For simplicity, we use the default one. The following query return values intersecting
+a box. The sequence of `Values` in the result is not specified.
+
+[rtree_quickstart_spatial_query]
+
+Other type of query is k-nearest neighbor search. It returns some number of values nearest to some point
+in space. The default knn query may be performed as follows. The sequence of `Values` in the result is not specified.
+
+[rtree_quickstart_nearest_query]
+
+At the end we'll print results.
+
+[rtree_quickstart_output]
+
+[h3 More]
+More information about the R-tree implementation, other algorithms and queries may be found in
+other parts of this documentation.
+
+[endsect]
diff --git a/libs/geometry/doc/index/rtree/reference.qbk b/libs/geometry/doc/index/rtree/reference.qbk
new file mode 100644
index 0000000000..c53b01fbdf
--- /dev/null
+++ b/libs/geometry/doc/index/rtree/reference.qbk
@@ -0,0 +1,40 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2013 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+[section:reference Reference]
+
+[include ../generated/rtree.qbk]
+[include ../generated/rtree_functions.qbk]
+
+[section:parameters R-tree parameters (boost::geometry::index::)]
+
+[include ../generated/rtree_linear.qbk]
+[include ../generated/rtree_quadratic.qbk]
+[include ../generated/rtree_rstar.qbk]
+[include ../generated/rtree_dynamic_linear.qbk]
+[include ../generated/rtree_dynamic_quadratic.qbk]
+[include ../generated/rtree_dynamic_rstar.qbk]
+
+[endsect]
+
+[/section:function_objects Function objects (boost::geometry::index::)/]
+
+[include ../generated/indexable.qbk]
+[include ../generated/equal_to.qbk]
+
+[/endsect/]
+
+[include ../generated/predicates.qbk]
+[include ../generated/nearest_relations.qbk]
+[include ../generated/adaptors.qbk]
+
+[include ../generated/inserters.qbk]
+
+[endsect]
diff --git a/libs/geometry/doc/index/src/examples/Jamfile.v2 b/libs/geometry/doc/index/src/examples/Jamfile.v2
new file mode 100644
index 0000000000..e221ca86bd
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/Jamfile.v2
@@ -0,0 +1,19 @@
+# Boost.Geometry Index
+#
+# Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+#
+# 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)
+
+import testing ;
+
+project boost-geometry-index-doc-src-examples
+ :
+ requirements
+ <include>../../..
+ #<include>../../../boost/geometry/extensions/contrib/ttmath
+ <toolset>msvc:<asynch-exceptions>on
+ ;
+
+build-project rtree ;
diff --git a/libs/geometry/doc/index/src/examples/rtree/Jamfile.v2 b/libs/geometry/doc/index/src/examples/rtree/Jamfile.v2
new file mode 100644
index 0000000000..e28a6e07b0
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/Jamfile.v2
@@ -0,0 +1,43 @@
+# Boost.Geometry Index
+#
+# Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+#
+# 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)
+
+exe iterative_query : iterative_query.cpp ;
+exe polygons_shared_ptr : polygons_shared_ptr.cpp ;
+exe polygons_vector : polygons_vector.cpp ;
+exe quick_start : quick_start.cpp ;
+exe range_adaptors : range_adaptors.cpp ;
+exe value_index : value_index.cpp ;
+exe value_shared_ptr : value_shared_ptr.cpp ;
+exe variants_map : variants_map.cpp ;
+
+exe interprocess : interprocess.cpp /boost/thread//boost_thread
+ :
+ <toolset>acc:<linkflags>-lrt
+ <toolset>acc-pa_risc:<linkflags>-lrt
+ <host-os>hpux,<toolset>gcc:<linkflags>"-Wl,+as,mpas"
+# <toolset>gcc-mingw:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
+ <toolset>gcc,<target-os>windows:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
+ <host-os>windows,<toolset>clang:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
+ :
+ <threading>multi
+ : # requirements
+ ;
+
+exe mapped_file : mapped_file.cpp /boost/thread//boost_thread
+ :
+ <toolset>acc:<linkflags>-lrt
+ <toolset>acc-pa_risc:<linkflags>-lrt
+ <host-os>hpux,<toolset>gcc:<linkflags>"-Wl,+as,mpas"
+# <toolset>gcc-mingw:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
+ <toolset>gcc,<target-os>windows:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
+ <host-os>windows,<toolset>clang:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
+ :
+ <threading>multi
+ : # requirements
+ ;
+
diff --git a/libs/geometry/doc/index/src/examples/rtree/interprocess.cpp b/libs/geometry/doc/index/src/examples/rtree/interprocess.cpp
new file mode 100644
index 0000000000..61d3f0b505
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/interprocess.cpp
@@ -0,0 +1,112 @@
+// Boost.Geometry Index
+//
+// Quickbook Examples
+//
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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)
+
+//[rtree_interprocess
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+#include <boost/geometry/index/rtree.hpp>
+
+#include <boost/foreach.hpp>
+
+#include <boost/interprocess/managed_shared_memory.hpp>
+#include <boost/interprocess/allocators/allocator.hpp>
+
+#include <vector>
+#include <string>
+#include <cstdlib> //std::system
+
+//For parent process argc == 1, for child process argc > 1
+int main(int argc, char *argv[])
+{
+ using namespace boost::interprocess;
+ namespace bg = boost::geometry;
+ namespace bgm = bg::model;
+ namespace bgi = bg::index;
+
+ typedef bgm::point<float, 2, bg::cs::cartesian> P;
+ typedef bgm::box<P> B;
+
+ typedef bgi::linear<32, 8> Par;
+ typedef bgi::indexable<B> I;
+ typedef bgi::equal_to<B> E;
+ typedef allocator<B, managed_shared_memory::segment_manager> Alloc;
+ typedef bgi::rtree<B, Par, I, E, Alloc> Rtree;
+
+ //Parent process
+ if ( argc == 1 )
+ {
+ struct shm_remove
+ {
+ shm_remove() { shared_memory_object::remove("MySharedMemory"); }
+ ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
+ } remover;
+
+ managed_shared_memory segment(create_only, "MySharedMemory", 65536);
+
+ std::cout << "Parent: Constructing container\n";
+
+ Rtree * tree = segment.construct<Rtree>("Rtree")(Par(), I(), E(), Alloc(segment.get_segment_manager()));
+
+ std::cout << "Parent: Filling container with 100 boxes\n";
+
+ for ( float i = 0 ; i < 100 ; i += 1 )
+ tree->insert(B(P(i, i), P(i+0.5f, i+0.5f)));
+
+ std::cout << "Parent: Tree content\n";
+ Rtree::bounds_type bb = tree->bounds();
+ std::cout << "[(" << bg::get<0>(bb.min_corner()) << ", " << bg::get<1>(bb.min_corner())
+ << ")(" << bg::get<0>(bb.max_corner()) << ", " << bg::get<1>(bb.max_corner()) << ")]\n";
+
+ std::cout << "Parent: Running child process\n";
+
+ std::string s(argv[0]); s += " child ";
+ if ( 0 != std::system(s.c_str()) )
+ return 1;
+
+ if ( segment.find<Rtree>("Rtree").first )
+ return 1;
+
+ std::cout << "Parent: Container was properly destroyed by the child process\n";
+ }
+ //Child process
+ else
+ {
+ managed_shared_memory segment(open_only, "MySharedMemory");
+
+ std::cout << "Child: Searching of the container in shared memory\n";
+
+ Rtree * tree = segment.find<Rtree>("Rtree").first;
+
+ std::cout << "Child: Querying for objects intersecting box = [(45, 45)(55, 55)]\n";
+
+ std::vector<B> result;
+ unsigned k = tree->query(bgi::intersects(B(P(45, 45), P(55, 55))), std::back_inserter(result));
+
+ std::cout << "Child: Found objects:\n";
+ std::cout << k << "\n";
+ BOOST_FOREACH(B const& b, result)
+ {
+ std::cout << "[(" << bg::get<0>(b.min_corner()) << ", " << bg::get<1>(b.min_corner())
+ << ")(" << bg::get<0>(b.max_corner()) << ", " << bg::get<1>(b.max_corner()) << ")]\n";
+ }
+ std::cout << "\n";
+
+ std::cout << "Child: Destroying container\n";
+
+ segment.destroy<Rtree>("Rtree");
+ }
+
+ return 0;
+};
+
+//]
diff --git a/libs/geometry/doc/index/src/examples/rtree/interprocess_results.qbk b/libs/geometry/doc/index/src/examples/rtree/interprocess_results.qbk
new file mode 100644
index 0000000000..74f231344b
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/interprocess_results.qbk
@@ -0,0 +1,34 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2014 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+ Parent: Constructing container
+ Parent: Filling container with 100 boxes
+ Parent: Tree content
+ [(0, 0)(99.5, 99.5)]
+ Parent: Running child process
+ Child: Searching of the container in shared memory
+ Child: Querying for objects intersecting box = [(45, 45)(55, 55)]
+ Child: Found objects:
+ 11
+ [(45, 45)(45.5, 45.5)]
+ [(46, 46)(46.5, 46.5)]
+ [(47, 47)(47.5, 47.5)]
+ [(48, 48)(48.5, 48.5)]
+ [(49, 49)(49.5, 49.5)]
+ [(50, 50)(50.5, 50.5)]
+ [(51, 51)(51.5, 51.5)]
+ [(52, 52)(52.5, 52.5)]
+ [(53, 53)(53.5, 53.5)]
+ [(54, 54)(54.5, 54.5)]
+ [(55, 55)(55.5, 55.5)]
+
+ Child: Destroying container
+ Parent: Container was properly destroyed by the child process
+
diff --git a/libs/geometry/doc/index/src/examples/rtree/iterative_query.cpp b/libs/geometry/doc/index/src/examples/rtree/iterative_query.cpp
new file mode 100644
index 0000000000..1afb53ee55
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/iterative_query.cpp
@@ -0,0 +1,65 @@
+// Boost.Geometry Index
+//
+// Quickbook Examples
+//
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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)
+
+//[rtree_iterative_query
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+#include <boost/geometry/index/rtree.hpp>
+
+// just for output
+#include <iostream>
+
+namespace bg = boost::geometry;
+namespace bgi = boost::geometry::index;
+
+int main()
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> point;
+ typedef point value;
+ typedef bgi::rtree< value, bgi::linear<16> > rtree_t;
+
+ // create the rtree using default constructor
+ rtree_t rtree;
+
+ // create some values
+ for ( double f = 0 ; f < 10 ; f += 1 )
+ {
+ // insert new value
+ rtree.insert(point(f, f));
+ }
+
+ // query point
+ point pt(5.1, 5.1);
+
+ // iterate over nearest Values
+ for ( rtree_t::const_query_iterator
+ it = rtree.qbegin(bgi::nearest(pt, 100)) ;
+ it != rtree.qend() ;
+ ++it )
+ {
+ double d = bg::distance(pt, *it);
+
+ std::cout << bg::wkt(*it) << ", distance= " << d << std::endl;
+
+ // break if the distance is too big
+ if ( d > 2 )
+ {
+ std::cout << "break!" << std::endl;
+ break;
+ }
+ }
+
+ return 0;
+}
+
+//]
diff --git a/libs/geometry/doc/index/src/examples/rtree/iterative_query_results.qbk b/libs/geometry/doc/index/src/examples/rtree/iterative_query_results.qbk
new file mode 100644
index 0000000000..816f04c274
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/iterative_query_results.qbk
@@ -0,0 +1,16 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2014 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+ POINT(5 5), distance= 0.141421
+ POINT(6 6), distance= 1.27279
+ POINT(4 4), distance= 1.55563
+ POINT(7 7), distance= 2.68701
+ break!
+
diff --git a/libs/geometry/doc/index/src/examples/rtree/mapped_file.cpp b/libs/geometry/doc/index/src/examples/rtree/mapped_file.cpp
new file mode 100644
index 0000000000..18127505cc
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/mapped_file.cpp
@@ -0,0 +1,66 @@
+// Boost.Geometry Index
+//
+// Quickbook Examples
+//
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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)
+
+//[rtree_mapped_file
+
+#include <iostream>
+
+#include <boost/interprocess/managed_mapped_file.hpp>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/index/rtree.hpp>
+
+namespace bi = boost::interprocess;
+namespace bg = boost::geometry;
+namespace bgm = bg::model;
+namespace bgi = bg::index;
+
+int main()
+{
+ typedef bgm::point<float, 2, bg::cs::cartesian> point_t;
+
+ typedef point_t value_t;
+ typedef bgi::linear<32, 8> params_t;
+ typedef bgi::indexable<value_t> indexable_t;
+ typedef bgi::equal_to<value_t> equal_to_t;
+ typedef bi::allocator<value_t, bi::managed_mapped_file::segment_manager> allocator_t;
+ typedef bgi::rtree<value_t, params_t, indexable_t, equal_to_t, allocator_t> rtree_t;
+
+ {
+ bi::managed_mapped_file file(bi::open_or_create, "data.bin", 1024*1024);
+ allocator_t alloc(file.get_segment_manager());
+ rtree_t * rtree_ptr = file.find_or_construct<rtree_t>("rtree")(params_t(), indexable_t(), equal_to_t(), alloc);
+
+ std::cout << rtree_ptr->size() << std::endl;
+
+ rtree_ptr->insert(point_t(1.0, 1.0));
+ rtree_ptr->insert(point_t(2.0, 2.0));
+
+ std::cout << rtree_ptr->size() << std::endl;
+ }
+
+ {
+ bi::managed_mapped_file file(bi::open_or_create, "data.bin", 1024*1024);
+ allocator_t alloc(file.get_segment_manager());
+ rtree_t * rtree_ptr = file.find_or_construct<rtree_t>("rtree")(params_t(), indexable_t(), equal_to_t(), alloc);
+
+ std::cout << rtree_ptr->size() << std::endl;
+
+ rtree_ptr->insert(point_t(3.0, 3.0));
+ rtree_ptr->insert(point_t(4.0, 4.0));
+
+ std::cout << rtree_ptr->size() << std::endl;
+ }
+
+ return 0;
+}
+
+//]
diff --git a/libs/geometry/doc/index/src/examples/rtree/mapped_file_results.qbk b/libs/geometry/doc/index/src/examples/rtree/mapped_file_results.qbk
new file mode 100644
index 0000000000..da9a0a4d81
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/mapped_file_results.qbk
@@ -0,0 +1,15 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2014 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+ 0
+ 2
+ 2
+ 4
+
diff --git a/libs/geometry/doc/index/src/examples/rtree/polygons_shared_ptr.cpp b/libs/geometry/doc/index/src/examples/rtree/polygons_shared_ptr.cpp
new file mode 100644
index 0000000000..a97e788057
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/polygons_shared_ptr.cpp
@@ -0,0 +1,93 @@
+// Boost.Geometry Index
+//
+// Quickbook Examples
+//
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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)
+
+//[rtree_polygons_shared_ptr
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+
+#include <boost/geometry/index/rtree.hpp>
+
+#include <cmath>
+#include <vector>
+#include <iostream>
+#include <boost/foreach.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace bg = boost::geometry;
+namespace bgi = boost::geometry::index;
+
+int main()
+{
+ typedef bg::model::point<float, 2, bg::cs::cartesian> point;
+ typedef bg::model::box<point> box;
+ typedef bg::model::polygon<point, false, false> polygon; // ccw, open polygon
+ typedef boost::shared_ptr<polygon> shp;
+ typedef std::pair<box, shp> value;
+
+ // create the rtree using default constructor
+ bgi::rtree< value, bgi::linear<16, 4> > rtree;
+
+ std::cout << "filling index with polygons shared pointers:" << std::endl;
+
+ // create some polygons and fill the spatial index
+ for ( unsigned i = 0 ; i < 10 ; ++i )
+ {
+ // create a polygon
+ shp p(new polygon());
+ for ( float a = 0 ; a < 6.28316f ; a += 1.04720f )
+ {
+ float x = i + int(10*::cos(a))*0.1f;
+ float y = i + int(10*::sin(a))*0.1f;
+ p->outer().push_back(point(x, y));
+ }
+
+ // display new polygon
+ std::cout << bg::wkt<polygon>(*p) << std::endl;
+
+ // calculate polygon bounding box
+ box b = bg::return_envelope<box>(*p);
+ // insert new value
+ rtree.insert(std::make_pair(b, p));
+ }
+
+ // find values intersecting some area defined by a box
+ box query_box(point(0, 0), point(5, 5));
+ std::vector<value> result_s;
+ rtree.query(bgi::intersects(query_box), std::back_inserter(result_s));
+
+ // find 5 nearest values to a point
+ std::vector<value> result_n;
+ rtree.query(bgi::nearest(point(0, 0), 5), std::back_inserter(result_n));
+
+ // note: in Boost.Geometry the WKT representation of a box is polygon
+
+ // note: the values store the bounding boxes of polygons
+ // the polygons aren't used for querying but are printed
+
+ // display results
+ std::cout << "spatial query box:" << std::endl;
+ std::cout << bg::wkt<box>(query_box) << std::endl;
+ std::cout << "spatial query result:" << std::endl;
+ BOOST_FOREACH(value const& v, result_s)
+ std::cout << bg::wkt<polygon>(*v.second) << std::endl;
+
+ std::cout << "knn query point:" << std::endl;
+ std::cout << bg::wkt<point>(point(0, 0)) << std::endl;
+ std::cout << "knn query result:" << std::endl;
+ BOOST_FOREACH(value const& v, result_n)
+ std::cout << bg::wkt<polygon>(*v.second) << std::endl;
+
+ return 0;
+}
+
+//]
diff --git a/libs/geometry/doc/index/src/examples/rtree/polygons_shared_ptr_results.qbk b/libs/geometry/doc/index/src/examples/rtree/polygons_shared_ptr_results.qbk
new file mode 100644
index 0000000000..bf56821724
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/polygons_shared_ptr_results.qbk
@@ -0,0 +1,39 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2014 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+ filling index with polygons shared pointers:
+ POLYGON((1 0,0.4 0.8,-0.5 0.8,-0.9 0,-0.4 -0.8,0.5 -0.8,1 0))
+ POLYGON((2 1,1.4 1.8,0.5 1.8,0.1 1,0.6 0.2,1.5 0.2,2 1))
+ POLYGON((3 2,2.4 2.8,1.5 2.8,1.1 2,1.6 1.2,2.5 1.2,3 2))
+ POLYGON((4 3,3.4 3.8,2.5 3.8,2.1 3,2.6 2.2,3.5 2.2,4 3))
+ POLYGON((5 4,4.4 4.8,3.5 4.8,3.1 4,3.6 3.2,4.5 3.2,5 4))
+ POLYGON((6 5,5.4 5.8,4.5 5.8,4.1 5,4.6 4.2,5.5 4.2,6 5))
+ POLYGON((7 6,6.4 6.8,5.5 6.8,5.1 6,5.6 5.2,6.5 5.2,7 6))
+ POLYGON((8 7,7.4 7.8,6.5 7.8,6.1 7,6.6 6.2,7.5 6.2,8 7))
+ POLYGON((9 8,8.4 8.8,7.5 8.8,7.1 8,7.6 7.2,8.5 7.2,9 8))
+ POLYGON((10 9,9.4 9.8,8.5 9.8,8.1 9,8.6 8.2,9.5 8.2,10 9))
+ spatial query box:
+ POLYGON((0 0,0 5,5 5,5 0,0 0))
+ spatial query result:
+ POLYGON((1 0,0.4 0.8,-0.5 0.8,-0.9 0,-0.4 -0.8,0.5 -0.8,1 0))
+ POLYGON((2 1,1.4 1.8,0.5 1.8,0.1 1,0.6 0.2,1.5 0.2,2 1))
+ POLYGON((3 2,2.4 2.8,1.5 2.8,1.1 2,1.6 1.2,2.5 1.2,3 2))
+ POLYGON((4 3,3.4 3.8,2.5 3.8,2.1 3,2.6 2.2,3.5 2.2,4 3))
+ POLYGON((5 4,4.4 4.8,3.5 4.8,3.1 4,3.6 3.2,4.5 3.2,5 4))
+ POLYGON((6 5,5.4 5.8,4.5 5.8,4.1 5,4.6 4.2,5.5 4.2,6 5))
+ knn query point:
+ POINT(0 0)
+ knn query result:
+ POLYGON((5 4,4.4 4.8,3.5 4.8,3.1 4,3.6 3.2,4.5 3.2,5 4))
+ POLYGON((4 3,3.4 3.8,2.5 3.8,2.1 3,2.6 2.2,3.5 2.2,4 3))
+ POLYGON((3 2,2.4 2.8,1.5 2.8,1.1 2,1.6 1.2,2.5 1.2,3 2))
+ POLYGON((1 0,0.4 0.8,-0.5 0.8,-0.9 0,-0.4 -0.8,0.5 -0.8,1 0))
+ POLYGON((2 1,1.4 1.8,0.5 1.8,0.1 1,0.6 0.2,1.5 0.2,2 1))
+
diff --git a/libs/geometry/doc/index/src/examples/rtree/polygons_vector.cpp b/libs/geometry/doc/index/src/examples/rtree/polygons_vector.cpp
new file mode 100644
index 0000000000..28fc9c1838
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/polygons_vector.cpp
@@ -0,0 +1,101 @@
+// Boost.Geometry Index
+//
+// Quickbook Examples
+//
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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)
+
+//[rtree_polygons_vector
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+
+#include <boost/geometry/index/rtree.hpp>
+
+#include <cmath>
+#include <vector>
+#include <iostream>
+#include <boost/foreach.hpp>
+
+namespace bg = boost::geometry;
+namespace bgi = boost::geometry::index;
+
+int main()
+{
+ typedef bg::model::point<float, 2, bg::cs::cartesian> point;
+ typedef bg::model::box<point> box;
+ typedef bg::model::polygon<point, false, false> polygon; // ccw, open polygon
+ typedef std::pair<box, unsigned> value;
+
+ // polygons
+ std::vector<polygon> polygons;
+
+ // create some polygons
+ for ( unsigned i = 0 ; i < 10 ; ++i )
+ {
+ // create a polygon
+ polygon p;
+ for ( float a = 0 ; a < 6.28316f ; a += 1.04720f )
+ {
+ float x = i + int(10*::cos(a))*0.1f;
+ float y = i + int(10*::sin(a))*0.1f;
+ p.outer().push_back(point(x, y));
+ }
+
+ // add polygon
+ polygons.push_back(p);
+ }
+
+ // display polygons
+ std::cout << "generated polygons:" << std::endl;
+ BOOST_FOREACH(polygon const& p, polygons)
+ std::cout << bg::wkt<polygon>(p) << std::endl;
+
+ // create the rtree using default constructor
+ bgi::rtree< value, bgi::rstar<16, 4> > rtree;
+
+ // fill the spatial index
+ for ( unsigned i = 0 ; i < polygons.size() ; ++i )
+ {
+ // calculate polygon bounding box
+ box b = bg::return_envelope<box>(polygons[i]);
+ // insert new value
+ rtree.insert(std::make_pair(b, i));
+ }
+
+ // find values intersecting some area defined by a box
+ box query_box(point(0, 0), point(5, 5));
+ std::vector<value> result_s;
+ rtree.query(bgi::intersects(query_box), std::back_inserter(result_s));
+
+ // find 5 nearest values to a point
+ std::vector<value> result_n;
+ rtree.query(bgi::nearest(point(0, 0), 5), std::back_inserter(result_n));
+
+ // note: in Boost.Geometry the WKT representation of a box is polygon
+
+ // note: the values store the bounding boxes of polygons
+ // the polygons aren't used for querying but are printed
+
+ // display results
+ std::cout << "spatial query box:" << std::endl;
+ std::cout << bg::wkt<box>(query_box) << std::endl;
+ std::cout << "spatial query result:" << std::endl;
+ BOOST_FOREACH(value const& v, result_s)
+ std::cout << bg::wkt<polygon>(polygons[v.second]) << std::endl;
+
+ std::cout << "knn query point:" << std::endl;
+ std::cout << bg::wkt<point>(point(0, 0)) << std::endl;
+ std::cout << "knn query result:" << std::endl;
+ BOOST_FOREACH(value const& v, result_n)
+ std::cout << bg::wkt<polygon>(polygons[v.second]) << std::endl;
+
+ return 0;
+}
+
+//]
diff --git a/libs/geometry/doc/index/src/examples/rtree/polygons_vector_results.qbk b/libs/geometry/doc/index/src/examples/rtree/polygons_vector_results.qbk
new file mode 100644
index 0000000000..d745efeb34
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/polygons_vector_results.qbk
@@ -0,0 +1,39 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2014 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+ generated polygons:
+ POLYGON((1 0,0.4 0.8,-0.5 0.8,-0.9 0,-0.4 -0.8,0.5 -0.8,1 0))
+ POLYGON((2 1,1.4 1.8,0.5 1.8,0.1 1,0.6 0.2,1.5 0.2,2 1))
+ POLYGON((3 2,2.4 2.8,1.5 2.8,1.1 2,1.6 1.2,2.5 1.2,3 2))
+ POLYGON((4 3,3.4 3.8,2.5 3.8,2.1 3,2.6 2.2,3.5 2.2,4 3))
+ POLYGON((5 4,4.4 4.8,3.5 4.8,3.1 4,3.6 3.2,4.5 3.2,5 4))
+ POLYGON((6 5,5.4 5.8,4.5 5.8,4.1 5,4.6 4.2,5.5 4.2,6 5))
+ POLYGON((7 6,6.4 6.8,5.5 6.8,5.1 6,5.6 5.2,6.5 5.2,7 6))
+ POLYGON((8 7,7.4 7.8,6.5 7.8,6.1 7,6.6 6.2,7.5 6.2,8 7))
+ POLYGON((9 8,8.4 8.8,7.5 8.8,7.1 8,7.6 7.2,8.5 7.2,9 8))
+ POLYGON((10 9,9.4 9.8,8.5 9.8,8.1 9,8.6 8.2,9.5 8.2,10 9))
+ spatial query box:
+ POLYGON((0 0,0 5,5 5,5 0,0 0))
+ spatial query result:
+ POLYGON((1 0,0.4 0.8,-0.5 0.8,-0.9 0,-0.4 -0.8,0.5 -0.8,1 0))
+ POLYGON((2 1,1.4 1.8,0.5 1.8,0.1 1,0.6 0.2,1.5 0.2,2 1))
+ POLYGON((3 2,2.4 2.8,1.5 2.8,1.1 2,1.6 1.2,2.5 1.2,3 2))
+ POLYGON((4 3,3.4 3.8,2.5 3.8,2.1 3,2.6 2.2,3.5 2.2,4 3))
+ POLYGON((5 4,4.4 4.8,3.5 4.8,3.1 4,3.6 3.2,4.5 3.2,5 4))
+ POLYGON((6 5,5.4 5.8,4.5 5.8,4.1 5,4.6 4.2,5.5 4.2,6 5))
+ knn query point:
+ POINT(0 0)
+ knn query result:
+ POLYGON((5 4,4.4 4.8,3.5 4.8,3.1 4,3.6 3.2,4.5 3.2,5 4))
+ POLYGON((4 3,3.4 3.8,2.5 3.8,2.1 3,2.6 2.2,3.5 2.2,4 3))
+ POLYGON((3 2,2.4 2.8,1.5 2.8,1.1 2,1.6 1.2,2.5 1.2,3 2))
+ POLYGON((1 0,0.4 0.8,-0.5 0.8,-0.9 0,-0.4 -0.8,0.5 -0.8,1 0))
+ POLYGON((2 1,1.4 1.8,0.5 1.8,0.1 1,0.6 0.2,1.5 0.2,2 1))
+
diff --git a/libs/geometry/doc/index/src/examples/rtree/quick_start.cpp b/libs/geometry/doc/index/src/examples/rtree/quick_start.cpp
new file mode 100644
index 0000000000..d95836cf57
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/quick_start.cpp
@@ -0,0 +1,89 @@
+// Boost.Geometry Index
+//
+// Quickbook Examples
+//
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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)
+
+//[rtree_quickstart
+
+//[rtree_quickstart_include
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+#include <boost/geometry/index/rtree.hpp>
+
+// to store queries results
+#include <vector>
+
+// just for output
+#include <iostream>
+#include <boost/foreach.hpp>
+
+namespace bg = boost::geometry;
+namespace bgi = boost::geometry::index;
+//]
+
+int main()
+{
+ //[rtree_quickstart_valuetype
+ typedef bg::model::point<float, 2, bg::cs::cartesian> point;
+ typedef bg::model::box<point> box;
+ typedef std::pair<box, unsigned> value;
+ //]
+
+ //[rtree_quickstart_create
+ // create the rtree using default constructor
+ bgi::rtree< value, bgi::quadratic<16> > rtree;
+ //]
+
+ //[rtree_quickstart_insert
+ // create some values
+ for ( unsigned i = 0 ; i < 10 ; ++i )
+ {
+ // create a box
+ box b(point(i + 0.0f, i + 0.0f), point(i + 0.5f, i + 0.5f));
+ // insert new value
+ rtree.insert(std::make_pair(b, i));
+ }
+ //]
+
+ //[rtree_quickstart_spatial_query
+ // find values intersecting some area defined by a box
+ box query_box(point(0, 0), point(5, 5));
+ std::vector<value> result_s;
+ rtree.query(bgi::intersects(query_box), std::back_inserter(result_s));
+ //]
+
+ //[rtree_quickstart_nearest_query
+ // find 5 nearest values to a point
+ std::vector<value> result_n;
+ rtree.query(bgi::nearest(point(0, 0), 5), std::back_inserter(result_n));
+ //]
+
+ // note: in Boost.Geometry WKT representation of a box is polygon
+
+ //[rtree_quickstart_output
+ // display results
+ std::cout << "spatial query box:" << std::endl;
+ std::cout << bg::wkt<box>(query_box) << std::endl;
+ std::cout << "spatial query result:" << std::endl;
+ BOOST_FOREACH(value const& v, result_s)
+ std::cout << bg::wkt<box>(v.first) << " - " << v.second << std::endl;
+
+ std::cout << "knn query point:" << std::endl;
+ std::cout << bg::wkt<point>(point(0, 0)) << std::endl;
+ std::cout << "knn query result:" << std::endl;
+ BOOST_FOREACH(value const& v, result_n)
+ std::cout << bg::wkt<box>(v.first) << " - " << v.second << std::endl;
+ //]
+
+ return 0;
+}
+
+//]
diff --git a/libs/geometry/doc/index/src/examples/rtree/quick_start_results.qbk b/libs/geometry/doc/index/src/examples/rtree/quick_start_results.qbk
new file mode 100644
index 0000000000..cf48376a62
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/quick_start_results.qbk
@@ -0,0 +1,28 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2014 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+ spatial query box:
+ POLYGON((0 0,0 5,5 5,5 0,0 0))
+ spatial query result:
+ POLYGON((0 0,0 0.5,0.5 0.5,0.5 0,0 0)) - 0
+ POLYGON((1 1,1 1.5,1.5 1.5,1.5 1,1 1)) - 1
+ POLYGON((2 2,2 2.5,2.5 2.5,2.5 2,2 2)) - 2
+ POLYGON((3 3,3 3.5,3.5 3.5,3.5 3,3 3)) - 3
+ POLYGON((4 4,4 4.5,4.5 4.5,4.5 4,4 4)) - 4
+ POLYGON((5 5,5 5.5,5.5 5.5,5.5 5,5 5)) - 5
+ knn query point:
+ POINT(0 0)
+ knn query result:
+ POLYGON((4 4,4 4.5,4.5 4.5,4.5 4,4 4)) - 4
+ POLYGON((3 3,3 3.5,3.5 3.5,3.5 3,3 3)) - 3
+ POLYGON((2 2,2 2.5,2.5 2.5,2.5 2,2 2)) - 2
+ POLYGON((0 0,0 0.5,0.5 0.5,0.5 0,0 0)) - 0
+ POLYGON((1 1,1 1.5,1.5 1.5,1.5 1,1 1)) - 1
+
diff --git a/libs/geometry/doc/index/src/examples/rtree/range_adaptors.cpp b/libs/geometry/doc/index/src/examples/rtree/range_adaptors.cpp
new file mode 100644
index 0000000000..f01d978cf2
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/range_adaptors.cpp
@@ -0,0 +1,79 @@
+// Boost.Geometry Index
+//
+// Quickbook Examples
+//
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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)
+
+//[rtree_range_adaptors
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+#include <boost/geometry/index/rtree.hpp>
+
+// Boost.Range
+#include <boost/range.hpp>
+// adaptors
+#include <boost/range/adaptor/indexed.hpp>
+#include <boost/range/adaptor/transformed.hpp>
+
+// a container
+#include <vector>
+
+// just for output
+#include <iostream>
+
+namespace bg = boost::geometry;
+namespace bgi = boost::geometry::index;
+
+// Define a function object converting a value_type of indexed Range into std::pair<>.
+// This is a generic implementation but of course it'd be possible to use some
+// specific types. One could also take Value as template parameter and access
+// first_type and second_type members, etc.
+template <typename First, typename Second>
+struct pair_maker
+{
+ typedef std::pair<First, Second> result_type;
+ template<typename T>
+ inline result_type operator()(T const& v) const
+ {
+ return result_type(v.value(), v.index());
+ }
+};
+
+int main()
+{
+ typedef bg::model::point<float, 2, bg::cs::cartesian> point;
+ typedef bg::model::box<point> box;
+
+ typedef std::vector<box> container;
+ typedef container::size_type size_type;
+
+ typedef std::pair<box, size_type> value;
+
+ // create a container of boxes
+ container boxes;
+ for ( size_type i = 0 ; i < 10 ; ++i )
+ {
+ // add a box into the container
+ box b(point(i + 0.0f, i + 0.0f), point(i + 0.5f, i + 0.5f));
+ boxes.push_back(b);
+ }
+
+ // create the rtree using default constructor
+ bgi::rtree< value, bgi::quadratic<16> >
+ rtree(boxes | boost::adaptors::indexed()
+ | boost::adaptors::transformed(pair_maker<box, size_type>()));
+
+ // print the number of values using boxes[0] as indexable
+ std::cout << rtree.count(boxes[0]) << std::endl;
+
+ return 0;
+}
+
+//]
diff --git a/libs/geometry/doc/index/src/examples/rtree/range_adaptors_results.qbk b/libs/geometry/doc/index/src/examples/rtree/range_adaptors_results.qbk
new file mode 100644
index 0000000000..a50537ae34
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/range_adaptors_results.qbk
@@ -0,0 +1,11 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2014 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+ 1
diff --git a/libs/geometry/doc/index/src/examples/rtree/value_index.cpp b/libs/geometry/doc/index/src/examples/rtree/value_index.cpp
new file mode 100644
index 0000000000..f005c4d428
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/value_index.cpp
@@ -0,0 +1,99 @@
+// Boost.Geometry Index
+//
+// Quickbook Examples
+//
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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)
+
+//[rtree_value_index
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+#include <boost/geometry/index/rtree.hpp>
+
+#include <cmath>
+#include <vector>
+#include <iostream>
+#include <boost/foreach.hpp>
+
+namespace bg = boost::geometry;
+namespace bgi = boost::geometry::index;
+
+template <typename Container>
+class my_indexable
+{
+ typedef typename Container::size_type size_t;
+ typedef typename Container::const_reference cref;
+ Container const& container;
+
+public:
+ typedef cref result_type;
+ explicit my_indexable(Container const& c) : container(c) {}
+ result_type operator()(size_t i) const { return container[i]; }
+};
+
+int main()
+{
+ typedef bg::model::point<float, 2, bg::cs::cartesian> point;
+ typedef bg::model::box<point> box;
+ typedef std::vector<box>::size_type value;
+ typedef bgi::rstar<16, 4> parameters;
+ typedef my_indexable< std::vector<box> > indexable_getter;
+
+ // boxes
+ std::vector<box> boxes;
+
+ // create some boxes
+ for ( unsigned i = 0 ; i < 10 ; ++i )
+ {
+ // add a box
+ boxes.push_back(box(point(i+0.0f, i+0.0f), point(i+0.5f, i+0.5f)));
+ }
+
+ // display boxes
+ std::cout << "generated boxes:" << std::endl;
+ BOOST_FOREACH(box const& b, boxes)
+ std::cout << bg::wkt<box>(b) << std::endl;
+
+ // create the rtree
+ parameters params;
+ indexable_getter ind(boxes);
+ bgi::rtree<value, parameters, indexable_getter> rtree(params, ind);
+
+ // fill the spatial index
+ for ( size_t i = 0 ; i < boxes.size() ; ++i )
+ rtree.insert(i);
+
+ // find values intersecting some area defined by a box
+ box query_box(point(0, 0), point(5, 5));
+ std::vector<value> result_s;
+ rtree.query(bgi::intersects(query_box), std::back_inserter(result_s));
+
+ // find 5 nearest values to a point
+ std::vector<value> result_n;
+ rtree.query(bgi::nearest(point(0, 0), 5), std::back_inserter(result_n));
+
+ // note: in Boost.Geometry the WKT representation of a box is polygon
+
+ // display results
+ std::cout << "spatial query box:" << std::endl;
+ std::cout << bg::wkt<box>(query_box) << std::endl;
+ std::cout << "spatial query result:" << std::endl;
+ BOOST_FOREACH(value i, result_s)
+ std::cout << bg::wkt<box>(boxes[i]) << std::endl;
+
+ std::cout << "knn query point:" << std::endl;
+ std::cout << bg::wkt<point>(point(0, 0)) << std::endl;
+ std::cout << "knn query result:" << std::endl;
+ BOOST_FOREACH(value i, result_n)
+ std::cout << bg::wkt<box>(boxes[i]) << std::endl;
+
+ return 0;
+}
+
+//]
diff --git a/libs/geometry/doc/index/src/examples/rtree/value_index_results.qbk b/libs/geometry/doc/index/src/examples/rtree/value_index_results.qbk
new file mode 100644
index 0000000000..c5f8daeb95
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/value_index_results.qbk
@@ -0,0 +1,39 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2014 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+ generated boxes:
+ POLYGON((0 0,0 0.5,0.5 0.5,0.5 0,0 0))
+ POLYGON((1 1,1 1.5,1.5 1.5,1.5 1,1 1))
+ POLYGON((2 2,2 2.5,2.5 2.5,2.5 2,2 2))
+ POLYGON((3 3,3 3.5,3.5 3.5,3.5 3,3 3))
+ POLYGON((4 4,4 4.5,4.5 4.5,4.5 4,4 4))
+ POLYGON((5 5,5 5.5,5.5 5.5,5.5 5,5 5))
+ POLYGON((6 6,6 6.5,6.5 6.5,6.5 6,6 6))
+ POLYGON((7 7,7 7.5,7.5 7.5,7.5 7,7 7))
+ POLYGON((8 8,8 8.5,8.5 8.5,8.5 8,8 8))
+ POLYGON((9 9,9 9.5,9.5 9.5,9.5 9,9 9))
+ spatial query box:
+ POLYGON((0 0,0 5,5 5,5 0,0 0))
+ spatial query result:
+ POLYGON((0 0,0 0.5,0.5 0.5,0.5 0,0 0))
+ POLYGON((1 1,1 1.5,1.5 1.5,1.5 1,1 1))
+ POLYGON((2 2,2 2.5,2.5 2.5,2.5 2,2 2))
+ POLYGON((3 3,3 3.5,3.5 3.5,3.5 3,3 3))
+ POLYGON((4 4,4 4.5,4.5 4.5,4.5 4,4 4))
+ POLYGON((5 5,5 5.5,5.5 5.5,5.5 5,5 5))
+ knn query point:
+ POINT(0 0)
+ knn query result:
+ POLYGON((4 4,4 4.5,4.5 4.5,4.5 4,4 4))
+ POLYGON((3 3,3 3.5,3.5 3.5,3.5 3,3 3))
+ POLYGON((2 2,2 2.5,2.5 2.5,2.5 2,2 2))
+ POLYGON((0 0,0 0.5,0.5 0.5,0.5 0,0 0))
+ POLYGON((1 1,1 1.5,1.5 1.5,1.5 1,1 1))
+
diff --git a/libs/geometry/doc/index/src/examples/rtree/value_shared_ptr.cpp b/libs/geometry/doc/index/src/examples/rtree/value_shared_ptr.cpp
new file mode 100644
index 0000000000..33701e09f3
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/value_shared_ptr.cpp
@@ -0,0 +1,93 @@
+// Boost.Geometry Index
+//
+// Quickbook Examples
+//
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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)
+
+//[rtree_value_shared_ptr
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+#include <boost/geometry/index/rtree.hpp>
+
+#include <cmath>
+#include <vector>
+#include <iostream>
+#include <boost/foreach.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace bg = boost::geometry;
+namespace bgi = boost::geometry::index;
+
+namespace boost { namespace geometry { namespace index {
+
+template <typename Box>
+struct indexable< boost::shared_ptr<Box> >
+{
+ typedef boost::shared_ptr<Box> V;
+
+ typedef Box const& result_type;
+ result_type operator()(V const& v) const { return *v; }
+};
+
+}}} // namespace boost::geometry::index
+
+int main()
+{
+ typedef bg::model::point<float, 2, bg::cs::cartesian> point;
+ typedef bg::model::box<point> box;
+ typedef boost::shared_ptr<box> shp;
+ typedef shp value;
+
+ // create the rtree using default constructor
+ bgi::rtree< value, bgi::linear<16, 4> > rtree;
+
+ std::cout << "filling index with boxes shared pointers:" << std::endl;
+
+ // fill the spatial index
+ for ( unsigned i = 0 ; i < 10 ; ++i )
+ {
+ // create a box
+ shp b(new box(point(i+0.0f, i+0.0f), point(i+0.5f, i+0.5f)));
+
+ // display new box
+ std::cout << bg::wkt<box>(*b) << std::endl;
+
+ // insert new value
+ rtree.insert(b);
+ }
+
+ // find values intersecting some area defined by a box
+ box query_box(point(0, 0), point(5, 5));
+ std::vector<value> result_s;
+ rtree.query(bgi::intersects(query_box), std::back_inserter(result_s));
+
+ // find 5 nearest values to a point
+ std::vector<value> result_n;
+ rtree.query(bgi::nearest(point(0, 0), 5), std::back_inserter(result_n));
+
+ // note: in Boost.Geometry the WKT representation of a box is polygon
+
+ // display results
+ std::cout << "spatial query box:" << std::endl;
+ std::cout << bg::wkt<box>(query_box) << std::endl;
+ std::cout << "spatial query result:" << std::endl;
+ BOOST_FOREACH(value const& v, result_s)
+ std::cout << bg::wkt<box>(*v) << std::endl;
+
+ std::cout << "knn query point:" << std::endl;
+ std::cout << bg::wkt<point>(point(0, 0)) << std::endl;
+ std::cout << "knn query result:" << std::endl;
+ BOOST_FOREACH(value const& v, result_n)
+ std::cout << bg::wkt<box>(*v) << std::endl;
+
+ return 0;
+}
+
+//]
diff --git a/libs/geometry/doc/index/src/examples/rtree/value_shared_ptr_results.qbk b/libs/geometry/doc/index/src/examples/rtree/value_shared_ptr_results.qbk
new file mode 100644
index 0000000000..6d0f0a6ac4
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/value_shared_ptr_results.qbk
@@ -0,0 +1,39 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2014 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+ filling index with boxes shared pointers:
+ POLYGON((0 0,0 0.5,0.5 0.5,0.5 0,0 0))
+ POLYGON((1 1,1 1.5,1.5 1.5,1.5 1,1 1))
+ POLYGON((2 2,2 2.5,2.5 2.5,2.5 2,2 2))
+ POLYGON((3 3,3 3.5,3.5 3.5,3.5 3,3 3))
+ POLYGON((4 4,4 4.5,4.5 4.5,4.5 4,4 4))
+ POLYGON((5 5,5 5.5,5.5 5.5,5.5 5,5 5))
+ POLYGON((6 6,6 6.5,6.5 6.5,6.5 6,6 6))
+ POLYGON((7 7,7 7.5,7.5 7.5,7.5 7,7 7))
+ POLYGON((8 8,8 8.5,8.5 8.5,8.5 8,8 8))
+ POLYGON((9 9,9 9.5,9.5 9.5,9.5 9,9 9))
+ spatial query box:
+ POLYGON((0 0,0 5,5 5,5 0,0 0))
+ spatial query result:
+ POLYGON((0 0,0 0.5,0.5 0.5,0.5 0,0 0))
+ POLYGON((1 1,1 1.5,1.5 1.5,1.5 1,1 1))
+ POLYGON((2 2,2 2.5,2.5 2.5,2.5 2,2 2))
+ POLYGON((3 3,3 3.5,3.5 3.5,3.5 3,3 3))
+ POLYGON((4 4,4 4.5,4.5 4.5,4.5 4,4 4))
+ POLYGON((5 5,5 5.5,5.5 5.5,5.5 5,5 5))
+ knn query point:
+ POINT(0 0)
+ knn query result:
+ POLYGON((4 4,4 4.5,4.5 4.5,4.5 4,4 4))
+ POLYGON((3 3,3 3.5,3.5 3.5,3.5 3,3 3))
+ POLYGON((2 2,2 2.5,2.5 2.5,2.5 2,2 2))
+ POLYGON((0 0,0 0.5,0.5 0.5,0.5 0,0 0))
+ POLYGON((1 1,1 1.5,1.5 1.5,1.5 1,1 1))
+
diff --git a/libs/geometry/doc/index/src/examples/rtree/variants_map.cpp b/libs/geometry/doc/index/src/examples/rtree/variants_map.cpp
new file mode 100644
index 0000000000..24ffe899e1
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/variants_map.cpp
@@ -0,0 +1,148 @@
+// Boost.Geometry Index
+//
+// Quickbook Examples
+//
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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)
+
+//[rtree_variants_map
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+#include <boost/geometry/geometries/ring.hpp>
+#include <boost/geometry/geometries/linestring.hpp>
+
+#include <boost/geometry/index/rtree.hpp>
+
+#include <cmath>
+#include <vector>
+#include <map>
+#include <iostream>
+#include <boost/foreach.hpp>
+#include <boost/variant.hpp>
+
+namespace bg = boost::geometry;
+namespace bgi = boost::geometry::index;
+
+typedef bg::model::point<float, 2, bg::cs::cartesian> point;
+typedef bg::model::box<point> box;
+typedef bg::model::polygon<point, false, false> polygon; // ccw, open polygon
+typedef bg::model::ring<point, false, false> ring; // ccw, open ring
+typedef bg::model::linestring<point> linestring;
+typedef boost::variant<polygon, ring, linestring> geometry;
+
+typedef std::map<unsigned, geometry> map;
+typedef std::pair<box, map::iterator> value;
+
+template <class Container>
+void fill(unsigned i, Container & container)
+{
+ for ( float a = 0 ; a < 6.28316f ; a += 1.04720f )
+ {
+ float x = i + int(10*::cos(a))*0.1f;
+ float y = i + int(10*::sin(a))*0.1f;
+ container.push_back(point(x, y));
+ }
+}
+
+struct print_visitor : public boost::static_visitor<>
+{
+ void operator()(polygon const& g) const { std::cout << bg::wkt<polygon>(g) << std::endl; }
+ void operator()(ring const& g) const { std::cout << bg::wkt<ring>(g) << std::endl; }
+ void operator()(linestring const& g) const { std::cout << bg::wkt<linestring>(g) << std::endl; }
+};
+
+struct envelope_visitor : public boost::static_visitor<box>
+{
+ box operator()(polygon const& g) const { return bg::return_envelope<box>(g); }
+ box operator()(ring const& g) const { return bg::return_envelope<box>(g); }
+ box operator()(linestring const& g) const { return bg::return_envelope<box>(g); }
+};
+
+
+int main()
+{
+ // geometries container
+ map geometries;
+
+ // create some geometries
+ for ( unsigned i = 0 ; i < 10 ; ++i )
+ {
+ unsigned c = rand() % 3;
+
+ if ( 0 == c )
+ {
+ // create polygon
+ polygon p;
+ fill(i, p.outer());
+ geometries.insert(std::make_pair(i, geometry(p)));
+ }
+ else if ( 1 == c )
+ {
+ // create ring
+ ring r;
+ fill(i, r);
+ geometries.insert(std::make_pair(i, geometry(r)));
+ }
+ else if ( 2 == c )
+ {
+ // create linestring
+ linestring l;
+ fill(i, l);
+ geometries.insert(std::make_pair(i, geometry(l)));
+ }
+ }
+
+ // display geometries
+ std::cout << "generated geometries:" << std::endl;
+ BOOST_FOREACH(map::value_type const& p, geometries)
+ boost::apply_visitor(print_visitor(), p.second);
+
+ // create the rtree using default constructor
+ bgi::rtree< value, bgi::quadratic<16, 4> > rtree;
+
+ // fill the spatial index
+ for ( map::iterator it = geometries.begin() ; it != geometries.end() ; ++it )
+ {
+ // calculate polygon bounding box
+ box b = boost::apply_visitor(envelope_visitor(), it->second);
+ // insert new value
+ rtree.insert(std::make_pair(b, it));
+ }
+
+ // find values intersecting some area defined by a box
+ box query_box(point(0, 0), point(5, 5));
+ std::vector<value> result_s;
+ rtree.query(bgi::intersects(query_box), std::back_inserter(result_s));
+
+ // find 5 nearest values to a point
+ std::vector<value> result_n;
+ rtree.query(bgi::nearest(point(0, 0), 5), std::back_inserter(result_n));
+
+ // note: in Boost.Geometry the WKT representation of a box is polygon
+
+ // note: the values store the bounding boxes of geometries
+ // the geometries aren't used for querying but are printed
+
+ // display results
+ std::cout << "spatial query box:" << std::endl;
+ std::cout << bg::wkt<box>(query_box) << std::endl;
+ std::cout << "spatial query result:" << std::endl;
+ BOOST_FOREACH(value const& v, result_s)
+ boost::apply_visitor(print_visitor(), v.second->second);
+
+ std::cout << "knn query point:" << std::endl;
+ std::cout << bg::wkt<point>(point(0, 0)) << std::endl;
+ std::cout << "knn query result:" << std::endl;
+ BOOST_FOREACH(value const& v, result_n)
+ boost::apply_visitor(print_visitor(), v.second->second);
+
+ return 0;
+}
+
+//]
diff --git a/libs/geometry/doc/index/src/examples/rtree/variants_map_results.qbk b/libs/geometry/doc/index/src/examples/rtree/variants_map_results.qbk
new file mode 100644
index 0000000000..2aa28b234f
--- /dev/null
+++ b/libs/geometry/doc/index/src/examples/rtree/variants_map_results.qbk
@@ -0,0 +1,39 @@
+[/============================================================================
+ Boost.Geometry Index
+
+ Copyright (c) 2011-2014 Adam Wulkiewicz.
+
+ 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)
+=============================================================================/]
+
+ generated geometries:
+ POLYGON((1 0,0.4 0.8,-0.5 0.8,-0.9 0,-0.4 -0.8,0.5 -0.8))
+ POLYGON((2 1,1.4 1.8,0.5 1.8,0.1 1,0.6 0.2,1.5 0.2))
+ POLYGON((3 2,2.4 2.8,1.5 2.8,1.1 2,1.6 1.2,2.5 1.2,3 2))
+ POLYGON((4 3,3.4 3.8,2.5 3.8,2.1 3,2.6 2.2,3.5 2.2))
+ LINESTRING(5 4,4.4 4.8,3.5 4.8,3.1 4,3.6 3.2,4.5 3.2)
+ POLYGON((6 5,5.4 5.8,4.5 5.8,4.1 5,4.6 4.2,5.5 4.2))
+ POLYGON((7 6,6.4 6.8,5.5 6.8,5.1 6,5.6 5.2,6.5 5.2))
+ POLYGON((8 7,7.4 7.8,6.5 7.8,6.1 7,6.6 6.2,7.5 6.2,8 7))
+ POLYGON((9 8,8.4 8.8,7.5 8.8,7.1 8,7.6 7.2,8.5 7.2,9 8))
+ POLYGON((10 9,9.4 9.8,8.5 9.8,8.1 9,8.6 8.2,9.5 8.2))
+ spatial query box:
+ POLYGON((0 0,0 5,5 5,5 0,0 0))
+ spatial query result:
+ POLYGON((1 0,0.4 0.8,-0.5 0.8,-0.9 0,-0.4 -0.8,0.5 -0.8))
+ POLYGON((2 1,1.4 1.8,0.5 1.8,0.1 1,0.6 0.2,1.5 0.2))
+ POLYGON((3 2,2.4 2.8,1.5 2.8,1.1 2,1.6 1.2,2.5 1.2,3 2))
+ POLYGON((4 3,3.4 3.8,2.5 3.8,2.1 3,2.6 2.2,3.5 2.2))
+ LINESTRING(5 4,4.4 4.8,3.5 4.8,3.1 4,3.6 3.2,4.5 3.2)
+ POLYGON((6 5,5.4 5.8,4.5 5.8,4.1 5,4.6 4.2,5.5 4.2))
+ knn query point:
+ POINT(0 0)
+ knn query result:
+ LINESTRING(5 4,4.4 4.8,3.5 4.8,3.1 4,3.6 3.2,4.5 3.2)
+ POLYGON((4 3,3.4 3.8,2.5 3.8,2.1 3,2.6 2.2,3.5 2.2))
+ POLYGON((3 2,2.4 2.8,1.5 2.8,1.1 2,1.6 1.2,2.5 1.2,3 2))
+ POLYGON((1 0,0.4 0.8,-0.5 0.8,-0.9 0,-0.4 -0.8,0.5 -0.8))
+ POLYGON((2 1,1.4 1.8,0.5 1.8,0.1 1,0.6 0.2,1.5 0.2))
+
diff --git a/libs/geometry/doc/introduction.qbk b/libs/geometry/doc/introduction.qbk
index dfac965d50..1762a169d8 100644
--- a/libs/geometry/doc/introduction.qbk
+++ b/libs/geometry/doc/introduction.qbk
@@ -45,18 +45,14 @@ officially part of the Boost C++ Libraries.
Latest stable version of the source code is included in the
[@http://www.boost.org/users/download/ Boost packaged releases].
-It can also be downloaded from the current
-[@http://svn.boost.org/svn/boost/branches/release Boost release branch]
-in the Boost Subversion repository.
+It can also be downloaded from the [@http://github.com/boostorg/boost Boost GitHub repository] (master branch).
The library development upstream is available from the
-[@http://svn.boost.org/svn/boost/trunk Boost trunk] in the Boost Subversion
-repository.
+[@https://github.com/boostorg/geometry/tree/develop Boost.Geometry (develop branch)].
Note that the library [*extensions] are not distributed in the official Boost
-releases, but only available
-in the [@http://svn.boost.org/svn/boost/trunk/boost/geometry/extensions/ Boost
-trunk]
+releases, but only available
+in the [@https://github.com/boostorg/geometry/tree/develop Boost.Geometry (develop branch)]
and that they are subject to change.
__boost_geometry__ was accepted by Boost at November 28, 2009
@@ -65,6 +61,8 @@ __boost_geometry__ was accepted by Boost at November 28, 2009
There is a __boost_geometry__ [@http://lists.boost.org/mailman/listinfo.cgi/geometry
mailing list]. The mailing list and its messages are also accessible from
[@http://boost-geometry.203548.n3.nabble.com/ Nabble] as Boost Geometry. Also on
-the Boost Developers list and on the Boost Users list __boost_geometry__ is discussed.
+the [@http://lists.boost.org/mailman/listinfo.cgi/boost
+Boost Developers list] and on the [@http://lists.boost.org/mailman/listinfo.cgi/boost-users
+Boost Users list] __boost_geometry__ is discussed.
[endsect]
diff --git a/libs/geometry/doc/make_qbk.py b/libs/geometry/doc/make_qbk.py
index 74aa52995c..7e172c7f21 100755
--- a/libs/geometry/doc/make_qbk.py
+++ b/libs/geometry/doc/make_qbk.py
@@ -12,7 +12,9 @@
import os, sys
-os.chdir(os.path.dirname(sys.argv[0]))
+script_dir = os.path.dirname(__file__)
+os.chdir(os.path.abspath(script_dir))
+print("Boost.Geometry is making .qbk files in %s" % os.getcwd())
if 'DOXYGEN' in os.environ:
doxygen_cmd = os.environ['DOXYGEN']
@@ -28,52 +30,64 @@ cmd = doxygen_xml2qbk_cmd
cmd = cmd + " --xml doxy/doxygen_output/xml/%s.xml"
cmd = cmd + " --start_include boost/geometry/"
cmd = cmd + " --convenience_header_path ../../../boost/geometry/"
-cmd = cmd + " --convenience_headers geometry.hpp,geometries/geometries.hpp,multi/multi.hpp"
+cmd = cmd + " --convenience_headers geometry.hpp,geometries/geometries.hpp"
cmd = cmd + " --skip_namespace boost::geometry::"
cmd = cmd + " --copyright src/copyright_block.qbk"
+cmd = cmd + " --output_member_variables false"
cmd = cmd + " > generated/%s.qbk"
+def run_command(command):
+ if os.system(command) != 0:
+ raise Exception("Error running %s" % command)
+
+def remove_all_files(dir):
+ if os.path.exists(dir):
+ for f in os.listdir(dir):
+ os.remove(dir+f)
+
def call_doxygen():
- os.chdir("doxy");
- os.system(doxygen_cmd)
+ os.chdir("doxy")
+ remove_all_files("doxygen_output/xml/")
+ run_command(doxygen_cmd)
os.chdir("..")
def group_to_quickbook(section):
- os.system(cmd % ("group__" + section.replace("_", "__"), section))
+ run_command(cmd % ("group__" + section.replace("_", "__"), section))
def model_to_quickbook(section):
- os.system(cmd % ("classboost_1_1geometry_1_1model_1_1" + section.replace("_", "__"), section))
+ run_command(cmd % ("classboost_1_1geometry_1_1model_1_1" + section.replace("_", "__"), section))
def model_to_quickbook2(classname, section):
- os.system(cmd % ("classboost_1_1geometry_1_1model_1_1" + classname, section))
+ run_command(cmd % ("classboost_1_1geometry_1_1model_1_1" + classname, section))
def struct_to_quickbook(section):
- os.system(cmd % ("structboost_1_1geometry_1_1" + section.replace("_", "__"), section))
+ run_command(cmd % ("structboost_1_1geometry_1_1" + section.replace("_", "__"), section))
def class_to_quickbook(section):
- os.system(cmd % ("classboost_1_1geometry_1_1" + section.replace("_", "__"), section))
+ run_command(cmd % ("classboost_1_1geometry_1_1" + section.replace("_", "__"), section))
def strategy_to_quickbook(section):
p = section.find("::")
ns = section[:p]
strategy = section[p+2:]
- os.system(cmd % ("classboost_1_1geometry_1_1strategy_1_1"
+ run_command(cmd % ("classboost_1_1geometry_1_1strategy_1_1"
+ ns.replace("_", "__") + "_1_1" + strategy.replace("_", "__"),
ns + "_" + strategy))
def cs_to_quickbook(section):
- os.system(cmd % ("structboost_1_1geometry_1_1cs_1_1" + section.replace("_", "__"), section))
+ run_command(cmd % ("structboost_1_1geometry_1_1cs_1_1" + section.replace("_", "__"), section))
call_doxygen()
algorithms = ["append", "assign", "make", "clear"
, "area", "buffer", "centroid", "convert", "correct", "covered_by"
- , "convex_hull", "difference", "disjoint", "distance"
- , "envelope", "equals", "expand", "for_each", "intersection", "intersects"
- , "length", "num_geometries", "num_interior_rings", "num_points"
- , "overlaps", "perimeter", "reverse", "simplify", "sym_difference"
- , "touches", "transform", "union", "unique", "within"]
+ , "convex_hull", "crosses", "difference", "disjoint", "distance"
+ , "envelope", "equals", "expand", "for_each", "is_simple", "is_valid"
+ , "intersection", "intersects", "length", "num_geometries"
+ , "num_interior_rings", "num_points", "overlaps"
+ , "perimeter", "reverse", "simplify", "sym_difference", "touches"
+ , "transform", "union", "unique", "within"]
access_functions = ["get", "set", "exterior_ring", "interior_rings"
, "num_points", "num_interior_rings", "num_geometries"]
@@ -96,10 +110,16 @@ models = ["point", "linestring", "box"
, "multi_linestring", "multi_point", "multi_polygon", "referring_segment"]
-strategies = ["distance::pythagoras", "distance::haversine"
+strategies = ["distance::pythagoras", "distance::pythagoras_box_box"
+ , "distance::pythagoras_point_box", "distance::haversine"
, "distance::cross_track", "distance::projected_point"
, "within::winding", "within::franklin", "within::crossings_multiply"
, "area::surveyor", "area::huiller"
+ , "buffer::point_circle", "buffer::point_square"
+ , "buffer::join_round", "buffer::join_miter"
+ , "buffer::end_round", "buffer::end_flat"
+ , "buffer::distance_symmetric", "buffer::distance_asymmetric"
+ , "buffer::side_straight"
, "centroid::bashein_detmer", "centroid::average"
, "convex_hull::graham_andrew"
, "simplify::douglas_peucker"
@@ -145,7 +165,15 @@ for i in views:
model_to_quickbook2("d2_1_1point__xy", "point_xy")
group_to_quickbook("arithmetic")
-group_to_quickbook("register")
group_to_quickbook("enum")
+group_to_quickbook("register")
+group_to_quickbook("svg")
+class_to_quickbook("svg_mapper")
+group_to_quickbook("wkt")
+
+os.chdir("index")
+execfile("make_qbk.py")
+os.chdir("..")
-os.system("../../../b2")
+# Use either bjam or b2 or ../../../b2 (the last should be done on Release branch)
+run_command("b2")
diff --git a/libs/geometry/doc/matrix.qbk b/libs/geometry/doc/matrix.qbk
index 2b6bdb5386..4e03a9b85d 100644
--- a/libs/geometry/doc/matrix.qbk
+++ b/libs/geometry/doc/matrix.qbk
@@ -10,6 +10,6 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
-[section:matrix Reference matrix]
+[section:matrix Reference Matrix]
[xinclude quickref.xml]
[endsect]
diff --git a/libs/geometry/doc/other/logo/DENMARK.TTF b/libs/geometry/doc/other/logo/DENMARK.TTF
new file mode 100644
index 0000000000..c2623381f7
--- /dev/null
+++ b/libs/geometry/doc/other/logo/DENMARK.TTF
Binary files differ
diff --git a/libs/geometry/doc/other/logo/favicon.ico b/libs/geometry/doc/other/logo/favicon.ico
new file mode 100644
index 0000000000..858b02e8a2
--- /dev/null
+++ b/libs/geometry/doc/other/logo/favicon.ico
Binary files differ
diff --git a/libs/geometry/doc/other/logo/logo.svg b/libs/geometry/doc/other/logo/logo.svg
new file mode 100644
index 0000000000..b9bf90e8a4
--- /dev/null
+++ b/libs/geometry/doc/other/logo/logo.svg
@@ -0,0 +1,12415 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ width="744.09448"
+ height="1052.3622"
+ id="svg2"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="logo.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1680"
+ inkscape:window-height="982"
+ id="namedview977"
+ showgrid="false"
+ inkscape:zoom="0.89702958"
+ inkscape:cx="270.50995"
+ inkscape:cy="727.82495"
+ inkscape:window-x="-8"
+ inkscape:window-y="-8"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg2" />
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient7423">
+ <stop
+ id="stop7425"
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7415">
+ <stop
+ id="stop7417"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient5186"
+ xlink:href="#linearGradient4459-1-2-8-9-4-5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5156">
+ <stop
+ id="stop5158"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5160"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351-4-7-3-5-5-3">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-5-4" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5147">
+ <stop
+ id="stop5149"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5151"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient3243-3-7-7-9-9-0"
+ xlink:href="#linearGradient4459-1-2-8-9-4-5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-4-5">
+ <stop
+ id="stop4461-2-1-5-2-4-5"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463-3-2-8-7-1-4"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4479-3-4-5-8-6-9"
+ xlink:href="#linearGradient4459-1-2-8-9-4-5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3373-9-2-3-7-7-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3375-5-5-7-6-8-7"
+ style="stop-color:#0000ff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3377-4-0-8-1-3-7"
+ style="stop-color:#3c3cff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient5130"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop5132"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5134"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop5136"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3369-5-5-4-6-4-5-0">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-0-4" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient5119"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop5121"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5123"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop5125"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4649-3-5"
+ xlink:href="#radialGradient4922-9-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4922-9-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4924-0-4"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4926-3-4"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4928-0-2"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4558-9-5"
+ xlink:href="#radialGradient4922-9-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <linearGradient
+ id="linearGradient5107">
+ <stop
+ id="stop5109"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5111"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-1-5-6-1-2-2">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-1-2" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5098">
+ <stop
+ id="stop5100"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5102"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient3247-6-1-7-2-7-0"
+ xlink:href="#linearGradient4453-7-8-6-7-8-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5091">
+ <stop
+ id="stop5093"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5095"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4495-7-2-8-2-4-9"
+ xlink:href="#linearGradient4453-7-8-6-7-8-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355-6-9-1-4-4-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357-8-0-6-2-0-2"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359-5-2-3-3-5-4"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5080">
+ <stop
+ id="stop5082"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5084"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387-3-6-4-2-1-8">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-5-1" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5071">
+ <stop
+ id="stop5073"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5075"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient3251-2-8-3-5-5-8"
+ xlink:href="#linearGradient4453-7-8-6-7-8-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-8-9">
+ <stop
+ id="stop4455-61-8-7-1-3-1"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-4-1-9-1-5-2"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4503-2-2-4-1-9-3"
+ xlink:href="#linearGradient4453-7-8-6-7-8-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3391-1-3-6-4-4-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3393-1-9-0-5-6-0"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3395-5-1-5-5-8-5"
+ style="stop-color:#ff3c3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4813"
+ xlink:href="#radialGradient3327-8-4-8-0-7"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4778"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4780"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4782"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop4784"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3323-7-2-4-5-8">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-1" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4767"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4769"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4771"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop4773"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4598-8"
+ xlink:href="#radialGradient3327-8-4-8-0-7"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3327-8-4-8-0-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3329-7-0-1-0-3"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3331-4-3-0-0-4"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3333-2-4-9-7-0"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4614-5-0-9-4"
+ xlink:href="#radialGradient3327-8-4-8-0-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4755">
+ <stop
+ id="stop4757"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4759"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351-4-7-3-5-5">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-5" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4746">
+ <stop
+ id="stop4748"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4750"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient3243-3-7-7-9-9"
+ xlink:href="#linearGradient4459-1-2-8-9-4"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-4">
+ <stop
+ id="stop4461-2-1-5-2-4"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463-3-2-8-7-1"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4479-3-4-5-8-6"
+ xlink:href="#linearGradient4459-1-2-8-9-4"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3373-9-2-3-7-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3375-5-5-7-6-8"
+ style="stop-color:#0000ff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3377-4-0-8-1-3"
+ style="stop-color:#3c3cff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4729"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4731"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4733"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4735"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3369-5-5-4-6-4-5">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-0" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4718"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4720"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4722"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4724"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4649-3"
+ xlink:href="#radialGradient4922-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4922-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4924-0"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4926-3"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4928-0"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4558-9"
+ xlink:href="#radialGradient4922-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <linearGradient
+ id="linearGradient4706">
+ <stop
+ id="stop4708"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4710"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-1-5-6-1-2">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-1" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4697">
+ <stop
+ id="stop4699"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4701"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient3247-6-1-7-2-7"
+ xlink:href="#linearGradient4453-7-8-6-7-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4690">
+ <stop
+ id="stop4692"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4694"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4495-7-2-8-2-4"
+ xlink:href="#linearGradient4453-7-8-6-7-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355-6-9-1-4-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357-8-0-6-2-0"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359-5-2-3-3-5"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4679">
+ <stop
+ id="stop4681"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4683"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387-3-6-4-2-1">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-5" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4670">
+ <stop
+ id="stop4672"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4674"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient3251-2-8-3-5-5"
+ xlink:href="#linearGradient4453-7-8-6-7-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-8">
+ <stop
+ id="stop4455-61-8-7-1-3"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-4-1-9-1-5"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4503-2-2-4-1-9"
+ xlink:href="#linearGradient4453-7-8-6-7-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3391-1-3-6-4-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3393-1-9-0-5-6"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3395-5-1-5-5-8"
+ style="stop-color:#ff3c3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4649"
+ xlink:href="#radialGradient4922"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4598"
+ xlink:href="#radialGradient3327-8-4-8-0"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4587"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4589"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4591"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop4593"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3323-7-2-4-5">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4576"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4578"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4580"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop4582"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient5607-2"
+ xlink:href="#radialGradient3327-8-4-8-0"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3327-8-4-8-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3329-7-0-1-0"
+ style="stop-color:#e0e0e0;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3331-4-3-0-0"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3333-2-4-9-7"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4614-5-0-9"
+ xlink:href="#radialGradient3327-8-4-8-0"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4558"
+ xlink:href="#radialGradient4922"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient3540"
+ xlink:href="#radialGradient3327-8-4-8-2"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3505"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3507"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3509"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3511"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3323-7-2-4-1">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-3" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3494"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3496"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3498"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3500"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient5607-1"
+ xlink:href="#radialGradient3327-8-4-8-2"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3327-8-4-8-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3329-7-0-1-3"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3331-4-3-0-3"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3333-2-4-9-4"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4614-5-0-1"
+ xlink:href="#radialGradient3327-8-4-8-2"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient3482">
+ <stop
+ id="stop3484"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3486"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351-4-7-3-5">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3473">
+ <stop
+ id="stop3475"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3477"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient3243-3-7-7-9"
+ xlink:href="#linearGradient4459-1-2-8-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9">
+ <stop
+ id="stop4461-2-1-5-2"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463-3-2-8-7"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4479-3-4-5-8"
+ xlink:href="#linearGradient4459-1-2-8-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3373-9-2-3-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3375-5-5-7-6"
+ style="stop-color:#0000ff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3377-4-0-8-1"
+ style="stop-color:#3c3cff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3458">
+ <stop
+ id="stop3460"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3462"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-1-5-6-1">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3449">
+ <stop
+ id="stop3451"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3453"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient3247-6-1-7-2"
+ xlink:href="#linearGradient4453-7-8-6-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient3442">
+ <stop
+ id="stop3444"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3446"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4495-7-2-8-2"
+ xlink:href="#linearGradient4453-7-8-6-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355-6-9-1-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357-8-0-6-2"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359-5-2-3-3"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3431">
+ <stop
+ id="stop3433"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3435"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387-3-6-4-2">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3422">
+ <stop
+ id="stop3424"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3426"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient3251-2-8-3-5"
+ xlink:href="#linearGradient4453-7-8-6-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7">
+ <stop
+ id="stop4455-61-8-7-1"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-4-1-9-1"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4503-2-2-4-1"
+ xlink:href="#linearGradient4453-7-8-6-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3391-1-3-6-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3393-1-9-0-5"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3395-5-1-5-5"
+ style="stop-color:#ff3c3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3407"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3409"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop3411"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-5-5-4-6-4">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3398"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3400"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop3402"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3069-8-9-8-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3071-8-4-3-4"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop3073-2-6-2-0"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3631"
+ xlink:href="#linearGradient3519"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3629"
+ xlink:href="#linearGradient3501"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3627"
+ xlink:href="#linearGradient3483"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3625"
+ xlink:href="#radialGradient3455"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad" />
+ <clipPath
+ id="clipPath3451">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3453" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3455"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3457"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3459"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3461"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3479">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3481" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3483"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3485"
+ style="stop-color:#82a4db;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3487"
+ style="stop-color:#9cc2ea;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3497">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3499" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3501"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3503"
+ style="stop-color:#a6cff0;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3505"
+ style="stop-color:#bfe6f9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3515">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3517" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3519"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3521"
+ style="stop-color:#a6cff0;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3523"
+ style="stop-color:#bfe6f9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient5862"
+ xlink:href="#radialGradient3327"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient5860"
+ xlink:href="#radialGradient3327"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient5858"
+ xlink:href="#linearGradient4459"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient5856"
+ xlink:href="#linearGradient4459"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient5854"
+ xlink:href="#linearGradient4453"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient5852"
+ xlink:href="#linearGradient4453"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient5850"
+ xlink:href="#linearGradient4453"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient5848"
+ xlink:href="#linearGradient4453"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient5846"
+ xlink:href="#linearGradient3069"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient5844"
+ xlink:href="#linearGradient3069"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient5607"
+ xlink:href="#radialGradient3327-8-4-8"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient5570"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop5572"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5574"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop5576"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3323-7-2-4">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient5559"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop5561"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5563"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop5565"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4612-1-2"
+ xlink:href="#radialGradient3327-8-4-8"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3327-8-4-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3329-7-0-1"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3331-4-3-0"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3333-2-4-9"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4614-5-0"
+ xlink:href="#radialGradient3327-8-4-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5547">
+ <stop
+ id="stop5549"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5551"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351-4-7-3">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5538">
+ <stop
+ id="stop5540"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5542"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient3243-3-7-7"
+ xlink:href="#linearGradient4459-1-2-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459-1-2-8">
+ <stop
+ id="stop4461-2-1-5"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463-3-2-8"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4479-3-4-5"
+ xlink:href="#linearGradient4459-1-2-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3373-9-2-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3375-5-5-7"
+ style="stop-color:#0000ff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3377-4-0-8"
+ style="stop-color:#3c3cff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5523">
+ <stop
+ id="stop5525"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5527"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-1-5-6">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5514">
+ <stop
+ id="stop5516"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5518"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient3247-6-1-7"
+ xlink:href="#linearGradient4453-7-8-6"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5507">
+ <stop
+ id="stop5509"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5511"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4495-7-2-8"
+ xlink:href="#linearGradient4453-7-8-6"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355-6-9-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357-8-0-6"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359-5-2-3"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5496">
+ <stop
+ id="stop5498"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5500"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387-3-6-4">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5487">
+ <stop
+ id="stop5489"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5491"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient3251-2-8-3"
+ xlink:href="#linearGradient4453-7-8-6"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-7-8-6">
+ <stop
+ id="stop4455-61-8-7"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-4-1-9"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4503-2-2-4"
+ xlink:href="#linearGradient4453-7-8-6"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3391-1-3-6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3393-1-9-0"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3395-5-1-5"
+ style="stop-color:#ff3c3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient5472"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop5474"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop5476"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-5-5-4-6">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient5463"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop5465"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop5467"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient4650-4-3-8"
+ xlink:href="#linearGradient3069-8-9-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3069-8-9-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3071-8-4-3"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop3073-2-6-2"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient4642-4-5-3"
+ xlink:href="#linearGradient3069-8-9-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient5446"
+ xlink:href="#linearGradient4459-1"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient5444"
+ xlink:href="#linearGradient4459-1"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient5442"
+ xlink:href="#linearGradient4453-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient5440"
+ xlink:href="#linearGradient4453-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient5438"
+ xlink:href="#linearGradient4453-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient5436"
+ xlink:href="#linearGradient4453-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient5434"
+ xlink:href="#linearGradient3069-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient5432"
+ xlink:href="#linearGradient3069-8"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4922"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4924"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4926"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4928"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3323-7-2">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4911"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4913"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4915"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop4917"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4612-1"
+ xlink:href="#radialGradient3327-8-4"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3327-8-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3329-7-0"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3331-4-3"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3333-2-4"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4614-5"
+ xlink:href="#radialGradient3327-8-4"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4899">
+ <stop
+ id="stop4901"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4903"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351-4-7">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4890">
+ <stop
+ id="stop4892"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4894"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient3243-3-7"
+ xlink:href="#linearGradient4459-1-2"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459-1-2">
+ <stop
+ id="stop4461-2-1"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463-3-2"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4479-3-4"
+ xlink:href="#linearGradient4459-1-2"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3373-9-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3375-5-5"
+ style="stop-color:#0000ff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3377-4-0"
+ style="stop-color:#3c3cff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4875">
+ <stop
+ id="stop4877"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4879"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-1-5">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4866">
+ <stop
+ id="stop4868"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4870"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient3247-6-1"
+ xlink:href="#linearGradient4453-7-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4859">
+ <stop
+ id="stop4861"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4863"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4495-7-2"
+ xlink:href="#linearGradient4453-7-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355-6-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357-8-0"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359-5-2"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4848">
+ <stop
+ id="stop4850"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4852"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387-3-6">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4839">
+ <stop
+ id="stop4841"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4843"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient3251-2-8"
+ xlink:href="#linearGradient4453-7-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-7-8">
+ <stop
+ id="stop4455-61-8"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-4-1"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4503-2-2"
+ xlink:href="#linearGradient4453-7-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3391-1-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3393-1-9"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3395-5-1"
+ style="stop-color:#ff3c3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient4824"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop4826"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop4828"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-5-5-4">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient4815"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop4817"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop4819"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient4650-4-3"
+ xlink:href="#linearGradient3069-8-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3069-8-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3071-8-4"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop3073-2-6"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient4642-4-5"
+ xlink:href="#linearGradient3069-8-9"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4614"
+ xlink:href="#radialGradient3327-8"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4612"
+ xlink:href="#radialGradient3327-8"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient3607"
+ xlink:href="#radialGradient3327-8"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3574"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3576"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3578"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3580"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3323-7">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3565"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3567"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3569"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient3239-7"
+ xlink:href="#radialGradient3327-8"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3327-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3329-7"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3331-4"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3333-2"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4405-3"
+ xlink:href="#radialGradient3327-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient3551">
+ <stop
+ id="stop3553"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3555"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351-4">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3542">
+ <stop
+ id="stop3544"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3546"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient3243-3"
+ xlink:href="#linearGradient4459-1"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459-1">
+ <stop
+ id="stop4461-2"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463-3"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4479-3"
+ xlink:href="#linearGradient4459-1"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3373-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3375-5"
+ style="stop-color:#0000ff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3377-4"
+ style="stop-color:#3c3cff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3527">
+ <stop
+ id="stop3529"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3531"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-1">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3518">
+ <stop
+ id="stop3520"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3522"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient3247-6"
+ xlink:href="#linearGradient4453-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient3511">
+ <stop
+ id="stop3513"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3515"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4495-7"
+ xlink:href="#linearGradient4453-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355-6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357-8"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359-5"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3500">
+ <stop
+ id="stop3502"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3504"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387-3">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3491">
+ <stop
+ id="stop3493"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3495"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient3251-2"
+ xlink:href="#linearGradient4453-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-7">
+ <stop
+ id="stop4455-61"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-4"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4503-2"
+ xlink:href="#linearGradient4453-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3391-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3393-1"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3395-5"
+ style="stop-color:#ff3c3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3476"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3478"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop3480"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-5-5">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3467"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3469"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop3471"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient4650-4"
+ xlink:href="#linearGradient3069-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3069-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3071-8"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop3073-2"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient4642-4"
+ xlink:href="#linearGradient3069-8"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient3251"
+ xlink:href="#linearGradient4453"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient3247"
+ xlink:href="#linearGradient4453"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient3243"
+ xlink:href="#linearGradient4459"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient3239"
+ xlink:href="#radialGradient3327"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459">
+ <stop
+ id="stop4461"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4453">
+ <stop
+ id="stop4455"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4447">
+ <stop
+ id="stop4449"
+ style="stop-color:#8fa7c8;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4451"
+ style="stop-color:#9cb3d0;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4439">
+ <stop
+ id="stop4441"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4443"
+ style="stop-color:#97adcc;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient4385"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4387"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4389"
+ style="stop-color:#9db5d3;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4352">
+ <stop
+ id="stop4354"
+ style="stop-color:#8fa7c8;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4356"
+ style="stop-color:#9cb3d0;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4344">
+ <stop
+ id="stop4346"
+ style="stop-color:#000000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4348"
+ style="stop-color:#000000;stop-opacity:0"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3069"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3071"
+ style="stop-color:#ffffff;stop-opacity:0.86330932"
+ offset="0" />
+ <stop
+ id="stop3073"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3065">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3067" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3051"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3053"
+ style="stop-color:#a6cff0;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3055"
+ style="stop-color:#bfe6f9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3047">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3049" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3033"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3035"
+ style="stop-color:#82a4db;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3037"
+ style="stop-color:#9cc2ea;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3029">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3031" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3005"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3007"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3009"
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="0.94943798" />
+ <stop
+ id="stop3011"
+ style="stop-color:#ffffff;stop-opacity:0"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3001">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3003" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3391"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3393"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3395"
+ style="stop-color:#ff3c3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3373"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3375"
+ style="stop-color:#0000ff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3377"
+ style="stop-color:#3c3cff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3327"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3329"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3331"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3333"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3323">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325" />
+ </clipPath>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4405"
+ xlink:href="#radialGradient3327"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="134.3503"
+ y1="360.40768"
+ x2="284.86301"
+ y2="360.40768"
+ id="linearGradient4445"
+ xlink:href="#linearGradient4439"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4479"
+ xlink:href="#linearGradient4459"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4495"
+ xlink:href="#linearGradient4453"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4503"
+ xlink:href="#linearGradient4453"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4495-0"
+ xlink:href="#linearGradient4453-4"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-4">
+ <stop
+ id="stop4455-6"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-1"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4531"
+ xlink:href="#linearGradient4453-4"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4533">
+ <stop
+ id="stop4535"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4537"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-5">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8" />
+ </clipPath>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4541"
+ xlink:href="#linearGradient4453-4"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4543">
+ <stop
+ id="stop4545"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4547"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient4642"
+ xlink:href="#linearGradient3069"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73"
+ id="linearGradient4650"
+ xlink:href="#linearGradient3069"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="131.06729"
+ y1="552.33667"
+ x2="156.19484"
+ y2="552.33667"
+ id="linearGradient4467"
+ xlink:href="#linearGradient3391-1-3-6-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.16894953,-331.46347)" />
+ <linearGradient
+ x1="153.03812"
+ y1="563.1958"
+ x2="170.58951"
+ y2="563.1958"
+ id="linearGradient4474"
+ xlink:href="#linearGradient3355-6-9-1-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.16894953,-331.46347)" />
+ <linearGradient
+ x1="130.94102"
+ y1="573.67615"
+ x2="155.94231"
+ y2="573.67615"
+ id="linearGradient4484"
+ xlink:href="#linearGradient3373-9-2-3-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.16894953,-331.46347)" />
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4492"
+ xlink:href="#linearGradient4453-7-8-6-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4494"
+ xlink:href="#linearGradient4453-7-8-6-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4496"
+ xlink:href="#linearGradient4453-7-8-6-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4498"
+ xlink:href="#linearGradient4453-7-8-6-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4500"
+ xlink:href="#linearGradient4453-7-8-6-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4502"
+ xlink:href="#linearGradient4453-7-8-6-7"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4504"
+ xlink:href="#radialGradient4922"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4506"
+ xlink:href="#radialGradient4922"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4508"
+ xlink:href="#radialGradient4922"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4510"
+ xlink:href="#linearGradient4459-1-2-8-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4512"
+ xlink:href="#linearGradient4459-1-2-8-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4514"
+ xlink:href="#linearGradient4459-1-2-8-9"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4516"
+ xlink:href="#radialGradient3327-8-4-8-0"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4518"
+ xlink:href="#radialGradient3327-8-4-8-0"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4520"
+ xlink:href="#radialGradient3327-8-4-8-0"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="131.06729"
+ y1="552.33667"
+ x2="156.19484"
+ y2="552.33667"
+ id="linearGradient4467-4"
+ xlink:href="#linearGradient3391-1-3-6-4-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,3.422862,-163.72257)" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3391-1-3-6-4-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3393-1-9-0-5-8"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3395-5-1-5-5-2"
+ style="stop-color:#ff3c3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4496-4"
+ xlink:href="#linearGradient4453-7-8-6-7-5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-5">
+ <stop
+ id="stop4455-61-8-7-1-5"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-4-1-9-1-1"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4494-7"
+ xlink:href="#linearGradient4453-7-8-6-7-5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4541-1">
+ <stop
+ id="stop4543"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4545-1"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387-3-6-4-2-5">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-2" />
+ </clipPath>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4492-7"
+ xlink:href="#linearGradient4453-7-8-6-7-5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4550">
+ <stop
+ id="stop4552"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4554"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="153.03812"
+ y1="563.1958"
+ x2="170.58951"
+ y2="563.1958"
+ id="linearGradient4474-6"
+ xlink:href="#linearGradient3355-6-9-1-4-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,3.422862,-163.72257)" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355-6-9-1-4-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357-8-0-6-2-4"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359-5-2-3-3-2"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4502-3"
+ xlink:href="#linearGradient4453-7-8-6-7-5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4561">
+ <stop
+ id="stop4563"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4565"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4500-2"
+ xlink:href="#linearGradient4453-7-8-6-7-5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4568">
+ <stop
+ id="stop4570"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4572"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-1-5-6-1-21">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-6" />
+ </clipPath>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4498-8"
+ xlink:href="#linearGradient4453-7-8-6-7-5"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4577">
+ <stop
+ id="stop4579"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4581"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4508-5"
+ xlink:href="#radialGradient4922-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4922-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4924-6"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4926-1"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4928-8"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4506-9"
+ xlink:href="#radialGradient4922-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4589"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4591-2"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4593-7"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4595"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3369-5-5-4-6-4-9">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-5" />
+ </clipPath>
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4504-4"
+ xlink:href="#radialGradient4922-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4600"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4602"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4604"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4606"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <linearGradient
+ x1="130.94102"
+ y1="573.67615"
+ x2="155.94231"
+ y2="573.67615"
+ id="linearGradient4484-3"
+ xlink:href="#linearGradient3373-9-2-3-7-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,3.422862,-163.72257)" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3373-9-2-3-7-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3375-5-5-7-6-2"
+ style="stop-color:#0000ff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3377-4-0-8-1-33"
+ style="stop-color:#3c3cff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4514-4"
+ xlink:href="#linearGradient4459-1-2-8-9-1"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-1">
+ <stop
+ id="stop4461-2-1-5-2-1"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463-3-2-8-7-3"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4512-8"
+ xlink:href="#linearGradient4459-1-2-8-9-1"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4617">
+ <stop
+ id="stop4619"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4621"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351-4-7-3-5-7">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-4" />
+ </clipPath>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4510-2"
+ xlink:href="#linearGradient4459-1-2-8-9-1"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4626">
+ <stop
+ id="stop4628"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4630"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient3327-8-4-8-0-79"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3329-7-0-1-0-31"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3331-4-3-0-0-9"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop3333-2-4-9-7-8"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="997.46997"
+ cy="2896.25"
+ r="583.73999"
+ fx="997.46997"
+ fy="2896.25"
+ id="radialGradient4518-6"
+ xlink:href="#radialGradient3327-8-4-8-0-79"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4638"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4640"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4642"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop4644"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3323-7-2-4-5-5">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-0" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4649-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4651"
+ style="stop-color:#aeaeb3;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4653"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0.94943798" />
+ <stop
+ id="stop4655"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <linearGradient
+ x1="131.06729"
+ y1="552.33667"
+ x2="156.19484"
+ y2="552.33667"
+ id="linearGradient4467-4-6"
+ xlink:href="#linearGradient3391-1-3-6-4-8-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,-0.61774817,9.0135093)" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3391-1-3-6-4-8-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3393-1-9-0-5-8-7"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3395-5-1-5-5-2-8"
+ style="stop-color:#ff3c3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4496-4-8"
+ xlink:href="#linearGradient4453-7-8-6-7-5-2"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-5-2">
+ <stop
+ id="stop4455-61-8-7-1-5-9"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-4-1-9-1-1-1"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4494-7-3"
+ xlink:href="#linearGradient4453-7-8-6-7-5-2"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5710">
+ <stop
+ id="stop5712"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5714"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387-3-6-4-2-5-5">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-2-9" />
+ </clipPath>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4492-7-8"
+ xlink:href="#linearGradient4453-7-8-6-7-5-2"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5719">
+ <stop
+ id="stop5721"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5723"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="153.03812"
+ y1="563.1958"
+ x2="170.58951"
+ y2="563.1958"
+ id="linearGradient4474-6-4"
+ xlink:href="#linearGradient3355-6-9-1-4-1-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,-0.61774817,9.0135093)" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355-6-9-1-4-1-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357-8-0-6-2-4-7"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359-5-2-3-3-2-6"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4502-3-3"
+ xlink:href="#linearGradient4453-7-8-6-7-5-2"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5730">
+ <stop
+ id="stop5732"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5734"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4500-2-6"
+ xlink:href="#linearGradient4453-7-8-6-7-5-2"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5737">
+ <stop
+ id="stop5739"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5741"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-1-5-6-1-21-1">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-6-5" />
+ </clipPath>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4498-8-4"
+ xlink:href="#linearGradient4453-7-8-6-7-5-2"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5746">
+ <stop
+ id="stop5748"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5750"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4508-5-2"
+ xlink:href="#radialGradient4922-7-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4922-7-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4924-6-9"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4926-1-7"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4928-8-3"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4506-9-7"
+ xlink:href="#radialGradient4922-7-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient5758"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop5760"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5762"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop5764"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3369-5-5-4-6-4-9-2">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-5-6" />
+ </clipPath>
+ <radialGradient
+ cx="1201.2096"
+ cy="2939.2754"
+ r="159.58984"
+ fx="1201.2096"
+ fy="2939.2754"
+ id="radialGradient4504-4-0"
+ xlink:href="#radialGradient4922-7-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)" />
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient5769"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop5771"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5773"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop5775"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <linearGradient
+ x1="130.94102"
+ y1="573.67615"
+ x2="155.94231"
+ y2="573.67615"
+ id="linearGradient4484-3-1"
+ xlink:href="#linearGradient3373-9-2-3-7-1-6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,-0.61774817,9.0135093)" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3373-9-2-3-7-1-6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3375-5-5-7-6-2-5"
+ style="stop-color:#0000ff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3377-4-0-8-1-33-7"
+ style="stop-color:#3c3cff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4514-4-5"
+ xlink:href="#linearGradient4459-1-2-8-9-1-4"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-1-4">
+ <stop
+ id="stop4461-2-1-5-2-1-1"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463-3-2-8-7-3-2"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4512-8-0"
+ xlink:href="#linearGradient4459-1-2-8-9-1-4"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5786">
+ <stop
+ id="stop5788"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5790"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351-4-7-3-5-7-0">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-4-1" />
+ </clipPath>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4510-2-4"
+ xlink:href="#linearGradient4459-1-2-8-9-1-4"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5795">
+ <stop
+ id="stop5797"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5799"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3323-7-2-4-5-5-6">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-0-0" />
+ </clipPath>
+ <linearGradient
+ x1="131.06729"
+ y1="552.33667"
+ x2="156.19484"
+ y2="552.33667"
+ id="linearGradient4467-6"
+ xlink:href="#linearGradient3391-1-3-6-4-45"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.91028183,-511.77186)" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3391-1-3-6-4-45"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3393-1-9-0-5-3"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3395-5-1-5-5-23"
+ style="stop-color:#ff3c3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4496-3"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-86">
+ <stop
+ id="stop4455-61-8-7-1-8"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-4-1-9-1-2"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4494-4"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4636">
+ <stop
+ id="stop4638"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4640-2"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387-3-6-4-2-52">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-28" />
+ </clipPath>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4492-73"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4645">
+ <stop
+ id="stop4647"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4649"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="153.03812"
+ y1="563.1958"
+ x2="170.58951"
+ y2="563.1958"
+ id="linearGradient4474-9"
+ xlink:href="#linearGradient3355-6-9-1-4-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.16028183,-512.77186)" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355-6-9-1-4-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357-8-0-6-2-5"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359-5-2-3-3-3"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4502-1"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4656">
+ <stop
+ id="stop4658"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4660"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4500-27"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4663">
+ <stop
+ id="stop4665"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4667"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-1-5-6-1-25">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-0" />
+ </clipPath>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4498-5"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4672">
+ <stop
+ id="stop4674-1"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4676"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4922-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4924-8"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4926-16"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4928-2"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4684"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4686"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4688"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4690"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3369-5-5-4-6-4-4">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-8" />
+ </clipPath>
+ <radialGradient
+ cx="0"
+ cy="0"
+ r="1"
+ fx="0"
+ fy="0"
+ id="radialGradient4695"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop4697"
+ style="stop-color:#d2d2d2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4699-6"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ <stop
+ id="stop4701-4"
+ style="stop-color:#e6e6e6;stop-opacity:1"
+ offset="1" />
+ </radialGradient>
+ <linearGradient
+ x1="130.94102"
+ y1="573.67615"
+ x2="155.94231"
+ y2="573.67615"
+ id="linearGradient4484-7"
+ xlink:href="#linearGradient3373-9-2-3-7-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,1.6602818,-513.27186)" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3373-9-2-3-7-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3375-5-5-7-6-6"
+ style="stop-color:#0000ff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3377-4-0-8-1-1"
+ style="stop-color:#3c3cff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4514-2"
+ xlink:href="#linearGradient4459-1-2-8-9-44"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-44">
+ <stop
+ id="stop4461-2-1-5-2-45"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463-3-2-8-7-9"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4512-7"
+ xlink:href="#linearGradient4459-1-2-8-9-44"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4712">
+ <stop
+ id="stop4714"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4716"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351-4-7-3-5-6">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-2" />
+ </clipPath>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4510-7"
+ xlink:href="#linearGradient4459-1-2-8-9-44"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4721">
+ <stop
+ id="stop4723"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4725"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3323-7-2-4-5-9">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-7" />
+ </clipPath>
+ <radialGradient
+ cx="191.89212"
+ cy="184.12964"
+ r="58.993938"
+ fx="191.89212"
+ fy="184.12964"
+ id="radialGradient7437-3"
+ xlink:href="#linearGradient3355-6-9-1-4-1-0-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.91032952,0,16.510994)" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355-6-9-1-4-1-0-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357-8-0-6-2-4-7-7"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359-5-2-3-3-2-6-5"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <filter
+ color-interpolation-filters="sRGB"
+ id="filter4881">
+ <feGaussianBlur
+ id="feGaussianBlur4883"
+ stdDeviation="2.491195" />
+ </filter>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3391-1-3-6-4-45"
+ id="linearGradient3962"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.91028183,-511.77186)"
+ x1="131.06729"
+ y1="552.33667"
+ x2="156.19484"
+ y2="552.33667" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3355-6-9-1-4-9"
+ id="linearGradient3969"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.16028183,-512.77186)"
+ x1="153.03812"
+ y1="563.1958"
+ x2="170.58951"
+ y2="563.1958" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3373-9-2-3-7-4"
+ id="linearGradient3976"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,1.6602818,-513.27186)"
+ x1="130.94102"
+ y1="573.67615"
+ x2="155.94231"
+ y2="573.67615" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3391-1-3-6-4-8-3"
+ id="linearGradient3994"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,-0.61774817,9.0135093)"
+ x1="131.06729"
+ y1="552.33667"
+ x2="156.19484"
+ y2="552.33667" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3355-6-9-1-4-1-0"
+ id="linearGradient4001"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,-0.61774817,9.0135093)"
+ x1="153.03812"
+ y1="563.1958"
+ x2="170.58951"
+ y2="563.1958" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3373-9-2-3-7-1-6"
+ id="linearGradient4011"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,-0.61774817,9.0135093)"
+ x1="130.94102"
+ y1="573.67615"
+ x2="155.94231"
+ y2="573.67615" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3391-1-3-6-4-8"
+ id="linearGradient4027"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,3.422862,-163.72257)"
+ x1="131.06729"
+ y1="552.33667"
+ x2="156.19484"
+ y2="552.33667" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3355-6-9-1-4-1"
+ id="linearGradient4034"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,3.422862,-163.72257)"
+ x1="153.03812"
+ y1="563.1958"
+ x2="170.58951"
+ y2="563.1958" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3373-9-2-3-7-1"
+ id="linearGradient4044"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,3.422862,-163.72257)"
+ x1="130.94102"
+ y1="573.67615"
+ x2="155.94231"
+ y2="573.67615" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3391-1-3-6-4"
+ id="linearGradient4060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.16894953,-331.46347)"
+ x1="131.06729"
+ y1="552.33667"
+ x2="156.19484"
+ y2="552.33667" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3355-6-9-1-4"
+ id="linearGradient4067"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.16894953,-331.46347)"
+ x1="153.03812"
+ y1="563.1958"
+ x2="170.58951"
+ y2="563.1958" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3373-9-2-3-7"
+ id="linearGradient4077"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.16894953,-331.46347)"
+ x1="130.94102"
+ y1="573.67615"
+ x2="155.94231"
+ y2="573.67615" />
+ <filter
+ inkscape:collect="always"
+ id="filter4877">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="3.4677372"
+ id="feGaussianBlur4879" />
+ </filter>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62-7-83"
+ id="radialGradient7231"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient7197">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop7199" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop7201" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop7203" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-5-3-2-5-6">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-19-4-7-7" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient7186">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop7188" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop7190" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop7192" />
+ </radialGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62-7-83"
+ id="radialGradient5551-3"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-8-0-74-62-7-83">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-1-0-2-6-9-0" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-0-0-7-5-9-2" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-9-7-7-3-7-2" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4520-8-8-6-9"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62-7-83"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient7174">
+ <stop
+ id="stop7176"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop7178"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-5-1-4-9-4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-1-2-3-5" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient7165">
+ <stop
+ id="stop7167"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop7169"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4512-4-2-3-7"
+ xlink:href="#linearGradient4459-1-2-8-9-43-8-5-2"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-43-8-5-2">
+ <stop
+ id="stop4461-2-1-5-2-12-6-0-6"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-7-33-1-8-57"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4514-5-5-2-9"
+ xlink:href="#linearGradient4459-1-2-8-9-43-8-5-2"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient7154">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop7156" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop7158" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-1-4-2-4-3">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-2-8-9-8" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient7145">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop7147" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop7149" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4500-1-8-5-7"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-0"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient7138">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop7140" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop7142" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4502-6-2-5-6"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-0"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient7131">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop7133" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop7135" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-2-4-6-9-07">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-55-8-8-0" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient7122">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop7124" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop7126" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4494-2-0-6-6"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-0"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-4-3-4-0">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-1-8-80-1-7" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-1-8-88-9-0" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4496-9-4-9-2"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-0"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62-7-8"
+ id="radialGradient6634"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient6600">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop6602" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop6604" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop6606" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-5-3-2-5-1">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-19-4-7-2" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient6589">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop6591" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop6593" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop6595" />
+ </radialGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62-7-8"
+ id="radialGradient5551-8"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-8-0-74-62-7-8">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-1-0-2-6-9-8" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-0-0-7-5-9-7" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-9-7-7-3-7-5" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4520-8-8-6-2"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62-7-8"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient6577">
+ <stop
+ id="stop6579"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop6581"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-5-1-4-9-6">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-1-2-3-3" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient6568">
+ <stop
+ id="stop6570"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop6572"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4512-4-2-3-9"
+ xlink:href="#linearGradient4459-1-2-8-9-43-8-5-4"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-43-8-5-4">
+ <stop
+ id="stop4461-2-1-5-2-12-6-0-0"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-7-33-1-8-5"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4514-5-5-2-4"
+ xlink:href="#linearGradient4459-1-2-8-9-43-8-5-4"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient6557">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop6559" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop6561" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-1-4-2-4-2">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-2-8-9-9" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient6548">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop6550" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop6552" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4500-1-8-5-9"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-2"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient6541">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop6543" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop6545" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4502-6-2-5-4"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-2"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient6534">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop6536" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop6538" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-2-4-6-9-0">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-55-8-8-3" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient6525">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop6527" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop6529" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4494-2-0-6-5"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-2"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-4-3-4-2">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-1-8-80-1-9" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-1-8-88-9-1" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4496-9-4-9-6"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-2"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62-7"
+ id="radialGradient5551"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient5516">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop5518-6" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop5520" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop5522" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-5-3-2-5">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-19-4-7" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient5505">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop5507" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop5509-9" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop5511-3" />
+ </radialGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62-7"
+ id="radialGradient5215-6"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-8-0-74-62-7">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-1-0-2-6-9" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-0-0-7-5-9" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-9-7-7-3-7" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4520-8-8-6"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62-7"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient5493">
+ <stop
+ id="stop5495"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop5497"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-5-1-4-9">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-1-2-3" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5484">
+ <stop
+ id="stop5486"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop5488"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4512-4-2-3"
+ xlink:href="#linearGradient4459-1-2-8-9-43-8-5"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-43-8-5">
+ <stop
+ id="stop4461-2-1-5-2-12-6-0"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-7-33-1-8"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4514-5-5-2"
+ xlink:href="#linearGradient4459-1-2-8-9-43-8-5"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient5473">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5475" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5477" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-1-4-2-4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-2-8-9" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5464">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5466" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5468" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4500-1-8-5"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient5457">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5459" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5461" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4502-6-2-5"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient5450">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5452" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5454" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-2-4-6-9">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-55-8-8" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5441">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5443" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5445" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4494-2-0-6"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-4-3-4">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-1-8-80-1" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-1-8-88-9" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4496-9-4-9"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4"
+ inkscape:collect="always" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-4-6-4-6-5-2">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-1-5-2"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62"
+ id="radialGradient5215"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient5180">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop5182" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop5184" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop5186" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-5-3-2">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-19-4" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient5169">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop5171" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop5173" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop5175" />
+ </radialGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62"
+ id="radialGradient4009-9"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-8-0-74-62">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-1-0-2-6" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-0-0-7-5" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-9-7-7-3" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4520-8-8"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient5157">
+ <stop
+ id="stop5159"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop5161"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-5-1-4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-1-2" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5148">
+ <stop
+ id="stop5150"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop5152"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4512-4-2"
+ xlink:href="#linearGradient4459-1-2-8-9-43-8"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-43-8">
+ <stop
+ id="stop4461-2-1-5-2-12-6"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-7-33-1"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4514-5-5"
+ xlink:href="#linearGradient4459-1-2-8-9-43-8"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-9-2-3-7-2-7">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-5-5-7-6-7-8" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-4-0-8-1-9-1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5133">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5135" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5137" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-1-4-2">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-2-8" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5124">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5126" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5128" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4500-1-8"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient5117">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5119" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5121-2" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4502-6-2"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-6-9-1-4-11-8">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-8-0-6-2-5-9" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-5-2-3-3-27-7" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5106">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5108" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5110" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-2-4-6">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-55-8" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5097">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5099" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5101" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4494-2-0"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-4-3">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-1-8-80" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-1-8-88" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4496-9-4"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-1-3-6-4-7-3">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-1-9-0-5-4-3" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-5-1-5-5-0-7" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-4-6-4-6-5">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-1-5"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-6"
+ id="radialGradient4399"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4364">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop4366" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop4368" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop4370" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-5-3-1">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-19-2" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4353">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop4355" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop4357" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop4359" />
+ </radialGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-6"
+ id="radialGradient4009-4"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-8-0-74-6">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-1-0-2-5" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-0-0-7-7" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-9-7-7-5" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4520-8-1"
+ xlink:href="#radialGradient3327-8-4-8-0-74-6"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4341">
+ <stop
+ id="stop4343"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4345"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-5-1-2">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-1-6" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4332">
+ <stop
+ id="stop4334"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4336"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4512-4-7"
+ xlink:href="#linearGradient4459-1-2-8-9-43-9"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-43-9">
+ <stop
+ id="stop4461-2-1-5-2-12-7"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-7-33-3"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4514-5-0"
+ xlink:href="#linearGradient4459-1-2-8-9-43-9"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-9-2-3-7-2-5">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-5-5-7-6-7-4" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-4-0-8-1-9-2" />
+ </linearGradient>
+ <linearGradient
+ y2="573.67615"
+ x2="155.94231"
+ y1="573.67615"
+ x1="130.94102"
+ gradientTransform="matrix(0.78746723,0,0,0.78746723,65.191278,56.413021)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4258-1"
+ xlink:href="#linearGradient3373-9-2-3-7-2-5"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4317">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4319" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4321" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-1-4-6">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-2-3" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4308">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4310" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4312" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4500-1-7"
+ xlink:href="#linearGradient4453-7-8-6-7-4-7"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4301">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4303" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4305" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4502-6-0"
+ xlink:href="#linearGradient4453-7-8-6-7-4-7"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-6-9-1-4-11-9">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-8-0-6-2-5-8" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-5-2-3-3-27-4" />
+ </linearGradient>
+ <linearGradient
+ y2="563.1958"
+ x2="170.58951"
+ y1="563.1958"
+ x1="153.03812"
+ gradientTransform="matrix(0.78746723,0,0,0.78746723,64.566278,56.502311)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4256-5"
+ xlink:href="#linearGradient3355-6-9-1-4-11-9"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4290">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4292" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4294" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-2-4-9">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-55-1" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4281">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4283" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4285" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4494-2-2"
+ xlink:href="#linearGradient4453-7-8-6-7-4-7"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-4-7">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-1-8-8" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-1-8-8" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4496-9-3"
+ xlink:href="#linearGradient4453-7-8-6-7-4-7"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-1-3-6-4-7-4">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-1-9-0-5-4-9" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-5-1-5-5-0-6" />
+ </linearGradient>
+ <linearGradient
+ y2="552.33667"
+ x2="156.19484"
+ y1="552.33667"
+ x1="131.06729"
+ gradientTransform="matrix(0.78746723,0,0,0.78746723,64.566278,56.502311)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4254-8"
+ xlink:href="#linearGradient3391-1-3-6-4-7-4"
+ inkscape:collect="always" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-4-6-4-6-6">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-1-1"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74"
+ id="radialGradient4009"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3974">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3976" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3978" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3980" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-5-3">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-19" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3963">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3965" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3967" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3969" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4518-9"
+ xlink:href="#radialGradient3327-8-4-8-0-74"
+ inkscape:collect="always" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-8-0-74">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-1-0-2" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-0-0-7" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-9-7-7" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4520-8"
+ xlink:href="#radialGradient3327-8-4-8-0-74"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient3951">
+ <stop
+ id="stop3953"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop3955"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-5-1">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-1" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3942">
+ <stop
+ id="stop3944"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop3946"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4512-4"
+ xlink:href="#linearGradient4459-1-2-8-9-43"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-43">
+ <stop
+ id="stop4461-2-1-5-2-12"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-7-33"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4514-5"
+ xlink:href="#linearGradient4459-1-2-8-9-43"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-9-2-3-7-2">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-5-5-7-6-7" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-4-0-8-1-9" />
+ </linearGradient>
+ <linearGradient
+ y2="573.67615"
+ x2="155.94231"
+ y1="573.67615"
+ x1="130.94102"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,5.3721032,-339.76318)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4484-9"
+ xlink:href="#linearGradient3373-9-2-3-7-2"
+ inkscape:collect="always" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3925">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop3927" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop3929" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop3931" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-4-6-4-6">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-1"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3914">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop3916" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop3918" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop3920" />
+ </radialGradient>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4922-2-3">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop4924-1" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4926-6" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4928-85" />
+ </radialGradient>
+ <linearGradient
+ id="linearGradient3902">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3904" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3906" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-1-4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-2" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3893">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3895" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3897" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4500-1"
+ xlink:href="#linearGradient4453-7-8-6-7-4"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient3886">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3888" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3890" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4502-6"
+ xlink:href="#linearGradient4453-7-8-6-7-4"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-6-9-1-4-11">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-8-0-6-2-5-1" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-5-2-3-3-27" />
+ </linearGradient>
+ <linearGradient
+ y2="563.1958"
+ x2="170.58951"
+ y1="563.1958"
+ x1="153.03812"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,5.3721032,-339.76318)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4474-7"
+ xlink:href="#linearGradient3355-6-9-1-4-11"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient3875">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3877" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3879" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-2-4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-55" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3866">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3868" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3870" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4494-2"
+ xlink:href="#linearGradient4453-7-8-6-7-4"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-4">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-1-8-9" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-1-8" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4496-9"
+ xlink:href="#linearGradient4453-7-8-6-7-4"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-1-3-6-4-7">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-1-9-0-5-4" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-5-1-5-5-0" />
+ </linearGradient>
+ <linearGradient
+ y2="552.33667"
+ x2="156.19484"
+ y1="552.33667"
+ x1="131.06729"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,5.3721032,-339.76318)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4467-1"
+ xlink:href="#linearGradient3391-1-3-6-4-7"
+ inkscape:collect="always" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-5-5-6-9">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-0-0-8" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5795-1">
+ <stop
+ id="stop5797-9"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop5799-8"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-5-7-0-2">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-4-1-3" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5786-3">
+ <stop
+ id="stop5788-4"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop5790-0"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4512-8-0-2"
+ xlink:href="#linearGradient4459-1-2-8-9-1-4-1"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-1-4-1">
+ <stop
+ id="stop4461-2-1-5-2-1-1-9"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-7-3-2-8"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4514-4-5-2"
+ xlink:href="#linearGradient4459-1-2-8-9-1-4-1"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-9-2-3-7-1-6-6">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-5-5-7-6-2-5-3" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-4-0-8-1-33-7-9" />
+ </linearGradient>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient5769-5">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop5771-1" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop5773-4" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop5775-3" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-4-6-4-9-2-8">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-5-6-0"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient5758-8">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop5760-0" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop5762-0" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop5764-8" />
+ </radialGradient>
+ <radialGradient
+ r="159.58984"
+ fy="2939.2754"
+ fx="1201.2096"
+ cy="2939.2754"
+ cx="1201.2096"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4506-9-7-9"
+ xlink:href="#radialGradient4922-7-0-8"
+ inkscape:collect="always" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4922-7-0-8">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop4924-6-9-4" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4926-1-7-7" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4928-8-3-3" />
+ </radialGradient>
+ <radialGradient
+ r="159.58984"
+ fy="2939.2754"
+ fx="1201.2096"
+ cy="2939.2754"
+ cx="1201.2096"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4508-5-2-6"
+ xlink:href="#radialGradient4922-7-0-8"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient5746-3">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5748-4" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5750-3" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-1-21-1-3">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-6-5-4" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5737-2">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5739-8" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5741-2" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4500-2-6-6"
+ xlink:href="#linearGradient4453-7-8-6-7-5-2-2"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient5730-4">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5732-3" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5734-3" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4502-3-3-2"
+ xlink:href="#linearGradient4453-7-8-6-7-5-2-2"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-6-9-1-4-1-0-6">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-8-0-6-2-4-7-0" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-5-2-3-3-2-6-0" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient5719-5">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5721-1" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5723-7" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-2-5-5-0">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-2-9-1" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5710-5">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5712-5" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5714-1" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4494-7-3-2"
+ xlink:href="#linearGradient4453-7-8-6-7-5-2-2"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-5-2-2">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-1-5-9-6" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-1-1-1-8" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4496-4-8-6"
+ xlink:href="#linearGradient4453-7-8-6-7-5-2-2"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-1-3-6-4-8-3-1">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-1-9-0-5-8-7-4" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-5-1-5-5-2-8-4" />
+ </linearGradient>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4649-8-3">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop4651-5" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop4653-6" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop4655-6" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-5-5-62">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-0-5" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4638-3">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop4640-9" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop4642-4" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop4644-5" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4518-6-6"
+ xlink:href="#radialGradient3327-8-4-8-0-79-6"
+ inkscape:collect="always" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-8-0-79-6">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-1-0-31-8" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-0-0-9-2" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-9-7-8-6" />
+ </radialGradient>
+ <linearGradient
+ id="linearGradient4626-5">
+ <stop
+ id="stop4628-3"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4630-2"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-5-7-4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-4-2" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4617-6">
+ <stop
+ id="stop4619-4"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4621-5"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4512-8-9"
+ xlink:href="#linearGradient4459-1-2-8-9-1-5"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-1-5">
+ <stop
+ id="stop4461-2-1-5-2-1-5"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-7-3-1"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4514-4-1"
+ xlink:href="#linearGradient4459-1-2-8-9-1-5"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-9-2-3-7-1-4">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-5-5-7-6-2-58" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-4-0-8-1-33-6" />
+ </linearGradient>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4600-3">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop4602-9" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4604-7" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4606-6" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-4-6-4-9-4">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-5-8"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4589-5">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop4591-2-8" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4593-7-3" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4595-9" />
+ </radialGradient>
+ <radialGradient
+ r="159.58984"
+ fy="2939.2754"
+ fx="1201.2096"
+ cy="2939.2754"
+ cx="1201.2096"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4506-9-6"
+ xlink:href="#radialGradient4922-7-00"
+ inkscape:collect="always" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4922-7-00">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop4924-6-8" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4926-1-76" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4928-8-35" />
+ </radialGradient>
+ <radialGradient
+ r="159.58984"
+ fy="2939.2754"
+ fx="1201.2096"
+ cy="2939.2754"
+ cx="1201.2096"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4508-5-3"
+ xlink:href="#radialGradient4922-7-00"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4577-6">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4579-0" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4581-9" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-1-21-4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-6-8" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4568-0">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4570-1" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4572-8" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4500-2-8"
+ xlink:href="#linearGradient4453-7-8-6-7-5-3"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4561-1">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4563-8" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4565-2" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4502-3-9"
+ xlink:href="#linearGradient4453-7-8-6-7-5-3"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-6-9-1-4-1-7">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-8-0-6-2-4-9" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-5-2-3-3-2-3" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4550-7">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4552-8" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4554-3" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-2-5-58">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-2-3" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4541-1-0">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4543-9" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4545-1-5" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4494-7-37"
+ xlink:href="#linearGradient4453-7-8-6-7-5-3"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-5-3">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-1-5-1" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-1-1-3" />
+ </linearGradient>
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4496-4-0"
+ xlink:href="#linearGradient4453-7-8-6-7-5-3"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-1-3-6-4-8-2">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-1-9-0-5-8-2" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-5-1-5-5-2-7" />
+ </linearGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4520-2"
+ xlink:href="#radialGradient3327-8-4-8-0-2"
+ inkscape:collect="always" />
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4518-3"
+ xlink:href="#radialGradient3327-8-4-8-0-2"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4514-0"
+ xlink:href="#linearGradient4459-1-2-8-9-8"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4512-88"
+ xlink:href="#linearGradient4459-1-2-8-9-8"
+ inkscape:collect="always" />
+ <radialGradient
+ r="159.58984"
+ fy="2939.2754"
+ fx="1201.2096"
+ cy="2939.2754"
+ cx="1201.2096"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4508-50"
+ xlink:href="#radialGradient4922-8"
+ inkscape:collect="always" />
+ <radialGradient
+ r="159.58984"
+ fy="2939.2754"
+ fx="1201.2096"
+ cy="2939.2754"
+ cx="1201.2096"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4506-4"
+ xlink:href="#radialGradient4922-8"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4502-5"
+ xlink:href="#linearGradient4453-7-8-6-7-3"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4500-29"
+ xlink:href="#linearGradient4453-7-8-6-7-3"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4496-8"
+ xlink:href="#linearGradient4453-7-8-6-7-3"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4494-6"
+ xlink:href="#linearGradient4453-7-8-6-7-3"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="2937.73"
+ x2="1372.6188"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4650-1"
+ xlink:href="#linearGradient3069-5"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1372.6188"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4642-8"
+ xlink:href="#linearGradient3069-5"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4543-8">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4545-7" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4547-4" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4541-2"
+ xlink:href="#linearGradient4453-4-1"
+ inkscape:collect="always" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-9">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-3"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4533-0">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4535-5" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4537-5" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4531-2"
+ xlink:href="#linearGradient4453-4-1"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-4-1">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-6-4" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-1-8" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4495-0-3"
+ xlink:href="#linearGradient4453-4-1"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ id="linearGradient4503-29"
+ xlink:href="#linearGradient4453-2"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4495-04"
+ xlink:href="#linearGradient4453-2"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ id="linearGradient4479-9"
+ xlink:href="#linearGradient4459-0"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="360.40768"
+ x2="284.86301"
+ y1="360.40768"
+ x1="134.3503"
+ id="linearGradient4445-1"
+ xlink:href="#linearGradient4439-5"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ id="radialGradient4405-30"
+ xlink:href="#radialGradient3327-7"
+ inkscape:collect="always" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-3">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-6" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-7">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-74" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-3" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-1" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-8">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-0" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-4">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-5" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-6" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-0">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-87" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-1">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-2" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-9" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-32">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-4" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-17">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-5" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-3" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3001-3">
+ <path
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3003-4" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3005-7">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3007-1" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="0.94943798"
+ id="stop3009-9" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop3011-0" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3029-1">
+ <path
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3031-7" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3033-7">
+ <stop
+ style="stop-opacity:1;stop-color:#82a4db"
+ offset="0"
+ id="stop3035-9" />
+ <stop
+ style="stop-opacity:1;stop-color:#9cc2ea"
+ offset="1"
+ id="stop3037-6" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3047-8">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3049-2" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3051-3">
+ <stop
+ style="stop-opacity:1;stop-color:#a6cff0"
+ offset="0"
+ id="stop3053-9" />
+ <stop
+ style="stop-opacity:1;stop-color:#bfe6f9"
+ offset="1"
+ id="stop3055-5" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3065-4">
+ <path
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3067-1" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3069-5">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop3071-9" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3073-25" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4344-0">
+ <stop
+ id="stop4346-4"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop4348-8"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4352-3">
+ <stop
+ style="stop-color:#8fa7c8;stop-opacity:1;"
+ offset="0"
+ id="stop4354-4" />
+ <stop
+ style="stop-color:#9cb3d0;stop-opacity:1;"
+ offset="1"
+ id="stop4356-1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4385-9"
+ spreadMethod="pad"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ gradientUnits="userSpaceOnUse"
+ y2="0"
+ x2="1"
+ y1="0"
+ x1="0">
+ <stop
+ id="stop4387-0"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4389-5"
+ offset="1"
+ style="stop-color:#9db5d3;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4439-5"
+ inkscape:collect="always">
+ <stop
+ id="stop4441-0"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1" />
+ <stop
+ id="stop4443-7"
+ offset="1"
+ style="stop-color:#97adcc;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4447-1">
+ <stop
+ id="stop4449-0"
+ offset="0"
+ style="stop-color:#8fa7c8;stop-opacity:1;" />
+ <stop
+ id="stop4451-8"
+ offset="1"
+ style="stop-color:#9cb3d0;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4453-2">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-5" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-9" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4459-0">
+ <stop
+ id="stop4461-7"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-2"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-7"
+ id="radialGradient3239-8"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-0"
+ id="linearGradient3243-2"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-2"
+ id="linearGradient3247-5"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-2"
+ id="linearGradient3251-3"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1372.6188"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4642-4-0"
+ xlink:href="#linearGradient3069-8-2"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3069-8-2">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop3071-8-3" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3073-2-63" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1372.6188"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4650-4-8"
+ xlink:href="#linearGradient3069-8-2"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3467-1">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop3469-7" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3471-4" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-2">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-2"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3476-1">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop3478-5" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3480-5" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-1-1">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-1-0" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-5-3" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ id="linearGradient4503-2-8"
+ xlink:href="#linearGradient4453-7-6"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-6">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-5" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-2" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-6"
+ id="linearGradient3251-2-3"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ id="linearGradient3491-7">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3493-4" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3495-6" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-3">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-4" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3500-8">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3502-9" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3504-1" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-6-5">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-8-3" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-5-0" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4495-7-4"
+ xlink:href="#linearGradient4453-7-6"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient3511-1">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3513-0" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3515-6" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-6"
+ id="linearGradient3247-6-5"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ id="linearGradient3518-1">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3520-5" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3522-9" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-2">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-41" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3527-5">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3529-8" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3531-3" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-9-5">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-5-7" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-4-8" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ id="linearGradient4479-3-1"
+ xlink:href="#linearGradient4459-1-3"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-3">
+ <stop
+ id="stop4461-2-7"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-3"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-3"
+ id="linearGradient3243-3-2"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ id="linearGradient3542-2">
+ <stop
+ id="stop3544-7"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop3546-9"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-4" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3551-3">
+ <stop
+ id="stop3553-2"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop3555-4"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ id="radialGradient4405-3-5"
+ xlink:href="#radialGradient3327-8-5"
+ inkscape:collect="always" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-5">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-9" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-2" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-6" />
+ </radialGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-5"
+ id="radialGradient3239-7-9"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3563-5">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3565-1" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3567-3" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3569-9" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-7">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-6" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3574-6">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3576-2" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3578-7" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3580-2" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3607-1"
+ xlink:href="#radialGradient3327-8-5"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-5"
+ id="radialGradient4612-9"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-5"
+ id="radialGradient4614-1"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1372.6188"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4642-4-5-7"
+ xlink:href="#linearGradient3069-8-9-7"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3069-8-9-7">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop3071-8-4-6" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3073-2-6-7" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1372.6188"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4650-4-3-6"
+ xlink:href="#linearGradient3069-8-9-7"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient4815-5">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop4817-6" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop4819-6" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-4-62">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-03"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient4824-1">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop4826-4" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop4828-5" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-1-3-3">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-1-9-4" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-5-1-50" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ id="linearGradient4503-2-2-8"
+ xlink:href="#linearGradient4453-7-8-1"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-1">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-0" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-1"
+ id="linearGradient3251-2-8-7"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ id="linearGradient4839-7">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4841-8" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4843-3" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-0">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-74" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4848-8">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4850-9" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4852-3" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-6-9-7">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-8-0-7" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-5-2-0" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4495-7-2-5"
+ xlink:href="#linearGradient4453-7-8-1"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4859-3">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4861-8" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4863-8" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-1"
+ id="linearGradient3247-6-1-0"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ id="linearGradient4866-1">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4868-2" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4870-9" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-3">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-0" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4875-0">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4877-4" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4879-8" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-9-2-1">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-5-5-73" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-4-0-0" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ id="linearGradient4479-3-4-1"
+ xlink:href="#linearGradient4459-1-2-0"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-0">
+ <stop
+ id="stop4461-2-1-6"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-1"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-0"
+ id="linearGradient3243-3-7-6"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ id="linearGradient4890-4">
+ <stop
+ id="stop4892-0"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4894-2"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-5">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-5" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4899-6">
+ <stop
+ id="stop4901-7"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4903-1"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-83"
+ id="radialGradient4614-5-3"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-83">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-0" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-2" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-2" />
+ </radialGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-83"
+ id="radialGradient4612-1-9"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4911-7">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop4913-4" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop4915-5" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop4917-7" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-5">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-7" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4922-8">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop4924-4" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4926-9" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4928-26" />
+ </radialGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3069-8-2"
+ id="linearGradient5432-3"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3069-8-2"
+ id="linearGradient5434-7"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-6"
+ id="linearGradient5436-6"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-6"
+ id="linearGradient5438-5"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-6"
+ id="linearGradient5440-0"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-6"
+ id="linearGradient5442-7"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-3"
+ id="linearGradient5444-0"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-3"
+ id="linearGradient5446-6"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1372.6188"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4642-4-5-3-0"
+ xlink:href="#linearGradient3069-8-9-8-9"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3069-8-9-8-9">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop3071-8-4-3-2" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3073-2-6-2-07" />
+ </linearGradient>
+ <linearGradient
+ y2="2937.73"
+ x2="1372.6188"
+ y1="2937.73"
+ x1="1026.6899"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient4650-4-3-8-4"
+ xlink:href="#linearGradient3069-8-9-8-9"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient5463-1">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop5465-4" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop5467-8" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-4-6-6">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-83"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient5472-8">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop5474-2" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop5476-1" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-1-3-6-9">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-1-9-0-56" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-5-1-5-4" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ id="linearGradient4503-2-2-4-4"
+ xlink:href="#linearGradient4453-7-8-6-0"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-0">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-4" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-5" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-0"
+ id="linearGradient3251-2-8-3-50"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ id="linearGradient5487-0">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5489-6" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5491-7" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-3">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-1" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5496-0">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5498-0" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5500-5" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-6-9-1-7">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-8-0-6-0" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-5-2-3-34" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4495-7-2-8-0"
+ xlink:href="#linearGradient4453-7-8-6-0"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient5507-2">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5509-6" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5511-4" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-0"
+ id="linearGradient3247-6-1-7-22"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ id="linearGradient5514-3">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5516-5" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5518-1" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-2">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-5" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5523-1">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5525-1" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5527-3" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-9-2-3-4">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-5-5-7-3" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-4-0-8-2" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ id="linearGradient4479-3-4-5-3"
+ xlink:href="#linearGradient4459-1-2-8-7"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-7">
+ <stop
+ id="stop4461-2-1-5-29"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-75"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-7"
+ id="linearGradient3243-3-7-7-3"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ id="linearGradient5538-5">
+ <stop
+ id="stop5540-2"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop5542-0"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-8">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-2" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5547-3">
+ <stop
+ id="stop5549-0"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop5551-3"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-9"
+ id="radialGradient4614-5-0-7"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-8-9">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-1-30" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-0-7" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-9-78" />
+ </radialGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-9"
+ id="radialGradient4612-1-2-2"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient5559-4">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop5561-4" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop5563-4" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop5565-4" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-57">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-4" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient5570-5">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop5572-8" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop5574-1" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop5576-2" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient5607-7"
+ xlink:href="#radialGradient3327-8-4-8-9"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3069-5"
+ id="linearGradient5844-8"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3069-5"
+ id="linearGradient5846-8"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1372.6188"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-2"
+ id="linearGradient5848-2"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-2"
+ id="linearGradient5850-4"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-2"
+ id="linearGradient5852-3"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-2"
+ id="linearGradient5854-6"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-0"
+ id="linearGradient5856-9"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-0"
+ id="linearGradient5858-5"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-7"
+ id="radialGradient5860-0"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-7"
+ id="radialGradient5862-4"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <linearGradient
+ id="linearGradient3519-9"
+ spreadMethod="pad"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ gradientUnits="userSpaceOnUse"
+ y2="0"
+ x2="1"
+ y1="0"
+ x1="0">
+ <stop
+ id="stop3521-3"
+ offset="0"
+ style="stop-opacity:1;stop-color:#a6cff0" />
+ <stop
+ id="stop3523-4"
+ offset="1"
+ style="stop-opacity:1;stop-color:#bfe6f9" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3515-9"
+ clipPathUnits="userSpaceOnUse">
+ <path
+ id="path3517-2"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3501-3"
+ spreadMethod="pad"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ gradientUnits="userSpaceOnUse"
+ y2="0"
+ x2="1"
+ y1="0"
+ x1="0">
+ <stop
+ id="stop3503-6"
+ offset="0"
+ style="stop-opacity:1;stop-color:#a6cff0" />
+ <stop
+ id="stop3505-4"
+ offset="1"
+ style="stop-opacity:1;stop-color:#bfe6f9" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3497-5"
+ clipPathUnits="userSpaceOnUse">
+ <path
+ id="path3499-0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3483-2"
+ spreadMethod="pad"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ gradientUnits="userSpaceOnUse"
+ y2="0"
+ x2="1"
+ y1="0"
+ x1="0">
+ <stop
+ id="stop3485-9"
+ offset="0"
+ style="stop-opacity:1;stop-color:#82a4db" />
+ <stop
+ id="stop3487-1"
+ offset="1"
+ style="stop-opacity:1;stop-color:#9cc2ea" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3479-4"
+ clipPathUnits="userSpaceOnUse">
+ <path
+ id="path3481-6"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z" />
+ </clipPath>
+ <radialGradient
+ id="radialGradient3455-8"
+ spreadMethod="pad"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ gradientUnits="userSpaceOnUse"
+ r="1"
+ cy="0"
+ cx="0"
+ fy="0"
+ fx="0">
+ <stop
+ id="stop3457-6"
+ offset="0"
+ style="stop-opacity:1;stop-color:#aeaeb3" />
+ <stop
+ id="stop3459-2"
+ offset="0.949438"
+ style="stop-opacity:1;stop-color:#ffffff" />
+ <stop
+ id="stop3461-1"
+ offset="1"
+ style="stop-opacity:1;stop-color:#ffffff" />
+ </radialGradient>
+ <clipPath
+ id="clipPath3451-6"
+ clipPathUnits="userSpaceOnUse">
+ <path
+ id="path3453-1"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74" />
+ </clipPath>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3455-8"
+ id="radialGradient3625-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ cx="0"
+ cy="0"
+ fx="0"
+ fy="0"
+ r="1" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3483-2"
+ id="linearGradient3627-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3501-3"
+ id="linearGradient3629-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3519-9"
+ id="linearGradient3631-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3069-8-9-8-7-5">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop3071-8-4-3-4-3" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3073-2-6-2-0-2" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3398-3">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop3400-3" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3402-5" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-4-6-4-61">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-6"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3407-4">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.86330932;"
+ offset="0"
+ id="stop3409-4" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop3411-1" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-1-3-6-4-5">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-1-9-0-5-82" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-5-1-5-5-5" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ id="linearGradient4503-2-2-4-1-6"
+ xlink:href="#linearGradient4453-7-8-6-7-3"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-3">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-1-57" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-1-6" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-3"
+ id="linearGradient3251-2-8-3-5-9"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ id="linearGradient3422-9">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3424-7" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3426-6" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-2-7">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-9" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3431-3">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3433-9" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3435-6" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-6-9-1-4-0">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-8-0-6-2-8" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-5-2-3-3-39" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4495-7-2-8-2-5"
+ xlink:href="#linearGradient4453-7-8-6-7-3"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient3442-9">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3444-1" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3446-2" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-3"
+ id="linearGradient3247-6-1-7-2-4"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ id="linearGradient3449-2">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3451-5" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3453-5" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-1-9">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-8" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3458-1">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop3460-9" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop3462-6" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-9-2-3-7-22">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-5-5-7-6-9" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-4-0-8-1-4" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ id="linearGradient4479-3-4-5-8-7"
+ xlink:href="#linearGradient4459-1-2-8-9-8"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-8">
+ <stop
+ id="stop4461-2-1-5-2-6"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-7-7"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-8"
+ id="linearGradient3243-3-7-7-9-5"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ id="linearGradient3473-2">
+ <stop
+ id="stop3475-5"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop3477-2"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-5-19">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-53" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient3482-9">
+ <stop
+ id="stop3484-1"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop3486-8"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-2-5"
+ id="radialGradient4614-5-0-1-3"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-8-2-5">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-1-3-2" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-0-3-0" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-9-4-0" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient5607-1-9"
+ xlink:href="#radialGradient3327-8-4-8-2-5"
+ inkscape:collect="always" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3494-9">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3496-7" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3498-6" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3500-2" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-1-1">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-3-1" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3505-6">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3507-1" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3509-8" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3511-2" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient3540-4"
+ xlink:href="#radialGradient3327-8-4-8-2-5"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient4922-8"
+ id="radialGradient4558-2"
+ cx="1201.2096"
+ cy="2939.2754"
+ fx="1201.2096"
+ fy="2939.2754"
+ r="159.58984"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-2"
+ id="radialGradient4614-5-0-9-9"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-8-0-2">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-1-0-6" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-0-0-5" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-9-7-3" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient5607-2-6"
+ xlink:href="#radialGradient3327-8-4-8-0-2"
+ inkscape:collect="always" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4576-4">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop4578-2" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop4580-5" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop4582-8" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-5-86">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-12" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4587-7">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop4589-8" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop4591-1" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop4593-5" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4598-0"
+ xlink:href="#radialGradient3327-8-4-8-0-2"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient4922-8"
+ id="radialGradient4649-89"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ cx="1201.2096"
+ cy="2939.2754"
+ fx="1201.2096"
+ fy="2939.2754"
+ r="159.58984" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-1-3-6-4-4-2">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-1-9-0-5-6-8" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-5-1-5-5-8-2" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ id="linearGradient4503-2-2-4-1-9-2"
+ xlink:href="#linearGradient4453-7-8-6-7-8-98"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-8-98">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-1-3-9" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-1-5-7" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-8-98"
+ id="linearGradient3251-2-8-3-5-5-81"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ id="linearGradient4670-8">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4672-0" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4674-6" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-2-1-0">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-5-8" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4679-4">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4681-3" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4683-8" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-6-9-1-4-4-3">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-8-0-6-2-0-3" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-5-2-3-3-5-7" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4495-7-2-8-2-4-3"
+ xlink:href="#linearGradient4453-7-8-6-7-8-98"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4690-2">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4692-5" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4694-5" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-8-98"
+ id="linearGradient3247-6-1-7-2-7-9"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ id="linearGradient4697-8">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4699-4" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4701-9" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-1-2-3">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-1-4" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4706-9">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4708-6" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4710-8" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient4922-9-6"
+ id="radialGradient4558-9-9"
+ cx="1201.2096"
+ cy="2939.2754"
+ fx="1201.2096"
+ fy="2939.2754"
+ r="159.58984"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4922-9-6">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop4924-0-5" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4926-3-1" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4928-0-0" />
+ </radialGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient4922-9-6"
+ id="radialGradient4649-3-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ cx="1201.2096"
+ cy="2939.2754"
+ fx="1201.2096"
+ fy="2939.2754"
+ r="159.58984" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4718-0">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop4720-7" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4722-3" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4724-4" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-4-6-4-5-7">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-0-1"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4729-8">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop4731-3" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4733-8" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4735-3" />
+ </radialGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-9-2-3-7-7-0">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-5-5-7-6-8-8" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-4-0-8-1-3-77" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ id="linearGradient4479-3-4-5-8-6-8"
+ xlink:href="#linearGradient4459-1-2-8-9-4-3"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-4-3">
+ <stop
+ id="stop4461-2-1-5-2-4-9"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-7-1-8"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-4-3"
+ id="linearGradient3243-3-7-7-9-9-4"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ id="linearGradient4746-8">
+ <stop
+ id="stop4748-4"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4750-1"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-5-5-8">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-5-9" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient4755-0">
+ <stop
+ id="stop4757-6"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4759-1"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-7-2"
+ id="radialGradient4614-5-0-9-4-4"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient3327-8-4-8-0-7-2">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop3329-7-0-1-0-3-0" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop3331-4-3-0-0-4-1" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop3333-2-4-9-7-0-6" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4598-8-1"
+ xlink:href="#radialGradient3327-8-4-8-0-7-2"
+ inkscape:collect="always" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4767-7">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop4769-8" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop4771-3" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop4773-5" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3323-7-2-4-5-8-9">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 997.469,2312.51 c -322.379,0 -583.739,261.36 -583.739,583.74 0,322.38 261.36,583.74 583.739,583.74 322.381,0 583.741,-261.36 583.741,-583.74 0,-322.38 -261.36,-583.74 -583.741,-583.74"
+ id="path3325-9-2-9-5-1-4" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4778-1">
+ <stop
+ style="stop-opacity:1;stop-color:#aeaeb3"
+ offset="0"
+ id="stop4780-2" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="0.949438"
+ id="stop4782-5" />
+ <stop
+ style="stop-opacity:1;stop-color:#ffffff"
+ offset="1"
+ id="stop4784-0" />
+ </radialGradient>
+ <radialGradient
+ r="583.73999"
+ fy="2896.25"
+ fx="997.46997"
+ cy="2896.25"
+ cx="997.46997"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient4813-0"
+ xlink:href="#radialGradient3327-8-4-8-0-7-2"
+ inkscape:collect="always" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad"
+ id="linearGradient3391-1-3-6-4-4-9-0">
+ <stop
+ style="stop-color:#ff0000;stop-opacity:1;"
+ offset="0"
+ id="stop3393-1-9-0-5-6-0-3" />
+ <stop
+ style="stop-color:#ff3c3c;stop-opacity:1;"
+ offset="1"
+ id="stop3395-5-1-5-5-8-5-8" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="3132.0801"
+ x2="1146.25"
+ y1="3132.0801"
+ x1="753.02301"
+ id="linearGradient4503-2-2-4-1-9-3-6"
+ xlink:href="#linearGradient4453-7-8-6-7-8-9-8"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-8-9-8">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop4455-61-8-7-1-3-1-2" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop4457-4-1-9-1-5-2-6" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-8-9-8"
+ id="linearGradient3251-2-8-3-5-5-8-1"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ id="linearGradient5071-9">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5073-9" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5075-8" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3387-3-6-4-2-1-8-3">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-5-1-5" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5080-7">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5082-7" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5084-3" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad"
+ id="linearGradient3355-6-9-1-4-4-0-1">
+ <stop
+ style="stop-color:#00ff00;stop-opacity:1;"
+ offset="0"
+ id="stop3357-8-0-6-2-0-2-7" />
+ <stop
+ style="stop-color:#3cff3c;stop-opacity:1;"
+ offset="1"
+ id="stop3359-5-2-3-3-5-4-7" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2937.73"
+ x2="1463.14"
+ y1="2937.73"
+ x1="1026.6899"
+ id="linearGradient4495-7-2-8-2-4-9-7"
+ xlink:href="#linearGradient4453-7-8-6-7-8-9-8"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient5091-4">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5093-6" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5095-0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-8-9-8"
+ id="linearGradient3247-6-1-7-2-7-0-1"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ id="linearGradient5098-2">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5100-0" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5102-0" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-1-5-6-1-2-2-4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-1-2-1" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5107-5">
+ <stop
+ style="stop-color:#aac4dd;stop-opacity:1;"
+ offset="0"
+ id="stop5109-7" />
+ <stop
+ style="stop-color:#c2dbe9;stop-opacity:1;"
+ offset="1"
+ id="stop5111-5" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient4922-9-4-2"
+ id="radialGradient4558-9-5-6"
+ cx="1201.2096"
+ cy="2939.2754"
+ fx="1201.2096"
+ fy="2939.2754"
+ r="159.58984"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient4922-9-4-2">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop4924-0-4-6" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4926-3-4-0" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop4928-0-2-1" />
+ </radialGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient4922-9-4-2"
+ id="radialGradient4649-3-5-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.1270689,0,-373.49038)"
+ cx="1201.2096"
+ cy="2939.2754"
+ fx="1201.2096"
+ fy="2939.2754"
+ r="159.58984" />
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient5119-0">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop5121-9" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop5123-7" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop5125-3" />
+ </radialGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3369-5-5-4-6-4-5-0-4">
+ <path
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-0-4-2"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <radialGradient
+ fx="0"
+ fy="0"
+ cx="0"
+ cy="0"
+ r="1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(58.375,0,0,-58.375,99.75,289.625)"
+ spreadMethod="pad"
+ id="radialGradient5130-3">
+ <stop
+ style="stop-color:#d2d2d2;stop-opacity:1;"
+ offset="0"
+ id="stop5132-6" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop5134-1" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1;"
+ offset="1"
+ id="stop5136-5" />
+ </radialGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad"
+ id="linearGradient3373-9-2-3-7-7-2-0">
+ <stop
+ style="stop-color:#0000ff;stop-opacity:1;"
+ offset="0"
+ id="stop3375-5-5-7-6-8-7-7" />
+ <stop
+ style="stop-color:#3c3cff;stop-opacity:1;"
+ offset="1"
+ id="stop3377-4-0-8-1-3-7-6" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ id="linearGradient4479-3-4-5-8-6-9-4"
+ xlink:href="#linearGradient4459-1-2-8-9-4-5-5"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-4-5-5">
+ <stop
+ id="stop4461-2-1-5-2-4-5-9"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop4463-3-2-8-7-1-4-8"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-4-5-5"
+ id="linearGradient3243-3-7-7-9-9-0-3"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ id="linearGradient5147-2">
+ <stop
+ id="stop5149-9"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop5151-1"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3351-4-7-3-5-5-3-8">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-5-4-8" />
+ </clipPath>
+ <linearGradient
+ id="linearGradient5156-6">
+ <stop
+ id="stop5158-3"
+ offset="0"
+ style="stop-color:#839bc2;stop-opacity:1;" />
+ <stop
+ id="stop5160-7"
+ offset="1"
+ style="stop-color:#9fb6d4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ y2="2736.25"
+ x2="1088.27"
+ y1="2736.25"
+ x1="646.55499"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient5186-9"
+ xlink:href="#linearGradient4459-1-2-8-9-4-5-5"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-0"
+ id="linearGradient6834"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-0"
+ id="linearGradient6836"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-0"
+ id="linearGradient6840"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-4-3-4-0"
+ id="linearGradient6842"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-43-8-5-2"
+ id="linearGradient6846"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-43-8-5-2"
+ id="linearGradient6848"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62-7-83"
+ id="radialGradient6852"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#radialGradient3327-8-4-8-0-74-62-7-83"
+ id="radialGradient6854"
+ gradientUnits="userSpaceOnUse"
+ cx="997.46997"
+ cy="2896.25"
+ fx="997.46997"
+ fy="2896.25"
+ r="583.73999" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3391-1-3-6-4-45-2"
+ id="linearGradient3962-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.91637692,-363.76131)"
+ x1="131.06729"
+ y1="552.33667"
+ x2="156.19484"
+ y2="552.33667" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3391-1-3-6-4-45-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(39.3232,0,0,-39.3232,75.3022,313.208)"
+ spreadMethod="pad">
+ <stop
+ id="stop3393-1-9-0-5-3-5"
+ style="stop-color:#ff0000;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3395-5-1-5-5-23-3"
+ style="stop-color:#ff3c3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4496-3-8"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-86-9">
+ <stop
+ id="stop4455-61-8-7-1-8-2"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-4-1-9-1-2-8"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4494-4-7"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient6881">
+ <stop
+ id="stop6883"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop6885"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387-3-6-4-2-52-0">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-28-1" />
+ </clipPath>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4492-73-4"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient6890">
+ <stop
+ id="stop6892"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop6894"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3355-6-9-1-4-9-1"
+ id="linearGradient3969-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.16637692,-364.76131)"
+ x1="153.03812"
+ y1="563.1958"
+ x2="170.58951"
+ y2="563.1958" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3355-6-9-1-4-9-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(44.1714,0,0,-44.1714,64.6553,273.625)"
+ spreadMethod="pad">
+ <stop
+ id="stop3357-8-0-6-2-5-93"
+ style="stop-color:#00ff00;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3359-5-2-3-3-3-5"
+ style="stop-color:#3cff3c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4502-1-9"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient6901">
+ <stop
+ id="stop6903"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop6905"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4500-27-7"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient6908">
+ <stop
+ id="stop6910"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop6912"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-1-5-6-1-25-9">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-0-8" />
+ </clipPath>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4498-5-0"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient6917">
+ <stop
+ id="stop6919"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop6921"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3373-9-2-3-7-4-4"
+ id="linearGradient3976-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,1.6663769,-365.26131)"
+ x1="130.94102"
+ y1="573.67615"
+ x2="155.94231"
+ y2="573.67615" />
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient3373-9-2-3-7-4-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(43.645,0,0,-43.645,102.669,293.773)"
+ spreadMethod="pad">
+ <stop
+ id="stop3375-5-5-7-6-6-7"
+ style="stop-color:#0000ff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop3377-4-0-8-1-1-5"
+ style="stop-color:#3c3cff;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-5-5-4-6-4-4-5">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-8-5-9-0-8-8-5" />
+ </clipPath>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4514-2-0"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-44-9">
+ <stop
+ id="stop4461-2-1-5-2-45-2"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463-3-2-8-7-9-8"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4512-7-2"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient6934">
+ <stop
+ id="stop6936"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop6938"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351-4-7-3-5-6-4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-2-5" />
+ </clipPath>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4510-7-0"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient6943">
+ <stop
+ id="stop6945"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop6947"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <filter
+ color-interpolation-filters="sRGB"
+ inkscape:collect="always"
+ id="filter4877-4">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="3.4677372"
+ id="feGaussianBlur4879-4" />
+ </filter>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4496-3-8-1"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4453-7-8-6-7-86-9-7">
+ <stop
+ id="stop4455-61-8-7-1-8-2-4"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4457-4-1-9-1-2-8-0"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4494-4-7-9"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5141">
+ <stop
+ id="stop5143"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5145"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3387-3-6-4-2-52-0-4">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0 z"
+ id="path3389-2-0-7-7-28-1-8" />
+ </clipPath>
+ <linearGradient
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801"
+ id="linearGradient4492-73-4-8"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5150">
+ <stop
+ id="stop5152-2"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5154"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4502-1-9-4"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5157-5">
+ <stop
+ id="stop5159-5"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5161-1"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4500-27-7-7"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5164">
+ <stop
+ id="stop5166"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5168"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3369-1-5-6-1-25-9-1">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0 z"
+ id="path3371-89-4-1-6-0-8-1" />
+ </clipPath>
+ <linearGradient
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73"
+ id="linearGradient4498-5-0-5"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5173">
+ <stop
+ id="stop5175-2"
+ style="stop-color:#aac4dd;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5177"
+ style="stop-color:#c2dbe9;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4514-2-0-7"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9-6"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient4459-1-2-8-9-44-9-6">
+ <stop
+ id="stop4461-2-1-5-2-45-2-1"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop4463-3-2-8-7-9-8-4"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4512-7-2-2"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9-6"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5184">
+ <stop
+ id="stop5186-3"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5188"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <clipPath
+ id="clipPath3351-4-7-3-5-6-4-2">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0 z"
+ id="path3353-1-9-3-4-2-5-2" />
+ </clipPath>
+ <linearGradient
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25"
+ id="linearGradient4510-7-0-1"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9-6"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5193">
+ <stop
+ id="stop5195"
+ style="stop-color:#839bc2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop5197"
+ style="stop-color:#9fb6d4;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <filter
+ color-interpolation-filters="sRGB"
+ inkscape:collect="always"
+ id="filter4877-4-6">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="3.4677372"
+ id="feGaussianBlur4879-4-8" />
+ </filter>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9-6"
+ id="linearGradient5456"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9-6"
+ id="linearGradient5458"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9-6"
+ id="linearGradient5460"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5462"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5465"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5467"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5469"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5471"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5474"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9"
+ id="linearGradient5476"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9"
+ id="linearGradient5478"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9"
+ id="linearGradient5480"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ id="linearGradient5482"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ id="linearGradient5485"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ id="linearGradient5488"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ id="linearGradient5490"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ id="linearGradient5492"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9"
+ id="linearGradient5494"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9-6"
+ id="linearGradient5542"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9-6"
+ id="linearGradient5544"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44-9-6"
+ id="linearGradient5546"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5548"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5550"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5552"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5554"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5556"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86-9-7"
+ id="linearGradient5558"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44"
+ id="linearGradient5606"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44"
+ id="linearGradient5608"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4459-1-2-8-9-44"
+ id="linearGradient5610"
+ gradientUnits="userSpaceOnUse"
+ x1="646.55499"
+ y1="2736.25"
+ x2="1088.27"
+ y2="2736.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3373-9-2-3-7-4"
+ id="linearGradient5612"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,1.6602818,-513.27186)"
+ x1="130.94102"
+ y1="573.67615"
+ x2="155.94231"
+ y2="573.67615" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ id="linearGradient5614"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ id="linearGradient5616"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ id="linearGradient5618"
+ gradientUnits="userSpaceOnUse"
+ x1="1026.6899"
+ y1="2937.73"
+ x2="1463.14"
+ y2="2937.73" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3355-6-9-1-4-9"
+ id="linearGradient5620"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.16028183,-512.77186)"
+ x1="153.03812"
+ y1="563.1958"
+ x2="170.58951"
+ y2="563.1958" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ id="linearGradient5622"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ id="linearGradient5624"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4453-7-8-6-7-86"
+ id="linearGradient5626"
+ gradientUnits="userSpaceOnUse"
+ x1="753.02301"
+ y1="3132.0801"
+ x2="1146.25"
+ y2="3132.0801" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3391-1-3-6-4-45"
+ id="linearGradient5628"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.91028183,-511.77186)"
+ x1="131.06729"
+ y1="552.33667"
+ x2="156.19484"
+ y2="552.33667" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3391-1-3-6-4-45"
+ id="linearGradient5638"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.91028183,-511.77186)"
+ x1="131.06729"
+ y1="552.33667"
+ x2="156.19484"
+ y2="552.33667" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3355-6-9-1-4-9"
+ id="linearGradient5645"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,0.16028183,-512.77186)"
+ x1="153.03812"
+ y1="563.1958"
+ x2="170.58951"
+ y2="563.1958" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3373-9-2-3-7-4"
+ id="linearGradient5652"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2310097,0,0,1.2310097,1.6602818,-513.27186)"
+ x1="130.94102"
+ y1="573.67615"
+ x2="155.94231"
+ y2="573.67615" />
+ </defs>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3847"
+ y="123.53119"
+ x="130.44044"
+ height="121.65835"
+ width="121.67651"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#d4d4d4;fill-opacity:1;stroke:none;filter:url(#filter4877)"
+ id="path5969"
+ d="m 243.76085,181.26034 -14.93481,25.50912 -27.82625,0.0746 -1.81452,-3.07787 -0.33413,2.56605 -14.84649,25.13975 -29.22078,-0.0187 -14.71211,-25.39881 14.72182,-25.11348 3.38646,0.0271 -0.65247,-1.11383 2.38426,-4.07952 -7.45093,-13.48648 14.46565,-25.2836 28.89906,0.0453 10.04998,17.62346 -7.04972,0.0361 -0.82873,1.48777 9.36326,-0.0453 21.47267,-0.064 z"
+ sodipodi:nodetypes="ccccccccccccccccccccc"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <g
+ style="opacity:0.66600001;fill:#ffffff;fill-opacity:1"
+ id="g3365-4-1-2-7-4-6"
+ transform="matrix(0.12493619,0,0,-0.12493619,29.816502,548.06785)"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428">
+ <g
+ style="fill:#ffffff;fill-opacity:1"
+ id="g3367-0-3-7-3-8-3"
+ clip-path="url(#clipPath3369-5-5-4-6-4-4)">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3379-8-8-2-9-6-3"
+ d="m 1054.9399,2977.7669 -13.3202,-30.3869 16.9035,-31.5079 158.0133,-0.9888 88.7521,-155.4766 38.3665,0.9347 17.1443,35.1628 -79.1775,147.7786 78.3833,144.6242 -18.6674,31.2372 -37.8572,-0.5973 -80.0075,-138.2917" />
+ </g>
+ </g>
+ <g
+ style="fill:url(#linearGradient5610);fill-opacity:1"
+ id="g3347-6-8-3-7-3"
+ transform="matrix(0.125,0,0,-0.125,60.546432,548.47125)"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428">
+ <g
+ style="fill:url(#linearGradient5608);fill-opacity:1"
+ id="g3349-5-5-4-7-0"
+ clip-path="url(#clipPath3351-4-7-3-5-6)">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient5606);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3361-0-8-2-9-1"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0" />
+ </g>
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ style="opacity:0.75;fill:url(#linearGradient5652);fill-opacity:1;stroke:none"
+ id="path4616-8-3-2-3-6"
+ d="m 162.84994,183.13641 19.42981,0.15544 11.34701,19.42981 -19.27438,-0.15544 z"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3363-6-9-0-1-3"
+ d="m 143.31155,206.0825 13.106,-22.3925 25.99649,0 13.21487,22.60874 -13.21487,22.39128 -25.99649,0 -13.106,-22.60752 z m 40.53761,-24.8925 -28.86524,0 -0.72412,1.23749 -13.106,22.39251 -0.73575,1.25625 0.73087,1.26 13.106,22.60747 0.72263,1.24634 28.86374,0 0.72512,-1.22884 13.215,-22.39122 0.74625,-1.265 -0.74,-1.26751 -13.21537,-22.60875 -0.72313,-1.23874"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <g
+ style="fill:url(#linearGradient5618);fill-opacity:1"
+ id="g3365-0-4-1-9-1"
+ transform="matrix(0.125,0,0,-0.125,59.796432,548.97125)"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428">
+ <g
+ style="fill:url(#linearGradient5616);fill-opacity:1"
+ id="g3367-2-4-2-8-8"
+ clip-path="url(#clipPath3369-1-5-6-1-25)">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient5614);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3379-4-6-7-6-9"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0" />
+ </g>
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ style="opacity:0.75;fill:url(#linearGradient5645);fill-opacity:1;stroke:none"
+ id="path4626-8-9-7-5-7"
+ d="m 199.43237,162.03046 -10.8807,18.18629 11.03612,18.80806 10.56983,-18.34174 z"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3381-6-8-0-0-5"
+ d="m 188.82766,180.29874 12.3925,-21.38999 25.99625,0 13.27125,22.37625 -13.27125,22.7025 -24.56875,0.11 -13.82,-23.79876 z m 39.8125,-23.88999 -28.86125,0 -0.7225,1.24625 -12.3925,21.39 -0.72625,1.255 0.7275,1.25374 13.82,23.79876 0.7275,1.25125 1.44625,-0.006 24.56875,-0.11 1.4275,-0.006 0.72,-1.2325 13.27125,-22.7025 0.7425,-1.27 -0.75125,-1.26625 -13.27125,-22.37625 -0.72625,-1.225"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <g
+ style="fill:url(#linearGradient5626);fill-opacity:1"
+ id="g3383-5-5-2-2-33"
+ transform="matrix(0.125,0,0,-0.125,60.046432,549.22125)"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428">
+ <g
+ style="fill:url(#linearGradient5624);fill-opacity:1"
+ id="g3385-0-6-4-8-8"
+ clip-path="url(#clipPath3387-3-6-4-2-52)">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient5622);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3397-9-6-1-6-8"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0" />
+ </g>
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ style="opacity:0.75;fill:url(#linearGradient5638);fill-opacity:1;stroke:none"
+ id="path4606-0-0-0-0-9"
+ d="m 162.25538,176.86449 20.82875,0 10.1035,-17.25367 -20.98419,-0.15544 z"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3399-6-7-3-2-2"
+ d="m 155.60942,162.31874 12.92424,-22.56624 25.68775,0 6.95625,12.21375 -3.94375,0 -14.56837,24.7025 -19.11525,-0.055 -7.94087,-14.295 z m 40.06574,-25.06624 -28.59012,0 -0.71975,1.2575 -12.92537,22.56625 -0.70112,1.22375 0.68512,1.23249 7.94137,14.295 0.71087,1.2825 1.46638,0.004 19.11525,0.055 1.43212,0.004 0.729,-1.23375 13.84375,-23.47249 6.81625,0 -2.12875,-3.7375 -6.95625,-12.21375 -0.71875,-1.2625"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3381-4-9-6-5-5-2"
+ d="m 161.03932,179.91739 11.52272,-19.88872 24.17166,0 12.33979,20.80574 -12.33979,21.1091 -22.84435,0.10229 z m 37.27064,-22.66629 -27.35662,0 -0.68484,1.18127 -11.74644,20.27488 -0.68839,1.18957 0.68957,1.18839 13.09952,22.55805 0.68957,1.18601 1.37085,-0.006 23.2879,-0.10427 1.35309,-0.006 0.68247,-1.16825 12.57937,-21.51894 0.7038,-1.20378 -0.7121,-1.20024 -12.57938,-21.2097 -0.68837,-1.16114"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <g
+ id="g3465-0-64"
+ transform="matrix(1.25,0,0,-1.25,53.200049,561.50148)"
+ inkscape:export-xdpi="63.630001"
+ inkscape:export-ydpi="63.630001">
+ <text
+ style="font-size:11.81779194px"
+ id="text3467-9-13"
+ transform="matrix(1,0,-0.17627963,-1,0,0)"
+ y="-267.77499"
+ x="116.98372">
+ <tspan
+ style="font-size:46.39999771px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#49608a;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Denmark;-inkscape-font-specification:Denmark"
+ id="tspan3469-0-88"
+ y="-267.77499"
+ x="116.98372">GEOMETRY</tspan>
+ </text>
+ <text
+ style="font-size:38.40000153px"
+ id="text3471-0-45"
+ transform="matrix(0.99235617,0,-0.17763746,-1.0077027,0,0)"
+ y="-306.75479"
+ x="112.74373">
+ <tspan
+ style="font-size:38.40000153px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#49608a;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Denmark;-inkscape-font-specification:Denmark"
+ id="tspan3473-6-7"
+ y="-306.75479"
+ x="112.74373">boost</tspan>
+ </text>
+ </g>
+ <g
+ transform="matrix(1.25,0,0,-1.25,53.453463,710.62095)"
+ id="g3465-0-4-3-3-29"
+ inkscape:export-filename="C:\Users\Adam\Desktop\bg_logo1.png"
+ inkscape:export-xdpi="63.625523"
+ inkscape:export-ydpi="63.625523">
+ <text
+ id="text3467-9-4-2-6-0"
+ transform="matrix(1,0,-0.17627963,-1,0,0)"
+ x="116.98372"
+ y="-267.77499"
+ style="font-size:11.81779194px">
+ <tspan
+ id="tspan3469-0-6-5-1-3"
+ sodipodi:role="line"
+ style="font-size:46.39999771px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#49608a;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Denmark;-inkscape-font-specification:Denmark"
+ x="116.98372"
+ y="-267.77499">Geometry</tspan>
+ </text>
+ <text
+ id="text3471-0-0-2-8-8"
+ transform="matrix(0.99235617,0,-0.17763746,-1.0077027,0,0)"
+ style="font-size:38.40000153px"
+ x="112.74373"
+ y="-306.75479">
+ <tspan
+ id="tspan3473-6-6-5-6-8"
+ sodipodi:role="line"
+ style="font-size:38.40000153px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#49608a;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Denmark;-inkscape-font-specification:Denmark"
+ x="112.74373"
+ y="-306.75479">Boost</tspan>
+ </text>
+ </g>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3847-0"
+ y="271.54175"
+ x="130.44044"
+ height="121.65835"
+ width="121.67651"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#d4d4d4;fill-opacity:1;stroke:none;filter:url(#filter4877-4)"
+ id="path5969-5"
+ d="m 243.76088,329.27089 -14.93481,25.50912 -27.82625,0.0746 -1.81452,-3.07787 -0.33413,2.56605 -14.84649,25.13975 -29.22078,-0.0187 -14.71211,-25.39881 14.72182,-25.11348 3.38646,0.0271 -0.65247,-1.11383 2.38426,-4.07952 -7.45093,-13.48648 14.46565,-25.2836 28.89906,0.0453 10.04998,17.62346 -7.04972,0.0361 -0.82873,1.48777 9.36326,-0.0453 21.47267,-0.064 z"
+ sodipodi:nodetypes="ccccccccccccccccccccc"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <g
+ style="fill:url(#linearGradient5480);fill-opacity:1"
+ id="g3347-6-8-3-7-3-1"
+ transform="matrix(0.125,0,0,-0.125,60.546449,696.4818)"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428">
+ <g
+ style="fill:url(#linearGradient5478);fill-opacity:1"
+ id="g3349-5-5-4-7-0-1"
+ clip-path="url(#clipPath3351-4-7-3-5-6-4)">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient5476);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3361-0-8-2-9-1-5"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0" />
+ </g>
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3363-6-9-0-1-3-8"
+ d="m 143.31158,354.09305 13.106,-22.3925 25.99649,0 13.21487,22.60874 -13.21487,22.39128 -25.99649,0 -13.106,-22.60752 z m 40.53761,-24.8925 -28.86524,0 -0.72412,1.23749 -13.106,22.39251 -0.73575,1.25625 0.73087,1.26 13.106,22.60747 0.72263,1.24634 28.86374,0 0.72512,-1.22884 13.215,-22.39122 0.74625,-1.265 -0.74,-1.26751 -13.21537,-22.60875 -0.72313,-1.23874"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <g
+ style="fill:url(#linearGradient5488);fill-opacity:1"
+ id="g3365-0-4-1-9-1-7"
+ transform="matrix(0.125,0,0,-0.125,59.796449,696.9818)"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428">
+ <g
+ style="fill:url(#linearGradient5485);fill-opacity:1"
+ id="g3367-2-4-2-8-8-2"
+ clip-path="url(#clipPath3369-1-5-6-1-25-9)">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient5482);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3379-4-6-7-6-9-6"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0" />
+ </g>
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3381-6-8-0-0-5-3"
+ d="m 188.82769,328.30929 12.3925,-21.38999 25.99625,0 13.27125,22.37625 -13.27125,22.7025 -24.56875,0.11 -13.82,-23.79876 z m 39.8125,-23.88999 -28.86125,0 -0.7225,1.24625 -12.3925,21.39 -0.72625,1.255 0.7275,1.25374 13.82,23.79876 0.7275,1.25125 1.44625,-0.006 24.56875,-0.11 1.4275,-0.006 0.72,-1.2325 13.27125,-22.7025 0.7425,-1.27 -0.75125,-1.26625 -13.27125,-22.37625 -0.72625,-1.225"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <g
+ style="fill:url(#linearGradient5494);fill-opacity:1"
+ id="g3383-5-5-2-2-33-8"
+ transform="matrix(0.125,0,0,-0.125,60.046449,697.2318)"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428">
+ <g
+ style="fill:url(#linearGradient5492);fill-opacity:1"
+ id="g3385-0-6-4-8-8-1"
+ clip-path="url(#clipPath3387-3-6-4-2-52-0)">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient5490);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3397-9-6-1-6-8-0"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0" />
+ </g>
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3399-6-7-3-2-2-3"
+ d="m 155.60945,310.32929 12.92424,-22.56624 25.68775,0 6.95625,12.21375 -3.94375,0 -14.56837,24.7025 -19.11525,-0.055 -7.94087,-14.295 z m 40.06574,-25.06624 -28.59012,0 -0.71975,1.2575 -12.92537,22.56625 -0.70112,1.22375 0.68512,1.23249 7.94137,14.295 0.71087,1.2825 1.46638,0.004 19.11525,0.055 1.43212,0.004 0.729,-1.23375 13.84375,-23.47249 6.81625,0 -2.12875,-3.7375 -6.95625,-12.21375 -0.71875,-1.2625"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <g
+ id="g6856"
+ transform="translate(-0.11210079,-0.82208735)">
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5736-5"
+ d="m 168.81797,355.28426 8.27064,-13.5108"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="ccc"
+ inkscape:connector-curvature="0"
+ id="path5738-7"
+ d="m 152.71867,355.09486 16.0993,0.1262 8.20751,14.5841"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ d="m 181.84374,605.97595 -16.54462,0 -8.27231,-14.32806 8.27231,-14.32806 16.54462,0 8.27231,14.32806 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="true"
+ sodipodi:arg2="1.5707963"
+ sodipodi:arg1="1.0471976"
+ sodipodi:r2="14.328062"
+ sodipodi:r1="16.544621"
+ sodipodi:cy="591.64789"
+ sodipodi:cx="173.57143"
+ sodipodi:sides="6"
+ id="path6508-7"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ sodipodi:type="star"
+ transform="translate(-4.4863141,-236.51154)" />
+ <path
+ sodipodi:nodetypes="cssccc"
+ inkscape:connector-curvature="0"
+ id="path7414"
+ d="m 172.60606,343.79376 c 0,0 -1.18952,1.5739 -2.79921,2.0513 -1.62115,0.4808 -4.55053,0.2463 -5.72396,0.916 -2.29239,1.3083 -6.12405,5.2402 -6.12405,5.2402 l 4.86136,-7.8287 z"
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
+ <g
+ transform="matrix(1.25,0,0,-1.25,53.453463,860.79094)"
+ id="g3465-0-4-3-3-29-5"
+ inkscape:export-filename="C:\Users\Adam\Desktop\bg_logo1.png"
+ inkscape:export-xdpi="63.625523"
+ inkscape:export-ydpi="63.625523">
+ <text
+ id="text3467-9-4-2-6-0-7"
+ transform="matrix(1,0,-0.17627963,-1,0,0)"
+ x="116.98372"
+ y="-267.77499"
+ style="font-size:11.81779194px">
+ <tspan
+ id="tspan3469-0-6-5-1-3-6"
+ sodipodi:role="line"
+ style="font-size:46.39999771px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#49608a;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Denmark;-inkscape-font-specification:Denmark"
+ x="116.98372"
+ y="-267.77499">Geometry</tspan>
+ </text>
+ <text
+ id="text3471-0-0-2-8-8-1"
+ transform="matrix(0.99235617,0,-0.17763746,-1.0077027,0,0)"
+ style="font-size:38.40000153px"
+ x="112.74373"
+ y="-306.75479">
+ <tspan
+ id="tspan3473-6-6-5-6-8-8"
+ sodipodi:role="line"
+ style="font-size:38.40000153px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#49608a;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Denmark;-inkscape-font-specification:Denmark"
+ x="112.74373"
+ y="-306.75479">Boost</tspan>
+ </text>
+ </g>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3847-0-9"
+ y="421.71176"
+ x="130.44044"
+ height="121.65835"
+ width="121.67651"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#d4d4d4;fill-opacity:1;stroke:none;filter:url(#filter4877-4-6)"
+ id="path5969-5-2"
+ d="m 243.76088,479.44088 -14.93481,25.50912 -27.82625,0.0746 -1.81452,-3.07787 -0.33413,2.56605 -14.84649,25.13975 -29.22078,-0.0187 -14.71211,-25.39881 14.72182,-25.11348 3.38646,0.0271 -0.65247,-1.11383 2.38426,-4.07952 -7.45093,-13.48648 14.46565,-25.2836 28.89906,0.0453 10.04998,17.62346 -7.04972,0.0361 -0.82873,1.48777 9.36326,-0.0453 21.47267,-0.064 z"
+ sodipodi:nodetypes="ccccccccccccccccccccc"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <g
+ style="fill:url(#linearGradient5546);fill-opacity:1"
+ id="g3347-6-8-3-7-3-1-7"
+ transform="matrix(0.125,0,0,-0.125,60.546449,846.65179)"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428">
+ <g
+ style="fill:url(#linearGradient5544);fill-opacity:1"
+ id="g3349-5-5-4-7-0-1-9"
+ clip-path="url(#clipPath3351-4-7-3-5-6-4-2)">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient5542);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3361-0-8-2-9-1-5-5"
+ d="m 757.242,2926.25 -110.687,-189.11 110.656,-190.89 219.437,0 111.622,189.1 -111.59,190.9 -219.438,0" />
+ </g>
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3363-6-9-0-1-3-8-4"
+ d="m 143.31158,504.26304 13.106,-22.3925 25.99649,0 13.21487,22.60874 -13.21487,22.39128 -25.99649,0 -13.106,-22.60752 z m 40.53761,-24.8925 -28.86524,0 -0.72412,1.23749 -13.106,22.39251 -0.73575,1.25625 0.73087,1.26 13.106,22.60747 0.72263,1.24634 28.86374,0 0.72512,-1.22884 13.215,-22.39122 0.74625,-1.265 -0.74,-1.26751 -13.21537,-22.60875 -0.72313,-1.23874"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <g
+ style="fill:url(#linearGradient5552);fill-opacity:1"
+ id="g3365-0-4-1-9-1-7-3"
+ transform="matrix(0.125,0,0,-0.125,59.796449,847.15179)"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428">
+ <g
+ style="fill:url(#linearGradient5550);fill-opacity:1"
+ id="g3367-2-4-2-8-8-2-1"
+ clip-path="url(#clipPath3369-1-5-6-1-25-9-1)">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient5548);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3379-4-6-7-6-9-6-2"
+ d="m 1131.64,3128.5 -104.95,-181.12 116.38,-200.42 208.05,0.94 112.02,191.63 -112.08,188.97 -219.42,0" />
+ </g>
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3381-6-8-0-0-5-3-3"
+ d="m 188.82769,478.47928 12.3925,-21.38999 25.99625,0 13.27125,22.37625 -13.27125,22.7025 -24.56875,0.11 -13.82,-23.79876 z m 39.8125,-23.88999 -28.86125,0 -0.7225,1.24625 -12.3925,21.39 -0.72625,1.255 0.7275,1.25374 13.82,23.79876 0.7275,1.25125 1.44625,-0.006 24.56875,-0.11 1.4275,-0.006 0.72,-1.2325 13.27125,-22.7025 0.7425,-1.27 -0.75125,-1.26625 -13.27125,-22.37625 -0.72625,-1.225"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <g
+ style="fill:url(#linearGradient5558);fill-opacity:1"
+ id="g3383-5-5-2-2-33-8-3"
+ transform="matrix(0.125,0,0,-0.125,60.046449,847.40179)"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428">
+ <g
+ style="fill:url(#linearGradient5556);fill-opacity:1"
+ id="g3385-0-6-4-8-8-1-4"
+ clip-path="url(#clipPath3387-3-6-4-2-52-0-4)">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:url(#linearGradient5554);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3397-9-6-1-6-8-0-1"
+ d="m 862.109,3289.75 -109.086,-190.45 69.122,-124.42 164.511,-0.47 c 0,0 111.044,188.28 116.564,197.63 7.66,0 43.03,0 43.03,0 l -67.03,117.71 -217.111,0" />
+ </g>
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path3399-6-7-3-2-2-3-1"
+ d="m 155.60945,460.49928 12.92424,-22.56624 25.68775,0 6.95625,12.21375 -3.94375,0 -14.56837,24.7025 -19.11525,-0.055 -7.94087,-14.295 z m 40.06574,-25.06624 -28.59012,0 -0.71975,1.2575 -12.92537,22.56625 -0.70112,1.22375 0.68512,1.23249 7.94137,14.295 0.71087,1.2825 1.46638,0.004 19.11525,0.055 1.43212,0.004 0.729,-1.23375 13.84375,-23.47249 6.81625,0 -2.12875,-3.7375 -6.95625,-12.21375 -0.71875,-1.2625"
+ inkscape:export-filename="C:\Users\Adam\Desktop\asdasd1.png"
+ inkscape:export-xdpi="11.836428"
+ inkscape:export-ydpi="11.836428" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:3.32599926;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 169.65905,504.37116 13.21174,-22.79157"
+ id="path5736-5-8"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:3.32599926;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 142.69398,504.18978 26.77396,-0.0165 13.85367,24.13707"
+ id="path5738-7-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.10757375;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 174.03971,485.29831 c 0,0 -2.25147,1.84742 -4.75532,2.57991 -2.52167,0.73771 -6.67779,0.94768 -8.50489,1.98149 -3.56939,2.01959 -9.54561,7.75843 -9.54561,7.75843 l 7.52892,-12.27538 z"
+ id="path7414-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cssccc" />
+</svg>
diff --git a/libs/geometry/doc/other/logo/logo128x128.png b/libs/geometry/doc/other/logo/logo128x128.png
new file mode 100644
index 0000000000..0fa8f86ef5
--- /dev/null
+++ b/libs/geometry/doc/other/logo/logo128x128.png
Binary files differ
diff --git a/libs/geometry/doc/other/logo/logo16x16.png b/libs/geometry/doc/other/logo/logo16x16.png
new file mode 100644
index 0000000000..01ff187ddf
--- /dev/null
+++ b/libs/geometry/doc/other/logo/logo16x16.png
Binary files differ
diff --git a/libs/geometry/doc/other/logo/logo400x400.png b/libs/geometry/doc/other/logo/logo400x400.png
new file mode 100644
index 0000000000..d24201dae6
--- /dev/null
+++ b/libs/geometry/doc/other/logo/logo400x400.png
Binary files differ
diff --git a/libs/geometry/doc/other/logo/logo64x64.png b/libs/geometry/doc/other/logo/logo64x64.png
new file mode 100644
index 0000000000..a97315e64f
--- /dev/null
+++ b/libs/geometry/doc/other/logo/logo64x64.png
Binary files differ
diff --git a/libs/geometry/doc/other/logo/logo_bkg.png b/libs/geometry/doc/other/logo/logo_bkg.png
new file mode 100644
index 0000000000..af23043699
--- /dev/null
+++ b/libs/geometry/doc/other/logo/logo_bkg.png
Binary files differ
diff --git a/libs/geometry/doc/quickbook/quickref.xml b/libs/geometry/doc/quickbook/quickref.xml
new file mode 100644
index 0000000000..8179d7a87a
--- /dev/null
+++ b/libs/geometry/doc/quickbook/quickref.xml
@@ -0,0 +1,739 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "../../../../../../trunk/tools/boostbook/dtd/boostbook.dtd">
+
+<!-- TODO: original version for in-Boost libs
+<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "../../../tools/boostbook/dtd/boostbook.dtd">
+-->
+
+<!--
+ Copyright (c) 2010 Mateusz Loskot (mateusz at loskot dot net)
+
+ Distributed under 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)
+-->
+
+<informaltable frame="all">
+
+<!-- ###### CONCEPTS ########################################################################### -->
+<tgroup cols="3">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="c">
+ <bridgehead renderas="sect2">Geometry Concepts</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">0-dimensional</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.concept__Point">boost::geometry::concept::Point</link></member>
+ <member><link linkend="boost_geometry.reference.concept__ConstPoint">boost::geometry::concept::ConstPoint</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">1-dimensional</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.concept__Segment">boost::geometry::concept::Segment</link></member>
+ <member><link linkend="boost_geometry.reference.concept__ConstSegment">boost::geometry::concept::ConstSegment</link></member>
+ <member><link linkend="boost_geometry.reference.concept__Linestring">boost::geometry::concept::Linestring</link></member>
+ <member><link linkend="boost_geometry.reference.concept__ConstLinestring">boost::geometry::concept::ConstLinestring</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">2-dimensional</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.concept__Box">boost::geometry::concept::Box</link></member>
+ <member><link linkend="boost_geometry.reference.concept__ConstBox">boost::geometry::concept::ConstBox</link></member>
+ <member><link linkend="boost_geometry.reference.concept__Ring">boost::geometry::concept::Ring</link></member>
+ <member><link linkend="boost_geometry.reference.concept__ConstRing">boost::geometry::concept::ConstRing</link></member>
+ <member><link linkend="boost_geometry.reference.concept__Polygon">boost::geometry::concept::Polygon</link></member>
+ <member><link linkend="boost_geometry.reference.concept__ConstPolygon">boost::geometry::concept::ConstPolygon</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ <row>
+ <entry valign="center" namest="a" nameend="c">
+ <bridgehead renderas="sect3">Functions</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.concept__check">boost::geometry::concept::check</link></member>
+ <member><link linkend="boost_geometry.reference.concept__check_concepts_and_equal_dimensions">boost::geometry::concept::check_concepts_and_equal_dimensions</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+<!-- ###### MODELS ############################################################################# -->
+<tgroup cols="3">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="c">
+ <bridgehead renderas="sect2">Geometry Models</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">0-dimensional</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.point">boost::geometry::point</link></member>
+ <member><link linkend="boost_geometry.reference.point_xy">boost::geometry::point_xy</link></member>
+ <member><link linkend="boost_geometry.reference.point_2d">boost::geometry::point_2d</link></member>
+ <member><link linkend="boost_geometry.reference.point_3d">boost::geometry::point_3d</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">1-dimensional</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.segment">boost::geometry::segment</link></member>
+ <member><link linkend="boost_geometry.reference.segment_2d">boost::geometry::segment_2d</link></member>
+ <member><link linkend="boost_geometry.reference.linestring">boost::geometry::linestring</link></member>
+ <member><link linkend="boost_geometry.reference.linestring_2d">boost::geometry::linestring_2d</link></member>
+ <member><link linkend="boost_geometry.reference.linestring_3d">boost::geometry::linestring_3d</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">2-dimensional</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.box">boost::geometry::box</link></member>
+ <member><link linkend="boost_geometry.reference.box_2d">boost::geometry::box_2d</link></member>
+ <member><link linkend="boost_geometry.reference.box_3d">boost::geometry::box_3d</link></member>
+ <member><link linkend="boost_geometry.reference.box">boost::geometry::box</link></member>
+ <member><link linkend="boost_geometry.reference.linear_ring">boost::geometry::linear_ring</link></member>
+ <member><link linkend="boost_geometry.reference.ring_2d">boost::geometry::ring_2d</link></member>
+ <member><link linkend="boost_geometry.reference.ring_3d">boost::geometry::ring_3d</link></member>
+ <member><link linkend="boost_geometry.reference.polygon">boost::geometry::polygon</link></member>
+ <member><link linkend="boost_geometry.reference.polygon_2d">boost::geometry::polygon_2d</link></member>
+ <member><link linkend="boost_geometry.reference.polygon_3d">boost::geometry::polygon_3d</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ <row>
+ <entry valign="top" namest="a" nameend="c">
+ <bridgehead renderas="sect3">Functions</bridgehead>
+ <simplelist type="vert" columns="1">
+ </simplelist>
+ <bridgehead renderas="sect3">Macros</bridgehead>
+ <simplelist type="vert" columns="1">
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+
+<!-- ###### CORE ############################################################################### -->
+<tgroup cols="2">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="b">
+ <bridgehead renderas="sect2">Core</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Metafunctions</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.cs_tag">boost::geometry::cs_tag</link></member>
+ <member><link linkend="boost_geometry.reference.coordinate_type">boost::geometry::coordinate_type</link></member>
+ <member><link linkend="boost_geometry.reference.coordinate_system">boost::geometry::coordinate_system</link></member>
+ <member><link linkend="boost_geometry.reference.dimension">boost::geometry::dimension</link></member>
+ <member><link linkend="boost_geometry.reference.geometry_id">boost::geometry::geometry_id</link></member>
+ <member><link linkend="boost_geometry.reference.interior_type">boost::geometry::interior_type</link></member>
+ <member><link linkend="boost_geometry.reference.is_linear">boost::geometry::is_linear</link></member>
+ <member><link linkend="boost_geometry.reference.is_multi">boost::geometry::is_multi</link></member>
+ <member><link linkend="boost_geometry.reference.is_radian">boost::geometry::is_radian</link></member>
+ <member><link linkend="boost_geometry.reference.point_order">boost::geometry::point_order</link></member>
+ <member><link linkend="boost_geometry.reference.point_type">boost::geometry::point_type</link></member>
+ <member><link linkend="boost_geometry.reference.ring_type">boost::geometry::ring_type</link></member>
+ <member><link linkend="boost_geometry.reference.replace_point_type">boost::geometry::replace_point_type</link></member>
+ <member><link linkend="boost_geometry.reference.reverse_dispatch">boost::geometry::reverse_dispatch</link></member>
+ <member><link linkend="boost_geometry.reference.tag">boost::geometry::tag</link></member>
+ <member><link linkend="boost_geometry.reference.topological_dimension">boost::geometry::topological_dimension</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Access Functions</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.exterior_ring">boost::geometry::exterior_ring</link></member>
+ <member><link linkend="boost_geometry.reference.get">boost::geometry::get</link></member>
+ <member><link linkend="boost_geometry.reference.get_as_radian">boost::geometry::get_as_radian</link></member>
+ <member><link linkend="boost_geometry.reference.interior_rings">boost::geometry::interior_rings</link></member>
+ <member><link linkend="boost_geometry.reference.num_interior_rings">boost::geometry::num_interior_rings</link></member>
+ <member><link linkend="boost_geometry.reference.num_points">boost::geometry::num_points</link></member>
+ <member><link linkend="boost_geometry.reference.set">boost::geometry::set</link></member>
+ <member><link linkend="boost_geometry.reference.set_from_radian">boost::geometry::set_from_radian</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.exception">boost::geometry::exception</link></member>
+ <member> <link linkend="boost_geometry.reference.centroid_exception">boost::geometry::centroid_exception</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+<!-- ###### CONSTANTS ########################################################################## -->
+<tgroup cols="2">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="b">
+ <bridgehead renderas="sect2">Constants</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Numeric</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.max_corner">boost::geometry::max_corner</link></member>
+ <member><link linkend="boost_geometry.reference.min_corner">boost::geometry::min_corner</link></member>
+ <member><link linkend="boost_geometry.reference.order_selector">boost::geometry::order_selector</link></member>
+ <member><link linkend="boost_geometry.reference.math__pi">boost::geometry::math::pi</link></member>
+ <member><link linkend="boost_geometry.reference.math__two_pi">boost::geometry::math::two_pi</link></member>
+ <member><link linkend="boost_geometry.reference.math__d2r">boost::geometry::math::d2r</link></member>
+ <member><link linkend="boost_geometry.reference.math__r2d">boost::geometry::math::r2d</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Types</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.degree">boost::geometry::degree</link></member>
+ <member><link linkend="boost_geometry.reference.radian">boost::geometry::radian</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+<!-- ###### COORDINATE SYSTEMS / ITERATORS ##################################################### -->
+<tgroup cols="2">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="a">
+ <bridgehead renderas="sect2">Coordinate Systems</bridgehead>
+ </entry>
+ <entry valign="center" namest="b" nameend="c">
+ <bridgehead renderas="sect2">Iterators</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.cs__cartesian">boost::geometry::cs::cartesian</link></member>
+ <member><link linkend="boost_geometry.reference.cs__geographic">boost::geometry::cs::geographic</link></member>
+ <member><link linkend="boost_geometry.reference.cs__polar">boost::geometry::cs::polar</link></member>
+ <member><link linkend="boost_geometry.reference.cs__spherical">boost::geometry::cs::spherical</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Metafunctions</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.range_type">boost::geometry::range_type</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.circular_iterator">boost::geometry::circular_iterator</link></member>
+ <member><link linkend="boost_geometry.reference.ever_circling_iterator">boost::geometry::ever_circling_iterator</link></member>
+ <member><link linkend="boost_geometry.reference.one_section_segment_iterator">boost::geometry::one_section_segment_iterator</link></member>
+ <member><link linkend="boost_geometry.reference.section_iterator">boost::geometry::section_iterator</link></member>
+ <member><link linkend="boost_geometry.reference.segment_iterator">boost::geometry::segment_iterator</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Functions</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.make_segment_iterator">boost::geometry::make_segment_iterator</link></member>
+ <member><link linkend="boost_geometry.reference.operator_eq__eq_">boost::geometry::operator==</link></member>
+ <member><link linkend="boost_geometry.reference.operator_not__eq_">boost::geometry::operator!=</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+<!-- ###### ALGORITHMS ######################################################################### -->
+<tgroup cols="3">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="c">
+ <bridgehead renderas="sect2">Algorithms</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Geometry Constructors</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.make">boost::geometry::make</link></member>
+ <member><link linkend="boost_geometry.reference.make_inverse">boost::geometry::make_inverse</link></member>
+ <member><link linkend="boost_geometry.reference.make_zero">boost::geometry::make_zero</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Predicates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.crosses">boost::geometry::crosses</link></member>
+ <member><link linkend="boost_geometry.reference.disjoint">boost::geometry::disjoint</link></member>
+ <member><link linkend="boost_geometry.reference.equals">boost::geometry::equals</link></member>
+ <member><link linkend="boost_geometry.reference.intersects">boost::geometry::intersects</link></member>
+ <member><link linkend="boost_geometry.reference.overlaps">boost::geometry::overlaps</link></member>
+ <member><link linkend="boost_geometry.reference.selected">boost::geometry::selected</link></member>
+ <member><link linkend="boost_geometry.reference.within">boost::geometry::within</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Append</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.append">boost::geometry::append</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Area</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.area">boost::geometry::area</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Assign</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.assign">boost::geometry::assign</link></member>
+ <member><link linkend="boost_geometry.reference.assign_box_corners">boost::geometry::assign_box_corners</link></member>
+ <member><link linkend="boost_geometry.reference.assign_inverse">boost::geometry::assign_inverse</link></member>
+ <member><link linkend="boost_geometry.reference.assign_point_from_index">boost::geometry::assign_point_from_index</link></member>
+ <member><link linkend="boost_geometry.reference.assign_point_to_index">boost::geometry::assign_point_to_index</link></member>
+ <member><link linkend="boost_geometry.reference.assign_zero">boost::geometry::assign_zero</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Buffer</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.buffer">boost::geometry::buffer</link></member>
+ <member><link linkend="boost_geometry.reference.make_buffer">boost::geometry::make_buffer</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Centroid</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.centroid">boost::geometry::centroid</link></member>
+ <member><link linkend="boost_geometry.reference.make_centroid">boost::geometry::make_centroid</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Clear</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.clear">boost::geometry::clear</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Combine</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.combine">boost::geometry::combine</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Convert</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.convert">boost::geometry::convert</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Convex Hull</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.convex_hull">boost::geometry::convex_hull</link></member>
+ <member><link linkend="boost_geometry.reference.convex_hull_inserter">boost::geometry::convex_hull_inserter</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Correct</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.correct">boost::geometry::correct</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Distance</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.distance">boost::geometry::distance</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Difference</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.difference">boost::geometry::difference</link></member>
+ <member><link linkend="boost_geometry.reference.sym_difference">boost::geometry::sym_difference</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Dissolve</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.dissolve">boost::geometry::dissolve</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Envelope</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.envelope">boost::geometry::envelope</link></member>
+ <member><link linkend="boost_geometry.reference.make_envelope">boost::geometry::make_envelope</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">for_each</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.for_each_point">boost::geometry::for_each_point</link></member>
+ <member><link linkend="boost_geometry.reference.for_each_segment">boost::geometry::for_each_segment</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Intersection</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.intersection_inserter">boost::geometry::intersection_inserter</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Length</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.length">boost::geometry::length</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Overlay</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.copy_segments">boost::geometry::copy_segments</link></member>
+ <member><link linkend="boost_geometry.reference.copy_segment_point">boost::geometry::copy_segment_point</link></member>
+ <member><link linkend="boost_geometry.reference.copy_segment_points">boost::geometry::copy_segment_points</link></member>
+ <member><link linkend="boost_geometry.reference.enrich_intersection_points">boost::geometry::enrich_intersection_points</link></member>
+ <member><link linkend="boost_geometry.reference.get_turns">boost::geometry::get_turns</link></member>
+ <member><link linkend="boost_geometry.reference.traverse">boost::geometry::traverse</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Perimeter</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.perimeter">boost::geometry::perimeter</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Reverse</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.reverse">boost::geometry::reverse</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Section</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.get_section">boost::geometry::get_section</link></member>
+ <member><link linkend="boost_geometry.reference.sectionalize">boost::geometry::sectionalize</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Simplify</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.simplify">boost::geometry::simplify</link></member>
+ <member><link linkend="boost_geometry.reference.simplify_inserter">boost::geometry::simplify_inserter</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Transform</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.transform">boost::geometry::transform</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Union</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.union_inserter">boost::geometry::union_inserter</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Unique</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.unique">boost::geometry::unique</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Miscellaneous Utilities</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.parse">boost::geometry::parse</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+<!-- ###### POLICIES ########################################################################### -->
+<tgroup cols="2">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="b">
+ <bridgehead renderas="sect2">Policies</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Compare</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.equal_to">boost::geometry::equal_to</link></member>
+ <member><link linkend="boost_geometry.reference.greater">boost::geometry::greater</link></member>
+ <member><link linkend="boost_geometry.reference.less">boost::geometry::less</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Relate</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.policies__relate__direction_type">boost::geometry::policies::relate::direction_type</link></member>
+ <member><link linkend="boost_geometry.reference.policies__relate__segments_de9im">boost::geometry::policies::relate::segments_de9im</link></member>
+ <member><link linkend="boost_geometry.reference.policies__relate__segments_direction">boost::geometry::policies::relate::segments_direction</link></member>
+ <member><link linkend="boost_geometry.reference.policies__relate__segments_intersection_points">boost::geometry::policies::relate::segments_intersection_points</link></member>
+ <member><link linkend="boost_geometry.reference.policies__relate__segments_tupled">boost::geometry::policies::relate::segments_tupled</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+<!-- ###### STRATEGY CONCEPTS ################################################################## -->
+<tgroup cols="2">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="b">
+ <bridgehead renderas="sect2">Strategy Concepts</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.concept__AreaStrategy">boost::geometry::concept::AreaStrategy</link></member>
+ <member><link linkend="boost_geometry.reference.concept__CentroidStrategy">boost::geometry::concept::CentroidStrategy</link></member>
+ <member><link linkend="boost_geometry.reference.concept__ConvexHullStrategy">boost::geometry::concept::ConvexHullStrategy</link></member>
+ <member><link linkend="boost_geometry.reference.concept__PointDistanceStrategy">boost::geometry::concept::PointDistanceStrategy</link></member>
+ <member><link linkend="boost_geometry.reference.concept__PointSegmentDistanceStrategy">boost::geometry::concept::PointSegmentDistanceStrategy</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.concept__SegmentIntersectStrategy">boost::geometry::concept::SegmentIntersectStrategy</link></member>
+ <member><link linkend="boost_geometry.reference.concept__SimplifyStrategy">boost::geometry::concept::SimplifyStrategy</link></member>
+ <member><link linkend="boost_geometry.reference.concept__WithinStrategy">boost::geometry::concept::WithinStrategy</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+<!-- ###### STRATEGIES ######################################################################### -->
+<tgroup cols="3">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="c">
+ <bridgehead renderas="sect2">Strategies</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Area</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.strategy_area">boost::geometry::strategy_area</link></member>
+ <member><link linkend="boost_geometry.reference.area_result">boost::geometry::area_result</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__area__by_triangles">boost::geometry::strategy::area::by_triangles</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__area__huiller">boost::geometry::strategy::area::huiller</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Buffer</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.strategy__buffer__join_miter">boost::geometry::strategy::buffer::join_miter</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__buffer__join_bevel">boost::geometry::strategy::buffer::join_bevel</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__buffer__join_round">boost::geometry::strategy::buffer::join_round</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Centroid</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.strategy_centroid">boost::geometry::strategy_centroid</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__centroid___bashein_detmer">boost::geometry::strategy::centroid_::bashein_detmer</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__centroid___centroid_average">boost::geometry::strategy::centroid_::centroid_average</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Compare</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.strategy_compare">boost::geometry::strategy_compare</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__compare__default_strategy">boost::geometry::strategy::compare::default_strategy</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__compare__circular_comparator">boost::geometry::strategy::compare::circular_comparator</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Convex Hull</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.strategy_convex_hull">boost::geometry::strategy_convex_hull</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__convex_hull__graham_andrew">boost::geometry::strategy::convex_hull::graham_andrew</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Distance</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.strategy_distance">boost::geometry::strategy_distance</link></member>
+ <member><link linkend="boost_geometry.reference.strategy_distance_segment">boost::geometry::strategy_distance_segment</link></member>
+ <member><link linkend="boost_geometry.reference.cartesian_distance">boost::geometry::cartesian_distance</link></member>
+ <member><link linkend="boost_geometry.reference.distance_result">boost::geometry::distance_result</link></member>
+ <member><link linkend="boost_geometry.reference.make_distance_result">boost::geometry::make_distance_result</link></member>
+ <member><link linkend="boost_geometry.reference.close_to_zero">boost::geometry::close_to_zero</link></member>
+ <member><link linkend="boost_geometry.reference.fuzzy_equals">boost::geometry::fuzzy_equals</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__distance__projected_point">boost::geometry::strategy::distance::projected_point</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__distance__pythagoras">boost::geometry::strategy::distance::pythagoras</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__distance__cross_track">boost::geometry::strategy::distance::cross_track</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__distance__haversine">boost::geometry::strategy::distance::haversine</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Intersection</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.de9im">boost::geometry::de9im</link></member>
+ <member><link linkend="boost_geometry.reference.de9im_segment">boost::geometry::de9im_segment</link></member>
+ <member><link linkend="boost_geometry.reference.segment_intersection_points">boost::geometry::segment_intersection_points</link></member>
+ <member><link linkend="boost_geometry.reference.strategy_intersection">boost::geometry::strategy_intersection</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__intersection__liang_barsky">boost::geometry::strategy::intersection::liang_barsky</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__intersection__relate_cartesian_segments">boost::geometry::strategy::intersection::relate_cartesian_segments</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__intersection__relate_cartesian_segments">boost::geometry::strategy::intersection::relate_cartesian_segments</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Side</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.strategy_side">boost::geometry::strategy_side</link></member>
+ <member><link linkend="boost_geometry.reference.side_info">boost::geometry::side_info</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__side__course">boost::geometry::strategy::side::course</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__side__side_by_triangle">boost::geometry::strategy::side::side_by_triangle</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__side__side_by_cross_track">boost::geometry::strategy::side::side_by_cross_track</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Simplify</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.strategy__simplify__douglas_peucker">boost::geometry::strategy::simplify::douglas_peucker</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Transform</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.strategy_transform">boost::geometry::strategy_transform</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__copy_direct">boost::geometry::strategy::copy_direct</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__copy_per_coordinate">boost::geometry::strategy::copy_per_coordinate</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__degree_radian_vv">boost::geometry::strategy::degree_radian_vv</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__degree_radian_vv_3">boost::geometry::strategy::degree_radian_vv_3</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__from_spherical_2_to_cartesian_3">boost::geometry::strategy::from_spherical_2_to_cartesian_3</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__from_spherical_3_to_cartesian_3">boost::geometry::strategy::from_spherical_3_to_cartesian_3</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__from_cartesian_3_to_spherical_2">boost::geometry::strategy::from_cartesian_3_to_spherical_2</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__from_cartesian_3_to_spherical_3">boost::geometry::strategy::from_cartesian_3_to_spherical_3</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__inverse_transformer">boost::geometry::strategy::inverse_transformer</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__map_transformer">boost::geometry::strategy::map_transformer</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__ublas_transformer">boost::geometry::strategy::ublas_transformer</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__translate_transformer">boost::geometry::strategy::translate_transformer</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__scale_transformer">boost::geometry::strategy::scale_transformer</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__transform__rotate_transformer">boost::geometry::strategy::rotate_transformer</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Within</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.strategy__within__winding">boost::geometry::strategy::winding</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__within__crossings_multiply">boost::geometry::strategy::crossings_multiply</link></member>
+ <member><link linkend="boost_geometry.reference.strategy__within__franklin">boost::geometry::strategy::franklin</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Miscellaneous Utilities</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.strategy__not_implemented">boost::geometry::strategy::not_implemented</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+<!-- ###### ARITHMETIC ######################################################################### -->
+<tgroup cols="4">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <colspec colname="d"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="d">
+ <bridgehead renderas="sect2">Arithmetic</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Add</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.add_point">boost::geometry::add_point</link></member>
+ <member><link linkend="boost_geometry.reference.add_value">boost::geometry::add_value</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Subtract</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.subtract_point">boost::geometry::subtract_point</link></member>
+ <member><link linkend="boost_geometry.reference.subtract_value">boost::geometry::subtract_value</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Multiply</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.multiply_point">boost::geometry::multiply_point</link></member>
+ <member><link linkend="boost_geometry.reference.multiply_value">boost::geometry::multiply_value</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Divide</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.divide_point">boost::geometry::divide_point</link></member>
+ <member><link linkend="boost_geometry.reference.divide_value">boost::geometry::divide_value</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ <row>
+ <entry valign="center" namest="a" nameend="d">
+ <bridgehead renderas="sect3">Products</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.cross_product">boost::geometry::cross_product</link></member>
+ <member><link linkend="boost_geometry.reference.dot_product">boost::geometry::dot_product</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+<!-- ###### EXTENSIONS ########################################################################### -->
+<tgroup cols="3">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="c">
+ <bridgehead renderas="sect2">Extensions</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">TODO</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_geometry.reference.">...</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+</informaltable>
diff --git a/libs/geometry/doc/quickref.xml b/libs/geometry/doc/quickref.xml
index 2a70b4612f..e65aeeafa0 100644
--- a/libs/geometry/doc/quickref.xml
+++ b/libs/geometry/doc/quickref.xml
@@ -5,9 +5,15 @@
<!--
Boost.Geometry (aka GGL, Generic Geometry Library)
- Copyright (c) 2009-2011 Mateusz Loskot, London, UK.
- Copyright (c) 2009-2011 Barend Gehrels, Amsterdam, the Netherlands.
- Copyright (c) 2009-2011 Bruno Lalande, Paris, France.
+ Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Copyright (c) 2009-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2009-2014 Bruno Lalande, Paris, France.
+ Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland.
+
+ This file was modified by Oracle on 2014.
+ Modifications copyright (c) 2014, Oracle and/or its affiliates.
+
+ Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -214,16 +220,16 @@
</tgroup>
<!-- ###### CONSTANTS / COORDINATE SYSTEMS ################################ -->
-<tgroup cols="2">
+<tgroup cols="3">
<colspec colname="a"/>
<colspec colname="b"/>
<colspec colname="c"/>
- <thead>
+ <thead>
<row>
<entry valign="center" namest="a" nameend="b">
<bridgehead renderas="sect2">Constants</bridgehead>
</entry>
- <entry valign="center" namest="b" nameend="c">
+ <entry valign="center" namest="c" nameend="c">
<bridgehead renderas="sect2">Coordinate Systems</bridgehead>
</entry>
</row>
@@ -317,10 +323,13 @@
</simplelist>
<bridgehead renderas="sect3">Predicates</bridgehead>
<simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.algorithms.crosses">crosses</link></member>
<member><link linkend="geometry.reference.algorithms.covered_by">covered_by</link></member>
<member><link linkend="geometry.reference.algorithms.disjoint">disjoint</link></member>
<member><link linkend="geometry.reference.algorithms.equals">equals</link></member>
<member><link linkend="geometry.reference.algorithms.intersects">intersects</link></member>
+ <member><link linkend="geometry.reference.algorithms.is_simple">is_simple</link></member>
+ <member><link linkend="geometry.reference.algorithms.is_valid">is_valid</link></member>
<member><link linkend="geometry.reference.algorithms.overlaps">overlaps</link></member>
<member><link linkend="geometry.reference.algorithms.touches">touches</link></member>
<member><link linkend="geometry.reference.algorithms.within">within</link></member>
@@ -348,6 +357,10 @@
coordinate values)
</member>
</simplelist>
+ <bridgehead renderas="sect3">Buffer</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.algorithms.buffer">buffer</link></member>
+ </simplelist>
</entry>
<entry valign="top">
<bridgehead renderas="sect3">Centroid</bridgehead>
@@ -504,6 +517,20 @@
</simplelist>
</entry>
<entry valign="top">
+ <bridgehead renderas="sect3">Buffer</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.strategies.strategy_buffer_distance_asymmetric">strategy::buffer::distance_asymmetric</link></member>
+ <member><link linkend="geometry.reference.strategies.strategy_buffer_distance_symmetric">strategy::buffer::distance_symmetric</link></member>
+ <member><link linkend="geometry.reference.strategies.strategy_buffer_end_flat">strategy::buffer::end_flat</link></member>
+ <member><link linkend="geometry.reference.strategies.strategy_buffer_end_round">strategy::buffer::end_round</link></member>
+ <member><link linkend="geometry.reference.strategies.strategy_buffer_join_miter">strategy::buffer::join_miter</link></member>
+ <member><link linkend="geometry.reference.strategies.strategy_buffer_join_round">strategy::buffer::join_round</link></member>
+ <member><link linkend="geometry.reference.strategies.strategy_buffer_point_circle">strategy::buffer::point_circle</link></member>
+ <member><link linkend="geometry.reference.strategies.strategy_buffer_point_square">strategy::buffer::point_square</link></member>
+ <member><link linkend="geometry.reference.strategies.strategy_buffer_side_straight">strategy::buffer::side_straight</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
<bridgehead renderas="sect3">Centroid</bridgehead>
<simplelist type="vert" columns="1">
<member><link linkend="geometry.reference.strategies.strategy_centroid_bashein_detmer">strategy::centroid::bashein_detmer</link></member>
@@ -513,23 +540,23 @@
</row>
<row>
<entry valign="top">
+ <bridgehead renderas="sect3">Convex Hull</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.strategies.strategy_convex_hull_graham_andrew">strategy::convex_hull::graham_andrew</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
<bridgehead renderas="sect3">Distance</bridgehead>
<simplelist type="vert" columns="1">
<member><link linkend="geometry.reference.strategies.strategy_distance_projected_point">strategy::distance::projected_point</link></member>
<member><link linkend="geometry.reference.strategies.strategy_distance_pythagoras">strategy::distance::pythagoras</link></member>
+ <member><link linkend="geometry.reference.strategies.strategy_distance_pythagoras_box_box">strategy::distance::pythagoras_box_box</link></member>
+ <member><link linkend="geometry.reference.strategies.strategy_distance_pythagoras_point_box">strategy::distance::pythagoras_point_box</link></member>
<member><link linkend="geometry.reference.strategies.strategy_distance_cross_track">strategy::distance::cross_track</link></member>
<member><link linkend="geometry.reference.strategies.strategy_distance_haversine">strategy::distance::haversine</link></member>
</simplelist>
</entry>
<entry valign="top">
- <bridgehead renderas="sect3">Convex Hull</bridgehead>
- <simplelist type="vert" columns="1">
- <member><link linkend="geometry.reference.strategies.strategy_convex_hull_graham_andrew">strategy::convex_hull::graham_andrew</link></member>
- </simplelist>
- </entry>
- </row>
- <row>
- <entry valign="top">
<bridgehead renderas="sect3">Side</bridgehead>
<simplelist type="vert" columns="1">
<member><link linkend="geometry.reference.strategies.strategy_side_side_by_triangle">strategy::side::side_by_triangle</link></member>
@@ -537,14 +564,14 @@
<member><link linkend="geometry.reference.strategies.strategy_side_spherical_side_formula">strategy::side::spherical_side_formula</link></member>
</simplelist>
</entry>
+ </row>
+ <row>
<entry valign="top">
<bridgehead renderas="sect3">Simplify</bridgehead>
<simplelist type="vert" columns="1">
<member><link linkend="geometry.reference.strategies.strategy_simplify_douglas_peucker">strategy::simplify::douglas_peucker</link></member>
</simplelist>
</entry>
- </row>
- <row>
<entry valign="top">
<bridgehead renderas="sect3">Transform</bridgehead>
<simplelist type="vert" columns="1">
@@ -625,4 +652,164 @@
</tbody>
</tgroup>
+<!-- ###### IO ########################################################################### -->
+<tgroup cols="2">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="b">
+ <bridgehead renderas="sect2">IO</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">WKT (Well-Known Text)</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.io.wkt.read_wkt">read_wkt</link></member>
+ <member><link linkend="geometry.reference.io.wkt.wkt">wkt</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">SVG (Scalable Vector Graphics)</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.io.svg.svg">svg</link></member>
+ <member><link linkend="geometry.reference.io.svg.svg_mapper">svg_mapper</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+</tgroup>
+
+<!-- ###### SPATIAL INDEXES ######################################################################### -->
+<tgroup cols="3">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="c">
+ <bridgehead renderas="sect2">Spatial indexes</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">R-tree</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree">boost::geometry::index::rtree</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">R-tree parameters</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.spatial_indexes.parameters.boost__geometry__index__linear">boost::geometry::index::linear</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.parameters.boost__geometry__index__quadratic">boost::geometry::index::quadratic</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.parameters.boost__geometry__index__rstar">boost::geometry::index::rstar</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_linear">boost::geometry::index::dynamic_linear</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_quadratic">boost::geometry::index::dynamic_quadratic</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.parameters.boost__geometry__index__dynamic_rstar">boost::geometry::index::dynamic_rstar</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">R-tree constructors and destructor</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree__">rtree()</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_parameters_type_const____indexable_getter_const____value_equal_const____allocator_type_const___">rtree(parameters_type const &amp;, indexable_getter const &amp;, value_equal const &amp;, allocator_type const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_iterator__iterator_">rtree(Iterator, Iterator)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_range_const___">rtree(Range const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const___">rtree(rtree const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_const____allocator_type_const___">rtree(rtree const &amp;, allocator_type const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree____">rtree(rtree &amp;&amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.rtree_rtree_____allocator_type_const___">rtree(rtree &amp;&amp;, allocator_type const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree._rtree__">~rtree()</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">R-tree member functions</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree_const___">operator=(const rtree &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.operator__rtree____">operator=(rtree &amp;&amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.swap_rtree___">swap(rtree &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_value_type_const___">insert(value_type const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_iterator__iterator_">insert(Iterator, Iterator)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.insert_convertibleorrange_const___">insert(ConvertibleOrRange const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_value_type_const___">remove(value_type const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_iterator__iterator_">remove(Iterator, Iterator)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.remove_convertibleorrange_const___">remove(ConvertibleOrRange const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.query_predicates_const____outiter_">query(Predicates const &amp;, OutIter)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qbegin_predicates_const___">qbegin(Predicates const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.qend__">qend()</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.size__">size()</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.empty__">empty()</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.clear__">clear()</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.bounds__">bounds()</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.count_valueorindexable_const___">count(ValueOrIndexable const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.parameters__">parameters()</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.indexable_get__">indexable_get()</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.value_eq__">value_eq()</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.boost__geometry__index__rtree.get_allocator__">get_allocator()</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">R-tree free functions (boost::geometry::index::)</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________value_const___">insert(rtree&lt;...&gt; &amp;, Value const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________iterator__iterator_">insert(rtree&lt;...&gt; &amp;, Iterator, Iterator)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.insert_rtree_________convertibleorrange_const___">insert(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________value_const___">remove(rtree&lt;...&gt; &amp;, Value const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________iterator__iterator_">remove(rtree&lt;...&gt; &amp;, Iterator, Iterator)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.remove_rtree_________convertibleorrange_const___">remove(rtree&lt;...&gt; &amp;, ConvertibleOrRange const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.query_rtree______const____predicates_const____outiter_">query(rtree&lt;...&gt; const &amp;, Predicates const &amp;, OutIter)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.qbegin_rtree______const____predicates_const___">qbegin(rtree&lt;...&gt; const &amp;, Predicates const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.qend_rtree______const___">qend(rtree&lt;...&gt; const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.clear_rtree________">clear(rtree&lt;...&gt; &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.size_rtree______const___">size(rtree&lt;...&gt; const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.empty_rtree______const___">empty(rtree&lt;...&gt; const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.bounds_rtree______const___">bounds(rtree&lt;...&gt; const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__rtree__functions.swap_rtree_________rtree________">swap(rtree&lt;...&gt; &amp;, rtree&lt;...&gt; &amp;)</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Observers (boost::geometry::index::)</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.spatial_indexes.observers.boost__geometry__index__indexable">boost::geometry::index::indexable</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.observers.boost__geometry__index__equal_to">boost::geometry::index::equal_to</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Inserters (boost::geometry::index::)</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.spatial_indexes.group__inserters.inserter_container___">inserter(Container &amp;)</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Adaptors (boost::geometry::index::adaptors::)</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.spatial_indexes.group__adaptors.queried_predicates_const___">queried(Predicates const &amp;)</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Predicates (boost::geometry::index::)</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.spatial_indexes.group__predicates.contains_geometry_const___">contains(Geometry const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__predicates.covered_by_geometry_const___">covered_by(Geometry const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__predicates.covers_geometry_const___">covers(Geometry const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__predicates.disjoint_geometry_const___">disjoint(Geometry const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__predicates.intersects_geometry_const___">intersects(Geometry const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__predicates.overlaps_geometry_const___">overlaps(Geometry const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__predicates.within_geometry_const___">within(Geometry const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__predicates.satisfies_unarypredicate_const___">satisfies(UnaryPredicate const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__predicates.nearest_geometry_const____unsigned_">nearest(Geometry const &amp;, unsigned)</link></member>
+ </simplelist>
+ </entry>
+ <!--entry valign="top">
+ <bridgehead renderas="sect3">Nearest relations (boost::geometry::index::)</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="geometry.reference.spatial_indexes.group__nearest__relations.to_nearest_t_const___">to_nearest(T const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__nearest__relations.to_centroid_t_const___">to_centroid(T const &amp;)</link></member>
+ <member><link linkend="geometry.reference.spatial_indexes.group__nearest__relations.to_furthest_t_const___">to_furthest(T const &amp;) </link></member>
+ </simplelist>
+ </entry-->
+ </row>
+ </tbody>
+</tgroup>
+
</informaltable>
diff --git a/libs/geometry/doc/readme.txt b/libs/geometry/doc/readme.txt
index f1d17d1523..3d04faf18c 100644
--- a/libs/geometry/doc/readme.txt
+++ b/libs/geometry/doc/readme.txt
@@ -15,9 +15,10 @@ and that it translates from Doxygen-XML output to Quickbook (without xslt)
1) install Doxygen
2) install QuickBook using http://www.boost.org/doc/libs/1_45_0/doc/html/quickbook/install.html#quickbook.install.linux
-3) compile doxygen_xml2qbk, in src/docutils/tools/doxygen_xml2qbk
-4) put binary somewhere, e.g. in /usr/local/bin/doxygen_xml2qbk
-5) execute python file "make_qbk.py" (calling doxygen, doxygen_xml2qbk, bjam)
+3) unpack RapidXML, see src/docutils/tools/doxygen_xml2qbk/contrib/readme.txt
+4) compile doxygen_xml2qbk, in src/docutils/tools/doxygen_xml2qbk
+5) put binary somewhere, e.g. in /usr/local/bin/doxygen_xml2qbk
+6) execute python file "make_qbk.py" (calling doxygen, doxygen_xml2qbk, bjam)
Folders in this folder:
concept: manually written documentation QBK files, on concept
diff --git a/libs/geometry/doc/reference.qbk b/libs/geometry/doc/reference.qbk
index a9a2192b94..40c51b5db9 100644
--- a/libs/geometry/doc/reference.qbk
+++ b/libs/geometry/doc/reference.qbk
@@ -1,9 +1,15 @@
[/============================================================================
Boost.Geometry (aka GGL, Generic Geometry Library)
- Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
- Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
- Copyright (c) 2009-2012 Bruno Lalande, Paris, France.
+ Copyright (c) 2009-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Copyright (c) 2009-2014 Bruno Lalande, Paris, France.
+ Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland.
+
+ This file was modified by Oracle on 2014.
+ Modifications copyright (c) 2014, Oracle and/or its affiliates.
+
+ Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -88,6 +94,8 @@
[include generated/covered_by.qbk]
[endsect]
+[include generated/crosses.qbk]
+
[include generated/difference.qbk]
[include generated/disjoint.qbk]
@@ -114,6 +122,9 @@
[include generated/intersects.qbk]
[endsect]
+[include generated/is_simple.qbk]
+[include generated/is_valid.qbk]
+
[section:length length]
[include generated/length.qbk]
[endsect]
@@ -218,6 +229,18 @@
[endsect]
+[section:io IO (input/output)]
+[section:wkt WKT (Well-Known Text)]
+[include reference/io/wkt_format.qbk]
+[include generated/wkt.qbk]
+[endsect]
+[section:svg SVG (Scalable Vector Graphics)]
+[include generated/svg.qbk]
+[include generated/svg_mapper.qbk]
+[endsect]
+[endsect]
+
+
[section:iterators Iterators]
[include generated/closing_iterator.qbk]
[include generated/circular_iterator.qbk]
@@ -241,13 +264,52 @@
[endsect]
+[section:spatial_indexes Spatial Indexes]
+
+[/section:rtree R-tree]
+[include index/generated/rtree.qbk]
+[include index/generated/rtree_functions.qbk]
+[section:parameters R-tree parameters (boost::geometry::index::)]
+[include index/generated/rtree_linear.qbk]
+[include index/generated/rtree_quadratic.qbk]
+[include index/generated/rtree_rstar.qbk]
+[include index/generated/rtree_dynamic_linear.qbk]
+[include index/generated/rtree_dynamic_quadratic.qbk]
+[include index/generated/rtree_dynamic_rstar.qbk]
+[endsect]
+[/endsect]
+
+[section:observers Observers (boost::geometry::index::)]
+[include index/generated/indexable.qbk]
+[include index/generated/equal_to.qbk]
+[endsect]
+[include index/generated/inserters.qbk]
+[include index/generated/adaptors.qbk]
+
+[include index/generated/predicates.qbk]
+[/include index/generated/nearest_relations.qbk]
+
+[endsect]
+
+
[section:strategies Strategies]
[include generated/distance_pythagoras.qbk]
+[include generated/distance_pythagoras_box_box.qbk]
+[include generated/distance_pythagoras_point_box.qbk]
[include generated/distance_haversine.qbk]
[include generated/distance_projected_point.qbk]
[include generated/distance_cross_track.qbk]
[include generated/area_surveyor.qbk]
[include generated/area_huiller.qbk]
+[include generated/buffer_join_round.qbk]
+[include generated/buffer_join_miter.qbk]
+[include generated/buffer_end_round.qbk]
+[include generated/buffer_end_flat.qbk]
+[include generated/buffer_distance_symmetric.qbk]
+[include generated/buffer_distance_asymmetric.qbk]
+[include generated/buffer_point_circle.qbk]
+[include generated/buffer_point_square.qbk]
+[include generated/buffer_side_straight.qbk]
[include generated/centroid_average.qbk]
[include generated/centroid_bashein_detmer.qbk]
[include generated/convex_hull_graham_andrew.qbk]
diff --git a/libs/geometry/doc/reference/algorithms/append.qbk b/libs/geometry/doc/reference/algorithms/append.qbk
index 3582dfbf44..22dbb561ae 100644
--- a/libs/geometry/doc/reference/algorithms/append.qbk
+++ b/libs/geometry/doc/reference/algorithms/append.qbk
@@ -1,9 +1,14 @@
[/============================================================================
Boost.Geometry (aka GGL, Generic Geometry Library)
- Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
- Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
- Copyright (c) 2009-2012 Bruno Lalande, Paris, France.
+ Copyright (c) 2009-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Copyright (c) 2009-2014 Bruno Lalande, Paris, France.
+
+ This file was modified by Oracle on 2014.
+ Modifications copyright (c) 2014, Oracle and/or its affiliates.
+
+ Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -14,7 +19,7 @@
[heading_conformance_no_ogc __this_function__]
-[include generated/append_status.qbk]
+[include reference/status/append_status.qbk]
[heading Behavior]
[table
@@ -26,6 +31,22 @@
either the exterior ring (the default) or specify a zero-based index for one of the interior rings.
In the last case, the interior rings are not resized automatically,
so ensure that the zero-based index is smaller than the number of interior rings]]
+[[__multi_linestring__][Appends point or range to the end of the
+ linestring with the given multi index.
+ The multi-linestring is not resized automatically, so ensure
+ that the multi index is smaller than then number of linestring
+ in the multi-linestring.]]
+[[__multi_polygon__][Appends point or range to the end of the polygon
+ (without explicitly closing it) with the given multi-index.
+ The point or range is appended at the end of the
+ exterior ring (the default) or specify a zero-based ring index for
+ the interior rings.
+ The multi-polygon is not resized automatically, so ensure
+ that the multi index is smaller than then number of polygon
+ in the multi-polygon. The same applies for the interior rings
+ of the polygon: the interior rings are not resized
+ automatically, so ensure that the zero-based ring index is
+ smaller than the number of interior rings of the polygon.]]
]
[heading Complexity]
diff --git a/libs/geometry/doc/reference/algorithms/area.qbk b/libs/geometry/doc/reference/algorithms/area.qbk
index e459ee5da5..f2e7355bf2 100644
--- a/libs/geometry/doc/reference/algorithms/area.qbk
+++ b/libs/geometry/doc/reference/algorithms/area.qbk
@@ -25,7 +25,7 @@
[[__rev__][[qbk_ret the negative area]]]
]
-[include generated/area_status.qbk]
+[include reference/status/area_status.qbk]
[heading Complexity]
Linear
diff --git a/libs/geometry/doc/reference/algorithms/buffer_with_strategies.qbk b/libs/geometry/doc/reference/algorithms/buffer_with_strategies.qbk
new file mode 100644
index 0000000000..5fb86a972c
--- /dev/null
+++ b/libs/geometry/doc/reference/algorithms/buffer_with_strategies.qbk
@@ -0,0 +1,70 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2014 Barend Gehrels, 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)
+=============================================================================/]
+
+[def __this_function__ buffer]
+
+[heading Strategies]
+The 5 strategies give the user control to the generated buffer
+
+* convex corners can be rounded or sharp
+* line-ends can be rounded or flat
+* distance can be symmetric or assymetric, and can be specified as negative (deflate)
+* around points the shape can be circular or square
+* the sides can be controlled (currently there is only one option provided)
+
+The next figure shows where in the generated buffer the strategies have effect
+
+[$img/algorithms/buffer_strategies.png]
+
+[heading_conformance_ogc __this_function__..Buffer]
+It is conformant if used with the following combination of strategies:
+[link geometry.reference.strategies.strategy_buffer_join_round join_round],
+[link geometry.reference.strategies.strategy_buffer_end_round end_round],
+[link geometry.reference.strategies.strategy_buffer_distance_symmetric distance_symmetric],
+[link geometry.reference.strategies.strategy_buffer_point_circle point_circle],
+side_straight
+
+[heading Supported geometries]
+[table
+[[ ][2D Cartesian]]
+[[Point][[$img/ok.png]]]
+[[Segment][[$img/nyi.png]]]
+[[Box][[$img/nyi.png]]]
+[[Linestring][[$img/ok.png]]]
+[[Ring][[$img/ok.png]]]
+[[Polygon][[$img/ok.png]]]
+[[MultiPoint][[$img/ok.png]]]
+[[MultiLinestring][[$img/ok.png]]]
+[[MultiPolygon][[$img/ok.png]]]
+]
+
+
+[heading Examples]
+[buffer_with_strategies]
+
+[heading The linestring case]
+[$img/algorithms/buffer_linestring.png]
+
+[heading The multi_point case]
+[$img/algorithms/buffer_multi_point.png]
+
+[heading The multi_polygon case]
+[$img/algorithms/buffer_multi_polygon.png]
+
+[heading Available Strategies]
+* JoinStrategy: [link geometry.reference.strategies.strategy_buffer_join_round join_round (cartesian)]
+* JoinStrategy: [link geometry.reference.strategies.strategy_buffer_join_miter join_miter (cartesian)]
+* EndStrategy: [link geometry.reference.strategies.strategy_buffer_end_round end_round (cartesian)]
+* EndStrategy: [link geometry.reference.strategies.strategy_buffer_end_flat end_flat (cartesian)]
+* DistanceStrategy: [link geometry.reference.strategies.strategy_buffer_distance_symmetric distance_symmetric]
+* DistanceStrategy: [link geometry.reference.strategies.strategy_buffer_distance_asymmetric distance_asymmetric]
+* PointStrategy: [link geometry.reference.strategies.strategy_buffer_point_circle point_circle (cartesian)]
+* PointStrategy: [link geometry.reference.strategies.strategy_buffer_point_square point_square (cartesian)]
+* SideStrategy: [link geometry.reference.strategies.strategy_buffer_side_straight side_straight (cartesian)]
diff --git a/libs/geometry/doc/reference/algorithms/centroid.qbk b/libs/geometry/doc/reference/algorithms/centroid.qbk
index 12152cb46f..4399c4e7e4 100644
--- a/libs/geometry/doc/reference/algorithms/centroid.qbk
+++ b/libs/geometry/doc/reference/algorithms/centroid.qbk
@@ -26,6 +26,7 @@
[[__sph__][Calculates the centroid as if based on Cartesian coordinates]]
]
+[/ TODO: change by status /]
[heading Supported geometries]
[table
[[ ][2D][3D]]
diff --git a/libs/geometry/doc/reference/algorithms/clear.qbk b/libs/geometry/doc/reference/algorithms/clear.qbk
index 969d6df84f..689fa3b4d8 100644
--- a/libs/geometry/doc/reference/algorithms/clear.qbk
+++ b/libs/geometry/doc/reference/algorithms/clear.qbk
@@ -16,7 +16,7 @@
[heading_conformance_no_ogc __this_function__]
[conformance_std __this_function__..__this_function__() method]
-[include generated/clear_status.qbk]
+[include reference/status/clear_status.qbk]
[heading Behavior]
[table
diff --git a/libs/geometry/doc/reference/algorithms/comparable_distance.qbk b/libs/geometry/doc/reference/algorithms/comparable_distance.qbk
index 99a6b372d5..1ce9be3ecd 100644
--- a/libs/geometry/doc/reference/algorithms/comparable_distance.qbk
+++ b/libs/geometry/doc/reference/algorithms/comparable_distance.qbk
@@ -15,14 +15,18 @@
[heading_conformance_no_ogc __this_function__]
[heading Behaviour]
-There is no (not yet) version with a strategy.
-
It depends on the coordinate system of the geometry's point type if there is
a strategy available which can determine (more efficient than the standard
strategy) a measure of comparable distance.
+[include reference/status/distance_status.qbk]
+
[heading Complexity]
-Linear
+For point to geometry: linear
+
+For multi-point to ring/polygon/multi-polygon: currently quadratic
+
+For all other geometry combinations: linearithmic
[heading Example]
[comparable_distance]
diff --git a/libs/geometry/doc/reference/algorithms/convert.qbk b/libs/geometry/doc/reference/algorithms/convert.qbk
index f5704cc0fe..2303462048 100644
--- a/libs/geometry/doc/reference/algorithms/convert.qbk
+++ b/libs/geometry/doc/reference/algorithms/convert.qbk
@@ -14,7 +14,7 @@
[heading_conformance_no_ogc __this_function__]
-[include generated/convert_status.qbk]
+[include reference/status/convert_status.qbk]
[note In this status matrix above: columns are source types
and rows are target types. So a box can be converted to a ring, polygon
or multi-polygon, but not vice versa.]
diff --git a/libs/geometry/doc/reference/algorithms/convex_hull.qbk b/libs/geometry/doc/reference/algorithms/convex_hull.qbk
index 492c99a5a2..d56a0579f9 100644
--- a/libs/geometry/doc/reference/algorithms/convex_hull.qbk
+++ b/libs/geometry/doc/reference/algorithms/convex_hull.qbk
@@ -14,10 +14,10 @@
[heading_conformance_ogc __this_function__..ConvexHull()]
-[include generated/convex_hull_status.qbk]
+[include reference/status/convex_hull_status.qbk]
[heading Complexity]
-Logarithmic
+Linearithmic
[heading Example]
[convex_hull]
diff --git a/libs/geometry/doc/reference/algorithms/correct.qbk b/libs/geometry/doc/reference/algorithms/correct.qbk
index cb3f6d9027..d9e2c5335f 100644
--- a/libs/geometry/doc/reference/algorithms/correct.qbk
+++ b/libs/geometry/doc/reference/algorithms/correct.qbk
@@ -15,7 +15,7 @@
[heading_conformance_no_ogc __this_function__]
-[include generated/correct_status.qbk]
+[include reference/status/correct_status.qbk]
[heading Behavior]
[table
diff --git a/libs/geometry/doc/reference/algorithms/covered_by.qbk b/libs/geometry/doc/reference/algorithms/covered_by.qbk
index 0fb187f092..d1462c3a28 100644
--- a/libs/geometry/doc/reference/algorithms/covered_by.qbk
+++ b/libs/geometry/doc/reference/algorithms/covered_by.qbk
@@ -18,7 +18,7 @@
See the [@http://www.postgis.org/docs/ST_CoveredBy.html PostGIS documentation].
]
-[include generated/covered_by_status.qbk]
+[include reference/status/covered_by_status.qbk]
[note In this status matrix above: columns are types of first parameter
and rows are types of second parameter. So a point can be checked to be
covered by a polygon, but not vice versa.
@@ -32,4 +32,4 @@ Linear
[note The difference with the `within` algorithm is that this algorithm checks the
border by default
-] \ No newline at end of file
+]
diff --git a/libs/geometry/doc/reference/algorithms/crosses.qbk b/libs/geometry/doc/reference/algorithms/crosses.qbk
new file mode 100644
index 0000000000..9a33ce85fb
--- /dev/null
+++ b/libs/geometry/doc/reference/algorithms/crosses.qbk
@@ -0,0 +1,22 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+ Copyright (c) 2009-2012 Bruno Lalande, Paris, France.
+
+ This file was modified by Oracle on 2014.
+ Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+ 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)
+
+ Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+=============================================================================/]
+
+[def __this_function__ crosses]
+
+[heading_conformance_ogc __this_function__..Crosses]
+
+[include reference/status/crosses_status.qbk]
diff --git a/libs/geometry/doc/reference/algorithms/difference_behavior.qbk b/libs/geometry/doc/reference/algorithms/difference_behavior.qbk
index 0044026c83..25c20b66c9 100644
--- a/libs/geometry/doc/reference/algorithms/difference_behavior.qbk
+++ b/libs/geometry/doc/reference/algorithms/difference_behavior.qbk
@@ -1,7 +1,12 @@
[/============================================================================
Boost.Geometry (aka GGL, Generic Geometry Library)
- Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2011-2014 Barend Gehrels, Amsterdam, the Netherlands.
+
+ This file was modified by Oracle on 2014.
+ Modifications copyright (c) 2014, Oracle and/or its affiliates.
+
+ Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -14,6 +19,8 @@
[[__2dim__][All combinations of: box, ring, polygon, multi_polygon]]
[[__1dim__ / __2dim__][A combinations of a (multi) linestring with a (multi) polygon
results in a collection of linestrings]]
+[[__1dim__][All combinations of: linestring, multi_linestring; results in a collection of linestrings]]
+[[__0dim__][All combinations of: point, multi_point; results in a collection of points]]
[[__other__][__nyiversion__]]
[[__sph__][__nyiversion__]]
[[Three dimensional][__nyiversion__]]
diff --git a/libs/geometry/doc/reference/algorithms/disjoint.qbk b/libs/geometry/doc/reference/algorithms/disjoint.qbk
index 6f5c8ef494..0d0ec96eae 100644
--- a/libs/geometry/doc/reference/algorithms/disjoint.qbk
+++ b/libs/geometry/doc/reference/algorithms/disjoint.qbk
@@ -13,3 +13,4 @@
[def __this_function__ disjoint]
[heading_conformance_ogc __this_function__..Disjoint]
+[include reference/status/disjoint_status.qbk]
diff --git a/libs/geometry/doc/reference/algorithms/distance.qbk b/libs/geometry/doc/reference/algorithms/distance.qbk
index d9c448cfe3..4a3044b327 100644
--- a/libs/geometry/doc/reference/algorithms/distance.qbk
+++ b/libs/geometry/doc/reference/algorithms/distance.qbk
@@ -14,12 +14,14 @@
[heading_conformance_ogc __this_function__..Distance]
-[include generated/distance_status.qbk]
+[include reference/status/distance_status.qbk]
[heading Complexity]
-Linear
+For point to geometry: linear
-For multi-geometry to multi-geometry: currently quadratic
+For multi-point to ring/polygon/multi-polygon: currently quadratic
+
+For all other geometry combinations: linearithmic
[heading Example]
[distance]
diff --git a/libs/geometry/doc/reference/algorithms/equals.qbk b/libs/geometry/doc/reference/algorithms/equals.qbk
index b0159a90a7..6021962e5e 100644
--- a/libs/geometry/doc/reference/algorithms/equals.qbk
+++ b/libs/geometry/doc/reference/algorithms/equals.qbk
@@ -14,7 +14,7 @@
[heading_conformance_ogc __this_function__..Equals]
-[include generated/equals_status.qbk]
+[include reference/status/equals_status.qbk]
[heading Complexity]
Linear
diff --git a/libs/geometry/doc/reference/algorithms/intersection.qbk b/libs/geometry/doc/reference/algorithms/intersection.qbk
index a4d2c9fbf2..ebcea35973 100644
--- a/libs/geometry/doc/reference/algorithms/intersection.qbk
+++ b/libs/geometry/doc/reference/algorithms/intersection.qbk
@@ -1,9 +1,14 @@
[/============================================================================
Boost.Geometry (aka GGL, Generic Geometry Library)
- Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
- Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
- Copyright (c) 2009-2012 Bruno Lalande, Paris, France.
+ Copyright (c) 2009-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Copyright (c) 2009-2014 Bruno Lalande, Paris, France.
+
+ This file was modified by Oracle on 2014.
+ Modifications copyright (c) 2014, Oracle and/or its affiliates.
+
+ Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -18,7 +23,7 @@
[table
[[Case] [Behavior] ]
[[[qbk_out __point__]][Calculates intersection points of input geometries]]
-[[[qbk_out __linestring__]][Calculates intersection linestrings of input geometries (NYI)]]
+[[[qbk_out __linestring__]][Calculates intersection linestrings of input (multi)linestrings]]
[[[qbk_out __polygon__]][Calculates intersection polygons of input (multi)polygons and/or boxes]]
]
diff --git a/libs/geometry/doc/reference/algorithms/intersects.qbk b/libs/geometry/doc/reference/algorithms/intersects.qbk
index 49aea23223..7be7934adf 100644
--- a/libs/geometry/doc/reference/algorithms/intersects.qbk
+++ b/libs/geometry/doc/reference/algorithms/intersects.qbk
@@ -15,6 +15,9 @@
[heading_conformance_ogc __this_function__..Intersects]
[? __one_parameter__ The version with one parameter is additional and not described in the OGC standard]
+[/ uncomment if this file is splitted into one/two parameter versions /]
+[/ include reference/status/intersects_status.qbk /]
+
[heading Examples]
[intersects_linestring]
[intersects_linestring_output]
diff --git a/libs/geometry/doc/reference/algorithms/is_simple.qbk b/libs/geometry/doc/reference/algorithms/is_simple.qbk
new file mode 100644
index 0000000000..a9f1b96bf4
--- /dev/null
+++ b/libs/geometry/doc/reference/algorithms/is_simple.qbk
@@ -0,0 +1,30 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2014, Oracle and/or its affiliates.
+
+ Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+ Licensed under the Boost Software License version 1.0.
+ http://www.boost.org/users/license.html
+=============================================================================/]
+
+[def __this_function__ is_simple]
+
+[heading_conformance_ogc __this_function__..IsSimple]
+
+[include reference/status/is_simple_status.qbk]
+
+[heading Complexity]
+Constant-time for points, segments and boxes
+
+Linear for rings, polygons and multi-polygons
+
+Linearithmic for multi-points, linestrings and multi-linestrings
+
+[heading Example]
+[is_simple]
+[is_simple_output]
+
+[heading See also]
+* [link geometry.reference.algorithms.is_valid is_valid]
diff --git a/libs/geometry/doc/reference/algorithms/is_valid.qbk b/libs/geometry/doc/reference/algorithms/is_valid.qbk
new file mode 100644
index 0000000000..802224d67f
--- /dev/null
+++ b/libs/geometry/doc/reference/algorithms/is_valid.qbk
@@ -0,0 +1,32 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2014, Oracle and/or its affiliates.
+
+ Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+ Licensed under the Boost Software License version 1.0.
+ http://www.boost.org/users/license.html
+=============================================================================/]
+
+[def __this_function__ is_valid]
+
+[heading_conformance_no_ogc __this_function__]
+
+[include reference/status/is_valid_status.qbk]
+
+[heading Complexity]
+Constant-time for points, segments, boxes and multi-points
+
+Linear for linestrings and multi-linestrings
+
+Linearithmic for rings
+
+Currently, worst-case quadratic for polygons and multi-polygons
+
+[heading Example]
+[is_valid]
+[is_valid_output]
+
+[heading See also]
+* [link geometry.reference.algorithms.is_simple is_simple]
diff --git a/libs/geometry/doc/reference/algorithms/num_points.qbk b/libs/geometry/doc/reference/algorithms/num_points.qbk
index b59ea1b09e..5cdee48a20 100644
--- a/libs/geometry/doc/reference/algorithms/num_points.qbk
+++ b/libs/geometry/doc/reference/algorithms/num_points.qbk
@@ -21,7 +21,7 @@
[[Case] [Behavior] ]
[[__point__][[qbk_ret 1]]]
[[__segment__][[qbk_ret 2]]]
-[[__box__][[qbk_ret 4]]]
+[[__box__][[qbk_ret 2^d, where d is the dimension of the box]]]
[[__range__][[qbk_ret boost::size(geometry)]]]
[[__other__][[qbk_ret the sum of the number of points of its elements]]]
[[Open geometries][[qbk_ret the sum of the number of points of its elements, it adds one for open (per ring) if specified]]]
diff --git a/libs/geometry/doc/reference/algorithms/num_segments.qbk b/libs/geometry/doc/reference/algorithms/num_segments.qbk
new file mode 100644
index 0000000000..773107b8f6
--- /dev/null
+++ b/libs/geometry/doc/reference/algorithms/num_segments.qbk
@@ -0,0 +1,32 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2014, Oracle and/or its affiliates.
+
+ Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+ Licensed under the Boost Software License version 1.0.
+ http://www.boost.org/users/license.html
+=============================================================================/]
+
+[def __this_function__ num_segments]
+
+[heading_conformance_no_ogc __this_function__]
+
+[heading Behavior]
+[table
+[[Case] [Behavior] ]
+[[__0dim__][[qbk_ret 0]]]
+[[__segment__][[qbk_ret 1]]]
+[[__box__][[qbk_ret d * 2^(d-1), where d is the dimension of the box]]]
+[[__range__][[qbk_ret boost::size(geometry) - 1]]]
+[[__other__][[qbk_ret the sum of the number of segments of its elements]]]
+]
+
+
+[heading Complexity]
+Constant or Linear
+
+[heading Examples]
+[num_segments]
+[num_segments_output]
diff --git a/libs/geometry/doc/reference/algorithms/overlaps.qbk b/libs/geometry/doc/reference/algorithms/overlaps.qbk
index 9f1a75265c..94d509db6b 100644
--- a/libs/geometry/doc/reference/algorithms/overlaps.qbk
+++ b/libs/geometry/doc/reference/algorithms/overlaps.qbk
@@ -13,3 +13,4 @@
[def __this_function__ overlaps]
[heading_conformance_ogc __this_function__..Overlaps]
+[include reference/status/overlaps_status.qbk]
diff --git a/libs/geometry/doc/reference/algorithms/touches.qbk b/libs/geometry/doc/reference/algorithms/touches.qbk
index 56e502c932..9271e4c4f7 100644
--- a/libs/geometry/doc/reference/algorithms/touches.qbk
+++ b/libs/geometry/doc/reference/algorithms/touches.qbk
@@ -15,5 +15,5 @@
[heading_conformance_ogc __this_function__..Touches]
[? __one_parameter__ The version with one parameter is additional and not described in the OGC standard]
-[note only implemented for polygon/multi_polygon]
+[note Implemented for Point/Linestring/MultiLinestring/Polygon/MultiPolygon.]
diff --git a/libs/geometry/doc/reference/algorithms/union.qbk b/libs/geometry/doc/reference/algorithms/union.qbk
index 0a7a1099a8..e105d44b68 100644
--- a/libs/geometry/doc/reference/algorithms/union.qbk
+++ b/libs/geometry/doc/reference/algorithms/union.qbk
@@ -1,9 +1,14 @@
[/============================================================================
Boost.Geometry (aka GGL, Generic Geometry Library)
- Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
- Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
- Copyright (c) 2009-2012 Bruno Lalande, Paris, France.
+ Copyright (c) 2009-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Copyright (c) 2009-2014 Bruno Lalande, Paris, France.
+
+ This file was modified by Oracle on 2014.
+ Modifications copyright (c) 2014, Oracle and/or its affiliates.
+
+ Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -18,6 +23,8 @@
[heading Behavior]
[table
[[Case] [Behavior] ]
+[[[qbk_out __point__]][Calculates union linestrings of input (multi)points]]
+[[[qbk_out __linestring__]][Calculates union linestrings of input (multi)linestrings]]
[[[qbk_out __polygon__]][Calculates union polygons of input (multi)polygons and/or boxes]]
]
diff --git a/libs/geometry/doc/reference/algorithms/within.qbk b/libs/geometry/doc/reference/algorithms/within.qbk
index db63e07e33..cd8eee5ee7 100644
--- a/libs/geometry/doc/reference/algorithms/within.qbk
+++ b/libs/geometry/doc/reference/algorithms/within.qbk
@@ -15,7 +15,7 @@
[heading_conformance_ogc __this_function__..Within]
[note OGC defines within as completely within and not on the border. See the notes for within / on the border]
-[include generated/within_status.qbk]
+[include reference/status/within_status.qbk]
[note In this status matrix above: columns are types of first parameter
and rows are types of second parameter. So a point can be checked to be
within a polygon, but not vice versa.]
diff --git a/libs/geometry/doc/reference/core/max_corner.qbk b/libs/geometry/doc/reference/core/max_corner.qbk
index e3d69aaa0f..1d56590ec6 100644
--- a/libs/geometry/doc/reference/core/max_corner.qbk
+++ b/libs/geometry/doc/reference/core/max_corner.qbk
@@ -19,8 +19,8 @@ Indicates the maximal corner (upper right) of a box to be get, set or processed
[heading See also]
* [link geometry.reference.constants.min_corner min_corner]
-* [link geometry.reference.access.get.get_2_with_index get with index]
-* [link geometry.reference.access.set.set_3_with_index set with index]
+* [link geometry.reference.access.get.get_1_with_index get with index]
+* [link geometry.reference.access.set.set_2_with_index set with index]
[endsect]
diff --git a/libs/geometry/doc/reference/core/min_corner.qbk b/libs/geometry/doc/reference/core/min_corner.qbk
index 061412bd97..a169b04752 100644
--- a/libs/geometry/doc/reference/core/min_corner.qbk
+++ b/libs/geometry/doc/reference/core/min_corner.qbk
@@ -19,7 +19,7 @@ Indicates the minimal corner (lower left) of a box to be get, set or processed
[heading See also]
* [link geometry.reference.constants.max_corner max_corner]
-* [link geometry.reference.access.get.get_2_with_index get with index]
-* [link geometry.reference.access.set.set_3_with_index set with index]
+* [link geometry.reference.access.get.get_1_with_index get with index]
+* [link geometry.reference.access.set.set_2_with_index set with index]
[endsect]
diff --git a/libs/geometry/doc/reference/core/min_max_corner.qbk b/libs/geometry/doc/reference/core/min_max_corner.qbk
index 704197093d..7aefc84644 100644
--- a/libs/geometry/doc/reference/core/min_max_corner.qbk
+++ b/libs/geometry/doc/reference/core/min_max_corner.qbk
@@ -13,7 +13,7 @@
[heading Header]
Either
-`#include <boost/geometry/geometry.hpp>`
+`#include <boost/geometry.hpp>`
Or
diff --git a/libs/geometry/doc/reference/geometries/adapted/boost_polygon/point_data.qbk b/libs/geometry/doc/reference/geometries/adapted/boost_polygon/point_data.qbk
index ff013ed17c..edc3f1f190 100644
--- a/libs/geometry/doc/reference/geometries/adapted/boost_polygon/point_data.qbk
+++ b/libs/geometry/doc/reference/geometries/adapted/boost_polygon/point_data.qbk
@@ -1,9 +1,10 @@
[/============================================================================
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.
+ Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+ Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -29,8 +30,8 @@ algorithms from both Boost.Polygon and Boost.Geometry can be called.
__not_in_boost_geometry_hpp__
[heading Example]
-[boost_polygon]
-[boost_polygon_output]
+[boost_polygon_point]
+[boost_polygon_point_output]
[endsect]
diff --git a/libs/geometry/doc/reference/geometries/adapted/boost_polygon/polygon_data.qbk b/libs/geometry/doc/reference/geometries/adapted/boost_polygon/polygon_data.qbk
index e37628cb2d..23c419014b 100644
--- a/libs/geometry/doc/reference/geometries/adapted/boost_polygon/polygon_data.qbk
+++ b/libs/geometry/doc/reference/geometries/adapted/boost_polygon/polygon_data.qbk
@@ -1,9 +1,10 @@
[/============================================================================
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.
+ Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+ Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -17,7 +18,7 @@ Boost.Polygon's polygon type (boost::polygon::polygon_data) is adapted to the Bo
[heading Description]
Boost.Polygon's points (as well as polygons) can be used by Boost.Geometry. The
-two libraries can therefore be used together. Using a boost::polygon::point_data<...>,
+two libraries can therefore be used together. Using a boost::polygon::polygon_data<...>,
algorithms from both Boost.Polygon and Boost.Geometry can be called.
[heading Model of]
@@ -29,8 +30,8 @@ algorithms from both Boost.Polygon and Boost.Geometry can be called.
__not_in_boost_geometry_hpp__
[heading Example]
-[boost_polygon]
-[boost_polygon_output]
+[boost_polygon_ring]
+[boost_polygon_ring_output]
[endsect]
diff --git a/libs/geometry/doc/reference/geometries/adapted/boost_polygon/polygon_with_holes_data.qbk b/libs/geometry/doc/reference/geometries/adapted/boost_polygon/polygon_with_holes_data.qbk
index 52655a6f24..f9080cf20e 100644
--- a/libs/geometry/doc/reference/geometries/adapted/boost_polygon/polygon_with_holes_data.qbk
+++ b/libs/geometry/doc/reference/geometries/adapted/boost_polygon/polygon_with_holes_data.qbk
@@ -1,9 +1,10 @@
[/============================================================================
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.
+ Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+ Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -18,7 +19,7 @@ is adapted to the Boost.Geometry Polygon Concept.
[heading Description]
Boost.Polygon's points (as well as polygons) can be used by Boost.Geometry. The
-two libraries can therefore be used together. Using a boost::polygon::point_data<...>,
+two libraries can therefore be used together. Using a boost::polygon::polygon_with_holes_data<...>,
algorithms from both Boost.Polygon and Boost.Geometry can be called.
[heading Model of]
@@ -30,8 +31,8 @@ algorithms from both Boost.Polygon and Boost.Geometry can be called.
__not_in_boost_geometry_hpp__
[heading Example]
-[boost_polygon]
-[boost_polygon_output]
+[boost_polygon_polygon]
+[boost_polygon_polygon_output]
[endsect]
diff --git a/libs/geometry/doc/reference/geometries/adapted/boost_polygon/rectangle_data.qbk b/libs/geometry/doc/reference/geometries/adapted/boost_polygon/rectangle_data.qbk
index 48b80416d6..75b38e6b87 100644
--- a/libs/geometry/doc/reference/geometries/adapted/boost_polygon/rectangle_data.qbk
+++ b/libs/geometry/doc/reference/geometries/adapted/boost_polygon/rectangle_data.qbk
@@ -1,9 +1,10 @@
[/============================================================================
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.
+ Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+ Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+ Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -17,7 +18,7 @@ Boost.Polygon's rectangle type (boost::polygon::rectangle_data) is adapted to th
[heading Description]
Boost.Polygon's points (as well as polygons) can be used by Boost.Geometry. The
-two libraries can therefore be used together. Using a boost::polygon::point_data<...>,
+two libraries can therefore be used together. Using a boost::polygon::rectangle_data<...>,
algorithms from both Boost.Polygon and Boost.Geometry can be called.
[heading Model of]
@@ -29,8 +30,8 @@ algorithms from both Boost.Polygon and Boost.Geometry can be called.
__not_in_boost_geometry_hpp__
[heading Example]
-[boost_polygon]
-[boost_polygon_output]
+[boost_polygon_box]
+[boost_polygon_box_output]
[endsect]
diff --git a/libs/geometry/doc/reference/io/read_wkt.qbk b/libs/geometry/doc/reference/io/read_wkt.qbk
new file mode 100644
index 0000000000..8022d84742
--- /dev/null
+++ b/libs/geometry/doc/reference/io/read_wkt.qbk
@@ -0,0 +1,22 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2009-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+
+ 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)
+=============================================================================/]
+
+[heading Conformance]
+Other libraries refer to this functionality as [*ST_GeomFromText] or [*STGeomFromText].
+That is not done here because Boost.Geometry support more text formats. The name GeomFromText
+is reserved for future usage, which will then have an indication of the used text format.
+
+
+[heading Example]
+[read_wkt]
+
+[heading See also]
+* [link geometry.reference.io.wkt.wkt WKT streaming manipulator]
diff --git a/libs/geometry/doc/reference/io/svg.qbk b/libs/geometry/doc/reference/io/svg.qbk
new file mode 100644
index 0000000000..be76303d34
--- /dev/null
+++ b/libs/geometry/doc/reference/io/svg.qbk
@@ -0,0 +1,16 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2009-2012 Barend Gehrels, 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)
+=============================================================================/]
+
+[heading Example]
+[svg_mapper]
+[svg_mapper_output]
+
+[heading See also]
+* [link geometry.reference.io.svg.svg The SVG manipulator]
diff --git a/libs/geometry/doc/reference/io/wkt.qbk b/libs/geometry/doc/reference/io/wkt.qbk
new file mode 100644
index 0000000000..7c45a9f678
--- /dev/null
+++ b/libs/geometry/doc/reference/io/wkt.qbk
@@ -0,0 +1,22 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2009-2014 Barend Gehrels, 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)
+=============================================================================/]
+
+[def __this_function__ wkt]
+
+[heading_conformance_ogc __this_function__..AsText]
+[note __this_function__ is not named "AsText" or "as_text" because Boost.Geometry
+also supports other textformats (svg, dsv)]
+
+[heading Example]
+[wkt]
+[wkt_output]
+
+[heading See also]
+* [link geometry.reference.io.wkt.read_wkt Read WKT]
diff --git a/libs/geometry/doc/reference/io/wkt_format.qbk b/libs/geometry/doc/reference/io/wkt_format.qbk
new file mode 100644
index 0000000000..3c99fe8088
--- /dev/null
+++ b/libs/geometry/doc/reference/io/wkt_format.qbk
@@ -0,0 +1,29 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2009-2014 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+
+ 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)
+=============================================================================/]
+
+WKT is a general markup format in ASCII.
+It is described in detail on [@http://en.wikipedia.org/wiki/Well-known_text Wikipedia]
+
+Boost Geometry supports the common formats (POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON).
+
+Because Boost.Geometry also supports Box and Segment geometries, which are not standard OGC geometries, there are some extensions:
+
+[heading Box]
+* can be read from WKT by specifying either a polygon (with 4 points) or a specific BOX string (non OGC)
+* streamed to WKT as a POLYGON
+
+[heading Segment]
+* can be read from WKT by specifying either a linestring (with 2 points) or a specific SEGMENT string (non OGC)
+* streamed to WKT as a LINESTRING
+
+[heading Ring]
+* can be read from WKT by specifying a polygon (with no holes)
+* streamed to WKT as POLYGON
diff --git a/libs/geometry/doc/generated/append_status.qbk b/libs/geometry/doc/reference/status/append_status.qbk
index 51329f887d..ba69252021 100644
--- a/libs/geometry/doc/generated/append_status.qbk
+++ b/libs/geometry/doc/reference/status/append_status.qbk
@@ -1,4 +1,3 @@
-[/NOTE: adapted manually, multi-linestring/multi-polygon do compile but not run!]
[heading Supported geometries]
[table
[[ ][Point][Range]]
@@ -9,6 +8,6 @@
[[Ring][ [$img/ok.png] ][ [$img/ok.png] ]]
[[Polygon][ [$img/ok.png] ][ [$img/ok.png] ]]
[[MultiPoint][ [$img/ok.png] ][ [$img/ok.png] ]]
-[[MultiLinestring][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[MultiPolygon][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiLinestring][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ][ [$img/ok.png] ]]
]
diff --git a/libs/geometry/doc/reference/status/area_status.qbk b/libs/geometry/doc/reference/status/area_status.qbk
new file mode 100644
index 0000000000..edff68193f
--- /dev/null
+++ b/libs/geometry/doc/reference/status/area_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/generated/covered_by_status.qbk b/libs/geometry/doc/reference/status/buffer_status.qbk
index 2843670d56..6caf4c90c3 100644
--- a/libs/geometry/doc/generated/covered_by_status.qbk
+++ b/libs/geometry/doc/reference/status/buffer_status.qbk
@@ -3,11 +3,11 @@
[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon]]
[[Point][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
[[Segment][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[Box][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Box][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
[[Linestring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[Ring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[Polygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Ring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Polygon][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
[[MultiPoint][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
[[MultiLinestring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[MultiPolygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiPolygon][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
]
diff --git a/libs/geometry/doc/reference/status/centroid_status.qbk b/libs/geometry/doc/reference/status/centroid_status.qbk
new file mode 100644
index 0000000000..edff68193f
--- /dev/null
+++ b/libs/geometry/doc/reference/status/centroid_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/clear_status.qbk b/libs/geometry/doc/reference/status/clear_status.qbk
new file mode 100644
index 0000000000..edff68193f
--- /dev/null
+++ b/libs/geometry/doc/reference/status/clear_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/generated/convert_status.qbk b/libs/geometry/doc/reference/status/convert_status.qbk
index aacf812a4c..aacf812a4c 100644
--- a/libs/geometry/doc/generated/convert_status.qbk
+++ b/libs/geometry/doc/reference/status/convert_status.qbk
diff --git a/libs/geometry/doc/generated/convex_hull_status.qbk b/libs/geometry/doc/reference/status/convex_hull_status.qbk
index e4d8d3023b..e4d8d3023b 100644
--- a/libs/geometry/doc/generated/convex_hull_status.qbk
+++ b/libs/geometry/doc/reference/status/convex_hull_status.qbk
diff --git a/libs/geometry/doc/reference/status/correct_status.qbk b/libs/geometry/doc/reference/status/correct_status.qbk
new file mode 100644
index 0000000000..edff68193f
--- /dev/null
+++ b/libs/geometry/doc/reference/status/correct_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/covered_by_status.qbk b/libs/geometry/doc/reference/status/covered_by_status.qbk
new file mode 100644
index 0000000000..3d9f98babf
--- /dev/null
+++ b/libs/geometry/doc/reference/status/covered_by_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon][Variant]]
+[[Point][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Segment][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Box][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Linestring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Ring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiLinestring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiPolygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/crosses_status.qbk b/libs/geometry/doc/reference/status/crosses_status.qbk
new file mode 100644
index 0000000000..6b1fe87584
--- /dev/null
+++ b/libs/geometry/doc/reference/status/crosses_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon][Variant]]
+[[Point][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Segment][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Box][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Linestring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Ring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Polygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiPoint][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiLinestring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiPolygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Variant][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/disjoint_status.qbk b/libs/geometry/doc/reference/status/disjoint_status.qbk
new file mode 100644
index 0000000000..a7cc3a2037
--- /dev/null
+++ b/libs/geometry/doc/reference/status/disjoint_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon][Variant]]
+[[Point][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiLinestring][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/distance_status.qbk b/libs/geometry/doc/reference/status/distance_status.qbk
new file mode 100644
index 0000000000..dcc527b9a4
--- /dev/null
+++ b/libs/geometry/doc/reference/status/distance_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon][Variant]]
+[[Point][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/envelope_status.qbk b/libs/geometry/doc/reference/status/envelope_status.qbk
new file mode 100644
index 0000000000..edff68193f
--- /dev/null
+++ b/libs/geometry/doc/reference/status/envelope_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/equals_status.qbk b/libs/geometry/doc/reference/status/equals_status.qbk
new file mode 100644
index 0000000000..83215b28aa
--- /dev/null
+++ b/libs/geometry/doc/reference/status/equals_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon][Variant]]
+[[Point][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Segment][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Box][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ]]
+[[Linestring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Ring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ]]
+[[Polygon][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiLinestring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiPolygon][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Variant][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/generated/within_status.qbk b/libs/geometry/doc/reference/status/expand_status.qbk
index 2843670d56..37635e1611 100644
--- a/libs/geometry/doc/generated/within_status.qbk
+++ b/libs/geometry/doc/reference/status/expand_status.qbk
@@ -1,13 +1,13 @@
[heading Supported geometries]
[table
[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon]]
-[[Point][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[Segment][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[Box][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Point][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Segment][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Box][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
[[Linestring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[Ring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[Polygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Ring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Polygon][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
[[MultiPoint][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
[[MultiLinestring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
-[[MultiPolygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiPolygon][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
]
diff --git a/libs/geometry/doc/reference/status/for_each_point_status.qbk b/libs/geometry/doc/reference/status/for_each_point_status.qbk
new file mode 100644
index 0000000000..b5383e0d10
--- /dev/null
+++ b/libs/geometry/doc/reference/status/for_each_point_status.qbk
@@ -0,0 +1,13 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/nyi.png] ]]
+[[Box][ [$img/nyi.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/for_each_segment_status.qbk b/libs/geometry/doc/reference/status/for_each_segment_status.qbk
new file mode 100644
index 0000000000..b5383e0d10
--- /dev/null
+++ b/libs/geometry/doc/reference/status/for_each_segment_status.qbk
@@ -0,0 +1,13 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/nyi.png] ]]
+[[Box][ [$img/nyi.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/intersects_status.qbk b/libs/geometry/doc/reference/status/intersects_status.qbk
new file mode 100644
index 0000000000..7c838e7c44
--- /dev/null
+++ b/libs/geometry/doc/reference/status/intersects_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon][Variant]]
+[[Point][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiLinestring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ]]
+[[MultiPolygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/is_simple_status.qbk b/libs/geometry/doc/reference/status/is_simple_status.qbk
new file mode 100644
index 0000000000..edff68193f
--- /dev/null
+++ b/libs/geometry/doc/reference/status/is_simple_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/is_valid_status.qbk b/libs/geometry/doc/reference/status/is_valid_status.qbk
new file mode 100644
index 0000000000..edff68193f
--- /dev/null
+++ b/libs/geometry/doc/reference/status/is_valid_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/length_status.qbk b/libs/geometry/doc/reference/status/length_status.qbk
new file mode 100644
index 0000000000..edff68193f
--- /dev/null
+++ b/libs/geometry/doc/reference/status/length_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/generated/area_status.qbk b/libs/geometry/doc/reference/status/num_geometries_status.qbk
index e4d8d3023b..e4d8d3023b 100644
--- a/libs/geometry/doc/generated/area_status.qbk
+++ b/libs/geometry/doc/reference/status/num_geometries_status.qbk
diff --git a/libs/geometry/doc/generated/clear_status.qbk b/libs/geometry/doc/reference/status/num_interior_rings_status.qbk
index e4d8d3023b..e4d8d3023b 100644
--- a/libs/geometry/doc/generated/clear_status.qbk
+++ b/libs/geometry/doc/reference/status/num_interior_rings_status.qbk
diff --git a/libs/geometry/doc/reference/status/num_points_status.qbk b/libs/geometry/doc/reference/status/num_points_status.qbk
new file mode 100644
index 0000000000..edff68193f
--- /dev/null
+++ b/libs/geometry/doc/reference/status/num_points_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/overlaps_status.qbk b/libs/geometry/doc/reference/status/overlaps_status.qbk
new file mode 100644
index 0000000000..8d26c4dafc
--- /dev/null
+++ b/libs/geometry/doc/reference/status/overlaps_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon][Variant]]
+[[Point][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Segment][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Box][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Linestring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Ring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Polygon][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiLinestring][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiPolygon][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Variant][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/perimeter_status.qbk b/libs/geometry/doc/reference/status/perimeter_status.qbk
new file mode 100644
index 0000000000..edff68193f
--- /dev/null
+++ b/libs/geometry/doc/reference/status/perimeter_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/generated/correct_status.qbk b/libs/geometry/doc/reference/status/reverse_status.qbk
index e4d8d3023b..e4d8d3023b 100644
--- a/libs/geometry/doc/generated/correct_status.qbk
+++ b/libs/geometry/doc/reference/status/reverse_status.qbk
diff --git a/libs/geometry/doc/reference/status/simplify_status.qbk b/libs/geometry/doc/reference/status/simplify_status.qbk
new file mode 100644
index 0000000000..b5383e0d10
--- /dev/null
+++ b/libs/geometry/doc/reference/status/simplify_status.qbk
@@ -0,0 +1,13 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/nyi.png] ]]
+[[Box][ [$img/nyi.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/transform_status.qbk b/libs/geometry/doc/reference/status/transform_status.qbk
new file mode 100644
index 0000000000..d7d9e977ee
--- /dev/null
+++ b/libs/geometry/doc/reference/status/transform_status.qbk
@@ -0,0 +1,13 @@
+[heading Supported geometries]
+[table
+[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon]]
+[[Point][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/unique_status.qbk b/libs/geometry/doc/reference/status/unique_status.qbk
new file mode 100644
index 0000000000..e4d8d3023b
--- /dev/null
+++ b/libs/geometry/doc/reference/status/unique_status.qbk
@@ -0,0 +1,13 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/within_status.qbk b/libs/geometry/doc/reference/status/within_status.qbk
new file mode 100644
index 0000000000..3d9f98babf
--- /dev/null
+++ b/libs/geometry/doc/reference/status/within_status.qbk
@@ -0,0 +1,14 @@
+[heading Supported geometries]
+[table
+[[ ][Point][Segment][Box][Linestring][Ring][Polygon][MultiPoint][MultiLinestring][MultiPolygon][Variant]]
+[[Point][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Segment][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Box][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Linestring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[Ring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiLinestring][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+[[MultiPolygon][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/ok.png] ][ [$img/ok.png] ][ [$img/ok.png] ]]
+[[Variant][ [$img/ok.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ][ [$img/nyi.png] ]]
+]
diff --git a/libs/geometry/doc/reference/status/wkt_status.qbk b/libs/geometry/doc/reference/status/wkt_status.qbk
new file mode 100644
index 0000000000..e4d8d3023b
--- /dev/null
+++ b/libs/geometry/doc/reference/status/wkt_status.qbk
@@ -0,0 +1,13 @@
+[heading Supported geometries]
+[table
+[[Geometry][Status]]
+[[Point][ [$img/ok.png] ]]
+[[Segment][ [$img/ok.png] ]]
+[[Box][ [$img/ok.png] ]]
+[[Linestring][ [$img/ok.png] ]]
+[[Ring][ [$img/ok.png] ]]
+[[Polygon][ [$img/ok.png] ]]
+[[MultiPoint][ [$img/ok.png] ]]
+[[MultiLinestring][ [$img/ok.png] ]]
+[[MultiPolygon][ [$img/ok.png] ]]
+]
diff --git a/libs/geometry/doc/release_notes.qbk b/libs/geometry/doc/release_notes.qbk
index 445c03862a..70c726f54a 100644
--- a/libs/geometry/doc/release_notes.qbk
+++ b/libs/geometry/doc/release_notes.qbk
@@ -1,9 +1,10 @@
[/============================================================================
Boost.Geometry (aka GGL, Generic Geometry Library)
- Copyright (c) 2009-2012 Barend Gehrels, Geodan, Amsterdam, the Netherlands.
- Copyright (c) 2009-2012 Mateusz Loskot (mateusz@loskot.net)
- Copyright (c) 2009-2012 Mateusz Lalande, Paris, France.
+ Copyright (c) 2009-2014 Barend Gehrels, Geodan, Amsterdam, the Netherlands.
+ Copyright (c) 2009-2014 Bruno Lalande, Paris, France.
+ Copyright (c) 2009-2014 Mateusz Loskot <mateusz@loskot.net>, London, UK
+ Copyright (c) 2011-2014 Adam Wulkiewicz
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -12,6 +13,184 @@
[section:release_notes Release Notes]
+[/=================]
+[heading Boost 1.57]
+[/=================]
+
+[*Additional functionality]
+
+[*Improvements]
+
+* The support of parameters convertible to value_type in rtree insert(), remove() and count() functions
+* Support for counterclockwise input/output in algorithm buffer
+* Support for open-geometry input in algorithm buffer (open output not yet supported)
+* Support for degenerate input (point-like linestrings, polygons) in algorithm buffer
+
+[*Solved tickets]
+
+* [@https://svn.boost.org/trac/boost/ticket/8402 8402] Implicit conversion warnings
+* [@https://svn.boost.org/trac/boost/ticket/9354 9354] Bug in winding strategy affecting within() and covered_by() for non-cartesian coordinate systems
+* [@https://svn.boost.org/trac/boost/ticket/10177 10177] Missing include
+* [@https://svn.boost.org/trac/boost/ticket/10345 10345] Distance fails to compile for some coordinate types
+* [@https://svn.boost.org/trac/boost/ticket/10398 10398] Wrong neighbour check in buffer, calculating turns
+* [@https://svn.boost.org/trac/boost/ticket/10421 10421] Invalid Point-Box distance for spherical CS
+* [@https://svn.boost.org/trac/boost/ticket/10615 10615] Rtree constructor feature request
+* [@https://svn.boost.org/trac/boost/ticket/10643 10643] Invalid point_on_surface() result for big coordinates
+* [@https://svn.boost.org/trac/boost/ticket/10668 10668] Implicit conversion warnings (duplicated 8402)
+
+[*Bugfixes]
+
+* Several fixes of bugs in algorithm buffer
+* Bug in point_on_surface() for CCW Polygons (extreme_points()) and numerical issue (thanks to Matt Amos)
+* Bug in disjoint() for A/A fixed by replacement of point_on_surface() with point_on_border() (thanks to Matt Amos)
+* The result of convex_hull(), duplicated Point in open output, too small number of Points for 1- and 2-Point input
+* Imprecision for big coordinates in centroid(), fixed by Points translation (related with ticket 10643)
+* for_each_segment() not taking into account the last segment of open Geometry
+
+[/=================]
+[heading Boost 1.56]
+[/=================]
+
+[*Additional functionality]
+
+* New algorithm buffer for inflating/deflating geometries (buffer itself already existed but that was only to enlarge a box)
+* New algorithm remove_spikes, algorithm to remove spikes from a ring, polygon or multi_polygon
+* New algorithm point_on_surface, generating a point lying on the surface (interior) of the polygon
+* New algorithm is_simple, returning true if a geometry is simple according to the OGC standard
+* New algorithm is_valid, returning true if a geometry is valid according to the OGC standard
+* New algorithm crosses for checking this spatial relation according to the OGC standard
+* The set operation algorithms (difference, intersection, sym_difference and union_) now support as input pairs of pointlike or linear geometries
+* The distance and comparable_distance algorithms now support all pairs of geometry combinations
+* The spatial relations which didn't support it (covered_by, touches, within, etc.) now support as input linear and/or areal geometries
+* The support for boost::variants as input geometries in various algorithms
+* The rtree support for indexing segments
+* The rtree nearest() predicate support for arbitrary geometries
+
+[*Improvements]
+
+* The rtree pack-creation algorithm optimization (thanks to Lu Wang)
+
+[*Solved tickets]
+
+* [@https://svn.boost.org/trac/boost/ticket/8310 8310] Wrong results with overlapping polygons (fixed using point_on_surface for disjoint)
+* [@https://svn.boost.org/trac/boost/ticket/8375 8375] sym_difference of non-closed polygons returns closed polygon
+* [@https://svn.boost.org/trac/boost/ticket/8376 8376] difference of non-closed polygons returns closed polygon
+* [@https://svn.boost.org/trac/boost/ticket/9081 9081] Booleans create self-intersecting polygons from non-self-intersecting polygons
+* [@https://svn.boost.org/trac/boost/ticket/9245 9245] Check for process errors in make_qbk.py
+* [@https://svn.boost.org/trac/boost/ticket/9563 9563] (Sym)difference not successful, fixed by rescaling to robust type
+* [@https://svn.boost.org/trac/boost/ticket/9628 9628] Wrong result of within() due to the winding strategy not working correctly for nearly-horizontal segments
+* [@https://svn.boost.org/trac/boost/ticket/9828 9828] boost::geometry::union_(...) creates redundant closing point
+* [@https://svn.boost.org/trac/boost/ticket/9871 9871] Remove spike in polygon with only a spike
+* [@https://svn.boost.org/trac/boost/ticket/9941 9941] Add support for touches(box, box)
+* [@https://svn.boost.org/trac/boost/ticket/9947 9947] Missing info about WKT in documentation
+* [@https://svn.boost.org/trac/boost/ticket/9759 9759] Invalid results of R-tree knn queries for non-cartesian coordinate systems
+* [@https://svn.boost.org/trac/boost/ticket/10019 10019] Difference of Linestring and Box returns their intersection
+* [@https://svn.boost.org/trac/boost/ticket/10077 10077] Wrong types in concept checks in boost/geometry/arithmetic/arithmetic.hpp
+* [@https://svn.boost.org/trac/boost/ticket/10234 10234] Wrong results of covered_by() for nearly-horizontal segments
+
+[*Bugfixes]
+
+* intersects(polygon) could return a self-intersection-point for its closing point, fixed
+* equals() could return invalid results for non-simple linear geometries according to the OGC standard, fixed
+* touches() didn't work properly for CCW areal geomtries, fixed
+* rtree nearest queries returned wrong elements for non-cartesian coordinate systems, fixed
+* rtree crashed in some cases when used with Interprocess allocator, fixed
+
+[/=================]
+[heading Boost 1.55]
+[/=================]
+
+[*Additional functionality]
+
+* Added centroid for segment type
+* Added intersects() and disjoints() for Segment-Box and Linestring-Box
+* Added rtree creation using packing algorithm
+* Added contains() and covers() spatial query predicates
+* Added iterative queries
+
+[*Documentation]
+
+[*Bugfixes]
+
+* In some cases .back() or .clear() was called, violating the usage of Concepts. Fixed for the reported cases
+* Use consistent side information in cart_intersect and get_turn_info and handle_tangencies and enrich_intersection_info. This
+ is done by switching to integer (if necessary) for the specific 6 points only, zooming in on the 4 or 3 segments
+
+[*Solved tickets]
+
+* [@https://svn.boost.org/trac/boost/ticket/6958 6958] Intersection generates self-intersection. Caused by spike, fixed
+* [@https://svn.boost.org/trac/boost/ticket/8364 8364] Invalid input exception, caused by spikes in previous steps, fixed
+* [@https://svn.boost.org/trac/boost/ticket/8365 8365] Invalid input exception, caused by spikes in previous steps, fixed
+* [@https://svn.boost.org/trac/boost/ticket/8969 8969] boost::geometry::model::point single argument constructor should be explicit
+* [@https://svn.boost.org/trac/boost/ticket/8825 8825] Patch adding member variable documentation to doxygen_xml2qbk
+* [@https://svn.boost.org/trac/boost/ticket/8652 8652] Intersection fails for triangle-triangle intersection. Caused by spike, fixed
+* [@https://svn.boost.org/trac/boost/ticket/9047 9047] Boost files that include themselves (strategies/intersection.hpp), fixed
+
+[*Internal changes]
+
+* Distance-strategy TODO
+* Transform-strategy TODO
+* Spikes (could be generated in difference) in integer-based overlays are now avoided during generation
+* Cleanup, removed old MSVC2005 project files, let all tests pass green (also in extensions)
+* R*-tree balancing algorithm optimized
+
+[/=================]
+[heading Boost 1.54]
+[/=================]
+
+[*Additional functionality]
+
+* added Spatial Index, developed for Boost.Geometry by Adam Wulkiewicz. The spatial index was originally started by Federico J. Fernandez during the Google Summer of Code 2008 program, mentored by Hartmut Kaiser.
+* added SVG-output, this was already in extensions for several years
+
+[*Documentation]
+
+* small fixes of missing words
+* fixes in doc of template parameters (convex_hull, exterior_ring, return_buffer)
+
+[*Bugfixes]
+
+* collinear opposite segments did sometimes (in circles) have a robustness issue, fixed
+* fixed insertion of false intersection point (found by buffer)
+* applied patch of Vladimir Petrovic for debugging traversals
+
+
+[*Solved tickets]
+
+* [@https://svn.boost.org/trac/boost/ticket/7462 7462] degenerate union result for float, fixed
+* [@https://svn.boost.org/trac/boost/ticket/7465 7465] wrong construtors access type in scale_transformer class, fixed
+* [@https://svn.boost.org/trac/boost/ticket/7802 7802] cart_intersect.hpp unused parameter warnings, fixed
+* [@https://svn.boost.org/trac/boost/ticket/8254 8254] faulty intersection, fixed
+* [@https://svn.boost.org/trac/boost/ticket/8393 8393] polygon model doesn't adhere to stated Polygon concept rules, doc updated.
+* [@https://svn.boost.org/trac/boost/ticket/8403 8403] silenced compiler warning C4127: conditional expression is constant
+* [@https://svn.boost.org/trac/boost/ticket/8405 8405] silenced compiler warning C4189: '...' : local variable is initialized but not referenced
+
+[*Internal changes]
+
+* Made several algorithms variant-aware (append, area, clear, convert, equals, length, num_points)
+
+
+[/=================]
+[heading Boost 1.53]
+[/=================]
+
+[*Bugfixes]
+
+* avoid generating output polygons with interior rings below minimum size (e.g. one or two points)
+* `geometry::disjoint` for degenerate segments (patched by Karsten Ahnert)
+* problem in `geometry::difference` for missing handling tangency, reported by H2
+* fixed `geometry::for_each` for use with Lambda's
+* fixed `geometry::comparable_distance` point-linestring (and -range, -polygon)
+
+[*Additional functionality]
+
+* combinations for `geometry::disjoint`: point/ring, point/polygon, point/multi_polygon
+* combinations for `geometry::intersects`: point/ring, point/polygon, point/multi_polygon
+
+[*Internal changes]
+
+* updates in specializations/not_implemented for various algorithms (as in an earlier version, these changes are still going on; they take care for simplified structs, better error reporting, and automatized documentation)
+* fixes in unit tests
[/=================]
[heading Boost 1.51]
diff --git a/libs/geometry/doc/robustness.qbk b/libs/geometry/doc/robustness.qbk
new file mode 100644
index 0000000000..3c6654fa0a
--- /dev/null
+++ b/libs/geometry/doc/robustness.qbk
@@ -0,0 +1,47 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2013 Mateusz Loskot, London, UK.
+
+ 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)
+=============================================================================/]
+
+[/ TODO: this is a basic draft only, should NOT be built into final docs yet ]
+[/ TODO: discuss numerical stability per algorithm (at least for line intersection and point in polygon) ]
+[/ TODO: integrate with doxygen_d_robustness.hpp and http://geometrylibrary.geodan.nl/formal_review/robustness.html ]
+[/ TODO: interlink the interesting discussion from Boost.Polygon at
+http://www.boost.org/doc/libs/release/libs/polygon/doc/voronoi_main.htm ]
+[/ TODO: discuss relation to EGC http://cs.nyu.edu/exact/intro/ ]
+
+[section Robustness]
+
+A numerical stability issues are a common problem in implementations of
+computational geometry algorithms.
+
+They lead to variety of unexpected sitautions at run-time: an application
+randomly throws segmentation faults, output computed by an algorithm
+contains degeneracies, unexpected artefacts or completely invalid.
+
+For example, according to the OpenGIS Simple Feature Specification,
+
+["A Polygon may not have cut lines, spikes or punctures]
+
+From mathematical point of view such condition is easy to verify.
+However, depending on computational method and in the presence of round-off
+or truncation errors, it is not easy to decided how "sharp" must be a part
+of polygon in order to consider it a spike.
+
+A 100% robust implementation of an algorithm gives expected result in 100% of cases. Achieving complete floating point robustness implies use of certain set of algorithms as well as platform specific assumptions about floating point representations.
+
+Despite Boost.Geometry does not promise absolute numerical stability,
+it attempts to offer balanced efficiency and robustness by:
+
+# selection of algorithms, often solved at case-by-case basis
+# compile-time selection of most precise and capacious C++ type on which to perform computations.
+# support for arbitrary precision numeric types
+
+
+[endsect]
+
diff --git a/libs/geometry/doc/src/copyright_block.qbk b/libs/geometry/doc/src/copyright_block.qbk
index 028c02c0af..6f3da21692 100644
--- a/libs/geometry/doc/src/copyright_block.qbk
+++ b/libs/geometry/doc/src/copyright_block.qbk
@@ -1,9 +1,9 @@
[/============================================================================
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.
+ Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
+ Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
+ Copyright (c) 2009-2013 Mateusz Loskot, London, UK.
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/configuration.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/configuration.hpp
index 96cf8104cd..03a7a8a3e5 100644
--- a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/configuration.hpp
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/configuration.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
//
-// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2010-2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
// 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)
@@ -14,6 +15,7 @@
#include <vector>
+
struct configuration
{
// To transfer e.g. c:/_svn/boost/trunk/boost/geometry/algorithms/area.hpp
@@ -27,6 +29,15 @@ struct configuration
std::vector<std::string> convenience_headers;
std::string skip_namespace;
+
+ enum output_style_type {def, alt};
+ output_style_type output_style;
+ bool output_member_variables;
+
+ configuration()
+ : output_style(def)
+ , output_member_variables(false)
+ {}
};
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/license.txt b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/license.txt
new file mode 100644
index 0000000000..140983180b
--- /dev/null
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/license.txt
@@ -0,0 +1,52 @@
+Use of this software is granted under one of the following two licenses,
+to be chosen freely by the user.
+
+1. Boost Software License - Version 1.0 - August 17th, 2003
+===============================================================================
+
+Copyright (c) 2006, 2007 Marcin Kalicinski
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+2. The MIT License
+===============================================================================
+
+Copyright (c) 2006, 2007 Marcin Kalicinski
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/manual.html b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/manual.html
new file mode 100644
index 0000000000..2c422703f4
--- /dev/null
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/manual.html
@@ -0,0 +1,406 @@
+<html><head><style type="text/css">
+
+ body
+ {
+ font-family: sans-serif;
+ font-size: 90%;
+ margin: 8pt 8pt 8pt 8pt;
+ text-align: justify;
+ background-color: White;
+ }
+
+ h1 { font-weight: bold; text-align: left; }
+ h2 { font: 140% sans-serif; font-weight: bold; text-align: left; }
+ h3 { font: 120% sans-serif; font-weight: bold; text-align: left; }
+ h4 { font: bold 100% sans-serif; font-weight: bold; text-align: left; }
+ h5 { font: italic 100% sans-serif; font-weight: bold; text-align: left; }
+ h6 { font: small-caps 100% sans-serif; font-weight: bold; text-align: left; }
+
+ code
+ {
+ font-family: &quot;Courier New&quot;, Courier, mono;
+ }
+
+ pre
+ {
+ border-top: gray 0.5pt solid;
+ border-right: gray 0.5pt solid;
+ border-left: gray 0.5pt solid;
+ border-bottom: gray 0.5pt solid;
+ padding-top: 2pt;
+ padding-right: 2pt;
+ padding-left: 2pt;
+ padding-bottom: 2pt;
+ display: block;
+ font-family: &quot;courier new&quot;, courier, mono;
+ background-color: #eeeeee;
+ }
+
+ a
+ {
+ color: #000080;
+ text-decoration: none;
+ }
+
+ a:hover
+ {
+ text-decoration: underline;
+ }
+
+ .reference-header
+ {
+ border-top: gray 0.5pt solid;
+ border-right: gray 0.5pt solid;
+ border-left: gray 0.5pt solid;
+ border-bottom: gray 0.5pt solid;
+ padding-top: 2pt;
+ padding-right: 2pt;
+ padding-left: 2pt;
+ padding-bottom: 2pt;
+ background-color: #dedede;
+ }
+
+ .parameter-name
+ {
+ font-style: italic;
+ }
+
+ .indented
+ {
+ margin-left: 0.5cm;
+ }
+
+ a.toc1
+ {
+ margin-left: 0.0cm;
+ }
+
+ a.toc2
+ {
+ margin-left: 0.75cm;
+ }
+
+ a.toc3
+ {
+ margin-left: 1.5cm;
+ }
+
+ </style></head><body><h1>RAPIDXML Manual</h1><h3>Version 1.13</h3><detaileddescription xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><para><i>Copyright (C) 2006, 2009 Marcin Kalicinski</i><br/><i>See accompanying file <a href="license.txt">license.txt</a> for license information.</i><hr/><h2 level="2">Table of Contents</h2></para><para><toc><toc-contents><a href="#namespacerapidxml_1what_is_rapidxml" class="toc1">1. What is RapidXml?</a><br/><a href="#namespacerapidxml_1dependencies_and_compatibility" class="toc2">1.1 Dependencies And Compatibility</a><br/><a href="#namespacerapidxml_1character_types_and_encodings" class="toc2">1.2 Character Types And Encodings</a><br/><a href="#namespacerapidxml_1error_handling" class="toc2">1.3 Error Handling</a><br/><a href="#namespacerapidxml_1memory_allocation" class="toc2">1.4 Memory Allocation</a><br/><a href="#namespacerapidxml_1w3c_compliance" class="toc2">1.5 W3C Compliance</a><br/><a href="#namespacerapidxml_1api_design" class="toc2">1.6 API Design</a><br/><a href="#namespacerapidxml_1reliability" class="toc2">1.7 Reliability</a><br/><a href="#namespacerapidxml_1acknowledgements" class="toc2">1.8 Acknowledgements</a><br/><a href="#namespacerapidxml_1two_minute_tutorial" class="toc1">2. Two Minute Tutorial</a><br/><a href="#namespacerapidxml_1parsing" class="toc2">2.1 Parsing</a><br/><a href="#namespacerapidxml_1accessing_dom_tree" class="toc2">2.2 Accessing The DOM Tree</a><br/><a href="#namespacerapidxml_1modifying_dom_tree" class="toc2">2.3 Modifying The DOM Tree</a><br/><a href="#namespacerapidxml_1printing" class="toc2">2.4 Printing XML</a><br/><a href="#namespacerapidxml_1differences" class="toc1">3. Differences From Regular XML Parsers</a><br/><a href="#namespacerapidxml_1lifetime_of_source_text" class="toc2">3.1 Lifetime Of Source Text</a><br/><a href="#namespacerapidxml_1ownership_of_strings" class="toc2">3.2 Ownership Of Strings</a><br/><a href="#namespacerapidxml_1destructive_non_destructive" class="toc2">3.3 Destructive Vs Non-Destructive Mode</a><br/><a href="#namespacerapidxml_1performance" class="toc1">4. Performance</a><br/><a href="#namespacerapidxml_1performance_charts" class="toc2">4.1 Comparison With Other Parsers</a><br/><a href="#namespacerapidxml_1reference" class="toc1">5. Reference</a><br/></toc-contents></toc><br/></para><sect1><h2 id="namespacerapidxml_1what_is_rapidxml">1. What is RapidXml?</h2><para><a href="http://rapidxml.sourceforge.net">RapidXml</a> is an attempt to create the fastest XML DOM parser possible, while retaining useability, portability and reasonable W3C compatibility. It is an in-situ parser written in C++, with parsing speed approaching that of <code>strlen()</code> function executed on the same data. <br/><br/>
+ Entire parser is contained in a single header file, so no building or linking is neccesary. To use it you just need to copy <code>rapidxml.hpp</code> file to a convenient place (such as your project directory), and include it where needed. You may also want to use printing functions contained in header <code>rapidxml_print.hpp</code>.</para><sect2><h3 id="namespacerapidxml_1dependencies_and_compatibility">1.1 Dependencies And Compatibility</h3><para>RapidXml has <i>no dependencies</i> other than a very small subset of standard C++ library (<code>&lt;cassert&gt;</code>, <code>&lt;cstdlib&gt;</code>, <code>&lt;new&gt;</code> and <code>&lt;exception&gt;</code>, unless exceptions are disabled). It should compile on any reasonably conformant compiler, and was tested on Visual C++ 2003, Visual C++ 2005, Visual C++ 2008, gcc 3, gcc 4, and Comeau 4.3.3. Care was taken that no warnings are produced on these compilers, even with highest warning levels enabled.</para></sect2><sect2><h3 id="namespacerapidxml_1character_types_and_encodings">1.2 Character Types And Encodings</h3><para>RapidXml is character type agnostic, and can work both with narrow and wide characters. Current version does not fully support UTF-16 or UTF-32, so use of wide characters is somewhat incapacitated. However, it should succesfully parse <code>wchar_t</code> strings containing UTF-16 or UTF-32 if endianness of the data matches that of the machine. UTF-8 is fully supported, including all numeric character references, which are expanded into appropriate UTF-8 byte sequences (unless you enable parse_no_utf8 flag). <br/><br/>
+ Note that RapidXml performs no decoding - strings returned by name() and value() functions will contain text encoded using the same encoding as source file. Rapidxml understands and expands the following character references: <code>&amp;apos; &amp;amp; &amp;quot; &amp;lt; &amp;gt; &amp;#...;</code> Other character references are not expanded.</para></sect2><sect2><h3 id="namespacerapidxml_1error_handling">1.3 Error Handling</h3><para>By default, RapidXml uses C++ exceptions to report errors. If this behaviour is undesirable, RAPIDXML_NO_EXCEPTIONS can be defined to suppress exception code. See <a href="#classrapidxml_1_1parse__error" kindref="compound">parse_error</a> class and <a href="#namespacerapidxml_ff5d67f74437199d316d2b2660653ae1_1ff5d67f74437199d316d2b2660653ae1" kindref="member">parse_error_handler()</a> function for more information.</para></sect2><sect2><h3 id="namespacerapidxml_1memory_allocation">1.4 Memory Allocation</h3><para>RapidXml uses a special memory pool object to allocate nodes and attributes, because direct allocation using <code>new</code> operator would be far too slow. Underlying memory allocations performed by the pool can be customized by use of <a href="#classrapidxml_1_1memory__pool_c0a55a6ef0837dca67572e357100d78a_1c0a55a6ef0837dca67572e357100d78a" kindref="member">memory_pool::set_allocator()</a> function. See class <a href="#classrapidxml_1_1memory__pool" kindref="compound">memory_pool</a> for more information.</para></sect2><sect2><h3 id="namespacerapidxml_1w3c_compliance">1.5 W3C Compliance</h3><para>RapidXml is not a W3C compliant parser, primarily because it ignores DOCTYPE declarations. There is a number of other, minor incompatibilities as well. Still, it can successfully parse and produce complete trees of all valid XML files in W3C conformance suite (over 1000 files specially designed to find flaws in XML processors). In destructive mode it performs whitespace normalization and character entity substitution for a small set of built-in entities.</para></sect2><sect2><h3 id="namespacerapidxml_1api_design">1.6 API Design</h3><para>RapidXml API is minimalistic, to reduce code size as much as possible, and facilitate use in embedded environments. Additional convenience functions are provided in separate headers: <code>rapidxml_utils.hpp</code> and <code><a href="#rapidxml__print_8hpp" kindref="compound">rapidxml_print.hpp</a></code>. Contents of these headers is not an essential part of the library, and is currently not documented (otherwise than with comments in code).</para></sect2><sect2><h3 id="namespacerapidxml_1reliability">1.7 Reliability</h3><para>RapidXml is very robust and comes with a large harness of unit tests. Special care has been taken to ensure stability of the parser no matter what source text is thrown at it. One of the unit tests produces 100,000 randomly corrupted variants of XML document, which (when uncorrupted) contains all constructs recognized by RapidXml. RapidXml passes this test when it correctly recognizes that errors have been introduced, and does not crash or loop indefinitely. <br/><br/>
+ Another unit test puts RapidXml head-to-head with another, well estabilished XML parser, and verifies that their outputs match across a wide variety of small and large documents. <br/><br/>
+ Yet another test feeds RapidXml with over 1000 test files from W3C compliance suite, and verifies that correct results are obtained. There are also additional tests that verify each API function separately, and test that various parsing modes work as expected.</para></sect2><sect2><h3 id="namespacerapidxml_1acknowledgements">1.8 Acknowledgements</h3><para>I would like to thank Arseny Kapoulkine for his work on <a href="http://code.google.com/p/pugixml">pugixml</a>, which was an inspiration for this project. Additional thanks go to Kristen Wegner for creating <a href="http://www.codeproject.com/soap/pugxml.asp">pugxml</a>, from which pugixml was derived. Janusz Wohlfeil kindly ran RapidXml speed tests on hardware that I did not have access to, allowing me to expand performance comparison table.</para></sect2></sect1><sect1><h2 id="namespacerapidxml_1two_minute_tutorial">2. Two Minute Tutorial</h2><sect2><h3 id="namespacerapidxml_1parsing">2.1 Parsing</h3><para>The following code causes RapidXml to parse a zero-terminated string named <code>text</code>: <pre>using namespace rapidxml;
+xml_document&lt;&gt; doc; // character type defaults to char
+doc.parse&lt;0&gt;(text); // 0 means default parse flags
+</pre><code>doc</code> object is now a root of DOM tree containing representation of the parsed XML. Because all RapidXml interface is contained inside namespace <code>rapidxml</code>, users must either bring contents of this namespace into scope, or fully qualify all the names. Class <a href="#classrapidxml_1_1xml__document" kindref="compound">xml_document</a> represents a root of the DOM hierarchy. By means of public inheritance, it is also an <a href="#classrapidxml_1_1xml__node" kindref="compound">xml_node</a> and a <a href="#classrapidxml_1_1memory__pool" kindref="compound">memory_pool</a>. Template parameter of <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function is used to specify parsing flags, with which you can fine-tune behaviour of the parser. Note that flags must be a compile-time constant.</para></sect2><sect2><h3 id="namespacerapidxml_1accessing_dom_tree">2.2 Accessing The DOM Tree</h3><para>To access the DOM tree, use methods of <a href="#classrapidxml_1_1xml__node" kindref="compound">xml_node</a> and <a href="#classrapidxml_1_1xml__attribute" kindref="compound">xml_attribute</a> classes: <pre>cout &lt;&lt; &quot;Name of my first node is: &quot; &lt;&lt; doc.first_node()-&gt;name() &lt;&lt; &quot;\n&quot;;
+xml_node&lt;&gt; *node = doc.first_node(&quot;foobar&quot;);
+cout &lt;&lt; &quot;Node foobar has value &quot; &lt;&lt; node-&gt;value() &lt;&lt; &quot;\n&quot;;
+for (xml_attribute&lt;&gt; *attr = node-&gt;first_attribute();
+ attr; attr = attr-&gt;next_attribute())
+{
+ cout &lt;&lt; &quot;Node foobar has attribute &quot; &lt;&lt; attr-&gt;name() &lt;&lt; &quot; &quot;;
+ cout &lt;&lt; &quot;with value &quot; &lt;&lt; attr-&gt;value() &lt;&lt; &quot;\n&quot;;
+}
+</pre></para></sect2><sect2><h3 id="namespacerapidxml_1modifying_dom_tree">2.3 Modifying The DOM Tree</h3><para>DOM tree produced by the parser is fully modifiable. Nodes and attributes can be added/removed, and their contents changed. The below example creates a HTML document, whose sole contents is a link to google.com website: <pre>xml_document&lt;&gt; doc;
+xml_node&lt;&gt; *node = doc.allocate_node(node_element, &quot;a&quot;, &quot;Google&quot;);
+doc.append_node(node);
+xml_attribute&lt;&gt; *attr = doc.allocate_attribute(&quot;href&quot;, &quot;google.com&quot;);
+node-&gt;append_attribute(attr);
+</pre> One quirk is that nodes and attributes <i>do not own</i> the text of their names and values. This is because normally they only store pointers to the source text. So, when assigning a new name or value to the node, care must be taken to ensure proper lifetime of the string. The easiest way to achieve it is to allocate the string from the <a href="#classrapidxml_1_1xml__document" kindref="compound">xml_document</a> memory pool. In the above example this is not necessary, because we are only assigning character constants. But the code below uses <a href="#classrapidxml_1_1memory__pool_69729185bc59b0875192d667c47b8859_169729185bc59b0875192d667c47b8859" kindref="member">memory_pool::allocate_string()</a> function to allocate node name (which will have the same lifetime as the document), and assigns it to a new node: <pre>xml_document&lt;&gt; doc;
+char *node_name = doc.allocate_string(name); // Allocate string and copy name into it
+xml_node&lt;&gt; *node = doc.allocate_node(node_element, node_name); // Set node name to node_name
+</pre> Check <a href="#namespacerapidxml_1reference" kindref="member">Reference</a> section for description of the entire interface.</para></sect2><sect2><h3 id="namespacerapidxml_1printing">2.4 Printing XML</h3><para>You can print <code><a href="#classrapidxml_1_1xml__document" kindref="compound">xml_document</a></code> and <code><a href="#classrapidxml_1_1xml__node" kindref="compound">xml_node</a></code> objects into an XML string. Use <a href="#namespacerapidxml_b94d570fc4c4ab2423813cd0243326b1_1b94d570fc4c4ab2423813cd0243326b1" kindref="member">print()</a> function or operator &lt;&lt;, which are defined in <code><a href="#rapidxml__print_8hpp" kindref="compound">rapidxml_print.hpp</a></code> header. <pre>using namespace rapidxml;
+xml_document&lt;&gt; doc; // character type defaults to char
+// ... some code to fill the document
+
+// Print to stream using operator &lt;&lt;
+std::cout &lt;&lt; doc;
+
+// Print to stream using print function, specifying printing flags
+print(std::cout, doc, 0); // 0 means default printing flags
+
+// Print to string using output iterator
+std::string s;
+print(std::back_inserter(s), doc, 0);
+
+// Print to memory buffer using output iterator
+char buffer[4096]; // You are responsible for making the buffer large enough!
+char *end = print(buffer, doc, 0); // end contains pointer to character after last printed character
+*end = 0; // Add string terminator after XML
+</pre></para></sect2></sect1><sect1><h2 id="namespacerapidxml_1differences">3. Differences From Regular XML Parsers</h2><para>RapidXml is an <i>in-situ parser</i>, which allows it to achieve very high parsing speed. In-situ means that parser does not make copies of strings. Instead, it places pointers to the <i>source text</i> in the DOM hierarchy.</para><sect2><h3 id="namespacerapidxml_1lifetime_of_source_text">3.1 Lifetime Of Source Text</h3><para>In-situ parsing requires that source text lives at least as long as the document object. If source text is destroyed, names and values of nodes in DOM tree will become destroyed as well. Additionally, whitespace processing, character entity translation, and zero-termination of strings require that source text be modified during parsing (but see non-destructive mode). This makes the text useless for further processing once it was parsed by RapidXml. <br/><br/>
+ In many cases however, these are not serious issues.</para></sect2><sect2><h3 id="namespacerapidxml_1ownership_of_strings">3.2 Ownership Of Strings</h3><para>Nodes and attributes produced by RapidXml do not own their name and value strings. They merely hold the pointers to them. This means you have to be careful when setting these values manually, by using <a href="#classrapidxml_1_1xml__base_e099c291e104a0d277307fe71f5e0f9e_1e099c291e104a0d277307fe71f5e0f9e" kindref="member">xml_base::name(const Ch *)</a> or <a href="#classrapidxml_1_1xml__base_18c7469acdca771de9b4f3054053029c_118c7469acdca771de9b4f3054053029c" kindref="member">xml_base::value(const Ch *)</a> functions. Care must be taken to ensure that lifetime of the string passed is at least as long as lifetime of the node/attribute. The easiest way to achieve it is to allocate the string from <a href="#classrapidxml_1_1memory__pool" kindref="compound">memory_pool</a> owned by the document. Use <a href="#classrapidxml_1_1memory__pool_69729185bc59b0875192d667c47b8859_169729185bc59b0875192d667c47b8859" kindref="member">memory_pool::allocate_string()</a> function for this purpose.</para></sect2><sect2><h3 id="namespacerapidxml_1destructive_non_destructive">3.3 Destructive Vs Non-Destructive Mode</h3><para>By default, the parser modifies source text during the parsing process. This is required to achieve character entity translation, whitespace normalization, and zero-termination of strings. <br/><br/>
+ In some cases this behaviour may be undesirable, for example if source text resides in read only memory, or is mapped to memory directly from file. By using appropriate parser flags (parse_non_destructive), source text modifications can be disabled. However, because RapidXml does in-situ parsing, it obviously has the following side-effects:<ul><li><para>no whitespace normalization is done</para></li><li><para>no entity reference translation is done</para></li><li><para>names and values are not zero-terminated, you must use <a href="#classrapidxml_1_1xml__base_0dae694c8f7e4d89f1003e2f3a15a43c_10dae694c8f7e4d89f1003e2f3a15a43c" kindref="member">xml_base::name_size()</a> and <a href="#classrapidxml_1_1xml__base_aed5ae791b7164c1ee5e649198cbb3db_1aed5ae791b7164c1ee5e649198cbb3db" kindref="member">xml_base::value_size()</a> functions to tell where they end</para></li></ul></para></sect2></sect1><sect1><h2 id="namespacerapidxml_1performance">4. Performance</h2><para>RapidXml achieves its speed through use of several techniques:<ul><li><para>In-situ parsing. When building DOM tree, RapidXml does not make copies of string data, such as node names and values. Instead, it stores pointers to interior of the source text.</para></li><li><para>Use of template metaprogramming techniques. This allows it to move much of the work to compile time. Through magic of the templates, C++ compiler generates a separate copy of parsing code for any combination of parser flags you use. In each copy, all possible decisions are made at compile time and all unused code is omitted.</para></li><li><para>Extensive use of lookup tables for parsing.</para></li><li><para>Hand-tuned C++ with profiling done on several most popular CPUs.</para></li></ul></para><para>This results in a very small and fast code: a parser which is custom tailored to exact needs with each invocation.</para><sect2><h3 id="namespacerapidxml_1performance_charts">4.1 Comparison With Other Parsers</h3><para>The table below compares speed of RapidXml to some other parsers, and to <code>strlen()</code> function executed on the same data. On a modern CPU (as of 2007), you can expect parsing throughput to be close to 1 GB/s. As a rule of thumb, parsing speed is about 50-100x faster than Xerces DOM, 30-60x faster than TinyXml, 3-12x faster than pugxml, and about 5% - 30% faster than pugixml, the fastest XML parser I know of.</para><para><ul><li><para>The test file is a real-world, 50kB large, moderately dense XML file. </para></li><li><para>All timing is done by using RDTSC instruction present in Pentium-compatible CPUs. </para></li><li><para>No profile-guided optimizations are used. </para></li><li><para>All parsers are running in their fastest modes. </para></li><li><para>The results are given in CPU cycles per character, so frequency of CPUs is irrelevant. </para></li><li><para>The results are minimum values from a large number of runs, to minimize effects of operating system activity, task switching, interrupt handling etc. </para></li><li><para>A single parse of the test file takes about 1/10th of a millisecond, so with large number of runs there is a good chance of hitting at least one no-interrupt streak, and obtaining undisturbed results. </para></li></ul><table rows="9" cols="7" border="1" cellpadding="3pt"><tr><th thead="yes"><para><center>Platform</center></para></th><th thead="yes"><para><center>Compiler</center></para></th><th thead="yes"><para>strlen() </para></th><th thead="yes"><para>RapidXml </para></th><th thead="yes"><para>pugixml 0.3 </para></th><th thead="yes"><para>pugxml </para></th><th thead="yes"><para>TinyXml </para></th></tr><tr><td thead="no"><para><center>Pentium 4</center></para></td><td thead="no"><para><center>MSVC 8.0</center></para></td><td thead="no"><para><center>2.5</center></para></td><td thead="no"><para><center>5.4</center></para></td><td thead="no"><para><center>7.0</center></para></td><td thead="no"><para><center>61.7</center></para></td><td thead="no"><para><center>298.8</center></para></td></tr><tr><td thead="no"><para><center>Pentium 4</center></para></td><td thead="no"><para><center>gcc 4.1.1</center></para></td><td thead="no"><para><center>0.8</center></para></td><td thead="no"><para><center>6.1</center></para></td><td thead="no"><para><center>9.5</center></para></td><td thead="no"><para><center>67.0</center></para></td><td thead="no"><para><center>413.2</center></para></td></tr><tr><td thead="no"><para><center>Core 2</center></para></td><td thead="no"><para><center>MSVC 8.0</center></para></td><td thead="no"><para><center>1.0</center></para></td><td thead="no"><para><center>4.5</center></para></td><td thead="no"><para><center>5.0</center></para></td><td thead="no"><para><center>24.6</center></para></td><td thead="no"><para><center>154.8</center></para></td></tr><tr><td thead="no"><para><center>Core 2</center></para></td><td thead="no"><para><center>gcc 4.1.1</center></para></td><td thead="no"><para><center>0.6</center></para></td><td thead="no"><para><center>4.6</center></para></td><td thead="no"><para><center>5.4</center></para></td><td thead="no"><para><center>28.3</center></para></td><td thead="no"><para><center>229.3</center></para></td></tr><tr><td thead="no"><para><center>Athlon XP</center></para></td><td thead="no"><para><center>MSVC 8.0</center></para></td><td thead="no"><para><center>3.1</center></para></td><td thead="no"><para><center>7.7</center></para></td><td thead="no"><para><center>8.0</center></para></td><td thead="no"><para><center>25.5</center></para></td><td thead="no"><para><center>182.6</center></para></td></tr><tr><td thead="no"><para><center>Athlon XP</center></para></td><td thead="no"><para><center>gcc 4.1.1</center></para></td><td thead="no"><para><center>0.9</center></para></td><td thead="no"><para><center>8.2</center></para></td><td thead="no"><para><center>9.2</center></para></td><td thead="no"><para><center>33.7</center></para></td><td thead="no"><para><center>265.2</center></para></td></tr><tr><td thead="no"><para><center>Pentium 3</center></para></td><td thead="no"><para><center>MSVC 8.0</center></para></td><td thead="no"><para><center>2.0</center></para></td><td thead="no"><para><center>6.3</center></para></td><td thead="no"><para><center>7.0</center></para></td><td thead="no"><para><center>30.9</center></para></td><td thead="no"><para><center>211.9</center></para></td></tr><tr><td thead="no"><para><center>Pentium 3</center></para></td><td thead="no"><para><center>gcc 4.1.1</center></para></td><td thead="no"><para><center>1.0</center></para></td><td thead="no"><para><center>6.7</center></para></td><td thead="no"><para><center>8.9</center></para></td><td thead="no"><para><center>35.3</center></para></td><td thead="no"><para><center>316.0</center></para></td></tr></table><i>(*) All results are in CPU cycles per character of source text</i></para></sect2></sect1><sect1><h2 id="namespacerapidxml_1reference">5. Reference</h2><para>This section lists all classes, functions, constants etc. and describes them in detail. </para></sect1></detaileddescription><dl><dt>class
+ template
+ <a href="#classrapidxml_1_1memory__pool">rapidxml::memory_pool</a></dt><dt class="indented">
+ constructor
+ <a href="#classrapidxml_1_1memory__pool_f8fb3c8f1a564f8045c40bcd07a89866_1f8fb3c8f1a564f8045c40bcd07a89866">memory_pool()</a></dt><dt class="indented">
+ destructor
+ <a href="#classrapidxml_1_1memory__pool_6f8c7990d9ec1ed2acf6558b238570eb_16f8c7990d9ec1ed2acf6558b238570eb">~memory_pool()</a></dt><dt class="indented">function <a href="#classrapidxml_1_1memory__pool_750ba3c610b129ac057d817509d08f41_1750ba3c610b129ac057d817509d08f41">allocate_node(node_type type, const Ch *name=0, const Ch *value=0, std::size_t name_size=0, std::size_t value_size=0)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1memory__pool_462de142669e0ff649e8e615b82bf457_1462de142669e0ff649e8e615b82bf457">allocate_attribute(const Ch *name=0, const Ch *value=0, std::size_t name_size=0, std::size_t value_size=0)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1memory__pool_69729185bc59b0875192d667c47b8859_169729185bc59b0875192d667c47b8859">allocate_string(const Ch *source=0, std::size_t size=0)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1memory__pool_95c49fcb056e9103ec906a59e3e01d76_195c49fcb056e9103ec906a59e3e01d76">clone_node(const xml_node&lt; Ch &gt; *source, xml_node&lt; Ch &gt; *result=0)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1memory__pool_c8bb3912a3ce86b15842e79d0b421204_1c8bb3912a3ce86b15842e79d0b421204">clear()</a></dt><dt class="indented">function <a href="#classrapidxml_1_1memory__pool_c0a55a6ef0837dca67572e357100d78a_1c0a55a6ef0837dca67572e357100d78a">set_allocator(alloc_func *af, free_func *ff)</a></dt><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><p/><p/><dt>class <a href="#classrapidxml_1_1parse__error">rapidxml::parse_error</a></dt><dt class="indented">
+ constructor
+ <a href="#classrapidxml_1_1parse__error_4dd8d1bdbd9221df4dcb90cafaee3332_14dd8d1bdbd9221df4dcb90cafaee3332">parse_error(const char *what, void *where)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1parse__error_ff06f49065b54a8a86e02e9a2441a8ba_1ff06f49065b54a8a86e02e9a2441a8ba">what() const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1parse__error_377be7d201d95221c318682c35377aca_1377be7d201d95221c318682c35377aca">where() const </a></dt><dt class="indented"/><dt class="indented"/><p/><dt>class
+ template
+ <a href="#classrapidxml_1_1xml__attribute">rapidxml::xml_attribute</a></dt><dt class="indented">
+ constructor
+ <a href="#classrapidxml_1_1xml__attribute_d5464aadf08269a886b730993525db34_1d5464aadf08269a886b730993525db34">xml_attribute()</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__attribute_77aea7d8d996ba4f6bd61cc478a4e72d_177aea7d8d996ba4f6bd61cc478a4e72d">document() const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__attribute_5c4a98d2b75f9b41b12c110108fd55ab_15c4a98d2b75f9b41b12c110108fd55ab">previous_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__attribute_1b8a814d0d3a7165396b08433eee8a91_11b8a814d0d3a7165396b08433eee8a91">next_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const </a></dt><dt class="indented"/><dt class="indented"/><dt class="indented"/><p/><dt>class
+ template
+ <a href="#classrapidxml_1_1xml__base">rapidxml::xml_base</a></dt><dt class="indented">
+ constructor
+ <a href="#classrapidxml_1_1xml__base_23630d2c130a9e0e3f3afa7584a9b218_123630d2c130a9e0e3f3afa7584a9b218">xml_base()</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__base_622eade29fdf7806d3ef93ac4d90e707_1622eade29fdf7806d3ef93ac4d90e707">name() const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__base_0dae694c8f7e4d89f1003e2f3a15a43c_10dae694c8f7e4d89f1003e2f3a15a43c">name_size() const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__base_c54fa4987fb503916a7b541eb15c9c7f_1c54fa4987fb503916a7b541eb15c9c7f">value() const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__base_aed5ae791b7164c1ee5e649198cbb3db_1aed5ae791b7164c1ee5e649198cbb3db">value_size() const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__base_4e7e23d06d48126c65b1f6266acfba5c_14e7e23d06d48126c65b1f6266acfba5c">name(const Ch *name, std::size_t size)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__base_e099c291e104a0d277307fe71f5e0f9e_1e099c291e104a0d277307fe71f5e0f9e">name(const Ch *name)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__base_d9640aa3f5374673cb72a5289b6c91eb_1d9640aa3f5374673cb72a5289b6c91eb">value(const Ch *value, std::size_t size)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__base_18c7469acdca771de9b4f3054053029c_118c7469acdca771de9b4f3054053029c">value(const Ch *value)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__base_798e8df7ea53ade4d9f0701017dce80e_1798e8df7ea53ade4d9f0701017dce80e">parent() const </a></dt><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><p/><dt>class
+ template
+ <a href="#classrapidxml_1_1xml__document">rapidxml::xml_document</a></dt><dt class="indented">
+ constructor
+ <a href="#classrapidxml_1_1xml__document_6ce266cc52d549c42abe3a3d5e8af9ba_16ce266cc52d549c42abe3a3d5e8af9ba">xml_document()</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c">parse(Ch *text)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__document_c8bb3912a3ce86b15842e79d0b421204_1c8bb3912a3ce86b15842e79d0b421204">clear()</a></dt><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><p/><p/><p/><p/><p/><p/><p/><p/><p/><dt>class
+ template
+ <a href="#classrapidxml_1_1xml__node">rapidxml::xml_node</a></dt><dt class="indented">
+ constructor
+ <a href="#classrapidxml_1_1xml__node_34c55af3504549a475e5b9dfcaa6adf5_134c55af3504549a475e5b9dfcaa6adf5">xml_node(node_type type)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_975e86937621ae4afe6a423219de30d0_1975e86937621ae4afe6a423219de30d0">type() const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_77aea7d8d996ba4f6bd61cc478a4e72d_177aea7d8d996ba4f6bd61cc478a4e72d">document() const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_7823e36687669e59c2afdf66334ef35a_17823e36687669e59c2afdf66334ef35a">first_node(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_fcb6e2209b591a36d2dadba20d2bc7cc_1fcb6e2209b591a36d2dadba20d2bc7cc">last_node(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_ac2f6886c0107e9d5f156e9542546df6_1ac2f6886c0107e9d5f156e9542546df6">previous_sibling(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_b3ead2cefecc03a813836203e3f6f38f_1b3ead2cefecc03a813836203e3f6f38f">next_sibling(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_5810a09f82f8d53efbe9456286dcec83_15810a09f82f8d53efbe9456286dcec83">first_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_16953d66751b5b949ee4ee2d9c0bc63a_116953d66751b5b949ee4ee2d9c0bc63a">last_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const </a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_a78759bfa429fa2ab6bc5fe617cfa3cf_1a78759bfa429fa2ab6bc5fe617cfa3cf">type(node_type type)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_0c39df6617e709eb2fba11300dea63f2_10c39df6617e709eb2fba11300dea63f2">prepend_node(xml_node&lt; Ch &gt; *child)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_86de2e22276826089b7baed2599f8dee_186de2e22276826089b7baed2599f8dee">append_node(xml_node&lt; Ch &gt; *child)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_780972a57fc447250ab47cc8f421b65e_1780972a57fc447250ab47cc8f421b65e">insert_node(xml_node&lt; Ch &gt; *where, xml_node&lt; Ch &gt; *child)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_9a31d861e1bddc710839c551a5d2b3a4_19a31d861e1bddc710839c551a5d2b3a4">remove_first_node()</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_87addf2bc127ee31aa4b5295d3c9b530_187addf2bc127ee31aa4b5295d3c9b530">remove_last_node()</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_9316463a2201631e7e2062b17729f9cd_19316463a2201631e7e2062b17729f9cd">remove_node(xml_node&lt; Ch &gt; *where)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_0218147d13e41d5fa60ced4e7a7e9726_10218147d13e41d5fa60ced4e7a7e9726">remove_all_nodes()</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_f6dffa513da74cc0be71a7ba84f8265e_1f6dffa513da74cc0be71a7ba84f8265e">prepend_attribute(xml_attribute&lt; Ch &gt; *attribute)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_8fbd4f5ef7169d493da9f8d87ac04b77_18fbd4f5ef7169d493da9f8d87ac04b77">append_attribute(xml_attribute&lt; Ch &gt; *attribute)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_070d5888b0557fe06a5b24961de1b988_1070d5888b0557fe06a5b24961de1b988">insert_attribute(xml_attribute&lt; Ch &gt; *where, xml_attribute&lt; Ch &gt; *attribute)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_4eea4a7f6cb484ca9944f7eafe6e1843_14eea4a7f6cb484ca9944f7eafe6e1843">remove_first_attribute()</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_37d87c4d5d89fa0cf05b72ee8d4cba3b_137d87c4d5d89fa0cf05b72ee8d4cba3b">remove_last_attribute()</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_c75154db2e768c0e5b541fc8cd0775ab_1c75154db2e768c0e5b541fc8cd0775ab">remove_attribute(xml_attribute&lt; Ch &gt; *where)</a></dt><dt class="indented">function <a href="#classrapidxml_1_1xml__node_59e6ad4cfd5e8096c052e71d79561eda_159e6ad4cfd5e8096c052e71d79561eda">remove_all_attributes()</a></dt><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><p/><dt>namespace <a href="#namespacerapidxml">rapidxml</a></dt><dt class="indented">enum <a href="#namespacerapidxml_6a276b85e2da28c5f9c3dbce61c55682_16a276b85e2da28c5f9c3dbce61c55682">node_type</a></dt><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented"/><dt class="indented">function <a href="#namespacerapidxml_ff5d67f74437199d316d2b2660653ae1_1ff5d67f74437199d316d2b2660653ae1">parse_error_handler(const char *what, void *where)</a></dt><dt class="indented">function <a href="#namespacerapidxml_b94d570fc4c4ab2423813cd0243326b1_1b94d570fc4c4ab2423813cd0243326b1">print(OutIt out, const xml_node&lt; Ch &gt; &amp;node, int flags=0)</a></dt><dt class="indented">function <a href="#namespacerapidxml_13bc37d6d1047acb0efdbc1689221a5e_113bc37d6d1047acb0efdbc1689221a5e">print(std::basic_ostream&lt; Ch &gt; &amp;out, const xml_node&lt; Ch &gt; &amp;node, int flags=0)</a></dt><dt class="indented">function <a href="#namespacerapidxml_5619b38000d967fb223b2b0a8c17463a_15619b38000d967fb223b2b0a8c17463a">operator&lt;&lt;(std::basic_ostream&lt; Ch &gt; &amp;out, const xml_node&lt; Ch &gt; &amp;node)</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_87e8bbab53702cf3b438bd553c10b6b9_187e8bbab53702cf3b438bd553c10b6b9">parse_no_data_nodes</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_97e2c4fdc04fae17126f9971a4fc993e_197e2c4fdc04fae17126f9971a4fc993e">parse_no_element_values</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_9cae3801e70437cbc410c24bf6be691c_19cae3801e70437cbc410c24bf6be691c">parse_no_string_terminators</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_7223b7815c4fb8b42e6e4e77e1ea6b97_17223b7815c4fb8b42e6e4e77e1ea6b97">parse_no_entity_translation</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_ccde57f6054857ee4042a1b4d98c83b9_1ccde57f6054857ee4042a1b4d98c83b9">parse_no_utf8</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_52e2c934ad9c845a5f4cc49570470556_152e2c934ad9c845a5f4cc49570470556">parse_declaration_node</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_0f7479dacbc868456d07897a8c072784_10f7479dacbc868456d07897a8c072784">parse_comment_nodes</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_8e187746ba1ca04f107951ad32df962e_18e187746ba1ca04f107951ad32df962e">parse_doctype_node</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_1c20b2b2b75711cd76423e119c49f830_11c20b2b2b75711cd76423e119c49f830">parse_pi_nodes</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_a5daff9d61c7d4eaf98e4d42efe628ee_1a5daff9d61c7d4eaf98e4d42efe628ee">parse_validate_closing_tags</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_ac1f06b1afd47b812732fb521b146fd9_1ac1f06b1afd47b812732fb521b146fd9">parse_trim_whitespace</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_88f95d4e275ba01408fefde83078651b_188f95d4e275ba01408fefde83078651b">parse_normalize_whitespace</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_45751cf2f38fd6915f35b3122b46d5b6_145751cf2f38fd6915f35b3122b46d5b6">parse_default</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_a97ba1a0a79a6d66f4eef3612508d943_1a97ba1a0a79a6d66f4eef3612508d943">parse_non_destructive</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_398c5476e76102f8bd76c10bb0abbe10_1398c5476e76102f8bd76c10bb0abbe10">parse_fastest</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_b4f2515265facb42291570307924bd57_1b4f2515265facb42291570307924bd57">parse_full</a></dt><dt class="indented">
+ constant
+ <a href="#namespacerapidxml_b08b8d4293c203b69ed6c5ae77ac1907_1b08b8d4293c203b69ed6c5ae77ac1907">print_no_indenting</a></dt><p/><p/><p/><p/></dl><hr/><h3 class="reference-header" id="classrapidxml_1_1memory__pool">class
+ template
+ rapidxml::memory_pool</h3>
+
+ Defined in <a href="rapidxml.hpp">rapidxml.hpp</a><br/>
+ Base class for
+ <a href="#classrapidxml_1_1xml__document">xml_document</a> <h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">This class is used by the parser to create new nodes and attributes, without overheads of dynamic memory allocation. In most cases, you will not need to use this class directly. However, if you need to create nodes manually or modify names/values of nodes, you are encouraged to use <a href="#classrapidxml_1_1memory__pool" kindref="compound">memory_pool</a> of relevant <a href="#classrapidxml_1_1xml__document" kindref="compound">xml_document</a> to allocate the memory. Not only is this faster than allocating them by using <code>new</code> operator, but also their lifetime will be tied to the lifetime of document, possibly simplyfing memory management. <br/><br/>
+ Call <a href="#classrapidxml_1_1memory__pool_750ba3c610b129ac057d817509d08f41_1750ba3c610b129ac057d817509d08f41" kindref="member">allocate_node()</a> or <a href="#classrapidxml_1_1memory__pool_462de142669e0ff649e8e615b82bf457_1462de142669e0ff649e8e615b82bf457" kindref="member">allocate_attribute()</a> functions to obtain new nodes or attributes from the pool. You can also call <a href="#classrapidxml_1_1memory__pool_69729185bc59b0875192d667c47b8859_169729185bc59b0875192d667c47b8859" kindref="member">allocate_string()</a> function to allocate strings. Such strings can then be used as names or values of nodes without worrying about their lifetime. Note that there is no <code>free()</code> function -- all allocations are freed at once when <a href="#classrapidxml_1_1memory__pool_c8bb3912a3ce86b15842e79d0b421204_1c8bb3912a3ce86b15842e79d0b421204" kindref="member">clear()</a> function is called, or when the pool is destroyed. <br/><br/>
+ It is also possible to create a standalone <a href="#classrapidxml_1_1memory__pool" kindref="compound">memory_pool</a>, and use it to allocate nodes, whose lifetime will not be tied to any document. <br/><br/>
+ Pool maintains <code>RAPIDXML_STATIC_POOL_SIZE</code> bytes of statically allocated memory. Until static memory is exhausted, no dynamic memory allocations are done. When static memory is exhausted, pool allocates additional blocks of memory of size <code>RAPIDXML_DYNAMIC_POOL_SIZE</code> each, by using global <code>new[]</code> and <code>delete[]</code> operators. This behaviour can be changed by setting custom allocation routines. Use <a href="#classrapidxml_1_1memory__pool_c0a55a6ef0837dca67572e357100d78a_1c0a55a6ef0837dca67572e357100d78a" kindref="member">set_allocator()</a> function to set them. <br/><br/>
+ Allocations for nodes, attributes and strings are aligned at <code>RAPIDXML_ALIGNMENT</code> bytes. This value defaults to the size of pointer on target architecture. <br/><br/>
+ To obtain absolutely top performance from the parser, it is important that all nodes are allocated from a single, contiguous block of memory. Otherwise, cache misses when jumping between two (or more) disjoint blocks of memory can slow down parsing quite considerably. If required, you can tweak <code>RAPIDXML_STATIC_POOL_SIZE</code>, <code>RAPIDXML_DYNAMIC_POOL_SIZE</code> and <code>RAPIDXML_ALIGNMENT</code> to obtain best wasted memory to performance compromise. To do it, define their values before <a href="#rapidxml_8hpp" kindref="compound">rapidxml.hpp</a> file is included. </para><h4>Parameters</h4><dl><dt class="parameter-name">Ch</dt><dd>Character type of created nodes. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1memory__pool_f8fb3c8f1a564f8045c40bcd07a89866_1f8fb3c8f1a564f8045c40bcd07a89866">
+ constructor
+ memory_pool::memory_pool</h3><h4>Synopsis</h4><code class="synopsis">memory_pool();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Constructs empty pool with default allocator functions. </para><p/><h3 class="reference-header" id="classrapidxml_1_1memory__pool_6f8c7990d9ec1ed2acf6558b238570eb_16f8c7990d9ec1ed2acf6558b238570eb">
+ destructor
+ memory_pool::~memory_pool</h3><h4>Synopsis</h4><code class="synopsis">~memory_pool();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Destroys pool and frees all the memory. This causes memory occupied by nodes allocated by the pool to be freed. Nodes allocated from the pool are no longer valid. </para><p/><h3 class="reference-header" id="classrapidxml_1_1memory__pool_750ba3c610b129ac057d817509d08f41_1750ba3c610b129ac057d817509d08f41">function memory_pool::allocate_node</h3><h4>Synopsis</h4><code class="synopsis">xml_node&lt;Ch&gt;* allocate_node(node_type type, const Ch *name=0, const Ch *value=0, std::size_t name_size=0, std::size_t value_size=0);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Allocates a new node from the pool, and optionally assigns name and value to it. If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>. If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function will call <a href="#namespacerapidxml_ff5d67f74437199d316d2b2660653ae1_1ff5d67f74437199d316d2b2660653ae1" kindref="member">rapidxml::parse_error_handler()</a> function. </para><h4>Parameters</h4><dl><dt class="parameter-name">type</dt><dd class="parameter-def">Type of node to create. </dd></dl><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name to assign to the node, or 0 to assign no name. </dd></dl><dl><dt class="parameter-name">value</dt><dd class="parameter-def">Value to assign to the node, or 0 to assign no value. </dd></dl><dl><dt class="parameter-name">name_size</dt><dd class="parameter-def">Size of name to assign, or 0 to automatically calculate size from name string. </dd></dl><dl><dt class="parameter-name">value_size</dt><dd class="parameter-def">Size of value to assign, or 0 to automatically calculate size from value string. </dd></dl><h4>Returns</h4>Pointer to allocated node. This pointer will never be NULL. <p/><h3 class="reference-header" id="classrapidxml_1_1memory__pool_462de142669e0ff649e8e615b82bf457_1462de142669e0ff649e8e615b82bf457">function memory_pool::allocate_attribute</h3><h4>Synopsis</h4><code class="synopsis">xml_attribute&lt;Ch&gt;* allocate_attribute(const Ch *name=0, const Ch *value=0, std::size_t name_size=0, std::size_t value_size=0);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Allocates a new attribute from the pool, and optionally assigns name and value to it. If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>. If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function will call <a href="#namespacerapidxml_ff5d67f74437199d316d2b2660653ae1_1ff5d67f74437199d316d2b2660653ae1" kindref="member">rapidxml::parse_error_handler()</a> function. </para><h4>Parameters</h4><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name to assign to the attribute, or 0 to assign no name. </dd></dl><dl><dt class="parameter-name">value</dt><dd class="parameter-def">Value to assign to the attribute, or 0 to assign no value. </dd></dl><dl><dt class="parameter-name">name_size</dt><dd class="parameter-def">Size of name to assign, or 0 to automatically calculate size from name string. </dd></dl><dl><dt class="parameter-name">value_size</dt><dd class="parameter-def">Size of value to assign, or 0 to automatically calculate size from value string. </dd></dl><h4>Returns</h4>Pointer to allocated attribute. This pointer will never be NULL. <p/><h3 class="reference-header" id="classrapidxml_1_1memory__pool_69729185bc59b0875192d667c47b8859_169729185bc59b0875192d667c47b8859">function memory_pool::allocate_string</h3><h4>Synopsis</h4><code class="synopsis">Ch* allocate_string(const Ch *source=0, std::size_t size=0);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Allocates a char array of given size from the pool, and optionally copies a given string to it. If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>. If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function will call <a href="#namespacerapidxml_ff5d67f74437199d316d2b2660653ae1_1ff5d67f74437199d316d2b2660653ae1" kindref="member">rapidxml::parse_error_handler()</a> function. </para><h4>Parameters</h4><dl><dt class="parameter-name">source</dt><dd class="parameter-def">String to initialize the allocated memory with, or 0 to not initialize it. </dd></dl><dl><dt class="parameter-name">size</dt><dd class="parameter-def">Number of characters to allocate, or zero to calculate it automatically from source string length; if size is 0, source string must be specified and null terminated. </dd></dl><h4>Returns</h4>Pointer to allocated char array. This pointer will never be NULL. <p/><h3 class="reference-header" id="classrapidxml_1_1memory__pool_95c49fcb056e9103ec906a59e3e01d76_195c49fcb056e9103ec906a59e3e01d76">function memory_pool::clone_node</h3><h4>Synopsis</h4><code class="synopsis">xml_node&lt;Ch&gt;* clone_node(const xml_node&lt; Ch &gt; *source, xml_node&lt; Ch &gt; *result=0);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Clones an <a href="#classrapidxml_1_1xml__node" kindref="compound">xml_node</a> and its hierarchy of child nodes and attributes. Nodes and attributes are allocated from this memory pool. Names and values are not cloned, they are shared between the clone and the source. Result node can be optionally specified as a second parameter, in which case its contents will be replaced with cloned source node. This is useful when you want to clone entire document. </para><h4>Parameters</h4><dl><dt class="parameter-name">source</dt><dd class="parameter-def">Node to clone. </dd></dl><dl><dt class="parameter-name">result</dt><dd class="parameter-def">Node to put results in, or 0 to automatically allocate result node </dd></dl><h4>Returns</h4>Pointer to cloned node. This pointer will never be NULL. <p/><h3 class="reference-header" id="classrapidxml_1_1memory__pool_c8bb3912a3ce86b15842e79d0b421204_1c8bb3912a3ce86b15842e79d0b421204">function memory_pool::clear</h3><h4>Synopsis</h4><code class="synopsis">void clear();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Clears the pool. This causes memory occupied by nodes allocated by the pool to be freed. Any nodes or strings allocated from the pool will no longer be valid. </para><p/><h3 class="reference-header" id="classrapidxml_1_1memory__pool_c0a55a6ef0837dca67572e357100d78a_1c0a55a6ef0837dca67572e357100d78a">function memory_pool::set_allocator</h3><h4>Synopsis</h4><code class="synopsis">void set_allocator(alloc_func *af, free_func *ff);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Sets or resets the user-defined memory allocation functions for the pool. This can only be called when no memory is allocated from the pool yet, otherwise results are undefined. Allocation function must not return invalid pointer on failure. It should either throw, stop the program, or use <code>longjmp()</code> function to pass control to other place of program. If it returns invalid pointer, results are undefined. <br/><br/>
+ User defined allocation functions must have the following forms: <br/><code><br/>
+void *allocate(std::size_t size); <br/>
+void free(void *pointer); </code><br/></para><h4>Parameters</h4><dl><dt class="parameter-name">af</dt><dd class="parameter-def">Allocation function, or 0 to restore default function </dd></dl><dl><dt class="parameter-name">ff</dt><dd class="parameter-def">Free function, or 0 to restore default function </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1parse__error">class rapidxml::parse_error</h3>
+
+ Defined in <a href="rapidxml.hpp">rapidxml.hpp</a><br/><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse error exception. This exception is thrown by the parser when an error occurs. Use <a href="#classrapidxml_1_1parse__error_ff06f49065b54a8a86e02e9a2441a8ba_1ff06f49065b54a8a86e02e9a2441a8ba" kindref="member">what()</a> function to get human-readable error message. Use <a href="#classrapidxml_1_1parse__error_377be7d201d95221c318682c35377aca_1377be7d201d95221c318682c35377aca" kindref="member">where()</a> function to get a pointer to position within source text where error was detected. <br/><br/>
+ If throwing exceptions by the parser is undesirable, it can be disabled by defining RAPIDXML_NO_EXCEPTIONS macro before <a href="#rapidxml_8hpp" kindref="compound">rapidxml.hpp</a> is included. This will cause the parser to call <a href="#namespacerapidxml_ff5d67f74437199d316d2b2660653ae1_1ff5d67f74437199d316d2b2660653ae1" kindref="member">rapidxml::parse_error_handler()</a> function instead of throwing an exception. This function must be defined by the user. <br/><br/>
+ This class derives from <code>std::exception</code> class. </para><p/><h3 class="reference-header" id="classrapidxml_1_1parse__error_4dd8d1bdbd9221df4dcb90cafaee3332_14dd8d1bdbd9221df4dcb90cafaee3332">
+ constructor
+ parse_error::parse_error</h3><h4>Synopsis</h4><code class="synopsis">parse_error(const char *what, void *where);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Constructs parse error. </para><p/><h3 class="reference-header" id="classrapidxml_1_1parse__error_ff06f49065b54a8a86e02e9a2441a8ba_1ff06f49065b54a8a86e02e9a2441a8ba">function parse_error::what</h3><h4>Synopsis</h4><code class="synopsis">virtual const char* what() const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets human readable description of error. </para><h4>Returns</h4>Pointer to null terminated description of the error. <p/><h3 class="reference-header" id="classrapidxml_1_1parse__error_377be7d201d95221c318682c35377aca_1377be7d201d95221c318682c35377aca">function parse_error::where</h3><h4>Synopsis</h4><code class="synopsis">Ch* where() const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets pointer to character data where error happened. Ch should be the same as char type of <a href="#classrapidxml_1_1xml__document" kindref="compound">xml_document</a> that produced the error. </para><h4>Returns</h4>Pointer to location within the parsed string where error occured. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__attribute">class
+ template
+ rapidxml::xml_attribute</h3>
+
+ Defined in <a href="rapidxml.hpp">rapidxml.hpp</a><br/>
+ Inherits from
+ <a href="#classrapidxml_1_1xml__base">xml_base</a> <br/><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Class representing attribute node of XML document. Each attribute has name and value strings, which are available through <a href="#classrapidxml_1_1xml__base_622eade29fdf7806d3ef93ac4d90e707_1622eade29fdf7806d3ef93ac4d90e707" kindref="member">name()</a> and <a href="#classrapidxml_1_1xml__base_c54fa4987fb503916a7b541eb15c9c7f_1c54fa4987fb503916a7b541eb15c9c7f" kindref="member">value()</a> functions (inherited from <a href="#classrapidxml_1_1xml__base" kindref="compound">xml_base</a>). Note that after parse, both name and value of attribute will point to interior of source text used for parsing. Thus, this text must persist in memory for the lifetime of attribute. </para><h4>Parameters</h4><dl><dt class="parameter-name">Ch</dt><dd>Character type to use. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__attribute_d5464aadf08269a886b730993525db34_1d5464aadf08269a886b730993525db34">
+ constructor
+ xml_attribute::xml_attribute</h3><h4>Synopsis</h4><code class="synopsis">xml_attribute();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Constructs an empty attribute with the specified type. Consider using <a href="#classrapidxml_1_1memory__pool" kindref="compound">memory_pool</a> of appropriate <a href="#classrapidxml_1_1xml__document" kindref="compound">xml_document</a> if allocating attributes manually. </para><p/><h3 class="reference-header" id="classrapidxml_1_1xml__attribute_77aea7d8d996ba4f6bd61cc478a4e72d_177aea7d8d996ba4f6bd61cc478a4e72d">function xml_attribute::document</h3><h4>Synopsis</h4><code class="synopsis">xml_document&lt;Ch&gt;* document() const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets document of which attribute is a child. </para><h4>Returns</h4>Pointer to document that contains this attribute, or 0 if there is no parent document. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__attribute_5c4a98d2b75f9b41b12c110108fd55ab_15c4a98d2b75f9b41b12c110108fd55ab">function xml_attribute::previous_attribute</h3><h4>Synopsis</h4><code class="synopsis">xml_attribute&lt;Ch&gt;* previous_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets previous attribute, optionally matching attribute name. </para><h4>Parameters</h4><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name of attribute to find, or 0 to return previous attribute regardless of its name; this string doesn&apos;t have to be zero-terminated if name_size is non-zero </dd></dl><dl><dt class="parameter-name">name_size</dt><dd class="parameter-def">Size of name, in characters, or 0 to have size calculated automatically from string </dd></dl><dl><dt class="parameter-name">case_sensitive</dt><dd class="parameter-def">Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters </dd></dl><h4>Returns</h4>Pointer to found attribute, or 0 if not found. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__attribute_1b8a814d0d3a7165396b08433eee8a91_11b8a814d0d3a7165396b08433eee8a91">function xml_attribute::next_attribute</h3><h4>Synopsis</h4><code class="synopsis">xml_attribute&lt;Ch&gt;* next_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets next attribute, optionally matching attribute name. </para><h4>Parameters</h4><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name of attribute to find, or 0 to return next attribute regardless of its name; this string doesn&apos;t have to be zero-terminated if name_size is non-zero </dd></dl><dl><dt class="parameter-name">name_size</dt><dd class="parameter-def">Size of name, in characters, or 0 to have size calculated automatically from string </dd></dl><dl><dt class="parameter-name">case_sensitive</dt><dd class="parameter-def">Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters </dd></dl><h4>Returns</h4>Pointer to found attribute, or 0 if not found. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__base">class
+ template
+ rapidxml::xml_base</h3>
+
+ Defined in <a href="rapidxml.hpp">rapidxml.hpp</a><br/>
+ Base class for
+ <a href="#classrapidxml_1_1xml__attribute">xml_attribute</a> <a href="#classrapidxml_1_1xml__node">xml_node</a> <h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Base class for <a href="#classrapidxml_1_1xml__node" kindref="compound">xml_node</a> and <a href="#classrapidxml_1_1xml__attribute" kindref="compound">xml_attribute</a> implementing common functions: <a href="#classrapidxml_1_1xml__base_622eade29fdf7806d3ef93ac4d90e707_1622eade29fdf7806d3ef93ac4d90e707" kindref="member">name()</a>, <a href="#classrapidxml_1_1xml__base_0dae694c8f7e4d89f1003e2f3a15a43c_10dae694c8f7e4d89f1003e2f3a15a43c" kindref="member">name_size()</a>, <a href="#classrapidxml_1_1xml__base_c54fa4987fb503916a7b541eb15c9c7f_1c54fa4987fb503916a7b541eb15c9c7f" kindref="member">value()</a>, <a href="#classrapidxml_1_1xml__base_aed5ae791b7164c1ee5e649198cbb3db_1aed5ae791b7164c1ee5e649198cbb3db" kindref="member">value_size()</a> and <a href="#classrapidxml_1_1xml__base_798e8df7ea53ade4d9f0701017dce80e_1798e8df7ea53ade4d9f0701017dce80e" kindref="member">parent()</a>. </para><h4>Parameters</h4><dl><dt class="parameter-name">Ch</dt><dd>Character type to use </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__base_23630d2c130a9e0e3f3afa7584a9b218_123630d2c130a9e0e3f3afa7584a9b218">
+ constructor
+ xml_base::xml_base</h3><h4>Synopsis</h4><code class="synopsis">xml_base();
+ </code><p/><h3 class="reference-header" id="classrapidxml_1_1xml__base_622eade29fdf7806d3ef93ac4d90e707_1622eade29fdf7806d3ef93ac4d90e707">function xml_base::name</h3><h4>Synopsis</h4><code class="synopsis">Ch* name() const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets name of the node. Interpretation of name depends on type of node. Note that name will not be zero-terminated if <a href="#namespacerapidxml_9cae3801e70437cbc410c24bf6be691c_19cae3801e70437cbc410c24bf6be691c" kindref="member">rapidxml::parse_no_string_terminators</a> option was selected during parse. <br/><br/>
+ Use <a href="#classrapidxml_1_1xml__base_0dae694c8f7e4d89f1003e2f3a15a43c_10dae694c8f7e4d89f1003e2f3a15a43c" kindref="member">name_size()</a> function to determine length of the name. </para><h4>Returns</h4>Name of node, or empty string if node has no name. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__base_0dae694c8f7e4d89f1003e2f3a15a43c_10dae694c8f7e4d89f1003e2f3a15a43c">function xml_base::name_size</h3><h4>Synopsis</h4><code class="synopsis">std::size_t name_size() const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets size of node name, not including terminator character. This function works correctly irrespective of whether name is or is not zero terminated. </para><h4>Returns</h4>Size of node name, in characters. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__base_c54fa4987fb503916a7b541eb15c9c7f_1c54fa4987fb503916a7b541eb15c9c7f">function xml_base::value</h3><h4>Synopsis</h4><code class="synopsis">Ch* value() const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets value of node. Interpretation of value depends on type of node. Note that value will not be zero-terminated if <a href="#namespacerapidxml_9cae3801e70437cbc410c24bf6be691c_19cae3801e70437cbc410c24bf6be691c" kindref="member">rapidxml::parse_no_string_terminators</a> option was selected during parse. <br/><br/>
+ Use <a href="#classrapidxml_1_1xml__base_aed5ae791b7164c1ee5e649198cbb3db_1aed5ae791b7164c1ee5e649198cbb3db" kindref="member">value_size()</a> function to determine length of the value. </para><h4>Returns</h4>Value of node, or empty string if node has no value. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__base_aed5ae791b7164c1ee5e649198cbb3db_1aed5ae791b7164c1ee5e649198cbb3db">function xml_base::value_size</h3><h4>Synopsis</h4><code class="synopsis">std::size_t value_size() const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets size of node value, not including terminator character. This function works correctly irrespective of whether value is or is not zero terminated. </para><h4>Returns</h4>Size of node value, in characters. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__base_4e7e23d06d48126c65b1f6266acfba5c_14e7e23d06d48126c65b1f6266acfba5c">function xml_base::name</h3><h4>Synopsis</h4><code class="synopsis">void name(const Ch *name, std::size_t size);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Sets name of node to a non zero-terminated string. See <a href="#namespacerapidxml_1ownership_of_strings" kindref="member">Ownership Of Strings</a> . <br/><br/>
+ Note that node does not own its name or value, it only stores a pointer to it. It will not delete or otherwise free the pointer on destruction. It is reponsibility of the user to properly manage lifetime of the string. The easiest way to achieve it is to use <a href="#classrapidxml_1_1memory__pool" kindref="compound">memory_pool</a> of the document to allocate the string - on destruction of the document the string will be automatically freed. <br/><br/>
+ Size of name must be specified separately, because name does not have to be zero terminated. Use <a href="#classrapidxml_1_1xml__base_e099c291e104a0d277307fe71f5e0f9e_1e099c291e104a0d277307fe71f5e0f9e" kindref="member">name(const Ch *)</a> function to have the length automatically calculated (string must be zero terminated). </para><h4>Parameters</h4><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name of node to set. Does not have to be zero terminated. </dd></dl><dl><dt class="parameter-name">size</dt><dd class="parameter-def">Size of name, in characters. This does not include zero terminator, if one is present. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__base_e099c291e104a0d277307fe71f5e0f9e_1e099c291e104a0d277307fe71f5e0f9e">function xml_base::name</h3><h4>Synopsis</h4><code class="synopsis">void name(const Ch *name);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Sets name of node to a zero-terminated string. See also <a href="#namespacerapidxml_1ownership_of_strings" kindref="member">Ownership Of Strings</a> and <a href="#classrapidxml_1_1xml__base_4e7e23d06d48126c65b1f6266acfba5c_14e7e23d06d48126c65b1f6266acfba5c" kindref="member">xml_node::name(const Ch *, std::size_t)</a>. </para><h4>Parameters</h4><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name of node to set. Must be zero terminated. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__base_d9640aa3f5374673cb72a5289b6c91eb_1d9640aa3f5374673cb72a5289b6c91eb">function xml_base::value</h3><h4>Synopsis</h4><code class="synopsis">void value(const Ch *value, std::size_t size);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Sets value of node to a non zero-terminated string. See <a href="#namespacerapidxml_1ownership_of_strings" kindref="member">Ownership Of Strings</a> . <br/><br/>
+ Note that node does not own its name or value, it only stores a pointer to it. It will not delete or otherwise free the pointer on destruction. It is reponsibility of the user to properly manage lifetime of the string. The easiest way to achieve it is to use <a href="#classrapidxml_1_1memory__pool" kindref="compound">memory_pool</a> of the document to allocate the string - on destruction of the document the string will be automatically freed. <br/><br/>
+ Size of value must be specified separately, because it does not have to be zero terminated. Use <a href="#classrapidxml_1_1xml__base_18c7469acdca771de9b4f3054053029c_118c7469acdca771de9b4f3054053029c" kindref="member">value(const Ch *)</a> function to have the length automatically calculated (string must be zero terminated). <br/><br/>
+ If an element has a child node of type node_data, it will take precedence over element value when printing. If you want to manipulate data of elements using values, use parser flag <a href="#namespacerapidxml_87e8bbab53702cf3b438bd553c10b6b9_187e8bbab53702cf3b438bd553c10b6b9" kindref="member">rapidxml::parse_no_data_nodes</a> to prevent creation of data nodes by the parser. </para><h4>Parameters</h4><dl><dt class="parameter-name">value</dt><dd class="parameter-def">value of node to set. Does not have to be zero terminated. </dd></dl><dl><dt class="parameter-name">size</dt><dd class="parameter-def">Size of value, in characters. This does not include zero terminator, if one is present. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__base_18c7469acdca771de9b4f3054053029c_118c7469acdca771de9b4f3054053029c">function xml_base::value</h3><h4>Synopsis</h4><code class="synopsis">void value(const Ch *value);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Sets value of node to a zero-terminated string. See also <a href="#namespacerapidxml_1ownership_of_strings" kindref="member">Ownership Of Strings</a> and <a href="#classrapidxml_1_1xml__base_d9640aa3f5374673cb72a5289b6c91eb_1d9640aa3f5374673cb72a5289b6c91eb" kindref="member">xml_node::value(const Ch *, std::size_t)</a>. </para><h4>Parameters</h4><dl><dt class="parameter-name">value</dt><dd class="parameter-def">Vame of node to set. Must be zero terminated. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__base_798e8df7ea53ade4d9f0701017dce80e_1798e8df7ea53ade4d9f0701017dce80e">function xml_base::parent</h3><h4>Synopsis</h4><code class="synopsis">xml_node&lt;Ch&gt;* parent() const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets node parent. </para><h4>Returns</h4>Pointer to parent node, or 0 if there is no parent. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__document">class
+ template
+ rapidxml::xml_document</h3>
+
+ Defined in <a href="rapidxml.hpp">rapidxml.hpp</a><br/>
+ Inherits from
+ <a href="#classrapidxml_1_1xml__node">xml_node</a> <a href="#classrapidxml_1_1memory__pool">memory_pool</a> <br/><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">This class represents root of the DOM hierarchy. It is also an <a href="#classrapidxml_1_1xml__node" kindref="compound">xml_node</a> and a <a href="#classrapidxml_1_1memory__pool" kindref="compound">memory_pool</a> through public inheritance. Use <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">parse()</a> function to build a DOM tree from a zero-terminated XML text string. <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">parse()</a> function allocates memory for nodes and attributes by using functions of <a href="#classrapidxml_1_1xml__document" kindref="compound">xml_document</a>, which are inherited from <a href="#classrapidxml_1_1memory__pool" kindref="compound">memory_pool</a>. To access root node of the document, use the document itself, as if it was an <a href="#classrapidxml_1_1xml__node" kindref="compound">xml_node</a>. </para><h4>Parameters</h4><dl><dt class="parameter-name">Ch</dt><dd>Character type to use. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__document_6ce266cc52d549c42abe3a3d5e8af9ba_16ce266cc52d549c42abe3a3d5e8af9ba">
+ constructor
+ xml_document::xml_document</h3><h4>Synopsis</h4><code class="synopsis">xml_document();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Constructs empty XML document. </para><p/><h3 class="reference-header" id="classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c">function xml_document::parse</h3><h4>Synopsis</h4><code class="synopsis">void parse(Ch *text);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parses zero-terminated XML string according to given flags. Passed string will be modified by the parser, unless <a href="#namespacerapidxml_a97ba1a0a79a6d66f4eef3612508d943_1a97ba1a0a79a6d66f4eef3612508d943" kindref="member">rapidxml::parse_non_destructive</a> flag is used. The string must persist for the lifetime of the document. In case of error, <a href="#classrapidxml_1_1parse__error" kindref="compound">rapidxml::parse_error</a> exception will be thrown. <br/><br/>
+ If you want to parse contents of a file, you must first load the file into the memory, and pass pointer to its beginning. Make sure that data is zero-terminated. <br/><br/>
+ Document can be parsed into multiple times. Each new call to parse removes previous nodes and attributes (if any), but does not clear memory pool. </para><h4>Parameters</h4><dl><dt class="parameter-name">text</dt><dd class="parameter-def">XML data to parse; pointer is non-const to denote fact that this data may be modified by the parser. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__document_c8bb3912a3ce86b15842e79d0b421204_1c8bb3912a3ce86b15842e79d0b421204">function xml_document::clear</h3><h4>Synopsis</h4><code class="synopsis">void clear();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Clears the document by deleting all nodes and clearing the memory pool. All nodes owned by document pool are destroyed. </para><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node">class
+ template
+ rapidxml::xml_node</h3>
+
+ Defined in <a href="rapidxml.hpp">rapidxml.hpp</a><br/>
+ Inherits from
+ <a href="#classrapidxml_1_1xml__base">xml_base</a> <br/>
+ Base class for
+ <a href="#classrapidxml_1_1xml__document">xml_document</a> <h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Class representing a node of XML document. Each node may have associated name and value strings, which are available through <a href="#classrapidxml_1_1xml__base_622eade29fdf7806d3ef93ac4d90e707_1622eade29fdf7806d3ef93ac4d90e707" kindref="member">name()</a> and <a href="#classrapidxml_1_1xml__base_c54fa4987fb503916a7b541eb15c9c7f_1c54fa4987fb503916a7b541eb15c9c7f" kindref="member">value()</a> functions. Interpretation of name and value depends on type of the node. Type of node can be determined by using <a href="#classrapidxml_1_1xml__node_975e86937621ae4afe6a423219de30d0_1975e86937621ae4afe6a423219de30d0" kindref="member">type()</a> function. <br/><br/>
+ Note that after parse, both name and value of node, if any, will point interior of source text used for parsing. Thus, this text must persist in the memory for the lifetime of node. </para><h4>Parameters</h4><dl><dt class="parameter-name">Ch</dt><dd>Character type to use. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_34c55af3504549a475e5b9dfcaa6adf5_134c55af3504549a475e5b9dfcaa6adf5">
+ constructor
+ xml_node::xml_node</h3><h4>Synopsis</h4><code class="synopsis">xml_node(node_type type);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Constructs an empty node with the specified type. Consider using <a href="#classrapidxml_1_1memory__pool" kindref="compound">memory_pool</a> of appropriate document to allocate nodes manually. </para><h4>Parameters</h4><dl><dt class="parameter-name">type</dt><dd class="parameter-def">Type of node to construct. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_975e86937621ae4afe6a423219de30d0_1975e86937621ae4afe6a423219de30d0">function xml_node::type</h3><h4>Synopsis</h4><code class="synopsis">node_type type() const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets type of node. </para><h4>Returns</h4>Type of node. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_77aea7d8d996ba4f6bd61cc478a4e72d_177aea7d8d996ba4f6bd61cc478a4e72d">function xml_node::document</h3><h4>Synopsis</h4><code class="synopsis">xml_document&lt;Ch&gt;* document() const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets document of which node is a child. </para><h4>Returns</h4>Pointer to document that contains this node, or 0 if there is no parent document. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_7823e36687669e59c2afdf66334ef35a_17823e36687669e59c2afdf66334ef35a">function xml_node::first_node</h3><h4>Synopsis</h4><code class="synopsis">xml_node&lt;Ch&gt;* first_node(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets first child node, optionally matching node name. </para><h4>Parameters</h4><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name of child to find, or 0 to return first child regardless of its name; this string doesn&apos;t have to be zero-terminated if name_size is non-zero </dd></dl><dl><dt class="parameter-name">name_size</dt><dd class="parameter-def">Size of name, in characters, or 0 to have size calculated automatically from string </dd></dl><dl><dt class="parameter-name">case_sensitive</dt><dd class="parameter-def">Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters </dd></dl><h4>Returns</h4>Pointer to found child, or 0 if not found. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_fcb6e2209b591a36d2dadba20d2bc7cc_1fcb6e2209b591a36d2dadba20d2bc7cc">function xml_node::last_node</h3><h4>Synopsis</h4><code class="synopsis">xml_node&lt;Ch&gt;* last_node(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets last child node, optionally matching node name. Behaviour is undefined if node has no children. Use <a href="#classrapidxml_1_1xml__node_7823e36687669e59c2afdf66334ef35a_17823e36687669e59c2afdf66334ef35a" kindref="member">first_node()</a> to test if node has children. </para><h4>Parameters</h4><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name of child to find, or 0 to return last child regardless of its name; this string doesn&apos;t have to be zero-terminated if name_size is non-zero </dd></dl><dl><dt class="parameter-name">name_size</dt><dd class="parameter-def">Size of name, in characters, or 0 to have size calculated automatically from string </dd></dl><dl><dt class="parameter-name">case_sensitive</dt><dd class="parameter-def">Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters </dd></dl><h4>Returns</h4>Pointer to found child, or 0 if not found. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_ac2f6886c0107e9d5f156e9542546df6_1ac2f6886c0107e9d5f156e9542546df6">function xml_node::previous_sibling</h3><h4>Synopsis</h4><code class="synopsis">xml_node&lt;Ch&gt;* previous_sibling(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets previous sibling node, optionally matching node name. Behaviour is undefined if node has no parent. Use <a href="#classrapidxml_1_1xml__base_798e8df7ea53ade4d9f0701017dce80e_1798e8df7ea53ade4d9f0701017dce80e" kindref="member">parent()</a> to test if node has a parent. </para><h4>Parameters</h4><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name of sibling to find, or 0 to return previous sibling regardless of its name; this string doesn&apos;t have to be zero-terminated if name_size is non-zero </dd></dl><dl><dt class="parameter-name">name_size</dt><dd class="parameter-def">Size of name, in characters, or 0 to have size calculated automatically from string </dd></dl><dl><dt class="parameter-name">case_sensitive</dt><dd class="parameter-def">Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters </dd></dl><h4>Returns</h4>Pointer to found sibling, or 0 if not found. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_b3ead2cefecc03a813836203e3f6f38f_1b3ead2cefecc03a813836203e3f6f38f">function xml_node::next_sibling</h3><h4>Synopsis</h4><code class="synopsis">xml_node&lt;Ch&gt;* next_sibling(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets next sibling node, optionally matching node name. Behaviour is undefined if node has no parent. Use <a href="#classrapidxml_1_1xml__base_798e8df7ea53ade4d9f0701017dce80e_1798e8df7ea53ade4d9f0701017dce80e" kindref="member">parent()</a> to test if node has a parent. </para><h4>Parameters</h4><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name of sibling to find, or 0 to return next sibling regardless of its name; this string doesn&apos;t have to be zero-terminated if name_size is non-zero </dd></dl><dl><dt class="parameter-name">name_size</dt><dd class="parameter-def">Size of name, in characters, or 0 to have size calculated automatically from string </dd></dl><dl><dt class="parameter-name">case_sensitive</dt><dd class="parameter-def">Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters </dd></dl><h4>Returns</h4>Pointer to found sibling, or 0 if not found. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_5810a09f82f8d53efbe9456286dcec83_15810a09f82f8d53efbe9456286dcec83">function xml_node::first_attribute</h3><h4>Synopsis</h4><code class="synopsis">xml_attribute&lt;Ch&gt;* first_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets first attribute of node, optionally matching attribute name. </para><h4>Parameters</h4><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name of attribute to find, or 0 to return first attribute regardless of its name; this string doesn&apos;t have to be zero-terminated if name_size is non-zero </dd></dl><dl><dt class="parameter-name">name_size</dt><dd class="parameter-def">Size of name, in characters, or 0 to have size calculated automatically from string </dd></dl><dl><dt class="parameter-name">case_sensitive</dt><dd class="parameter-def">Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters </dd></dl><h4>Returns</h4>Pointer to found attribute, or 0 if not found. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_16953d66751b5b949ee4ee2d9c0bc63a_116953d66751b5b949ee4ee2d9c0bc63a">function xml_node::last_attribute</h3><h4>Synopsis</h4><code class="synopsis">xml_attribute&lt;Ch&gt;* last_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Gets last attribute of node, optionally matching attribute name. </para><h4>Parameters</h4><dl><dt class="parameter-name">name</dt><dd class="parameter-def">Name of attribute to find, or 0 to return last attribute regardless of its name; this string doesn&apos;t have to be zero-terminated if name_size is non-zero </dd></dl><dl><dt class="parameter-name">name_size</dt><dd class="parameter-def">Size of name, in characters, or 0 to have size calculated automatically from string </dd></dl><dl><dt class="parameter-name">case_sensitive</dt><dd class="parameter-def">Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters </dd></dl><h4>Returns</h4>Pointer to found attribute, or 0 if not found. <p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_a78759bfa429fa2ab6bc5fe617cfa3cf_1a78759bfa429fa2ab6bc5fe617cfa3cf">function xml_node::type</h3><h4>Synopsis</h4><code class="synopsis">void type(node_type type);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Sets type of node. </para><h4>Parameters</h4><dl><dt class="parameter-name">type</dt><dd class="parameter-def">Type of node to set. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_0c39df6617e709eb2fba11300dea63f2_10c39df6617e709eb2fba11300dea63f2">function xml_node::prepend_node</h3><h4>Synopsis</h4><code class="synopsis">void prepend_node(xml_node&lt; Ch &gt; *child);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Prepends a new child node. The prepended child becomes the first child, and all existing children are moved one position back. </para><h4>Parameters</h4><dl><dt class="parameter-name">child</dt><dd class="parameter-def">Node to prepend. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_86de2e22276826089b7baed2599f8dee_186de2e22276826089b7baed2599f8dee">function xml_node::append_node</h3><h4>Synopsis</h4><code class="synopsis">void append_node(xml_node&lt; Ch &gt; *child);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Appends a new child node. The appended child becomes the last child. </para><h4>Parameters</h4><dl><dt class="parameter-name">child</dt><dd class="parameter-def">Node to append. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_780972a57fc447250ab47cc8f421b65e_1780972a57fc447250ab47cc8f421b65e">function xml_node::insert_node</h3><h4>Synopsis</h4><code class="synopsis">void insert_node(xml_node&lt; Ch &gt; *where, xml_node&lt; Ch &gt; *child);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Inserts a new child node at specified place inside the node. All children after and including the specified node are moved one position back. </para><h4>Parameters</h4><dl><dt class="parameter-name">where</dt><dd class="parameter-def">Place where to insert the child, or 0 to insert at the back. </dd></dl><dl><dt class="parameter-name">child</dt><dd class="parameter-def">Node to insert. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_9a31d861e1bddc710839c551a5d2b3a4_19a31d861e1bddc710839c551a5d2b3a4">function xml_node::remove_first_node</h3><h4>Synopsis</h4><code class="synopsis">void remove_first_node();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Removes first child node. If node has no children, behaviour is undefined. Use <a href="#classrapidxml_1_1xml__node_7823e36687669e59c2afdf66334ef35a_17823e36687669e59c2afdf66334ef35a" kindref="member">first_node()</a> to test if node has children. </para><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_87addf2bc127ee31aa4b5295d3c9b530_187addf2bc127ee31aa4b5295d3c9b530">function xml_node::remove_last_node</h3><h4>Synopsis</h4><code class="synopsis">void remove_last_node();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Removes last child of the node. If node has no children, behaviour is undefined. Use <a href="#classrapidxml_1_1xml__node_7823e36687669e59c2afdf66334ef35a_17823e36687669e59c2afdf66334ef35a" kindref="member">first_node()</a> to test if node has children. </para><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_9316463a2201631e7e2062b17729f9cd_19316463a2201631e7e2062b17729f9cd">function xml_node::remove_node</h3><h4>Synopsis</h4><code class="synopsis">void remove_node(xml_node&lt; Ch &gt; *where);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Removes specified child from the node. </para><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_0218147d13e41d5fa60ced4e7a7e9726_10218147d13e41d5fa60ced4e7a7e9726">function xml_node::remove_all_nodes</h3><h4>Synopsis</h4><code class="synopsis">void remove_all_nodes();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Removes all child nodes (but not attributes). </para><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_f6dffa513da74cc0be71a7ba84f8265e_1f6dffa513da74cc0be71a7ba84f8265e">function xml_node::prepend_attribute</h3><h4>Synopsis</h4><code class="synopsis">void prepend_attribute(xml_attribute&lt; Ch &gt; *attribute);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Prepends a new attribute to the node. </para><h4>Parameters</h4><dl><dt class="parameter-name">attribute</dt><dd class="parameter-def">Attribute to prepend. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_8fbd4f5ef7169d493da9f8d87ac04b77_18fbd4f5ef7169d493da9f8d87ac04b77">function xml_node::append_attribute</h3><h4>Synopsis</h4><code class="synopsis">void append_attribute(xml_attribute&lt; Ch &gt; *attribute);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Appends a new attribute to the node. </para><h4>Parameters</h4><dl><dt class="parameter-name">attribute</dt><dd class="parameter-def">Attribute to append. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_070d5888b0557fe06a5b24961de1b988_1070d5888b0557fe06a5b24961de1b988">function xml_node::insert_attribute</h3><h4>Synopsis</h4><code class="synopsis">void insert_attribute(xml_attribute&lt; Ch &gt; *where, xml_attribute&lt; Ch &gt; *attribute);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Inserts a new attribute at specified place inside the node. All attributes after and including the specified attribute are moved one position back. </para><h4>Parameters</h4><dl><dt class="parameter-name">where</dt><dd class="parameter-def">Place where to insert the attribute, or 0 to insert at the back. </dd></dl><dl><dt class="parameter-name">attribute</dt><dd class="parameter-def">Attribute to insert. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_4eea4a7f6cb484ca9944f7eafe6e1843_14eea4a7f6cb484ca9944f7eafe6e1843">function xml_node::remove_first_attribute</h3><h4>Synopsis</h4><code class="synopsis">void remove_first_attribute();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Removes first attribute of the node. If node has no attributes, behaviour is undefined. Use <a href="#classrapidxml_1_1xml__node_5810a09f82f8d53efbe9456286dcec83_15810a09f82f8d53efbe9456286dcec83" kindref="member">first_attribute()</a> to test if node has attributes. </para><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_37d87c4d5d89fa0cf05b72ee8d4cba3b_137d87c4d5d89fa0cf05b72ee8d4cba3b">function xml_node::remove_last_attribute</h3><h4>Synopsis</h4><code class="synopsis">void remove_last_attribute();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Removes last attribute of the node. If node has no attributes, behaviour is undefined. Use <a href="#classrapidxml_1_1xml__node_5810a09f82f8d53efbe9456286dcec83_15810a09f82f8d53efbe9456286dcec83" kindref="member">first_attribute()</a> to test if node has attributes. </para><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_c75154db2e768c0e5b541fc8cd0775ab_1c75154db2e768c0e5b541fc8cd0775ab">function xml_node::remove_attribute</h3><h4>Synopsis</h4><code class="synopsis">void remove_attribute(xml_attribute&lt; Ch &gt; *where);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Removes specified attribute from node. </para><h4>Parameters</h4><dl><dt class="parameter-name">where</dt><dd class="parameter-def">Pointer to attribute to be removed. </dd></dl><p/><h3 class="reference-header" id="classrapidxml_1_1xml__node_59e6ad4cfd5e8096c052e71d79561eda_159e6ad4cfd5e8096c052e71d79561eda">function xml_node::remove_all_attributes</h3><h4>Synopsis</h4><code class="synopsis">void remove_all_attributes();
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Removes all attributes of node. </para><p/><h3 class="reference-header" id="namespacerapidxml_6a276b85e2da28c5f9c3dbce61c55682_16a276b85e2da28c5f9c3dbce61c55682">enum node_type</h3><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Enumeration listing all node types produced by the parser. Use <a href="#classrapidxml_1_1xml__node_975e86937621ae4afe6a423219de30d0_1975e86937621ae4afe6a423219de30d0" kindref="member">xml_node::type()</a> function to query node type. </para><h4>Values</h4><dl><dt class="parameter-name">node_document</dt><dd class="parameter-def">A document node. Name and value are empty. </dd></dl><dl><dt class="parameter-name">node_element</dt><dd class="parameter-def">An element node. Name contains element name. Value contains text of first data node. </dd></dl><dl><dt class="parameter-name">node_data</dt><dd class="parameter-def">A data node. Name is empty. Value contains data text. </dd></dl><dl><dt class="parameter-name">node_cdata</dt><dd class="parameter-def">A CDATA node. Name is empty. Value contains data text. </dd></dl><dl><dt class="parameter-name">node_comment</dt><dd class="parameter-def">A comment node. Name is empty. Value contains comment text. </dd></dl><dl><dt class="parameter-name">node_declaration</dt><dd class="parameter-def">A declaration node. Name and value are empty. Declaration parameters (version, encoding and standalone) are in node attributes. </dd></dl><dl><dt class="parameter-name">node_doctype</dt><dd class="parameter-def">A DOCTYPE node. Name is empty. Value contains DOCTYPE text. </dd></dl><dl><dt class="parameter-name">node_pi</dt><dd class="parameter-def">A PI node. Name contains target. Value contains instructions. </dd></dl><p/><h3 class="reference-header" id="namespacerapidxml_ff5d67f74437199d316d2b2660653ae1_1ff5d67f74437199d316d2b2660653ae1">function parse_error_handler</h3><h4>Synopsis</h4><code class="synopsis">void rapidxml::parse_error_handler(const char *what, void *where);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">When exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function is called to notify user about the error. It must be defined by the user. <br/><br/>
+ This function cannot return. If it does, the results are undefined. <br/><br/>
+ A very simple definition might look like that: <preformatted>
+ void rapidxml::parse_error_handler(const char *what, void *where)
+ {
+ std::cout &lt;&lt; &quot;Parse error: &quot; &lt;&lt; what &lt;&lt; &quot;\n&quot;;
+ std::abort();
+ }
+ </preformatted></para><h4>Parameters</h4><dl><dt class="parameter-name">what</dt><dd class="parameter-def">Human readable description of the error. </dd></dl><dl><dt class="parameter-name">where</dt><dd class="parameter-def">Pointer to character data where error was detected. </dd></dl><p/><h3 class="reference-header" id="namespacerapidxml_b94d570fc4c4ab2423813cd0243326b1_1b94d570fc4c4ab2423813cd0243326b1">function print</h3><h4>Synopsis</h4><code class="synopsis">OutIt rapidxml::print(OutIt out, const xml_node&lt; Ch &gt; &amp;node, int flags=0);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Prints XML to given output iterator. </para><h4>Parameters</h4><dl><dt class="parameter-name">out</dt><dd class="parameter-def">Output iterator to print to. </dd></dl><dl><dt class="parameter-name">node</dt><dd class="parameter-def">Node to be printed. Pass xml_document to print entire document. </dd></dl><dl><dt class="parameter-name">flags</dt><dd class="parameter-def">Flags controlling how XML is printed. </dd></dl><h4>Returns</h4>Output iterator pointing to position immediately after last character of printed text. <p/><h3 class="reference-header" id="namespacerapidxml_13bc37d6d1047acb0efdbc1689221a5e_113bc37d6d1047acb0efdbc1689221a5e">function print</h3><h4>Synopsis</h4><code class="synopsis">std::basic_ostream&lt;Ch&gt;&amp; rapidxml::print(std::basic_ostream&lt; Ch &gt; &amp;out, const xml_node&lt; Ch &gt; &amp;node, int flags=0);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Prints XML to given output stream. </para><h4>Parameters</h4><dl><dt class="parameter-name">out</dt><dd class="parameter-def">Output stream to print to. </dd></dl><dl><dt class="parameter-name">node</dt><dd class="parameter-def">Node to be printed. Pass xml_document to print entire document. </dd></dl><dl><dt class="parameter-name">flags</dt><dd class="parameter-def">Flags controlling how XML is printed. </dd></dl><h4>Returns</h4>Output stream. <p/><h3 class="reference-header" id="namespacerapidxml_5619b38000d967fb223b2b0a8c17463a_15619b38000d967fb223b2b0a8c17463a">function operator&lt;&lt;</h3><h4>Synopsis</h4><code class="synopsis">std::basic_ostream&lt;Ch&gt;&amp; rapidxml::operator&lt;&lt;(std::basic_ostream&lt; Ch &gt; &amp;out, const xml_node&lt; Ch &gt; &amp;node);
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Prints formatted XML to given output stream. Uses default printing flags. Use <a href="#namespacerapidxml_b94d570fc4c4ab2423813cd0243326b1_1b94d570fc4c4ab2423813cd0243326b1" kindref="member">print()</a> function to customize printing process. </para><h4>Parameters</h4><dl><dt class="parameter-name">out</dt><dd class="parameter-def">Output stream to print to. </dd></dl><dl><dt class="parameter-name">node</dt><dd class="parameter-def">Node to be printed. </dd></dl><h4>Returns</h4>Output stream. <p/><h3 class="reference-header" id="namespacerapidxml_87e8bbab53702cf3b438bd553c10b6b9_187e8bbab53702cf3b438bd553c10b6b9">
+ constant
+ parse_no_data_nodes</h3><h4>Synopsis</h4><code class="synopsis">const int parse_no_data_nodes
+ = 0x1;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to not create data nodes. Text of first data node will still be placed in value of parent element, unless <a href="#namespacerapidxml_97e2c4fdc04fae17126f9971a4fc993e_197e2c4fdc04fae17126f9971a4fc993e" kindref="member">rapidxml::parse_no_element_values</a> flag is also specified. Can be combined with other flags by use of | operator. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_97e2c4fdc04fae17126f9971a4fc993e_197e2c4fdc04fae17126f9971a4fc993e">
+ constant
+ parse_no_element_values</h3><h4>Synopsis</h4><code class="synopsis">const int parse_no_element_values
+ = 0x2;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to not use text of first data node as a value of parent element. Can be combined with other flags by use of | operator. Note that child data nodes of element node take precendence over its value when printing. That is, if element has one or more child data nodes <i>and</i> a value, the value will be ignored. Use <a href="#namespacerapidxml_87e8bbab53702cf3b438bd553c10b6b9_187e8bbab53702cf3b438bd553c10b6b9" kindref="member">rapidxml::parse_no_data_nodes</a> flag to prevent creation of data nodes if you want to manipulate data using values of elements. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_9cae3801e70437cbc410c24bf6be691c_19cae3801e70437cbc410c24bf6be691c">
+ constant
+ parse_no_string_terminators</h3><h4>Synopsis</h4><code class="synopsis">const int parse_no_string_terminators
+ = 0x4;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to not place zero terminators after strings in the source text. By default zero terminators are placed, modifying source text. Can be combined with other flags by use of | operator. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_7223b7815c4fb8b42e6e4e77e1ea6b97_17223b7815c4fb8b42e6e4e77e1ea6b97">
+ constant
+ parse_no_entity_translation</h3><h4>Synopsis</h4><code class="synopsis">const int parse_no_entity_translation
+ = 0x8;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to not translate entities in the source text. By default entities are translated, modifying source text. Can be combined with other flags by use of | operator. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_ccde57f6054857ee4042a1b4d98c83b9_1ccde57f6054857ee4042a1b4d98c83b9">
+ constant
+ parse_no_utf8</h3><h4>Synopsis</h4><code class="synopsis">const int parse_no_utf8
+ = 0x10;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to disable UTF-8 handling and assume plain 8 bit characters. By default, UTF-8 handling is enabled. Can be combined with other flags by use of | operator. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_52e2c934ad9c845a5f4cc49570470556_152e2c934ad9c845a5f4cc49570470556">
+ constant
+ parse_declaration_node</h3><h4>Synopsis</h4><code class="synopsis">const int parse_declaration_node
+ = 0x20;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to create XML declaration node. By default, declaration node is not created. Can be combined with other flags by use of | operator. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_0f7479dacbc868456d07897a8c072784_10f7479dacbc868456d07897a8c072784">
+ constant
+ parse_comment_nodes</h3><h4>Synopsis</h4><code class="synopsis">const int parse_comment_nodes
+ = 0x40;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to create comments nodes. By default, comment nodes are not created. Can be combined with other flags by use of | operator. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_8e187746ba1ca04f107951ad32df962e_18e187746ba1ca04f107951ad32df962e">
+ constant
+ parse_doctype_node</h3><h4>Synopsis</h4><code class="synopsis">const int parse_doctype_node
+ = 0x80;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to create DOCTYPE node. By default, doctype node is not created. Although W3C specification allows at most one DOCTYPE node, RapidXml will silently accept documents with more than one. Can be combined with other flags by use of | operator. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_1c20b2b2b75711cd76423e119c49f830_11c20b2b2b75711cd76423e119c49f830">
+ constant
+ parse_pi_nodes</h3><h4>Synopsis</h4><code class="synopsis">const int parse_pi_nodes
+ = 0x100;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to create PI nodes. By default, PI nodes are not created. Can be combined with other flags by use of | operator. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_a5daff9d61c7d4eaf98e4d42efe628ee_1a5daff9d61c7d4eaf98e4d42efe628ee">
+ constant
+ parse_validate_closing_tags</h3><h4>Synopsis</h4><code class="synopsis">const int parse_validate_closing_tags
+ = 0x200;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to validate closing tag names. If not set, name inside closing tag is irrelevant to the parser. By default, closing tags are not validated. Can be combined with other flags by use of | operator. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_ac1f06b1afd47b812732fb521b146fd9_1ac1f06b1afd47b812732fb521b146fd9">
+ constant
+ parse_trim_whitespace</h3><h4>Synopsis</h4><code class="synopsis">const int parse_trim_whitespace
+ = 0x400;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to trim all leading and trailing whitespace of data nodes. By default, whitespace is not trimmed. This flag does not cause the parser to modify source text. Can be combined with other flags by use of | operator. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_88f95d4e275ba01408fefde83078651b_188f95d4e275ba01408fefde83078651b">
+ constant
+ parse_normalize_whitespace</h3><h4>Synopsis</h4><code class="synopsis">const int parse_normalize_whitespace
+ = 0x800;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flag instructing the parser to condense all whitespace runs of data nodes to a single space character. Trimming of leading and trailing whitespace of data is controlled by <a href="#namespacerapidxml_ac1f06b1afd47b812732fb521b146fd9_1ac1f06b1afd47b812732fb521b146fd9" kindref="member">rapidxml::parse_trim_whitespace</a> flag. By default, whitespace is not normalized. If this flag is specified, source text will be modified. Can be combined with other flags by use of | operator. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_45751cf2f38fd6915f35b3122b46d5b6_145751cf2f38fd6915f35b3122b46d5b6">
+ constant
+ parse_default</h3><h4>Synopsis</h4><code class="synopsis">const int parse_default
+ = 0;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Parse flags which represent default behaviour of the parser. This is always equal to 0, so that all other flags can be simply ored together. Normally there is no need to inconveniently disable flags by anding with their negated (~) values. This also means that meaning of each flag is a <i>negation</i> of the default setting. For example, if flag name is <a href="#namespacerapidxml_ccde57f6054857ee4042a1b4d98c83b9_1ccde57f6054857ee4042a1b4d98c83b9" kindref="member">rapidxml::parse_no_utf8</a>, it means that utf-8 is <i>enabled</i> by default, and using the flag will disable it. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_a97ba1a0a79a6d66f4eef3612508d943_1a97ba1a0a79a6d66f4eef3612508d943">
+ constant
+ parse_non_destructive</h3><h4>Synopsis</h4><code class="synopsis">const int parse_non_destructive
+ = parse_no_string_terminators | parse_no_entity_translation;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">A combination of parse flags that forbids any modifications of the source text. This also results in faster parsing. However, note that the following will occur: <ul><li><para>names and values of nodes will not be zero terminated, you have to use <a href="#classrapidxml_1_1xml__base_0dae694c8f7e4d89f1003e2f3a15a43c_10dae694c8f7e4d89f1003e2f3a15a43c" kindref="member">xml_base::name_size()</a> and <a href="#classrapidxml_1_1xml__base_aed5ae791b7164c1ee5e649198cbb3db_1aed5ae791b7164c1ee5e649198cbb3db" kindref="member">xml_base::value_size()</a> functions to determine where name and value ends </para></li><li><para>entities will not be translated </para></li><li><para>whitespace will not be normalized </para></li></ul>
+See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_398c5476e76102f8bd76c10bb0abbe10_1398c5476e76102f8bd76c10bb0abbe10">
+ constant
+ parse_fastest</h3><h4>Synopsis</h4><code class="synopsis">const int parse_fastest
+ = parse_non_destructive | parse_no_data_nodes;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">A combination of parse flags resulting in fastest possible parsing, without sacrificing important data. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_b4f2515265facb42291570307924bd57_1b4f2515265facb42291570307924bd57">
+ constant
+ parse_full</h3><h4>Synopsis</h4><code class="synopsis">const int parse_full
+ = parse_declaration_node | parse_comment_nodes | parse_doctype_node | parse_pi_nodes | parse_validate_closing_tags;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">A combination of parse flags resulting in largest amount of data being extracted. This usually results in slowest parsing. <br/><br/>
+ See <a href="#classrapidxml_1_1xml__document_8338ce6042e7b04d5a42144fb446b69c_18338ce6042e7b04d5a42144fb446b69c" kindref="member">xml_document::parse()</a> function. </para><p/><h3 class="reference-header" id="namespacerapidxml_b08b8d4293c203b69ed6c5ae77ac1907_1b08b8d4293c203b69ed6c5ae77ac1907">
+ constant
+ print_no_indenting</h3><h4>Synopsis</h4><code class="synopsis">const int print_no_indenting
+ = 0x1;
+ </code><h4>Description</h4><para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Printer flag instructing the printer to suppress indenting of XML. See <a href="#namespacerapidxml_b94d570fc4c4ab2423813cd0243326b1_1b94d570fc4c4ab2423813cd0243326b1" kindref="member">print()</a> function. </para><p/></body></html> \ No newline at end of file
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml.hpp
new file mode 100644
index 0000000000..ae91e081d0
--- /dev/null
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml.hpp
@@ -0,0 +1,2596 @@
+#ifndef RAPIDXML_HPP_INCLUDED
+#define RAPIDXML_HPP_INCLUDED
+
+// Copyright (C) 2006, 2009 Marcin Kalicinski
+// Version 1.13
+// Revision $DateTime: 2009/05/13 01:46:17 $
+//! \file rapidxml.hpp This file contains rapidxml parser and DOM implementation
+
+// If standard library is disabled, user must provide implementations of required functions and typedefs
+#if !defined(RAPIDXML_NO_STDLIB)
+ #include <cstdlib> // For std::size_t
+ #include <cassert> // For assert
+ #include <new> // For placement new
+#endif
+
+// On MSVC, disable "conditional expression is constant" warning (level 4).
+// This warning is almost impossible to avoid with certain types of templated code
+#ifdef _MSC_VER
+ #pragma warning(push)
+ #pragma warning(disable:4127) // Conditional expression is constant
+#endif
+
+///////////////////////////////////////////////////////////////////////////
+// RAPIDXML_PARSE_ERROR
+
+#if defined(RAPIDXML_NO_EXCEPTIONS)
+
+#define RAPIDXML_PARSE_ERROR(what, where) { parse_error_handler(what, where); assert(0); }
+
+namespace rapidxml
+{
+ //! When exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS,
+ //! this function is called to notify user about the error.
+ //! It must be defined by the user.
+ //! <br><br>
+ //! This function cannot return. If it does, the results are undefined.
+ //! <br><br>
+ //! A very simple definition might look like that:
+ //! <pre>
+ //! void %rapidxml::%parse_error_handler(const char *what, void *where)
+ //! {
+ //! std::cout << "Parse error: " << what << "\n";
+ //! std::abort();
+ //! }
+ //! </pre>
+ //! \param what Human readable description of the error.
+ //! \param where Pointer to character data where error was detected.
+ void parse_error_handler(const char *what, void *where);
+}
+
+#else
+
+#include <exception> // For std::exception
+
+#define RAPIDXML_PARSE_ERROR(what, where) throw parse_error(what, where)
+
+namespace rapidxml
+{
+
+ //! Parse error exception.
+ //! This exception is thrown by the parser when an error occurs.
+ //! Use what() function to get human-readable error message.
+ //! Use where() function to get a pointer to position within source text where error was detected.
+ //! <br><br>
+ //! If throwing exceptions by the parser is undesirable,
+ //! it can be disabled by defining RAPIDXML_NO_EXCEPTIONS macro before rapidxml.hpp is included.
+ //! This will cause the parser to call rapidxml::parse_error_handler() function instead of throwing an exception.
+ //! This function must be defined by the user.
+ //! <br><br>
+ //! This class derives from <code>std::exception</code> class.
+ class parse_error: public std::exception
+ {
+
+ public:
+
+ //! Constructs parse error
+ parse_error(const char *what, void *where)
+ : m_what(what)
+ , m_where(where)
+ {
+ }
+
+ //! Gets human readable description of error.
+ //! \return Pointer to null terminated description of the error.
+ virtual const char *what() const throw()
+ {
+ return m_what;
+ }
+
+ //! Gets pointer to character data where error happened.
+ //! Ch should be the same as char type of xml_document that produced the error.
+ //! \return Pointer to location within the parsed string where error occured.
+ template<class Ch>
+ Ch *where() const
+ {
+ return reinterpret_cast<Ch *>(m_where);
+ }
+
+ private:
+
+ const char *m_what;
+ void *m_where;
+
+ };
+}
+
+#endif
+
+///////////////////////////////////////////////////////////////////////////
+// Pool sizes
+
+#ifndef RAPIDXML_STATIC_POOL_SIZE
+ // Size of static memory block of memory_pool.
+ // Define RAPIDXML_STATIC_POOL_SIZE before including rapidxml.hpp if you want to override the default value.
+ // No dynamic memory allocations are performed by memory_pool until static memory is exhausted.
+ #define RAPIDXML_STATIC_POOL_SIZE (64 * 1024)
+#endif
+
+#ifndef RAPIDXML_DYNAMIC_POOL_SIZE
+ // Size of dynamic memory block of memory_pool.
+ // Define RAPIDXML_DYNAMIC_POOL_SIZE before including rapidxml.hpp if you want to override the default value.
+ // After the static block is exhausted, dynamic blocks with approximately this size are allocated by memory_pool.
+ #define RAPIDXML_DYNAMIC_POOL_SIZE (64 * 1024)
+#endif
+
+#ifndef RAPIDXML_ALIGNMENT
+ // Memory allocation alignment.
+ // Define RAPIDXML_ALIGNMENT before including rapidxml.hpp if you want to override the default value, which is the size of pointer.
+ // All memory allocations for nodes, attributes and strings will be aligned to this value.
+ // This must be a power of 2 and at least 1, otherwise memory_pool will not work.
+ #define RAPIDXML_ALIGNMENT sizeof(void *)
+#endif
+
+namespace rapidxml
+{
+ // Forward declarations
+ template<class Ch> class xml_node;
+ template<class Ch> class xml_attribute;
+ template<class Ch> class xml_document;
+
+ //! Enumeration listing all node types produced by the parser.
+ //! Use xml_node::type() function to query node type.
+ enum node_type
+ {
+ node_document, //!< A document node. Name and value are empty.
+ node_element, //!< An element node. Name contains element name. Value contains text of first data node.
+ node_data, //!< A data node. Name is empty. Value contains data text.
+ node_cdata, //!< A CDATA node. Name is empty. Value contains data text.
+ node_comment, //!< A comment node. Name is empty. Value contains comment text.
+ node_declaration, //!< A declaration node. Name and value are empty. Declaration parameters (version, encoding and standalone) are in node attributes.
+ node_doctype, //!< A DOCTYPE node. Name is empty. Value contains DOCTYPE text.
+ node_pi //!< A PI node. Name contains target. Value contains instructions.
+ };
+
+ ///////////////////////////////////////////////////////////////////////
+ // Parsing flags
+
+ //! Parse flag instructing the parser to not create data nodes.
+ //! Text of first data node will still be placed in value of parent element, unless rapidxml::parse_no_element_values flag is also specified.
+ //! Can be combined with other flags by use of | operator.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_no_data_nodes = 0x1;
+
+ //! Parse flag instructing the parser to not use text of first data node as a value of parent element.
+ //! Can be combined with other flags by use of | operator.
+ //! Note that child data nodes of element node take precendence over its value when printing.
+ //! That is, if element has one or more child data nodes <em>and</em> a value, the value will be ignored.
+ //! Use rapidxml::parse_no_data_nodes flag to prevent creation of data nodes if you want to manipulate data using values of elements.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_no_element_values = 0x2;
+
+ //! Parse flag instructing the parser to not place zero terminators after strings in the source text.
+ //! By default zero terminators are placed, modifying source text.
+ //! Can be combined with other flags by use of | operator.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_no_string_terminators = 0x4;
+
+ //! Parse flag instructing the parser to not translate entities in the source text.
+ //! By default entities are translated, modifying source text.
+ //! Can be combined with other flags by use of | operator.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_no_entity_translation = 0x8;
+
+ //! Parse flag instructing the parser to disable UTF-8 handling and assume plain 8 bit characters.
+ //! By default, UTF-8 handling is enabled.
+ //! Can be combined with other flags by use of | operator.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_no_utf8 = 0x10;
+
+ //! Parse flag instructing the parser to create XML declaration node.
+ //! By default, declaration node is not created.
+ //! Can be combined with other flags by use of | operator.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_declaration_node = 0x20;
+
+ //! Parse flag instructing the parser to create comments nodes.
+ //! By default, comment nodes are not created.
+ //! Can be combined with other flags by use of | operator.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_comment_nodes = 0x40;
+
+ //! Parse flag instructing the parser to create DOCTYPE node.
+ //! By default, doctype node is not created.
+ //! Although W3C specification allows at most one DOCTYPE node, RapidXml will silently accept documents with more than one.
+ //! Can be combined with other flags by use of | operator.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_doctype_node = 0x80;
+
+ //! Parse flag instructing the parser to create PI nodes.
+ //! By default, PI nodes are not created.
+ //! Can be combined with other flags by use of | operator.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_pi_nodes = 0x100;
+
+ //! Parse flag instructing the parser to validate closing tag names.
+ //! If not set, name inside closing tag is irrelevant to the parser.
+ //! By default, closing tags are not validated.
+ //! Can be combined with other flags by use of | operator.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_validate_closing_tags = 0x200;
+
+ //! Parse flag instructing the parser to trim all leading and trailing whitespace of data nodes.
+ //! By default, whitespace is not trimmed.
+ //! This flag does not cause the parser to modify source text.
+ //! Can be combined with other flags by use of | operator.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_trim_whitespace = 0x400;
+
+ //! Parse flag instructing the parser to condense all whitespace runs of data nodes to a single space character.
+ //! Trimming of leading and trailing whitespace of data is controlled by rapidxml::parse_trim_whitespace flag.
+ //! By default, whitespace is not normalized.
+ //! If this flag is specified, source text will be modified.
+ //! Can be combined with other flags by use of | operator.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_normalize_whitespace = 0x800;
+
+ // Compound flags
+
+ //! Parse flags which represent default behaviour of the parser.
+ //! This is always equal to 0, so that all other flags can be simply ored together.
+ //! Normally there is no need to inconveniently disable flags by anding with their negated (~) values.
+ //! This also means that meaning of each flag is a <i>negation</i> of the default setting.
+ //! For example, if flag name is rapidxml::parse_no_utf8, it means that utf-8 is <i>enabled</i> by default,
+ //! and using the flag will disable it.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_default = 0;
+
+ //! A combination of parse flags that forbids any modifications of the source text.
+ //! This also results in faster parsing. However, note that the following will occur:
+ //! <ul>
+ //! <li>names and values of nodes will not be zero terminated, you have to use xml_base::name_size() and xml_base::value_size() functions to determine where name and value ends</li>
+ //! <li>entities will not be translated</li>
+ //! <li>whitespace will not be normalized</li>
+ //! </ul>
+ //! See xml_document::parse() function.
+ const int parse_non_destructive = parse_no_string_terminators | parse_no_entity_translation;
+
+ //! A combination of parse flags resulting in fastest possible parsing, without sacrificing important data.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_fastest = parse_non_destructive | parse_no_data_nodes;
+
+ //! A combination of parse flags resulting in largest amount of data being extracted.
+ //! This usually results in slowest parsing.
+ //! <br><br>
+ //! See xml_document::parse() function.
+ const int parse_full = parse_declaration_node | parse_comment_nodes | parse_doctype_node | parse_pi_nodes | parse_validate_closing_tags;
+
+ ///////////////////////////////////////////////////////////////////////
+ // Internals
+
+ //! \cond internal
+ namespace internal
+ {
+
+ // Struct that contains lookup tables for the parser
+ // It must be a template to allow correct linking (because it has static data members, which are defined in a header file).
+ template<int Dummy>
+ struct lookup_tables
+ {
+ static const unsigned char lookup_whitespace[256]; // Whitespace table
+ static const unsigned char lookup_node_name[256]; // Node name table
+ static const unsigned char lookup_text[256]; // Text table
+ static const unsigned char lookup_text_pure_no_ws[256]; // Text table
+ static const unsigned char lookup_text_pure_with_ws[256]; // Text table
+ static const unsigned char lookup_attribute_name[256]; // Attribute name table
+ static const unsigned char lookup_attribute_data_1[256]; // Attribute data table with single quote
+ static const unsigned char lookup_attribute_data_1_pure[256]; // Attribute data table with single quote
+ static const unsigned char lookup_attribute_data_2[256]; // Attribute data table with double quotes
+ static const unsigned char lookup_attribute_data_2_pure[256]; // Attribute data table with double quotes
+ static const unsigned char lookup_digits[256]; // Digits
+ static const unsigned char lookup_upcase[256]; // To uppercase conversion table for ASCII characters
+ };
+
+ // Find length of the string
+ template<class Ch>
+ inline std::size_t measure(const Ch *p)
+ {
+ const Ch *tmp = p;
+ while (*tmp)
+ ++tmp;
+ return tmp - p;
+ }
+
+ // Compare strings for equality
+ template<class Ch>
+ inline bool compare(const Ch *p1, std::size_t size1, const Ch *p2, std::size_t size2, bool case_sensitive)
+ {
+ if (size1 != size2)
+ return false;
+ if (case_sensitive)
+ {
+ for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)
+ if (*p1 != *p2)
+ return false;
+ }
+ else
+ {
+ for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)
+ if (lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p1)] != lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p2)])
+ return false;
+ }
+ return true;
+ }
+ }
+ //! \endcond
+
+ ///////////////////////////////////////////////////////////////////////
+ // Memory pool
+
+ //! This class is used by the parser to create new nodes and attributes, without overheads of dynamic memory allocation.
+ //! In most cases, you will not need to use this class directly.
+ //! However, if you need to create nodes manually or modify names/values of nodes,
+ //! you are encouraged to use memory_pool of relevant xml_document to allocate the memory.
+ //! Not only is this faster than allocating them by using <code>new</code> operator,
+ //! but also their lifetime will be tied to the lifetime of document,
+ //! possibly simplyfing memory management.
+ //! <br><br>
+ //! Call allocate_node() or allocate_attribute() functions to obtain new nodes or attributes from the pool.
+ //! You can also call allocate_string() function to allocate strings.
+ //! Such strings can then be used as names or values of nodes without worrying about their lifetime.
+ //! Note that there is no <code>free()</code> function -- all allocations are freed at once when clear() function is called,
+ //! or when the pool is destroyed.
+ //! <br><br>
+ //! It is also possible to create a standalone memory_pool, and use it
+ //! to allocate nodes, whose lifetime will not be tied to any document.
+ //! <br><br>
+ //! Pool maintains <code>RAPIDXML_STATIC_POOL_SIZE</code> bytes of statically allocated memory.
+ //! Until static memory is exhausted, no dynamic memory allocations are done.
+ //! When static memory is exhausted, pool allocates additional blocks of memory of size <code>RAPIDXML_DYNAMIC_POOL_SIZE</code> each,
+ //! by using global <code>new[]</code> and <code>delete[]</code> operators.
+ //! This behaviour can be changed by setting custom allocation routines.
+ //! Use set_allocator() function to set them.
+ //! <br><br>
+ //! Allocations for nodes, attributes and strings are aligned at <code>RAPIDXML_ALIGNMENT</code> bytes.
+ //! This value defaults to the size of pointer on target architecture.
+ //! <br><br>
+ //! To obtain absolutely top performance from the parser,
+ //! it is important that all nodes are allocated from a single, contiguous block of memory.
+ //! Otherwise, cache misses when jumping between two (or more) disjoint blocks of memory can slow down parsing quite considerably.
+ //! If required, you can tweak <code>RAPIDXML_STATIC_POOL_SIZE</code>, <code>RAPIDXML_DYNAMIC_POOL_SIZE</code> and <code>RAPIDXML_ALIGNMENT</code>
+ //! to obtain best wasted memory to performance compromise.
+ //! To do it, define their values before rapidxml.hpp file is included.
+ //! \param Ch Character type of created nodes.
+ template<class Ch = char>
+ class memory_pool
+ {
+
+ public:
+
+ //! \cond internal
+ typedef void *(alloc_func)(std::size_t); // Type of user-defined function used to allocate memory
+ typedef void (free_func)(void *); // Type of user-defined function used to free memory
+ //! \endcond
+
+ //! Constructs empty pool with default allocator functions.
+ memory_pool()
+ : m_alloc_func(0)
+ , m_free_func(0)
+ {
+ init();
+ }
+
+ //! Destroys pool and frees all the memory.
+ //! This causes memory occupied by nodes allocated by the pool to be freed.
+ //! Nodes allocated from the pool are no longer valid.
+ ~memory_pool()
+ {
+ clear();
+ }
+
+ //! Allocates a new node from the pool, and optionally assigns name and value to it.
+ //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.
+ //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function
+ //! will call rapidxml::parse_error_handler() function.
+ //! \param type Type of node to create.
+ //! \param name Name to assign to the node, or 0 to assign no name.
+ //! \param value Value to assign to the node, or 0 to assign no value.
+ //! \param name_size Size of name to assign, or 0 to automatically calculate size from name string.
+ //! \param value_size Size of value to assign, or 0 to automatically calculate size from value string.
+ //! \return Pointer to allocated node. This pointer will never be NULL.
+ xml_node<Ch> *allocate_node(node_type type,
+ const Ch *name = 0, const Ch *value = 0,
+ std::size_t name_size = 0, std::size_t value_size = 0)
+ {
+ void *memory = allocate_aligned(sizeof(xml_node<Ch>));
+ xml_node<Ch> *node = new(memory) xml_node<Ch>(type);
+ if (name)
+ {
+ if (name_size > 0)
+ node->name(name, name_size);
+ else
+ node->name(name);
+ }
+ if (value)
+ {
+ if (value_size > 0)
+ node->value(value, value_size);
+ else
+ node->value(value);
+ }
+ return node;
+ }
+
+ //! Allocates a new attribute from the pool, and optionally assigns name and value to it.
+ //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.
+ //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function
+ //! will call rapidxml::parse_error_handler() function.
+ //! \param name Name to assign to the attribute, or 0 to assign no name.
+ //! \param value Value to assign to the attribute, or 0 to assign no value.
+ //! \param name_size Size of name to assign, or 0 to automatically calculate size from name string.
+ //! \param value_size Size of value to assign, or 0 to automatically calculate size from value string.
+ //! \return Pointer to allocated attribute. This pointer will never be NULL.
+ xml_attribute<Ch> *allocate_attribute(const Ch *name = 0, const Ch *value = 0,
+ std::size_t name_size = 0, std::size_t value_size = 0)
+ {
+ void *memory = allocate_aligned(sizeof(xml_attribute<Ch>));
+ xml_attribute<Ch> *attribute = new(memory) xml_attribute<Ch>;
+ if (name)
+ {
+ if (name_size > 0)
+ attribute->name(name, name_size);
+ else
+ attribute->name(name);
+ }
+ if (value)
+ {
+ if (value_size > 0)
+ attribute->value(value, value_size);
+ else
+ attribute->value(value);
+ }
+ return attribute;
+ }
+
+ //! Allocates a char array of given size from the pool, and optionally copies a given string to it.
+ //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.
+ //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function
+ //! will call rapidxml::parse_error_handler() function.
+ //! \param source String to initialize the allocated memory with, or 0 to not initialize it.
+ //! \param size Number of characters to allocate, or zero to calculate it automatically from source string length; if size is 0, source string must be specified and null terminated.
+ //! \return Pointer to allocated char array. This pointer will never be NULL.
+ Ch *allocate_string(const Ch *source = 0, std::size_t size = 0)
+ {
+ assert(source || size); // Either source or size (or both) must be specified
+ if (size == 0)
+ size = internal::measure(source) + 1;
+ Ch *result = static_cast<Ch *>(allocate_aligned(size * sizeof(Ch)));
+ if (source)
+ for (std::size_t i = 0; i < size; ++i)
+ result[i] = source[i];
+ return result;
+ }
+
+ //! Clones an xml_node and its hierarchy of child nodes and attributes.
+ //! Nodes and attributes are allocated from this memory pool.
+ //! Names and values are not cloned, they are shared between the clone and the source.
+ //! Result node can be optionally specified as a second parameter,
+ //! in which case its contents will be replaced with cloned source node.
+ //! This is useful when you want to clone entire document.
+ //! \param source Node to clone.
+ //! \param result Node to put results in, or 0 to automatically allocate result node
+ //! \return Pointer to cloned node. This pointer will never be NULL.
+ xml_node<Ch> *clone_node(const xml_node<Ch> *source, xml_node<Ch> *result = 0)
+ {
+ // Prepare result node
+ if (result)
+ {
+ result->remove_all_attributes();
+ result->remove_all_nodes();
+ result->type(source->type());
+ }
+ else
+ result = allocate_node(source->type());
+
+ // Clone name and value
+ result->name(source->name(), source->name_size());
+ result->value(source->value(), source->value_size());
+
+ // Clone child nodes and attributes
+ for (xml_node<Ch> *child = source->first_node(); child; child = child->next_sibling())
+ result->append_node(clone_node(child));
+ for (xml_attribute<Ch> *attr = source->first_attribute(); attr; attr = attr->next_attribute())
+ result->append_attribute(allocate_attribute(attr->name(), attr->value(), attr->name_size(), attr->value_size()));
+
+ return result;
+ }
+
+ //! Clears the pool.
+ //! This causes memory occupied by nodes allocated by the pool to be freed.
+ //! Any nodes or strings allocated from the pool will no longer be valid.
+ void clear()
+ {
+ while (m_begin != m_static_memory)
+ {
+ char *previous_begin = reinterpret_cast<header *>(align(m_begin))->previous_begin;
+ if (m_free_func)
+ m_free_func(m_begin);
+ else
+ delete[] m_begin;
+ m_begin = previous_begin;
+ }
+ init();
+ }
+
+ //! Sets or resets the user-defined memory allocation functions for the pool.
+ //! This can only be called when no memory is allocated from the pool yet, otherwise results are undefined.
+ //! Allocation function must not return invalid pointer on failure. It should either throw,
+ //! stop the program, or use <code>longjmp()</code> function to pass control to other place of program.
+ //! If it returns invalid pointer, results are undefined.
+ //! <br><br>
+ //! User defined allocation functions must have the following forms:
+ //! <br><code>
+ //! <br>void *allocate(std::size_t size);
+ //! <br>void free(void *pointer);
+ //! </code><br>
+ //! \param af Allocation function, or 0 to restore default function
+ //! \param ff Free function, or 0 to restore default function
+ void set_allocator(alloc_func *af, free_func *ff)
+ {
+ assert(m_begin == m_static_memory && m_ptr == align(m_begin)); // Verify that no memory is allocated yet
+ m_alloc_func = af;
+ m_free_func = ff;
+ }
+
+ private:
+
+ struct header
+ {
+ char *previous_begin;
+ };
+
+ void init()
+ {
+ m_begin = m_static_memory;
+ m_ptr = align(m_begin);
+ m_end = m_static_memory + sizeof(m_static_memory);
+ }
+
+ char *align(char *ptr)
+ {
+ std::size_t alignment = ((RAPIDXML_ALIGNMENT - (std::size_t(ptr) & (RAPIDXML_ALIGNMENT - 1))) & (RAPIDXML_ALIGNMENT - 1));
+ return ptr + alignment;
+ }
+
+ char *allocate_raw(std::size_t size)
+ {
+ // Allocate
+ void *memory;
+ if (m_alloc_func) // Allocate memory using either user-specified allocation function or global operator new[]
+ {
+ memory = m_alloc_func(size);
+ assert(memory); // Allocator is not allowed to return 0, on failure it must either throw, stop the program or use longjmp
+ }
+ else
+ {
+ memory = new char[size];
+#ifdef RAPIDXML_NO_EXCEPTIONS
+ if (!memory) // If exceptions are disabled, verify memory allocation, because new will not be able to throw bad_alloc
+ RAPIDXML_PARSE_ERROR("out of memory", 0);
+#endif
+ }
+ return static_cast<char *>(memory);
+ }
+
+ void *allocate_aligned(std::size_t size)
+ {
+ // Calculate aligned pointer
+ char *result = align(m_ptr);
+
+ // If not enough memory left in current pool, allocate a new pool
+ if (result + size > m_end)
+ {
+ // Calculate required pool size (may be bigger than RAPIDXML_DYNAMIC_POOL_SIZE)
+ std::size_t pool_size = RAPIDXML_DYNAMIC_POOL_SIZE;
+ if (pool_size < size)
+ pool_size = size;
+
+ // Allocate
+ std::size_t alloc_size = sizeof(header) + (2 * RAPIDXML_ALIGNMENT - 2) + pool_size; // 2 alignments required in worst case: one for header, one for actual allocation
+ char *raw_memory = allocate_raw(alloc_size);
+
+ // Setup new pool in allocated memory
+ char *pool = align(raw_memory);
+ header *new_header = reinterpret_cast<header *>(pool);
+ new_header->previous_begin = m_begin;
+ m_begin = raw_memory;
+ m_ptr = pool + sizeof(header);
+ m_end = raw_memory + alloc_size;
+
+ // Calculate aligned pointer again using new pool
+ result = align(m_ptr);
+ }
+
+ // Update pool and return aligned pointer
+ m_ptr = result + size;
+ return result;
+ }
+
+ char *m_begin; // Start of raw memory making up current pool
+ char *m_ptr; // First free byte in current pool
+ char *m_end; // One past last available byte in current pool
+ char m_static_memory[RAPIDXML_STATIC_POOL_SIZE]; // Static raw memory
+ alloc_func *m_alloc_func; // Allocator function, or 0 if default is to be used
+ free_func *m_free_func; // Free function, or 0 if default is to be used
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+ // XML base
+
+ //! Base class for xml_node and xml_attribute implementing common functions:
+ //! name(), name_size(), value(), value_size() and parent().
+ //! \param Ch Character type to use
+ template<class Ch = char>
+ class xml_base
+ {
+
+ public:
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Construction & destruction
+
+ // Construct a base with empty name, value and parent
+ xml_base()
+ : m_name(0)
+ , m_value(0)
+ , m_parent(0)
+ {
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Node data access
+
+ //! Gets name of the node.
+ //! Interpretation of name depends on type of node.
+ //! Note that name will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse.
+ //! <br><br>
+ //! Use name_size() function to determine length of the name.
+ //! \return Name of node, or empty string if node has no name.
+ Ch *name() const
+ {
+ return m_name ? m_name : nullstr();
+ }
+
+ //! Gets size of node name, not including terminator character.
+ //! This function works correctly irrespective of whether name is or is not zero terminated.
+ //! \return Size of node name, in characters.
+ std::size_t name_size() const
+ {
+ return m_name ? m_name_size : 0;
+ }
+
+ //! Gets value of node.
+ //! Interpretation of value depends on type of node.
+ //! Note that value will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse.
+ //! <br><br>
+ //! Use value_size() function to determine length of the value.
+ //! \return Value of node, or empty string if node has no value.
+ Ch *value() const
+ {
+ return m_value ? m_value : nullstr();
+ }
+
+ //! Gets size of node value, not including terminator character.
+ //! This function works correctly irrespective of whether value is or is not zero terminated.
+ //! \return Size of node value, in characters.
+ std::size_t value_size() const
+ {
+ return m_value ? m_value_size : 0;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Node modification
+
+ //! Sets name of node to a non zero-terminated string.
+ //! See \ref ownership_of_strings.
+ //! <br><br>
+ //! Note that node does not own its name or value, it only stores a pointer to it.
+ //! It will not delete or otherwise free the pointer on destruction.
+ //! It is reponsibility of the user to properly manage lifetime of the string.
+ //! The easiest way to achieve it is to use memory_pool of the document to allocate the string -
+ //! on destruction of the document the string will be automatically freed.
+ //! <br><br>
+ //! Size of name must be specified separately, because name does not have to be zero terminated.
+ //! Use name(const Ch *) function to have the length automatically calculated (string must be zero terminated).
+ //! \param name Name of node to set. Does not have to be zero terminated.
+ //! \param size Size of name, in characters. This does not include zero terminator, if one is present.
+ void name(const Ch *name, std::size_t size)
+ {
+ m_name = const_cast<Ch *>(name);
+ m_name_size = size;
+ }
+
+ //! Sets name of node to a zero-terminated string.
+ //! See also \ref ownership_of_strings and xml_node::name(const Ch *, std::size_t).
+ //! \param name Name of node to set. Must be zero terminated.
+ void name(const Ch *name)
+ {
+ this->name(name, internal::measure(name));
+ }
+
+ //! Sets value of node to a non zero-terminated string.
+ //! See \ref ownership_of_strings.
+ //! <br><br>
+ //! Note that node does not own its name or value, it only stores a pointer to it.
+ //! It will not delete or otherwise free the pointer on destruction.
+ //! It is reponsibility of the user to properly manage lifetime of the string.
+ //! The easiest way to achieve it is to use memory_pool of the document to allocate the string -
+ //! on destruction of the document the string will be automatically freed.
+ //! <br><br>
+ //! Size of value must be specified separately, because it does not have to be zero terminated.
+ //! Use value(const Ch *) function to have the length automatically calculated (string must be zero terminated).
+ //! <br><br>
+ //! If an element has a child node of type node_data, it will take precedence over element value when printing.
+ //! If you want to manipulate data of elements using values, use parser flag rapidxml::parse_no_data_nodes to prevent creation of data nodes by the parser.
+ //! \param value value of node to set. Does not have to be zero terminated.
+ //! \param size Size of value, in characters. This does not include zero terminator, if one is present.
+ void value(const Ch *value, std::size_t size)
+ {
+ m_value = const_cast<Ch *>(value);
+ m_value_size = size;
+ }
+
+ //! Sets value of node to a zero-terminated string.
+ //! See also \ref ownership_of_strings and xml_node::value(const Ch *, std::size_t).
+ //! \param value Vame of node to set. Must be zero terminated.
+ void value(const Ch *value)
+ {
+ this->value(value, internal::measure(value));
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Related nodes access
+
+ //! Gets node parent.
+ //! \return Pointer to parent node, or 0 if there is no parent.
+ xml_node<Ch> *parent() const
+ {
+ return m_parent;
+ }
+
+ protected:
+
+ // Return empty string
+ static Ch *nullstr()
+ {
+ static Ch zero = Ch('\0');
+ return &zero;
+ }
+
+ Ch *m_name; // Name of node, or 0 if no name
+ Ch *m_value; // Value of node, or 0 if no value
+ std::size_t m_name_size; // Length of node name, or undefined of no name
+ std::size_t m_value_size; // Length of node value, or undefined if no value
+ xml_node<Ch> *m_parent; // Pointer to parent node, or 0 if none
+
+ };
+
+ //! Class representing attribute node of XML document.
+ //! Each attribute has name and value strings, which are available through name() and value() functions (inherited from xml_base).
+ //! Note that after parse, both name and value of attribute will point to interior of source text used for parsing.
+ //! Thus, this text must persist in memory for the lifetime of attribute.
+ //! \param Ch Character type to use.
+ template<class Ch = char>
+ class xml_attribute: public xml_base<Ch>
+ {
+
+ friend class xml_node<Ch>;
+
+ public:
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Construction & destruction
+
+ //! Constructs an empty attribute with the specified type.
+ //! Consider using memory_pool of appropriate xml_document if allocating attributes manually.
+ xml_attribute()
+ {
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Related nodes access
+
+ //! Gets document of which attribute is a child.
+ //! \return Pointer to document that contains this attribute, or 0 if there is no parent document.
+ xml_document<Ch> *document() const
+ {
+ if (xml_node<Ch> *node = this->parent())
+ {
+ while (node->parent())
+ node = node->parent();
+ return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0;
+ }
+ else
+ return 0;
+ }
+
+ //! Gets previous attribute, optionally matching attribute name.
+ //! \param name Name of attribute to find, or 0 to return previous attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
+ //! \param name_size Size of name, in characters, or 0 to have size calculated automatically from string
+ //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
+ //! \return Pointer to found attribute, or 0 if not found.
+ xml_attribute<Ch> *previous_attribute(const Ch *name = 0, std::size_t name_size = 0, bool case_sensitive = true) const
+ {
+ if (name)
+ {
+ if (name_size == 0)
+ name_size = internal::measure(name);
+ for (xml_attribute<Ch> *attribute = m_prev_attribute; attribute; attribute = attribute->m_prev_attribute)
+ if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))
+ return attribute;
+ return 0;
+ }
+ else
+ return this->m_parent ? m_prev_attribute : 0;
+ }
+
+ //! Gets next attribute, optionally matching attribute name.
+ //! \param name Name of attribute to find, or 0 to return next attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
+ //! \param name_size Size of name, in characters, or 0 to have size calculated automatically from string
+ //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
+ //! \return Pointer to found attribute, or 0 if not found.
+ xml_attribute<Ch> *next_attribute(const Ch *name = 0, std::size_t name_size = 0, bool case_sensitive = true) const
+ {
+ if (name)
+ {
+ if (name_size == 0)
+ name_size = internal::measure(name);
+ for (xml_attribute<Ch> *attribute = m_next_attribute; attribute; attribute = attribute->m_next_attribute)
+ if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))
+ return attribute;
+ return 0;
+ }
+ else
+ return this->m_parent ? m_next_attribute : 0;
+ }
+
+ private:
+
+ xml_attribute<Ch> *m_prev_attribute; // Pointer to previous sibling of attribute, or 0 if none; only valid if parent is non-zero
+ xml_attribute<Ch> *m_next_attribute; // Pointer to next sibling of attribute, or 0 if none; only valid if parent is non-zero
+
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+ // XML node
+
+ //! Class representing a node of XML document.
+ //! Each node may have associated name and value strings, which are available through name() and value() functions.
+ //! Interpretation of name and value depends on type of the node.
+ //! Type of node can be determined by using type() function.
+ //! <br><br>
+ //! Note that after parse, both name and value of node, if any, will point interior of source text used for parsing.
+ //! Thus, this text must persist in the memory for the lifetime of node.
+ //! \param Ch Character type to use.
+ template<class Ch = char>
+ class xml_node: public xml_base<Ch>
+ {
+
+ public:
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Construction & destruction
+
+ //! Constructs an empty node with the specified type.
+ //! Consider using memory_pool of appropriate document to allocate nodes manually.
+ //! \param type Type of node to construct.
+ xml_node(node_type type)
+ : m_type(type)
+ , m_first_node(0)
+ , m_first_attribute(0)
+ {
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Node data access
+
+ //! Gets type of node.
+ //! \return Type of node.
+ node_type type() const
+ {
+ return m_type;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Related nodes access
+
+ //! Gets document of which node is a child.
+ //! \return Pointer to document that contains this node, or 0 if there is no parent document.
+ xml_document<Ch> *document() const
+ {
+ xml_node<Ch> *node = const_cast<xml_node<Ch> *>(this);
+ while (node->parent())
+ node = node->parent();
+ return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0;
+ }
+
+ //! Gets first child node, optionally matching node name.
+ //! \param name Name of child to find, or 0 to return first child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
+ //! \param name_size Size of name, in characters, or 0 to have size calculated automatically from string
+ //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
+ //! \return Pointer to found child, or 0 if not found.
+ xml_node<Ch> *first_node(const Ch *name = 0, std::size_t name_size = 0, bool case_sensitive = true) const
+ {
+ if (name)
+ {
+ if (name_size == 0)
+ name_size = internal::measure(name);
+ for (xml_node<Ch> *child = m_first_node; child; child = child->next_sibling())
+ if (internal::compare(child->name(), child->name_size(), name, name_size, case_sensitive))
+ return child;
+ return 0;
+ }
+ else
+ return m_first_node;
+ }
+
+ //! Gets last child node, optionally matching node name.
+ //! Behaviour is undefined if node has no children.
+ //! Use first_node() to test if node has children.
+ //! \param name Name of child to find, or 0 to return last child regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
+ //! \param name_size Size of name, in characters, or 0 to have size calculated automatically from string
+ //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
+ //! \return Pointer to found child, or 0 if not found.
+ xml_node<Ch> *last_node(const Ch *name = 0, std::size_t name_size = 0, bool case_sensitive = true) const
+ {
+ assert(m_first_node); // Cannot query for last child if node has no children
+ if (name)
+ {
+ if (name_size == 0)
+ name_size = internal::measure(name);
+ for (xml_node<Ch> *child = m_last_node; child; child = child->previous_sibling())
+ if (internal::compare(child->name(), child->name_size(), name, name_size, case_sensitive))
+ return child;
+ return 0;
+ }
+ else
+ return m_last_node;
+ }
+
+ //! Gets previous sibling node, optionally matching node name.
+ //! Behaviour is undefined if node has no parent.
+ //! Use parent() to test if node has a parent.
+ //! \param name Name of sibling to find, or 0 to return previous sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
+ //! \param name_size Size of name, in characters, or 0 to have size calculated automatically from string
+ //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
+ //! \return Pointer to found sibling, or 0 if not found.
+ xml_node<Ch> *previous_sibling(const Ch *name = 0, std::size_t name_size = 0, bool case_sensitive = true) const
+ {
+ assert(this->m_parent); // Cannot query for siblings if node has no parent
+ if (name)
+ {
+ if (name_size == 0)
+ name_size = internal::measure(name);
+ for (xml_node<Ch> *sibling = m_prev_sibling; sibling; sibling = sibling->m_prev_sibling)
+ if (internal::compare(sibling->name(), sibling->name_size(), name, name_size, case_sensitive))
+ return sibling;
+ return 0;
+ }
+ else
+ return m_prev_sibling;
+ }
+
+ //! Gets next sibling node, optionally matching node name.
+ //! Behaviour is undefined if node has no parent.
+ //! Use parent() to test if node has a parent.
+ //! \param name Name of sibling to find, or 0 to return next sibling regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
+ //! \param name_size Size of name, in characters, or 0 to have size calculated automatically from string
+ //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
+ //! \return Pointer to found sibling, or 0 if not found.
+ xml_node<Ch> *next_sibling(const Ch *name = 0, std::size_t name_size = 0, bool case_sensitive = true) const
+ {
+ assert(this->m_parent); // Cannot query for siblings if node has no parent
+ if (name)
+ {
+ if (name_size == 0)
+ name_size = internal::measure(name);
+ for (xml_node<Ch> *sibling = m_next_sibling; sibling; sibling = sibling->m_next_sibling)
+ if (internal::compare(sibling->name(), sibling->name_size(), name, name_size, case_sensitive))
+ return sibling;
+ return 0;
+ }
+ else
+ return m_next_sibling;
+ }
+
+ //! Gets first attribute of node, optionally matching attribute name.
+ //! \param name Name of attribute to find, or 0 to return first attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
+ //! \param name_size Size of name, in characters, or 0 to have size calculated automatically from string
+ //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
+ //! \return Pointer to found attribute, or 0 if not found.
+ xml_attribute<Ch> *first_attribute(const Ch *name = 0, std::size_t name_size = 0, bool case_sensitive = true) const
+ {
+ if (name)
+ {
+ if (name_size == 0)
+ name_size = internal::measure(name);
+ for (xml_attribute<Ch> *attribute = m_first_attribute; attribute; attribute = attribute->m_next_attribute)
+ if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))
+ return attribute;
+ return 0;
+ }
+ else
+ return m_first_attribute;
+ }
+
+ //! Gets last attribute of node, optionally matching attribute name.
+ //! \param name Name of attribute to find, or 0 to return last attribute regardless of its name; this string doesn't have to be zero-terminated if name_size is non-zero
+ //! \param name_size Size of name, in characters, or 0 to have size calculated automatically from string
+ //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
+ //! \return Pointer to found attribute, or 0 if not found.
+ xml_attribute<Ch> *last_attribute(const Ch *name = 0, std::size_t name_size = 0, bool case_sensitive = true) const
+ {
+ if (name)
+ {
+ if (name_size == 0)
+ name_size = internal::measure(name);
+ for (xml_attribute<Ch> *attribute = m_last_attribute; attribute; attribute = attribute->m_prev_attribute)
+ if (internal::compare(attribute->name(), attribute->name_size(), name, name_size, case_sensitive))
+ return attribute;
+ return 0;
+ }
+ else
+ return m_first_attribute ? m_last_attribute : 0;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Node modification
+
+ //! Sets type of node.
+ //! \param type Type of node to set.
+ void type(node_type type)
+ {
+ m_type = type;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Node manipulation
+
+ //! Prepends a new child node.
+ //! The prepended child becomes the first child, and all existing children are moved one position back.
+ //! \param child Node to prepend.
+ void prepend_node(xml_node<Ch> *child)
+ {
+ assert(child && !child->parent() && child->type() != node_document);
+ if (first_node())
+ {
+ child->m_next_sibling = m_first_node;
+ m_first_node->m_prev_sibling = child;
+ }
+ else
+ {
+ child->m_next_sibling = 0;
+ m_last_node = child;
+ }
+ m_first_node = child;
+ child->m_parent = this;
+ child->m_prev_sibling = 0;
+ }
+
+ //! Appends a new child node.
+ //! The appended child becomes the last child.
+ //! \param child Node to append.
+ void append_node(xml_node<Ch> *child)
+ {
+ assert(child && !child->parent() && child->type() != node_document);
+ if (first_node())
+ {
+ child->m_prev_sibling = m_last_node;
+ m_last_node->m_next_sibling = child;
+ }
+ else
+ {
+ child->m_prev_sibling = 0;
+ m_first_node = child;
+ }
+ m_last_node = child;
+ child->m_parent = this;
+ child->m_next_sibling = 0;
+ }
+
+ //! Inserts a new child node at specified place inside the node.
+ //! All children after and including the specified node are moved one position back.
+ //! \param where Place where to insert the child, or 0 to insert at the back.
+ //! \param child Node to insert.
+ void insert_node(xml_node<Ch> *where, xml_node<Ch> *child)
+ {
+ assert(!where || where->parent() == this);
+ assert(child && !child->parent() && child->type() != node_document);
+ if (where == m_first_node)
+ prepend_node(child);
+ else if (where == 0)
+ append_node(child);
+ else
+ {
+ child->m_prev_sibling = where->m_prev_sibling;
+ child->m_next_sibling = where;
+ where->m_prev_sibling->m_next_sibling = child;
+ where->m_prev_sibling = child;
+ child->m_parent = this;
+ }
+ }
+
+ //! Removes first child node.
+ //! If node has no children, behaviour is undefined.
+ //! Use first_node() to test if node has children.
+ void remove_first_node()
+ {
+ assert(first_node());
+ xml_node<Ch> *child = m_first_node;
+ m_first_node = child->m_next_sibling;
+ if (child->m_next_sibling)
+ child->m_next_sibling->m_prev_sibling = 0;
+ else
+ m_last_node = 0;
+ child->m_parent = 0;
+ }
+
+ //! Removes last child of the node.
+ //! If node has no children, behaviour is undefined.
+ //! Use first_node() to test if node has children.
+ void remove_last_node()
+ {
+ assert(first_node());
+ xml_node<Ch> *child = m_last_node;
+ if (child->m_prev_sibling)
+ {
+ m_last_node = child->m_prev_sibling;
+ child->m_prev_sibling->m_next_sibling = 0;
+ }
+ else
+ m_first_node = 0;
+ child->m_parent = 0;
+ }
+
+ //! Removes specified child from the node
+ // \param where Pointer to child to be removed.
+ void remove_node(xml_node<Ch> *where)
+ {
+ assert(where && where->parent() == this);
+ assert(first_node());
+ if (where == m_first_node)
+ remove_first_node();
+ else if (where == m_last_node)
+ remove_last_node();
+ else
+ {
+ where->m_prev_sibling->m_next_sibling = where->m_next_sibling;
+ where->m_next_sibling->m_prev_sibling = where->m_prev_sibling;
+ where->m_parent = 0;
+ }
+ }
+
+ //! Removes all child nodes (but not attributes).
+ void remove_all_nodes()
+ {
+ for (xml_node<Ch> *node = first_node(); node; node = node->m_next_sibling)
+ node->m_parent = 0;
+ m_first_node = 0;
+ }
+
+ //! Prepends a new attribute to the node.
+ //! \param attribute Attribute to prepend.
+ void prepend_attribute(xml_attribute<Ch> *attribute)
+ {
+ assert(attribute && !attribute->parent());
+ if (first_attribute())
+ {
+ attribute->m_next_attribute = m_first_attribute;
+ m_first_attribute->m_prev_attribute = attribute;
+ }
+ else
+ {
+ attribute->m_next_attribute = 0;
+ m_last_attribute = attribute;
+ }
+ m_first_attribute = attribute;
+ attribute->m_parent = this;
+ attribute->m_prev_attribute = 0;
+ }
+
+ //! Appends a new attribute to the node.
+ //! \param attribute Attribute to append.
+ void append_attribute(xml_attribute<Ch> *attribute)
+ {
+ assert(attribute && !attribute->parent());
+ if (first_attribute())
+ {
+ attribute->m_prev_attribute = m_last_attribute;
+ m_last_attribute->m_next_attribute = attribute;
+ }
+ else
+ {
+ attribute->m_prev_attribute = 0;
+ m_first_attribute = attribute;
+ }
+ m_last_attribute = attribute;
+ attribute->m_parent = this;
+ attribute->m_next_attribute = 0;
+ }
+
+ //! Inserts a new attribute at specified place inside the node.
+ //! All attributes after and including the specified attribute are moved one position back.
+ //! \param where Place where to insert the attribute, or 0 to insert at the back.
+ //! \param attribute Attribute to insert.
+ void insert_attribute(xml_attribute<Ch> *where, xml_attribute<Ch> *attribute)
+ {
+ assert(!where || where->parent() == this);
+ assert(attribute && !attribute->parent());
+ if (where == m_first_attribute)
+ prepend_attribute(attribute);
+ else if (where == 0)
+ append_attribute(attribute);
+ else
+ {
+ attribute->m_prev_attribute = where->m_prev_attribute;
+ attribute->m_next_attribute = where;
+ where->m_prev_attribute->m_next_attribute = attribute;
+ where->m_prev_attribute = attribute;
+ attribute->m_parent = this;
+ }
+ }
+
+ //! Removes first attribute of the node.
+ //! If node has no attributes, behaviour is undefined.
+ //! Use first_attribute() to test if node has attributes.
+ void remove_first_attribute()
+ {
+ assert(first_attribute());
+ xml_attribute<Ch> *attribute = m_first_attribute;
+ if (attribute->m_next_attribute)
+ {
+ attribute->m_next_attribute->m_prev_attribute = 0;
+ }
+ else
+ m_last_attribute = 0;
+ attribute->m_parent = 0;
+ m_first_attribute = attribute->m_next_attribute;
+ }
+
+ //! Removes last attribute of the node.
+ //! If node has no attributes, behaviour is undefined.
+ //! Use first_attribute() to test if node has attributes.
+ void remove_last_attribute()
+ {
+ assert(first_attribute());
+ xml_attribute<Ch> *attribute = m_last_attribute;
+ if (attribute->m_prev_attribute)
+ {
+ attribute->m_prev_attribute->m_next_attribute = 0;
+ m_last_attribute = attribute->m_prev_attribute;
+ }
+ else
+ m_first_attribute = 0;
+ attribute->m_parent = 0;
+ }
+
+ //! Removes specified attribute from node.
+ //! \param where Pointer to attribute to be removed.
+ void remove_attribute(xml_attribute<Ch> *where)
+ {
+ assert(first_attribute() && where->parent() == this);
+ if (where == m_first_attribute)
+ remove_first_attribute();
+ else if (where == m_last_attribute)
+ remove_last_attribute();
+ else
+ {
+ where->m_prev_attribute->m_next_attribute = where->m_next_attribute;
+ where->m_next_attribute->m_prev_attribute = where->m_prev_attribute;
+ where->m_parent = 0;
+ }
+ }
+
+ //! Removes all attributes of node.
+ void remove_all_attributes()
+ {
+ for (xml_attribute<Ch> *attribute = first_attribute(); attribute; attribute = attribute->m_next_attribute)
+ attribute->m_parent = 0;
+ m_first_attribute = 0;
+ }
+
+ private:
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Restrictions
+
+ // No copying
+ xml_node(const xml_node &);
+ void operator =(const xml_node &);
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Data members
+
+ // Note that some of the pointers below have UNDEFINED values if certain other pointers are 0.
+ // This is required for maximum performance, as it allows the parser to omit initialization of
+ // unneded/redundant values.
+ //
+ // The rules are as follows:
+ // 1. first_node and first_attribute contain valid pointers, or 0 if node has no children/attributes respectively
+ // 2. last_node and last_attribute are valid only if node has at least one child/attribute respectively, otherwise they contain garbage
+ // 3. prev_sibling and next_sibling are valid only if node has a parent, otherwise they contain garbage
+
+ node_type m_type; // Type of node; always valid
+ xml_node<Ch> *m_first_node; // Pointer to first child node, or 0 if none; always valid
+ xml_node<Ch> *m_last_node; // Pointer to last child node, or 0 if none; this value is only valid if m_first_node is non-zero
+ xml_attribute<Ch> *m_first_attribute; // Pointer to first attribute of node, or 0 if none; always valid
+ xml_attribute<Ch> *m_last_attribute; // Pointer to last attribute of node, or 0 if none; this value is only valid if m_first_attribute is non-zero
+ xml_node<Ch> *m_prev_sibling; // Pointer to previous sibling of node, or 0 if none; this value is only valid if m_parent is non-zero
+ xml_node<Ch> *m_next_sibling; // Pointer to next sibling of node, or 0 if none; this value is only valid if m_parent is non-zero
+
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+ // XML document
+
+ //! This class represents root of the DOM hierarchy.
+ //! It is also an xml_node and a memory_pool through public inheritance.
+ //! Use parse() function to build a DOM tree from a zero-terminated XML text string.
+ //! parse() function allocates memory for nodes and attributes by using functions of xml_document,
+ //! which are inherited from memory_pool.
+ //! To access root node of the document, use the document itself, as if it was an xml_node.
+ //! \param Ch Character type to use.
+ template<class Ch = char>
+ class xml_document: public xml_node<Ch>, public memory_pool<Ch>
+ {
+
+ public:
+
+ //! Constructs empty XML document
+ xml_document()
+ : xml_node<Ch>(node_document)
+ {
+ }
+
+ //! Parses zero-terminated XML string according to given flags.
+ //! Passed string will be modified by the parser, unless rapidxml::parse_non_destructive flag is used.
+ //! The string must persist for the lifetime of the document.
+ //! In case of error, rapidxml::parse_error exception will be thrown.
+ //! <br><br>
+ //! If you want to parse contents of a file, you must first load the file into the memory, and pass pointer to its beginning.
+ //! Make sure that data is zero-terminated.
+ //! <br><br>
+ //! Document can be parsed into multiple times.
+ //! Each new call to parse removes previous nodes and attributes (if any), but does not clear memory pool.
+ //! \param text XML data to parse; pointer is non-const to denote fact that this data may be modified by the parser.
+ template<int Flags>
+ void parse(Ch *text)
+ {
+ assert(text);
+
+ // Remove current contents
+ this->remove_all_nodes();
+ this->remove_all_attributes();
+
+ // Parse BOM, if any
+ parse_bom<Flags>(text);
+
+ // Parse children
+ while (1)
+ {
+ // Skip whitespace before node
+ skip<whitespace_pred, Flags>(text);
+ if (*text == 0)
+ break;
+
+ // Parse and append new child
+ if (*text == Ch('<'))
+ {
+ ++text; // Skip '<'
+ if (xml_node<Ch> *node = parse_node<Flags>(text))
+ this->append_node(node);
+ }
+ else
+ RAPIDXML_PARSE_ERROR("expected <", text);
+ }
+
+ }
+
+ //! Clears the document by deleting all nodes and clearing the memory pool.
+ //! All nodes owned by document pool are destroyed.
+ void clear()
+ {
+ this->remove_all_nodes();
+ this->remove_all_attributes();
+ memory_pool<Ch>::clear();
+ }
+
+ private:
+
+ ///////////////////////////////////////////////////////////////////////
+ // Internal character utility functions
+
+ // Detect whitespace character
+ struct whitespace_pred
+ {
+ static unsigned char test(Ch ch)
+ {
+ return internal::lookup_tables<0>::lookup_whitespace[static_cast<unsigned char>(ch)];
+ }
+ };
+
+ // Detect node name character
+ struct node_name_pred
+ {
+ static unsigned char test(Ch ch)
+ {
+ return internal::lookup_tables<0>::lookup_node_name[static_cast<unsigned char>(ch)];
+ }
+ };
+
+ // Detect attribute name character
+ struct attribute_name_pred
+ {
+ static unsigned char test(Ch ch)
+ {
+ return internal::lookup_tables<0>::lookup_attribute_name[static_cast<unsigned char>(ch)];
+ }
+ };
+
+ // Detect text character (PCDATA)
+ struct text_pred
+ {
+ static unsigned char test(Ch ch)
+ {
+ return internal::lookup_tables<0>::lookup_text[static_cast<unsigned char>(ch)];
+ }
+ };
+
+ // Detect text character (PCDATA) that does not require processing
+ struct text_pure_no_ws_pred
+ {
+ static unsigned char test(Ch ch)
+ {
+ return internal::lookup_tables<0>::lookup_text_pure_no_ws[static_cast<unsigned char>(ch)];
+ }
+ };
+
+ // Detect text character (PCDATA) that does not require processing
+ struct text_pure_with_ws_pred
+ {
+ static unsigned char test(Ch ch)
+ {
+ return internal::lookup_tables<0>::lookup_text_pure_with_ws[static_cast<unsigned char>(ch)];
+ }
+ };
+
+ // Detect attribute value character
+ template<Ch Quote>
+ struct attribute_value_pred
+ {
+ static unsigned char test(Ch ch)
+ {
+ if (Quote == Ch('\''))
+ return internal::lookup_tables<0>::lookup_attribute_data_1[static_cast<unsigned char>(ch)];
+ if (Quote == Ch('\"'))
+ return internal::lookup_tables<0>::lookup_attribute_data_2[static_cast<unsigned char>(ch)];
+ return 0; // Should never be executed, to avoid warnings on Comeau
+ }
+ };
+
+ // Detect attribute value character
+ template<Ch Quote>
+ struct attribute_value_pure_pred
+ {
+ static unsigned char test(Ch ch)
+ {
+ if (Quote == Ch('\''))
+ return internal::lookup_tables<0>::lookup_attribute_data_1_pure[static_cast<unsigned char>(ch)];
+ if (Quote == Ch('\"'))
+ return internal::lookup_tables<0>::lookup_attribute_data_2_pure[static_cast<unsigned char>(ch)];
+ return 0; // Should never be executed, to avoid warnings on Comeau
+ }
+ };
+
+ // Insert coded character, using UTF8 or 8-bit ASCII
+ template<int Flags>
+ static void insert_coded_character(Ch *&text, unsigned long code)
+ {
+ if (Flags & parse_no_utf8)
+ {
+ // Insert 8-bit ASCII character
+ // Todo: possibly verify that code is less than 256 and use replacement char otherwise?
+ text[0] = static_cast<unsigned char>(code);
+ text += 1;
+ }
+ else
+ {
+ // Insert UTF8 sequence
+ if (code < 0x80) // 1 byte sequence
+ {
+ text[0] = static_cast<unsigned char>(code);
+ text += 1;
+ }
+ else if (code < 0x800) // 2 byte sequence
+ {
+ text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
+ text[0] = static_cast<unsigned char>(code | 0xC0);
+ text += 2;
+ }
+ else if (code < 0x10000) // 3 byte sequence
+ {
+ text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
+ text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
+ text[0] = static_cast<unsigned char>(code | 0xE0);
+ text += 3;
+ }
+ else if (code < 0x110000) // 4 byte sequence
+ {
+ text[3] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
+ text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
+ text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
+ text[0] = static_cast<unsigned char>(code | 0xF0);
+ text += 4;
+ }
+ else // Invalid, only codes up to 0x10FFFF are allowed in Unicode
+ {
+ RAPIDXML_PARSE_ERROR("invalid numeric character entity", text);
+ }
+ }
+ }
+
+ // Skip characters until predicate evaluates to true
+ template<class StopPred, int Flags>
+ static void skip(Ch *&text)
+ {
+ Ch *tmp = text;
+ while (StopPred::test(*tmp))
+ ++tmp;
+ text = tmp;
+ }
+
+ // Skip characters until predicate evaluates to true while doing the following:
+ // - replacing XML character entity references with proper characters (&apos; &amp; &quot; &lt; &gt; &#...;)
+ // - condensing whitespace sequences to single space character
+ template<class StopPred, class StopPredPure, int Flags>
+ static Ch *skip_and_expand_character_refs(Ch *&text)
+ {
+ // If entity translation, whitespace condense and whitespace trimming is disabled, use plain skip
+ if (Flags & parse_no_entity_translation &&
+ !(Flags & parse_normalize_whitespace) &&
+ !(Flags & parse_trim_whitespace))
+ {
+ skip<StopPred, Flags>(text);
+ return text;
+ }
+
+ // Use simple skip until first modification is detected
+ skip<StopPredPure, Flags>(text);
+
+ // Use translation skip
+ Ch *src = text;
+ Ch *dest = src;
+ while (StopPred::test(*src))
+ {
+ // If entity translation is enabled
+ if (!(Flags & parse_no_entity_translation))
+ {
+ // Test if replacement is needed
+ if (src[0] == Ch('&'))
+ {
+ switch (src[1])
+ {
+
+ // &amp; &apos;
+ case Ch('a'):
+ if (src[2] == Ch('m') && src[3] == Ch('p') && src[4] == Ch(';'))
+ {
+ *dest = Ch('&');
+ ++dest;
+ src += 5;
+ continue;
+ }
+ if (src[2] == Ch('p') && src[3] == Ch('o') && src[4] == Ch('s') && src[5] == Ch(';'))
+ {
+ *dest = Ch('\'');
+ ++dest;
+ src += 6;
+ continue;
+ }
+ break;
+
+ // &quot;
+ case Ch('q'):
+ if (src[2] == Ch('u') && src[3] == Ch('o') && src[4] == Ch('t') && src[5] == Ch(';'))
+ {
+ *dest = Ch('"');
+ ++dest;
+ src += 6;
+ continue;
+ }
+ break;
+
+ // &gt;
+ case Ch('g'):
+ if (src[2] == Ch('t') && src[3] == Ch(';'))
+ {
+ *dest = Ch('>');
+ ++dest;
+ src += 4;
+ continue;
+ }
+ break;
+
+ // &lt;
+ case Ch('l'):
+ if (src[2] == Ch('t') && src[3] == Ch(';'))
+ {
+ *dest = Ch('<');
+ ++dest;
+ src += 4;
+ continue;
+ }
+ break;
+
+ // &#...; - assumes ASCII
+ case Ch('#'):
+ if (src[2] == Ch('x'))
+ {
+ unsigned long code = 0;
+ src += 3; // Skip &#x
+ while (1)
+ {
+ unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)];
+ if (digit == 0xFF)
+ break;
+ code = code * 16 + digit;
+ ++src;
+ }
+ insert_coded_character<Flags>(dest, code); // Put character in output
+ }
+ else
+ {
+ unsigned long code = 0;
+ src += 2; // Skip &#
+ while (1)
+ {
+ unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)];
+ if (digit == 0xFF)
+ break;
+ code = code * 10 + digit;
+ ++src;
+ }
+ insert_coded_character<Flags>(dest, code); // Put character in output
+ }
+ if (*src == Ch(';'))
+ ++src;
+ else
+ RAPIDXML_PARSE_ERROR("expected ;", src);
+ continue;
+
+ // Something else
+ default:
+ // Ignore, just copy '&' verbatim
+ break;
+
+ }
+ }
+ }
+
+ // If whitespace condensing is enabled
+ if (Flags & parse_normalize_whitespace)
+ {
+ // Test if condensing is needed
+ if (whitespace_pred::test(*src))
+ {
+ *dest = Ch(' '); ++dest; // Put single space in dest
+ ++src; // Skip first whitespace char
+ // Skip remaining whitespace chars
+ while (whitespace_pred::test(*src))
+ ++src;
+ continue;
+ }
+ }
+
+ // No replacement, only copy character
+ *dest++ = *src++;
+
+ }
+
+ // Return new end
+ text = src;
+ return dest;
+
+ }
+
+ ///////////////////////////////////////////////////////////////////////
+ // Internal parsing functions
+
+ // Parse BOM, if any
+ template<int Flags>
+ void parse_bom(Ch *&text)
+ {
+ // UTF-8?
+ if (static_cast<unsigned char>(text[0]) == 0xEF &&
+ static_cast<unsigned char>(text[1]) == 0xBB &&
+ static_cast<unsigned char>(text[2]) == 0xBF)
+ {
+ text += 3; // Skup utf-8 bom
+ }
+ }
+
+ // Parse XML declaration (<?xml...)
+ template<int Flags>
+ xml_node<Ch> *parse_xml_declaration(Ch *&text)
+ {
+ // If parsing of declaration is disabled
+ if (!(Flags & parse_declaration_node))
+ {
+ // Skip until end of declaration
+ while (text[0] != Ch('?') || text[1] != Ch('>'))
+ {
+ if (!text[0])
+ RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ ++text;
+ }
+ text += 2; // Skip '?>'
+ return 0;
+ }
+
+ // Create declaration
+ xml_node<Ch> *declaration = this->allocate_node(node_declaration);
+
+ // Skip whitespace before attributes or ?>
+ skip<whitespace_pred, Flags>(text);
+
+ // Parse declaration attributes
+ parse_node_attributes<Flags>(text, declaration);
+
+ // Skip ?>
+ if (text[0] != Ch('?') || text[1] != Ch('>'))
+ RAPIDXML_PARSE_ERROR("expected ?>", text);
+ text += 2;
+
+ return declaration;
+ }
+
+ // Parse XML comment (<!--...)
+ template<int Flags>
+ xml_node<Ch> *parse_comment(Ch *&text)
+ {
+ // If parsing of comments is disabled
+ if (!(Flags & parse_comment_nodes))
+ {
+ // Skip until end of comment
+ while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))
+ {
+ if (!text[0])
+ RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ ++text;
+ }
+ text += 3; // Skip '-->'
+ return 0; // Do not produce comment node
+ }
+
+ // Remember value start
+ Ch *value = text;
+
+ // Skip until end of comment
+ while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))
+ {
+ if (!text[0])
+ RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ ++text;
+ }
+
+ // Create comment node
+ xml_node<Ch> *comment = this->allocate_node(node_comment);
+ comment->value(value, text - value);
+
+ // Place zero terminator after comment value
+ if (!(Flags & parse_no_string_terminators))
+ *text = Ch('\0');
+
+ text += 3; // Skip '-->'
+ return comment;
+ }
+
+ // Parse DOCTYPE
+ template<int Flags>
+ xml_node<Ch> *parse_doctype(Ch *&text)
+ {
+ // Remember value start
+ Ch *value = text;
+
+ // Skip to >
+ while (*text != Ch('>'))
+ {
+ // Determine character type
+ switch (*text)
+ {
+
+ // If '[' encountered, scan for matching ending ']' using naive algorithm with depth
+ // This works for all W3C test files except for 2 most wicked
+ case Ch('['):
+ {
+ ++text; // Skip '['
+ int depth = 1;
+ while (depth > 0)
+ {
+ switch (*text)
+ {
+ case Ch('['): ++depth; break;
+ case Ch(']'): --depth; break;
+ case 0: RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ }
+ ++text;
+ }
+ break;
+ }
+
+ // Error on end of text
+ case Ch('\0'):
+ RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+
+ // Other character, skip it
+ default:
+ ++text;
+
+ }
+ }
+
+ // If DOCTYPE nodes enabled
+ if (Flags & parse_doctype_node)
+ {
+ // Create a new doctype node
+ xml_node<Ch> *doctype = this->allocate_node(node_doctype);
+ doctype->value(value, text - value);
+
+ // Place zero terminator after value
+ if (!(Flags & parse_no_string_terminators))
+ *text = Ch('\0');
+
+ text += 1; // skip '>'
+ return doctype;
+ }
+ else
+ {
+ text += 1; // skip '>'
+ return 0;
+ }
+
+ }
+
+ // Parse PI
+ template<int Flags>
+ xml_node<Ch> *parse_pi(Ch *&text)
+ {
+ // If creation of PI nodes is enabled
+ if (Flags & parse_pi_nodes)
+ {
+ // Create pi node
+ xml_node<Ch> *pi = this->allocate_node(node_pi);
+
+ // Extract PI target name
+ Ch *name = text;
+ skip<node_name_pred, Flags>(text);
+ if (text == name)
+ RAPIDXML_PARSE_ERROR("expected PI target", text);
+ pi->name(name, text - name);
+
+ // Skip whitespace between pi target and pi
+ skip<whitespace_pred, Flags>(text);
+
+ // Remember start of pi
+ Ch *value = text;
+
+ // Skip to '?>'
+ while (text[0] != Ch('?') || text[1] != Ch('>'))
+ {
+ if (*text == Ch('\0'))
+ RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ ++text;
+ }
+
+ // Set pi value (verbatim, no entity expansion or whitespace normalization)
+ pi->value(value, text - value);
+
+ // Place zero terminator after name and value
+ if (!(Flags & parse_no_string_terminators))
+ {
+ pi->name()[pi->name_size()] = Ch('\0');
+ pi->value()[pi->value_size()] = Ch('\0');
+ }
+
+ text += 2; // Skip '?>'
+ return pi;
+ }
+ else
+ {
+ // Skip to '?>'
+ while (text[0] != Ch('?') || text[1] != Ch('>'))
+ {
+ if (*text == Ch('\0'))
+ RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ ++text;
+ }
+ text += 2; // Skip '?>'
+ return 0;
+ }
+ }
+
+ // Parse and append data
+ // Return character that ends data.
+ // This is necessary because this character might have been overwritten by a terminating 0
+ template<int Flags>
+ Ch parse_and_append_data(xml_node<Ch> *node, Ch *&text, Ch *contents_start)
+ {
+ // Backup to contents start if whitespace trimming is disabled
+ if (!(Flags & parse_trim_whitespace))
+ text = contents_start;
+
+ // Skip until end of data
+ Ch *value = text, *end;
+ if (Flags & parse_normalize_whitespace)
+ end = skip_and_expand_character_refs<text_pred, text_pure_with_ws_pred, Flags>(text);
+ else
+ end = skip_and_expand_character_refs<text_pred, text_pure_no_ws_pred, Flags>(text);
+
+ // Trim trailing whitespace if flag is set; leading was already trimmed by whitespace skip after >
+ if (Flags & parse_trim_whitespace)
+ {
+ if (Flags & parse_normalize_whitespace)
+ {
+ // Whitespace is already condensed to single space characters by skipping function, so just trim 1 char off the end
+ if (*(end - 1) == Ch(' '))
+ --end;
+ }
+ else
+ {
+ // Backup until non-whitespace character is found
+ while (whitespace_pred::test(*(end - 1)))
+ --end;
+ }
+ }
+
+ // If characters are still left between end and value (this test is only necessary if normalization is enabled)
+ // Create new data node
+ if (!(Flags & parse_no_data_nodes))
+ {
+ xml_node<Ch> *data = this->allocate_node(node_data);
+ data->value(value, end - value);
+ node->append_node(data);
+ }
+
+ // Add data to parent node if no data exists yet
+ if (!(Flags & parse_no_element_values))
+ if (*node->value() == Ch('\0'))
+ node->value(value, end - value);
+
+ // Place zero terminator after value
+ if (!(Flags & parse_no_string_terminators))
+ {
+ Ch ch = *text;
+ *end = Ch('\0');
+ return ch; // Return character that ends data; this is required because zero terminator overwritten it
+ }
+
+ // Return character that ends data
+ return *text;
+ }
+
+ // Parse CDATA
+ template<int Flags>
+ xml_node<Ch> *parse_cdata(Ch *&text)
+ {
+ // If CDATA is disabled
+ if (Flags & parse_no_data_nodes)
+ {
+ // Skip until end of cdata
+ while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))
+ {
+ if (!text[0])
+ RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ ++text;
+ }
+ text += 3; // Skip ]]>
+ return 0; // Do not produce CDATA node
+ }
+
+ // Skip until end of cdata
+ Ch *value = text;
+ while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))
+ {
+ if (!text[0])
+ RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ ++text;
+ }
+
+ // Create new cdata node
+ xml_node<Ch> *cdata = this->allocate_node(node_cdata);
+ cdata->value(value, text - value);
+
+ // Place zero terminator after value
+ if (!(Flags & parse_no_string_terminators))
+ *text = Ch('\0');
+
+ text += 3; // Skip ]]>
+ return cdata;
+ }
+
+ // Parse element node
+ template<int Flags>
+ xml_node<Ch> *parse_element(Ch *&text)
+ {
+ // Create element node
+ xml_node<Ch> *element = this->allocate_node(node_element);
+
+ // Extract element name
+ Ch *name = text;
+ skip<node_name_pred, Flags>(text);
+ if (text == name)
+ RAPIDXML_PARSE_ERROR("expected element name", text);
+ element->name(name, text - name);
+
+ // Skip whitespace between element name and attributes or >
+ skip<whitespace_pred, Flags>(text);
+
+ // Parse attributes, if any
+ parse_node_attributes<Flags>(text, element);
+
+ // Determine ending type
+ if (*text == Ch('>'))
+ {
+ ++text;
+ parse_node_contents<Flags>(text, element);
+ }
+ else if (*text == Ch('/'))
+ {
+ ++text;
+ if (*text != Ch('>'))
+ RAPIDXML_PARSE_ERROR("expected >", text);
+ ++text;
+ }
+ else
+ RAPIDXML_PARSE_ERROR("expected >", text);
+
+ // Place zero terminator after name
+ if (!(Flags & parse_no_string_terminators))
+ element->name()[element->name_size()] = Ch('\0');
+
+ // Return parsed element
+ return element;
+ }
+
+ // Determine node type, and parse it
+ template<int Flags>
+ xml_node<Ch> *parse_node(Ch *&text)
+ {
+ // Parse proper node type
+ switch (text[0])
+ {
+
+ // <...
+ default:
+ // Parse and append element node
+ return parse_element<Flags>(text);
+
+ // <?...
+ case Ch('?'):
+ ++text; // Skip ?
+ if ((text[0] == Ch('x') || text[0] == Ch('X')) &&
+ (text[1] == Ch('m') || text[1] == Ch('M')) &&
+ (text[2] == Ch('l') || text[2] == Ch('L')) &&
+ whitespace_pred::test(text[3]))
+ {
+ // '<?xml ' - xml declaration
+ text += 4; // Skip 'xml '
+ return parse_xml_declaration<Flags>(text);
+ }
+ else
+ {
+ // Parse PI
+ return parse_pi<Flags>(text);
+ }
+
+ // <!...
+ case Ch('!'):
+
+ // Parse proper subset of <! node
+ switch (text[1])
+ {
+
+ // <!-
+ case Ch('-'):
+ if (text[2] == Ch('-'))
+ {
+ // '<!--' - xml comment
+ text += 3; // Skip '!--'
+ return parse_comment<Flags>(text);
+ }
+ break;
+
+ // <![
+ case Ch('['):
+ if (text[2] == Ch('C') && text[3] == Ch('D') && text[4] == Ch('A') &&
+ text[5] == Ch('T') && text[6] == Ch('A') && text[7] == Ch('['))
+ {
+ // '<![CDATA[' - cdata
+ text += 8; // Skip '![CDATA['
+ return parse_cdata<Flags>(text);
+ }
+ break;
+
+ // <!D
+ case Ch('D'):
+ if (text[2] == Ch('O') && text[3] == Ch('C') && text[4] == Ch('T') &&
+ text[5] == Ch('Y') && text[6] == Ch('P') && text[7] == Ch('E') &&
+ whitespace_pred::test(text[8]))
+ {
+ // '<!DOCTYPE ' - doctype
+ text += 9; // skip '!DOCTYPE '
+ return parse_doctype<Flags>(text);
+ }
+
+ } // switch
+
+ // Attempt to skip other, unrecognized node types starting with <!
+ ++text; // Skip !
+ while (*text != Ch('>'))
+ {
+ if (*text == 0)
+ RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+ ++text;
+ }
+ ++text; // Skip '>'
+ return 0; // No node recognized
+
+ }
+ }
+
+ // Parse contents of the node - children, data etc.
+ template<int Flags>
+ void parse_node_contents(Ch *&text, xml_node<Ch> *node)
+ {
+ // For all children and text
+ while (1)
+ {
+ // Skip whitespace between > and node contents
+ Ch *contents_start = text; // Store start of node contents before whitespace is skipped
+ skip<whitespace_pred, Flags>(text);
+ Ch next_char = *text;
+
+ // After data nodes, instead of continuing the loop, control jumps here.
+ // This is because zero termination inside parse_and_append_data() function
+ // would wreak havoc with the above code.
+ // Also, skipping whitespace after data nodes is unnecessary.
+ after_data_node:
+
+ // Determine what comes next: node closing, child node, data node, or 0?
+ switch (next_char)
+ {
+
+ // Node closing or child node
+ case Ch('<'):
+ if (text[1] == Ch('/'))
+ {
+ // Node closing
+ text += 2; // Skip '</'
+ if (Flags & parse_validate_closing_tags)
+ {
+ // Skip and validate closing tag name
+ Ch *closing_name = text;
+ skip<node_name_pred, Flags>(text);
+ if (!internal::compare(node->name(), node->name_size(), closing_name, text - closing_name, true))
+ RAPIDXML_PARSE_ERROR("invalid closing tag name", text);
+ }
+ else
+ {
+ // No validation, just skip name
+ skip<node_name_pred, Flags>(text);
+ }
+ // Skip remaining whitespace after node name
+ skip<whitespace_pred, Flags>(text);
+ if (*text != Ch('>'))
+ RAPIDXML_PARSE_ERROR("expected >", text);
+ ++text; // Skip '>'
+ return; // Node closed, finished parsing contents
+ }
+ else
+ {
+ // Child node
+ ++text; // Skip '<'
+ if (xml_node<Ch> *child = parse_node<Flags>(text))
+ node->append_node(child);
+ }
+ break;
+
+ // End of data - error
+ case Ch('\0'):
+ RAPIDXML_PARSE_ERROR("unexpected end of data", text);
+
+ // Data node
+ default:
+ next_char = parse_and_append_data<Flags>(node, text, contents_start);
+ goto after_data_node; // Bypass regular processing after data nodes
+
+ }
+ }
+ }
+
+ // Parse XML attributes of the node
+ template<int Flags>
+ void parse_node_attributes(Ch *&text, xml_node<Ch> *node)
+ {
+ // For all attributes
+ while (attribute_name_pred::test(*text))
+ {
+ // Extract attribute name
+ Ch *name = text;
+ ++text; // Skip first character of attribute name
+ skip<attribute_name_pred, Flags>(text);
+ if (text == name)
+ RAPIDXML_PARSE_ERROR("expected attribute name", name);
+
+ // Create new attribute
+ xml_attribute<Ch> *attribute = this->allocate_attribute();
+ attribute->name(name, text - name);
+ node->append_attribute(attribute);
+
+ // Skip whitespace after attribute name
+ skip<whitespace_pred, Flags>(text);
+
+ // Skip =
+ if (*text != Ch('='))
+ RAPIDXML_PARSE_ERROR("expected =", text);
+ ++text;
+
+ // Add terminating zero after name
+ if (!(Flags & parse_no_string_terminators))
+ attribute->name()[attribute->name_size()] = 0;
+
+ // Skip whitespace after =
+ skip<whitespace_pred, Flags>(text);
+
+ // Skip quote and remember if it was ' or "
+ Ch quote = *text;
+ if (quote != Ch('\'') && quote != Ch('"'))
+ RAPIDXML_PARSE_ERROR("expected ' or \"", text);
+ ++text;
+
+ // Extract attribute value and expand char refs in it
+ Ch *value = text, *end;
+ const int AttFlags = Flags & ~parse_normalize_whitespace; // No whitespace normalization in attributes
+ if (quote == Ch('\''))
+ end = skip_and_expand_character_refs<attribute_value_pred<Ch('\'')>, attribute_value_pure_pred<Ch('\'')>, AttFlags>(text);
+ else
+ end = skip_and_expand_character_refs<attribute_value_pred<Ch('"')>, attribute_value_pure_pred<Ch('"')>, AttFlags>(text);
+
+ // Set attribute value
+ attribute->value(value, end - value);
+
+ // Make sure that end quote is present
+ if (*text != quote)
+ RAPIDXML_PARSE_ERROR("expected ' or \"", text);
+ ++text; // Skip quote
+
+ // Add terminating zero after value
+ if (!(Flags & parse_no_string_terminators))
+ attribute->value()[attribute->value_size()] = 0;
+
+ // Skip whitespace after attribute value
+ skip<whitespace_pred, Flags>(text);
+ }
+ }
+
+ };
+
+ //! \cond internal
+ namespace internal
+ {
+
+ // Whitespace (space \n \r \t)
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_whitespace[256] =
+ {
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, // 0
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 5
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 7
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // A
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // B
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // C
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // D
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // F
+ };
+
+ // Node name (anything but space \n \r \t / > ? \0)
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_node_name[256] =
+ {
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, // 2
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, // 3
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
+ };
+
+ // Text (i.e. PCDATA) (anything but < \0)
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_text[256] =
+ {
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
+ };
+
+ // Text (i.e. PCDATA) that does not require processing when ws normalization is disabled
+ // (anything but < \0 &)
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_text_pure_no_ws[256] =
+ {
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
+ 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
+ };
+
+ // Text (i.e. PCDATA) that does not require processing when ws normalizationis is enabled
+ // (anything but < \0 & space \n \r \t)
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_text_pure_with_ws[256] =
+ {
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
+ 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
+ };
+
+ // Attribute name (anything but space \n \r \t / < > = ? ! \0)
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_attribute_name[256] =
+ {
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, // 2
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, // 3
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
+ };
+
+ // Attribute data with single quote (anything but ' \0)
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1[256] =
+ {
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
+ 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 2
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
+ };
+
+ // Attribute data with single quote that does not require processing (anything but ' \0 &)
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1_pure[256] =
+ {
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
+ 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 2
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
+ };
+
+ // Attribute data with double quote (anything but " \0)
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2[256] =
+ {
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
+ 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
+ };
+
+ // Attribute data with double quote that does not require processing (anything but " \0 &)
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2_pure[256] =
+ {
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
+ 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
+ };
+
+ // Digits (dec and hex, 255 denotes end of numeric character reference)
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_digits[256] =
+ {
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 0
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 1
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 2
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,255,255,255,255,255,255, // 3
+ 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 4
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 5
+ 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 6
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 7
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 8
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 9
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // A
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // B
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // C
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // D
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // E
+ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 // F
+ };
+
+ // Upper case conversion
+ template<int Dummy>
+ const unsigned char lookup_tables<Dummy>::lookup_upcase[256] =
+ {
+ // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A B C D E F
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // 0
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, // 1
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, // 2
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, // 3
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, // 4
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, // 5
+ 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, // 6
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 123,124,125,126,127, // 7
+ 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 8
+ 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, // 9
+ 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // A
+ 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // B
+ 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // C
+ 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // D
+ 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // E
+ 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // F
+ };
+ }
+ //! \endcond
+
+}
+
+// Undefine internal macros
+#undef RAPIDXML_PARSE_ERROR
+
+// On MSVC, restore warnings state
+#ifdef _MSC_VER
+ #pragma warning(pop)
+#endif
+
+#endif
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_iterators.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_iterators.hpp
new file mode 100644
index 0000000000..52ebc298aa
--- /dev/null
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_iterators.hpp
@@ -0,0 +1,174 @@
+#ifndef RAPIDXML_ITERATORS_HPP_INCLUDED
+#define RAPIDXML_ITERATORS_HPP_INCLUDED
+
+// Copyright (C) 2006, 2009 Marcin Kalicinski
+// Version 1.13
+// Revision $DateTime: 2009/05/13 01:46:17 $
+//! \file rapidxml_iterators.hpp This file contains rapidxml iterators
+
+#include "rapidxml.hpp"
+
+namespace rapidxml
+{
+
+ //! Iterator of child nodes of xml_node
+ template<class Ch>
+ class node_iterator
+ {
+
+ public:
+
+ typedef typename xml_node<Ch> value_type;
+ typedef typename xml_node<Ch> &reference;
+ typedef typename xml_node<Ch> *pointer;
+ typedef std::ptrdiff_t difference_type;
+ typedef std::bidirectional_iterator_tag iterator_category;
+
+ node_iterator()
+ : m_node(0)
+ {
+ }
+
+ node_iterator(xml_node<Ch> *node)
+ : m_node(node->first_node())
+ {
+ }
+
+ reference operator *() const
+ {
+ assert(m_node);
+ return *m_node;
+ }
+
+ pointer operator->() const
+ {
+ assert(m_node);
+ return m_node;
+ }
+
+ node_iterator& operator++()
+ {
+ assert(m_node);
+ m_node = m_node->next_sibling();
+ return *this;
+ }
+
+ node_iterator operator++(int)
+ {
+ node_iterator tmp = *this;
+ ++this;
+ return tmp;
+ }
+
+ node_iterator& operator--()
+ {
+ assert(m_node && m_node->previous_sibling());
+ m_node = m_node->previous_sibling();
+ return *this;
+ }
+
+ node_iterator operator--(int)
+ {
+ node_iterator tmp = *this;
+ ++this;
+ return tmp;
+ }
+
+ bool operator ==(const node_iterator<Ch> &rhs)
+ {
+ return m_node == rhs.m_node;
+ }
+
+ bool operator !=(const node_iterator<Ch> &rhs)
+ {
+ return m_node != rhs.m_node;
+ }
+
+ private:
+
+ xml_node<Ch> *m_node;
+
+ };
+
+ //! Iterator of child attributes of xml_node
+ template<class Ch>
+ class attribute_iterator
+ {
+
+ public:
+
+ typedef typename xml_attribute<Ch> value_type;
+ typedef typename xml_attribute<Ch> &reference;
+ typedef typename xml_attribute<Ch> *pointer;
+ typedef std::ptrdiff_t difference_type;
+ typedef std::bidirectional_iterator_tag iterator_category;
+
+ attribute_iterator()
+ : m_attribute(0)
+ {
+ }
+
+ attribute_iterator(xml_node<Ch> *node)
+ : m_attribute(node->first_attribute())
+ {
+ }
+
+ reference operator *() const
+ {
+ assert(m_attribute);
+ return *m_attribute;
+ }
+
+ pointer operator->() const
+ {
+ assert(m_attribute);
+ return m_attribute;
+ }
+
+ attribute_iterator& operator++()
+ {
+ assert(m_attribute);
+ m_attribute = m_attribute->next_attribute();
+ return *this;
+ }
+
+ attribute_iterator operator++(int)
+ {
+ attribute_iterator tmp = *this;
+ ++this;
+ return tmp;
+ }
+
+ attribute_iterator& operator--()
+ {
+ assert(m_attribute && m_attribute->previous_attribute());
+ m_attribute = m_attribute->previous_attribute();
+ return *this;
+ }
+
+ attribute_iterator operator--(int)
+ {
+ attribute_iterator tmp = *this;
+ ++this;
+ return tmp;
+ }
+
+ bool operator ==(const attribute_iterator<Ch> &rhs)
+ {
+ return m_attribute == rhs.m_attribute;
+ }
+
+ bool operator !=(const attribute_iterator<Ch> &rhs)
+ {
+ return m_attribute != rhs.m_attribute;
+ }
+
+ private:
+
+ xml_attribute<Ch> *m_attribute;
+
+ };
+
+}
+
+#endif
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_print.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_print.hpp
new file mode 100644
index 0000000000..0ae2b14faa
--- /dev/null
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_print.hpp
@@ -0,0 +1,421 @@
+#ifndef RAPIDXML_PRINT_HPP_INCLUDED
+#define RAPIDXML_PRINT_HPP_INCLUDED
+
+// Copyright (C) 2006, 2009 Marcin Kalicinski
+// Version 1.13
+// Revision $DateTime: 2009/05/13 01:46:17 $
+//! \file rapidxml_print.hpp This file contains rapidxml printer implementation
+
+#include "rapidxml.hpp"
+
+// Only include streams if not disabled
+#ifndef RAPIDXML_NO_STREAMS
+ #include <ostream>
+ #include <iterator>
+#endif
+
+namespace rapidxml
+{
+
+ ///////////////////////////////////////////////////////////////////////
+ // Printing flags
+
+ const int print_no_indenting = 0x1; //!< Printer flag instructing the printer to suppress indenting of XML. See print() function.
+
+ ///////////////////////////////////////////////////////////////////////
+ // Internal
+
+ //! \cond internal
+ namespace internal
+ {
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Internal character operations
+
+ // Copy characters from given range to given output iterator
+ template<class OutIt, class Ch>
+ inline OutIt copy_chars(const Ch *begin, const Ch *end, OutIt out)
+ {
+ while (begin != end)
+ *out++ = *begin++;
+ return out;
+ }
+
+ // Copy characters from given range to given output iterator and expand
+ // characters into references (&lt; &gt; &apos; &quot; &amp;)
+ template<class OutIt, class Ch>
+ inline OutIt copy_and_expand_chars(const Ch *begin, const Ch *end, Ch noexpand, OutIt out)
+ {
+ while (begin != end)
+ {
+ if (*begin == noexpand)
+ {
+ *out++ = *begin; // No expansion, copy character
+ }
+ else
+ {
+ switch (*begin)
+ {
+ case Ch('<'):
+ *out++ = Ch('&'); *out++ = Ch('l'); *out++ = Ch('t'); *out++ = Ch(';');
+ break;
+ case Ch('>'):
+ *out++ = Ch('&'); *out++ = Ch('g'); *out++ = Ch('t'); *out++ = Ch(';');
+ break;
+ case Ch('\''):
+ *out++ = Ch('&'); *out++ = Ch('a'); *out++ = Ch('p'); *out++ = Ch('o'); *out++ = Ch('s'); *out++ = Ch(';');
+ break;
+ case Ch('"'):
+ *out++ = Ch('&'); *out++ = Ch('q'); *out++ = Ch('u'); *out++ = Ch('o'); *out++ = Ch('t'); *out++ = Ch(';');
+ break;
+ case Ch('&'):
+ *out++ = Ch('&'); *out++ = Ch('a'); *out++ = Ch('m'); *out++ = Ch('p'); *out++ = Ch(';');
+ break;
+ default:
+ *out++ = *begin; // No expansion, copy character
+ }
+ }
+ ++begin; // Step to next character
+ }
+ return out;
+ }
+
+ // Fill given output iterator with repetitions of the same character
+ template<class OutIt, class Ch>
+ inline OutIt fill_chars(OutIt out, int n, Ch ch)
+ {
+ for (int i = 0; i < n; ++i)
+ *out++ = ch;
+ return out;
+ }
+
+ // Find character
+ template<class Ch, Ch ch>
+ inline bool find_char(const Ch *begin, const Ch *end)
+ {
+ while (begin != end)
+ if (*begin++ == ch)
+ return true;
+ return false;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Internal printing operations
+
+ // Print node
+ template<class OutIt, class Ch>
+ inline OutIt print_node(OutIt out, const xml_node<Ch> *node, int flags, int indent)
+ {
+ // Print proper node type
+ switch (node->type())
+ {
+
+ // Document
+ case node_document:
+ out = print_children(out, node, flags, indent);
+ break;
+
+ // Element
+ case node_element:
+ out = print_element_node(out, node, flags, indent);
+ break;
+
+ // Data
+ case node_data:
+ out = print_data_node(out, node, flags, indent);
+ break;
+
+ // CDATA
+ case node_cdata:
+ out = print_cdata_node(out, node, flags, indent);
+ break;
+
+ // Declaration
+ case node_declaration:
+ out = print_declaration_node(out, node, flags, indent);
+ break;
+
+ // Comment
+ case node_comment:
+ out = print_comment_node(out, node, flags, indent);
+ break;
+
+ // Doctype
+ case node_doctype:
+ out = print_doctype_node(out, node, flags, indent);
+ break;
+
+ // Pi
+ case node_pi:
+ out = print_pi_node(out, node, flags, indent);
+ break;
+
+ // Unknown
+ default:
+ assert(0);
+ break;
+ }
+
+ // If indenting not disabled, add line break after node
+ if (!(flags & print_no_indenting))
+ *out = Ch('\n'), ++out;
+
+ // Return modified iterator
+ return out;
+ }
+
+ // Print children of the node
+ template<class OutIt, class Ch>
+ inline OutIt print_children(OutIt out, const xml_node<Ch> *node, int flags, int indent)
+ {
+ for (xml_node<Ch> *child = node->first_node(); child; child = child->next_sibling())
+ out = print_node(out, child, flags, indent);
+ return out;
+ }
+
+ // Print attributes of the node
+ template<class OutIt, class Ch>
+ inline OutIt print_attributes(OutIt out, const xml_node<Ch> *node, int flags)
+ {
+ for (xml_attribute<Ch> *attribute = node->first_attribute(); attribute; attribute = attribute->next_attribute())
+ {
+ if (attribute->name() && attribute->value())
+ {
+ // Print attribute name
+ *out = Ch(' '), ++out;
+ out = copy_chars(attribute->name(), attribute->name() + attribute->name_size(), out);
+ *out = Ch('='), ++out;
+ // Print attribute value using appropriate quote type
+ if (find_char<Ch, Ch('"')>(attribute->value(), attribute->value() + attribute->value_size()))
+ {
+ *out = Ch('\''), ++out;
+ out = copy_and_expand_chars(attribute->value(), attribute->value() + attribute->value_size(), Ch('"'), out);
+ *out = Ch('\''), ++out;
+ }
+ else
+ {
+ *out = Ch('"'), ++out;
+ out = copy_and_expand_chars(attribute->value(), attribute->value() + attribute->value_size(), Ch('\''), out);
+ *out = Ch('"'), ++out;
+ }
+ }
+ }
+ return out;
+ }
+
+ // Print data node
+ template<class OutIt, class Ch>
+ inline OutIt print_data_node(OutIt out, const xml_node<Ch> *node, int flags, int indent)
+ {
+ assert(node->type() == node_data);
+ if (!(flags & print_no_indenting))
+ out = fill_chars(out, indent, Ch('\t'));
+ out = copy_and_expand_chars(node->value(), node->value() + node->value_size(), Ch(0), out);
+ return out;
+ }
+
+ // Print data node
+ template<class OutIt, class Ch>
+ inline OutIt print_cdata_node(OutIt out, const xml_node<Ch> *node, int flags, int indent)
+ {
+ assert(node->type() == node_cdata);
+ if (!(flags & print_no_indenting))
+ out = fill_chars(out, indent, Ch('\t'));
+ *out = Ch('<'); ++out;
+ *out = Ch('!'); ++out;
+ *out = Ch('['); ++out;
+ *out = Ch('C'); ++out;
+ *out = Ch('D'); ++out;
+ *out = Ch('A'); ++out;
+ *out = Ch('T'); ++out;
+ *out = Ch('A'); ++out;
+ *out = Ch('['); ++out;
+ out = copy_chars(node->value(), node->value() + node->value_size(), out);
+ *out = Ch(']'); ++out;
+ *out = Ch(']'); ++out;
+ *out = Ch('>'); ++out;
+ return out;
+ }
+
+ // Print element node
+ template<class OutIt, class Ch>
+ inline OutIt print_element_node(OutIt out, const xml_node<Ch> *node, int flags, int indent)
+ {
+ assert(node->type() == node_element);
+
+ // Print element name and attributes, if any
+ if (!(flags & print_no_indenting))
+ out = fill_chars(out, indent, Ch('\t'));
+ *out = Ch('<'), ++out;
+ out = copy_chars(node->name(), node->name() + node->name_size(), out);
+ out = print_attributes(out, node, flags);
+
+ // If node is childless
+ if (node->value_size() == 0 && !node->first_node())
+ {
+ // Print childless node tag ending
+ *out = Ch('/'), ++out;
+ *out = Ch('>'), ++out;
+ }
+ else
+ {
+ // Print normal node tag ending
+ *out = Ch('>'), ++out;
+
+ // Test if node contains a single data node only (and no other nodes)
+ xml_node<Ch> *child = node->first_node();
+ if (!child)
+ {
+ // If node has no children, only print its value without indenting
+ out = copy_and_expand_chars(node->value(), node->value() + node->value_size(), Ch(0), out);
+ }
+ else if (child->next_sibling() == 0 && child->type() == node_data)
+ {
+ // If node has a sole data child, only print its value without indenting
+ out = copy_and_expand_chars(child->value(), child->value() + child->value_size(), Ch(0), out);
+ }
+ else
+ {
+ // Print all children with full indenting
+ if (!(flags & print_no_indenting))
+ *out = Ch('\n'), ++out;
+ out = print_children(out, node, flags, indent + 1);
+ if (!(flags & print_no_indenting))
+ out = fill_chars(out, indent, Ch('\t'));
+ }
+
+ // Print node end
+ *out = Ch('<'), ++out;
+ *out = Ch('/'), ++out;
+ out = copy_chars(node->name(), node->name() + node->name_size(), out);
+ *out = Ch('>'), ++out;
+ }
+ return out;
+ }
+
+ // Print declaration node
+ template<class OutIt, class Ch>
+ inline OutIt print_declaration_node(OutIt out, const xml_node<Ch> *node, int flags, int indent)
+ {
+ // Print declaration start
+ if (!(flags & print_no_indenting))
+ out = fill_chars(out, indent, Ch('\t'));
+ *out = Ch('<'), ++out;
+ *out = Ch('?'), ++out;
+ *out = Ch('x'), ++out;
+ *out = Ch('m'), ++out;
+ *out = Ch('l'), ++out;
+
+ // Print attributes
+ out = print_attributes(out, node, flags);
+
+ // Print declaration end
+ *out = Ch('?'), ++out;
+ *out = Ch('>'), ++out;
+
+ return out;
+ }
+
+ // Print comment node
+ template<class OutIt, class Ch>
+ inline OutIt print_comment_node(OutIt out, const xml_node<Ch> *node, int flags, int indent)
+ {
+ assert(node->type() == node_comment);
+ if (!(flags & print_no_indenting))
+ out = fill_chars(out, indent, Ch('\t'));
+ *out = Ch('<'), ++out;
+ *out = Ch('!'), ++out;
+ *out = Ch('-'), ++out;
+ *out = Ch('-'), ++out;
+ out = copy_chars(node->value(), node->value() + node->value_size(), out);
+ *out = Ch('-'), ++out;
+ *out = Ch('-'), ++out;
+ *out = Ch('>'), ++out;
+ return out;
+ }
+
+ // Print doctype node
+ template<class OutIt, class Ch>
+ inline OutIt print_doctype_node(OutIt out, const xml_node<Ch> *node, int flags, int indent)
+ {
+ assert(node->type() == node_doctype);
+ if (!(flags & print_no_indenting))
+ out = fill_chars(out, indent, Ch('\t'));
+ *out = Ch('<'), ++out;
+ *out = Ch('!'), ++out;
+ *out = Ch('D'), ++out;
+ *out = Ch('O'), ++out;
+ *out = Ch('C'), ++out;
+ *out = Ch('T'), ++out;
+ *out = Ch('Y'), ++out;
+ *out = Ch('P'), ++out;
+ *out = Ch('E'), ++out;
+ *out = Ch(' '), ++out;
+ out = copy_chars(node->value(), node->value() + node->value_size(), out);
+ *out = Ch('>'), ++out;
+ return out;
+ }
+
+ // Print pi node
+ template<class OutIt, class Ch>
+ inline OutIt print_pi_node(OutIt out, const xml_node<Ch> *node, int flags, int indent)
+ {
+ assert(node->type() == node_pi);
+ if (!(flags & print_no_indenting))
+ out = fill_chars(out, indent, Ch('\t'));
+ *out = Ch('<'), ++out;
+ *out = Ch('?'), ++out;
+ out = copy_chars(node->name(), node->name() + node->name_size(), out);
+ *out = Ch(' '), ++out;
+ out = copy_chars(node->value(), node->value() + node->value_size(), out);
+ *out = Ch('?'), ++out;
+ *out = Ch('>'), ++out;
+ return out;
+ }
+
+ }
+ //! \endcond
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Printing
+
+ //! Prints XML to given output iterator.
+ //! \param out Output iterator to print to.
+ //! \param node Node to be printed. Pass xml_document to print entire document.
+ //! \param flags Flags controlling how XML is printed.
+ //! \return Output iterator pointing to position immediately after last character of printed text.
+ template<class OutIt, class Ch>
+ inline OutIt print(OutIt out, const xml_node<Ch> &node, int flags = 0)
+ {
+ return internal::print_node(out, &node, flags, 0);
+ }
+
+#ifndef RAPIDXML_NO_STREAMS
+
+ //! Prints XML to given output stream.
+ //! \param out Output stream to print to.
+ //! \param node Node to be printed. Pass xml_document to print entire document.
+ //! \param flags Flags controlling how XML is printed.
+ //! \return Output stream.
+ template<class Ch>
+ inline std::basic_ostream<Ch> &print(std::basic_ostream<Ch> &out, const xml_node<Ch> &node, int flags = 0)
+ {
+ print(std::ostream_iterator<Ch>(out), node, flags);
+ return out;
+ }
+
+ //! Prints formatted XML to given output stream. Uses default printing flags. Use print() function to customize printing process.
+ //! \param out Output stream to print to.
+ //! \param node Node to be printed.
+ //! \return Output stream.
+ template<class Ch>
+ inline std::basic_ostream<Ch> &operator <<(std::basic_ostream<Ch> &out, const xml_node<Ch> &node)
+ {
+ return print(out, node);
+ }
+
+#endif
+
+}
+
+#endif
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_utils.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_utils.hpp
new file mode 100644
index 0000000000..37c29535f4
--- /dev/null
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/contrib/rapidxml-1.13/rapidxml_utils.hpp
@@ -0,0 +1,122 @@
+#ifndef RAPIDXML_UTILS_HPP_INCLUDED
+#define RAPIDXML_UTILS_HPP_INCLUDED
+
+// Copyright (C) 2006, 2009 Marcin Kalicinski
+// Version 1.13
+// Revision $DateTime: 2009/05/13 01:46:17 $
+//! \file rapidxml_utils.hpp This file contains high-level rapidxml utilities that can be useful
+//! in certain simple scenarios. They should probably not be used if maximizing performance is the main objective.
+
+#include "rapidxml.hpp"
+#include <vector>
+#include <string>
+#include <fstream>
+#include <stdexcept>
+
+namespace rapidxml
+{
+
+ //! Represents data loaded from a file
+ template<class Ch = char>
+ class file
+ {
+
+ public:
+
+ //! Loads file into the memory. Data will be automatically destroyed by the destructor.
+ //! \param filename Filename to load.
+ file(const char *filename)
+ {
+ using namespace std;
+
+ // Open stream
+ basic_ifstream<Ch> stream(filename, ios::binary);
+ if (!stream)
+ throw runtime_error(string("cannot open file ") + filename);
+ stream.unsetf(ios::skipws);
+
+ // Determine stream size
+ stream.seekg(0, ios::end);
+ size_t size = stream.tellg();
+ stream.seekg(0);
+
+ // Load data and add terminating 0
+ m_data.resize(size + 1);
+ stream.read(&m_data.front(), static_cast<streamsize>(size));
+ m_data[size] = 0;
+ }
+
+ //! Loads file into the memory. Data will be automatically destroyed by the destructor
+ //! \param stream Stream to load from
+ file(std::basic_istream<Ch> &stream)
+ {
+ using namespace std;
+
+ // Load data and add terminating 0
+ stream.unsetf(ios::skipws);
+ m_data.assign(istreambuf_iterator<Ch>(stream), istreambuf_iterator<Ch>());
+ if (stream.fail() || stream.bad())
+ throw runtime_error("error reading stream");
+ m_data.push_back(0);
+ }
+
+ //! Gets file data.
+ //! \return Pointer to data of file.
+ Ch *data()
+ {
+ return &m_data.front();
+ }
+
+ //! Gets file data.
+ //! \return Pointer to data of file.
+ const Ch *data() const
+ {
+ return &m_data.front();
+ }
+
+ //! Gets file data size.
+ //! \return Size of file data, in characters.
+ std::size_t size() const
+ {
+ return m_data.size();
+ }
+
+ private:
+
+ std::vector<Ch> m_data; // File data
+
+ };
+
+ //! Counts children of node. Time complexity is O(n).
+ //! \return Number of children of node
+ template<class Ch>
+ inline std::size_t count_children(xml_node<Ch> *node)
+ {
+ xml_node<Ch> *child = node->first_node();
+ std::size_t count = 0;
+ while (child)
+ {
+ ++count;
+ child = child->next_sibling();
+ }
+ return count;
+ }
+
+ //! Counts attributes of node. Time complexity is O(n).
+ //! \return Number of attributes of node
+ template<class Ch>
+ inline std::size_t count_attributes(xml_node<Ch> *node)
+ {
+ xml_attribute<Ch> *attr = node->first_attribute();
+ std::size_t count = 0;
+ while (attr)
+ {
+ ++count;
+ attr = attr->next_attribute();
+ }
+ return count;
+ }
+
+}
+
+#endif
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_elements.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_elements.hpp
index 2667ed50b0..973f44981f 100644
--- a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_elements.hpp
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_elements.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
//
-// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2010-2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
// 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)
@@ -18,13 +19,13 @@ enum markup_type { markup_default, markup_synopsis };
enum markup_order_type { markup_any, markup_before, markup_after };
// TODO: rename, not all are functions
-enum function_type
-{
- function_unknown,
- function_define,
- function_constructor,
- function_member,
- function_free
+enum function_type
+{
+ function_unknown,
+ function_define,
+ function_constructor_destructor,
+ function_member,
+ function_free,
};
struct base_element
@@ -34,6 +35,8 @@ struct base_element
bool skip;
+ std::string id;
+
base_element(std::string const& n = "")
: name(n)
, skip(false)
@@ -47,6 +50,7 @@ struct parameter : public base_element
std::string type;
std::string default_value; // for template parameters
std::string fulltype; // post-processed
+ std::string fulltype_without_links;
};
struct enumeration_value : public base_element
@@ -85,6 +89,12 @@ struct markup
}
};
+struct paragraph
+{
+ std::string title;
+ std::string text;
+};
+
// Base of a class/struct, function, define
struct element : public base_element
{
@@ -103,6 +113,10 @@ struct element : public base_element
std::vector<parameter> template_parameters;
std::vector<parameter> parameters;
+ std::vector<paragraph> paragraphs;
+ std::string warning;
+ std::string note;
+
element()
: line(0)
{}
@@ -114,12 +128,16 @@ struct function : public element
function_type type;
std::string definition, argsstring;
std::string return_type, return_description;
+ std::string precondition;
+ std::string return_type_without_links;
bool unique;
+ bool is_static, is_const, is_explicit, is_virtual;
function()
: type(function_unknown)
, unique(true)
+ , is_static(false), is_const(false), is_explicit(false), is_virtual(false)
{}
};
@@ -134,7 +152,7 @@ struct enumeration : public element
struct base_class
{
std::string name;
- std::string derivation; // "prot" element
+ std::string derivation; // "prot" element
std::string virtuality; // "virt" element
};
@@ -145,7 +163,7 @@ struct class_or_struct : public element
std::vector<function> functions;
std::vector<base_element> typedefs;
- std::vector<base_element> variables;
+ std::vector<parameter> variables;
std::vector<base_class> base_classes;
};
@@ -153,11 +171,14 @@ struct class_or_struct : public element
struct documentation
{
+ std::string group_id;
+ std::string group_title;
+
// Only one expected (no grouping)
- class_or_struct cos;
+ class_or_struct cos;
// There can be many of them (in groups):
- std::vector<function> functions;
+ std::vector<function> functions;
std::vector<function> defines;
std::vector<enumeration> enumerations;
};
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml2qbk.cpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml2qbk.cpp
index b436c523f9..f916a652b4 100644
--- a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml2qbk.cpp
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml2qbk.cpp
@@ -1,6 +1,7 @@
// doxml2qbk (developed in the context of Boost.Geometry documentation)
//
-// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2010-2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
// 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)
@@ -18,8 +19,6 @@
// to an example.
// - currently still in draft
-// Aug 14/15: added classes, defines, various enhancements.
-
#include <iostream>
#include <fstream>
#include <sstream>
@@ -43,6 +42,23 @@
#include <quickbook_output.hpp>
#include <rapidxml_util.hpp>
+static const std::string version = "1.1.1";
+
+inline std::string program_description(bool decorated)
+{
+ std::string result;
+ if (decorated)
+ {
+ result = "=== ";
+ }
+ result += "doxygen_xml2qbk ";
+ result += version;
+ if (decorated)
+ {
+ result += " ===";
+ }
+ return result;
+}
int main(int argc, char** argv)
@@ -52,29 +68,35 @@ int main(int argc, char** argv)
{
configuration config;
std::string copyright_filename;
+ std::string output_style;
// Read/get configuration
{
namespace po = boost::program_options;
- po::options_description description("=== doxml2qbk ===\nAllowed options");
-
+ po::options_description description;
std::string convenience_headers;
description.add_options()
("help", "Help message")
- ("xml", po::value<std::string>(&filename),
+ ("version", "Version description")
+ ("xml", po::value<std::string>(&filename),
"Name of XML file written by Doxygen")
- ("start_include", po::value<std::string>(&config.start_include),
+ ("start_include", po::value<std::string>(&config.start_include),
"Start include")
- ("convenience_header_path", po::value<std::string>(&config.convenience_header_path),
+ ("convenience_header_path", po::value<std::string>(&config.convenience_header_path),
"Convenience header path")
- ("convenience_headers", po::value<std::string>(&convenience_headers),
+ ("convenience_headers", po::value<std::string>(&convenience_headers),
"Convenience header(s) (comma-separated)")
- ("skip_namespace", po::value<std::string>(&config.skip_namespace),
- "Namespace to skip (e.g. boost::mylib::")
- ("copyright", po::value<std::string>(&copyright_filename),
+ ("skip_namespace", po::value<std::string>(&config.skip_namespace),
+ "Namespace to skip (e.g. boost::mylib::)")
+ ("copyright", po::value<std::string>(&copyright_filename),
"Name of QBK file including (commented) copyright and license")
+
+ ("output_style", po::value<std::string>(&output_style),
+ "Docbook output style. Available values: 'alt'")
+ ("output_member_variables", po::value<bool>(&config.output_member_variables),
+ "Output member variables inside the class")
;
po::variables_map varmap;
@@ -92,9 +114,25 @@ int main(int argc, char** argv)
po::notify(varmap);
- if (varmap.count("help") || filename.empty())
+ if (varmap.count("version"))
+ {
+ std::cout << version << std::endl;
+ return 0;
+ }
+ else if (varmap.count("help"))
+ {
+ std::cout
+ << program_description(true) << std::endl
+ << "Available options:" << std::endl
+ << description << std::endl;
+ return 0;
+ }
+ else if (filename.empty())
{
- std::cout << description << std::endl;
+ std::cout
+ << program_description(true) << std::endl
+ << "Allowed options:" << std::endl
+ << description << std::endl;
return 1;
}
@@ -105,10 +143,16 @@ int main(int argc, char** argv)
}
}
+ // Set output style
+ if ("alt" == output_style)
+ {
+ config.output_style = configuration::alt;
+ }
+
// Read files into strings
std::string xml_string = file_to_string(filename);
- std::string license = copyright_filename.empty()
- ? ""
+ std::string license = copyright_filename.empty()
+ ? ""
: file_to_string(copyright_filename);
// Parse the XML outputted by Doxygen
@@ -146,29 +190,44 @@ int main(int argc, char** argv)
// Write warning comment
std::cout
- << "[/ Generated by doxygen_xml2qbk, don't change, will be overwritten automatically]" << std::endl
+ << "[/ Generated by " << program_description(false) << ", don't change, will be overwritten automatically]" << std::endl
<< "[/ Generated from " << filename << "]" << std::endl;
- // Write the rest: functions, defines, classes or structs
- BOOST_FOREACH(function const& f, doc.functions)
+ if ( configuration::def == config.output_style )
{
- quickbook_output(f, config, std::cout);
- }
- BOOST_FOREACH(function const& f, doc.defines)
- {
- quickbook_output(f, config, std::cout);
+ // Write the rest: functions, defines, classes or structs
+ BOOST_FOREACH(function const& f, doc.functions)
+ {
+ quickbook_output(f, config, std::cout);
+ }
+ BOOST_FOREACH(function const& f, doc.defines)
+ {
+ quickbook_output(f, config, std::cout);
+ }
+ BOOST_FOREACH(enumeration const& e, doc.enumerations)
+ {
+ quickbook_output(e, config, std::cout);
+ }
+
+ if (! doc.cos.name.empty())
+ {
+ std::sort(doc.cos.functions.begin(), doc.cos.functions.end(), sort_on_line<function>());
+ quickbook_output(doc.cos, config, std::cout);
+ }
}
- BOOST_FOREACH(enumeration const& e, doc.enumerations)
+ else if ( configuration::alt == config.output_style )
{
- quickbook_output(e, config, std::cout);
- }
+ if (! doc.cos.name.empty())
+ {
+ std::sort(doc.cos.functions.begin(), doc.cos.functions.end(), sort_on_line<function>());
+ quickbook_output_alt(doc.cos, config, std::cout);
+ }
- if (! doc.cos.name.empty())
- {
- std::sort(doc.cos.functions.begin(), doc.cos.functions.end(), sort_on_line<function>());
- quickbook_output(doc.cos, config, std::cout);
+ if (! doc.group_id.empty())
+ {
+ quickbook_output_alt(doc, config, std::cout);
+ }
}
-
}
catch(std::exception const& e)
{
@@ -181,7 +240,7 @@ int main(int argc, char** argv)
}
catch(...)
{
- std::cerr << "Unknown exception in doxygen_xml2qbk"
+ std::cerr << "Unknown exception in doxygen_xml2qbk"
<< std::endl;
return 1;
}
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml_parser.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml_parser.hpp
index aa8b902192..5642bb2eb9 100644
--- a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml_parser.hpp
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/doxygen_xml_parser.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
//
-// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2010-2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
// 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)
@@ -52,9 +53,9 @@ static inline void add_or_set(std::vector<parameter>& parameters, parameter cons
-/// Parses a "para" element
+/// Parses a "para" element
/*
-This is used for different purposes within Doxygen.
+This is used for different purposes within Doxygen.
- Either a detailed description, possibly containing several sections (para's)
-> so parse next siblings
- Or a detailed description also containing qbk records
@@ -62,7 +63,16 @@ This is used for different purposes within Doxygen.
So we have to list explicitly either where to recurse, or where not to...
*/
-static void parse_para(rapidxml::xml_node<>* node, std::string& contents, bool& skip, bool first = true)
+
+// Type used to store parsing state. It indicates if QBK formatting block was opened - [*...], [^...], etc.
+enum text_block
+{
+ not_in_block,
+ in_code_block,
+ in_block
+};
+
+static void parse_para(rapidxml::xml_node<>* node, configuration const& config, std::string& contents, bool& skip, bool first = true, text_block tb = not_in_block)
{
if (node != NULL)
{
@@ -70,18 +80,73 @@ static void parse_para(rapidxml::xml_node<>* node, std::string& contents, bool&
{
//std::cout << "ELEMENT: " << node->name() << "=" << node->value() << std::endl;
std::string name = node->name();
- if (boost::equals(name, "qbk.skip"))
+ if ( boost::equals(name, "itemizedlist") )
+ {
+ contents += "\n\n";
+ parse_para(node->first_node(), config, contents, skip, true, tb);
+ contents += "\n";
+ parse_para(node->next_sibling(), config, contents, skip, true, tb);
+ return;
+ }
+ else if ( boost::equals(name, "listitem") )
+ {
+ contents += "* ";
+ parse_para(node->first_node(), config, contents, skip, true, tb);
+ contents += "\n";
+ parse_para(node->next_sibling(), config, contents, skip, true, tb);
+ return;
+ }
+ else if ( boost::equals(name, "verbatim") )
+ {
+ contents += "\n``\n";
+ parse_para(node->first_node(), config, contents, skip, false, tb);
+ contents += "``\n";
+ parse_para(node->next_sibling(), config, contents, skip, false, tb);
+ return;
+ }
+ else if ( boost::equals(name, "bold") )
+ {
+ contents += "[*";
+ parse_para(node->first_node(), config, contents, skip, false, in_block);
+ contents += "]";
+ parse_para(node->next_sibling(), config, contents, skip, false, tb);
+ return;
+ }
+ else if ( boost::equals(name, "emphasis") )
+ {
+ contents += "['";
+ parse_para(node->first_node(), config, contents, skip, false, in_block);
+ contents += "]";
+ parse_para(node->next_sibling(), config, contents, skip, false, tb);
+ return;
+ }
+ else if ( boost::equals(name, "computeroutput") )
{
- skip = true;
+ contents += "[^";
+ parse_para(node->first_node(), config, contents, skip, false, tb == in_block ? in_block : in_code_block);
+ contents += "]";
+ parse_para(node->next_sibling(), config, contents, skip, false, tb);
return;
}
+ else if ( boost::equals(name, "ref") )
+ {
+ // If alternative output is used - insert links
+ if ( configuration::alt == config.output_style )
+ {
+ std::string refid = node->first_attribute("refid")->value();
+ if ( !refid.empty() )
+ {
+ contents += std::string("[link ") + refid + " ";
+ parse_para(node->first_node(), config, contents, skip, false, in_block);
+ contents += "]";
+ parse_para(node->next_sibling(), config, contents, skip, false, tb);
+ return;
+ }
+ }
+ }
else if (! (
(boost::equals(name, "para") && first)
- || boost::equals(name, "ref")
|| boost::equals(name, "defval")
- || boost::equals(name, "verbatim")
- || boost::equals(name, "bold")
- || boost::equals(name, "emphasis")
|| boost::equals(name, "linebreak")
))
{
@@ -90,20 +155,33 @@ static void parse_para(rapidxml::xml_node<>* node, std::string& contents, bool&
}
else if (node->type() == rapidxml::node_data)
{
- contents += node->value();
+ std::string str = node->value();
+ if ( tb == in_block )
+ {
+ boost::replace_all(str, "\\", "\\\\");
+ boost::replace_all(str, "[", "\\[");
+ boost::replace_all(str, "]", "\\]");
+ }
+ else if ( tb == in_code_block )
+ {
+ if ( str.find('`') == std::string::npos )
+ str = std::string("`") + str + "`";
+ }
+ contents += str;
//std::cout << "DATA: " << node->name() << "=" << node->value() << std::endl;
}
else
{
//std::cout << "OTHER: " << node->name() << "=" << node->value() << std::endl;
}
- parse_para(node->first_node(), contents, skip, false);
- parse_para(node->next_sibling(), contents, skip, false);
+
+ parse_para(node->first_node(), config, contents, skip, false, tb);
+ parse_para(node->next_sibling(), config, contents, skip, false, tb);
}
}
-static void parse_parameter(rapidxml::xml_node<>* node, parameter& p)
+static void parse_parameter(rapidxml::xml_node<>* node, configuration const& config, parameter& p)
{
// #define: <param><defname>Point</defname></param>
// template: <param><type>typename</type><declname>CoordinateType</declname><defname>CoordinateType</defname></param>
@@ -121,25 +199,33 @@ static void parse_parameter(rapidxml::xml_node<>* node, parameter& p)
boost::replace_all(p.type, "&", "");
boost::replace_all(p.type, "*", "");
boost::trim(p.type);
+
+ // If alt output is used retrieve type with QBK links
+ if ( configuration::alt == config.output_style )
+ {
+ p.fulltype_without_links = p.fulltype;
+ p.fulltype.clear();
+ parse_para(node->first_node(), config, p.fulltype, p.skip);
+ }
}
else if (name == "declname") p.name = node->value();
else if (name == "parametername") p.name = node->value();
- else if (name == "defname") p.name = node->value();
- else if (name == "defval")
+ else if (name == "defname") p.name = node->value();
+ else if (name == "defval")
{
- parse_para(node, p.default_value, p.skip);
+ parse_para(node, config, p.default_value, p.skip);
}
else if (name == "para")
{
- parse_para(node, p.brief_description, p.skip);
+ parse_para(node, config, p.brief_description, p.skip);
}
- parse_parameter(node->first_node(), p);
- parse_parameter(node->next_sibling(), p);
+ parse_parameter(node->first_node(), config, p);
+ parse_parameter(node->next_sibling(), config, p);
}
}
-static void parse_enumeration_value(rapidxml::xml_node<>* node, enumeration_value& value)
+static void parse_enumeration_value(rapidxml::xml_node<>* node, configuration const& config, enumeration_value& value)
{
// <enumvalue><name>green</name><initializer> 2</initializer>
// <briefdescription><para>...</para></briefdescription>
@@ -153,21 +239,21 @@ static void parse_enumeration_value(rapidxml::xml_node<>* node, enumeration_valu
else if (node_name == "para")
{
// Parses both brief AND detailed into this description
- parse_para(node, value.brief_description, value.skip);
+ parse_para(node, config, value.brief_description, value.skip);
}
else if (node_name == "initializer")
{
value.initializer = node->value();
}
- parse_enumeration_value(node->first_node(), value);
- parse_enumeration_value(node->next_sibling(), value);
+ parse_enumeration_value(node->first_node(), config, value);
+ parse_enumeration_value(node->next_sibling(), config, value);
}
}
// Definition is a function or a class/struct
template <typename Parameters>
-static void parse_parameter_list(rapidxml::xml_node<>* node, Parameters& parameters)
+static void parse_parameter_list(rapidxml::xml_node<>* node, configuration const& config, Parameters& parameters)
{
if (node != NULL)
{
@@ -176,7 +262,7 @@ static void parse_parameter_list(rapidxml::xml_node<>* node, Parameters& paramet
if (name == "parameteritem")
{
parameter p;
- parse_parameter(node->first_node(), p);
+ parse_parameter(node->first_node(), config, p);
if (! p.name.empty())
{
// Copy its description
@@ -196,7 +282,7 @@ static void parse_parameter_list(rapidxml::xml_node<>* node, Parameters& paramet
{
// Element of 'templateparamlist.param (.type,.declname,.defname)'
parameter p;
- parse_parameter(node->first_node(), p);
+ parse_parameter(node->first_node(), config, p);
// Doxygen handles templateparamlist param's differently:
//
@@ -223,8 +309,8 @@ static void parse_parameter_list(rapidxml::xml_node<>* node, Parameters& paramet
add_or_set(parameters, p);
}
- parse_parameter_list(node->first_node(), parameters);
- parse_parameter_list(node->next_sibling(), parameters);
+ parse_parameter_list(node->first_node(), config, parameters);
+ parse_parameter_list(node->next_sibling(), config, parameters);
}
}
@@ -279,12 +365,12 @@ static void parse_element(rapidxml::xml_node<>* node, configuration const& confi
if (full == ".briefdescription.para")
{
- parse_para(node, el.brief_description, el.skip);
+ parse_para(node, config, el.brief_description, el.skip);
}
else if (full == ".detaileddescription.para")
{
std::string para;
- parse_para(node, para, el.skip);
+ parse_para(node, config, para, el.skip);
if (!para.empty() && !el.detailed_description.empty())
{
el.detailed_description += "\n\n";
@@ -323,7 +409,7 @@ static void parse_element(rapidxml::xml_node<>* node, configuration const& confi
}
else if (full == ".templateparamlist")
{
- parse_parameter_list(node->first_node(), el.template_parameters);
+ parse_parameter_list(node->first_node(), config, el.template_parameters);
}
else if (full == ".detaileddescription.para.parameterlist")
{
@@ -333,19 +419,43 @@ static void parse_element(rapidxml::xml_node<>* node, configuration const& confi
// Parse parameters and their descriptions.
// NOTE: they are listed here, but the order might not be the order in the function call
std::vector<parameter> parameters;
- parse_parameter_list(node->first_node(), parameters);
+ parse_parameter_list(node->first_node(), config, parameters);
copy_parameters_properties(parameters, el.parameters);
}
else if (kind == "templateparam")
{
- parse_parameter_list(node->first_node(), el.template_parameters);
+ parse_parameter_list(node->first_node(), config, el.template_parameters);
+ }
+ }
+ else if (full == ".detaileddescription.para.simplesect")
+ {
+ std::string kind = get_attribute(node, "kind");
+ if (kind == "par")
+ {
+ paragraph p;
+
+ rapidxml::xml_node<> * title_node = node->first_node("title");
+ if ( title_node )
+ p.title = title_node->value();
+
+ parse_para(node->first_node("para"), config, p.text, el.skip);
+
+ el.paragraphs.push_back(p);
+ }
+ else if (kind == "warning")
+ {
+ parse_para(node->first_node("para"), config, el.warning, el.skip);
+ }
+ else if (kind == "note")
+ {
+ parse_para(node->first_node("para"), config, el.note, el.skip);
}
}
else if (full == ".param")
{
// Parse one parameter, and add it to el.parameters
parameter p;
- parse_parameter(node->first_node(), p);
+ parse_parameter(node->first_node(), config, p);
el.parameters.push_back(p);
}
@@ -375,24 +485,37 @@ static void parse_function(rapidxml::xml_node<>* node, configuration const& conf
else if (full == ".param")
{
parameter p;
- parse_parameter(node->first_node(), p);
+ parse_parameter(node->first_node(), config, p);
add_or_set(f.parameters, p);
}
else if (full == ".type")
{
get_contents(node->first_node(), f.return_type);
+
+ // If alt output is used, retrieve return type with links
+ if ( configuration::alt == config.output_style )
+ {
+ f.return_type_without_links = f.return_type;
+ bool dummy_skip;
+ f.return_type.clear();
+ parse_para(node->first_node(), config, f.return_type, dummy_skip);
+ }
}
else if (full == ".detaileddescription.para.simplesect")
{
std::string kind = get_attribute(node, "kind");
if (kind == "return")
{
- get_contents(node->first_node(), f.return_description);
+ parse_para(node->first_node(), config, f.return_description, f.skip);
}
/*else if (kind == "param")
{
get_contents(node->first_node(), f.paragraphs);
}*/
+ else if (kind == "pre")
+ {
+ parse_para(node->first_node(), config, f.precondition, f.skip);
+ }
}
else if (full == ".detaileddescription.para.image")
{
@@ -414,7 +537,7 @@ static void parse_enumeration(rapidxml::xml_node<>* node, configuration const& c
else if (full == ".enumvalue")
{
enumeration_value value;
- parse_enumeration_value(node->first_node(), value);
+ parse_enumeration_value(node->first_node(), config, value);
e.enumeration_values.push_back(value);
}
@@ -479,35 +602,54 @@ static void parse(rapidxml::xml_node<>* node, configuration const& config, docum
else if (nodename == "compounddef")
{
std::string kind = get_attribute(node, "kind");
+ std::string id = get_attribute(node, "id");
if (kind == "group")
{
recurse = true;
+ doc.group_id = id;
+ rapidxml::xml_node<> * n = node->first_node("title");
+ if ( n )
+ doc.group_title = n->value();
}
else if (kind == "struct")
{
recurse = true;
doc.cos.is_class = false;
+ doc.cos.id = id;
parse_element(node->first_node(), config, "", doc.cos);
}
else if (kind == "class")
{
recurse = true;
doc.cos.is_class = true;
+ doc.cos.id = id;
parse_element(node->first_node(), config, "", doc.cos);
}
}
else if (nodename == "memberdef")
{
std::string kind = get_attribute(node, "kind");
+ std::string id = get_attribute(node, "id");
+
if (kind == "function")
{
function f;
+ f.id = id;
+ f.is_static = get_attribute(node, "static") == "yes" ? true : false;
+ f.is_const = get_attribute(node, "const") == "yes" ? true : false;
+ f.is_explicit = get_attribute(node, "explicit") == "yes" ? true : false;
+ f.is_virtual = get_attribute(node, "virt") == "virtual" ? true : false;
+
parse_element(node->first_node(), config, "", f);
parse_function(node->first_node(), config, "", f);
+
if (member)
{
- f.type = boost::equals(f.name, doc.cos.name)
- ? function_constructor
+ bool c_or_d = boost::equals(f.name, doc.cos.name) ||
+ boost::equals(f.name, std::string("~") + doc.cos.name);
+
+ f.type = c_or_d
+ ? function_constructor_destructor
: function_member;
doc.cos.functions.push_back(f);
}
@@ -520,14 +662,16 @@ static void parse(rapidxml::xml_node<>* node, configuration const& config, docum
else if (kind == "define")
{
function f;
+ f.id = id;
f.type = function_define;
parse_element(node->first_node(), config, "", f);
parse_function(node->first_node(), config, "", f);
- doc.functions.push_back(f);
+ doc.defines.push_back(f);
}
else if (kind == "enum")
{
enumeration e;
+ e.id = id;
parse_element(node->first_node(), config, "", e);
parse_enumeration(node->first_node(), config, "", e);
doc.enumerations.push_back(e);
@@ -538,16 +682,53 @@ static void parse(rapidxml::xml_node<>* node, configuration const& config, docum
{
std::string name = parse_named_node(node->first_node(), "name");
doc.cos.typedefs.push_back(base_element(name));
+ doc.cos.typedefs.back().id = id;
+
+ element dummy;
+ parse_element(node->first_node(), config, "", dummy);
+ doc.cos.typedefs.back().brief_description = dummy.brief_description;
}
}
else if (kind == "variable")
{
- if (boost::equals(get_attribute(node, "static"), "yes")
- && boost::equals(get_attribute(node, "mutable"), "no")
- && boost::equals(get_attribute(node, "prot"), "public"))
+ if (boost::equals(get_attribute(node, "prot"), "public"))
{
- std::string name = parse_named_node(node->first_node(), "name");
- doc.cos.variables.push_back(base_element(name));
+ parameter p;
+ p.id = id;
+ for(rapidxml::xml_node<>* var_node = node->first_node(); var_node; var_node=var_node->next_sibling())
+ {
+ if(boost::equals(var_node->name(), "name"))
+ {
+ p.name = var_node->value();
+ }
+ else if(boost::equals(var_node->name(), "type"))
+ {
+ get_contents(var_node->first_node(), p.fulltype);
+ p.type = p.fulltype;
+ //boost::replace_all(p.type, " const", "");
+ //boost::trim(p.type);
+ //boost::replace_all(p.type, "&", "");
+ //boost::replace_all(p.type, "*", "");
+ boost::trim(p.type);
+
+ // If alt output is used retrieve type with QBK links
+ if ( configuration::alt == config.output_style )
+ {
+ p.fulltype_without_links = p.fulltype;
+ p.fulltype.clear();
+ parse_para(var_node->first_node(), config, p.fulltype, p.skip);
+ }
+ }
+ else if(boost::equals(var_node->name(), "briefdescription"))
+ {
+ parse_para(var_node->first_node(), config, p.brief_description, p.skip);
+ }
+ else if(p.brief_description.empty() && boost::equals(var_node->name(), "detaileddescription"))
+ {
+ parse_para(var_node->first_node(), config, p.brief_description, p.skip);
+ }
+ }
+ doc.cos.variables.push_back(p);
}
}
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/file_to_string.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/file_to_string.hpp
index e889fc75fd..5af013056c 100644
--- a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/file_to_string.hpp
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/file_to_string.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
//
-// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2010-2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
// 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)
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/parameter_predicates.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/parameter_predicates.hpp
index 8cbb55e740..8d58709fbd 100644
--- a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/parameter_predicates.hpp
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/parameter_predicates.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
//
-// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2010-2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
// 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)
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/quickbook_output.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/quickbook_output.hpp
index 81714d8d59..16b1a5c59c 100644
--- a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/quickbook_output.hpp
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/quickbook_output.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
//
-// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2010-2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
// 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)
@@ -33,7 +34,7 @@ std::string qbk_escaped(std::string const& s)
{
case '[' : counter++; break;
case ']' : counter--; break;
- case '\\' :
+ case '\\' :
{
result += s[i];
if (i + 1 < len)
@@ -43,7 +44,7 @@ std::string qbk_escaped(std::string const& s)
i++;
continue;
}
- case '_' :
+ case '_' :
if (counter == 0)
{
result += "\\u005f";
@@ -57,17 +58,47 @@ std::string qbk_escaped(std::string const& s)
}
+inline void next_item(std::string const& first, std::string const& indent,
+ std::size_t items_per_line,
+ std::size_t& index, std::ostream& out)
+{
+ if (index > 0)
+ {
+ if (index % items_per_line == 0)
+ {
+ out << "," << std::endl << indent;
+ }
+ else
+ {
+ out << ", ";
+ }
+ }
+ else
+ {
+ std::cout << first;
+ }
+ index++;
+}
-void quickbook_template_parameter_list(std::vector<parameter> const& parameters, std::ostream& out, bool name = false)
+void quickbook_template_parameter_list(std::vector<parameter> const& parameters,
+ std::string const& related_name,
+ std::ostream& out)
{
if (!parameters.empty())
{
- out << "template<" ;
- bool first = true;
+ std::string const header = "template<";
+ std::size_t index = 0;
+ std::string const indent(header.length(), ' ');
+ out << header;
BOOST_FOREACH(parameter const& p, parameters)
{
- out << (first ? "" : ", ") << p.fulltype;
- first = false;
+ if (p.fulltype.empty())
+ {
+ std::cerr << "Warning: template parameter " << p.name << " has no type in " << related_name << std::endl;
+ }
+
+ next_item("", indent, 4, index, out);
+ out << p.fulltype;
}
out << ">" << std::endl;
}
@@ -77,10 +108,11 @@ void quickbook_template_parameter_list(std::vector<parameter> const& parameters,
void quickbook_synopsis(function const& f, std::ostream& out)
{
out << "``";
- quickbook_template_parameter_list(f.template_parameters, out);
+ quickbook_template_parameter_list(f.template_parameters, f.name, out);
+
switch(f.type)
{
- case function_constructor :
+ case function_constructor_destructor :
out << f.name;
break;
case function_member :
@@ -100,21 +132,21 @@ void quickbook_synopsis(function const& f, std::ostream& out)
// Output the parameters
// Because we want to be able to skip, we cannot use the argstring
{
- bool first = true;
+ std::size_t index = 0;
+ std::string const indent(f.name.length() + f.return_type.length() + 2, ' ');
BOOST_FOREACH(parameter const& p, f.parameters)
{
if (! p.skip)
{
- out
- << (first ? "(" : ", ")
- << p.fulltype << (p.fulltype.empty() ? "" : " ")
+ next_item("(", indent, 3, index, out);
+
+ out << p.fulltype << (p.fulltype.empty() ? "" : " ")
<< p.name
<< (p.default_value.empty() ? "" : " = ")
<< p.default_value;
- first = false;
}
}
- if (! first)
+ if (index > 0)
{
out << ")";
}
@@ -124,7 +156,7 @@ void quickbook_synopsis(function const& f, std::ostream& out)
}
}
- out << "``"
+ out << "``"
<< std::endl
<< std::endl;
}
@@ -139,7 +171,9 @@ void quickbook_synopsis(enumeration const& e, std::ostream& out)
out << (first ? " {" : ", ") << value.name;
if (! value.initializer.empty())
{
- out << " = " << boost::trim_copy(value.initializer);
+ // Doxygen 1.6 does not include "=" in the <initializer> tag, Doxygen 1.8 does.
+ // We just remove the "=" to have consistent output
+ out << " = " << boost::trim_copy(boost::replace_all_copy(value.initializer, "=", ""));
}
first = false;
}
@@ -147,7 +181,7 @@ void quickbook_synopsis(enumeration const& e, std::ostream& out)
{
out << "};";
}
- out << "``"
+ out << "``"
<< std::endl
<< std::endl;
}
@@ -175,10 +209,44 @@ inline bool includes(std::string const& filename, std::string const& header)
}
-void quickbook_header(std::string const& location,
+std::string fix_location(std::string const& raw_location)
+{
+ if ( raw_location.find("detail/") == std::string::npos
+ || raw_location.find("/interface.hpp") == std::string::npos )
+ {
+ return raw_location;
+ }
+
+ std::string fixed_location(raw_location);
+
+ fixed_location.erase(fixed_location.find("detail/"), 7u);
+ fixed_location.erase(fixed_location.find("/interface"), 10u);
+
+ return fixed_location;
+}
+
+
+std::string fix_include_header(std::string const& header)
+{
+ if ( header.find("geometry/geometry.hpp") == std::string::npos )
+ {
+ return header;
+ }
+
+ std::string fixed_header(header);
+
+ fixed_header.erase(fixed_header.find("geometry/"), 9u);
+
+ return fixed_header;
+}
+
+
+void quickbook_header(std::string const& raw_location,
configuration const& config,
std::ostream& out)
{
+ std::string location = fix_location(raw_location);
+
if (! location.empty())
{
std::vector<std::string> including_headers;
@@ -200,7 +268,7 @@ void quickbook_header(std::string const& location,
<< std::endl << std::endl;
BOOST_FOREACH(std::string const& header, including_headers)
{
- out << "`#include <" << config.start_include << header << ">`" << std::endl;
+ out << "`#include <" << fix_include_header(config.start_include + header) << ">`" << std::endl << std::endl;
}
out << std::endl << "Or" << std::endl << std::endl;
@@ -211,8 +279,8 @@ void quickbook_header(std::string const& location,
}
-void quickbook_markup(std::vector<markup> const& qbk_markup,
- markup_order_type order, markup_type type,
+void quickbook_markup(std::vector<markup> const& qbk_markup,
+ markup_order_type order, markup_type type,
std::ostream& out)
{
bool has_output = false;
@@ -249,9 +317,7 @@ inline std::string to_section_name(std::string const& name)
return boost::to_lower_copy(boost::replace_all_copy(name, "::", "_"));
}
-
-
-void quickbook_short_output(function const& f, std::ostream& out)
+void quickbook_output_function_parameters(function const& f, std::ostream& out)
{
BOOST_FOREACH(parameter const& p, f.parameters)
{
@@ -262,12 +328,13 @@ void quickbook_short_output(function const& f, std::ostream& out)
}
out << std::endl;
out << std::endl;
+}
+void quickbook_output_function_return(function const& f, std::ostream& out)
+{
if (! f.return_description.empty())
{
- out << "][" << std::endl;
out << f.return_description << std::endl;
- out << std::endl;
}
out << std::endl;
@@ -347,7 +414,7 @@ void quickbook_output(function const& f, configuration const& config, std::ostre
<< std::endl;
quickbook_output_indexterm(f.name, out);
-
+
out << qbk_escaped(f.brief_description) << std::endl;
out << std::endl;
@@ -418,7 +485,6 @@ void quickbook_output(function const& f, configuration const& config, std::ostre
out << std::endl;
}
-
void quickbook_output(enumeration const& e, configuration const& config, std::ostream& out)
{
out << "[section:" << to_section_name(e.name);
@@ -469,12 +535,12 @@ void quickbook_output(enumeration const& e, configuration const& config, std::os
out << std::endl;
}
-void quickbook_output_member(std::vector<function> const& functions,
- function_type type,
- std::string const& title,
- configuration const& config, std::ostream& out)
+void quickbook_output_function(std::vector<function> const& functions,
+ function_type type,
+ std::string const& title,
+ configuration const& , std::ostream& out)
{
- std::string returns = type == function_constructor ? "" : " [Returns]";
+ std::string returns = type == function_constructor_destructor ? "" : " [Returns]";
out << "[heading " << title << "(s)]" << std::endl
<< "[table" << std::endl
<< "[[Function] [Description] [Parameters] " << returns << "]" << std::endl;
@@ -486,15 +552,21 @@ void quickbook_output_member(std::vector<function> const& functions,
out << "[[";
quickbook_synopsis(f, out);
out << "] [" << f.brief_description << "] [";
- quickbook_short_output(f, out);
- out << "]]" << std::endl;
+ quickbook_output_function_parameters(f, out);
+ out << "]";
+ if ( type != function_constructor_destructor )
+ {
+ out << "[" << std::endl;
+ quickbook_output_function_return(f, out);
+ out << "]" << std::endl;
+ }
+ out << "]" << std::endl;
}
}
out << "]" << std::endl
<< std::endl;
}
-
void quickbook_output(class_or_struct const& cos, configuration const& config, std::ostream& out)
{
// Skip namespace
@@ -514,7 +586,7 @@ void quickbook_output(class_or_struct const& cos, configuration const& config, s
quickbook_markup(cos.qbk_markup, markup_before, markup_synopsis, out);
out << "[heading Synopsis]" << std::endl
<< "``";
- quickbook_template_parameter_list(cos.template_parameters, out);
+ quickbook_template_parameter_list(cos.template_parameters, cos.name, out);
out << (cos.is_class ? "class" : "struct")
<< " " << short_name << std::endl;
@@ -536,9 +608,38 @@ void quickbook_output(class_or_struct const& cos, configuration const& config, s
out << std::endl;
}
- out << "{" << std::endl
- << " // ..." << std::endl
- << "};" << std::endl
+ out << "{" << std::endl;
+ if (! cos.variables.empty() && config.output_member_variables)
+ {
+ size_t maxlength = 0;
+ BOOST_FOREACH(parameter const& p, cos.variables)
+ {
+ if (! p.skip)
+ {
+ size_t length = 6 + p.fulltype.size() + p.name.size();
+ if (length > maxlength) maxlength = length;
+ }
+ }
+ BOOST_FOREACH(parameter const& p, cos.variables)
+ {
+ if (! p.skip)
+ {
+ size_t length = 4 + p.fulltype.size() + p.name.size();
+ out << " " << p.fulltype << " " << p.name << ";";
+ if (! p.brief_description.empty())
+ {
+ while(length++ < maxlength) out << " ";
+ out << "// " << p.brief_description;
+ }
+ out << std::endl;
+ }
+ }
+ }
+ else
+ {
+ out << " // ..." << std::endl;
+ }
+ out << "};" << std::endl
<< "``" << std::endl << std::endl;
quickbook_markup(cos.qbk_markup, markup_after, markup_synopsis, out);
@@ -584,14 +685,14 @@ void quickbook_output(class_or_struct const& cos, configuration const& config, s
counts[f.type]++;
}
- if (counts[function_constructor] > 0)
+ if (counts[function_constructor_destructor] > 0)
{
- quickbook_output_member(cos.functions, function_constructor, "Constructor", config, out);
+ quickbook_output_function(cos.functions, function_constructor_destructor, "Constructor", config, out);
}
if (counts[function_member] > 0)
{
- quickbook_output_member(cos.functions, function_member, "Member Function", config, out);
+ quickbook_output_function(cos.functions, function_member, "Member Function", config, out);
}
quickbook_header(cos.location, config, out);
@@ -602,4 +703,780 @@ void quickbook_output(class_or_struct const& cos, configuration const& config, s
}
+// ----------------------------------------------------------------------------------------------- //
+// ALT
+// ----------------------------------------------------------------------------------------------- //
+
+std::string remove_template_parameters(std::string const& name)
+{
+ std::string res;
+ std::string::size_type prev_i = 0, i = 0;
+ int blocks_counter = 0;
+ for ( ;; )
+ {
+ std::string::size_type next_begin = name.find('<', i);
+ std::string::size_type next_end = name.find('>', i);
+
+ if ( next_begin == next_end )
+ {
+ res += name.substr(prev_i, next_begin - prev_i);
+ break;
+ }
+ else if ( next_begin < next_end )
+ {
+ i = next_begin + 1;
+ if ( blocks_counter == 0 )
+ res += name.substr(prev_i, next_begin - prev_i) + "<...>";
+ blocks_counter++;
+ }
+ else
+ {
+ i = next_end + 1;
+ blocks_counter--;
+ if ( blocks_counter == 0 )
+ prev_i = i;
+ }
+ }
+
+ return res;
+}
+
+std::string replace_brackets(std::string const& str)
+{
+ return boost::replace_all_copy(boost::replace_all_copy(str, "[", "\\["), "]", "\\]");
+}
+
+void quickbook_output_enumerations(std::vector<enumeration> const& enumerations,
+ configuration const& ,
+ std::ostream& out)
+{
+ out << "[table" << std::endl
+ << "[[Enumeration][Description]]" << std::endl;
+
+ for ( size_t i = 0 ; i < enumerations.size() ; ++i )
+ {
+ enumeration const& e = enumerations[i];
+
+ out << "[[[link " << e.id << " `";
+ out << e.name;
+ out << "`]][" << e.brief_description << "]]" << std::endl;
+ }
+ out << "]" << std::endl
+ << std::endl;
+}
+
+void quickbook_synopsis_short(function const& f, std::ostream& out)
+{
+ if ( f.type != function_unknown )
+ out << f.name;
+
+ bool first = true;
+ BOOST_FOREACH(parameter const& p, f.parameters)
+ {
+ if ( !p.skip && p.default_value.empty() )
+ {
+ out << (first ? "(" : ", ") << remove_template_parameters(p.fulltype_without_links);
+ first = false;
+ }
+ }
+
+
+ if (! first)
+ out << ")";
+ else if (f.type != function_define)
+ out << "()";
+}
+
+void quickbook_output_functions(std::vector<function> const& functions,
+ function_type type,
+ configuration const& ,
+ std::ostream& out,
+ bool display_all = false,
+ std::string const& ColTitle = "Function")
+{
+ bool show_modifiers = false;
+ BOOST_FOREACH(function const& f, functions)
+ {
+ if ( (display_all || f.type == type) && (f.is_const || f.is_static) && !f.brief_description.empty() )
+ show_modifiers = true;
+ }
+
+ out << "[table\n"
+ << "[";
+ if ( show_modifiers )
+ out << "[Modifier]";
+ out << "[" << ColTitle << "]";
+ out << "[Description]";
+ out << "]" << std::endl;
+
+ for ( size_t i = 0 ; i < functions.size() ; ++i )
+ {
+ function const& f = functions[i];
+
+ if ( f.brief_description.empty() )
+ continue;
+
+ if (display_all || f.type == type)
+ {
+ out << "[";
+ if ( show_modifiers )
+ {
+ out << "[";
+ out << (f.is_static ? "`static`" : "");
+ out << (f.is_const ? " `const`" : "");
+ out << "]";
+ }
+ out << "[[link " << f.id << " `";
+ quickbook_synopsis_short(f, out);
+ out << "`]]";
+ out << "[" << f.brief_description << "]";
+ out << "]" << std::endl;
+ }
+ }
+ out << "]" << std::endl
+ << std::endl;
+}
+
+void output_paragraphs_note_warning(element const& el, std::ostream & out)
+{
+ // Additional paragraphs
+ if ( !el.paragraphs.empty() )
+ {
+ BOOST_FOREACH(paragraph const& p, el.paragraphs)
+ {
+ if ( !p.title.empty() )
+ out << "[heading " << p.title << "]" << std::endl;
+ else
+ out << "\n\n" << std::endl;
+ out << p.text << std::endl;
+ out << std::endl;
+ }
+ }
+
+ // Note
+ if ( !el.note.empty() )
+ {
+ out << "[note " << el.note << "]" << std::endl;
+ out << std::endl;
+ }
+
+ // Warning
+ if ( !el.warning.empty() )
+ {
+ out << "[warning " << el.warning << "]" << std::endl;
+ out << std::endl;
+ }
+}
+
+void inline_str_with_links(std::string const& str, std::ostream & out)
+{
+ typedef std::string::size_type ST;
+
+ bool link_started = false;
+ bool first = true;
+ for ( ST i = 0 ; i < str.size() ; ++i )
+ {
+ if ( !link_started )
+ {
+ if ( str[i] == '[' && str.substr(i, 6) == "[link " )
+ {
+ if ( !first )
+ {
+ out << "`";
+ first = true;
+ }
+ link_started = true;
+ out << "[^[link ";
+ i += 5; // (+ 6 - 1)
+ }
+ else
+ {
+ if ( first )
+ {
+ out << "`";
+ first = false;
+ }
+ out << str[i];
+ }
+ }
+ else
+ {
+ if ( str[i] == '\\' )
+ {
+ out << str[i];
+ ++i;
+ if ( i < str.size() )
+ out << str[i];
+ }
+ else if ( str[i] == ']' )
+ {
+ out << "]]";
+ link_started = false;
+ }
+ else
+ out << str[i];
+ }
+ }
+
+ if ( !first )
+ out << "`";
+ if ( link_started )
+ out << "]]";
+}
+
+void quickbook_template_parameter_list_alt(std::vector<parameter> const& parameters, std::ostream& out)
+{
+ std::string next_param;
+
+ if ( 2 < parameters.size() )
+ next_param = std::string("`,`\n") + " ";
+ else
+ next_param = "`,` ";
+
+ if (!parameters.empty())
+ {
+ out << "`template<`" ;
+ bool first = true;
+ BOOST_FOREACH(parameter const& p, parameters)
+ {
+ out << (first ? "" : next_param.c_str());
+ inline_str_with_links(p.fulltype, out);
+
+ if ( !p.default_value.empty() )
+ {
+ out << " = ";
+ inline_str_with_links(p.default_value, out);
+ }
+
+ first = false;
+ }
+ out << "`>`";
+ }
+}
+
+void quickbook_synopsis_alt(function const& f, std::ostream& out)
+{
+ out << "[pre\n";
+ quickbook_template_parameter_list_alt(f.template_parameters, out);
+ out << "\n";
+
+ std::size_t offset = 1; // '('
+ switch(f.type)
+ {
+ case function_constructor_destructor :
+ out << "`" << f.name << "`";
+ offset += f.name.size();
+ break;
+ case function_member :
+ inline_str_with_links(f.return_type, out);
+ out << " `" << f.name << "`";
+ offset += f.return_type_without_links.size() + 1 + f.name.size();
+ break;
+ case function_free :
+ inline_str_with_links(f.definition, out);
+ offset += f.definition.size();
+ break;
+ case function_define :
+ out << "`#define " << f.name << "`";
+ offset += 8 + f.name.size();
+ break;
+ case function_unknown :
+ // do nothing
+ break;
+ }
+
+ std::string par_end("`,` ");
+ if ( 2 < f.parameters.size() )
+ par_end = std::string("`,`\n") + std::string(offset, ' ');
+
+ // Output the parameters
+ // Because we want to be able to skip, we cannot use the argstring
+ {
+ bool first = true;
+ BOOST_FOREACH(parameter const& p, f.parameters)
+ {
+ if (! p.skip)
+ {
+ out << (first ? "`(`" : par_end);
+ if ( !p.fulltype.empty() )
+ {
+ inline_str_with_links(p.fulltype, out);
+ out << " ";
+ }
+ if ( !p.name.empty() )
+ out << "`" << p.name << "`";
+ if ( !p.default_value.empty() )
+ {
+ out << " = ";
+ inline_str_with_links(p.default_value, out);
+ }
+ first = false;
+ }
+ }
+
+ if (! first)
+ out << "`)`\n";
+ else if (f.type != function_define)
+ out << "`()`\n";
+ }
+
+ out << "]"
+ << std::endl
+ << std::endl;
+}
+
+void quickbook_synopsis_alt(class_or_struct const& cos, configuration const& config, std::ostream & out)
+{
+ std::string short_name = namespace_skipped(cos.fullname, config);
+
+ out << "[pre\n";
+
+ quickbook_template_parameter_list_alt(cos.template_parameters, out);
+ out << "\n";
+
+ out << (cos.is_class ? "`class " : "`struct ");
+ {
+ std::string::size_type last_scope = std::string::npos;
+ std::string::size_type i = short_name.find("<");
+ for(std::string::size_type j = short_name.find("::") ; j < i ; j = short_name.find("::", j+1))
+ last_scope = j;
+ if ( last_scope == std::string::npos )
+ out << short_name << "`" << std::endl;
+ else
+ out << short_name.substr(last_scope + 2) << "`" << std::endl;
+ }
+
+ if (! cos.base_classes.empty())
+ {
+ out << "` : ";
+ bool first = true;
+ BOOST_FOREACH(base_class const& bc, cos.base_classes)
+ {
+ if (! first)
+ {
+ out << std::endl << " , ";
+ }
+ out << output_if_different(bc.derivation, "private")
+ << output_if_different(bc.virtuality, "non-virtual")
+ << namespace_skipped(bc.name, config);
+ first = false;
+ }
+ out << "`" << std::endl;
+ }
+
+ out << "`{`" << std::endl
+ << "` // ...`" << std::endl
+ << "`};`" << std::endl
+ << "]" << std::endl << std::endl;
+}
+
+void quickbook_synopsis_alt(enumeration const& e, std::ostream& out)
+{
+ std::string values_separator =
+ e.enumeration_values.size() <= 2 ?
+ std::string(", ") :
+ ( std::string(",\n") + std::string(e.name.size() + 7, ' ') );
+
+ out << "``enum " << e.name << " ";
+ bool first = true;
+ BOOST_FOREACH(enumeration_value const& value, e.enumeration_values)
+ {
+ out << (first ? "{" : values_separator.c_str());
+ out << value.name;
+ if ( !value.initializer.empty() )
+ {
+ out << " = " << boost::trim_copy(boost::replace_all_copy(value.initializer, "=", ""));
+ }
+ first = false;
+ }
+ if (! first)
+ {
+ out << "};";
+ }
+ out << "``"
+ << std::endl
+ << std::endl;
+}
+
+template <typename Range>
+bool has_brief_description(Range const& rng)
+{
+ typedef typename Range::value_type V;
+ BOOST_FOREACH(V const& bc, rng)
+ {
+ if ( !bc.brief_description.empty() )
+ return true;
+ }
+ return false;
+}
+
+template <typename Range>
+bool has_brief_description(Range const& rng, function_type t)
+{
+ typedef typename Range::value_type V;
+ BOOST_FOREACH(V const& bc, rng)
+ {
+ if ( bc.type == t && !bc.brief_description.empty() )
+ return true;
+ }
+ return false;
+}
+
+void quickbook_output_functions_details(std::vector<function> const& functions,
+ function_type type,
+ configuration const& ,
+ std::ostream& out,
+ bool display_all = false)
+{
+ for ( size_t i = 0 ; i < functions.size() ; ++i )
+ {
+ function const& f = functions[i];
+
+ if ( f.brief_description.empty() )
+ continue;
+
+ if ( display_all || f.type == type )
+ {
+ // Section
+ std::stringstream ss;
+ quickbook_synopsis_short(f, ss);
+ out << "[#" << f.id << "]" << std::endl;
+ out << "[section " << replace_brackets(ss.str()) << "]" << std::endl;
+
+ quickbook_output_indexterm(f.name, out);
+
+ // Brief description
+ out << f.brief_description << std::endl;
+ out << std::endl;
+
+ // Detail description
+ if ( !f.detailed_description.empty() )
+ {
+ out << "[heading Description]" << std::endl;
+ out << f.detailed_description;
+ }
+
+ // Synopsis
+ quickbook_markup(f.qbk_markup, markup_before, markup_synopsis, out);
+ out << "[heading Synopsis]" << std::endl;
+ quickbook_synopsis_alt(f, out);
+ quickbook_markup(f.qbk_markup, markup_after, markup_synopsis, out);
+
+ if ( f.is_static || f.is_virtual || f.is_explicit || f.is_const )
+ {
+ out << "[heading Modifier(s)]" << std::endl;
+ out << "``"
+ << (f.is_static ? "static " : "")
+ << (f.is_virtual ? "virtual " : "")
+ << (f.is_explicit ? "explicit " : "")
+ << (f.is_const ? "const " : "")
+ << "``";
+ }
+
+ // Template parameters
+ if ( !f.template_parameters.empty() && has_brief_description(f.template_parameters) )
+ {
+ out << "[heading Template parameter(s)]" << std::endl
+ << "[table" << std::endl
+ << "[[Parameter] [Description]]" << std::endl;
+
+ BOOST_FOREACH(parameter const& p, f.template_parameters)
+ {
+ if ( p.brief_description.empty() )
+ continue;
+
+ out << "[[`";
+ if ( p.fulltype.find("typename ") == 0 )
+ out << p.fulltype.substr(9);
+ else if ( p.fulltype.find("class ") == 0 )
+ out << p.fulltype.substr(6);
+ else
+ out << p.fulltype;
+ out << "`][" << p.brief_description << "]]" << std::endl;
+ }
+ out << "]" << std::endl
+ << std::endl;
+ }
+
+ // Parameters
+ if ( !f.parameters.empty() && has_brief_description(f.parameters) )
+ {
+ out << "[heading Parameter(s)]" << std::endl;
+ out << "[table " << std::endl;
+ out << "[";
+ if ( f.type != function_define )
+ out << "[Type]";
+ out << "[Name][Description]]" << std::endl;
+ BOOST_FOREACH(parameter const& p, f.parameters)
+ {
+ if (!p.skip)
+ {
+ out << "[";
+ if ( f.type != function_define )
+ {
+ out << "[";
+ inline_str_with_links(p.fulltype, out);
+ out << "]";
+ }
+ out << "[ `" << p.name << "` ][" << p.brief_description << "]]"<< std::endl;
+ }
+ }
+ out << "]" << std::endl;
+ }
+
+ // Precondition
+ if ( !f.precondition.empty() )
+ {
+ out << "[heading Precondition(s)]" << std::endl;
+ out << f.precondition << std::endl;
+ out << std::endl;
+ }
+
+ // Return
+ if ( !f.return_description.empty() )
+ {
+ out << "[heading Returns]" << std::endl;
+ out << f.return_description << std::endl;
+ }
+
+ // Additional paragraphs, note, warning
+ output_paragraphs_note_warning(f, out);
+
+ // QBK markup
+ quickbook_markup(f.qbk_markup, markup_any, markup_default, out);
+
+ // Section end
+ out << "[endsect]" << std::endl
+ //<< "[br]" << std::endl
+ << std::endl;
+ }
+ }
+}
+
+void quickbook_output_enumeration_details(enumeration const& e, configuration const& , std::ostream& out)
+{
+ out << "[#" << e.id << "]\n";
+ out << "[section " << e.name << "]" << std::endl
+ << std::endl;
+
+ quickbook_output_indexterm(e.name, out);
+ BOOST_FOREACH(enumeration_value const& value, e.enumeration_values)
+ {
+ quickbook_output_indexterm(value.name, out);
+ }
+
+ out << e.brief_description << std::endl;
+ out << std::endl;
+
+ if ( !e.detailed_description.empty() )
+ {
+ out << "[heading Description]\n\n";
+ out << e.detailed_description << "\n\n";
+ }
+
+ // Additional paragraphs, note, warning
+ output_paragraphs_note_warning(e, out);
+
+ quickbook_markup(e.qbk_markup, markup_any, markup_default, out);
+
+ // Synopsis
+ quickbook_markup(e.qbk_markup, markup_before, markup_synopsis, out);
+ out << "[heading Synopsis]" << std::endl;
+ quickbook_synopsis_alt(e, out);
+ quickbook_markup(e.qbk_markup, markup_after, markup_synopsis, out);
+
+
+ out << "[heading Values]" << std::endl
+ << std::endl;
+
+ out << "[table" << std::endl << "[";
+ out << "[Value] [Description] ]" << std::endl;
+
+ BOOST_FOREACH(enumeration_value const& value, e.enumeration_values)
+ {
+ out << "[[" << value.name << "] [" << value.brief_description << "]]\n";
+ }
+ out << "]\n\n\n";
+
+ out << std::endl;
+ out << "[endsect]" << std::endl;
+ out << std::endl;
+}
+
+void quickbook_output_alt(documentation const& doc, configuration const& config, std::ostream& out)
+{
+ if ( !doc.group_id.empty() )
+ {
+ std::cout << "[section:" << doc.group_id << " " << doc.group_title << "]" << std::endl;
+ }
+
+ if ( !doc.enumerations.empty() )
+ {
+ std::cout << "[heading Enumerations]\n";
+ quickbook_output_enumerations(doc.enumerations, config, out);
+ }
+
+ if ( !doc.defines.empty() )
+ {
+ std::cout << "[heading Defines]\n";
+ quickbook_output_functions(doc.defines, function_unknown, config, out, true, "Define");
+ }
+
+ if ( !doc.functions.empty() )
+ {
+ std::cout << "[heading Functions]\n";
+ quickbook_output_functions(doc.functions, function_unknown, config, out, true, "Function");
+ }
+
+ BOOST_FOREACH(enumeration const& e, doc.enumerations)
+ {
+ quickbook_output_enumeration_details(e, config, out);
+ }
+
+ quickbook_output_functions_details(doc.defines, function_unknown, config, out, true);
+ quickbook_output_functions_details(doc.functions, function_unknown, config, out, true);
+
+ if ( !doc.group_id.empty() )
+ {
+ out << "[endsect]" << std::endl
+ << std::endl;
+ }
+}
+
+void quickbook_output_alt(class_or_struct const& cos, configuration const& config, std::ostream& out)
+{
+ // Skip namespace
+ std::string short_name = namespace_skipped(cos.fullname, config);
+
+ BOOST_ASSERT(configuration::alt == config.output_style);
+
+ if ( !cos.id.empty() )
+ out << "[#" << cos.id << "]" << std::endl;
+ out << "[section " << short_name << "]" << std::endl << std::endl;
+
+ // WARNING! Can't be used in the case of specializations
+ quickbook_output_indexterm(short_name, out);
+
+ // Brief
+
+ out << cos.brief_description << std::endl;
+ out << std::endl;
+
+ // Description
+
+ quickbook_string_with_heading_if_present("Description", cos.detailed_description, out);
+
+ // Additional paragraphs, note, warning
+ output_paragraphs_note_warning(cos, out);
+
+ // Markup
+ quickbook_markup(cos.qbk_markup, markup_any, markup_default, out);
+
+ // Header
+
+ quickbook_header(cos.location, config, out);
+
+ // Class synposis
+
+ quickbook_markup(cos.qbk_markup, markup_before, markup_synopsis, out);
+ out << "[heading Synopsis]" << std::endl;
+ quickbook_synopsis_alt(cos, config, out);
+ quickbook_markup(cos.qbk_markup, markup_after, markup_synopsis, out);
+
+ // Template parameters
+
+ if (! cos.template_parameters.empty())
+ {
+ if ( has_brief_description(cos.template_parameters) )
+ {
+ out << "[heading Template parameter(s)]" << std::endl
+ << "[table" << std::endl
+ << "[[Parameter] [Description]]" << std::endl;
+
+ BOOST_FOREACH(parameter const& p, cos.template_parameters)
+ {
+ if ( p.brief_description.empty() )
+ continue;
+
+ out << "[[`";
+ if ( p.fulltype.find("typename ") == 0 )
+ out << p.fulltype.substr(9);
+ else if ( p.fulltype.find("class ") == 0 )
+ out << p.fulltype.substr(6);
+ else
+ out << p.fulltype;
+ out << "`][" << p.brief_description << "]]" << std::endl;
+ }
+ out << "]" << std::endl
+ << std::endl;
+ }
+ }
+
+ // Typedefs
+
+ if ( !cos.typedefs.empty() )
+ {
+ if ( has_brief_description(cos.typedefs) )
+ {
+ out << "[heading Typedef(s)]" << std::endl
+ << "[table" << std::endl
+ << "[[Type]";
+ out << " [Description]]" << std::endl;
+
+ BOOST_FOREACH(base_element const& e, cos.typedefs)
+ {
+ if ( e.brief_description.empty() )
+ continue;
+
+ out << "[[";
+ if ( !e.id.empty() )
+ out << "[#" << e.id << "]" << " ";
+ out << "`" << e.name << "`";
+ out << "][" << e.brief_description << "]]" << std::endl;
+ }
+ out << "]" << std::endl
+ << std::endl;
+ }
+ }
+
+ // Members
+
+ bool display_ctors = has_brief_description(cos.functions, function_constructor_destructor);
+ bool display_members = has_brief_description(cos.functions, function_member);
+
+ std::map<function_type, int> counts;
+ BOOST_FOREACH(function const& f, cos.functions)
+ {
+ counts[f.type]++;
+ }
+
+ if (display_ctors && counts[function_constructor_destructor] > 0)
+ {
+ out << "[heading Constructor(s) and destructor]" << std::endl;
+ quickbook_output_functions(cos.functions, function_constructor_destructor, config, out);
+ }
+
+ if (display_members && counts[function_member] > 0)
+ {
+ out << "[heading Member(s)]" << std::endl;
+ quickbook_output_functions(cos.functions, function_member, config, out);
+ }
+
+ // Details start
+
+ //if ( display_ctors || display_members )
+ // out << "[br]" << std::endl;
+
+ if (display_ctors && counts[function_constructor_destructor] > 0)
+ quickbook_output_functions_details(cos.functions, function_constructor_destructor, config, out);
+
+ if (display_members && counts[function_member] > 0)
+ quickbook_output_functions_details(cos.functions, function_member, config, out);
+
+ // Details end
+
+ out << "[endsect]" << std::endl
+ << std::endl;
+}
+
#endif // QUICKBOOK_OUTPUT_HPP
diff --git a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/rapidxml_util.hpp b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/rapidxml_util.hpp
index 6acdaab5b1..eea1f463c1 100644
--- a/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/rapidxml_util.hpp
+++ b/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk/rapidxml_util.hpp
@@ -1,6 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
//
-// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2010-2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
// 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)
diff --git a/libs/geometry/doc/src/docutils/tools/implementation_status/implementation_status.cpp b/libs/geometry/doc/src/docutils/tools/implementation_status/implementation_status.cpp
index 10cef081f1..763ebbd1fc 100644
--- a/libs/geometry/doc/src/docutils/tools/implementation_status/implementation_status.cpp
+++ b/libs/geometry/doc/src/docutils/tools/implementation_status/implementation_status.cpp
@@ -1,8 +1,8 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Tool reporting Implementation Status in QBK format
-// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
-// Copyright (c) 2011-2012 Bruno Lalande, Paris, France.
+// Copyright (c) 2011-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2011-2014 Bruno Lalande, Paris, France.
// Use, modification and distribution is subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -30,18 +30,58 @@ static const int polygon = 5;
static const int multi_point = 6;
static const int multi_linestring = 7;
static const int multi_polygon = 8;
-static const int geometry_count = 9;
-
+static const int variant = 9;
+static const int geometry_count = 10;
struct compile_bjam
{
- static inline bool apply(int type1, int type2)
+ static inline bool apply(std::string const& id)
+ {
+ std::ostringstream command;
+ // For debugging:
+ command << "b2 -a tmp > tmp/t_" << id << ".out";
+ //command << "b2 -a tmp > tmp/t.out";
+ int failed = system(command.str().c_str());
+
+ {
+ // For debugging: save t.cpp
+ std::ostringstream c2;
+ c2 << "cp tmp/t.cpp tmp/t_" << id << ".cpp";
+ system(c2.str().c_str());
+ }
+ return failed == 0;
+ }
+};
+
+
+struct compile_clang
+{
+ bool first;
+
+ compile_clang()
+ : first(true)
+ {}
+
+ inline bool apply(std::string const& id)
{
+ if (first)
+ {
+ // Generate the pre-compiled header
+ system("clang -x c++-header -I . -I ../../../../../../.. implementation_status.hpp");
+ first = false;
+ }
+
std::ostringstream command;
- // For debugging:
- command << "bjam -a tmp > tmp/t" << type1 << "_" << type2 << ".out";
- //command << "bjam -a tmp > tmp/t.out";
+ // We compile only, not even link
+ command << "clang -include implementation_status.hpp -I . -I ../../../../../../.. -c tmp/t.cpp > tmp/t_" << id << ".out 2>&1";
int failed = system(command.str().c_str());
+
+ {
+ // For debugging: save t.cpp
+ std::ostringstream c2;
+ c2 << "cp tmp/t.cpp tmp/t_" << id << ".cpp";
+ system(c2.str().c_str());
+ }
return failed == 0;
}
};
@@ -56,7 +96,7 @@ struct compile_msvc
, count(0)
{}
- inline bool apply(int type1, int type2)
+ inline bool apply(std::string const& id)
{
std::ostringstream command;
command << "cl /nologo -I. -I/_svn/boost/trunk /EHsc /Y";
@@ -72,8 +112,8 @@ struct compile_msvc
}
command << "implementation_status.hpp tmp/t.cpp > tmp/t" //.out";
- // For debugging:
- << type1 << "_" << type2 << ".out";
+ // For debugging:
+ << id << ".out";
int failed = system(command.str().c_str());
return failed == 0;
@@ -110,15 +150,16 @@ inline std::string typedef_string(int type, bool clockwise, bool open)
out << "bg::model::ring<P, "
<< bool_string(clockwise) << ", " << bool_string(open) << ">";
break;
- case polygon :
+ case variant :
+ case polygon :
out << "bg::model::polygon<P, "
<< bool_string(clockwise) << ", " << bool_string(open) << ">";
break;
case multi_point : return "bg::model::multi_point<P>";
- case multi_linestring :
+ case multi_linestring :
out << "bg::model::multi_linestring<bg::model::linestring<P> >";
break;
- case multi_polygon :
+ case multi_polygon :
out << "bg::model::multi_polygon<bg::model::polygon<P, "
<< bool_string(clockwise) << ", " << bool_string(open) << "> >";
break;
@@ -133,8 +174,9 @@ inline std::string wkt_string(int type)
case point : return "POINT(1 1)";
case linestring : return "LINESTRING(1 1,2 2)";
case segment : return "LINESTRING(1 1,2 2)";
- case box : return "POLYGON((1 1,2 2)";
- case polygon :
+ case box : return "POLYGON((1 1,2 2))";
+ case polygon :
+ case variant :
case ring :
return "POLYGON((0 0,0 1,1 1,0 0))";
case multi_point : return "MULTIPOINT((1 1),(2 2))";
@@ -151,17 +193,17 @@ inline std::string geometry_string(int type)
case point : return "Point";
case linestring : return "Linestring";
case box : return "Box";
- case polygon : return "Polygon";
+ case polygon : return "Polygon";
case ring : return "Ring";
case segment : return "Segment";
case multi_point : return "MultiPoint";
case multi_linestring : return "MultiLinestring";
case multi_polygon : return "MultiPolygon";
+ case variant : return "Variant";
}
return "";
}
-
template <typename CompilePolicy>
int report_library(CompilePolicy& compile_policy,
int type, algorithm const& algo, bool clockwise,
@@ -176,9 +218,9 @@ int report_library(CompilePolicy& compile_policy,
{
out << "_" << geometry_string(type2);
}
- out
+ out
<< "_" << algo.name
- << "_" << bool_string(clockwise)
+ << "_" << bool_string(clockwise)
<< "_" << bool_string(open)
<< "_" << boost::replace_all_copy
(
@@ -197,31 +239,68 @@ int report_library(CompilePolicy& compile_policy,
{
std::ofstream out("tmp/t.cpp");
+ std::string name = "geometry";
+
+ if (type == variant)
+ {
+ name = "source";
+ }
+
+ out << "#include <implementation_status.hpp>" << std::endl;
+
+ if (type == variant)
+ {
+ out << "#include <boost/variant/variant.hpp>" << std::endl;
+ }
+
out
- << "#include <implementation_status.hpp>" << std::endl
<< "template <typename P>" << std::endl
<< "inline void test()" << std::endl
<< "{" << std::endl
<< " namespace bg = boost::geometry;" << std::endl
- << " " << typedef_string(type, clockwise, open) << " geometry;" << std::endl
- << " bg::read_wkt(\"" << wkt_string(type) << "\", geometry);" << std::endl;
+ << " " << typedef_string(type, clockwise, open) << " " << name << ";" << std::endl
+ << " bg::read_wkt(\"" << wkt_string(type) << "\", " << name << ");" << std::endl;
+
+ if (type == variant)
+ {
+ out
+ << " typedef " << typedef_string(polygon, clockwise, open) << " type1;" << std::endl
+ << " typedef " << typedef_string(box, clockwise, open) << " type2;" << std::endl
+ << " boost::variant<type1, type2> geometry;" << std::endl
+ << " geometry = source;"
+ << std::endl;
+ }
-
if (algo.arity > 1)
{
- out
+ out
<< " " << typedef_string(type2, clockwise, open) << " geometry2;" << std::endl
<< " bg::read_wkt(\"" << wkt_string(type2) << "\", geometry2);" << std::endl;
}
- switch(algo.arity)
+ if (algo.name == std::string("centroid"))
{
- case 1 :
- out << " bg::" << algo.name << "(geometry);" << std::endl;
- break;
- case 2 :
- out << " bg::" << algo.name << "(geometry, geometry2);" << std::endl;
- break;
+ out << " P point;";
+ out << " bg::" << algo.name << "(geometry, point);" << std::endl;
+ }
+ else if (algo.name == std::string("envelope"))
+ {
+ out << " bg::model::box<P> box;";
+ out << " bg::" << algo.name << "(geometry, box);" << std::endl;
+ }
+ else
+ {
+ switch(algo.arity)
+ {
+ case 1 :
+ out << " bg::" << algo.name << "(geometry);" << std::endl;
+ break;
+ case 2 :
+ // For cases as point-in-polygon, take first geometry 2 (point), then geometry (polygon) such that
+ // it is listed as column:point in row:polygon
+ out << " bg::" << algo.name << "(geometry2, geometry);" << std::endl;
+ break;
+ }
}
out
@@ -240,7 +319,7 @@ int report_library(CompilePolicy& compile_policy,
;
}
- bool result = compile_policy.apply(type, type2);
+ bool result = compile_policy.apply(lit);
if (! result)
{
std::cout << " ERROR";
@@ -284,26 +363,36 @@ struct cs
};
-int main(int argc, char** argv)
+int main(int , char** )
{
#if defined(_MSC_VER)
compile_msvc compile_policy;
#else
- compile_bjam compile_policy;
+ //compile_bjam compile_policy;
+ compile_clang compile_policy;
#endif
-
typedef std::vector<algorithm> v_a_type;
v_a_type algorithms;
algorithms.push_back(algorithm("area"));
+ algorithms.push_back(algorithm("clear"));
+ algorithms.push_back(algorithm("correct"));
+ algorithms.push_back(algorithm("centroid")); // NOTE: current doc contains 2D / 3D
+ algorithms.push_back(algorithm("envelope"));
algorithms.push_back(algorithm("length"));
+ algorithms.push_back(algorithm("is_simple"));
+ algorithms.push_back(algorithm("is_valid"));
+ algorithms.push_back(algorithm("num_points"));
algorithms.push_back(algorithm("perimeter"));
- algorithms.push_back(algorithm("correct"));
+
+ algorithms.push_back(algorithm("covered_by", 2));
algorithms.push_back(algorithm("distance", 2));
- algorithms.push_back(algorithm("centroid", 2));
+ algorithms.push_back(algorithm("crosses", 2));
+ algorithms.push_back(algorithm("disjoint", 2));
+ algorithms.push_back(algorithm("equals", 2));
algorithms.push_back(algorithm("intersects", 2));
+ algorithms.push_back(algorithm("overlaps", 2));
algorithms.push_back(algorithm("within", 2));
- algorithms.push_back(algorithm("equals", 2));
typedef std::vector<cs> cs_type;
cs_type css;
@@ -326,7 +415,7 @@ int main(int argc, char** argv)
]*/
std::ostringstream name;
- name << "../../../../generated/" << it->name << "_status.qbk";
+ name << "../../../../reference/status/" << it->name << "_status.qbk";
std::ofstream out(name.str().c_str());
out << "[heading Supported geometries]" << std::endl;
@@ -344,6 +433,7 @@ int main(int argc, char** argv)
}
+#if SURPRESS
// Detect red rows/columns
std::vector<int> lines_status(table.size(), false);
@@ -357,6 +447,7 @@ int main(int argc, char** argv)
columns_status[j] |= table[i][j];
}
}
+#endif
// Display the table
@@ -368,7 +459,9 @@ int main(int argc, char** argv)
out << "[ ]";
for (int type = point; type < geometry_count; type++)
{
+#if SURPRESS
if (!columns_status[type]) continue;
+#endif
out << "[" << geometry_string(type) << "]";
}
}
@@ -381,13 +474,17 @@ int main(int argc, char** argv)
for (unsigned int i = 0; i != table.size(); ++i)
{
+#if SURPRESS
if (!lines_status[i]) continue;
+#endif
out << "[";
out << "[" << geometry_string(i) << "]";
for (unsigned int j = 0; j != table[i].size(); ++j)
{
+#if SURPRESS
if (!columns_status[j]) continue;
- out << "[[$img/" << (table[i][j] ? "ok" : "nyi") << ".png]]";
+#endif
+ out << "[ [$img/" << (table[i][j] ? "ok" : "nyi") << ".png] ]";
}
out << "]" << std::endl;
}
diff --git a/libs/geometry/doc/src/docutils/tools/implementation_status/implementation_status.hpp b/libs/geometry/doc/src/docutils/tools/implementation_status/implementation_status.hpp
index 4f50c399ec..3d1095e7f9 100644
--- a/libs/geometry/doc/src/docutils/tools/implementation_status/implementation_status.hpp
+++ b/libs/geometry/doc/src/docutils/tools/implementation_status/implementation_status.hpp
@@ -8,7 +8,8 @@
// http://www.boost.org/LICENSE_1_0.txt)
#include <boost/geometry/geometry.hpp>
-#include <boost/geometry/multi/multi.hpp>
-#include <boost/geometry/multi/geometries/multi_point.hpp>
+#include <boost/geometry/geometries/multi_point.hpp>
+#include <boost/geometry/geometries/multi_linestring.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
#include <boost/geometry/io/wkt/wkt.hpp>
diff --git a/libs/geometry/doc/src/docutils/tools/support_status/Jamfile.v2 b/libs/geometry/doc/src/docutils/tools/support_status/Jamfile.v2
new file mode 100644
index 0000000000..04cc5e543f
--- /dev/null
+++ b/libs/geometry/doc/src/docutils/tools/support_status/Jamfile.v2
@@ -0,0 +1,26 @@
+# 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.
+
+# 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)
+
+
+project support-status
+ :
+ ;
+
+exe support-status : support_status.cpp
+ ;
+install dist-bin
+ :
+ support-status
+ :
+ <install-type>EXE
+ <location>../../../../../../../dist/bin
+ :
+ release
+ ;
diff --git a/libs/geometry/doc/src/docutils/tools/support_status/qbk_outputter.hpp b/libs/geometry/doc/src/docutils/tools/support_status/qbk_outputter.hpp
index 14a365f75e..447669cd37 100644
--- a/libs/geometry/doc/src/docutils/tools/support_status/qbk_outputter.hpp
+++ b/libs/geometry/doc/src/docutils/tools/support_status/qbk_outputter.hpp
@@ -36,11 +36,11 @@ struct qbk_table_row_header
void operator()(G)
{
m_out
- << "["
+ << "["
<< qbk_geometry_name
<
typename boost::geometry::tag<G>::type
- >::name()
+ >::name()
<< "]";
}
};
@@ -70,7 +70,7 @@ struct qbk_outputter
}
template <typename Types>
- inline void table_header()
+ inline void table_header()
{
m_out << "[table" << std::endl << "[[ ]";
boost::mpl::for_each<Types>(qbk_table_row_header(m_out));
@@ -81,25 +81,25 @@ struct qbk_outputter
m_out << "[table" << std::endl << "[[Geometry][Status]]" << std::endl;
}
- inline void table_footer()
+ inline void table_footer()
{
m_out << "]" << std::endl;
}
template <typename G>
- inline void begin_row()
+ inline void begin_row()
{
- m_out
+ m_out
<< "[["
<< qbk_geometry_name
<
typename boost::geometry::tag<G>::type
>::name()
- << "]"
+ << "]"
;
}
- inline void end_row()
+ inline void end_row()
{
m_out << "]" << std::endl;
}
diff --git a/libs/geometry/doc/src/docutils/tools/support_status/support_status.cpp b/libs/geometry/doc/src/docutils/tools/support_status/support_status.cpp
index b1cc806e62..9372a19672 100644
--- a/libs/geometry/doc/src/docutils/tools/support_status/support_status.cpp
+++ b/libs/geometry/doc/src/docutils/tools/support_status/support_status.cpp
@@ -12,29 +12,62 @@
#include <fstream>
#include <sstream>
-#include <boost/type_traits/is_base_of.hpp>
#include <boost/mpl/for_each.hpp>
#include <boost/mpl/vector.hpp>
+#include <boost/type_traits/is_base_of.hpp>
#define BOOST_GEOMETRY_IMPLEMENTATION_STATUS_BUILD true
#include <boost/geometry/core/cs.hpp>
#include <boost/geometry/geometries/geometries.hpp>
-#include <boost/geometry/multi/geometries/multi_geometries.hpp>
#include <boost/geometry/algorithms/append.hpp>
#include <boost/geometry/algorithms/area.hpp>
+#include <boost/geometry/algorithms/buffer.hpp>
+#include <boost/geometry/algorithms/centroid.hpp>
#include <boost/geometry/algorithms/clear.hpp>
#include <boost/geometry/algorithms/convert.hpp>
#include <boost/geometry/algorithms/convex_hull.hpp>
#include <boost/geometry/algorithms/correct.hpp>
#include <boost/geometry/algorithms/covered_by.hpp>
+#include <boost/geometry/algorithms/disjoint.hpp>
#include <boost/geometry/algorithms/distance.hpp>
+#include <boost/geometry/algorithms/envelope.hpp>
+#include <boost/geometry/algorithms/equals.hpp>
+#include <boost/geometry/algorithms/expand.hpp>
+#include <boost/geometry/algorithms/for_each.hpp>
+#include <boost/geometry/algorithms/is_simple.hpp>
+#include <boost/geometry/algorithms/is_valid.hpp>
+#include <boost/geometry/algorithms/length.hpp>
+#include <boost/geometry/algorithms/num_geometries.hpp>
+#include <boost/geometry/algorithms/num_interior_rings.hpp>
+#include <boost/geometry/algorithms/num_points.hpp>
+#include <boost/geometry/algorithms/num_segments.hpp>
+#include <boost/geometry/algorithms/overlaps.hpp>
+#include <boost/geometry/algorithms/perimeter.hpp>
+#include <boost/geometry/algorithms/reverse.hpp>
+#include <boost/geometry/algorithms/simplify.hpp>
+#include <boost/geometry/algorithms/transform.hpp>
+#include <boost/geometry/algorithms/unique.hpp>
+#include <boost/geometry/io/wkt/wkt.hpp>
#include <boost/geometry/multi/algorithms/append.hpp>
#include <boost/geometry/multi/algorithms/area.hpp>
+#include <boost/geometry/multi/algorithms/centroid.hpp>
#include <boost/geometry/multi/algorithms/clear.hpp>
#include <boost/geometry/multi/algorithms/convert.hpp>
#include <boost/geometry/multi/algorithms/correct.hpp>
#include <boost/geometry/multi/algorithms/covered_by.hpp>
#include <boost/geometry/multi/algorithms/distance.hpp>
+#include <boost/geometry/multi/algorithms/envelope.hpp>
+#include <boost/geometry/multi/algorithms/equals.hpp>
+#include <boost/geometry/multi/algorithms/for_each.hpp>
+#include <boost/geometry/multi/algorithms/length.hpp>
+#include <boost/geometry/multi/algorithms/num_geometries.hpp>
+#include <boost/geometry/multi/algorithms/num_interior_rings.hpp>
+#include <boost/geometry/multi/algorithms/num_points.hpp>
+#include <boost/geometry/multi/algorithms/perimeter.hpp>
+#include <boost/geometry/multi/algorithms/reverse.hpp>
+#include <boost/geometry/multi/algorithms/simplify.hpp>
+#include <boost/geometry/multi/algorithms/transform.hpp>
+#include <boost/geometry/multi/algorithms/unique.hpp>
#include <boost/geometry/strategies/strategies.hpp>
#include "text_outputter.hpp"
@@ -76,14 +109,36 @@ typedef boost::mpl::vector<
{};
DECLARE_BINARY_ALGORITHM(append)
-DECLARE_UNARY_ALGORITHM (area)
-DECLARE_UNARY_ALGORITHM (clear)
+DECLARE_UNARY_ALGORITHM(area)
+DECLARE_BINARY_ALGORITHM(buffer)
+DECLARE_UNARY_ALGORITHM(centroid)
+DECLARE_UNARY_ALGORITHM(clear)
DECLARE_BINARY_ALGORITHM(convert)
-DECLARE_UNARY_ALGORITHM (convex_hull)
-DECLARE_UNARY_ALGORITHM (correct)
+DECLARE_UNARY_ALGORITHM(convex_hull)
+DECLARE_UNARY_ALGORITHM(correct)
DECLARE_BINARY_ALGORITHM(covered_by)
+DECLARE_BINARY_ALGORITHM(disjoint)
DECLARE_BINARY_ALGORITHM(distance)
+DECLARE_UNARY_ALGORITHM(envelope)
+DECLARE_BINARY_ALGORITHM(equals)
+DECLARE_BINARY_ALGORITHM(expand)
+DECLARE_UNARY_ALGORITHM(for_each_point)
+DECLARE_UNARY_ALGORITHM(for_each_segment)
+DECLARE_UNARY_ALGORITHM(is_simple)
+DECLARE_UNARY_ALGORITHM(is_valid)
+DECLARE_UNARY_ALGORITHM(length)
+DECLARE_UNARY_ALGORITHM(num_geometries)
+DECLARE_UNARY_ALGORITHM(num_interior_rings)
+DECLARE_UNARY_ALGORITHM(num_points)
+DECLARE_UNARY_ALGORITHM(num_segments)
+DECLARE_BINARY_ALGORITHM(overlaps)
+DECLARE_UNARY_ALGORITHM(perimeter)
+DECLARE_UNARY_ALGORITHM(reverse)
+DECLARE_UNARY_ALGORITHM(simplify)
+DECLARE_BINARY_ALGORITHM(transform)
+DECLARE_UNARY_ALGORITHM(unique)
DECLARE_BINARY_ALGORITHM(within)
+DECLARE_UNARY_ALGORITHM(wkt)
template <template <typename> class Dispatcher, typename Outputter, typename G>
@@ -194,13 +249,34 @@ void support_status()
{
test_binary_algorithm<append, all_types, boost::mpl::vector<point_type, std::vector<point_type> >, OutputFactory>("append");
test_unary_algorithm<area, all_types, OutputFactory>("area");
+ test_binary_algorithm<buffer, all_types, all_types, OutputFactory>("buffer");
+ test_unary_algorithm<centroid, all_types, OutputFactory>("centroid");
test_unary_algorithm<clear, all_types, OutputFactory>("clear");
test_binary_algorithm<convert, all_types, all_types, OutputFactory>("convert");
test_unary_algorithm<convex_hull, all_types, OutputFactory>("convex_hull");
test_unary_algorithm<correct, all_types, OutputFactory>("correct");
test_binary_algorithm<covered_by, all_types, all_types, OutputFactory>("covered_by");
+ test_binary_algorithm<disjoint, all_types, all_types, OutputFactory>("disjoint");
test_binary_algorithm<distance, all_types, all_types, OutputFactory>("distance");
+ test_unary_algorithm<envelope, all_types, OutputFactory>("envelope");
+ test_binary_algorithm<equals, all_types, all_types, OutputFactory>("equals");
+ test_binary_algorithm<expand, all_types, all_types, OutputFactory>("expand");
+ test_unary_algorithm<for_each_point, all_types, OutputFactory>("for_each_point");
+ test_unary_algorithm<for_each_segment, all_types, OutputFactory>("for_each_segment");
+ test_unary_algorithm<is_simple, all_types, OutputFactory>("is_simple");
+ test_unary_algorithm<is_valid, all_types, OutputFactory>("is_valid");
+ test_unary_algorithm<length, all_types, OutputFactory>("length");
+ test_unary_algorithm<num_geometries, all_types, OutputFactory>("num_geometries");
+ test_unary_algorithm<num_interior_rings, all_types, OutputFactory>("num_interior_rings");
+ test_unary_algorithm<num_points, all_types, OutputFactory>("num_points");
+ test_binary_algorithm<overlaps, all_types, all_types, OutputFactory>("overlaps");
+ test_unary_algorithm<perimeter, all_types, OutputFactory>("perimeter");
+ test_unary_algorithm<reverse, all_types, OutputFactory>("reverse");
+ test_unary_algorithm<simplify, all_types, OutputFactory>("simplify");
+ test_binary_algorithm<transform, all_types, all_types, OutputFactory>("transform");
+ test_unary_algorithm<unique, all_types, OutputFactory>("unique");
test_binary_algorithm<within, all_types, all_types, OutputFactory>("within");
+ test_unary_algorithm<wkt, all_types, OutputFactory>("wkt");
}
diff --git a/libs/geometry/doc/src/examples/Jamfile.v2 b/libs/geometry/doc/src/examples/Jamfile.v2
index faddc32a57..fbc49fe39b 100644
--- a/libs/geometry/doc/src/examples/Jamfile.v2
+++ b/libs/geometry/doc/src/examples/Jamfile.v2
@@ -18,4 +18,6 @@ exe quick_start : quick_start.cpp ;
build-project algorithms ;
build-project core ;
build-project geometries ;
+build-project io ;
+build-project strategies ;
build-project views ;
diff --git a/libs/geometry/doc/src/examples/algorithms/Jamfile.v2 b/libs/geometry/doc/src/examples/algorithms/Jamfile.v2
index 6adad21053..946e66f393 100644
--- a/libs/geometry/doc/src/examples/algorithms/Jamfile.v2
+++ b/libs/geometry/doc/src/examples/algorithms/Jamfile.v2
@@ -27,6 +27,7 @@ exe assign_points : assign_points.cpp ;
# exe assign_point_from_index : assign_point_from_index.cpp ;
# exe assign_point_to_index : assign_point_to_index.cpp ;
+exe buffer_with_strategies : buffer_with_strategies.cpp ;
exe centroid : centroid.cpp ;
exe clear : clear.cpp ;
exe comparable_distance : comparable_distance.cpp ;
@@ -50,6 +51,10 @@ exe intersection_segment : intersection_segment.cpp ;
exe intersects_linestring : intersects_linestring.cpp ;
+exe is_simple : is_simple.cpp ;
+
+exe is_valid : is_valid.cpp ;
+
exe length : length.cpp ;
exe length_with_strategy : length_with_strategy.cpp ;
@@ -61,6 +66,7 @@ exe make_inverse : make_inverse.cpp ;
exe num_geometries : num_geometries.cpp ;
exe num_interior_rings : num_interior_rings.cpp ;
exe num_points : num_points.cpp ;
+exe num_segments : num_segments.cpp ;
exe return_envelope : return_envelope.cpp ;
diff --git a/libs/geometry/doc/src/examples/algorithms/area.cpp b/libs/geometry/doc/src/examples/algorithms/area.cpp
index 5816db7194..4297594a28 100644
--- a/libs/geometry/doc/src/examples/algorithms/area.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/area.cpp
@@ -15,7 +15,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
namespace bg = boost::geometry; /*< Convenient namespace alias >*/
diff --git a/libs/geometry/doc/src/examples/algorithms/area_with_strategy.cpp b/libs/geometry/doc/src/examples/algorithms/area_with_strategy.cpp
index c0a7bfc181..a0171304e4 100644
--- a/libs/geometry/doc/src/examples/algorithms/area_with_strategy.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/area_with_strategy.cpp
@@ -15,7 +15,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
namespace bg = boost::geometry; /*< Convenient namespace alias >*/
diff --git a/libs/geometry/doc/src/examples/algorithms/assign.cpp b/libs/geometry/doc/src/examples/algorithms/assign.cpp
index 857eebb343..32ae0db9d7 100644
--- a/libs/geometry/doc/src/examples/algorithms/assign.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/assign.cpp
@@ -30,7 +30,7 @@ int main()
box b;
boost::geometry::assign_values(p1, 1, 1);
boost::geometry::assign_values(b, 1, 1, 2, 2);
-
+
// Assign a box to a polygon (target = source)
polygon p;
boost::geometry::assign(p, b);
@@ -38,7 +38,7 @@ int main()
// Assign a point to another point type (conversion of point-type)
boost::tuple<double, double> p2;
boost::geometry::assign(p2, p1);
-
+
using boost::geometry::dsv;
std::cout
<< "box: " << dsv(b) << std::endl
diff --git a/libs/geometry/doc/src/examples/algorithms/buffer_with_strategies.cpp b/libs/geometry/doc/src/examples/algorithms/buffer_with_strategies.cpp
new file mode 100644
index 0000000000..9b7e191b89
--- /dev/null
+++ b/libs/geometry/doc/src/examples/algorithms/buffer_with_strategies.cpp
@@ -0,0 +1,70 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2013, 2014 Barend Gehrels, 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)
+
+//[buffer_with_strategies
+//` Shows how the buffer algorithm can be used to create a buffer of a linestring
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+/*<-*/ #include "../examples_utils/create_svg_buffer.hpp" /*->*/
+
+int main()
+{
+ typedef double coordinate_type;
+ typedef boost::geometry::model::d2::point_xy<coordinate_type> point;
+ typedef boost::geometry::model::polygon<point> polygon;
+
+ // Declare strategies
+ const double buffer_distance = 1.0;
+ const int points_per_circle = 36;
+ boost::geometry::strategy::buffer::distance_symmetric<coordinate_type> distance_strategy(buffer_distance);
+ boost::geometry::strategy::buffer::join_round join_strategy(points_per_circle);
+ boost::geometry::strategy::buffer::end_round end_strategy(points_per_circle);
+ boost::geometry::strategy::buffer::point_circle circle_strategy(points_per_circle);
+ boost::geometry::strategy::buffer::side_straight side_strategy;
+
+ // Declare output
+ boost::geometry::model::multi_polygon<polygon> result;
+
+ // Declare/fill a linestring
+ boost::geometry::model::linestring<point> ls;
+ boost::geometry::read_wkt("LINESTRING(0 0,4 5,7 4,10 6)", ls);
+
+ // Create the buffer of a linestring
+ boost::geometry::buffer(ls, result,
+ distance_strategy, side_strategy,
+ join_strategy, end_strategy, circle_strategy);
+ /*<-*/ create_svg_buffer("buffer_linestring.svg", ls, result); /*->*/
+
+ // Declare/fill a multi point
+ boost::geometry::model::multi_point<point> mp;
+ boost::geometry::read_wkt("MULTIPOINT((3 3),(4 4),(6 2))", mp);
+
+ // Create the buffer of a multi point
+ boost::geometry::buffer(mp, result,
+ distance_strategy, side_strategy,
+ join_strategy, end_strategy, circle_strategy);
+ /*<-*/ create_svg_buffer("buffer_multi_point.svg", mp, result); /*->*/
+
+ // Declare/fill a multi_polygon
+ boost::geometry::model::multi_polygon<polygon> mpol;
+ boost::geometry::read_wkt("MULTIPOLYGON(((0 1,2 5,5 3,0 1)),((1 1,5 2,5 0,1 1)))", mpol);
+
+ // Create the buffer of a multi polygon
+ boost::geometry::buffer(mpol, result,
+ distance_strategy, side_strategy,
+ join_strategy, end_strategy, circle_strategy);
+ /*<-*/ create_svg_buffer("buffer_multi_polygon.svg", mpol, result); /*->*/
+
+ return 0;
+}
+
+//]
+
diff --git a/libs/geometry/doc/src/examples/algorithms/centroid.cpp b/libs/geometry/doc/src/examples/algorithms/centroid.cpp
index 2e6c8d761f..d189f959b5 100644
--- a/libs/geometry/doc/src/examples/algorithms/centroid.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/centroid.cpp
@@ -16,8 +16,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-
-#include <boost/geometry/io/wkt/wkt.hpp>
/*<-*/ #include "create_svg_two.hpp" /*->*/
int main()
diff --git a/libs/geometry/doc/src/examples/algorithms/comparable_distance.cpp b/libs/geometry/doc/src/examples/algorithms/comparable_distance.cpp
index 87b5100ce7..8ac50167c9 100644
--- a/libs/geometry/doc/src/examples/algorithms/comparable_distance.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/comparable_distance.cpp
@@ -21,9 +21,9 @@
int main()
{
typedef boost::geometry::model::d2::point_xy<double> point_type;
-
+
point_type p(1.4, 2.6);
-
+
std::vector<point_type> v;
for (double x = 0.0; x <= 4.0; x++)
{
@@ -32,7 +32,7 @@ int main()
v.push_back(point_type(x, y));
}
}
-
+
point_type min_p;
double min_d = boost::numeric::bounds<double>::highest();
BOOST_FOREACH(point_type const& pv, v)
@@ -44,8 +44,8 @@ int main()
min_p = pv;
}
}
-
- std::cout
+
+ std::cout
<< "Closest: " << boost::geometry::dsv(min_p) << std::endl
<< "At: " << boost::geometry::distance(p, min_p) << std::endl;
diff --git a/libs/geometry/doc/src/examples/algorithms/convert.cpp b/libs/geometry/doc/src/examples/algorithms/convert.cpp
index 6d43fd4d85..1f4570507c 100644
--- a/libs/geometry/doc/src/examples/algorithms/convert.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/convert.cpp
@@ -28,7 +28,7 @@ int main()
point p1(1, 1);
box bx = boost::geometry::make<box>(1, 1, 2, 2);
-
+
// Assign a box to a polygon (conversion box->poly)
polygon poly;
boost::geometry::convert(bx, poly);
@@ -36,7 +36,7 @@ int main()
// Convert a point to another point type (conversion of point-type)
boost::tuple<double, double> p2;
boost::geometry::convert(p1, p2); // source -> target
-
+
using boost::geometry::dsv;
std::cout
<< "box: " << dsv(bx) << std::endl
diff --git a/libs/geometry/doc/src/examples/algorithms/convex_hull.cpp b/libs/geometry/doc/src/examples/algorithms/convex_hull.cpp
index 2d9394f73d..cfa658cc0e 100644
--- a/libs/geometry/doc/src/examples/algorithms/convex_hull.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/convex_hull.cpp
@@ -30,7 +30,7 @@ int main()
polygon hull;
boost::geometry::convex_hull(poly, hull);
-
+
using boost::geometry::dsv;
std::cout
<< "polygon: " << dsv(poly) << std::endl
diff --git a/libs/geometry/doc/src/examples/algorithms/create_svg_one.hpp b/libs/geometry/doc/src/examples/algorithms/create_svg_one.hpp
new file mode 100644
index 0000000000..64ccacfb4a
--- /dev/null
+++ b/libs/geometry/doc/src/examples/algorithms/create_svg_one.hpp
@@ -0,0 +1,49 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2011-2014 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// 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)
+
+// Code to create SVG for examples
+
+#ifndef CREATE_SVG_ONE_HPP
+#define CREATE_SVG_ONE_HPP
+
+#include <fstream>
+#include <boost/algorithm/string.hpp>
+
+#if defined(HAVE_SVG)
+# include <boost/geometry/io/svg/svg_mapper.hpp>
+#endif
+
+template <typename Geometry>
+void create_svg(std::string const& filename, Geometry const& g)
+{
+#if defined(HAVE_SVG)
+ std::cout << std::endl << "[$img/algorithms/" << boost::replace_all_copy(filename, ".svg", ".png") << "]" << std::endl << std::endl;
+
+ typedef typename boost::geometry::point_type<Geometry>::type point_type;
+ std::ofstream svg(filename.c_str());
+
+ boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400);
+ mapper.add(g);
+
+ mapper.map(g, "fill-opacity:0.3;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2");
+#else
+ boost::ignore_unused(filename, g);
+#endif
+}
+
+// NOTE: convert manually from svg to png using Inkscape ctrl-shift-E
+// and copy png to html/img/algorithms/
+
+
+#endif // CREATE_SVG_ONE_HPP
+
diff --git a/libs/geometry/doc/src/examples/algorithms/create_svg_overlay.hpp b/libs/geometry/doc/src/examples/algorithms/create_svg_overlay.hpp
index d9bc73f5eb..fd281bdf23 100644
--- a/libs/geometry/doc/src/examples/algorithms/create_svg_overlay.hpp
+++ b/libs/geometry/doc/src/examples/algorithms/create_svg_overlay.hpp
@@ -17,7 +17,7 @@
#include <boost/algorithm/string.hpp>
#if defined(HAVE_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
template <typename Geometry, typename Range>
@@ -49,7 +49,7 @@ void create_svg(std::string const& filename, Geometry const& a, Geometry const&
boost::ignore_unused_variable_warning(a);
boost::ignore_unused_variable_warning(b);
boost::ignore_unused_variable_warning(range);
-#endif
+#endif
}
// NOTE: convert manually from svg to png using Inkscape ctrl-shift-E
diff --git a/libs/geometry/doc/src/examples/algorithms/create_svg_two.hpp b/libs/geometry/doc/src/examples/algorithms/create_svg_two.hpp
index 84526fdca9..6dbdb60d97 100644
--- a/libs/geometry/doc/src/examples/algorithms/create_svg_two.hpp
+++ b/libs/geometry/doc/src/examples/algorithms/create_svg_two.hpp
@@ -15,7 +15,7 @@
#include <boost/algorithm/string.hpp>
#if defined(HAVE_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
template <typename Geometry1, typename Geometry2>
diff --git a/libs/geometry/doc/src/examples/algorithms/difference.cpp b/libs/geometry/doc/src/examples/algorithms/difference.cpp
index 77c935de9b..98e12d744f 100644
--- a/libs/geometry/doc/src/examples/algorithms/difference.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/difference.cpp
@@ -16,7 +16,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
#include <boost/foreach.hpp>
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
diff --git a/libs/geometry/doc/src/examples/algorithms/difference_inserter.cpp b/libs/geometry/doc/src/examples/algorithms/difference_inserter.cpp
index 5ba4d0c23a..76dac78082 100644
--- a/libs/geometry/doc/src/examples/algorithms/difference_inserter.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/difference_inserter.cpp
@@ -16,7 +16,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
#include <boost/foreach.hpp>
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
diff --git a/libs/geometry/doc/src/examples/algorithms/distance.cpp b/libs/geometry/doc/src/examples/algorithms/distance.cpp
index 89a6296415..32de3a6b36 100644
--- a/libs/geometry/doc/src/examples/algorithms/distance.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/distance.cpp
@@ -17,10 +17,8 @@
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/multi/geometries/multi_point.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
-
-#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/geometry/geometries/multi_point.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
#include <boost/foreach.hpp>
@@ -44,7 +42,7 @@ int main()
mp.push_back(point_type(0,0));
mp.push_back(point_type(3,3));
- std::cout
+ std::cout
<< "Point-Poly: " << boost::geometry::distance(p, poly) << std::endl
<< "Point-Line: " << boost::geometry::distance(p, line) << std::endl
<< "Point-MultiPoint: " << boost::geometry::distance(p, mp) << std::endl;
diff --git a/libs/geometry/doc/src/examples/algorithms/envelope.cpp b/libs/geometry/doc/src/examples/algorithms/envelope.cpp
index 1a3c6e454d..e649d17481 100644
--- a/libs/geometry/doc/src/examples/algorithms/envelope.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/envelope.cpp
@@ -16,8 +16,6 @@
#include <boost/geometry/geometries/box.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
-
/*<-*/ #include "create_svg_two.hpp" /*->*/
int main()
diff --git a/libs/geometry/doc/src/examples/algorithms/equals.cpp b/libs/geometry/doc/src/examples/algorithms/equals.cpp
index fe2836a48f..461a111e80 100644
--- a/libs/geometry/doc/src/examples/algorithms/equals.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/equals.cpp
@@ -30,19 +30,19 @@ int main()
boost::geometry::exterior_ring(poly1) = tuple_list_of(0, 0)(0, 5)(5, 5)(5, 0)(0, 0);
boost::geometry::exterior_ring(poly2) = tuple_list_of(5, 0)(0, 0)(0, 5)(5, 5)(5, 0);
- std::cout
- << "polygons are spatially "
+ std::cout
+ << "polygons are spatially "
<< (boost::geometry::equals(poly1, poly2) ? "equal" : "not equal")
<< std::endl;
-
+
boost::geometry::model::box<point> box;
boost::geometry::assign_values(box, 0, 0, 5, 5);
-
- std::cout
- << "polygon and box are spatially "
+
+ std::cout
+ << "polygon and box are spatially "
<< (boost::geometry::equals(box, poly2) ? "equal" : "not equal")
<< std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/algorithms/for_each_point.cpp b/libs/geometry/doc/src/examples/algorithms/for_each_point.cpp
index 86547c940c..cfc9e0aaba 100644
--- a/libs/geometry/doc/src/examples/algorithms/for_each_point.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/for_each_point.cpp
@@ -15,7 +15,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
diff --git a/libs/geometry/doc/src/examples/algorithms/for_each_point_const.cpp b/libs/geometry/doc/src/examples/algorithms/for_each_point_const.cpp
index 42c5bf016f..43cf2c774f 100644
--- a/libs/geometry/doc/src/examples/algorithms/for_each_point_const.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/for_each_point_const.cpp
@@ -15,7 +15,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
template <typename Point>
diff --git a/libs/geometry/doc/src/examples/algorithms/intersection_ls_ls_point.cpp b/libs/geometry/doc/src/examples/algorithms/intersection_ls_ls_point.cpp
index 630c60cd6b..4586f83d30 100644
--- a/libs/geometry/doc/src/examples/algorithms/intersection_ls_ls_point.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/intersection_ls_ls_point.cpp
@@ -14,7 +14,6 @@
#include <deque>
#include <boost/geometry.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/register/linestring.hpp>
diff --git a/libs/geometry/doc/src/examples/algorithms/intersection_poly_poly.cpp b/libs/geometry/doc/src/examples/algorithms/intersection_poly_poly.cpp
index a6034e439d..0add36591b 100644
--- a/libs/geometry/doc/src/examples/algorithms/intersection_poly_poly.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/intersection_poly_poly.cpp
@@ -16,7 +16,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
#include <boost/foreach.hpp>
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
diff --git a/libs/geometry/doc/src/examples/algorithms/intersection_segment.cpp b/libs/geometry/doc/src/examples/algorithms/intersection_segment.cpp
index 367b9b4fb4..ae5c69ac66 100644
--- a/libs/geometry/doc/src/examples/algorithms/intersection_segment.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/intersection_segment.cpp
@@ -14,7 +14,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
#include <boost/foreach.hpp>
diff --git a/libs/geometry/doc/src/examples/algorithms/intersects_linestring.cpp b/libs/geometry/doc/src/examples/algorithms/intersects_linestring.cpp
index ec8dd89dde..e2e1566bab 100644
--- a/libs/geometry/doc/src/examples/algorithms/intersects_linestring.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/intersects_linestring.cpp
@@ -15,7 +15,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
int main()
{
diff --git a/libs/geometry/doc/src/examples/algorithms/intersects_segment.cpp b/libs/geometry/doc/src/examples/algorithms/intersects_segment.cpp
index 223d9b0794..7f1b8f540d 100644
--- a/libs/geometry/doc/src/examples/algorithms/intersects_segment.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/intersects_segment.cpp
@@ -15,7 +15,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
int main()
{
diff --git a/libs/geometry/doc/src/examples/algorithms/is_simple.cpp b/libs/geometry/doc/src/examples/algorithms/is_simple.cpp
new file mode 100644
index 0000000000..8255b5f1a4
--- /dev/null
+++ b/libs/geometry/doc/src/examples/algorithms/is_simple.cpp
@@ -0,0 +1,51 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014, Oracle and/or its affiliates
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+//[is_simple
+//` Checks whether a geometry is simple
+
+#include <iostream>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/geometries/multi_linestring.hpp>
+/*<-*/ #include "create_svg_one.hpp" /*->*/
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point_type;
+ typedef boost::geometry::model::linestring<point_type> linestring_type;
+ typedef boost::geometry::model::multi_linestring<linestring_type> multi_linestring_type;
+
+ multi_linestring_type multi_linestring;
+ boost::geometry::read_wkt("MULTILINESTRING((0 0,0 10,10 10,10 0,0 0),(10 10,20 20))", multi_linestring);
+
+ std::cout << "is simple? "
+ << (boost::geometry::is_simple(multi_linestring) ? "yes" : "no")
+ << std::endl;
+ /*<-*/ create_svg("is_simple_example.svg", multi_linestring); /*->*/
+ return 0;
+}
+
+//]
+
+//[is_simple_output
+/*`
+Output:
+[pre
+is simple? no
+
+[$img/algorithms/is_simple_example.png]
+
+]
+
+*/
+//]
diff --git a/libs/geometry/doc/src/examples/algorithms/is_valid.cpp b/libs/geometry/doc/src/examples/algorithms/is_valid.cpp
new file mode 100644
index 0000000000..2cb12f354e
--- /dev/null
+++ b/libs/geometry/doc/src/examples/algorithms/is_valid.cpp
@@ -0,0 +1,49 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014, Oracle and/or its affiliates
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+//[is_valid
+//` Checks whether a geometry is valid
+
+#include <iostream>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+/*<-*/ #include "create_svg_one.hpp" /*->*/
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point_type;
+ typedef boost::geometry::model::polygon<point_type> polygon_type;
+
+ polygon_type poly;
+ boost::geometry::read_wkt(
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 2,0 0),(0 0,2 9,1 9,0 0),(2 9,9 2,9 9,2 9))"
+ , poly);
+
+ std::cout << "is valid? " << (boost::geometry::is_valid(poly) ? "yes" : "no") << std::endl;
+ /*<-*/ create_svg("is_valid_example.svg", poly); /*->*/
+ return 0;
+}
+
+//]
+
+//[is_valid_output
+/*`
+Output:
+[pre
+is valid? no
+
+[$img/algorithms/is_valid_example.png]
+
+]
+
+*/
+//]
diff --git a/libs/geometry/doc/src/examples/algorithms/length.cpp b/libs/geometry/doc/src/examples/algorithms/length.cpp
index 35fa50ea32..71693bcf69 100644
--- a/libs/geometry/doc/src/examples/algorithms/length.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/length.cpp
@@ -14,7 +14,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
int main()
diff --git a/libs/geometry/doc/src/examples/algorithms/length_with_strategy.cpp b/libs/geometry/doc/src/examples/algorithms/length_with_strategy.cpp
index 99c15fb196..4a643c894c 100644
--- a/libs/geometry/doc/src/examples/algorithms/length_with_strategy.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/length_with_strategy.cpp
@@ -24,7 +24,7 @@ int main()
line.push_back(P(5, 52));
double const mean_radius = 6371.0; /*< [@http://en.wikipedia.org/wiki/Earth_radius Wiki] >*/
std::cout << "length is "
- << length(line, strategy::distance::haversine<P>(mean_radius) )
+ << length(line, strategy::distance::haversine<float>(mean_radius) )
<< " kilometers " << std::endl;
return 0;
diff --git a/libs/geometry/doc/src/examples/algorithms/num_geometries.cpp b/libs/geometry/doc/src/examples/algorithms/num_geometries.cpp
index 8a350d5b87..28f476d95c 100644
--- a/libs/geometry/doc/src/examples/algorithms/num_geometries.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/num_geometries.cpp
@@ -15,9 +15,7 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
-#include <boost/geometry/multi/io/wkt/wkt.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
int main()
diff --git a/libs/geometry/doc/src/examples/algorithms/num_interior_rings.cpp b/libs/geometry/doc/src/examples/algorithms/num_interior_rings.cpp
index aeb8c92b74..f4756c6a90 100644
--- a/libs/geometry/doc/src/examples/algorithms/num_interior_rings.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/num_interior_rings.cpp
@@ -15,9 +15,7 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
-#include <boost/geometry/multi/io/wkt/wkt.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
int main()
diff --git a/libs/geometry/doc/src/examples/algorithms/num_points.cpp b/libs/geometry/doc/src/examples/algorithms/num_points.cpp
index 2e3c5c6786..0ed46fd09f 100644
--- a/libs/geometry/doc/src/examples/algorithms/num_points.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/num_points.cpp
@@ -13,12 +13,9 @@
#include <iostream>
#include <boost/geometry.hpp>
-#include <boost/geometry/multi/multi.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
-#include <boost/geometry/multi/io/wkt/wkt.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
int main()
diff --git a/libs/geometry/doc/src/examples/algorithms/num_segments.cpp b/libs/geometry/doc/src/examples/algorithms/num_segments.cpp
new file mode 100644
index 0000000000..c5861b7d9a
--- /dev/null
+++ b/libs/geometry/doc/src/examples/algorithms/num_segments.cpp
@@ -0,0 +1,44 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014, Oracle and/or its affiliates
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+//[num_segments
+//` Get the number of segments in a geometry
+
+#include <iostream>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+
+
+int main()
+{
+ boost::geometry::model::multi_polygon
+ <
+ boost::geometry::model::polygon
+ <
+ boost::geometry::model::d2::point_xy<double>, true, false // cw, open polygon
+ >
+ > mp;
+ boost::geometry::read_wkt("MULTIPOLYGON(((0 0,0 10,10 0),(1 1,8 1,1 8)),((10 10,10 20,20 10)))", mp);
+ std::cout << "Number of segments: " << boost::geometry::num_segments(mp) << std::endl;
+ return 0;
+}
+
+//]
+
+
+//[num_segments_output
+/*`
+Output:
+[pre
+ Number of segments: 9
+]
+*/
+//]
diff --git a/libs/geometry/doc/src/examples/algorithms/simplify_insert_with_strategy.cpp b/libs/geometry/doc/src/examples/algorithms/simplify_insert_with_strategy.cpp
index 95deab38d4..8615d84eca 100644
--- a/libs/geometry/doc/src/examples/algorithms/simplify_insert_with_strategy.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/simplify_insert_with_strategy.cpp
@@ -15,7 +15,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
int main()
{
diff --git a/libs/geometry/doc/src/examples/algorithms/sym_difference.cpp b/libs/geometry/doc/src/examples/algorithms/sym_difference.cpp
index 1bb955bcd0..4b1cc5f92c 100644
--- a/libs/geometry/doc/src/examples/algorithms/sym_difference.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/sym_difference.cpp
@@ -15,8 +15,7 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
#include <boost/foreach.hpp>
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
diff --git a/libs/geometry/doc/src/examples/algorithms/transform.cpp b/libs/geometry/doc/src/examples/algorithms/transform.cpp
index 97aea3c3db..a50845b2cc 100644
--- a/libs/geometry/doc/src/examples/algorithms/transform.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/transform.cpp
@@ -20,18 +20,18 @@ int main()
// Select a point near the pole (theta=5.0, phi=15.0)
bg::model::point<long double, 2, bg::cs::spherical<bg::degree> > p1(15.0, 5.0);
-
+
// Transform from degree to radian. Default strategy is automatically selected,
// it will convert from degree to radian
bg::model::point<long double, 2, bg::cs::spherical<bg::radian> > p2;
bg::transform(p1, p2);
-
- // Transform from degree (lon-lat) to 3D (x,y,z). Default strategy is automatically selected,
+
+ // Transform from degree (lon-lat) to 3D (x,y,z). Default strategy is automatically selected,
// it will consider points on a unit sphere
bg::model::point<long double, 3, bg::cs::cartesian> p3;
bg::transform(p1, p3);
-
- std::cout
+
+ std::cout
<< "p1: " << bg::dsv(p1) << std::endl
<< "p2: " << bg::dsv(p2) << std::endl
<< "p3: " << bg::dsv(p3) << std::endl;
diff --git a/libs/geometry/doc/src/examples/algorithms/transform_with_strategy.cpp b/libs/geometry/doc/src/examples/algorithms/transform_with_strategy.cpp
index df44d6336b..62a12dc5fd 100644
--- a/libs/geometry/doc/src/examples/algorithms/transform_with_strategy.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/transform_with_strategy.cpp
@@ -18,27 +18,27 @@ int main()
{
namespace trans = boost::geometry::strategy::transform;
using boost::geometry::dsv;
-
+
typedef boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian> point_type;
point_type p1(1.0, 1.0);
// Translate over (1.5, 1.5)
point_type p2;
- trans::translate_transformer<point_type, point_type> translate(1.5, 1.5);
+ trans::translate_transformer<double, 2, 2> translate(1.5, 1.5);
boost::geometry::transform(p1, p2, translate);
// Scale with factor 3.0
point_type p3;
- trans::scale_transformer<point_type, point_type> scale(3.0);
+ trans::scale_transformer<double, 2, 2> scale(3.0);
boost::geometry::transform(p1, p3, scale);
// Rotate with respect to the origin (0,0) over 90 degrees (clockwise)
point_type p4;
- trans::rotate_transformer<point_type, point_type, boost::geometry::degree> rotate(90.0);
+ trans::rotate_transformer<boost::geometry::degree, double, 2, 2> rotate(90.0);
boost::geometry::transform(p1, p4, rotate);
-
- std::cout
+
+ std::cout
<< "p1: " << dsv(p1) << std::endl
<< "p2: " << dsv(p2) << std::endl
<< "p3: " << dsv(p3) << std::endl
diff --git a/libs/geometry/doc/src/examples/algorithms/union.cpp b/libs/geometry/doc/src/examples/algorithms/union.cpp
index cf93a1db93..e187ee879e 100644
--- a/libs/geometry/doc/src/examples/algorithms/union.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/union.cpp
@@ -16,7 +16,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/io/wkt/wkt.hpp>
#include <boost/foreach.hpp>
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
diff --git a/libs/geometry/doc/src/examples/algorithms/within.cpp b/libs/geometry/doc/src/examples/algorithms/within.cpp
index 487753fc79..b2e99acb8e 100644
--- a/libs/geometry/doc/src/examples/algorithms/within.cpp
+++ b/libs/geometry/doc/src/examples/algorithms/within.cpp
@@ -16,8 +16,6 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-
-#include <boost/geometry/io/wkt/wkt.hpp>
/*<-*/ #include "create_svg_two.hpp" /*->*/
int main()
diff --git a/libs/geometry/doc/src/examples/core/closure.cpp b/libs/geometry/doc/src/examples/core/closure.cpp
index 62c6c18954..6f76378e7a 100644
--- a/libs/geometry/doc/src/examples/core/closure.cpp
+++ b/libs/geometry/doc/src/examples/core/closure.cpp
@@ -22,10 +22,10 @@ int main()
typedef boost::geometry::model::polygon<point_type> polygon_type;
boost::geometry::closure_selector clos = boost::geometry::closure<polygon_type>::value;
-
+
std::cout << "closure: " << clos << std::endl
<< "(open = " << boost::geometry::open
- << ", closed = " << boost::geometry::closed
+ << ", closed = " << boost::geometry::closed
<< ") "<< std::endl;
return 0;
diff --git a/libs/geometry/doc/src/examples/core/coordinate_dimension.cpp b/libs/geometry/doc/src/examples/core/coordinate_dimension.cpp
index 05881d2740..1664168605 100644
--- a/libs/geometry/doc/src/examples/core/coordinate_dimension.cpp
+++ b/libs/geometry/doc/src/examples/core/coordinate_dimension.cpp
@@ -27,7 +27,7 @@ int main()
boost::tuple<float, float, float>
>
>::value;
-
+
std::cout << "dimensions: " << dim << std::endl;
return 0;
diff --git a/libs/geometry/doc/src/examples/core/coordinate_system.cpp b/libs/geometry/doc/src/examples/core/coordinate_system.cpp
index 63db3a5dce..8f9879c466 100644
--- a/libs/geometry/doc/src/examples/core/coordinate_system.cpp
+++ b/libs/geometry/doc/src/examples/core/coordinate_system.cpp
@@ -23,7 +23,7 @@ int main()
typedef boost::geometry::model::polygon<point_type> polygon_type;
typedef boost::geometry::coordinate_system<polygon_type>::type system;
-
+
std::cout << "system: " << typeid(system).name() << std::endl;
return 0;
diff --git a/libs/geometry/doc/src/examples/core/coordinate_type.cpp b/libs/geometry/doc/src/examples/core/coordinate_type.cpp
index dd043bddb5..2447e596c9 100644
--- a/libs/geometry/doc/src/examples/core/coordinate_type.cpp
+++ b/libs/geometry/doc/src/examples/core/coordinate_type.cpp
@@ -23,7 +23,7 @@ int main()
typedef boost::geometry::model::polygon<point_type> polygon_type;
typedef boost::geometry::coordinate_type<polygon_type>::type ctype;
-
+
std::cout << "type: " << typeid(ctype).name() << std::endl;
return 0;
diff --git a/libs/geometry/doc/src/examples/core/degree_radian.cpp b/libs/geometry/doc/src/examples/core/degree_radian.cpp
index aed6bbeade..4fa375656a 100644
--- a/libs/geometry/doc/src/examples/core/degree_radian.cpp
+++ b/libs/geometry/doc/src/examples/core/degree_radian.cpp
@@ -19,12 +19,12 @@ int main()
{
typedef model::point<double, 2, cs::spherical_equatorial<degree> > degree_point;
typedef model::point<double, 2, cs::spherical_equatorial<radian> > radian_point;
-
+
degree_point d(4.893, 52.373);
radian_point r(0.041, 0.8527);
double dist = distance(d, r);
- std::cout
+ std::cout
<< "distance:" << std::endl
<< dist << " over unit sphere" << std::endl
<< dist * 3959 << " over a spherical earth, in miles" << std::endl;
diff --git a/libs/geometry/doc/src/examples/core/interior_type.cpp b/libs/geometry/doc/src/examples/core/interior_type.cpp
index 61096bf474..029d866708 100644
--- a/libs/geometry/doc/src/examples/core/interior_type.cpp
+++ b/libs/geometry/doc/src/examples/core/interior_type.cpp
@@ -23,11 +23,11 @@ BOOST_GEOMETRY_REGISTER_BOOST_ARRAY_CS(cs::cartesian)
int main()
{
// Define a polygon storing points in a deque and storing interior rings
- // in a list (note that std::list is not supported by most algorithms
+ // in a list (note that std::list is not supported by most algorithms
// because not supporting a random access iterator)
typedef boost::geometry::model::polygon
<
- boost::array<short, 3>,
+ boost::array<short, 3>,
true, true,
std::deque, std::list
> polygon;
diff --git a/libs/geometry/doc/src/examples/core/point_order.cpp b/libs/geometry/doc/src/examples/core/point_order.cpp
index 2f8b7058e2..62b28c3889 100644
--- a/libs/geometry/doc/src/examples/core/point_order.cpp
+++ b/libs/geometry/doc/src/examples/core/point_order.cpp
@@ -22,7 +22,7 @@ int main()
typedef boost::geometry::model::polygon<point_type, false> polygon_type;
boost::geometry::order_selector order = boost::geometry::point_order<polygon_type>::value;
-
+
std::cout << "order: " << order << std::endl
<< "(clockwise = " << boost::geometry::clockwise
<< ", counterclockwise = " << boost::geometry::counterclockwise
diff --git a/libs/geometry/doc/src/examples/core/point_type.cpp b/libs/geometry/doc/src/examples/core/point_type.cpp
index 17ab38ffc1..f9fc565c86 100644
--- a/libs/geometry/doc/src/examples/core/point_type.cpp
+++ b/libs/geometry/doc/src/examples/core/point_type.cpp
@@ -16,7 +16,7 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
int main()
{
diff --git a/libs/geometry/doc/src/examples/core/ring_type.cpp b/libs/geometry/doc/src/examples/core/ring_type.cpp
index 9e19bd4211..781f4456c9 100644
--- a/libs/geometry/doc/src/examples/core/ring_type.cpp
+++ b/libs/geometry/doc/src/examples/core/ring_type.cpp
@@ -24,19 +24,19 @@ int main()
typedef boost::geometry::ring_type<polygon>::type ring_type;
typedef boost::geometry::interior_type<polygon>::type int_type;
-
+
std::cout << typeid(ring_type).name() << std::endl;
std::cout << typeid(int_type).name() << std::endl;
-
- // So int_type defines a collection of rings,
+
+ // So int_type defines a collection of rings,
// which is a Boost.Range compatible range
// The type of an element of the collection is the very same ring type again.
// We show that.
typedef boost::range_value<int_type>::type int_ring_type;
-
- std::cout
+
+ std::cout
<< std::boolalpha
- << boost::is_same<ring_type, int_ring_type>::value
+ << boost::is_same<ring_type, int_ring_type>::value
<< std::endl;
return 0;
diff --git a/libs/geometry/doc/src/examples/core/rings.cpp b/libs/geometry/doc/src/examples/core/rings.cpp
index 81f1ded651..8d483d1840 100644
--- a/libs/geometry/doc/src/examples/core/rings.cpp
+++ b/libs/geometry/doc/src/examples/core/rings.cpp
@@ -9,7 +9,7 @@
//[rings
/*`
-Shows how to access the exterior ring (one)
+Shows how to access the exterior ring (one)
and interior rings (zero or more) of a polygon.
Also shows the related ring_type and interior_type.
*/
@@ -27,17 +27,17 @@ int main()
typedef boost::geometry::model::polygon<point> polygon_type;
polygon_type poly;
-
+
typedef boost::geometry::ring_type<polygon_type>::type ring_type;
ring_type& ring = boost::geometry::exterior_ring(poly);
-
+
// For a ring of model::polygon, you can call "push_back".
// (internally, it is done using a traits::push_back class)
ring.push_back(point(0, 0));
ring.push_back(point(0, 5));
ring.push_back(point(5, 4));
ring.push_back(point(0, 0));
-
+
ring_type inner;
inner.push_back(point(1, 1));
inner.push_back(point(2, 1));
@@ -49,16 +49,16 @@ int main()
interiors.push_back(inner);
std::cout << boost::geometry::dsv(poly) << std::endl;
-
- // So int_type defines a collection of rings,
+
+ // So int_type defines a collection of rings,
// which is a Boost.Range compatible range
// The type of an element of the collection is the very same ring type again.
// We show that.
typedef boost::range_value<int_type>::type int_ring_type;
-
- std::cout
+
+ std::cout
<< std::boolalpha
- << boost::is_same<ring_type, int_ring_type>::value
+ << boost::is_same<ring_type, int_ring_type>::value
<< std::endl;
return 0;
diff --git a/libs/geometry/doc/src/examples/core/tag.cpp b/libs/geometry/doc/src/examples/core/tag.cpp
index 13bf4ff792..bb5b765ec8 100644
--- a/libs/geometry/doc/src/examples/core/tag.cpp
+++ b/libs/geometry/doc/src/examples/core/tag.cpp
@@ -16,7 +16,7 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
@@ -31,9 +31,9 @@ template <> struct dispatch<boost::geometry::point_tag>
{
// Use the Boost.Geometry free function "get"
// working on all supported point types
- std::cout << "Hello POINT, you are located at: "
- << boost::geometry::get<0>(p) << ", "
- << boost::geometry::get<1>(p)
+ std::cout << "Hello POINT, you are located at: "
+ << boost::geometry::get<0>(p) << ", "
+ << boost::geometry::get<1>(p)
<< std::endl;
}
};
@@ -44,10 +44,10 @@ template <> struct dispatch<boost::geometry::polygon_tag>
template <typename Polygon>
static inline void apply(Polygon const& p)
{
- // Use the Boost.Geometry manipulator "dsv"
+ // Use the Boost.Geometry manipulator "dsv"
// working on all supported geometries
- std::cout << "Hello POLYGON, you look like: "
- << boost::geometry::dsv(p)
+ std::cout << "Hello POLYGON, you look like: "
+ << boost::geometry::dsv(p)
<< std::endl;
}
};
@@ -60,7 +60,7 @@ template <> struct dispatch<boost::geometry::multi_polygon_tag>
{
// Use the Boost.Range free function "size" because all
// multigeometries comply to Boost.Range
- std::cout << "Hello MULTIPOLYGON, you contain: "
+ std::cout << "Hello MULTIPOLYGON, you contain: "
<< boost::size(m) << " polygon(s)"
<< std::endl;
}
@@ -84,7 +84,7 @@ int main()
// Declare and fill a polygon and a multipolygon
polygon_type poly;
boost::geometry::exterior_ring(poly) = boost::assign::tuple_list_of(0, 0)(0, 10)(10, 5)(0, 0);
-
+
boost::geometry::model::multi_polygon<polygon_type> multi;
multi.push_back(poly);
diff --git a/libs/geometry/doc/src/examples/core/tag_cast.cpp b/libs/geometry/doc/src/examples/core/tag_cast.cpp
index 2e85f3d342..ff4a7c82f7 100644
--- a/libs/geometry/doc/src/examples/core/tag_cast.cpp
+++ b/libs/geometry/doc/src/examples/core/tag_cast.cpp
@@ -25,7 +25,7 @@ int main()
typedef geo::tag<polygon_type>::type tag;
typedef geo::tag_cast<tag, geo::linear_tag, geo::areal_tag>::type base_tag;
-
+
std::cout << "tag: " << typeid(tag).name() << std::endl
<< "base tag: " << typeid(base_tag).name() << std::endl;
diff --git a/libs/geometry/doc/src/examples/examples_utils/create_svg_buffer.hpp b/libs/geometry/doc/src/examples/examples_utils/create_svg_buffer.hpp
new file mode 100644
index 0000000000..a3899bc5e7
--- /dev/null
+++ b/libs/geometry/doc/src/examples/examples_utils/create_svg_buffer.hpp
@@ -0,0 +1,49 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014 Barend Gehrels, 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)
+
+// Code to create SVG for buffer examples
+
+#ifndef CREATE_SVG_BUFFER_HPP
+#define CREATE_SVG_BUFFER_HPP
+
+#include <fstream>
+
+#if defined(HAVE_SVG)
+# include <boost/geometry/io/svg/svg_mapper.hpp>
+#endif
+
+template <typename Geometry1, typename Geometry2>
+void create_svg_buffer(std::string const& filename, Geometry1 const& original, Geometry2 const& buffer)
+{
+#if defined(HAVE_SVG)
+ typedef typename boost::geometry::point_type<Geometry1>::type point_type;
+ std::ofstream svg(filename.c_str());
+
+ boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400);
+ mapper.add(original);
+ mapper.add(buffer);
+
+ // Draw buffer at bottom
+ mapper.map(buffer, "fill-opacity:0.6;fill:rgb(255,255,64);stroke:rgb(255,128,0);stroke-width:3");
+
+ // Draw original on top
+ mapper.map(original, "fill-opacity:0.6;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2");
+
+#else
+ boost::ignore_unused_variable_warning(filename);
+ boost::ignore_unused_variable_warning(original);
+ boost::ignore_unused_variable_warning(buffer);
+#endif
+}
+
+// NOTE: convert manually from svg to png using Inkscape ctrl-shift-E
+// and copy png to html/img/...
+
+
+#endif // CREATE_SVG_BUFFER_HPP
+
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/Jamfile.v2 b/libs/geometry/doc/src/examples/geometries/adapted/Jamfile.v2
index 2fd3aefaae..dd40a2494e 100644
--- a/libs/geometry/doc/src/examples/geometries/adapted/Jamfile.v2
+++ b/libs/geometry/doc/src/examples/geometries/adapted/Jamfile.v2
@@ -16,7 +16,10 @@ project boost-geometry-doc-src-example-geometries-adapted
exe c_array : c_array.cpp ;
exe boost_array : boost_array.cpp ;
exe boost_fusion : boost_fusion.cpp ;
-exe boost_polygon : boost_polygon.cpp ;
+exe boost_polygon_box : boost_polygon_box.cpp ;
+exe boost_polygon_point : boost_polygon_point.cpp ;
+exe boost_polygon_polygon : boost_polygon_polygon.cpp ;
+exe boost_polygon_ring : boost_polygon_ring.cpp ;
exe boost_tuple : boost_tuple.cpp ;
build-project boost_range ;
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_array.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_array.cpp
index 846c0be7bd..b654ab6472 100644
--- a/libs/geometry/doc/src/examples/geometries/adapted/boost_array.cpp
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_array.cpp
@@ -23,14 +23,14 @@ int main()
boost::array<float, 2> a = { {1, 2} };
boost::array<double, 2> b = { {2, 3} };
std::cout << boost::geometry::distance(a, b) << std::endl;
-
- boost::geometry::set<0>(a, 1.1);
- boost::geometry::set<1>(a, 2.2);
+
+ boost::geometry::set<0>(a, 1.1f);
+ boost::geometry::set<1>(a, 2.2f);
std::cout << boost::geometry::distance(a, b) << std::endl;
boost::geometry::assign_values(b, 2.2, 3.3);
std::cout << boost::geometry::distance(a, b) << std::endl;
-
+
boost::geometry::model::linestring<boost::array<double, 2> > line;
line.push_back(b);
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_fusion.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_fusion.cpp
index 89f0446994..0bb00a5a23 100644
--- a/libs/geometry/doc/src/examples/geometries/adapted/boost_fusion.cpp
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_fusion.cpp
@@ -29,20 +29,20 @@ BOOST_GEOMETRY_REGISTER_BOOST_FUSION_CS(cs::cartesian)
int main()
{
sample_point a, b, c;
-
+
// Set coordinates the Boost.Geometry way (one of the ways)
boost::geometry::assign_values(a, 3, 2, 1);
-
+
// Set coordinates the Boost.Fusion way
boost::fusion::at_c<0>(b) = 6;
boost::fusion::at_c<1>(b) = 5;
boost::fusion::at_c<2>(b) = 4;
-
+
// Set coordinates the native way
c.x = 9;
c.y = 8;
c.z = 7;
-
+
std::cout << "Distance a-b: " << boost::geometry::distance(a, b) << std::endl;
std::cout << "Distance a-c: " << boost::geometry::distance(a, c) << std::endl;
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_box.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_box.cpp
new file mode 100644
index 0000000000..dd465513c7
--- /dev/null
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_box.cpp
@@ -0,0 +1,42 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+//[boost_polygon_box
+//`Shows how to use Boost.Polygon rectangle_data within Boost.Geometry
+
+#include <iostream>
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/adapted/boost_polygon.hpp>
+
+int main()
+{
+ typedef boost::polygon::rectangle_data<int> rect;
+
+ rect b = boost::polygon::construct<rect>(1, 2, 3, 4);
+
+ std::cout << "Area (using Boost.Geometry): "
+ << boost::geometry::area(b) << std::endl;
+ std::cout << "Area (using Boost.Polygon): "
+ << boost::polygon::area(b) << std::endl;
+
+ return 0;
+}
+
+//]
+
+//[boost_polygon_box_output
+/*`
+Output:
+[pre
+Area (using Boost.Geometry): 4
+Area (using Boost.Polygon): 4
+]
+*/
+//]
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_point.cpp
index 3f71990fae..0f71f3f797 100644
--- a/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon.cpp
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_point.cpp
@@ -2,13 +2,14 @@
// QuickBook Example
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
// 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)
-//[boost_polygon
-//`Shows how to use Boost.Polygon points within Boost.Geometry
+//[boost_polygon_point
+//`Shows how to use Boost.Polygon point_data within Boost.Geometry
#include <iostream>
#include <boost/geometry.hpp>
@@ -17,9 +18,9 @@
int main()
{
boost::polygon::point_data<int> a(1, 2), b(3, 4);
- std::cout << "Distance (using Boost.Geometry): "
+ std::cout << "Distance (using Boost.Geometry): "
<< boost::geometry::distance(a, b) << std::endl;
- std::cout << "Distance (using Boost.Polygon): "
+ std::cout << "Distance (using Boost.Polygon): "
<< boost::polygon::euclidean_distance(a, b) << std::endl;
return 0;
@@ -27,7 +28,7 @@ int main()
//]
-//[boost_polygon_output
+//[boost_polygon_point_output
/*`
Output:
[pre
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_polygon.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_polygon.cpp
new file mode 100644
index 0000000000..5444d832fe
--- /dev/null
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_polygon.cpp
@@ -0,0 +1,64 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+//[boost_polygon_polygon
+//`Shows how to use Boost.Polygon polygon_with_holes_data within Boost.Geometry
+
+#include <iostream>
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/adapted/boost_polygon.hpp>
+
+int main()
+{
+ typedef boost::polygon::polygon_with_holes_data<int> polygon;
+ typedef boost::polygon::polygon_traits<polygon>::point_type point;
+ typedef boost::polygon::polygon_with_holes_traits<polygon>::hole_type hole;
+
+ point pts[5] = {
+ boost::polygon::construct<point>(0, 0),
+ boost::polygon::construct<point>(0, 10),
+ boost::polygon::construct<point>(10, 10),
+ boost::polygon::construct<point>(10, 0),
+ boost::polygon::construct<point>(0, 0)
+ };
+ point hole_pts[5] = {
+ boost::polygon::construct<point>(1, 1),
+ boost::polygon::construct<point>(9, 1),
+ boost::polygon::construct<point>(9, 9),
+ boost::polygon::construct<point>(1, 9),
+ boost::polygon::construct<point>(1, 1)
+ };
+
+ hole hls[1];
+ boost::polygon::set_points(hls[0], hole_pts, hole_pts+5);
+
+ polygon poly;
+ boost::polygon::set_points(poly, pts, pts+5);
+ boost::polygon::set_holes(poly, hls, hls+1);
+
+ std::cout << "Area (using Boost.Geometry): "
+ << boost::geometry::area(poly) << std::endl;
+ std::cout << "Area (using Boost.Polygon): "
+ << boost::polygon::area(poly) << std::endl;
+
+ return 0;
+}
+
+//]
+
+//[boost_polygon_polygon_output
+/*`
+Output:
+[pre
+Area (using Boost.Geometry): 36
+Area (using Boost.Polygon): 36
+]
+*/
+//]
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_ring.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_ring.cpp
new file mode 100644
index 0000000000..e0cfd6dcb8
--- /dev/null
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_polygon_ring.cpp
@@ -0,0 +1,52 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+//[boost_polygon_ring
+//`Shows how to use Boost.Polygon polygon_data within Boost.Geometry
+
+#include <iostream>
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/adapted/boost_polygon.hpp>
+
+int main()
+{
+ typedef boost::polygon::polygon_data<int> polygon;
+ typedef boost::polygon::polygon_traits<polygon>::point_type point;
+
+ point pts[5] = {
+ boost::polygon::construct<point>(0, 0),
+ boost::polygon::construct<point>(0, 10),
+ boost::polygon::construct<point>(10, 10),
+ boost::polygon::construct<point>(10, 0),
+ boost::polygon::construct<point>(0, 0)
+ };
+
+ polygon poly;
+ boost::polygon::set_points(poly, pts, pts+5);
+
+ std::cout << "Area (using Boost.Geometry): "
+ << boost::geometry::area(poly) << std::endl;
+ std::cout << "Area (using Boost.Polygon): "
+ << boost::polygon::area(poly) << std::endl;
+
+ return 0;
+}
+
+//]
+
+//[boost_polygon_ring_output
+/*`
+Output:
+[pre
+Area (using Boost.Geometry): 100
+Area (using Boost.Polygon): 100
+]
+*/
+//]
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_range/filtered.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_range/filtered.cpp
index ffc394a5e9..174c0425b0 100644
--- a/libs/geometry/doc/src/examples/geometries/adapted/boost_range/filtered.cpp
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_range/filtered.cpp
@@ -40,9 +40,9 @@ int main()
line.push_back(xy(6, 2));
line.push_back(xy(7, 1));
line.push_back(xy(8, 0));
-
+
using boost::adaptors::filtered;
- std::cout
+ std::cout
<< boost::geometry::length(line) << std::endl
<< boost::geometry::length(line | filtered(not_two())) << std::endl
<< boost::geometry::dsv(line | filtered(not_two())) << std::endl;
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_range/reversed.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_range/reversed.cpp
index a733438505..44e8068c77 100644
--- a/libs/geometry/doc/src/examples/geometries/adapted/boost_range/reversed.cpp
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_range/reversed.cpp
@@ -23,9 +23,9 @@ int main()
boost::geometry::model::linestring<xy> line;
line.push_back(xy(0, 0));
line.push_back(xy(1, 1));
-
- std::cout
- << boost::geometry::dsv(line | boost::adaptors::reversed)
+
+ std::cout
+ << boost::geometry::dsv(line | boost::adaptors::reversed)
<< std::endl;
return 0;
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_range/sliced.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_range/sliced.cpp
index b07d6d5840..bdfd74c629 100644
--- a/libs/geometry/doc/src/examples/geometries/adapted/boost_range/sliced.cpp
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_range/sliced.cpp
@@ -23,7 +23,7 @@
int main()
{
using namespace boost::assign;
-
+
typedef boost::geometry::model::d2::point_xy<int> xy;
boost::geometry::model::linestring<xy> line;
line += xy(0, 0);
@@ -31,8 +31,8 @@ int main()
line += xy(2, 2);
line += xy(3, 3);
line += xy(4, 4);
-
- std::cout
+
+ std::cout
<< boost::geometry::dsv(line | boost::adaptors::sliced(1, 3)) << std::endl;
return 0;
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_range/strided.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_range/strided.cpp
index 95a130acb9..8b9dc68657 100644
--- a/libs/geometry/doc/src/examples/geometries/adapted/boost_range/strided.cpp
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_range/strided.cpp
@@ -24,7 +24,7 @@ int main()
{
using namespace boost::assign;
using boost::adaptors::strided;
-
+
typedef boost::geometry::model::d2::point_xy<int> xy;
boost::geometry::model::ring<xy> ring;
ring += xy(0, 0);
@@ -35,8 +35,8 @@ int main()
ring += xy(2, 0);
boost::geometry::correct(ring);
-
- std::cout
+
+ std::cout
<< "Normal : " << boost::geometry::dsv(ring) << std::endl
<< "Strided: " << boost::geometry::dsv(ring | strided(2)) << std::endl;
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_range/uniqued.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_range/uniqued.cpp
index 9f138b00c7..6df47dee13 100644
--- a/libs/geometry/doc/src/examples/geometries/adapted/boost_range/uniqued.cpp
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_range/uniqued.cpp
@@ -32,7 +32,7 @@ int main()
{
using namespace boost::assign;
using boost::adaptors::uniqued;
-
+
boost::geometry::model::ring<xy> ring;
ring += xy(0, 0);
ring += xy(0, 1);
@@ -43,8 +43,8 @@ int main()
ring += xy(2, 2);
ring += xy(2, 0);
ring += xy(0, 0);
-
- std::cout
+
+ std::cout
<< "Normal: " << boost::geometry::dsv(ring) << std::endl
<< "Unique: " << boost::geometry::dsv(ring | uniqued) << std::endl;
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/boost_tuple.cpp b/libs/geometry/doc/src/examples/geometries/adapted/boost_tuple.cpp
index 747df88816..6c6599c5e5 100644
--- a/libs/geometry/doc/src/examples/geometries/adapted/boost_tuple.cpp
+++ b/libs/geometry/doc/src/examples/geometries/adapted/boost_tuple.cpp
@@ -11,7 +11,7 @@
/*`
Shows how to use Boost.Tuple points in Boost.Geometry
-Working with Boost.Tuples in Boost.Geometry is straightforward and shown in
+Working with Boost.Tuples in Boost.Geometry is straightforward and shown in
various other examples as well.
*/
@@ -31,11 +31,11 @@ int main()
poly.outer().push_back(boost::make_tuple(6.0, 4.0));
poly.outer().push_back(boost::make_tuple(5.0, 1.0));
poly.outer().push_back(boost::make_tuple(1.0, 2.0));
-
+
std::cout << "Area: " << boost::geometry::area(poly) << std::endl;
- std::cout << "Contains (1.5, 2.5): "
+ std::cout << "Contains (1.5, 2.5): "
<< std::boolalpha
- << boost::geometry::within(boost::make_tuple(1.5, 2.5), poly)
+ << boost::geometry::within(boost::make_tuple(1.5, 2.5), poly)
<< std::endl;
return 0;
diff --git a/libs/geometry/doc/src/examples/geometries/adapted/c_array.cpp b/libs/geometry/doc/src/examples/geometries/adapted/c_array.cpp
index 335346b891..95f4033033 100644
--- a/libs/geometry/doc/src/examples/geometries/adapted/c_array.cpp
+++ b/libs/geometry/doc/src/examples/geometries/adapted/c_array.cpp
@@ -14,7 +14,7 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/adapted/c_array.hpp>
-BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian)
+BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian)
int main()
{
@@ -22,7 +22,7 @@ int main()
int b[3] = {2, 3, 4};
std::cout << boost::geometry::distance(a, b) << std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/geometries/register/linestring.cpp b/libs/geometry/doc/src/examples/geometries/register/linestring.cpp
index ce4d97d7b5..ab5f5998ab 100644
--- a/libs/geometry/doc/src/examples/geometries/register/linestring.cpp
+++ b/libs/geometry/doc/src/examples/geometries/register/linestring.cpp
@@ -18,7 +18,7 @@
typedef boost::geometry::model::d2::point_xy<double> point_2d;
-BOOST_GEOMETRY_REGISTER_LINESTRING(std::vector<point_2d>)
+BOOST_GEOMETRY_REGISTER_LINESTRING(std::vector<point_2d>)
int main()
{
@@ -27,16 +27,16 @@ int main()
line.push_back(point_2d(1, 1));
line.push_back(point_2d(2, 2));
line.push_back(point_2d(3, 1));
-
+
// Usage of Boost.Geometry's length and wkt functions
- std::cout << "Length: "
+ std::cout << "Length: "
<< boost::geometry::length(line)
<< std::endl;
-
- std::cout << "WKT: "
+
+ std::cout << "WKT: "
<< boost::geometry::wkt(line)
<< std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/geometries/register/linestring_templated.cpp b/libs/geometry/doc/src/examples/geometries/register/linestring_templated.cpp
index 064f78eee5..5722b581db 100644
--- a/libs/geometry/doc/src/examples/geometries/register/linestring_templated.cpp
+++ b/libs/geometry/doc/src/examples/geometries/register/linestring_templated.cpp
@@ -18,18 +18,18 @@
#include <boost/geometry/geometries/register/linestring.hpp>
// Adapt any deque to Boost.Geometry Linestring Concept
-BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED(std::deque)
+BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED(std::deque)
int main()
{
std::deque<boost::geometry::model::d2::point_xy<double> > line(2);
boost::geometry::assign_values(line[0], 1, 1);
boost::geometry::assign_values(line[1], 2, 2);
-
+
// Boost.Geometry algorithms work on any deque now
std::cout << "Length: " << boost::geometry::length(line) << std::endl;
std::cout << "Line: " << boost::geometry::dsv(line) << std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/geometries/register/multi_linestring.cpp b/libs/geometry/doc/src/examples/geometries/register/multi_linestring.cpp
index 9ed40da73b..77a6c614d7 100644
--- a/libs/geometry/doc/src/examples/geometries/register/multi_linestring.cpp
+++ b/libs/geometry/doc/src/examples/geometries/register/multi_linestring.cpp
@@ -15,11 +15,11 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
-#include <boost/geometry/multi/geometries/register/multi_linestring.hpp>
+#include <boost/geometry/geometries/register/multi_linestring.hpp>
typedef boost::geometry::model::linestring
<
- boost::tuple<float, float>
+ boost::tuple<float, float>
> linestring_type;
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
@@ -31,10 +31,10 @@ int main()
std::deque<linestring_type> lines(2);
boost::geometry::read_wkt("LINESTRING(0 0,1 1)", lines[0]);
boost::geometry::read_wkt("LINESTRING(2 2,3 3)", lines[1]);
-
+
// Usage of Boost.Geometry
std::cout << "LENGTH: " << boost::geometry::length(lines) << std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/geometries/register/multi_point.cpp b/libs/geometry/doc/src/examples/geometries/register/multi_point.cpp
index e854da2b0f..c4ce3a49bd 100644
--- a/libs/geometry/doc/src/examples/geometries/register/multi_point.cpp
+++ b/libs/geometry/doc/src/examples/geometries/register/multi_point.cpp
@@ -13,8 +13,7 @@
#include <iostream>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
-#include <boost/geometry/multi/geometries/register/multi_point.hpp>
-#include <boost/geometry/multi/io/wkt/wkt.hpp>
+#include <boost/geometry/geometries/register/multi_point.hpp>
typedef boost::tuple<float, float> point_type;
@@ -27,10 +26,10 @@ int main()
std::deque<point_type> multi_point;
multi_point.push_back(point_type(1, 1));
multi_point.push_back(point_type(3, 2));
-
+
// Usage of Boost.Geometry
std::cout << "WKT: " << boost::geometry::wkt(multi_point) << std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/geometries/register/multi_point_templated.cpp b/libs/geometry/doc/src/examples/geometries/register/multi_point_templated.cpp
index bba16bbbd9..437cbd6d07 100644
--- a/libs/geometry/doc/src/examples/geometries/register/multi_point_templated.cpp
+++ b/libs/geometry/doc/src/examples/geometries/register/multi_point_templated.cpp
@@ -13,8 +13,7 @@
#include <iostream>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
-#include <boost/geometry/multi/geometries/register/multi_point.hpp>
-#include <boost/geometry/multi/io/wkt/wkt.hpp>
+#include <boost/geometry/geometries/register/multi_point.hpp>
BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED(std::deque)
@@ -27,10 +26,10 @@ int main()
std::deque<boost::tuple<float, float> > multi_point;
multi_point.push_back(boost::tuple<float, float>(1, 1));
multi_point.push_back(boost::tuple<float, float>(3, 2));
-
+
// Usage of Boost.Geometry
std::cout << "WKT: " << boost::geometry::wkt(multi_point) << std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/geometries/register/multi_polygon.cpp b/libs/geometry/doc/src/examples/geometries/register/multi_polygon.cpp
index f21f3cf954..1cfc9d832c 100644
--- a/libs/geometry/doc/src/examples/geometries/register/multi_polygon.cpp
+++ b/libs/geometry/doc/src/examples/geometries/register/multi_polygon.cpp
@@ -15,11 +15,11 @@
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
-#include <boost/geometry/multi/geometries/register/multi_polygon.hpp>
+#include <boost/geometry/geometries/register/multi_polygon.hpp>
typedef boost::geometry::model::polygon
<
- boost::tuple<float, float>
+ boost::tuple<float, float>
> polygon_type;
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
@@ -31,10 +31,10 @@ int main()
std::vector<polygon_type> polygons(2);
boost::geometry::read_wkt("POLYGON((0 0,0 1,1 1,1 0,0 0))", polygons[0]);
boost::geometry::read_wkt("POLYGON((3 0,3 1,4 1,4 0,3 0))", polygons[1]);
-
+
// Usage of Boost.Geometry
std::cout << "AREA: " << boost::geometry::area(polygons) << std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/geometries/register/ring.cpp b/libs/geometry/doc/src/examples/geometries/register/ring.cpp
index 4d7ca2a0a4..58f35a4476 100644
--- a/libs/geometry/doc/src/examples/geometries/register/ring.cpp
+++ b/libs/geometry/doc/src/examples/geometries/register/ring.cpp
@@ -27,13 +27,13 @@ int main()
ring.push_back(point_2d(1, 1));
ring.push_back(point_2d(2, 2));
ring.push_back(point_2d(2, 1));
-
-
+
+
// Usage of Boost.Geometry
boost::geometry::correct(ring);
std::cout << "Area: " << boost::geometry::area(ring) << std::endl;
std::cout << "WKT: " << boost::geometry::wkt(ring) << std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/geometries/register/ring_templated.cpp b/libs/geometry/doc/src/examples/geometries/register/ring_templated.cpp
index 0a27c99ca8..a3223421ad 100644
--- a/libs/geometry/doc/src/examples/geometries/register/ring_templated.cpp
+++ b/libs/geometry/doc/src/examples/geometries/register/ring_templated.cpp
@@ -18,7 +18,7 @@
#include <boost/geometry/geometries/register/ring.hpp>
// Adapt any deque to Boost.Geometry Ring Concept
-BOOST_GEOMETRY_REGISTER_RING_TEMPLATED(std::deque)
+BOOST_GEOMETRY_REGISTER_RING_TEMPLATED(std::deque)
int main()
{
@@ -26,12 +26,12 @@ int main()
boost::geometry::assign_values(ring[0], 0, 0);
boost::geometry::assign_values(ring[2], 4, 1);
boost::geometry::assign_values(ring[1], 1, 4);
-
+
// Boost.Geometry algorithms work on any deque now
boost::geometry::correct(ring);
std::cout << "Area: " << boost::geometry::area(ring) << std::endl;
std::cout << "Contents: " << boost::geometry::wkt(ring) << std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/io/Jamfile.v2 b/libs/geometry/doc/src/examples/io/Jamfile.v2
new file mode 100644
index 0000000000..489fa6a77b
--- /dev/null
+++ b/libs/geometry/doc/src/examples/io/Jamfile.v2
@@ -0,0 +1,19 @@
+# Boost.Geometry (aka GGL, Generic Geometry Library)
+#
+# Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+# Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+# Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+# Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland
+
+# 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)
+
+
+project boost-geometry-doc-example-io
+ : # requirements
+ ;
+
+exe svg : svg.cpp ;
+exe wkt : wkt.cpp ;
+exe read_wkt : read_wkt.cpp ;
diff --git a/libs/geometry/doc/src/examples/io/read_wkt.cpp b/libs/geometry/doc/src/examples/io/read_wkt.cpp
new file mode 100644
index 0000000000..55ed25e97b
--- /dev/null
+++ b/libs/geometry/doc/src/examples/io/read_wkt.cpp
@@ -0,0 +1,38 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014 Barend Gehrels, 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)
+
+//[read_wkt
+//` Shows the usage of read_wkt
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point_type;
+
+ point_type a;
+ boost::geometry::model::linestring<point_type> b;
+ boost::geometry::model::polygon<point_type> c;
+ boost::geometry::model::box<point_type> d;
+ boost::geometry::model::segment<point_type> e;
+
+ boost::geometry::read_wkt("POINT(1 2)", a);
+ boost::geometry::read_wkt("LINESTRING(0 0,2 2,3 1)", b);
+ boost::geometry::read_wkt("POLYGON((0 0,0 7,4 2,2 0,0 0))", c);
+ boost::geometry::read_wkt("BOX(0 0,3 3)", d);
+ boost::geometry::read_wkt("SEGMENT(1 0,3 4)", e);
+
+ return 0;
+}
+
+//]
+
diff --git a/libs/geometry/doc/src/examples/io/svg.cpp b/libs/geometry/doc/src/examples/io/svg.cpp
new file mode 100644
index 0000000000..37fb171cca
--- /dev/null
+++ b/libs/geometry/doc/src/examples/io/svg.cpp
@@ -0,0 +1,65 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2013 Barend Gehrels, 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)
+
+//[svg_mapper
+//` Shows the usage of svg_mapper
+
+#include <iostream>
+#include <fstream>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+
+int main()
+{
+ // Specify the basic type
+ typedef boost::geometry::model::d2::point_xy<double> point_type;
+
+ // Declare some geometries and set their values
+ point_type a;
+ boost::geometry::assign_values(a, 3, 6);
+
+ boost::geometry::model::polygon<point_type> b;
+ boost::geometry::read_wkt("POLYGON((0 0,0 7,4 2,2 0,0 0))", b);
+
+ boost::geometry::model::linestring<point_type> c;
+ c.push_back(point_type(3, 4));
+ c.push_back(point_type(4, 5));
+
+ // Declare a stream and an SVG mapper
+ std::ofstream svg("my_map.svg");
+ boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400);
+
+ // Add geometries such that all these geometries fit on the map
+ mapper.add(a);
+ mapper.add(b);
+ mapper.add(c);
+
+ // Draw the geometries on the SVG map, using a specific SVG style
+ mapper.map(a, "fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:2", 5);
+ mapper.map(b, "fill-opacity:0.3;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2");
+ mapper.map(c, "opacity:0.4;fill:none;stroke:rgb(212,0,0);stroke-width:5");
+
+ // Destructor of map will be called - adding </svg>
+ // Destructor of stream will be called, closing the file
+
+ return 0;
+}
+
+//]
+
+
+//[svg_mapper_output
+/*`
+Output:
+
+[$img/io/svg_mapper.png]
+*/
+//]
diff --git a/libs/geometry/doc/src/examples/io/wkt.cpp b/libs/geometry/doc/src/examples/io/wkt.cpp
new file mode 100644
index 0000000000..ffde1b094e
--- /dev/null
+++ b/libs/geometry/doc/src/examples/io/wkt.cpp
@@ -0,0 +1,51 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014 Barend Gehrels, 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)
+
+//[wkt
+//` Shows the usage of wkt
+
+#include <iostream>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+
+int main()
+{
+ namespace geom = boost::geometry;
+ typedef geom::model::d2::point_xy<double> point_type;
+
+ point_type point = geom::make<point_type>(3, 6);
+ geom::model::polygon<point_type> polygon;
+ geom::append(geom::exterior_ring(polygon), geom::make<point_type>(0, 0));
+ geom::append(geom::exterior_ring(polygon), geom::make<point_type>(0, 4));
+ geom::append(geom::exterior_ring(polygon), geom::make<point_type>(4, 4));
+ geom::append(geom::exterior_ring(polygon), geom::make<point_type>(4, 0));
+ geom::append(geom::exterior_ring(polygon), geom::make<point_type>(0, 0));
+
+ std::cout << boost::geometry::wkt(point) << std::endl;
+ std::cout << boost::geometry::wkt(polygon) << std::endl;
+
+ return 0;
+}
+
+//]
+
+
+//[wkt_output
+/*`
+Output:
+[pre
+POINT(3 6)
+POLYGON((0 0,0 4,4 4,4 0,0 0))
+]
+
+
+*/
+//]
diff --git a/libs/geometry/doc/src/examples/quick_start.cpp b/libs/geometry/doc/src/examples/quick_start.cpp
index 9a739efabe..f77c8909b7 100644
--- a/libs/geometry/doc/src/examples/quick_start.cpp
+++ b/libs/geometry/doc/src/examples/quick_start.cpp
@@ -114,7 +114,7 @@ int main(void)
double d = distance(a, b);
std::cout << "Distance a-b is: " << d << std::endl;
//]
-
+
//[quickstart_point_in_polygon
double points[][2] = {{2.0, 1.3}, {4.1, 3.0}, {5.3, 2.6}, {2.9, 0.7}, {2.0, 1.3}};
model::polygon<model::d2::point_xy<double> > poly;
@@ -122,7 +122,7 @@ int main(void)
boost::tuple<double, double> p = boost::make_tuple(3.7, 2.0);
std::cout << "Point p is in polygon? " << std::boolalpha << within(p, poly) << std::endl;
//]
-
+
//[quickstart_area
std::cout << "Area: " << area(poly) << std::endl;
//]
@@ -131,16 +131,16 @@ int main(void)
double d2 = distance(a, p);
std::cout << "Distance a-p is: " << d2 << std::endl;
//]
-
+
//[quick_start_spherical
typedef boost::geometry::model::point
<
double, 2, boost::geometry::cs::spherical_equatorial<boost::geometry::degree>
> spherical_point;
-
+
spherical_point amsterdam(4.90, 52.37);
spherical_point paris(2.35, 48.86);
-
+
double const earth_radius = 3959; // miles
std::cout << "Distance in miles: " << distance(amsterdam, paris) * earth_radius << std::endl;
//]
@@ -161,7 +161,7 @@ int main(void)
assign_values(r2, 200, 300, 220, 320);
}
//]
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/strategies/Jamfile.v2 b/libs/geometry/doc/src/examples/strategies/Jamfile.v2
new file mode 100644
index 0000000000..cb46a08863
--- /dev/null
+++ b/libs/geometry/doc/src/examples/strategies/Jamfile.v2
@@ -0,0 +1,21 @@
+# Boost.Geometry (aka GGL, Generic Geometry Library)
+#
+# Copyright (c) 2007-2014 Barend Gehrels, 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)
+
+
+project boost-geometry-doc-example-strategies
+ : # requirements
+ ;
+
+exe buffer_point_circle : buffer_point_circle.cpp ;
+exe buffer_point_square : buffer_point_square.cpp ;
+exe buffer_join_round : buffer_join_round.cpp ;
+exe buffer_join_miter : buffer_join_miter.cpp ;
+exe buffer_end_round : buffer_end_round.cpp ;
+exe buffer_end_flat : buffer_end_flat.cpp ;
+exe buffer_distance_symmetric : buffer_distance_symmetric.cpp ;
+exe buffer_distance_asymmetric : buffer_distance_asymmetric.cpp ;
diff --git a/libs/geometry/doc/src/examples/strategies/buffer_distance_asymmetric.cpp b/libs/geometry/doc/src/examples/strategies/buffer_distance_asymmetric.cpp
new file mode 100644
index 0000000000..4b09f08444
--- /dev/null
+++ b/libs/geometry/doc/src/examples/strategies/buffer_distance_asymmetric.cpp
@@ -0,0 +1,48 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014 Barend Gehrels, 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)
+
+//[buffer_distance_asymmetric
+//` Shows how the distance_asymmetric strategy can be used as a DistanceStrategy to create asymmetric buffers
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+/*<-*/ #include "../examples_utils/create_svg_buffer.hpp" /*->*/
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point;
+ typedef boost::geometry::model::linestring<point> linestring;
+ typedef boost::geometry::model::polygon<point> polygon;
+
+ // Declare the asymmetric distance strategy
+ boost::geometry::strategy::buffer::distance_asymmetric<double> distance_strategy(1.0, 0.5);
+
+ // Declare other strategies
+ boost::geometry::strategy::buffer::side_straight side_strategy;
+ boost::geometry::strategy::buffer::join_round join_strategy;
+ boost::geometry::strategy::buffer::end_round end_strategy;
+ boost::geometry::strategy::buffer::point_circle point_strategy;
+
+ // Declare/fill a multi linestring
+ boost::geometry::model::multi_linestring<linestring> ml;
+ boost::geometry::read_wkt("MULTILINESTRING((3 5,5 10,7 5),(7 7,11 10,15 7,19 10))", ml);
+
+ // Create the buffered geometry with left/right a different distance
+ boost::geometry::model::multi_polygon<polygon> result;
+ boost::geometry::buffer(ml, result,
+ distance_strategy, side_strategy,
+ join_strategy, end_strategy, point_strategy);
+ /*<-*/ create_svg_buffer("buffer_distance_asymmetric.svg", ml, result); /*->*/
+
+ return 0;
+}
+
+//]
+
diff --git a/libs/geometry/doc/src/examples/strategies/buffer_distance_symmetric.cpp b/libs/geometry/doc/src/examples/strategies/buffer_distance_symmetric.cpp
new file mode 100644
index 0000000000..b3f481204b
--- /dev/null
+++ b/libs/geometry/doc/src/examples/strategies/buffer_distance_symmetric.cpp
@@ -0,0 +1,48 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014 Barend Gehrels, 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)
+
+//[buffer_distance_symmetric
+//` Shows how the distance_symmetric strategy can be used as a DistanceStrategy to create symmetric buffers
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+/*<-*/ #include "../examples_utils/create_svg_buffer.hpp" /*->*/
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point;
+ typedef boost::geometry::model::linestring<point> linestring;
+ typedef boost::geometry::model::polygon<point> polygon;
+
+ // Declare the symmetric distance strategy
+ boost::geometry::strategy::buffer::distance_symmetric<double> distance_strategy(0.5);
+
+ // Declare other strategies
+ boost::geometry::strategy::buffer::side_straight side_strategy;
+ boost::geometry::strategy::buffer::join_round join_strategy;
+ boost::geometry::strategy::buffer::end_round end_strategy;
+ boost::geometry::strategy::buffer::point_circle point_strategy;
+
+ // Declare/fill a multi linestring
+ boost::geometry::model::multi_linestring<linestring> ml;
+ boost::geometry::read_wkt("MULTILINESTRING((3 5,5 10,7 5),(7 7,11 10,15 7,19 10))", ml);
+
+ // Create the buffered geometry with left/right the same distance
+ boost::geometry::model::multi_polygon<polygon> result;
+ boost::geometry::buffer(ml, result,
+ distance_strategy, side_strategy,
+ join_strategy, end_strategy, point_strategy);
+ /*<-*/ create_svg_buffer("buffer_distance_symmetric.svg", ml, result); /*->*/
+
+ return 0;
+}
+
+//]
+
diff --git a/libs/geometry/doc/src/examples/strategies/buffer_end_flat.cpp b/libs/geometry/doc/src/examples/strategies/buffer_end_flat.cpp
new file mode 100644
index 0000000000..f91f77b71d
--- /dev/null
+++ b/libs/geometry/doc/src/examples/strategies/buffer_end_flat.cpp
@@ -0,0 +1,48 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014 Barend Gehrels, 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)
+
+//[buffer_end_flat
+//` Shows how the end_flat strategy can be used as a EndStrategy to create flat ends
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+/*<-*/ #include "../examples_utils/create_svg_buffer.hpp" /*->*/
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point;
+ typedef boost::geometry::model::linestring<point> linestring;
+ typedef boost::geometry::model::polygon<point> polygon;
+
+ // Declare the flat-end strategy
+ boost::geometry::strategy::buffer::end_flat end_strategy;
+
+ // Declare other strategies
+ boost::geometry::strategy::buffer::distance_symmetric<double> distance_strategy(1.0);
+ boost::geometry::strategy::buffer::side_straight side_strategy;
+ boost::geometry::strategy::buffer::join_round join_strategy;
+ boost::geometry::strategy::buffer::point_circle point_strategy;
+
+ // Declare/fill a multi linestring
+ boost::geometry::model::multi_linestring<linestring> ml;
+ boost::geometry::read_wkt("MULTILINESTRING((3 5,5 10,7 5),(7 7,11 10,15 7,19 10))", ml);
+
+ // Create the buffered geometry with flat ends
+ boost::geometry::model::multi_polygon<polygon> result;
+ boost::geometry::buffer(ml, result,
+ distance_strategy, side_strategy,
+ join_strategy, end_strategy, point_strategy);
+ /*<-*/ create_svg_buffer("buffer_end_flat.svg", ml, result); /*->*/
+
+ return 0;
+}
+
+//]
+
diff --git a/libs/geometry/doc/src/examples/strategies/buffer_end_round.cpp b/libs/geometry/doc/src/examples/strategies/buffer_end_round.cpp
new file mode 100644
index 0000000000..c36fd4e53c
--- /dev/null
+++ b/libs/geometry/doc/src/examples/strategies/buffer_end_round.cpp
@@ -0,0 +1,48 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014 Barend Gehrels, 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)
+
+//[buffer_end_round
+//` Shows how the end_round strategy can be used as a EndStrategy to create rounded ends
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+/*<-*/ #include "../examples_utils/create_svg_buffer.hpp" /*->*/
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point;
+ typedef boost::geometry::model::linestring<point> linestring;
+ typedef boost::geometry::model::polygon<point> polygon;
+
+ // Declare the round-end strategy with 36 points for a full circle
+ boost::geometry::strategy::buffer::end_round end_strategy(36);
+
+ // Declare other strategies
+ boost::geometry::strategy::buffer::distance_symmetric<double> distance_strategy(1.0);
+ boost::geometry::strategy::buffer::side_straight side_strategy;
+ boost::geometry::strategy::buffer::join_round join_strategy;
+ boost::geometry::strategy::buffer::point_circle point_strategy;
+
+ // Declare/fill a multi linestring
+ boost::geometry::model::multi_linestring<linestring> ml;
+ boost::geometry::read_wkt("MULTILINESTRING((3 5,5 10,7 5),(7 7,11 10,15 7,19 10))", ml);
+
+ // Create the buffered geometry with rounded ends
+ boost::geometry::model::multi_polygon<polygon> result;
+ boost::geometry::buffer(ml, result,
+ distance_strategy, side_strategy,
+ join_strategy, end_strategy, point_strategy);
+ /*<-*/ create_svg_buffer("buffer_end_round.svg", ml, result); /*->*/
+
+ return 0;
+}
+
+//]
+
diff --git a/libs/geometry/doc/src/examples/strategies/buffer_join_miter.cpp b/libs/geometry/doc/src/examples/strategies/buffer_join_miter.cpp
new file mode 100644
index 0000000000..be1ce84c12
--- /dev/null
+++ b/libs/geometry/doc/src/examples/strategies/buffer_join_miter.cpp
@@ -0,0 +1,47 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014 Barend Gehrels, 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)
+
+//[buffer_join_miter
+//` Shows how the join_miter strategy can be used as a JoinStrategy to create sharp corners
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+/*<-*/ #include "../examples_utils/create_svg_buffer.hpp" /*->*/
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point;
+ typedef boost::geometry::model::polygon<point> polygon;
+
+ // Declare the join_miter strategy
+ boost::geometry::strategy::buffer::join_miter join_strategy;
+
+ // Declare other strategies
+ boost::geometry::strategy::buffer::distance_symmetric<double> distance_strategy(0.5);
+ boost::geometry::strategy::buffer::end_flat end_strategy;
+ boost::geometry::strategy::buffer::side_straight side_strategy;
+ boost::geometry::strategy::buffer::point_circle point_strategy;
+
+ // Declare/fill a multi polygon
+ boost::geometry::model::multi_polygon<polygon> mp;
+ boost::geometry::read_wkt("MULTIPOLYGON(((5 5,7 8,9 5,5 5)),((8 7,8 10,11 10,11 7,8 7)))", mp);
+
+ // Create the buffered geometry with sharp corners
+ boost::geometry::model::multi_polygon<polygon> result;
+ boost::geometry::buffer(mp, result,
+ distance_strategy, side_strategy,
+ join_strategy, end_strategy, point_strategy);
+ /*<-*/ create_svg_buffer("buffer_join_miter.svg", mp, result); /*->*/
+
+ return 0;
+}
+
+//]
+
diff --git a/libs/geometry/doc/src/examples/strategies/buffer_join_round.cpp b/libs/geometry/doc/src/examples/strategies/buffer_join_round.cpp
new file mode 100644
index 0000000000..812a1a8e3f
--- /dev/null
+++ b/libs/geometry/doc/src/examples/strategies/buffer_join_round.cpp
@@ -0,0 +1,47 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014 Barend Gehrels, 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)
+
+//[buffer_join_round
+//` Shows how the join_round strategy can be used as a JoinStrategy to create rounded corners
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+/*<-*/ #include "../examples_utils/create_svg_buffer.hpp" /*->*/
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point;
+ typedef boost::geometry::model::polygon<point> polygon;
+
+ // Declare the join_round strategy with 72 points for a full circle
+ boost::geometry::strategy::buffer::join_round join_strategy(72);
+
+ // Declare other strategies
+ boost::geometry::strategy::buffer::distance_symmetric<double> distance_strategy(1.0);
+ boost::geometry::strategy::buffer::end_flat end_strategy;
+ boost::geometry::strategy::buffer::side_straight side_strategy;
+ boost::geometry::strategy::buffer::point_circle point_strategy;
+
+ // Declare/fill a multi polygon
+ boost::geometry::model::multi_polygon<polygon> mp;
+ boost::geometry::read_wkt("MULTIPOLYGON(((5 5,7 8,9 5,5 5)),((8 7,8 10,11 10,11 7,8 7)))", mp);
+
+ // Create the buffered geometry with rounded corners
+ boost::geometry::model::multi_polygon<polygon> result;
+ boost::geometry::buffer(mp, result,
+ distance_strategy, side_strategy,
+ join_strategy, end_strategy, point_strategy);
+ /*<-*/ create_svg_buffer("buffer_join_round.svg", mp, result); /*->*/
+
+ return 0;
+}
+
+//]
+
diff --git a/libs/geometry/doc/src/examples/strategies/buffer_point_circle.cpp b/libs/geometry/doc/src/examples/strategies/buffer_point_circle.cpp
new file mode 100644
index 0000000000..82b805ea9e
--- /dev/null
+++ b/libs/geometry/doc/src/examples/strategies/buffer_point_circle.cpp
@@ -0,0 +1,47 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014 Barend Gehrels, 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)
+
+//[buffer_point_circle
+//` Shows how the point_circle strategy can be used as a PointStrategy to create circular buffers around points
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+/*<-*/ #include "../examples_utils/create_svg_buffer.hpp" /*->*/
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point;
+ typedef boost::geometry::model::polygon<point> polygon;
+
+ // Declare the point_circle strategy
+ boost::geometry::strategy::buffer::point_circle point_strategy(360);
+
+ // Declare other strategies
+ boost::geometry::strategy::buffer::distance_symmetric<double> distance_strategy(0.7);
+ boost::geometry::strategy::buffer::join_round join_strategy;
+ boost::geometry::strategy::buffer::end_round end_strategy;
+ boost::geometry::strategy::buffer::side_straight side_strategy;
+
+ // Declare/fill of a multi point
+ boost::geometry::model::multi_point<point> mp;
+ boost::geometry::read_wkt("MULTIPOINT((3 3),(3 4),(4 4),(7 3))", mp);
+
+ // Create the buffer of a multi point
+ boost::geometry::model::multi_polygon<polygon> result;
+ boost::geometry::buffer(mp, result,
+ distance_strategy, side_strategy,
+ join_strategy, end_strategy, point_strategy);
+ /*<-*/ create_svg_buffer("buffer_point_circle.svg", mp, result); /*->*/
+
+ return 0;
+}
+
+//]
+
diff --git a/libs/geometry/doc/src/examples/strategies/buffer_point_square.cpp b/libs/geometry/doc/src/examples/strategies/buffer_point_square.cpp
new file mode 100644
index 0000000000..d50c99d662
--- /dev/null
+++ b/libs/geometry/doc/src/examples/strategies/buffer_point_square.cpp
@@ -0,0 +1,48 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// QuickBook Example
+
+// Copyright (c) 2014 Barend Gehrels, 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)
+
+//[buffer_point_square
+//` Shows how the point_square strategy can be used as a PointStrategy to create square buffers where the original point lies in the center
+
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+/*<-*/ #include "../examples_utils/create_svg_buffer.hpp" /*->*/
+
+int main()
+{
+ typedef boost::geometry::model::d2::point_xy<double> point;
+ typedef boost::geometry::model::polygon<point> polygon;
+
+ // Declare the point_square strategy
+ boost::geometry::strategy::buffer::point_square point_strategy;
+
+ // Declare other strategies
+ boost::geometry::strategy::buffer::distance_symmetric<double> distance_strategy(0.5);
+ boost::geometry::strategy::buffer::join_round join_strategy;
+ boost::geometry::strategy::buffer::end_round end_strategy;
+ boost::geometry::strategy::buffer::side_straight side_strategy;
+
+ // Declare/fill of a multi point
+ boost::geometry::model::multi_point<point> mp;
+ boost::geometry::read_wkt("MULTIPOINT((3 3),(3 4),(4 4),(7 3))", mp);
+
+ // Create the buffer of a multi point
+ boost::geometry::model::multi_polygon<polygon> result;
+ boost::geometry::buffer(mp, result,
+ distance_strategy, side_strategy,
+ join_strategy, end_strategy, point_strategy);
+ /*<-*/ create_svg_buffer("buffer_point_square.svg", mp, result); /*->*/
+
+ return 0;
+}
+
+//]
+
diff --git a/libs/geometry/doc/src/examples/views/box_view.cpp b/libs/geometry/doc/src/examples/views/box_view.cpp
index e95b54ecb0..e968a867c7 100644
--- a/libs/geometry/doc/src/examples/views/box_view.cpp
+++ b/libs/geometry/doc/src/examples/views/box_view.cpp
@@ -21,15 +21,15 @@ int main()
<
boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian>
> box_type;
-
+
// Define the Boost.Range compatible type:
- typedef boost::geometry::box_view<box_type> box_view;
-
+ typedef boost::geometry::box_view<box_type> box_view;
+
box_type box;
boost::geometry::assign_values(box, 0, 0, 4, 4);
-
+
box_view view(box);
-
+
// Iterating in clockwise direction over the points of this box
for (boost::range_iterator<box_view const>::type it = boost::begin(view);
it != boost::end(view); ++it)
@@ -37,10 +37,10 @@ int main()
std::cout << " " << boost::geometry::dsv(*it);
}
std::cout << std::endl;
-
+
// Note that a box_view is tagged as a ring, so supports area etc.
std::cout << "Area: " << boost::geometry::area(view) << std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/doc/src/examples/views/segment_view.cpp b/libs/geometry/doc/src/examples/views/segment_view.cpp
index 5337189f9c..56f21d1f46 100644
--- a/libs/geometry/doc/src/examples/views/segment_view.cpp
+++ b/libs/geometry/doc/src/examples/views/segment_view.cpp
@@ -21,14 +21,14 @@ int main()
<
boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian>
> segment_type;
-
- typedef boost::geometry::segment_view<segment_type> segment_view;
-
+
+ typedef boost::geometry::segment_view<segment_type> segment_view;
+
segment_type segment;
boost::geometry::assign_values(segment, 0, 0, 1, 1);
-
+
segment_view view(segment);
-
+
// Iterating over the points of this segment
for (boost::range_iterator<segment_view const>::type it = boost::begin(view);
it != boost::end(view); ++it)
@@ -36,10 +36,10 @@ int main()
std::cout << " " << boost::geometry::dsv(*it);
}
std::cout << std::endl;
-
+
// Note that a segment_view is tagged as a linestring, so supports length etc.
std::cout << "Length: " << boost::geometry::length(view) << std::endl;
-
+
return 0;
}
diff --git a/libs/geometry/example/01_point_example.cpp b/libs/geometry/example/01_point_example.cpp
index 4feee82c6e..d1a70e74fb 100644
--- a/libs/geometry/example/01_point_example.cpp
+++ b/libs/geometry/example/01_point_example.cpp
@@ -70,7 +70,7 @@ int main()
double d1 = distance(pt1, pt2);
double d2 = distance(pt3, pt4);
double d3 = distance(pt5, pt6);
- std::cout << "Distances: "
+ std::cout << "Distances: "
<< d1 << " and " << d2 << " and " << d3 << std::endl;
// (in case you didn't note, distances can be calculated
@@ -121,6 +121,9 @@ int main()
// (delimiter separated values)
std::cout << dsv(pt3) << std::endl;
+ // 5. or wkt
+ std::cout << wkt(p4) << (equals(p4, p5) ? " equals " : " don't equals ") << wkt(p5) << std::endl;
+
// There are 3-dimensional points too
model::point<double, 3, cs::cartesian> d3a, d3b;
assign_values(d3a, 1, 2, 3);
diff --git a/libs/geometry/example/03_polygon_example.cpp b/libs/geometry/example/03_polygon_example.cpp
index 3b962ce01c..4dcb3aaaed 100644
--- a/libs/geometry/example/03_polygon_example.cpp
+++ b/libs/geometry/example/03_polygon_example.cpp
@@ -18,7 +18,7 @@
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/adapted/c_array.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian)
diff --git a/libs/geometry/example/05_a_overlay_polygon_example.cpp b/libs/geometry/example/05_a_overlay_polygon_example.cpp
index 97682eec0e..26fdd1e1e4 100644
--- a/libs/geometry/example/05_a_overlay_polygon_example.cpp
+++ b/libs/geometry/example/05_a_overlay_polygon_example.cpp
@@ -24,7 +24,7 @@
#include <boost/geometry/geometries/adapted/c_array.hpp>
#if defined(HAVE_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian)
diff --git a/libs/geometry/example/05_b_overlay_linestring_polygon_example.cpp b/libs/geometry/example/05_b_overlay_linestring_polygon_example.cpp
index be5170f24c..38349decb6 100644
--- a/libs/geometry/example/05_b_overlay_linestring_polygon_example.cpp
+++ b/libs/geometry/example/05_b_overlay_linestring_polygon_example.cpp
@@ -29,7 +29,7 @@
#include <boost/geometry/geometries/adapted/c_array.hpp>
#if defined(HAVE_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian);
@@ -67,10 +67,12 @@ int main(void)
#endif
// Calculate intersection points (turn points)
- typedef bg::detail::overlay::turn_info<point_2d> turn_info;
+ typedef bg::segment_ratio_type<point_2d, bg::detail::no_rescale_policy>::type segment_ratio;
+ typedef bg::detail::overlay::turn_info<point_2d, segment_ratio> turn_info;
std::vector<turn_info> turns;
bg::detail::get_turns::no_interrupt_policy policy;
- bg::get_turns<false, false, bg::detail::overlay::assign_null_policy>(ls, p, turns, policy);
+ bg::detail::no_rescale_policy rescale_policy;
+ bg::get_turns<false, false, bg::detail::overlay::assign_null_policy>(ls, p, rescale_policy, turns, policy);
std::cout << "Intersection of linestring/polygon" << std::endl;
BOOST_FOREACH(turn_info const& turn, turns)
diff --git a/libs/geometry/example/06_a_transformation_example.cpp b/libs/geometry/example/06_a_transformation_example.cpp
index 367d5e16f1..01a560173d 100644
--- a/libs/geometry/example/06_a_transformation_example.cpp
+++ b/libs/geometry/example/06_a_transformation_example.cpp
@@ -29,7 +29,7 @@ int main()
point_2d p2;
// Example: translate a point over (5,5)
- strategy::transform::translate_transformer<point_2d, point_2d> translate(5, 5);
+ strategy::transform::translate_transformer<double, 2, 2> translate(5, 5);
transform(p, p2, translate);
std::cout << "transformed point " << boost::geometry::dsv(p2) << std::endl;
diff --git a/libs/geometry/example/06_b_transformation_example.cpp b/libs/geometry/example/06_b_transformation_example.cpp
index a406f60991..db125ff537 100644
--- a/libs/geometry/example/06_b_transformation_example.cpp
+++ b/libs/geometry/example/06_b_transformation_example.cpp
@@ -24,7 +24,7 @@
#include <boost/geometry/io/wkt/read.hpp>
#if defined(HAVE_SVG)
-# include <boost/geometry/extensions/io/svg/write_svg.hpp>
+# include <boost/geometry/io/svg/write_svg.hpp>
#endif
#include <boost/bind.hpp>
@@ -127,25 +127,25 @@ int main()
svg.put(g1, "g1");
// G1 - Translate -> G2
- translate_transformer<point_2d, point_2d> translate(0, 250);
+ translate_transformer<double, 2, 2> translate(0, 250);
model::polygon<point_2d> g2;
transform(g1, g2, translate);
std::clog << "translated:\t" << boost::geometry::dsv(g2) << std::endl;
svg.put(g2, "g2=g1.translate(0,250)");
// G2 - Scale -> G3
- scale_transformer<point_2d, point_2d> scale(0.5, 0.5);
+ scale_transformer<double, 2, 2> scale(0.5, 0.5);
model::polygon<point_2d> g3;
transform(g2, g3, scale);
std::clog << "scaled:\t" << boost::geometry::dsv(g3) << std::endl;
svg.put(g3, "g3=g2.scale(0.5,0.5)");
// G3 - Combine rotate and translate -> G4
- rotate_transformer<point_2d, point_2d, degree> rotate(45);
+ rotate_transformer<degree, double, 2, 2> rotate(45);
// Compose matrix for the two transformation
// Create transformer attached to the transformation matrix
- ublas_transformer<point_2d, point_2d, 2, 2>
+ ublas_transformer<double, 2, 2>
combined(boost::numeric::ublas::prod(rotate.matrix(), translate.matrix()));
//combined(rotate.matrix());
diff --git a/libs/geometry/example/07_a_graph_route_example.cpp b/libs/geometry/example/07_a_graph_route_example.cpp
index 1c3e59d326..1b67867713 100644
--- a/libs/geometry/example/07_a_graph_route_example.cpp
+++ b/libs/geometry/example/07_a_graph_route_example.cpp
@@ -28,17 +28,11 @@
#include <boost/geometry/io/wkt/read.hpp>
-// Yes, this example currently uses some extensions:
-
- // For output:
- #if defined(HAVE_SVG)
- # include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
- #endif
-
- // For distance-calculations over the Earth:
- //#include <boost/geometry/extensions/gis/geographic/strategies/andoyer.hpp>
-
+// For output:
+#include <boost/geometry/io/svg/svg_mapper.hpp>
+// For distance-calculations over the Earth:
+//#include <boost/geometry/extensions/gis/geographic/strategies/andoyer.hpp>
// Read an ASCII file containing WKT's, fill a vector of tuples
// The tuples consist of at least <0> a geometry and <1> an identifying string
@@ -92,6 +86,9 @@ namespace boost
BOOST_INSTALL_PROPERTY(edge, bg_property);
}
+// To calculate distance, declare and construct a strategy with average earth radius
+boost::geometry::strategy::distance::haversine<double> const haversine(6372795.0);
+
// Define properties for vertex
template <typename Point>
struct bg_vertex_property
@@ -101,8 +98,8 @@ struct bg_vertex_property
boost::geometry::assign_zero(location);
}
bg_vertex_property(Point const& loc)
+ : location(loc)
{
- location = loc;
}
Point location;
@@ -113,9 +110,9 @@ template <typename Linestring>
struct bg_edge_property
{
bg_edge_property(Linestring const& line)
- : m_line(line)
+ : m_length(boost::geometry::length(line, haversine))
+ , m_line(line)
{
- m_length = boost::geometry::length(line);
}
inline operator double() const
@@ -306,12 +303,9 @@ int main()
double const km = 1000.0;
std::cout << "distances, all in KM" << std::endl
<< std::fixed << std::setprecision(0);
-
- // To calculate distance, declare and construct a strategy with average earth radius
- boost::geometry::strategy::distance::haversine<point_type> haversine(6372795.0);
// Main functionality: calculate shortest routes from/to all cities
-
+
// For the first one, the complete route is stored as a linestring
bool first = true;
@@ -387,7 +381,7 @@ int main()
mapper.text(city.get<0>(), city.get<1>(),
"fill:rgb(0,0,0);font-family:Arial;font-size:10px", 5, 5);
}
-#endif
+#endif
return 0;
}
diff --git a/libs/geometry/example/07_b_graph_route_example.cpp b/libs/geometry/example/07_b_graph_route_example.cpp
index 0886883d81..ca39839e75 100644
--- a/libs/geometry/example/07_b_graph_route_example.cpp
+++ b/libs/geometry/example/07_b_graph_route_example.cpp
@@ -31,16 +31,11 @@
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/io/wkt/read.hpp>
+// For output:
+#include <boost/geometry/io/svg/svg_mapper.hpp>
-// Yes, this example currently uses some extensions:
-
- // For output:
- #if defined(HAVE_SVG)
- # include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
- #endif
-
- // For distance-calculations over the Earth:
- //#include <boost/geometry/extensions/gis/geographic/strategies/andoyer.hpp>
+// For distance-calculations over the Earth:
+//#include <boost/geometry/extensions/gis/geographic/strategies/andoyer.hpp>
@@ -85,7 +80,8 @@ void read_wkt(std::string const& filename, std::vector<Tuple>& tuples, Box& box)
}
}
-
+// To calculate distance, declare and construct a strategy with average earth radius
+boost::geometry::strategy::distance::haversine<double> const haversine(6372795.0);
// Define properties for vertex
template <typename Point>
@@ -96,8 +92,8 @@ struct bg_vertex_property
boost::geometry::assign_zero(location);
}
bg_vertex_property(Point const& loc)
+ : location(loc)
{
- location = loc;
}
Point location;
@@ -108,9 +104,9 @@ template <typename Linestring>
struct bg_edge_property
{
bg_edge_property(Linestring const& line)
- : m_line(line)
+ : length(boost::geometry::length(line, haversine))
+ , m_line(line)
{
- length = boost::geometry::length(line);
}
inline Linestring const& line() const
@@ -295,9 +291,6 @@ int main()
std::cout << "distances, all in KM" << std::endl
<< std::fixed << std::setprecision(0);
- // To calculate distance, declare and construct a strategy with average earth radius
- boost::geometry::strategy::distance::haversine<point_type> haversine(6372795.0);
-
// Main functionality: calculate shortest routes from/to all cities
// For the first one, the complete route is stored as a linestring
@@ -374,7 +367,7 @@ int main()
mapper.text(city.get<0>(), city.get<1>(),
"fill:rgb(0,0,0);font-family:Arial;font-size:10px", 5, 5);
}
-#endif
+#endif
return 0;
}
diff --git a/libs/geometry/example/boost.vsprops b/libs/geometry/example/boost.vsprops
deleted file mode 100644
index e376ce44a6..0000000000
--- a/libs/geometry/example/boost.vsprops
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="boost"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(BOOST_ROOT);..\..\.."
- PreprocessorDefinitions="_SCL_SECURE_NO_WARNINGS"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories="$(BOOST_ROOT)\lib"
- />
- <UserMacro
- Name="BOOST_ROOT"
- Value="../../.."
- />
-</VisualStudioPropertySheet>
diff --git a/libs/geometry/example/c04_b_custom_triangle_example.cpp b/libs/geometry/example/c04_b_custom_triangle_example.cpp
index a481005293..320dc6eded 100644
--- a/libs/geometry/example/c04_b_custom_triangle_example.cpp
+++ b/libs/geometry/example/c04_b_custom_triangle_example.cpp
@@ -38,10 +38,11 @@ BOOST_GEOMETRY_REGISTER_RING_TEMPLATED(triangle)
namespace boost { namespace geometry { namespace dispatch {
// Specializations of area dispatch structure, implement algorithm
-template<typename P, typename S>
-struct area<ring_tag, triangle<P>, S>
+template<typename Point>
+struct area<triangle<Point>, ring_tag>
{
- static inline double apply(triangle<P> const& t, S const&)
+ template <typename Strategy>
+ static inline double apply(triangle<Point> const& t, Strategy const&)
{
return 0.5 * ((get<0>(t[1]) - get<0>(t[0])) * (get<1>(t[2]) - get<1>(t[0]))
- (get<0>(t[2]) - get<0>(t[0])) * (get<1>(t[1]) - get<1>(t[0])));
diff --git a/libs/geometry/example/c08_custom_non_std_example.cpp b/libs/geometry/example/c08_custom_non_std_example.cpp
index 966c6298b7..be5eed1bd7 100644
--- a/libs/geometry/example/c08_custom_non_std_example.cpp
+++ b/libs/geometry/example/c08_custom_non_std_example.cpp
@@ -12,6 +12,8 @@
#include <iostream>
+#include <boost/assert.hpp>
+
#include <boost/iterator.hpp>
#include <boost/iterator/iterator_adaptor.hpp>
#include <boost/iterator/iterator_categories.hpp>
@@ -43,14 +45,14 @@ class my_polygon
// Const access
my_point const& get_point(std::size_t i) const
{
- assert(i < points.size());
+ BOOST_ASSERT(i < points.size());
return points[i];
}
// Mutable access
my_point & get_point(std::size_t i)
{
- assert(i < points.size());
+ BOOST_ASSERT(i < points.size());
return points[i];
}
@@ -65,41 +67,59 @@ class my_polygon
// Adaption: implement iterator and range-extension, and register with Boost.Geometry
// 1) implement iterator (const and non-const versions)
-template <bool IsConst>
+template<typename MyPolygon>
struct custom_iterator : public boost::iterator_facade
<
- custom_iterator<IsConst>,
+ custom_iterator<MyPolygon>,
my_point,
boost::random_access_traversal_tag,
- typename boost::geometry::add_const_if_c<IsConst, my_point>::type&
+ typename boost::mpl::if_
+ <
+ boost::is_const<MyPolygon>,
+ my_point const,
+ my_point
+ >::type&
>
{
// Constructor for begin()
- explicit custom_iterator(typename boost::geometry::add_const_if_c<IsConst, my_polygon>::type& polygon)
+ explicit custom_iterator(MyPolygon& polygon)
: m_polygon(&polygon)
, m_index(0)
{}
// Constructor for end()
- explicit custom_iterator(bool, typename boost::geometry::add_const_if_c<IsConst, my_polygon>::type& polygon)
+ explicit custom_iterator(bool, MyPolygon& polygon)
: m_polygon(&polygon)
, m_index(polygon.point_count())
{}
+ // Default constructor
+ explicit custom_iterator()
+ : m_polygon(NULL)
+ , m_index(-1)
+ {}
+
+ typedef typename boost::mpl::if_
+ <
+ boost::is_const<MyPolygon>,
+ my_point const,
+ my_point
+ >::type my_point_type;
private:
friend class boost::iterator_core_access;
+
typedef boost::iterator_facade
<
- custom_iterator<IsConst>,
+ custom_iterator<MyPolygon>,
my_point,
boost::random_access_traversal_tag,
- typename boost::geometry::add_const_if_c<IsConst, my_point>::type&
+ my_point_type&
> facade;
- typename boost::geometry::add_const_if_c<IsConst, my_polygon>::type* m_polygon;
+ MyPolygon* m_polygon;
int m_index;
bool equal(custom_iterator const& other) const
@@ -134,7 +154,7 @@ private:
}
// const and non-const dereference of this iterator
- typename boost::geometry::add_const_if_c<IsConst, my_point>::type& dereference() const
+ my_point_type& dereference() const
{
return m_polygon->get_point(m_index);
}
@@ -150,12 +170,12 @@ namespace boost
{
template<> struct range_mutable_iterator<my_polygon>
{
- typedef custom_iterator<false> type;
+ typedef custom_iterator<my_polygon> type;
};
template<> struct range_const_iterator<my_polygon>
{
- typedef custom_iterator<true> type;
+ typedef custom_iterator<my_polygon const> type;
};
// RangeEx
@@ -168,24 +188,24 @@ namespace boost
// 2b) free-standing function for Boost.Range ADP
-inline custom_iterator<false> range_begin(my_polygon& polygon)
+inline custom_iterator<my_polygon> range_begin(my_polygon& polygon)
{
- return custom_iterator<false>(polygon);
+ return custom_iterator<my_polygon>(polygon);
}
-inline custom_iterator<true> range_begin(my_polygon const& polygon)
+inline custom_iterator<my_polygon const> range_begin(my_polygon const& polygon)
{
- return custom_iterator<true>(polygon);
+ return custom_iterator<my_polygon const>(polygon);
}
-inline custom_iterator<false> range_end(my_polygon& polygon)
+inline custom_iterator<my_polygon> range_end(my_polygon& polygon)
{
- return custom_iterator<false>(true, polygon);
+ return custom_iterator<my_polygon>(true, polygon);
}
-inline custom_iterator<true> range_end(my_polygon const& polygon)
+inline custom_iterator<my_polygon const> range_end(my_polygon const& polygon)
{
- return custom_iterator<true>(true, polygon);
+ return custom_iterator<my_polygon const>(true, polygon);
}
@@ -210,6 +230,14 @@ template<> struct resize<my_polygon>
}
};
+template<> struct clear<my_polygon>
+{
+ static inline void apply(my_polygon& polygon)
+ {
+ polygon.erase_all();
+ }
+};
+
}}}
@@ -225,8 +253,8 @@ BOOST_GEOMETRY_REGISTER_RING(my_polygon)
void walk_using_iterator(my_polygon const& polygon)
{
- for (custom_iterator<true> it = custom_iterator<true>(polygon);
- it != custom_iterator<true>(true, polygon);
+ for (custom_iterator<my_polygon const> it = custom_iterator<my_polygon const>(polygon);
+ it != custom_iterator<my_polygon const>(true, polygon);
++it)
{
std::cout << boost::geometry::dsv(*it) << std::endl;
diff --git a/libs/geometry/example/c10_custom_cs_example.cpp b/libs/geometry/example/c10_custom_cs_example.cpp
index b71ad89765..098916cd68 100644
--- a/libs/geometry/example/c10_custom_cs_example.cpp
+++ b/libs/geometry/example/c10_custom_cs_example.cpp
@@ -8,7 +8,7 @@
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
-// Example: Custom coordinate system example
+// Example: Custom coordinate system example
#include <iostream>
@@ -45,8 +45,8 @@ struct cs_tag<martian<DegreeOrRadian> >
}}} // namespaces
-// NOTE: if the next steps would not be here,
-// compiling a distance function call with martian coordinates
+// NOTE: if the next steps would not be here,
+// compiling a distance function call with martian coordinates
// would result in a MPL assertion
// 4: so register a distance strategy as its default strategy
@@ -56,27 +56,27 @@ namespace boost { namespace geometry { namespace strategy { namespace distance {
template <typename Point1, typename Point2>
struct default_strategy<point_tag, Point1, Point2, martian_tag, martian_tag>
{
- typedef haversine<Point1, Point2> type;
+ typedef haversine<double> type;
};
}}}}} // namespaces
// 5: not worked out. To implement a specific distance strategy for Mars,
-// e.g. with the Mars radius given by default,
+// e.g. with the Mars radius given by default,
// you will have to implement (/register) several other metafunctions:
-// tag, return_type, similar_type, comparable_type,
+// tag, return_type, similar_type, comparable_type,
// and structs:
// get_similar, get_comparable, result_from_distance
-// See e.g. .../boost/geometry/extensions/gis/geographic/strategies/andoyer.hpp
+// See e.g. .../boost/geometry/extensions/gis/geographic/strategies/andoyer.hpp
int main()
{
typedef boost::geometry::model::point
<
- double, 2, martian<boost::geometry::degree>
+ double, 2, martian<boost::geometry::degree>
> mars_point;
- // Declare two points
+ // Declare two points
// (Source: http://nssdc.gsfc.nasa.gov/planetary/mars_mileage_guide.html)
// (Other sources: Wiki and Google give slightly different coordinates, resulting
// in other distance, 20 km off)
@@ -87,11 +87,11 @@ int main()
// Using the Mars mean radius
// (Source: http://nssdc.gsfc.nasa.gov/planetary/factsheet/marsfact.html)
- std::cout << "Distance between Viking1 and Pathfinder landing sites: "
+ std::cout << "Distance between Viking1 and Pathfinder landing sites: "
<< d * 3389.5 << " km" << std::endl;
// We would get 832.616 here, same order as the 835 (rounded on 5 km) listed
- // on the mentioned site
+ // on the mentioned site
#ifdef OPTIONALLY_ELLIPSOIDAL
// Optionally the distance can be calculated more accurate by an Ellipsoidal approach,
diff --git a/libs/geometry/example/c11_custom_cs_transform_example.cpp b/libs/geometry/example/c11_custom_cs_transform_example.cpp
index 38a3f012a0..84c94eb064 100644
--- a/libs/geometry/example/c11_custom_cs_transform_example.cpp
+++ b/libs/geometry/example/c11_custom_cs_transform_example.cpp
@@ -30,11 +30,11 @@ template<> struct cs_tag<cart_shifted5> { typedef cartesian_tag type; };
}}} // namespaces
-// 3: sample implementation of a shift
+// 3: sample implementation of a shift
// to convert coordinate system "cart" to "cart_shirted5"
-template <typename P1, typename P2>
struct shift
{
+ template <typename P1, typename P2>
inline bool apply(P1 const& p1, P2& p2) const
{
namespace bg = boost::geometry;
@@ -46,22 +46,22 @@ struct shift
// 4: register the default strategy to transform any cart point to any cart_shifted5 point
-namespace boost { namespace geometry { namespace strategy { namespace transform { namespace services
+namespace boost { namespace geometry { namespace strategy { namespace transform { namespace services
{
template <typename P1, typename P2>
struct default_strategy<cartesian_tag, cartesian_tag, cart, cart_shifted5, 2, 2, P1, P2>
{
- typedef shift<P1, P2> type;
+ typedef shift type;
};
}}}}} // namespaces
// 5: implement a distance strategy between the two different ones
-template <typename P1, typename P2>
struct shift_and_calc_distance
{
+ template <typename P1, typename P2>
inline double apply(P1 const& p1, P2 const& p2) const
{
P2 p1_shifted;
@@ -75,16 +75,16 @@ typedef boost::geometry::model::point<double, 2, cart> point1;
typedef boost::geometry::model::point<double, 2, cart_shifted5> point2;
// 7: register the distance strategy
-namespace boost { namespace geometry { namespace strategy { namespace distance { namespace services
+namespace boost { namespace geometry { namespace strategy { namespace distance { namespace services
{
- template <typename Point1, typename Point2>
- struct tag<shift_and_calc_distance<Point1, Point2> >
+ template <>
+ struct tag<shift_and_calc_distance>
{
typedef strategy_tag_distance_point_point type;
};
-
- template <typename Point1, typename Point2>
- struct return_type<shift_and_calc_distance<Point1, Point2> >
+
+ template <typename P1, typename P2>
+ struct return_type<shift_and_calc_distance, P1, P2>
{
typedef double type;
};
@@ -92,7 +92,7 @@ namespace boost { namespace geometry { namespace strategy { namespace distance {
template <>
struct default_strategy<point_tag, point1, point2, cartesian_tag, cartesian_tag>
{
- typedef shift_and_calc_distance<point1, point2> type;
+ typedef shift_and_calc_distance type;
};
@@ -103,27 +103,27 @@ namespace boost { namespace geometry { namespace strategy { namespace distance {
int main()
{
point1 p1_a(0, 0), p1_b(5, 5);
- point2 p2_a(2, 2), p2_b(6, 6);
+ point2 p2_a(2, 2), p2_b(6, 6);
// Distances run for points on the same coordinate system.
// This is possible by default because they are cartesian coordinate systems.
- double d1 = boost::geometry::distance(p1_a, p1_b);
- double d2 = boost::geometry::distance(p2_a, p2_b);
+ double d1 = boost::geometry::distance(p1_a, p1_b);
+ double d2 = boost::geometry::distance(p2_a, p2_b);
std::cout << d1 << " " << d2 << std::endl;
// Transform from a to b:
boost::geometry::model::point<double, 2, cart_shifted5> p1_shifted;
- boost::geometry::transform(p1_a, p1_shifted);
+ boost::geometry::transform(p1_a, p1_shifted);
// Of course this can be calculated now, same CS
- double d3 = boost::geometry::distance(p1_shifted, p2_a);
+ double d3 = boost::geometry::distance(p1_shifted, p2_a);
- // Calculate distance between them. Note that inside distance the
+ // Calculate distance between them. Note that inside distance the
// transformation is called.
- double d4 = boost::geometry::distance(p1_a, p2_a);
+ double d4 = boost::geometry::distance(p1_a, p2_a);
// The result should be the same.
std::cout << d3 << " " << d4 << std::endl;
diff --git a/libs/geometry/example/ml01_multipolygon_simplify.cpp b/libs/geometry/example/ml01_multipolygon_simplify.cpp
index 71933db353..f9b329371c 100644
--- a/libs/geometry/example/ml01_multipolygon_simplify.cpp
+++ b/libs/geometry/example/ml01_multipolygon_simplify.cpp
@@ -14,7 +14,7 @@
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/ring.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
#include <boost/foreach.hpp>
int main()
diff --git a/libs/geometry/example/ml01_multipolygon_simplify.vcproj b/libs/geometry/example/ml01_multipolygon_simplify.vcproj
deleted file mode 100644
index fe5492da9a..0000000000
--- a/libs/geometry/example/ml01_multipolygon_simplify.vcproj
+++ /dev/null
@@ -1,171 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="ml01_multipolygon_simplify"
- ProjectGUID="{E7BFC111-F0E5-420F-869C-1FC3212270B5}"
- RootNamespace="ml01_multipolygon_simplify"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\ml01_multipolygon_simplify"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- RuntimeLibrary="1"
- DisableLanguageExtensions="false"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\ml01_multipolygon_simplify"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\ml01_multipolygon_simplify.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/example/ml02_distance_strategy.cpp b/libs/geometry/example/ml02_distance_strategy.cpp
index 8506339e46..1e2989016b 100644
--- a/libs/geometry/example/ml02_distance_strategy.cpp
+++ b/libs/geometry/example/ml02_distance_strategy.cpp
@@ -1,36 +1,36 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
-
-// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
-
-// 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)
-//
-// Multipolygon DP simplification example from the mailing list discussion
-// about the DP algorithm issue:
-// http://lists.osgeo.org/pipermail/ggl/2011-September/001533.html
-
-#include <boost/geometry.hpp>
-#include <boost/geometry/strategies/cartesian/distance_pythagoras.hpp>
-#include <boost/geometry/geometries/point_xy.hpp>
-using namespace boost::geometry;
-
-int main()
-{
- typedef model::d2::point_xy<double> point_xy;
-
- point_xy p1(0.0, 0.0);
- point_xy p2(5.0, 0.0);
-
- // 1) This is direct call to Pythagoras algo
- typedef strategy::distance::pythagoras<point_xy, point_xy, double> strategy1_type;
- strategy1_type strategy1;
- strategy1_type ::calculation_type d1 = strategy1.apply(p1, p2);
-
- // 2) This is what is effectively called by simplify
- typedef strategy::distance::comparable::pythagoras<point_xy, point_xy, double> strategy2_type;
- strategy2_type strategy2;
- strategy2_type::calculation_type d2 = strategy2.apply(p1, p2);
-
- return 0;
-}
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+
+// 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)
+//
+// Multipolygon DP simplification example from the mailing list discussion
+// about the DP algorithm issue:
+// http://lists.osgeo.org/pipermail/ggl/2011-September/001533.html
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/strategies/cartesian/distance_pythagoras.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+using namespace boost::geometry;
+
+int main()
+{
+ typedef model::d2::point_xy<double> point_xy;
+
+ point_xy p1(0.0, 0.0);
+ point_xy p2(5.0, 0.0);
+
+ // 1) This is direct call to Pythagoras algo
+ typedef strategy::distance::pythagoras<point_xy, point_xy, double> strategy1_type;
+ strategy1_type strategy1;
+ strategy1_type ::calculation_type d1 = strategy1.apply(p1, p2);
+
+ // 2) This is what is effectively called by simplify
+ typedef strategy::distance::comparable::pythagoras<point_xy, point_xy, double> strategy2_type;
+ strategy2_type strategy2;
+ strategy2_type::calculation_type d2 = strategy2.apply(p1, p2);
+
+ return 0;
+}
diff --git a/libs/geometry/example/ml02_distance_strategy.vcproj b/libs/geometry/example/ml02_distance_strategy.vcproj
deleted file mode 100644
index 0b04ecfac0..0000000000
--- a/libs/geometry/example/ml02_distance_strategy.vcproj
+++ /dev/null
@@ -1,171 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="ml02_distance_strategy"
- ProjectGUID="{E7BFC111-F0E5-420F-869C-1FC3212270B5}"
- RootNamespace="ml02_distance_strategy"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\ml02_distance_strategy"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- RuntimeLibrary="1"
- DisableLanguageExtensions="false"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\ml02_distance_strategy"
- ConfigurationType="1"
- InheritedPropertySheets=".\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\ml02_distance_strategy.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/example/with_external_libs/gd.vsprops b/libs/geometry/example/with_external_libs/gd.vsprops
deleted file mode 100644
index 209165c2e0..0000000000
--- a/libs/geometry/example/with_external_libs/gd.vsprops
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="gd"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(GD)&quot;"
- PreprocessorDefinitions="NONDLL"
- />
- <UserMacro
- Name="GD"
- Value="contrib/gd-2.0.35"
- />
-</VisualStudioPropertySheet>
diff --git a/libs/geometry/example/with_external_libs/postgresql.vsprops b/libs/geometry/example/with_external_libs/postgresql.vsprops
deleted file mode 100644
index 6a95d3e1c0..0000000000
--- a/libs/geometry/example/with_external_libs/postgresql.vsprops
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="postgresql"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(POSTGRESQL_ROOT)/include"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="libpq.lib"
- AdditionalLibraryDirectories="$(POSTGRESQL_ROOT)/lib"
- />
- <UserMacro
- Name="POSTGRESQL_ROOT"
- Value="c:\software\PostgreSQL\8.4"
- />
-</VisualStudioPropertySheet>
diff --git a/libs/geometry/example/with_external_libs/qt.vsprops b/libs/geometry/example/with_external_libs/qt.vsprops
deleted file mode 100644
index 8de8e56aca..0000000000
--- a/libs/geometry/example/with_external_libs/qt.vsprops
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="qt"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(QT)\include;$(QT)\include\QtGui;$(QT)\include\QtCore"
- PreprocessorDefinitions="QT_NO_DEBUG;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="qtmain.lib QtGui4.lib QtCore4.lib"
- AdditionalLibraryDirectories="$(QT)\lib"
- IgnoreDefaultLibraryNames="msvcrt.lib"
- />
- <UserMacro
- Name="QT"
- Value="c:\software\libraries\Qt\4.7.1"
- />
-</VisualStudioPropertySheet>
diff --git a/libs/geometry/example/with_external_libs/shapelib.vsprops b/libs/geometry/example/with_external_libs/shapelib.vsprops
deleted file mode 100644
index fcd5795595..0000000000
--- a/libs/geometry/example/with_external_libs/shapelib.vsprops
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="shapelib"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(SHAPELIB)"
- />
- <UserMacro
- Name="SHAPELIB"
- Value=".\contrib\shapelib-1.3.0b2"
- />
-</VisualStudioPropertySheet>
diff --git a/libs/geometry/example/with_external_libs/soci.vsprops b/libs/geometry/example/with_external_libs/soci.vsprops
deleted file mode 100644
index c397b12416..0000000000
--- a/libs/geometry/example/with_external_libs/soci.vsprops
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="soci"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(SOCI_ROOT)/src/core&quot;;&quot;$(SOCI_ROOT)/src/backends/postgresql&quot;"
- PreprocessorDefinitions="SOCI_USE_BOOST;SOCI_LIB_PREFIX=\&quot;libsoci_\&quot;;SOCI_LIB_SUFFIX=\&quot;.so\&quot;"
- />
- <UserMacro
- Name="SOCI_ROOT"
- Value="contrib/soci-3.1.0"
- />
-</VisualStudioPropertySheet>
diff --git a/libs/geometry/example/with_external_libs/wxwidgets.vsprops b/libs/geometry/example/with_external_libs/wxwidgets.vsprops
deleted file mode 100644
index a5a0836fc8..0000000000
--- a/libs/geometry/example/with_external_libs/wxwidgets.vsprops
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="wxwidgets"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(WXWIDGETS)\lib\vc_lib\mswd;$(WXWIDGETS)\include;$(WXWIDGETS)\include\msvc;"
- PreprocessorDefinitions="NOPCH;__WXMSW__"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories="$(WXWIDGETS)\lib\vc_lib"
- />
- <UserMacro
- Name="WXWIDGETS"
- Value="c:\software\libraries\wxWidgets-2.8.10"
- />
-</VisualStudioPropertySheet>
diff --git a/libs/geometry/example/with_external_libs/x01_qt_example.sln b/libs/geometry/example/with_external_libs/x01_qt_example.sln
deleted file mode 100644
index 6af3e93044..0000000000
--- a/libs/geometry/example/with_external_libs/x01_qt_example.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual C++ Express 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x01_qt_example", "x01_qt_example.vcproj", "{242C6ADC-3A10-4B69-81F7-5669E0582A8B}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {242C6ADC-3A10-4B69-81F7-5669E0582A8B}.Debug|Win32.ActiveCfg = Debug|Win32
- {242C6ADC-3A10-4B69-81F7-5669E0582A8B}.Debug|Win32.Build.0 = Debug|Win32
- {242C6ADC-3A10-4B69-81F7-5669E0582A8B}.Release|Win32.ActiveCfg = Release|Win32
- {242C6ADC-3A10-4B69-81F7-5669E0582A8B}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/example/with_external_libs/x01_qt_example.vcproj b/libs/geometry/example/with_external_libs/x01_qt_example.vcproj
deleted file mode 100644
index eba736e3f9..0000000000
--- a/libs/geometry/example/with_external_libs/x01_qt_example.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="x01_qt_example"
- ProjectGUID="{242C6ADC-3A10-4B69-81F7-5669E0582A8B}"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x01_qt_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\qt.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x01_qt_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\qt.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\x01_qt_example.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/example/with_external_libs/x02_gd_example.cpp b/libs/geometry/example/with_external_libs/x02_gd_example.cpp
index f5441d5897..dd2d8dd4ab 100644
--- a/libs/geometry/example/with_external_libs/x02_gd_example.cpp
+++ b/libs/geometry/example/with_external_libs/x02_gd_example.cpp
@@ -28,7 +28,7 @@
#include <boost/foreach.hpp>
#include <boost/geometry.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
#include <boost/geometry/extensions/gis/latlong/latlong.hpp>
#include <boost/geometry/extensions/gis/geographic/strategies/area_huiller_earth.hpp>
diff --git a/libs/geometry/example/with_external_libs/x02_gd_example.sln b/libs/geometry/example/with_external_libs/x02_gd_example.sln
deleted file mode 100644
index 1ab96a86fb..0000000000
--- a/libs/geometry/example/with_external_libs/x02_gd_example.sln
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x02_gd_example", "x02_gd_example.vcproj", "{A73F21AC-6F32-41A9-A86C-53BD4DC84B05}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {A73F21AC-6F32-41A9-A86C-53BD4DC84B05}.Debug|Win32.ActiveCfg = Debug|Win32
- {A73F21AC-6F32-41A9-A86C-53BD4DC84B05}.Debug|Win32.Build.0 = Debug|Win32
- {A73F21AC-6F32-41A9-A86C-53BD4DC84B05}.Release|Win32.ActiveCfg = Release|Win32
- {A73F21AC-6F32-41A9-A86C-53BD4DC84B05}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/example/with_external_libs/x02_gd_example.vcproj b/libs/geometry/example/with_external_libs/x02_gd_example.vcproj
deleted file mode 100644
index 20471a0a63..0000000000
--- a/libs/geometry/example/with_external_libs/x02_gd_example.vcproj
+++ /dev/null
@@ -1,236 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="x02_gd_example"
- ProjectGUID="{A73F21AC-6F32-41A9-A86C-53BD4DC84B05}"
- RootNamespace="x02_gd_example"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x02_gd_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\gd.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="../../../.."
- MinimalRebuild="true"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x02_gd_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\gd.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- WholeProgramOptimization="false"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="../../../.."
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="GD"
- >
- <File
- RelativePath="$(GD)\gd.c"
- >
- </File>
- <File
- RelativePath="$(GD)\gd_color.c"
- >
- </File>
- <File
- RelativePath="$(GD)\gd_gd.c"
- >
- </File>
- <File
- RelativePath="$(GD)\gd_gif_out.c"
- >
- </File>
- <File
- RelativePath="$(GD)\gd_io.c"
- >
- </File>
- <File
- RelativePath="$(GD)\gd_io_dp.c"
- >
- </File>
- <File
- RelativePath="$(GD)\gd_io_file.c"
- >
- </File>
- <File
- RelativePath="$(GD)\gd_io_ss.c"
- >
- </File>
- <File
- RelativePath="$(GD)\gd_security.c"
- >
- </File>
- <File
- RelativePath="$(GD)\gd_topal.c"
- >
- </File>
- <File
- RelativePath="$(GD)\gdhelpers.c"
- >
- </File>
- <File
- RelativePath="$(GD)\gdtables.c"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\x02_gd_example.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/example/with_external_libs/x03_a_soci_example.vcproj b/libs/geometry/example/with_external_libs/x03_a_soci_example.vcproj
deleted file mode 100644
index 2f6665a513..0000000000
--- a/libs/geometry/example/with_external_libs/x03_a_soci_example.vcproj
+++ /dev/null
@@ -1,744 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="x03_a_soci_example"
- ProjectGUID="{C3B3143D-F354-4036-9DA1-5975D8A4F166}"
- RootNamespace="x03_a_soci_example"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)/x03_a_soci_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\soci.vsprops;.\postgresql.vsprops"
- CharacterSet="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_ALL_NO_LIB"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x03_a_soci_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\soci.vsprops;.\postgresql.vsprops"
- CharacterSet="0"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="soci_postgresql"
- >
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\blob.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\common.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\error.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\factory.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\row-id.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\session.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\standard-into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\standard-use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\vector-into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\vector-use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="soci_core"
- >
- <File
- RelativePath="$(SOCI_ROOT)\src\core\backend-loader.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\blob.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\connection-pool.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\error.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\once-temp-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\prepare-temp-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\procedure.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\ref-counted-prepare-info.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\ref-counted-statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\row.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\rowid.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\session.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\transaction.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\values.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\x03_a_soci_example.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/example/with_external_libs/x03_b_soci_example.vcproj b/libs/geometry/example/with_external_libs/x03_b_soci_example.vcproj
deleted file mode 100644
index 35781e542b..0000000000
--- a/libs/geometry/example/with_external_libs/x03_b_soci_example.vcproj
+++ /dev/null
@@ -1,744 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="x03_b_soci_example"
- ProjectGUID="{5EFD08EE-10CB-4D3E-9907-4E9A7F3AB1C1}"
- RootNamespace="x03_b_soci_example"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)/x03_b_soci_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\soci.vsprops;.\postgresql.vsprops"
- CharacterSet="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_ALL_NO_LIB"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x03_b_soci_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\soci.vsprops;.\postgresql.vsprops"
- CharacterSet="0"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="soci_postgresql"
- >
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\blob.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\common.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\error.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\factory.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\row-id.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\session.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\standard-into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\standard-use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\vector-into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\vector-use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="soci_core"
- >
- <File
- RelativePath="$(SOCI_ROOT)\src\core\backend-loader.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\blob.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\connection-pool.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\error.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\once-temp-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\prepare-temp-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\procedure.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\ref-counted-prepare-info.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\ref-counted-statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\row.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\rowid.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\session.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\transaction.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\values.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\x03_b_soci_example.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/example/with_external_libs/x03_c_soci_example.vcproj b/libs/geometry/example/with_external_libs/x03_c_soci_example.vcproj
deleted file mode 100644
index 05a4ae022d..0000000000
--- a/libs/geometry/example/with_external_libs/x03_c_soci_example.vcproj
+++ /dev/null
@@ -1,744 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="x03_c_soci_example"
- ProjectGUID="{5EFD08FE-10CB-4D3E-9907-4E9A2F3AB1C1}"
- RootNamespace="x03_c_soci_example"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)/x03_c_soci_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\soci.vsprops;.\postgresql.vsprops"
- CharacterSet="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_ALL_NO_LIB"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x03_c_soci_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\soci.vsprops;.\postgresql.vsprops"
- CharacterSet="0"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="soci_postgresql"
- >
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\blob.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\common.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\error.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\factory.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\row-id.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\session.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\standard-into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\standard-use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\vector-into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\vector-use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="soci_core"
- >
- <File
- RelativePath="$(SOCI_ROOT)\src\core\backend-loader.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\blob.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\connection-pool.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\error.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\once-temp-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\prepare-temp-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\procedure.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\ref-counted-prepare-info.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\ref-counted-statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\row.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\rowid.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\session.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\transaction.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\values.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\x03_c_soci_example.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/example/with_external_libs/x03_d_soci_example.vcproj b/libs/geometry/example/with_external_libs/x03_d_soci_example.vcproj
deleted file mode 100644
index d699d51860..0000000000
--- a/libs/geometry/example/with_external_libs/x03_d_soci_example.vcproj
+++ /dev/null
@@ -1,744 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="x03_d_soci_example"
- ProjectGUID="{5EFD08FE-10CB-4D3E-9917-4E9A2F3AB1C1}"
- RootNamespace="x03_d_soci_example"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)/x03_d_soci_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\soci.vsprops;.\postgresql.vsprops"
- CharacterSet="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_ALL_NO_LIB"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x03_d_soci_example"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\soci.vsprops;.\postgresql.vsprops"
- CharacterSet="0"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="soci_postgresql"
- >
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\blob.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\common.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\error.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\factory.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\row-id.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\session.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\standard-into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\standard-use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\vector-into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\backends\postgresql\vector-use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\pgsql\"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="soci_core"
- >
- <File
- RelativePath="$(SOCI_ROOT)\src\core\backend-loader.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\blob.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\connection-pool.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\error.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\into-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\once-temp-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\prepare-temp-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\procedure.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\ref-counted-prepare-info.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\ref-counted-statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\row.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\rowid.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\session.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\statement.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\transaction.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\use-type.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="$(SOCI_ROOT)\src\core\values.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\core\"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath=".\x03_d_soci_example.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/example/with_external_libs/x03_soci_examples.sln b/libs/geometry/example/with_external_libs/x03_soci_examples.sln
deleted file mode 100644
index 49ea1a3bea..0000000000
--- a/libs/geometry/example/with_external_libs/x03_soci_examples.sln
+++ /dev/null
@@ -1,37 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x03_a_soci_example", "x03_a_soci_example.vcproj", "{C3B3143D-F354-4036-9DA1-5975D8A4F166}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x03_b_soci_example", "x03_b_soci_example.vcproj", "{5EFD08EE-10CB-4D3E-9907-4E9A7F3AB1C1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x03_c_soci_example", "x03_c_soci_example.vcproj", "{5EFD08FE-10CB-4D3E-9907-4E9A2F3AB1C1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x03_d_soci_example", "x03_d_soci_example.vcproj", "{5EFD08FE-10CB-4D3E-9917-4E9A2F3AB1C1}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C3B3143D-F354-4036-9DA1-5975D8A4F166}.Debug|Win32.ActiveCfg = Debug|Win32
- {C3B3143D-F354-4036-9DA1-5975D8A4F166}.Debug|Win32.Build.0 = Debug|Win32
- {C3B3143D-F354-4036-9DA1-5975D8A4F166}.Release|Win32.ActiveCfg = Release|Win32
- {C3B3143D-F354-4036-9DA1-5975D8A4F166}.Release|Win32.Build.0 = Release|Win32
- {5EFD08EE-10CB-4D3E-9907-4E9A7F3AB1C1}.Debug|Win32.ActiveCfg = Debug|Win32
- {5EFD08EE-10CB-4D3E-9907-4E9A7F3AB1C1}.Debug|Win32.Build.0 = Debug|Win32
- {5EFD08EE-10CB-4D3E-9907-4E9A7F3AB1C1}.Release|Win32.ActiveCfg = Release|Win32
- {5EFD08EE-10CB-4D3E-9907-4E9A7F3AB1C1}.Release|Win32.Build.0 = Release|Win32
- {5EFD08FE-10CB-4D3E-9907-4E9A2F3AB1C1}.Debug|Win32.ActiveCfg = Debug|Win32
- {5EFD08FE-10CB-4D3E-9907-4E9A2F3AB1C1}.Debug|Win32.Build.0 = Debug|Win32
- {5EFD08FE-10CB-4D3E-9907-4E9A2F3AB1C1}.Release|Win32.ActiveCfg = Release|Win32
- {5EFD08FE-10CB-4D3E-9907-4E9A2F3AB1C1}.Release|Win32.Build.0 = Release|Win32
- {5EFD08FE-10CB-4D3E-9917-4E9A2F3AB1C1}.Debug|Win32.ActiveCfg = Debug|Win32
- {5EFD08FE-10CB-4D3E-9917-4E9A2F3AB1C1}.Debug|Win32.Build.0 = Debug|Win32
- {5EFD08FE-10CB-4D3E-9917-4E9A2F3AB1C1}.Release|Win32.ActiveCfg = Release|Win32
- {5EFD08FE-10CB-4D3E-9917-4E9A2F3AB1C1}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.cpp b/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.cpp
index f507f4cb44..f8b9c27c4e 100644
--- a/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.cpp
+++ b/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.cpp
@@ -20,7 +20,7 @@
#include <boost/geometry/geometry.hpp>
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/multi/geometries/multi_geometries.hpp>
+#include <boost/geometry/geometries/multi_geometries.hpp>
#include <boost/geometry/geometries/register/point.hpp>
#include <boost/geometry/geometries/register/ring.hpp>
@@ -159,13 +159,13 @@ private:
typedef boost::geometry::strategy::transform::map_transformer
<
- point_2d, wxPoint,
+ double, 2, 2,
true, true
> map_transformer_type;
typedef boost::geometry::strategy::transform::inverse_transformer
<
- wxPoint, point_2d
+ double, 2, 2
> inverse_transformer_type;
boost::shared_ptr<map_transformer_type> m_map_transformer;
@@ -357,15 +357,15 @@ void HelloWorldCanvas::DrawCountry(wxDC& dc, country_type const& country)
BOOST_FOREACH(bg::model::polygon<point_2d> const& poly, country)
{
- // Use only outer, holes are (for the moment) ignored. This would need
+ // Use only exterior ring, holes are (for the moment) ignored. This would need
// a holey-polygon compatible wx object
- std::size_t n = boost::size(poly.outer());
+ std::size_t n = boost::size(bg::exterior_ring(poly));
boost::scoped_array<wxPoint> points(new wxPoint[n]);
wxPointPointerPair pair = std::make_pair(points.get(), points.get() + n);
- bg::transform(poly.outer(), pair, *m_map_transformer);
+ bg::transform(bg::exterior_ring(poly), pair, *m_map_transformer);
dc.DrawPolygon(n, points.get());
}
diff --git a/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.sln b/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.sln
deleted file mode 100644
index 9761bba39b..0000000000
--- a/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual C++ Express 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x04_wxwidgets_world_mapper", "x04_wxwidgets_world_mapper.vcproj", "{DD1D469B-29A8-4873-A596-9CCCB24F54FA}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {DD1D469B-29A8-4873-A596-9CCCB24F54FA}.Debug|Win32.ActiveCfg = Debug|Win32
- {DD1D469B-29A8-4873-A596-9CCCB24F54FA}.Debug|Win32.Build.0 = Debug|Win32
- {DD1D469B-29A8-4873-A596-9CCCB24F54FA}.Release|Win32.ActiveCfg = Release|Win32
- {DD1D469B-29A8-4873-A596-9CCCB24F54FA}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.vcproj b/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.vcproj
deleted file mode 100644
index 3d4ed9ab1d..0000000000
--- a/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper.vcproj
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="x04_wxwidgets_world_mapper"
- ProjectGUID="{DD1D469B-29A8-4873-A596-9CCCB24F54FA}"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x04_wxwidgets_world_mapper"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\wxwidgets.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;__WXDEBUG__"
- RuntimeLibrary="3"
- RuntimeTypeInfo="true"
- WarningLevel="3"
- SuppressStartupBanner="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG,__WXMSW__,__WXDEBUG__,_WINDOWS,NOPCH"
- Culture="1033"
- AdditionalIncludeDirectories=".\..\..\lib\vc_lib\mswd;.\..\..\include;.;.\..\..\samples"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="wxmsw28d_core.lib wxbase28d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib odbc32.lib gdiplus.lib"
- SuppressStartupBanner="true"
- IgnoreDefaultLibraryNames=""
- GenerateDebugInformation="true"
- SubSystem="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x04_wxwidgets_world_mapper"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\wxwidgets.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/EHsc "
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_WINDOWS"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- RuntimeTypeInfo="true"
- PrecompiledHeaderFile=""
- WarningLevel="3"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="__WXMSW__,_WINDOWS,NOPCH"
- Culture="1033"
- AdditionalIncludeDirectories=".\..\..\lib\vc_lib\msw;.\..\..\include;.;.\..\..\samples"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="wxmsw28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib odbc32.lib gdiplus.lib"
- SuppressStartupBanner="true"
- AdditionalLibraryDirectories=""
- ProgramDatabaseFile=""
- SubSystem="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="x04_wxwidgets_world_mapper.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath=".\x04_wxwidgets_world_mapper_readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper_readme.txt b/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper_readme.txt
index ed3df6cb0f..cba0c8eebb 100644
--- a/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper_readme.txt
+++ b/libs/geometry/example/with_external_libs/x04_wxwidgets_world_mapper_readme.txt
@@ -16,15 +16,7 @@ the mouse, and indicating position of the mouse in latitude/longitude and in pix
To compile this program:
Install wxWidgets (if not done before)
-Install Boost (if not done before)
-
-Using MSVC:
- - edit the file wxwidgets.vsprops
- - set the UserMacro WXWIDGETS to point to your wxWidgets distribution
- - edit the file boost.vsprops
- - set the UserMacro BOOST_ROOT to point to your Boost distribution
- - alternatively you can include Boost and/or wxWidgets in your standard include path
-
+
Using Linux/gcc
- check if installation is OK, http://wiki.wxwidgets.org/Installing_and_configuring_under_Ubuntu
- compile using e.g. gcc -o x04_wxwidgets -I../../../.. x04_wxwidgets_world_mapper.cpp `wx-config --cxxflags` `wx-config --libs`
diff --git a/libs/geometry/example/with_external_libs/x05_shapelib_example.sln b/libs/geometry/example/with_external_libs/x05_shapelib_example.sln
deleted file mode 100644
index 48693bb6a7..0000000000
--- a/libs/geometry/example/with_external_libs/x05_shapelib_example.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x05_shapelib_example", "x05_shapelib_example.vcproj", "{92ECE1AC-1A5D-4554-A8AD-690AC266210D}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {92ECE1AC-1A5D-4554-A8AD-690AC266210D}.Debug|Win32.ActiveCfg = Debug|Win32
- {92ECE1AC-1A5D-4554-A8AD-690AC266210D}.Debug|Win32.Build.0 = Debug|Win32
- {92ECE1AC-1A5D-4554-A8AD-690AC266210D}.Release|Win32.ActiveCfg = Release|Win32
- {92ECE1AC-1A5D-4554-A8AD-690AC266210D}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/example/with_external_libs/x05_shapelib_example.vcproj b/libs/geometry/example/with_external_libs/x05_shapelib_example.vcproj
deleted file mode 100644
index d9c6a1d3f6..0000000000
--- a/libs/geometry/example/with_external_libs/x05_shapelib_example.vcproj
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="x05_shapelib_example"
- ProjectGUID="{92ECE1AC-1A5D-4554-A8AD-690AC266210D}"
- RootNamespace="shapelib"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\shapelib"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\shapelib.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib"
- LinkIncremental="2"
- AdditionalLibraryDirectories="$(OSGEO4W_HOME)/lib"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\shapelib"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\shapelib.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- WholeProgramOptimization="false"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="kernel32.lib"
- LinkIncremental="1"
- AdditionalLibraryDirectories="$(OSGEO4W_HOME)/lib"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="SHAPELIB"
- >
- <File
- RelativePath="$(SHAPELIB)\dbfopen.c"
- >
- </File>
- <File
- RelativePath="$(SHAPELIB)\safileio.c"
- >
- </File>
- <File
- RelativePath="$(SHAPELIB)\shpopen.c"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\x05_shapelib_example.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/example/with_external_libs/x06_qt_world_mapper.cpp b/libs/geometry/example/with_external_libs/x06_qt_world_mapper.cpp
index 8f0cf34773..67bd9067ce 100644
--- a/libs/geometry/example/with_external_libs/x06_qt_world_mapper.cpp
+++ b/libs/geometry/example/with_external_libs/x06_qt_world_mapper.cpp
@@ -25,7 +25,7 @@
#include <boost/geometry/geometry.hpp>
#include <boost/geometry/geometries/geometries.hpp>
-#include <boost/geometry/multi/geometries/multi_geometries.hpp>
+#include <boost/geometry/geometries/multi_geometries.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/register/point.hpp>
@@ -91,7 +91,7 @@ class WorldMapper : public QWidget
private:
typedef boost::geometry::strategy::transform::map_transformer
<
- point_2d, QPointF,
+ double, 2, 2,
true, true
> map_transformer_type;
diff --git a/libs/geometry/example/with_external_libs/x06_qt_world_mapper.sln b/libs/geometry/example/with_external_libs/x06_qt_world_mapper.sln
deleted file mode 100644
index 32cfaf4ad5..0000000000
--- a/libs/geometry/example/with_external_libs/x06_qt_world_mapper.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual C++ Express 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "x06_qt_world_mapper", "x06_qt_world_mapper.vcproj", "{242C6ADC-3A10-4B69-81F7-5669E0582A8B}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {242C6ADC-3A10-4B69-81F7-5669E0582A8B}.Debug|Win32.ActiveCfg = Debug|Win32
- {242C6ADC-3A10-4B69-81F7-5669E0582A8B}.Debug|Win32.Build.0 = Debug|Win32
- {242C6ADC-3A10-4B69-81F7-5669E0582A8B}.Release|Win32.ActiveCfg = Release|Win32
- {242C6ADC-3A10-4B69-81F7-5669E0582A8B}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/example/with_external_libs/x06_qt_world_mapper.vcproj b/libs/geometry/example/with_external_libs/x06_qt_world_mapper.vcproj
deleted file mode 100644
index efee2124e7..0000000000
--- a/libs/geometry/example/with_external_libs/x06_qt_world_mapper.vcproj
+++ /dev/null
@@ -1,180 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="x06_qt_world_mapper"
- ProjectGUID="{242C6ADC-3A10-4B69-81F7-5669E0582A8B}"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x06_qt_world_mapper"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\qt.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\x06_qt_world_mapper"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;.\qt.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\x06_qt_world_mapper.cpp"
- >
- </File>
- <File
- RelativePath=".\x06_qt_world_mapper_readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/example/with_external_libs/x06_qt_world_mapper_readme.txt b/libs/geometry/example/with_external_libs/x06_qt_world_mapper_readme.txt
index 8c67025e25..131bcca211 100644
--- a/libs/geometry/example/with_external_libs/x06_qt_world_mapper_readme.txt
+++ b/libs/geometry/example/with_external_libs/x06_qt_world_mapper_readme.txt
@@ -12,14 +12,6 @@ It will show a basic Qt Widget, displaying world countries
To compile this program:
Install Qt (if not done before)
-Install Boost (if not done before)
-
-Using MSVC:
- - edit the file qt.vsprops
- - set the UserMacro QT to point to your Qt distribution
- - edit the file boost.vsprops
- - set the UserMacro BOOST_ROOT to point to your Boost distribution
- - alternatively you can include Boost and/or Qt in your standard include path
Using Linux/gcc
- install Qt with sudo apt-get install libqt4-dev
diff --git a/libs/geometry/index/Jamfile.v2 b/libs/geometry/index/Jamfile.v2
new file mode 100644
index 0000000000..3675b7f06a
--- /dev/null
+++ b/libs/geometry/index/Jamfile.v2
@@ -0,0 +1,18 @@
+# Boost.Geometry (aka GGL, Generic Geometry Library)
+#
+# Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
+# Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
+# Copyright (c) 2009-2013 Mateusz Loskot, London, UK.
+#
+# 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)
+
+project boost-geometry-index
+ :
+ requirements
+ <toolset>msvc:<asynch-exceptions>on
+ ;
+
+build-project test ;
+build-project example ;
diff --git a/libs/geometry/index/example/3d_benchmark.cpp b/libs/geometry/index/example/3d_benchmark.cpp
new file mode 100644
index 0000000000..251817681b
--- /dev/null
+++ b/libs/geometry/index/example/3d_benchmark.cpp
@@ -0,0 +1,161 @@
+// Boost.Geometry Index
+// Additional tests
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <iostream>
+#include <boost/geometry/index/rtree.hpp>
+
+#include <boost/chrono.hpp>
+#include <boost/foreach.hpp>
+#include <boost/random.hpp>
+
+int main()
+{
+ namespace bg = boost::geometry;
+ namespace bgi = bg::index;
+ typedef boost::chrono::thread_clock clock_t;
+ typedef boost::chrono::duration<float> dur_t;
+
+ size_t values_count = 500000;
+ size_t queries_count = 200000;
+
+ std::vector< boost::tuple<float, float, float> > coords;
+
+ //randomize values
+ {
+ boost::mt19937 rng;
+ //rng.seed(static_cast<unsigned int>(std::time(0)));
+ float max_val = static_cast<float>(values_count / 2);
+ boost::uniform_real<float> range(-max_val, max_val);
+ boost::variate_generator<boost::mt19937&, boost::uniform_real<float> > rnd(rng, range);
+
+ coords.reserve(values_count);
+
+ std::cout << "randomizing data\n";
+ for ( size_t i = 0 ; i < values_count ; ++i )
+ {
+ coords.push_back(boost::make_tuple(rnd(), rnd(), rnd()));
+ }
+ std::cout << "randomized\n";
+ }
+
+ typedef bg::model::point<float, 3, bg::cs::cartesian> P;
+ typedef bg::model::box<P> B;
+ //typedef bgi::rtree<B, bgi::linear<32, 8> > RT;
+ //typedef bgi::rtree<B, bgi::quadratic<32, 8> > RT;
+ typedef bgi::rtree<B, bgi::rstar<8, 3> > RT;
+
+ std::cout << "sizeof rtree: " << sizeof(RT) << std::endl;
+
+ for (;;)
+ {
+ RT t;
+
+ // inserting test
+ {
+ clock_t::time_point start = clock_t::now();
+ for (size_t i = 0 ; i < values_count ; ++i )
+ {
+ float x = boost::get<0>(coords[i]);
+ float y = boost::get<1>(coords[i]);
+ float z = boost::get<2>(coords[i]);
+ B b(P(x - 0.5f, y - 0.5f, z - 0.5f), P(x + 0.5f, y + 0.5f, z + 0.5f));
+
+ t.insert(b);
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - insert " << values_count << '\n';
+ }
+
+ std::vector<B> result;
+ result.reserve(100);
+ B result_one;
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = boost::get<0>(coords[i]);
+ float y = boost::get<1>(coords[i]);
+ float z = boost::get<2>(coords[i]);
+ result.clear();
+ t.query(bgi::intersects(B(P(x - 10, y - 10, z - 10), P(x + 10, y + 10, z + 10))), std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(B) " << queries_count << " found " << temp << '\n';
+ }
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count / 2 ; ++i )
+ {
+ float x1 = boost::get<0>(coords[i]);
+ float y1 = boost::get<1>(coords[i]);
+ float z1 = boost::get<2>(coords[i]);
+ float x2 = boost::get<0>(coords[i+1]);
+ float y2 = boost::get<1>(coords[i+1]);
+ float z2 = boost::get<2>(coords[i+1]);
+ float x3 = boost::get<0>(coords[i+2]);
+ float y3 = boost::get<1>(coords[i+2]);
+ float z3 = boost::get<2>(coords[i+2]);
+ result.clear();
+ t.query(
+ bgi::intersects(B(P(x1 - 10, y1 - 10, z1 - 10), P(x1 + 10, y1 + 10, z1 + 10)))
+ &&
+ !bgi::within(B(P(x2 - 10, y2 - 10, z2 - 10), P(x2 + 10, y2 + 10, z2 + 10)))
+ &&
+ !bgi::overlaps(B(P(x3 - 10, y3 - 10, z3 - 10), P(x3 + 10, y3 + 10, z3 + 10)))
+ ,
+ std::back_inserter(result)
+ );
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(i && !w && !o) " << queries_count << " found " << temp << '\n';
+ }
+
+ result.clear();
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count / 10 ; ++i )
+ {
+ float x = boost::get<0>(coords[i]) - 100;
+ float y = boost::get<1>(coords[i]) - 100;
+ float z = boost::get<2>(coords[i]) - 100;
+ result.clear();
+ temp += t.query(bgi::nearest(P(x, y, z), 5), std::back_inserter(result));
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(nearest(P, 5)) " << (queries_count / 10) << " found " << temp << '\n';
+ }
+
+ {
+ clock_t::time_point start = clock_t::now();
+ for (size_t i = 0 ; i < values_count / 10 ; ++i )
+ {
+ float x = boost::get<0>(coords[i]);
+ float y = boost::get<1>(coords[i]);
+ float z = boost::get<2>(coords[i]);
+ B b(P(x - 0.5f, y - 0.5f, z - 0.5f), P(x + 0.5f, y + 0.5f, z + 0.5f));
+
+ t.remove(b);
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - remove " << values_count / 10 << '\n';
+ }
+
+ std::cout << "------------------------------------------------\n";
+ }
+
+ return 0;
+}
diff --git a/libs/geometry/index/example/Jamfile.v2 b/libs/geometry/index/example/Jamfile.v2
new file mode 100644
index 0000000000..5cfa81a0c8
--- /dev/null
+++ b/libs/geometry/index/example/Jamfile.v2
@@ -0,0 +1,55 @@
+# Boost.Geometry (aka GGL, Generic Geometry Library)
+#
+# Copyright (c) 2013 Mateusz Loskot, London, UK.
+#
+# 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)
+
+# Usage:
+# Build as optimised for proper benchmarking:
+# b2 variant=release threading=multi
+# b2 variant=release threading=multi link=static runtime-link=static
+#
+# Set GLUT_ROOT to installation prefix of GLUT or, for Windows,
+# it may be all-in-one directory with GLUT header and binaries.
+
+import os ;
+
+project boost-geometry-index-example
+ : requirements
+ <implicit-dependency>/boost//headers
+ ;
+
+local GLUT_ROOT = [ os.environ GLUT_ROOT ] ;
+if $(GLUT_ROOT)
+{
+ local glut_name = glut ;
+ if [ os.name ] = NT
+ {
+ glut_name = glut32 ;
+ }
+
+ lib glut
+ :
+ :
+ <name>$(glut_name)
+ <search>$(GLUT_ROOT)
+ <search>$(GLUT_ROOT)/lib
+ :
+ :
+ <include>$(GLUT_ROOT)
+ <include>$(GLUT_ROOT)/include
+ ;
+}
+
+exe random_test : random_test.cpp ;
+link serialize.cpp /boost//serialization : ;
+link benchmark.cpp /boost//chrono : <threading>multi ;
+link benchmark2.cpp /boost//chrono : <threading>multi ;
+link benchmark3.cpp /boost//chrono : <threading>multi ;
+link benchmark_experimental.cpp /boost//chrono : <threading>multi ;
+if $(GLUT_ROOT)
+{
+ link glut_vis.cpp glut ;
+}
diff --git a/libs/geometry/index/example/benchmark.cpp b/libs/geometry/index/example/benchmark.cpp
new file mode 100644
index 0000000000..ba2a1dec94
--- /dev/null
+++ b/libs/geometry/index/example/benchmark.cpp
@@ -0,0 +1,158 @@
+// Boost.Geometry Index
+// Additional tests
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <iostream>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/index/rtree.hpp>
+
+#include <boost/chrono.hpp>
+#include <boost/foreach.hpp>
+#include <boost/random.hpp>
+
+int main()
+{
+ namespace bg = boost::geometry;
+ namespace bgi = bg::index;
+ typedef boost::chrono::thread_clock clock_t;
+ typedef boost::chrono::duration<float> dur_t;
+
+ size_t values_count = 1000000;
+ size_t queries_count = 100000;
+ size_t nearest_queries_count = 10000;
+ unsigned neighbours_count = 10;
+
+ std::vector< std::pair<float, float> > coords;
+
+ //randomize values
+ {
+ boost::mt19937 rng;
+ //rng.seed(static_cast<unsigned int>(std::time(0)));
+ float max_val = static_cast<float>(values_count / 2);
+ boost::uniform_real<float> range(-max_val, max_val);
+ boost::variate_generator<boost::mt19937&, boost::uniform_real<float> > rnd(rng, range);
+
+ coords.reserve(values_count);
+
+ std::cout << "randomizing data\n";
+ for ( size_t i = 0 ; i < values_count ; ++i )
+ {
+ coords.push_back(std::make_pair(rnd(), rnd()));
+ }
+ std::cout << "randomized\n";
+ }
+
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P;
+ typedef bg::model::box<P> B;
+ typedef bgi::rtree<B, bgi::linear<16, 4> > RT;
+ //typedef bgi::rtree<B, bgi::quadratic<8, 3> > RT;
+ //typedef bgi::rtree<B, bgi::rstar<8, 3> > RT;
+
+ std::cout << "sizeof rtree: " << sizeof(RT) << std::endl;
+
+ for (;;)
+ {
+ RT t;
+
+ // inserting test
+ {
+ clock_t::time_point start = clock_t::now();
+ for (size_t i = 0 ; i < values_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ B b(P(x - 0.5f, y - 0.5f), P(x + 0.5f, y + 0.5f));
+
+ t.insert(b);
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - insert " << values_count << '\n';
+ }
+
+ std::vector<B> result;
+ result.reserve(100);
+ B result_one;
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ t.query(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10))), std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(B) " << queries_count << " found " << temp << '\n';
+ }
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count / 2 ; ++i )
+ {
+ float x1 = coords[i].first;
+ float y1 = coords[i].second;
+ float x2 = coords[i+1].first;
+ float y2 = coords[i+1].second;
+ float x3 = coords[i+2].first;
+ float y3 = coords[i+2].second;
+ result.clear();
+ t.query(
+ bgi::intersects(B(P(x1 - 10, y1 - 10), P(x1 + 10, y1 + 10)))
+ &&
+ !bgi::within(B(P(x2 - 10, y2 - 10), P(x2 + 10, y2 + 10)))
+ &&
+ !bgi::overlaps(B(P(x3 - 10, y3 - 10), P(x3 + 10, y3 + 10)))
+ ,
+ std::back_inserter(result)
+ );
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(i && !w && !o) " << queries_count << " found " << temp << '\n';
+ }
+
+ result.clear();
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < nearest_queries_count ; ++i )
+ {
+ float x = coords[i].first + 100;
+ float y = coords[i].second + 100;
+ result.clear();
+ temp += t.query(bgi::nearest(P(x, y), neighbours_count), std::back_inserter(result));
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(nearest(P, " << neighbours_count << ")) " << nearest_queries_count << " found " << temp << '\n';
+ }
+
+ {
+ clock_t::time_point start = clock_t::now();
+ for (size_t i = 0 ; i < values_count / 10 ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ B b(P(x - 0.5f, y - 0.5f), P(x + 0.5f, y + 0.5f));
+
+ t.remove(b);
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - remove " << values_count / 10 << '\n';
+ }
+
+ std::cout << "------------------------------------------------\n";
+ }
+
+ return 0;
+}
diff --git a/libs/geometry/index/example/benchmark2.cpp b/libs/geometry/index/example/benchmark2.cpp
new file mode 100644
index 0000000000..48194cbd82
--- /dev/null
+++ b/libs/geometry/index/example/benchmark2.cpp
@@ -0,0 +1,86 @@
+// Boost.Geometry Index
+// Compare performance with std::set using 1-dimensional object
+// (i.e. angle, or number line coordiante)
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <iostream>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/index/rtree.hpp>
+
+#include <boost/chrono.hpp>
+#include <boost/foreach.hpp>
+#include <boost/random.hpp>
+#include <set>
+
+int main()
+{
+ namespace bg = boost::geometry;
+ namespace bgi = bg::index;
+ typedef boost::chrono::thread_clock clock_t;
+ typedef boost::chrono::duration<float> dur_t;
+
+ size_t values_count = 1001;
+ size_t count_start = 10;
+ size_t count_stop = 1000;
+ size_t count_step = 10;
+ size_t insrem_count = 3000000;
+
+ typedef bg::model::point<float, 1, bg::cs::cartesian> P;
+ //typedef bgi::rtree<P, bgi::linear<8, 3> > RT;
+ typedef bgi::rtree<P, bgi::quadratic<8, 3> > RT;
+ //typedef bgi::rtree<P, bgi::rstar<8, 3> > RT;
+
+ RT t;
+ std::set<float> s;
+ size_t val_i = 0;
+ for ( size_t curr_count = count_start ; curr_count < count_stop ; curr_count += count_step )
+ {
+ // inserting test
+ {
+ for (; val_i < curr_count ; ++val_i )
+ {
+ float v = val_i / 100.0f;
+ P p(v);
+ t.insert(p);
+ s.insert(v);
+ }
+
+ float v = (val_i+1) / 100.0f;
+ P test_p(v);
+
+ std::cout << t.size() << ' ';
+
+ clock_t::time_point start = clock_t::now();
+
+ for (size_t i = 0 ; i < insrem_count ; ++i )
+ {
+ t.insert(test_p);
+ t.remove(test_p);
+ }
+
+ dur_t time = clock_t::now() - start;
+ std::cout << time.count() << ' ';
+
+ start = clock_t::now();
+
+ for (size_t i = 0 ; i < insrem_count ; ++i )
+ {
+ s.insert(v);
+ s.erase(v);
+ }
+
+ time = clock_t::now() - start;
+ std::cout << time.count() << ' ';
+ }
+
+ std::cout << '\n';
+ }
+
+ return 0;
+}
diff --git a/libs/geometry/index/example/benchmark3.cpp b/libs/geometry/index/example/benchmark3.cpp
new file mode 100644
index 0000000000..ad1910e450
--- /dev/null
+++ b/libs/geometry/index/example/benchmark3.cpp
@@ -0,0 +1,99 @@
+// Boost.Geometry Index
+// Additional tests
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <iostream>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/index/rtree.hpp>
+
+#include <boost/chrono.hpp>
+#include <boost/foreach.hpp>
+#include <boost/random.hpp>
+#include <set>
+
+int main()
+{
+ namespace bg = boost::geometry;
+ namespace bgi = bg::index;
+ typedef boost::chrono::thread_clock clock_t;
+ typedef boost::chrono::duration<float> dur_t;
+
+ size_t stored_count = 100000;
+
+ std::vector< std::pair<float, float> > coords;
+
+ //randomize values
+ {
+ boost::mt19937 rng;
+ //rng.seed(static_cast<unsigned int>(std::time(0)));
+ float max_val = static_cast<float>(stored_count / 10);
+ boost::uniform_real<float> range(-max_val, max_val);
+ boost::variate_generator<boost::mt19937&, boost::uniform_real<float> > rnd(rng, range);
+
+ coords.reserve(stored_count);
+
+ std::cout << "randomizing data\n";
+ for ( size_t i = 0 ; i < stored_count ; ++i )
+ {
+ coords.push_back(std::make_pair(rnd(), rnd()));
+ }
+ std::cout << "randomized\n";
+ }
+
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P;
+ typedef bgi::rtree<P, bgi::dynamic_linear > RTL;
+ typedef bgi::rtree<P, bgi::dynamic_quadratic > RTQ;
+ typedef bgi::rtree<P, bgi::dynamic_rstar > RTR;
+
+ for ( size_t m = 4 ; m < 33 ; m += 2 )
+ {
+ size_t mm = ::ceil(m / 3.0f);
+
+ RTL rtl(bgi::dynamic_linear(m, mm));
+ RTQ rtq(bgi::dynamic_quadratic(m, mm));
+ RTR rtr(bgi::dynamic_rstar(m, mm));
+
+ std::cout << m << ' ' << mm << ' ';
+
+ // inserting test
+ {
+ clock_t::time_point start = clock_t::now();
+ for (size_t i = 0 ; i < stored_count ; ++i )
+ {
+ P p(coords[i].first, coords[i].second);
+ rtl.insert(p);
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time.count() << ' ';
+
+ start = clock_t::now();
+ for (size_t i = 0 ; i < stored_count ; ++i )
+ {
+ P p(coords[i].first, coords[i].second);
+ rtq.insert(p);
+ }
+ time = clock_t::now() - start;
+ std::cout << time.count() << ' ';
+
+ start = clock_t::now();
+ for (size_t i = 0 ; i < stored_count ; ++i )
+ {
+ float v = i / 100.0f;
+ P p(coords[i].first, coords[i].second);
+ rtr.insert(p);
+ }
+ time = clock_t::now() - start;
+ std::cout << time.count() << ' ';
+ }
+
+ std::cout << '\n';
+ }
+
+ return 0;
+}
diff --git a/libs/geometry/index/example/benchmark_experimental.cpp b/libs/geometry/index/example/benchmark_experimental.cpp
new file mode 100644
index 0000000000..45248008d4
--- /dev/null
+++ b/libs/geometry/index/example/benchmark_experimental.cpp
@@ -0,0 +1,470 @@
+// Boost.Geometry Index
+// Additional tests
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#define BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+
+#include <iostream>
+
+#include <boost/chrono.hpp>
+#include <boost/foreach.hpp>
+#include <boost/random.hpp>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/index/rtree.hpp>
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/geometries/segment.hpp>
+
+namespace bg = boost::geometry;
+namespace bgi = bg::index;
+
+typedef bg::model::point<double, 2, bg::cs::cartesian> P;
+typedef bg::model::box<P> B;
+typedef bg::model::linestring<P> LS;
+typedef bg::model::segment<P> S;
+//typedef P V;
+typedef B V;
+//typedef S V;
+//#define SEGMENT_INDEXABLE
+
+template <typename V>
+struct generate_value {};
+
+template <>
+struct generate_value<B>
+{
+ static inline B apply(float x, float y) { return B(P(x - 0.5f, y - 0.5f), P(x + 0.5f, y + 0.5f)); }
+};
+
+template <>
+struct generate_value<S>
+{
+ static inline S apply(float x, float y) { return S(P(x - 0.5f, y - 0.5f), P(x + 0.5f, y + 0.5f)); }
+};
+
+template <>
+struct generate_value<P>
+{
+ static inline P apply(float x, float y) { return P(x, y); }
+};
+
+//#include <boost/geometry/extensions/nsphere/nsphere.hpp>
+//typedef bg::model::nsphere<P, double> NS;
+//typedef NS V;
+//
+//template <>
+//struct generate_value<NS>
+//{
+// static inline NS apply(float x, float y) { return NS(P(x, y), 0.5); }
+//};
+
+template <typename I1, typename I2, typename O>
+void mycopy(I1 first, I2 last, O o)
+{
+ for ( ; first != last ; ++o, ++first )
+ *o = *first;
+}
+
+//#define BOOST_GEOMETRY_INDEX_BENCHMARK_DEBUG
+
+int main()
+{
+ typedef boost::chrono::thread_clock clock_t;
+ typedef boost::chrono::duration<float> dur_t;
+
+#ifndef BOOST_GEOMETRY_INDEX_BENCHMARK_DEBUG
+ size_t values_count = 1000000;
+ size_t queries_count = 100000;
+ size_t nearest_queries_count = 20000;
+ unsigned neighbours_count = 10;
+ size_t path_queries_count = 2000;
+ size_t path_queries_count2 = 20000;
+ unsigned path_values_count = 10;
+#else
+ size_t values_count = 1000;
+ size_t queries_count = 1;
+ size_t nearest_queries_count = 1;
+ unsigned neighbours_count = 10;
+ size_t path_queries_count = 1;
+ size_t path_queries_count2 = 1;
+ unsigned path_values_count = 10;
+#endif
+
+ float max_val = static_cast<float>(values_count / 2);
+ std::vector< std::pair<float, float> > coords;
+ std::vector<V> values;
+
+ //randomize values
+ {
+ boost::mt19937 rng;
+ //rng.seed(static_cast<unsigned int>(std::time(0)));
+ boost::uniform_real<float> range(-max_val, max_val);
+ boost::variate_generator<boost::mt19937&, boost::uniform_real<float> > rnd(rng, range);
+
+ coords.reserve(values_count);
+
+ std::cout << "randomizing data\n";
+ for ( size_t i = 0 ; i < values_count ; ++i )
+ {
+ float x = rnd();
+ float y = rnd();
+ coords.push_back(std::make_pair(x, y));
+ values.push_back(generate_value<V>::apply(x, y));
+ }
+ std::cout << "randomized\n";
+ }
+
+ typedef bgi::rtree<V, bgi::linear<16, 4> > RT;
+ //typedef bgi::rtree<V, bgi::quadratic<16, 4> > RT;
+ //typedef bgi::rtree<V, bgi::rstar<16, 4> > RT;
+
+ std::cout << "sizeof rtree: " << sizeof(RT) << std::endl;
+
+ for (;;)
+ {
+ std::vector<V> result;
+ result.reserve(100);
+ B result_one;
+
+ // packing test
+ {
+ clock_t::time_point start = clock_t::now();
+
+ RT t(values.begin(), values.end());
+
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - pack " << values_count << '\n';
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ t.query(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10))), std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(B) " << queries_count << " found " << temp << '\n';
+ }
+ }
+
+ RT t;
+
+ // inserting test
+ {
+ clock_t::time_point start = clock_t::now();
+ t.insert(values);
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - insert " << values_count << '\n';
+ }
+
+
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ t.query(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10))), std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(B) " << queries_count << " found " << temp << '\n';
+ }
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ boost::copy(t | bgi::adaptors::queried(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10)))),
+ std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - range queried(B) " << queries_count << " found " << temp << '\n';
+ }
+
+#ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ std::copy(
+ t.qbegin_(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10)))),
+ t.qend_(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10)))),
+ std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - qbegin(B) qend(B) " << queries_count << " found " << temp << '\n';
+ }
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ mycopy(
+ t.qbegin_(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10)))),
+ t.qend_(),
+ std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - qbegin(B) qend() " << queries_count << " found " << temp << '\n';
+ }
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ boost::copy(
+ std::make_pair(
+ t.qbegin_(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10)))),
+ t.qend_(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10))))
+ ), std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - range qbegin(B) qend(B)" << queries_count << " found " << temp << '\n';
+ }
+#endif // BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ RT::const_query_iterator first = t.qbegin(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10))));
+ RT::const_query_iterator last = t.qend();
+ std::copy(first, last, std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - type-erased qbegin(B) qend() " << queries_count << " found " << temp << '\n';
+ }
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ RT::const_query_iterator first = t.qbegin(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10))));
+ RT::const_query_iterator last = t.qend();
+ boost::copy(std::make_pair(first, last), std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - range type-erased qbegin(B) qend() " << queries_count << " found " << temp << '\n';
+ }
+
+#ifndef SEGMENT_INDEXABLE
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < queries_count / 2 ; ++i )
+ {
+ float x1 = coords[i].first;
+ float y1 = coords[i].second;
+ float x2 = coords[i+1].first;
+ float y2 = coords[i+1].second;
+ float x3 = coords[i+2].first;
+ float y3 = coords[i+2].second;
+ result.clear();
+ t.query(
+ bgi::intersects(B(P(x1 - 10, y1 - 10), P(x1 + 10, y1 + 10)))
+ &&
+ !bgi::within(B(P(x2 - 10, y2 - 10), P(x2 + 10, y2 + 10)))
+ &&
+ !bgi::covered_by(B(P(x3 - 10, y3 - 10), P(x3 + 10, y3 + 10)))
+ ,
+ std::back_inserter(result)
+ );
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(i && !w && !c) " << queries_count << " found " << temp << '\n';
+ }
+#endif
+
+ result.clear();
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < nearest_queries_count ; ++i )
+ {
+ float x = coords[i].first + 100;
+ float y = coords[i].second + 100;
+ result.clear();
+ temp += t.query(bgi::nearest(P(x, y), neighbours_count), std::back_inserter(result));
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(nearest(P, " << neighbours_count << ")) " << nearest_queries_count << " found " << temp << '\n';
+ }
+
+#ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < nearest_queries_count ; ++i )
+ {
+ float x = coords[i].first + 100;
+ float y = coords[i].second + 100;
+ result.clear();
+ std::copy(
+ t.qbegin_(bgi::nearest(P(x, y), neighbours_count)),
+ t.qend_(bgi::nearest(P(x, y), neighbours_count)),
+ std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - qbegin(nearest(P, " << neighbours_count << ")) qend(n) " << nearest_queries_count << " found " << temp << '\n';
+ }
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < nearest_queries_count ; ++i )
+ {
+ float x = coords[i].first + 100;
+ float y = coords[i].second + 100;
+ result.clear();
+ mycopy(
+ t.qbegin_(bgi::nearest(P(x, y), neighbours_count)),
+ t.qend_(),
+ std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - qbegin(nearest(P, " << neighbours_count << ")) qend() " << nearest_queries_count << " found " << temp << '\n';
+ }
+#endif // BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < nearest_queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ RT::const_query_iterator first = t.qbegin(bgi::nearest(P(x, y), neighbours_count));
+ RT::const_query_iterator last = t.qend();
+ std::copy(first, last, std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - type-erased qbegin(nearest(P, " << neighbours_count << ")) qend() " << nearest_queries_count << " found " << temp << '\n';
+ }
+
+#ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+#ifndef SEGMENT_INDEXABLE
+
+ {
+ LS ls;
+ ls.resize(6);
+
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < path_queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ for ( int i = 0 ; i < 3 ; ++i )
+ {
+ float foo = i*max_val/300;
+ ls[2*i] = P(x, y+foo);
+ ls[2*i+1] = P(x+max_val/100, y+foo);
+ }
+ result.clear();
+ t.query(bgi::path(ls, path_values_count), std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(path(LS6, " << path_values_count << ")) " << path_queries_count << " found " << temp << '\n';
+ }
+
+ {
+ LS ls;
+ ls.resize(2);
+
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < path_queries_count2 ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ ls[0] = P(x, y);
+ ls[1] = P(x+max_val/100, y+max_val/100);
+ result.clear();
+ t.query(bgi::path(ls, path_values_count), std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(path(LS2, " << path_values_count << ")) " << path_queries_count2 << " found " << temp << '\n';
+ }
+
+ {
+ clock_t::time_point start = clock_t::now();
+ size_t temp = 0;
+ for (size_t i = 0 ; i < path_queries_count2 ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ S seg(P(x, y), P(x+max_val/100, y+max_val/100));
+ result.clear();
+ t.query(bgi::path(seg, path_values_count), std::back_inserter(result));
+ temp += result.size();
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - query(path(S, " << path_values_count << ")) " << path_queries_count2 << " found " << temp << '\n';
+ }
+#endif
+#endif
+ {
+ clock_t::time_point start = clock_t::now();
+ for (size_t i = 0 ; i < values_count / 10 ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+
+ t.remove(generate_value<V>::apply(x, y));
+ }
+ dur_t time = clock_t::now() - start;
+ std::cout << time << " - remove " << values_count / 10 << '\n';
+ }
+
+ std::cout << "------------------------------------------------\n";
+ }
+
+ return 0;
+}
diff --git a/libs/geometry/index/example/glut_vis.cpp b/libs/geometry/index/example/glut_vis.cpp
new file mode 100644
index 0000000000..2c5f5740bd
--- /dev/null
+++ b/libs/geometry/index/example/glut_vis.cpp
@@ -0,0 +1,1094 @@
+// Boost.Geometry Index
+// OpenGL visualization
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <GL/glut.h>
+
+#include <boost/foreach.hpp>
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/index/rtree.hpp>
+
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/geometries/segment.hpp>
+#include <boost/geometry/geometries/ring.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
+
+#include <boost/geometry/index/detail/rtree/utilities/gl_draw.hpp>
+#include <boost/geometry/index/detail/rtree/utilities/print.hpp>
+#include <boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp>
+#include <boost/geometry/index/detail/rtree/utilities/are_levels_ok.hpp>
+#include <boost/geometry/index/detail/rtree/utilities/statistics.hpp>
+
+#include <boost/variant.hpp>
+
+#define ENABLE_POINTS_AND_SEGMENTS
+
+namespace bg = boost::geometry;
+namespace bgi = bg::index;
+
+// used types
+
+typedef bg::model::point<float, 2, boost::geometry::cs::cartesian> P;
+typedef bg::model::box<P> B;
+typedef bg::model::linestring<P> LS;
+typedef bg::model::segment<P> S;
+typedef bg::model::ring<P> R;
+typedef bg::model::polygon<P> Poly;
+typedef bg::model::multi_polygon<Poly> MPoly;
+
+// containers variant
+
+template <typename V>
+struct containers
+{
+ containers & operator=(containers const& c)
+ {
+ tree = c.tree;
+ values = c.values;
+ result = c.result;
+ return *this;
+ }
+
+ bgi::rtree< V, bgi::rstar<4, 2> > tree;
+ std::vector<V> values;
+ std::vector<V> result;
+};
+
+boost::variant<
+ containers<B>
+#ifdef ENABLE_POINTS_AND_SEGMENTS
+ , containers<P>
+ , containers<S>
+#endif
+> cont;
+
+// visitors
+
+template <typename Pred>
+struct query_v : boost::static_visitor<size_t>
+{
+ Pred m_pred;
+ query_v(Pred const& pred) : m_pred(pred) {}
+
+ template <typename C>
+ size_t operator()(C & c) const
+ {
+ c.result.clear();
+ return c.tree.query(m_pred, std::back_inserter(c.result));
+ }
+};
+template <typename Cont, typename Pred>
+inline size_t query(Cont & cont, Pred const& pred)
+{
+ return boost::apply_visitor(query_v<Pred>(pred), cont);
+}
+
+struct print_result_v : boost::static_visitor<>
+{
+ template <typename C>
+ void operator()(C & c) const
+ {
+ for ( size_t i = 0 ; i < c.result.size() ; ++i )
+ {
+ bgi::detail::utilities::print_indexable(std::cout, c.result[i]);
+ std::cout << '\n';
+ }
+ }
+};
+template <typename Cont>
+inline void print_result(Cont const& cont)
+{
+ boost::apply_visitor(print_result_v(), cont);
+}
+
+struct bounds_v : boost::static_visitor<B>
+{
+ template <typename C>
+ B operator()(C & c) const
+ {
+ return c.tree.bounds();
+ }
+};
+template <typename Cont>
+inline B bounds(Cont const& cont)
+{
+ return boost::apply_visitor(bounds_v(), cont);
+}
+
+struct depth_v : boost::static_visitor<size_t>
+{
+ template <typename C>
+ size_t operator()(C & c) const
+ {
+ return get(c.tree);
+ }
+ template <typename RTree>
+ static size_t get(RTree const& t)
+ {
+ return bgi::detail::rtree::utilities::view<RTree>(t).depth();
+ }
+};
+template <typename Cont>
+inline size_t depth(Cont const& cont)
+{
+ return boost::apply_visitor(depth_v(), cont);
+}
+
+struct draw_tree_v : boost::static_visitor<>
+{
+ template <typename C>
+ void operator()(C & c) const
+ {
+ bgi::detail::rtree::utilities::gl_draw(c.tree);
+ }
+};
+template <typename Cont>
+inline void draw_tree(Cont const& cont)
+{
+ return boost::apply_visitor(draw_tree_v(), cont);
+}
+
+struct draw_result_v : boost::static_visitor<>
+{
+ template <typename C>
+ void operator()(C & c) const
+ {
+ for ( size_t i = 0 ; i < c.result.size() ; ++i )
+ {
+ bgi::detail::utilities::gl_draw_indexable(c.result[i], depth_v::get(c.tree));
+ }
+ }
+};
+template <typename Cont>
+inline void draw_result(Cont const& cont)
+{
+ return boost::apply_visitor(draw_result_v(), cont);
+}
+
+struct print_tree_v : boost::static_visitor<>
+{
+ template <typename C>
+ void operator()(C & c) const
+ {
+ bgi::detail::rtree::utilities::print(std::cout, c.tree);
+ }
+};
+template <typename Cont>
+inline void print_tree(Cont const& cont)
+{
+ return boost::apply_visitor(print_tree_v(), cont);
+}
+
+// globals used in querying
+
+size_t found_count = 0;
+size_t count = 5;
+
+P search_point;
+B search_box;
+R search_ring;
+Poly search_poly;
+MPoly search_multi_poly;
+S search_segment;
+LS search_linestring;
+LS search_path;
+
+enum query_mode_type {
+ qm_knn, qm_knnb, qm_knns, qm_c, qm_d, qm_i, qm_o, qm_w, qm_nc, qm_nd, qm_ni, qm_no, qm_nw, qm_all, qm_ri, qm_pi, qm_mpi, qm_si, qm_lsi, qm_path
+} query_mode = qm_knn;
+
+bool search_valid = false;
+
+// various queries
+
+void query_knn()
+{
+ float x = ( rand() % 1000 ) / 10.0f;
+ float y = ( rand() % 1000 ) / 10.0f;
+
+ if ( query_mode == qm_knn )
+ {
+ search_point = P(x, y);
+ found_count = query(cont, bgi::nearest(search_point, count));
+ }
+ else if ( query_mode == qm_knnb )
+ {
+ float w = 2 + ( rand() % 1000 ) / 500.0f;
+ float h = 2 + ( rand() % 1000 ) / 500.0f;
+ search_box = B(P(x - w, y - h), P(x + w, y + h));
+ found_count = query(cont, bgi::nearest(search_box, count));
+ }
+ else if ( query_mode == qm_knns )
+ {
+ int signx = rand() % 2 ? 1 : -1;
+ int signy = rand() % 2 ? 1 : -1;
+ float w = (10 + ( rand() % 1000 ) / 100.0f) * signx;
+ float h = (10 + ( rand() % 1000 ) / 100.0f) * signy;
+ search_segment = S(P(x - w, y - h), P(x + w, y + h));
+ found_count = query(cont, bgi::nearest(search_segment, count));
+ }
+ else
+ {
+ BOOST_ASSERT(false);
+ }
+
+ if ( found_count > 0 )
+ {
+ if ( query_mode == qm_knn )
+ {
+ std::cout << "search point: ";
+ bgi::detail::utilities::print_indexable(std::cout, search_point);
+ }
+ else if ( query_mode == qm_knnb )
+ {
+ std::cout << "search box: ";
+ bgi::detail::utilities::print_indexable(std::cout, search_box);
+ }
+ else if ( query_mode == qm_knns )
+ {
+ std::cout << "search segment: ";
+ bgi::detail::utilities::print_indexable(std::cout, search_segment);
+ }
+ else
+ {
+ BOOST_ASSERT(false);
+ }
+ std::cout << "\nfound: ";
+ print_result(cont);
+ }
+ else
+ std::cout << "nearest not found\n";
+}
+
+#ifndef ENABLE_POINTS_AND_SEGMENTS
+void query_path()
+{
+ float x = ( rand() % 1000 ) / 10.0f;
+ float y = ( rand() % 1000 ) / 10.0f;
+ float w = 20 + ( rand() % 1000 ) / 100.0f;
+ float h = 20 + ( rand() % 1000 ) / 100.0f;
+
+ search_path.resize(10);
+ float yy = y-h;
+ for ( int i = 0 ; i < 5 ; ++i, yy += h / 2 )
+ {
+ search_path[2 * i] = P(x-w, yy);
+ search_path[2 * i + 1] = P(x+w, yy);
+ }
+
+ found_count = query(cont, bgi::detail::path<LS>(search_path, count));
+
+ if ( found_count > 0 )
+ {
+ std::cout << "search path: ";
+ BOOST_FOREACH(P const& p, search_path)
+ bgi::detail::utilities::print_indexable(std::cout, p);
+ std::cout << "\nfound: ";
+ print_result(cont);
+ }
+ else
+ std::cout << "values on path not found\n";
+}
+#endif
+
+template <typename Predicate>
+void query()
+{
+ if ( query_mode != qm_all )
+ {
+ float x = ( rand() % 1000 ) / 10.0f;
+ float y = ( rand() % 1000 ) / 10.0f;
+ float w = 10 + ( rand() % 1000 ) / 100.0f;
+ float h = 10 + ( rand() % 1000 ) / 100.0f;
+
+ search_box = B(P(x - w, y - h), P(x + w, y + h));
+ }
+ else
+ {
+ search_box = bounds(cont);
+ }
+
+ found_count = query(cont, Predicate(search_box));
+
+ if ( found_count > 0 )
+ {
+ std::cout << "search box: ";
+ bgi::detail::utilities::print_indexable(std::cout, search_box);
+ std::cout << "\nfound: ";
+ print_result(cont);
+ }
+ else
+ std::cout << "boxes not found\n";
+}
+
+template <typename Predicate>
+void query_ring()
+{
+ float x = ( rand() % 1000 ) / 10.0f;
+ float y = ( rand() % 1000 ) / 10.0f;
+ float w = 10 + ( rand() % 1000 ) / 100.0f;
+ float h = 10 + ( rand() % 1000 ) / 100.0f;
+
+ search_ring.clear();
+ search_ring.push_back(P(x - w, y - h));
+ search_ring.push_back(P(x - w/2, y - h));
+ search_ring.push_back(P(x, y - 3*h/2));
+ search_ring.push_back(P(x + w/2, y - h));
+ search_ring.push_back(P(x + w, y - h));
+ search_ring.push_back(P(x + w, y - h/2));
+ search_ring.push_back(P(x + 3*w/2, y));
+ search_ring.push_back(P(x + w, y + h/2));
+ search_ring.push_back(P(x + w, y + h));
+ search_ring.push_back(P(x + w/2, y + h));
+ search_ring.push_back(P(x, y + 3*h/2));
+ search_ring.push_back(P(x - w/2, y + h));
+ search_ring.push_back(P(x - w, y + h));
+ search_ring.push_back(P(x - w, y + h/2));
+ search_ring.push_back(P(x - 3*w/2, y));
+ search_ring.push_back(P(x - w, y - h/2));
+ search_ring.push_back(P(x - w, y - h));
+
+ found_count = query(cont, Predicate(search_ring));
+
+ if ( found_count > 0 )
+ {
+ std::cout << "search ring: ";
+ BOOST_FOREACH(P const& p, search_ring)
+ {
+ bgi::detail::utilities::print_indexable(std::cout, p);
+ std::cout << ' ';
+ }
+ std::cout << "\nfound: ";
+ print_result(cont);
+ }
+ else
+ std::cout << "boxes not found\n";
+}
+
+template <typename Predicate>
+void query_poly()
+{
+ float x = ( rand() % 1000 ) / 10.0f;
+ float y = ( rand() % 1000 ) / 10.0f;
+ float w = 10 + ( rand() % 1000 ) / 100.0f;
+ float h = 10 + ( rand() % 1000 ) / 100.0f;
+
+ search_poly.clear();
+ search_poly.outer().push_back(P(x - w, y - h));
+ search_poly.outer().push_back(P(x - w/2, y - h));
+ search_poly.outer().push_back(P(x, y - 3*h/2));
+ search_poly.outer().push_back(P(x + w/2, y - h));
+ search_poly.outer().push_back(P(x + w, y - h));
+ search_poly.outer().push_back(P(x + w, y - h/2));
+ search_poly.outer().push_back(P(x + 3*w/2, y));
+ search_poly.outer().push_back(P(x + w, y + h/2));
+ search_poly.outer().push_back(P(x + w, y + h));
+ search_poly.outer().push_back(P(x + w/2, y + h));
+ search_poly.outer().push_back(P(x, y + 3*h/2));
+ search_poly.outer().push_back(P(x - w/2, y + h));
+ search_poly.outer().push_back(P(x - w, y + h));
+ search_poly.outer().push_back(P(x - w, y + h/2));
+ search_poly.outer().push_back(P(x - 3*w/2, y));
+ search_poly.outer().push_back(P(x - w, y - h/2));
+ search_poly.outer().push_back(P(x - w, y - h));
+
+ search_poly.inners().push_back(Poly::ring_type());
+ search_poly.inners()[0].push_back(P(x - w/2, y - h/2));
+ search_poly.inners()[0].push_back(P(x + w/2, y - h/2));
+ search_poly.inners()[0].push_back(P(x + w/2, y + h/2));
+ search_poly.inners()[0].push_back(P(x - w/2, y + h/2));
+ search_poly.inners()[0].push_back(P(x - w/2, y - h/2));
+
+ found_count = query(cont, Predicate(search_poly));
+
+ if ( found_count > 0 )
+ {
+ std::cout << "search poly outer: ";
+ BOOST_FOREACH(P const& p, search_poly.outer())
+ {
+ bgi::detail::utilities::print_indexable(std::cout, p);
+ std::cout << ' ';
+ }
+ std::cout << "\nfound: ";
+ print_result(cont);
+ }
+ else
+ std::cout << "boxes not found\n";
+}
+
+template <typename Predicate>
+void query_multi_poly()
+{
+ float x = ( rand() % 1000 ) / 10.0f;
+ float y = ( rand() % 1000 ) / 10.0f;
+ float w = 10 + ( rand() % 1000 ) / 100.0f;
+ float h = 10 + ( rand() % 1000 ) / 100.0f;
+
+ search_multi_poly.clear();
+
+ search_multi_poly.push_back(Poly());
+ search_multi_poly[0].outer().push_back(P(x - w, y - h));
+ search_multi_poly[0].outer().push_back(P(x - w/2, y - h));
+ search_multi_poly[0].outer().push_back(P(x, y - 3*h/2));
+ search_multi_poly[0].outer().push_back(P(x + w/2, y - h));
+ search_multi_poly[0].outer().push_back(P(x + w, y - h));
+ search_multi_poly[0].outer().push_back(P(x + w, y - h/2));
+ search_multi_poly[0].outer().push_back(P(x + 3*w/2, y));
+ search_multi_poly[0].outer().push_back(P(x + w, y + h/2));
+ search_multi_poly[0].outer().push_back(P(x + w, y + h));
+ search_multi_poly[0].outer().push_back(P(x + w/2, y + h));
+ search_multi_poly[0].outer().push_back(P(x, y + 3*h/2));
+ search_multi_poly[0].outer().push_back(P(x - w/2, y + h));
+ search_multi_poly[0].outer().push_back(P(x - w, y + h));
+ search_multi_poly[0].outer().push_back(P(x - w, y + h/2));
+ search_multi_poly[0].outer().push_back(P(x - 3*w/2, y));
+ search_multi_poly[0].outer().push_back(P(x - w, y - h/2));
+ search_multi_poly[0].outer().push_back(P(x - w, y - h));
+
+ search_multi_poly[0].inners().push_back(Poly::ring_type());
+ search_multi_poly[0].inners()[0].push_back(P(x - w/2, y - h/2));
+ search_multi_poly[0].inners()[0].push_back(P(x + w/2, y - h/2));
+ search_multi_poly[0].inners()[0].push_back(P(x + w/2, y + h/2));
+ search_multi_poly[0].inners()[0].push_back(P(x - w/2, y + h/2));
+ search_multi_poly[0].inners()[0].push_back(P(x - w/2, y - h/2));
+
+ search_multi_poly.push_back(Poly());
+ search_multi_poly[1].outer().push_back(P(x - 2*w, y - 2*h));
+ search_multi_poly[1].outer().push_back(P(x - 6*w/5, y - 2*h));
+ search_multi_poly[1].outer().push_back(P(x - 6*w/5, y - 6*h/5));
+ search_multi_poly[1].outer().push_back(P(x - 2*w, y - 6*h/5));
+ search_multi_poly[1].outer().push_back(P(x - 2*w, y - 2*h));
+
+ search_multi_poly.push_back(Poly());
+ search_multi_poly[2].outer().push_back(P(x + 6*w/5, y + 6*h/5));
+ search_multi_poly[2].outer().push_back(P(x + 2*w, y + 6*h/5));
+ search_multi_poly[2].outer().push_back(P(x + 2*w, y + 2*h));
+ search_multi_poly[2].outer().push_back(P(x + 6*w/5, y + 2*h));
+ search_multi_poly[2].outer().push_back(P(x + 6*w/5, y + 6*h/5));
+
+ found_count = query(cont, Predicate(search_multi_poly));
+
+ if ( found_count > 0 )
+ {
+ std::cout << "search multi_poly[0] outer: ";
+ BOOST_FOREACH(P const& p, search_multi_poly[0].outer())
+ {
+ bgi::detail::utilities::print_indexable(std::cout, p);
+ std::cout << ' ';
+ }
+ std::cout << "\nfound: ";
+ print_result(cont);
+ }
+ else
+ std::cout << "boxes not found\n";
+}
+
+template <typename Predicate>
+void query_segment()
+{
+ float x = ( rand() % 1000 ) / 10.0f;
+ float y = ( rand() % 1000 ) / 10.0f;
+ float w = 10.0f - ( rand() % 1000 ) / 50.0f;
+ float h = 10.0f - ( rand() % 1000 ) / 50.0f;
+ w += 0 <= w ? 10 : -10;
+ h += 0 <= h ? 10 : -10;
+
+ boost::geometry::set<0, 0>(search_segment, x - w);
+ boost::geometry::set<0, 1>(search_segment, y - h);
+ boost::geometry::set<1, 0>(search_segment, x + w);
+ boost::geometry::set<1, 1>(search_segment, y + h);
+
+ found_count = query(cont, Predicate(search_segment));
+
+ if ( found_count > 0 )
+ {
+ std::cout << "search segment: ";
+ bgi::detail::utilities::print_indexable(std::cout, P(x-w, y-h));
+ bgi::detail::utilities::print_indexable(std::cout, P(x+w, y+h));
+
+ std::cout << "\nfound: ";
+ print_result(cont);
+ }
+ else
+ std::cout << "boxes not found\n";
+}
+
+template <typename Predicate>
+void query_linestring()
+{
+ float x = ( rand() % 1000 ) / 10.0f;
+ float y = ( rand() % 1000 ) / 10.0f;
+ float w = 10 + ( rand() % 1000 ) / 100.0f;
+ float h = 10 + ( rand() % 1000 ) / 100.0f;
+
+ search_linestring.clear();
+ float a = 0;
+ float d = 0;
+ for ( size_t i = 0 ; i < 300 ; ++i, a += 0.05, d += 0.005 )
+ {
+ float xx = x + w * d * ::cos(a);
+ float yy = y + h * d * ::sin(a);
+ search_linestring.push_back(P(xx, yy));
+ }
+
+ found_count = query(cont, Predicate(search_linestring));
+
+ if ( found_count > 0 )
+ {
+ std::cout << "search linestring: ";
+ BOOST_FOREACH(P const& p, search_linestring)
+ {
+ bgi::detail::utilities::print_indexable(std::cout, p);
+ std::cout << ' ';
+ }
+ std::cout << "\nfound: ";
+ print_result(cont);
+ }
+ else
+ std::cout << "boxes not found\n";
+}
+
+// the function running the correct query based on the query_mode
+
+void search()
+{
+ namespace d = bgi::detail;
+
+ if ( query_mode == qm_knn || query_mode == qm_knnb || query_mode == qm_knns )
+ query_knn();
+ else if ( query_mode == qm_d )
+ query< d::spatial_predicate<B, d::disjoint_tag, false> >();
+ else if ( query_mode == qm_i )
+ query< d::spatial_predicate<B, d::intersects_tag, false> >();
+ else if ( query_mode == qm_nd )
+ query< d::spatial_predicate<B, d::disjoint_tag, true> >();
+ else if ( query_mode == qm_ni )
+ query< d::spatial_predicate<B, d::intersects_tag, true> >();
+ else if ( query_mode == qm_all )
+ query< d::spatial_predicate<B, d::intersects_tag, false> >();
+#ifdef ENABLE_POINTS_AND_SEGMENTS
+ else
+ std::cout << "query disabled\n";
+#else
+ else if ( query_mode == qm_c )
+ query< d::spatial_predicate<B, d::covered_by_tag, false> >();
+ else if ( query_mode == qm_o )
+ query< d::spatial_predicate<B, d::overlaps_tag, false> >();
+ else if ( query_mode == qm_w )
+ query< d::spatial_predicate<B, d::within_tag, false> >();
+ else if ( query_mode == qm_nc )
+ query< d::spatial_predicate<B, d::covered_by_tag, true> >();
+ else if ( query_mode == qm_no )
+ query< d::spatial_predicate<B, d::overlaps_tag, true> >();
+ else if ( query_mode == qm_nw )
+ query< d::spatial_predicate<B, d::within_tag, true> >();
+ else if ( query_mode == qm_ri )
+ query_ring< d::spatial_predicate<R, d::intersects_tag, false> >();
+ else if ( query_mode == qm_pi )
+ query_poly< d::spatial_predicate<Poly, d::intersects_tag, false> >();
+ else if ( query_mode == qm_mpi )
+ query_multi_poly< d::spatial_predicate<MPoly, d::intersects_tag, false> >();
+ else if ( query_mode == qm_si )
+ query_segment< d::spatial_predicate<S, d::intersects_tag, false> >();
+ else if ( query_mode == qm_lsi )
+ query_linestring< d::spatial_predicate<LS, d::intersects_tag, false> >();
+ else if ( query_mode == qm_path )
+ query_path();
+#endif
+
+ search_valid = true;
+}
+
+// various drawing functions
+
+void draw_point(P const& p)
+{
+ float x = boost::geometry::get<0>(p);
+ float y = boost::geometry::get<1>(p);
+ float z = depth(cont);
+
+ glBegin(GL_QUADS);
+ glVertex3f(x+1, y, z);
+ glVertex3f(x, y+1, z);
+ glVertex3f(x-1, y, z);
+ glVertex3f(x, y-1, z);
+ glEnd();
+}
+
+void draw_knn_area(float min_distance, float max_distance)
+{
+ float x = boost::geometry::get<0>(search_point);
+ float y = boost::geometry::get<1>(search_point);
+ float z = depth(cont);
+
+ draw_point(search_point);
+
+ // search min circle
+
+ glBegin(GL_LINE_LOOP);
+ for(float a = 0 ; a < 3.14158f * 2 ; a += 3.14158f / 180)
+ glVertex3f(x + min_distance * ::cos(a), y + min_distance * ::sin(a), z);
+ glEnd();
+
+ // search max circle
+
+ glBegin(GL_LINE_LOOP);
+ for(float a = 0 ; a < 3.14158f * 2 ; a += 3.14158f / 180)
+ glVertex3f(x + max_distance * ::cos(a), y + max_distance * ::sin(a), z);
+ glEnd();
+}
+
+void draw_linestring(LS const& ls)
+{
+ glBegin(GL_LINE_STRIP);
+
+ BOOST_FOREACH(P const& p, ls)
+ {
+ float x = boost::geometry::get<0>(p);
+ float y = boost::geometry::get<1>(p);
+ float z = depth(cont);
+ glVertex3f(x, y, z);
+ }
+
+ glEnd();
+}
+
+void draw_segment(S const& s)
+{
+ float x1 = boost::geometry::get<0, 0>(s);
+ float y1 = boost::geometry::get<0, 1>(s);
+ float x2 = boost::geometry::get<1, 0>(s);
+ float y2 = boost::geometry::get<1, 1>(s);
+ float z = depth(cont);
+
+ glBegin(GL_LINES);
+ glVertex3f(x1, y1, z);
+ glVertex3f(x2, y2, z);
+ glEnd();
+}
+
+template <typename Box>
+void draw_box(Box const& box)
+{
+ float x1 = boost::geometry::get<bg::min_corner, 0>(box);
+ float y1 = boost::geometry::get<bg::min_corner, 1>(box);
+ float x2 = boost::geometry::get<bg::max_corner, 0>(box);
+ float y2 = boost::geometry::get<bg::max_corner, 1>(box);
+ float z = depth(cont);
+
+ // search box
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(x1, y1, z);
+ glVertex3f(x2, y1, z);
+ glVertex3f(x2, y2, z);
+ glVertex3f(x1, y2, z);
+ glEnd();
+}
+
+template <typename Range>
+void draw_ring(Range const& range)
+{
+ float z = depth(cont);
+
+ // search box
+ glBegin(GL_LINE_LOOP);
+
+ BOOST_FOREACH(P const& p, range)
+ {
+ float x = boost::geometry::get<0>(p);
+ float y = boost::geometry::get<1>(p);
+
+ glVertex3f(x, y, z);
+ }
+ glEnd();
+}
+
+template <typename Polygon>
+void draw_polygon(Polygon const& polygon)
+{
+ draw_ring(polygon.outer());
+ BOOST_FOREACH(Poly::ring_type const& r, polygon.inners())
+ draw_ring(r);
+}
+
+template <typename MultiPolygon>
+void draw_multi_polygon(MultiPolygon const& multi_polygon)
+{
+ BOOST_FOREACH(Poly const& p, multi_polygon)
+ draw_polygon(p);
+}
+
+// render the scene -> tree, if searching data available also the query geometry and result
+
+void render_scene(void)
+{
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ draw_tree(cont);
+
+ if ( search_valid )
+ {
+ glColor3f(1.0f, 0.25f, 0.0f);
+
+ if ( query_mode == qm_knn )
+ draw_knn_area(0, 0);
+ else if ( query_mode == qm_knnb )
+ draw_box(search_box);
+ else if ( query_mode == qm_knns )
+ draw_segment(search_segment);
+ else if ( query_mode == qm_ri )
+ draw_ring(search_ring);
+ else if ( query_mode == qm_pi )
+ draw_polygon(search_poly);
+ else if ( query_mode == qm_mpi )
+ draw_multi_polygon(search_multi_poly);
+ else if ( query_mode == qm_si )
+ draw_segment(search_segment);
+ else if ( query_mode == qm_lsi )
+ draw_linestring(search_linestring);
+ else if ( query_mode == qm_path )
+ draw_linestring(search_path);
+ else
+ draw_box(search_box);
+
+ glColor3f(1.0f, 0.5f, 0.0f);
+
+ draw_result(cont);
+ }
+
+ glFlush();
+}
+
+void resize(int w, int h)
+{
+ if ( h == 0 )
+ h = 1;
+
+ //float ratio = float(w) / h;
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ glViewport(0, 0, w, h);
+
+ //gluPerspective(45, ratio, 1, 1000);
+ glOrtho(-150, 150, -150, 150, -150, 150);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ /*gluLookAt(
+ 120.0f, 120.0f, 120.0f,
+ 50.0f, 50.0f, -1.0f,
+ 0.0f, 1.0f, 0.0f);*/
+ gluLookAt(
+ 50.0f, 50.0f, 75.0f,
+ 50.0f, 50.0f, -1.0f,
+ 0.0f, 1.0f, 0.0f);
+
+ glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
+ glLineWidth(1.5f);
+
+ srand(1);
+}
+
+// randomize various indexables
+
+inline void rand_val(B & b)
+{
+ float x = ( rand() % 100 );
+ float y = ( rand() % 100 );
+ float w = ( rand() % 2 ) + 1;
+ float h = ( rand() % 2 ) + 1;
+ b = B(P(x - w, y - h),P(x + w, y + h));
+}
+inline void rand_val(P & p)
+{
+ float x = ( rand() % 100 );
+ float y = ( rand() % 100 );
+ p = P(x, y);
+}
+inline void rand_val(S & s)
+{
+ float x = ( rand() % 100 );
+ float y = ( rand() % 100 );
+ float w = ( rand() % 2 + 1) * (rand() % 2 ? 1.0f : -1.0f);
+ float h = ( rand() % 2 + 1) * (rand() % 2 ? 1.0f : -1.0f);
+ s = S(P(x - w, y - h),P(x + w, y + h));
+}
+
+// more higher-level visitors
+
+struct insert_random_value_v : boost::static_visitor<>
+{
+ template <typename V>
+ void operator()(containers<V> & c) const
+ {
+ V v;
+ rand_val(v);
+
+ boost::geometry::index::insert(c.tree, v);
+ c.values.push_back(v);
+
+ std::cout << "inserted: ";
+ bgi::detail::utilities::print_indexable(std::cout, v);
+ std::cout << '\n';
+
+ std::cout << ( bgi::detail::rtree::utilities::are_boxes_ok(c.tree) ? "boxes OK\n" : "WRONG BOXES!\n" );
+ std::cout << ( bgi::detail::rtree::utilities::are_levels_ok(c.tree) ? "levels OK\n" : "WRONG LEVELS!\n" );
+ std::cout << "\n";
+ }
+};
+template <typename Cont>
+inline void insert_random_value(Cont & cont)
+{
+ return boost::apply_visitor(insert_random_value_v(), cont);
+}
+
+struct remove_random_value_v : boost::static_visitor<>
+{
+ template <typename V>
+ void operator()(containers<V> & c) const
+ {
+ if ( c.values.empty() )
+ return;
+
+ size_t i = rand() % c.values.size();
+ V v = c.values[i];
+
+ c.tree.remove(v);
+ c.values.erase(c.values.begin() + i);
+
+ std::cout << "removed: ";
+ bgi::detail::utilities::print_indexable(std::cout, v);
+ std::cout << '\n';
+
+ std::cout << ( bgi::detail::rtree::utilities::are_boxes_ok(c.tree) ? "boxes OK\n" : "WRONG BOXES!\n" );
+ std::cout << ( bgi::detail::rtree::utilities::are_levels_ok(c.tree) ? "levels OK\n" : "WRONG LEVELS!\n" );
+ std::cout << "\n";
+ }
+};
+template <typename Cont>
+inline void remove_random_value(Cont & cont)
+{
+ return boost::apply_visitor(remove_random_value_v(), cont);
+}
+
+// handle mouse input
+
+void mouse(int button, int state, int /*x*/, int /*y*/)
+{
+ if ( button == GLUT_LEFT_BUTTON && state == GLUT_DOWN )
+ {
+ insert_random_value(cont);
+ search_valid = false;
+ }
+ else if ( button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN )
+ {
+ remove_random_value(cont);
+ search_valid = false;
+ }
+ else if ( button == GLUT_MIDDLE_BUTTON && state == GLUT_DOWN )
+ {
+ search();
+ }
+
+ glutPostRedisplay();
+}
+
+// more higher-level visitors
+
+struct insert_random_values_v : boost::static_visitor<>
+{
+ template <typename V>
+ void operator()(containers<V> & c) const
+ {
+ for ( size_t i = 0 ; i < 35 ; ++i )
+ {
+ V v;
+ rand_val(v);
+
+ c.tree.insert(v);
+ c.values.push_back(v);
+
+ std::cout << "inserted: ";
+ bgi::detail::utilities::print_indexable(std::cout, v);
+ std::cout << '\n';
+ }
+
+ std::cout << ( bgi::detail::rtree::utilities::are_boxes_ok(c.tree) ? "boxes OK\n" : "WRONG BOXES!\n" );
+ std::cout << ( bgi::detail::rtree::utilities::are_levels_ok(c.tree) ? "levels OK\n" : "WRONG LEVELS!\n" );
+ std::cout << "\n";
+ }
+};
+template <typename Cont>
+inline void insert_random_values(Cont & cont)
+{
+ return boost::apply_visitor(insert_random_values_v(), cont);
+}
+
+struct bulk_insert_random_values_v : boost::static_visitor<>
+{
+ template <typename V>
+ void operator()(containers<V> & c) const
+ {
+ c.values.clear();
+
+ for ( size_t i = 0 ; i < 35 ; ++i )
+ {
+ V v;
+ rand_val(v);
+
+ c.values.push_back(v);
+
+ std::cout << "inserted: ";
+ bgi::detail::utilities::print_indexable(std::cout, v);
+ std::cout << '\n';
+ }
+
+ create(c.tree, c.values);
+
+ std::cout << ( bgi::detail::rtree::utilities::are_boxes_ok(c.tree) ? "boxes OK\n" : "WRONG BOXES!\n" );
+ std::cout << ( bgi::detail::rtree::utilities::are_levels_ok(c.tree) ? "levels OK\n" : "WRONG LEVELS!\n" );
+ std::cout << "\n";
+ }
+
+ template <typename Tree, typename Values>
+ void create(Tree & tree, Values const& values) const
+ {
+ Tree t(values);
+ tree = boost::move(t);
+ }
+};
+template <typename Cont>
+inline void bulk_insert_random_values(Cont & cont)
+{
+ return boost::apply_visitor(bulk_insert_random_values_v(), cont);
+}
+
+// handle keyboard input
+
+std::string current_line;
+
+void keyboard(unsigned char key, int /*x*/, int /*y*/)
+{
+ if ( key == '\r' || key == '\n' )
+ {
+ if ( current_line == "storeb" )
+ {
+ cont = containers<B>();
+ glutPostRedisplay();
+ }
+#ifdef ENABLE_POINTS_AND_SEGMENTS
+ else if ( current_line == "storep" )
+ {
+ cont = containers<P>();
+ glutPostRedisplay();
+ }
+ else if ( current_line == "stores" )
+ {
+ cont = containers<S>();
+ glutPostRedisplay();
+ }
+#endif
+ else if ( current_line == "t" )
+ {
+ std::cout << "\n";
+ print_tree(cont);
+ std::cout << "\n";
+ }
+ else if ( current_line == "rand" )
+ {
+ insert_random_values(cont);
+ search_valid = false;
+
+ glutPostRedisplay();
+ }
+ else if ( current_line == "bulk" )
+ {
+ bulk_insert_random_values(cont);
+ search_valid = false;
+
+ glutPostRedisplay();
+ }
+ else
+ {
+ if ( current_line == "knn" )
+ query_mode = qm_knn;
+ else if ( current_line == "knnb" )
+ query_mode = qm_knnb;
+ else if ( current_line == "knns" )
+ query_mode = qm_knns;
+ else if ( current_line == "c" )
+ query_mode = qm_c;
+ else if ( current_line == "d" )
+ query_mode = qm_d;
+ else if ( current_line == "i" )
+ query_mode = qm_i;
+ else if ( current_line == "o" )
+ query_mode = qm_o;
+ else if ( current_line == "w" )
+ query_mode = qm_w;
+ else if ( current_line == "nc" )
+ query_mode = qm_nc;
+ else if ( current_line == "nd" )
+ query_mode = qm_nd;
+ else if ( current_line == "ni" )
+ query_mode = qm_ni;
+ else if ( current_line == "no" )
+ query_mode = qm_no;
+ else if ( current_line == "nw" )
+ query_mode = qm_nw;
+ else if ( current_line == "all" )
+ query_mode = qm_all;
+ else if ( current_line == "ri" )
+ query_mode = qm_ri;
+ else if ( current_line == "pi" )
+ query_mode = qm_pi;
+ else if ( current_line == "mpi" )
+ query_mode = qm_mpi;
+ else if ( current_line == "si" )
+ query_mode = qm_si;
+ else if ( current_line == "lsi" )
+ query_mode = qm_lsi;
+ else if ( current_line == "path" )
+ query_mode = qm_path;
+
+ search();
+ glutPostRedisplay();
+ }
+
+ current_line.clear();
+ std::cout << '\n';
+ }
+ else
+ {
+ current_line += key;
+ std::cout << key;
+ }
+}
+
+// main function
+
+int main(int argc, char **argv)
+{
+ glutInit(&argc, argv);
+ glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
+ glutInitWindowPosition(100,100);
+ glutInitWindowSize(600, 600);
+ glutCreateWindow("boost::geometry::index::rtree GLUT test");
+
+ glutDisplayFunc(render_scene);
+ glutReshapeFunc(resize);
+ glutMouseFunc(mouse);
+ glutKeyboardFunc(keyboard);
+
+ glutMainLoop();
+
+ return 0;
+}
diff --git a/libs/geometry/index/example/random_test.cpp b/libs/geometry/index/example/random_test.cpp
new file mode 100644
index 0000000000..1c40d1553a
--- /dev/null
+++ b/libs/geometry/index/example/random_test.cpp
@@ -0,0 +1,185 @@
+// Boost.Geometry Index
+// Additional tests
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <iostream>
+
+#define BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/index/rtree.hpp>
+
+#include <boost/foreach.hpp>
+#include <boost/random.hpp>
+
+int main()
+{
+ namespace bg = boost::geometry;
+ namespace bgi = bg::index;
+
+ size_t values_count = 1000000;
+ size_t queries_count = 10000;
+ size_t nearest_queries_count = 10000;
+ unsigned neighbours_count = 10;
+
+ std::vector< std::pair<float, float> > coords;
+
+ //randomize values
+ {
+ boost::mt19937 rng;
+ //rng.seed(static_cast<unsigned int>(std::time(0)));
+ float max_val = static_cast<float>(values_count / 2);
+ boost::uniform_real<float> range(-max_val, max_val);
+ boost::variate_generator<boost::mt19937&, boost::uniform_real<float> > rnd(rng, range);
+
+ coords.reserve(values_count);
+
+ std::cout << "randomizing data\n";
+ for ( size_t i = 0 ; i < values_count ; ++i )
+ {
+ coords.push_back(std::make_pair(rnd(), rnd()));
+ }
+ std::cout << "randomized\n";
+ }
+
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P;
+ typedef bg::model::box<P> B;
+ typedef bgi::rtree<B, bgi::linear<16, 4> > RT;
+ //typedef bgi::rtree<B, bgi::quadratic<8, 3> > RT;
+ //typedef bgi::rtree<B, bgi::rstar<8, 3> > RT;
+
+ std::cout << "sizeof rtree: " << sizeof(RT) << std::endl;
+
+ {
+ RT t;
+
+ // inserting
+ {
+ for (size_t i = 0 ; i < values_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ B b(P(x - 0.5f, y - 0.5f), P(x + 0.5f, y + 0.5f));
+
+ t.insert(b);
+ }
+ std::cout << "inserted values: " << values_count << '\n';
+ }
+
+ std::vector<B> result;
+ result.reserve(100);
+
+ // test
+ std::vector<size_t> spatial_query_data;
+ size_t spatial_query_index = 0;
+
+ {
+ size_t found_count = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ t.query(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10))), std::back_inserter(result));
+
+ // test
+ spatial_query_data.push_back(result.size());
+ found_count += result.size();
+ }
+ std::cout << "spatial queries found: " << found_count << '\n';
+ }
+
+#ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+ {
+ size_t found_count = 0;
+ for (size_t i = 0 ; i < queries_count ; ++i )
+ {
+ float x = coords[i].first;
+ float y = coords[i].second;
+ result.clear();
+ std::copy(t.qbegin_(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10)))),
+ t.qend_(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10)))),
+ std::back_inserter(result));
+
+ // test
+ if ( spatial_query_data[spatial_query_index] != result.size() )
+ std::cout << "Spatial query error - should be: " << spatial_query_data[spatial_query_index] << ", is: " << result.size() << '\n';
+ ++spatial_query_index;
+ found_count += result.size();
+ }
+ std::cout << "incremental spatial queries found: " << found_count << '\n';
+ }
+#endif
+
+ // test
+ std::vector<float> nearest_query_data;
+ size_t nearest_query_data_index = 0;
+
+ {
+ size_t found_count = 0;
+ for (size_t i = 0 ; i < nearest_queries_count ; ++i )
+ {
+ float x = coords[i].first + 100;
+ float y = coords[i].second + 100;
+ result.clear();
+ t.query(bgi::nearest(P(x, y), neighbours_count), std::back_inserter(result));
+
+ // test
+ {
+ float max_dist = 0;
+ BOOST_FOREACH(B const& b, result)
+ {
+ float curr_dist = bgi::detail::comparable_distance_near(P(x, y), b);
+ if ( max_dist < curr_dist )
+ max_dist = curr_dist;
+ }
+ nearest_query_data.push_back(max_dist);
+ }
+ found_count += result.size();
+ }
+ std::cout << "nearest queries found: " << found_count << '\n';
+ }
+
+#ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+ {
+ size_t found_count = 0;
+ for (size_t i = 0 ; i < nearest_queries_count ; ++i )
+ {
+ float x = coords[i].first + 100;
+ float y = coords[i].second + 100;
+ result.clear();
+
+ std::copy(t.qbegin_(bgi::nearest(P(x, y), neighbours_count)),
+ t.qend_(bgi::nearest(P(x, y), neighbours_count)),
+ std::back_inserter(result));
+
+ // test
+ {
+ float max_dist = 0;
+ BOOST_FOREACH(B const& b, result)
+ {
+ float curr_dist = bgi::detail::comparable_distance_near(P(x, y), b);
+ if ( max_dist < curr_dist )
+ max_dist = curr_dist;
+ }
+ if ( nearest_query_data_index < nearest_query_data.size() &&
+ nearest_query_data[nearest_query_data_index] != max_dist )
+ std::cout << "Max distance error - should be: " << nearest_query_data[nearest_query_data_index] << ", and is: " << max_dist << "\n";
+ ++nearest_query_data_index;
+ }
+ found_count += result.size();
+ }
+ std::cout << "incremental nearest queries found: " << found_count << '\n';
+ }
+#endif
+
+ std::cout << "finished\n";
+ }
+
+ return 0;
+}
diff --git a/libs/geometry/index/example/serialize.cpp b/libs/geometry/index/example/serialize.cpp
new file mode 100644
index 0000000000..11ce08bc00
--- /dev/null
+++ b/libs/geometry/index/example/serialize.cpp
@@ -0,0 +1,168 @@
+// Boost.Geometry Index
+// Additional tests
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <iostream>
+#include <fstream>
+
+#define BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/index/rtree.hpp>
+#include <boost/geometry/index/detail/rtree/utilities/statistics.hpp>
+
+#include <boost/archive/binary_oarchive.hpp>
+#include <boost/archive/binary_iarchive.hpp>
+#include <boost/archive/xml_oarchive.hpp>
+#include <boost/archive/xml_iarchive.hpp>
+#include <boost/serialization/vector.hpp>
+
+#include <boost/foreach.hpp>
+#include <boost/timer.hpp>
+
+template <typename T, size_t I = 0, size_t S = boost::tuples::length<T>::value>
+struct print_tuple
+{
+ template <typename Os>
+ static inline Os & apply(Os & os, T const& t)
+ {
+ os << boost::get<I>(t) << ", ";
+ return print_tuple<T, I+1>::apply(os, t);
+ }
+};
+
+template <typename T, size_t S>
+struct print_tuple<T, S, S>
+{
+ template <typename Os>
+ static inline Os & apply(Os & os, T const&)
+ {
+ return os;
+ }
+};
+
+int main()
+{
+ namespace bg = boost::geometry;
+ namespace bgi = bg::index;
+
+ typedef boost::tuple<std::size_t, std::size_t, std::size_t, std::size_t, std::size_t, std::size_t> S;
+
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P;
+ typedef bg::model::box<P> B;
+ typedef B V;
+ //typedef bgi::rtree<V, bgi::linear<16> > RT;
+ //typedef bgi::rtree<V, bgi::quadratic<8, 3> > RT;
+ //typedef bgi::rtree<V, bgi::rstar<8, 3> > RT;
+ typedef bgi::rtree<V, bgi::dynamic_linear > RT;
+
+ //RT tree;
+ RT tree(bgi::dynamic_linear(16));
+ std::vector<V> vect;
+
+ boost::timer t;
+
+ //insert values
+ {
+ for ( double x = 0 ; x < 1000 ; x += 1 )
+ for ( double y = 0 ; y < 1000 ; y += 1 )
+ vect.push_back(B(P(x, y), P(x+0.5, y+0.5)));
+ RT tmp(vect, tree.parameters());
+ tree = boost::move(tmp);
+ }
+ B q(P(5, 5), P(6, 6));
+ S s;
+
+ std::cout << "vector and tree created in: " << t.elapsed() << std::endl;
+
+ print_tuple<S>::apply(std::cout, bgi::detail::rtree::utilities::statistics(tree)) << std::endl;
+ std::cout << boost::get<0>(s) << std::endl;
+ BOOST_FOREACH(V const& v, tree | bgi::adaptors::queried(bgi::intersects(q)))
+ std::cout << bg::wkt<V>(v) << std::endl;
+
+ // save
+ {
+ std::ofstream ofs("serialized_vector.bin", std::ios::binary | std::ios::trunc);
+ boost::archive::binary_oarchive oa(ofs);
+ t.restart();
+ oa << vect;
+ std::cout << "vector saved to bin in: " << t.elapsed() << std::endl;
+ }
+ {
+ std::ofstream ofs("serialized_tree.bin", std::ios::binary | std::ios::trunc);
+ boost::archive::binary_oarchive oa(ofs);
+ t.restart();
+ oa << tree;
+ std::cout << "tree saved to bin in: " << t.elapsed() << std::endl;
+ }
+ {
+ std::ofstream ofs("serialized_tree.xml", std::ios::trunc);
+ boost::archive::xml_oarchive oa(ofs);
+ t.restart();
+ oa << boost::serialization::make_nvp("rtree", tree);
+ std::cout << "tree saved to xml in: " << t.elapsed() << std::endl;
+ }
+
+ t.restart();
+ vect.clear();
+ std::cout << "vector cleared in: " << t.elapsed() << std::endl;
+
+ t.restart();
+ tree.clear();
+ std::cout << "tree cleared in: " << t.elapsed() << std::endl;
+
+ // load
+
+ {
+ std::ifstream ifs("serialized_vector.bin", std::ios::binary);
+ boost::archive::binary_iarchive ia(ifs);
+ t.restart();
+ ia >> vect;
+ std::cout << "vector loaded from bin in: " << t.elapsed() << std::endl;
+ t.restart();
+ RT tmp(vect, tree.parameters());
+ tree = boost::move(tmp);
+ std::cout << "tree rebuilt from vector in: " << t.elapsed() << std::endl;
+ }
+
+ t.restart();
+ tree.clear();
+ std::cout << "tree cleared in: " << t.elapsed() << std::endl;
+
+ {
+ std::ifstream ifs("serialized_tree.bin", std::ios::binary);
+ boost::archive::binary_iarchive ia(ifs);
+ t.restart();
+ ia >> tree;
+ std::cout << "tree loaded from bin in: " << t.elapsed() << std::endl;
+ }
+
+ std::cout << "loaded from bin" << std::endl;
+ print_tuple<S>::apply(std::cout, bgi::detail::rtree::utilities::statistics(tree)) << std::endl;
+ BOOST_FOREACH(V const& v, tree | bgi::adaptors::queried(bgi::intersects(q)))
+ std::cout << bg::wkt<V>(v) << std::endl;
+
+ t.restart();
+ tree.clear();
+ std::cout << "tree cleared in: " << t.elapsed() << std::endl;
+
+ {
+ std::ifstream ifs("serialized_tree.xml");
+ boost::archive::xml_iarchive ia(ifs);
+ t.restart();
+ ia >> boost::serialization::make_nvp("rtree", tree);
+ std::cout << "tree loaded from xml in: " << t.elapsed() << std::endl;
+ }
+
+ std::cout << "loaded from xml" << std::endl;
+ print_tuple<S>::apply(std::cout, bgi::detail::rtree::utilities::statistics(tree)) << std::endl;
+ BOOST_FOREACH(V const& v, tree | bgi::adaptors::queried(bgi::intersects(q)))
+ std::cout << bg::wkt<V>(v) << std::endl;
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/Jamfile.v2 b/libs/geometry/index/test/Jamfile.v2
new file mode 100644
index 0000000000..c2a192e1c4
--- /dev/null
+++ b/libs/geometry/index/test/Jamfile.v2
@@ -0,0 +1,27 @@
+# Boost.Geometry Index
+#
+# Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+#
+# 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)
+
+import testing ;
+
+project boost-geometry-index-test
+ :
+ requirements
+ <include>. # libs/geometry/index/test
+ <include>../../test # libs/geometry/test
+ #<include>../../../../boost/geometry/extensions/contrib/ttmath
+ <toolset>msvc:<asynch-exceptions>on
+ ;
+
+test-suite boost-geometry-index-varray
+ :
+ [ run varray_old.cpp ]
+ [ run varray.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ ;
+
+build-project algorithms ;
+build-project rtree ;
diff --git a/libs/geometry/index/test/algorithms/Jamfile.v2 b/libs/geometry/index/test/algorithms/Jamfile.v2
new file mode 100644
index 0000000000..1fe75c6fc5
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/Jamfile.v2
@@ -0,0 +1,20 @@
+# Boost.Geometry Index
+#
+# Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+#
+# 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)
+
+test-suite boost-geometry-index-algorithms
+ :
+ [ run content.cpp ]
+ [ run intersection_content.cpp ] # this tests overlap() too
+ [ run is_valid.cpp ]
+ [ run margin.cpp ]
+ #[ run minmaxdist.cpp ]
+ [ run union_content.cpp ]
+ [ run segment_intersection.cpp ]
+ [ run path_intersection.cpp ]
+ ;
+
diff --git a/libs/geometry/index/test/algorithms/content.cpp b/libs/geometry/index/test/algorithms/content.cpp
new file mode 100644
index 0000000000..07644656cf
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/content.cpp
@@ -0,0 +1,71 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <algorithms/test_content.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+//#define BOOST_GEOMETRY_TEST_DEBUG
+
+void test_large_integers()
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> int_point_type;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> double_point_type;
+
+ bg::model::box<int_point_type> int_box;
+ bg::model::box<double_point_type> double_box;
+
+ std::string const box_li = "POLYGON((1536119 192000, 1872000 528000))";
+ bg::read_wkt(box_li, int_box);
+ bg::read_wkt(box_li, double_box);
+
+ double int_value = bgi::detail::content(int_box);
+ double double_value = bgi::detail::content(double_box);
+
+ BOOST_CHECK_CLOSE(int_value, double_value, 0.0001);
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> P2ic;
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2fc;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P2dc;
+
+ typedef bg::model::point<int, 3, bg::cs::cartesian> P3ic;
+ typedef bg::model::point<float, 3, bg::cs::cartesian> P3fc;
+ typedef bg::model::point<double, 3, bg::cs::cartesian> P3dc;
+
+ test_content(P2ic(0, 0), 0);
+ test_content(P2fc(0, 0), 0);
+ test_content(P2dc(0, 0), 0);
+ test_content(P3ic(0, 0, 0), 0);
+ test_content(P3fc(0, 0, 0), 0);
+ test_content(P3dc(0, 0, 0), 0);
+
+ test_geometry<bg::model::box<P2ic> >("POLYGON((0 1,2 4))", 6.0);
+ test_geometry<bg::model::box<P2fc> >("POLYGON((0 1,2 4))", 6.0);
+ test_geometry<bg::model::box<P2dc> >("POLYGON((0 1,2 4))", 6.0);
+ test_geometry<bg::model::box<P3ic> >("POLYGON((0 1 2,2 4 6))", 24.0);
+ test_geometry<bg::model::box<P3fc> >("POLYGON((0 1 2,2 4 6))", 24.0);
+ test_geometry<bg::model::box<P3dc> >("POLYGON((0 1 2,2 4 6))", 24.0);
+
+#ifdef HAVE_TTMATH
+ typedef bg::model::point<ttmath_big, 2, bg::cs::cartesian> P2ttmc;
+ typedef bg::model::point<ttmath_big, 3, bg::cs::cartesian> P3ttmc;
+
+ test_geometry<bg::model::box<P2ttmc> >("POLYGON((0 1,2 4))", 6.0);
+ test_geometry<bg::model::box<P3ttmc> >("POLYGON((0 1 2,2 4 6))", 24.0);
+#endif
+
+ test_large_integers();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/algorithms/intersection_content.cpp b/libs/geometry/index/test/algorithms/intersection_content.cpp
new file mode 100644
index 0000000000..a668af7908
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/intersection_content.cpp
@@ -0,0 +1,70 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <algorithms/test_intersection_content.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+//#define BOOST_GEOMETRY_TEST_DEBUG
+
+void test_large_integers()
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> int_point_type;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> double_point_type;
+
+ bg::model::box<int_point_type> int_box1, int_box2;
+ bg::model::box<double_point_type> double_box1, double_box2;
+
+ std::string const box_li1 = "POLYGON((1536119 192000, 1872000 528000))";
+ std::string const box_li2 = "POLYGON((1701234 368250, 2673400 777400))";
+ bg::read_wkt(box_li1, int_box1);
+ bg::read_wkt(box_li1, double_box1);
+ bg::read_wkt(box_li2, int_box2);
+ bg::read_wkt(box_li2, double_box2);
+
+ double int_value = bgi::detail::intersection_content(int_box1, int_box2);
+ double double_value = bgi::detail::intersection_content(double_box1, double_box2);
+
+ BOOST_CHECK_CLOSE(int_value, double_value, 0.0001);
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> P2ic;
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2fc;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P2dc;
+
+ typedef bg::model::point<int, 3, bg::cs::cartesian> P3ic;
+ typedef bg::model::point<float, 3, bg::cs::cartesian> P3fc;
+ typedef bg::model::point<double, 3, bg::cs::cartesian> P3dc;
+
+ test_geometry<bg::model::box<P2ic> >("POLYGON((0 1,2 4))", "POLYGON((1 2,3 5))", 2.0);
+ test_geometry<bg::model::box<P2fc> >("POLYGON((0 1,2 4))", "POLYGON((1 2,3 5))", 2.0);
+ test_geometry<bg::model::box<P2dc> >("POLYGON((0 1,2 4))", "POLYGON((1 2,3 5))", 2.0);
+ test_geometry<bg::model::box<P3ic> >("POLYGON((0 1 2,2 4 6))", "POLYGON((1 2 3,3 5 7))", 6.0);
+ test_geometry<bg::model::box<P3fc> >("POLYGON((0 1 2,2 4 6))", "POLYGON((1 2 3,3 5 7))", 6.0);
+ test_geometry<bg::model::box<P3dc> >("POLYGON((0 1 2,2 4 6))", "POLYGON((1 2 3,3 5 7))", 6.0);
+
+ test_geometry<bg::model::box<P2dc> >("POLYGON((0 1,2 4))", "POLYGON((2 1,3 4))", 0.0);
+ test_geometry<bg::model::box<P2dc> >("POLYGON((0 1,2 4))", "POLYGON((2 4,3 5))", 0.0);
+
+#ifdef HAVE_TTMATH
+ typedef bg::model::point<ttmath_big, 2, bg::cs::cartesian> P2ttmc;
+ typedef bg::model::point<ttmath_big, 3, bg::cs::cartesian> P3ttmc;
+
+ test_geometry<bg::model::box<P2ttmc> >("POLYGON((0 1,2 4))", "POLYGON((1 2,3 5))", 2.0);
+ test_geometry<bg::model::box<P3ttmc> >("POLYGON((0 1 2,2 4 6))", "POLYGON((1 2 3,3 5 7))", 6.0);
+#endif
+
+ test_large_integers();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/algorithms/is_valid.cpp b/libs/geometry/index/test/algorithms/is_valid.cpp
new file mode 100644
index 0000000000..4c0584a0f0
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/is_valid.cpp
@@ -0,0 +1,110 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <algorithm>
+
+#include <geometry_index_test_common.hpp>
+
+#include <boost/geometry/index/detail/algorithms/is_valid.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+//#define BOOST_GEOMETRY_TEST_DEBUG
+
+template <typename Geometry>
+void test(Geometry const& geometry, bool expected_value)
+{
+ bool value = bgi::detail::is_valid(geometry);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::ostringstream out;
+ out << typeid(typename bg::coordinate_type<Geometry>::type).name()
+ << " "
+ << typeid(bool).name()
+ << " "
+ << "is_valid : " << value
+ << std::endl;
+ std::cout << out.str();
+#endif
+
+ BOOST_CHECK(value == expected_value);
+}
+
+template <typename Box>
+void test_box(std::string const& wkt, bool expected_value)
+{
+ Box box;
+ bg::read_wkt(wkt, box);
+ test(box, expected_value);
+ typename bg::point_type<Box>::type temp_pt;
+ temp_pt = box.min_corner();
+ box.min_corner() = box.max_corner();
+ box.max_corner() = temp_pt;
+ test(box, !expected_value);
+}
+
+void test_large_integers()
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> int_point_type;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> double_point_type;
+
+ bg::model::box<int_point_type> int_box;
+ bg::model::box<double_point_type> double_box;
+
+ std::string const box_li = "POLYGON((1536119 192000, 1872000 528000))";
+ bg::read_wkt(box_li, int_box);
+ bg::read_wkt(box_li, double_box);
+
+ BOOST_CHECK(bgi::detail::is_valid(int_box) == bgi::detail::is_valid(double_box));
+
+ std::string const box_li2 = "POLYGON((1872000 528000, 1536119 192000))";
+ bg::read_wkt(box_li2, int_box);
+ bg::read_wkt(box_li2, double_box);
+
+ BOOST_CHECK(bgi::detail::is_valid(int_box) == bgi::detail::is_valid(double_box));
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> P2ic;
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2fc;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P2dc;
+
+ typedef bg::model::point<int, 3, bg::cs::cartesian> P3ic;
+ typedef bg::model::point<float, 3, bg::cs::cartesian> P3fc;
+ typedef bg::model::point<double, 3, bg::cs::cartesian> P3dc;
+
+ test(P2ic(0, 0), true);
+ test(P2fc(0, 0), true);
+ test(P2dc(0, 0), true);
+ test(P3ic(0, 0, 0), true);
+ test(P3fc(0, 0, 0), true);
+ test(P3dc(0, 0, 0), true);
+
+ test_box<bg::model::box<P2ic> >("POLYGON((0 1,2 4))", true);
+ test_box<bg::model::box<P2fc> >("POLYGON((0 1,2 4))", true);
+ test_box<bg::model::box<P2dc> >("POLYGON((0 1,2 4))", true);
+ test_box<bg::model::box<P3ic> >("POLYGON((0 1 2,2 4 6))", true);
+ test_box<bg::model::box<P3fc> >("POLYGON((0 1 2,2 4 6))", true);
+ test_box<bg::model::box<P3dc> >("POLYGON((0 1 2,2 4 6))", true);
+
+#ifdef HAVE_TTMATH
+ typedef bg::model::point<ttmath_big, 2, bg::cs::cartesian> P2ttmc;
+ typedef bg::model::point<ttmath_big, 3, bg::cs::cartesian> P3ttmc;
+
+ test_geometry<bg::model::box<P2ttmc> >("POLYGON((0 1,2 4))", true);
+ test_geometry<bg::model::box<P3ttmc> >("POLYGON((0 1 2,2 4 6))", true);
+#endif
+
+ test_large_integers();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/algorithms/margin.cpp b/libs/geometry/index/test/algorithms/margin.cpp
new file mode 100644
index 0000000000..e1e9eab09b
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/margin.cpp
@@ -0,0 +1,66 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <algorithms/test_margin.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+//#define BOOST_GEOMETRY_TEST_DEBUG
+
+void test_large_integers()
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> int_point_type;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> double_point_type;
+
+ bg::model::box<int_point_type> int_box;
+ bg::model::box<double_point_type> double_box;
+
+ std::string const box_li = "POLYGON((1536119 192000, 1872000 528000))";
+ bg::read_wkt(box_li, int_box);
+ bg::read_wkt(box_li, double_box);
+
+ double int_value = bgi::detail::comparable_margin(int_box);
+ double double_value = bgi::detail::comparable_margin(double_box);
+
+ BOOST_CHECK_CLOSE(int_value, double_value, 0.0001);
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> P2ic;
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2fc;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P2dc;
+
+ typedef bg::model::point<int, 3, bg::cs::cartesian> P3ic;
+ typedef bg::model::point<float, 3, bg::cs::cartesian> P3fc;
+ typedef bg::model::point<double, 3, bg::cs::cartesian> P3dc;
+
+ test_geometry<bg::model::box<P2ic> >("POLYGON((0 1,2 4))", 5);
+ test_geometry<bg::model::box<P2fc> >("POLYGON((0 1,2 4))", 5.0);
+ test_geometry<bg::model::box<P2dc> >("POLYGON((0 1,2 4))", 5.0);
+ test_geometry<bg::model::box<P3ic> >("POLYGON((0 1 2,2 4 6))", 9);
+ test_geometry<bg::model::box<P3fc> >("POLYGON((0 1 2,2 4 6))", 9.0);
+ test_geometry<bg::model::box<P3dc> >("POLYGON((0 1 2,2 4 6))", 9.0);
+
+#ifdef HAVE_TTMATH
+ typedef bg::model::point<ttmath_big, 2, bg::cs::cartesian> P2ttmc;
+ typedef bg::model::point<ttmath_big, 3, bg::cs::cartesian> P3ttmc;
+
+ test_geometry<bg::model::box<P2ttmc> >("POLYGON((0 1,2 4))", 10.0);
+ test_geometry<bg::model::box<P3ttmc> >("POLYGON((0 1 2,2 4 6))", 52.0);
+#endif
+
+ test_large_integers();
+
+ // test_empty_input<bg::model::d2::point_xy<int> >();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/algorithms/minmaxdist.cpp b/libs/geometry/index/test/algorithms/minmaxdist.cpp
new file mode 100644
index 0000000000..4534b2f3c3
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/minmaxdist.cpp
@@ -0,0 +1,101 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <algorithm>
+
+#include <geometry_index_test_common.hpp>
+
+#include <boost/geometry/index/detail/algorithms/minmaxdist.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+#define BOOST_GEOMETRY_TEST_DEBUG
+
+template <typename Point, typename Indexable>
+void test(Point const& pt, Indexable const& indexable,
+ typename bg::default_distance_result<Point, Indexable>::type expected_value)
+{
+ typename bg::default_distance_result<Point, Indexable>::type value = bgi::detail::minmaxdist(pt, indexable);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::ostringstream out;
+ out << typeid(typename bg::coordinate_type<Point>::type).name()
+ << " "
+ << typeid(typename bg::coordinate_type<Indexable>::type).name()
+ << " "
+ << typeid(bg::default_distance_result<Point, Indexable>::type).name()
+ << " "
+ << "minmaxdist : " << value
+ << std::endl;
+ std::cout << out.str();
+#endif
+
+ BOOST_CHECK_CLOSE(value, expected_value, 0.0001);
+}
+
+template <typename Indexable, typename Point>
+void test_indexable(Point const& pt, std::string const& wkt,
+ typename bg::default_distance_result<Point, Indexable>::type expected_value)
+{
+ Indexable indexable;
+ bg::read_wkt(wkt, indexable);
+ test(pt, indexable, expected_value);
+}
+
+void test_large_integers()
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> int_point_type;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> double_point_type;
+
+ int_point_type int_pt(0, 0);
+ double_point_type double_pt(0, 0);
+
+ bg::model::box<int_point_type> int_box;
+ bg::model::box<double_point_type> double_box;
+
+ std::string const box_li = "POLYGON((1536119 192000, 1872000 528000))";
+ bg::read_wkt(box_li, int_box);
+ bg::read_wkt(box_li, double_box);
+
+ BOOST_CHECK(bgi::detail::minmaxdist(int_pt, int_box) == bgi::detail::minmaxdist(double_pt, double_box));
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> P2ic;
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2fc;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P2dc;
+
+ typedef bg::model::point<int, 3, bg::cs::cartesian> P3ic;
+ typedef bg::model::point<float, 3, bg::cs::cartesian> P3fc;
+ typedef bg::model::point<double, 3, bg::cs::cartesian> P3dc;
+
+ test_indexable<bg::model::box<P2ic> >(P2ic(1, 2), "POLYGON((0 1,2 4))", 5.0);
+ test_indexable<bg::model::box<P2fc> >(P2fc(1, 2), "POLYGON((0 1,2 4))", 5.0);
+ test_indexable<bg::model::box<P2dc> >(P2dc(1, 2), "POLYGON((0 1,2 4))", 5.0);
+ test_indexable<bg::model::box<P3ic> >(P3ic(1, 2, 3), "POLYGON((0 1 2,2 4 6))", 14.0);
+ test_indexable<bg::model::box<P3fc> >(P3fc(1, 2, 3), "POLYGON((0 1 2,2 4 6))", 14.0);
+ test_indexable<bg::model::box<P3dc> >(P3dc(1, 2, 3), "POLYGON((0 1 2,2 4 6))", 14.0);
+
+ test_indexable<bg::model::box<P2ic> >(P2ic(1, 2), "POLYGON((1 2,3 5))", 4.0);
+
+#ifdef HAVE_TTMATH
+ typedef bg::model::point<ttmath_big, 2, bg::cs::cartesian> P2ttmc;
+ typedef bg::model::point<ttmath_big, 3, bg::cs::cartesian> P3ttmc;
+
+ test_indexable<bg::model::box<P2ttmc> >(P2ttmc(1, 2), "POLYGON((0 1,2 4))", 5.0);
+ test_indexable<bg::model::box<P3ttmc> >(P3ttmc(1, 2, 3), "POLYGON((0 1 2,2 4 6))", 14.0);
+#endif
+
+ test_large_integers();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/algorithms/path_intersection.cpp b/libs/geometry/index/test/algorithms/path_intersection.cpp
new file mode 100644
index 0000000000..2670d0775d
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/path_intersection.cpp
@@ -0,0 +1,133 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <geometry_index_test_common.hpp>
+
+#include <boost/geometry/index/detail/algorithms/path_intersection.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/geometries/segment.hpp>
+
+//#include <boost/geometry/io/wkt/read.hpp>
+
+template <typename Box, typename Linestring>
+void test_path_intersection(Box const& box, Linestring const& path,
+ bool expected_result,
+ typename bg::default_length_result<Linestring>::type expected_dist)
+{
+ typename bgi::detail::default_path_intersection_distance_type<Box, Linestring>::type dist;
+
+ bool value = bgi::detail::path_intersection(box, path, dist);
+ BOOST_CHECK(value == expected_result);
+ if ( value && expected_result )
+ BOOST_CHECK_CLOSE(dist, expected_dist, 0.0001);
+
+ if ( ::boost::size(path) == 2 )
+ {
+ typedef typename ::boost::range_value<Linestring>::type P;
+ typedef bg::model::segment<P> Seg;
+ typename bgi::detail::default_path_intersection_distance_type<Box, Seg>::type dist;
+ Seg seg(*::boost::begin(path), *(::boost::begin(path)+1));
+ bool value = bgi::detail::path_intersection(box, seg, dist);
+ BOOST_CHECK(value == expected_result);
+ if ( value && expected_result )
+ BOOST_CHECK_CLOSE(dist, expected_dist, 0.0001);
+ }
+}
+
+template <typename Box, typename Linestring>
+void test_geometry(std::string const& wkt_g, std::string const& wkt_path,
+ bool expected_result,
+ typename bg::default_length_result<Linestring>::type expected_dist)
+{
+ Box box;
+ bg::read_wkt(wkt_g, box);
+ Linestring path;
+ bg::read_wkt(wkt_path, path);
+ test_path_intersection(box, path, expected_result, expected_dist);
+}
+
+void test_large_integers()
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> int_point_type;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> double_point_type;
+
+ bg::model::box<int_point_type> int_box;
+ bg::model::box<double_point_type> double_box;
+ typedef bg::model::linestring<int_point_type> IP;
+ IP int_path;
+ typedef bg::model::linestring<double_point_type> DP;
+ DP double_path;
+
+ std::string const str_box = "POLYGON((1536119 192000, 1872000 528000))";
+ std::string const str_path = "LINESTRING(1535000 191000, 1873000 191000, 1873000 300000, 1536119 300000)";
+ bg::read_wkt(str_box, int_box);
+ bg::read_wkt(str_box, double_box);
+ bg::read_wkt(str_path, int_path);
+ bg::read_wkt(str_path, double_path);
+
+ bg::default_length_result<IP>::type int_value;
+ bool int_result = bgi::detail::path_intersection(int_box, int_path, int_value);
+ bg::default_length_result<DP>::type double_value;
+ bool double_result = bgi::detail::path_intersection(double_box, double_path, double_value);
+
+ BOOST_CHECK(int_result == double_result);
+ if ( int_result && double_result )
+ BOOST_CHECK_CLOSE(int_value, double_value, 0.0001);
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> P2ic;
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2fc;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P2dc;
+
+ typedef bg::model::point<int, 3, bg::cs::cartesian> P3ic;
+ typedef bg::model::point<float, 3, bg::cs::cartesian> P3fc;
+ typedef bg::model::point<double, 3, bg::cs::cartesian> P3dc;
+
+ typedef bg::model::linestring<P2ic> L2ic;
+ typedef bg::model::linestring<P2fc> L2fc;
+ typedef bg::model::linestring<P2dc> L2dc;
+
+ typedef bg::model::linestring<P3ic> L3ic;
+ typedef bg::model::linestring<P3fc> L3fc;
+ typedef bg::model::linestring<P3dc> L3dc;
+
+ // IMPORTANT! For 2-point linestrings comparable distance optimization is enabled!
+
+ test_geometry<bg::model::box<P2ic>, L2ic>("POLYGON((0 1,2 4))", "LINESTRING(0 0, 2 5)", true, 1.0f/5);
+ test_geometry<bg::model::box<P2fc>, L2fc>("POLYGON((0 1,2 4))", "LINESTRING(0 0, 2 5)", true, 1.0f/5);
+ test_geometry<bg::model::box<P2dc>, L2dc>("POLYGON((0 1,2 4))", "LINESTRING(0 0, 2 5)", true, 1.0/5);
+ test_geometry<bg::model::box<P3ic>, L3ic>("POLYGON((0 1 2,2 4 6))", "LINESTRING(0 0 0, 2 5 7)", true, 2.0f/7);
+ test_geometry<bg::model::box<P3fc>, L3fc>("POLYGON((0 1 2,2 4 6))", "LINESTRING(0 0 0, 2 5 7)", true, 2.0f/7);
+ test_geometry<bg::model::box<P3dc>, L3dc>("POLYGON((0 1 2,2 4 6))", "LINESTRING(0 0 0, 2 5 7)", true, 2.0/7);
+
+ test_geometry<bg::model::box<P2fc>, L2fc>("POLYGON((0 1,2 4))", "LINESTRING(0 0, 1 0, 1 5)", true, 2);
+ test_geometry<bg::model::box<P2fc>, L2fc>("POLYGON((0 1,2 4))", "LINESTRING(0 0, 3 0, 3 2, 0 2)", true, 6);
+ test_geometry<bg::model::box<P2fc>, L2fc>("POLYGON((0 1,2 4))", "LINESTRING(1 2, 3 3, 0 3)", true, 0);
+
+#ifdef HAVE_TTMATH
+ typedef bg::model::point<ttmath_big, 2, bg::cs::cartesian> P2ttmc;
+ typedef bg::model::point<ttmath_big, 3, bg::cs::cartesian> P3ttmc;
+
+ typedef bg::model::linestring<P2ttmc> L2ttmc;
+ typedef bg::model::linestring<P3ttmc> L3ttmc;
+
+ test_geometry<bg::model::box<P2ttmc>, L2ttmc>("POLYGON((0 1,2 4))", "LINESTRING(0 0, 2 5)", true, 1.0/5);
+ test_geometry<bg::model::box<P3ttmc>, L3ttmc>("POLYGON((0 1 2,2 4 6))", "LINESTRING(0 0 0, 2 5 7)", true, 2.0/7);
+#endif
+
+ test_large_integers();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/algorithms/segment_intersection.cpp b/libs/geometry/index/test/algorithms/segment_intersection.cpp
new file mode 100644
index 0000000000..1cc6dc22b5
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/segment_intersection.cpp
@@ -0,0 +1,129 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <geometry_index_test_common.hpp>
+
+#include <boost/geometry/index/detail/algorithms/segment_intersection.hpp>
+
+//#include <boost/geometry/io/wkt/read.hpp>
+
+template <typename Box, typename Point, typename RelativeDistance>
+void test_segment_intersection(Box const& box, Point const& p0, Point const& p1,
+ bool expected_result,
+ RelativeDistance expected_rel_dist)
+{
+ RelativeDistance rel_dist;
+ bool value = bgi::detail::segment_intersection(box, p0, p1, rel_dist);
+ BOOST_CHECK(value == expected_result);
+ if ( value && expected_result )
+ BOOST_CHECK_CLOSE(rel_dist, expected_rel_dist, 0.0001);
+}
+
+template <typename Box, typename Point, typename RelativeDistance>
+void test_geometry(std::string const& wkt_g, std::string const& wkt_p0, std::string const& wkt_p1,
+ bool expected_result,
+ RelativeDistance expected_rel_dist)
+{
+ Box box;
+ bg::read_wkt(wkt_g, box);
+ Point p0, p1;
+ bg::read_wkt(wkt_p0, p0);
+ bg::read_wkt(wkt_p1, p1);
+ test_segment_intersection(box, p0, p1, expected_result, expected_rel_dist);
+}
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+void test_large_integers()
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> int_point_type;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> double_point_type;
+
+ bg::model::box<int_point_type> int_box;
+ bg::model::box<double_point_type> double_box;
+ int_point_type int_p0, int_p1;
+ double_point_type double_p0, double_p1;
+
+ std::string const str_box = "POLYGON((1536119 192000, 1872000 528000))";
+ std::string const str_p0 = "POINT(1535000 191000)";
+ std::string const str_p1 = "POINT(1873000 529000)";
+ bg::read_wkt(str_box, int_box);
+ bg::read_wkt(str_box, double_box);
+ bg::read_wkt(str_p0, int_p0);
+ bg::read_wkt(str_p1, int_p1);
+ bg::read_wkt(str_p0, double_p0);
+ bg::read_wkt(str_p1, double_p1);
+
+ float int_value;
+ bool int_result = bgi::detail::segment_intersection(int_box, int_p0, int_p1, int_value);
+ double double_value;
+ bool double_result = bgi::detail::segment_intersection(double_box, double_p0, double_p1, double_value);
+ BOOST_CHECK(int_result == double_result);
+ if ( int_result && double_result )
+ BOOST_CHECK_CLOSE(int_value, double_value, 0.0001);
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> P2ic;
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2fc;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P2dc;
+
+ typedef bg::model::point<int, 3, bg::cs::cartesian> P3ic;
+ typedef bg::model::point<float, 3, bg::cs::cartesian> P3fc;
+ typedef bg::model::point<double, 3, bg::cs::cartesian> P3dc;
+
+ test_geometry<bg::model::box<P2ic>, P2ic>("POLYGON((0 1,2 4))", "POINT(0 0)", "POINT(2 5)", true, 1.0f/5);
+ test_geometry<bg::model::box<P2fc>, P2fc>("POLYGON((0 1,2 4))", "POINT(0 0)", "POINT(2 5)", true, 1.0f/5);
+ test_geometry<bg::model::box<P2dc>, P2dc>("POLYGON((0 1,2 4))", "POINT(0 0)", "POINT(2 5)", true, 1.0/5);
+ test_geometry<bg::model::box<P3ic>, P3ic>("POLYGON((0 1 2,2 4 6))", "POINT(0 0 0)", "POINT(2 5 7)", true, 2.0f/7);
+ test_geometry<bg::model::box<P3fc>, P3fc>("POLYGON((0 1 2,2 4 6))", "POINT(0 0 0)", "POINT(2 5 7)", true, 2.0f/7);
+ test_geometry<bg::model::box<P3dc>, P3dc>("POLYGON((0 1 2,2 4 6))", "POINT(0 0 0)", "POINT(2 5 7)", true, 2.0/7);
+
+ test_geometry<bg::model::box<P2ic>, P2ic>("POLYGON((0 1,2 4))", "POINT(3 4)", "POINT(0 0)", true, 1.0f/3);
+ test_geometry<bg::model::box<P2fc>, P2fc>("POLYGON((0 1,2 4))", "POINT(3 4)", "POINT(0 2)", true, 1.0f/3);
+ test_geometry<bg::model::box<P2dc>, P2dc>("POLYGON((0 1,2 4))", "POINT(3 4)", "POINT(0 2)", true, 1.0/3);
+ test_geometry<bg::model::box<P3ic>, P3ic>("POLYGON((0 1 2,2 4 6))", "POINT(3 5 6)", "POINT(0 3 3)", true, 1.0f/2);
+ test_geometry<bg::model::box<P3fc>, P3fc>("POLYGON((0 1 2,2 4 6))", "POINT(3 5 6)", "POINT(0 3 3)", true, 1.0f/2);
+ test_geometry<bg::model::box<P3dc>, P3dc>("POLYGON((0 1 2,2 4 6))", "POINT(3 5 6)", "POINT(0 3 3)", true, 1.0/2);
+
+ test_geometry<bg::model::box<P2ic>, P2ic>("POLYGON((0 1,2 4))", "POINT(1 0)", "POINT(1 5)", true, 1.0f/5);
+ test_geometry<bg::model::box<P2fc>, P2fc>("POLYGON((0 1,2 4))", "POINT(1 5)", "POINT(1 0)", true, 1.0f/5);
+ test_geometry<bg::model::box<P2dc>, P2dc>("POLYGON((0 1,2 4))", "POINT(1 0)", "POINT(1 5)", true, 1.0/5);
+ test_geometry<bg::model::box<P3ic>, P3ic>("POLYGON((0 1 2,2 4 6))", "POINT(1 3 0)", "POINT(1 3 7)", true, 2.0f/7);
+ test_geometry<bg::model::box<P3fc>, P3fc>("POLYGON((0 1 2,2 4 6))", "POINT(1 3 7)", "POINT(1 3 0)", true, 1.0f/7);
+ test_geometry<bg::model::box<P3dc>, P3dc>("POLYGON((0 1 2,2 4 6))", "POINT(1 3 0)", "POINT(1 3 7)", true, 2.0/7);
+
+ test_geometry<bg::model::box<P2ic>, P2ic>("POLYGON((0 1,2 4))", "POINT(0 0)", "POINT(0 5)", true, 0.2f);
+ test_geometry<bg::model::box<P2fc>, P2fc>("POLYGON((0 1,2 4))", "POINT(0 5)", "POINT(0 0)", true, 0.2f);
+ test_geometry<bg::model::box<P2dc>, P2dc>("POLYGON((0 1,2 4))", "POINT(0 0)", "POINT(0 5)", true, 0.2);
+
+ test_geometry<bg::model::box<P2ic>, P2ic>("POLYGON((0 1,2 4))", "POINT(3 0)", "POINT(3 5)", false, 0.0f);
+ test_geometry<bg::model::box<P2fc>, P2fc>("POLYGON((0 1,2 4))", "POINT(3 5)", "POINT(3 0)", false, 0.0f);
+ test_geometry<bg::model::box<P2dc>, P2dc>("POLYGON((0 1,2 4))", "POINT(3 0)", "POINT(3 5)", false, 0.0);
+
+ test_geometry<bg::model::box<P2fc>, P2fc>("POLYGON((0 1,2 4))", "POINT(1 0)", "POINT(1 1)", true, 1.0f);
+ test_geometry<bg::model::box<P2fc>, P2fc>("POLYGON((0 1,2 4))", "POINT(1 4)", "POINT(1 5)", true, 0.0f);
+
+ test_geometry<bg::model::box<P2fc>, P2fc>("POLYGON((0 1,2 4))", "POINT(0.5 2)", "POINT(1.5 3)", true, 0.0f);
+
+#ifdef HAVE_TTMATH
+ typedef bg::model::point<ttmath_big, 2, bg::cs::cartesian> P2ttmc;
+ typedef bg::model::point<ttmath_big, 3, bg::cs::cartesian> P3ttmc;
+
+ test_geometry<bg::model::box<P2ttmc>, P2ttmc>("POLYGON((0 1,2 4))", "POINT(0 0)", "POINT(2 5)", true, 1.0f/5);
+ test_geometry<bg::model::box<P3ttmc>, P3ttmc>("POLYGON((0 1 2,2 4 6))", "POINT(0 0 0)", "POINT(2 5 7)", true, 2.0f/7);
+#endif
+
+ test_large_integers();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/algorithms/test_content.hpp b/libs/geometry/index/test/algorithms/test_content.hpp
new file mode 100644
index 0000000000..92282f8bb1
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/test_content.hpp
@@ -0,0 +1,49 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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_INDEX_TEST_CONTENT_HPP
+#define BOOST_GEOMETRY_INDEX_TEST_CONTENT_HPP
+
+#include <geometry_index_test_common.hpp>
+
+#include <boost/geometry/index/detail/algorithms/content.hpp>
+
+//#include <boost/geometry/io/wkt/read.hpp>
+
+
+template <typename Geometry>
+void test_content(Geometry const& geometry,
+ typename bgi::detail::default_content_result<Geometry>::type expected_value)
+{
+ typename bgi::detail::default_content_result<Geometry>::type value = bgi::detail::content(geometry);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::ostringstream out;
+ out << typeid(typename bg::coordinate_type<Geometry>::type).name()
+ << " "
+ << typeid(typename bgi::detail::default_content_result<Geometry>::type).name()
+ << " "
+ << "content : " << value
+ << std::endl;
+ std::cout << out.str();
+#endif
+
+ BOOST_CHECK_CLOSE(value, expected_value, 0.0001);
+}
+
+template <typename Geometry>
+void test_geometry(std::string const& wkt,
+ typename bgi::detail::default_content_result<Geometry>::type expected_value)
+{
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ test_content(geometry, expected_value);
+}
+
+#endif
diff --git a/libs/geometry/index/test/algorithms/test_intersection_content.hpp b/libs/geometry/index/test/algorithms/test_intersection_content.hpp
new file mode 100644
index 0000000000..1445f8f40f
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/test_intersection_content.hpp
@@ -0,0 +1,47 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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_INDEX_TEST_INTERSECTION_CONTENT_HPP
+#define BOOST_GEOMETRY_INDEX_TEST_INTERSECTION_CONTENT_HPP
+
+#include <geometry_index_test_common.hpp>
+
+#include <boost/geometry/index/detail/algorithms/intersection_content.hpp>
+
+template <typename Geometry>
+void test_intersection_content(Geometry const& geometry1, Geometry const& geometry2,
+ typename bgi::detail::default_content_result<Geometry>::type expected_value)
+{
+ typename bgi::detail::default_content_result<Geometry>::type value = bgi::detail::intersection_content(geometry1, geometry2);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::ostringstream out;
+ out << typeid(typename bg::coordinate_type<Geometry>::type).name()
+ << " "
+ << typeid(typename bgi::detail::default_content_result<Geometry>::type).name()
+ << " "
+ << "intersection_content : " << value
+ << std::endl;
+ std::cout << out.str();
+#endif
+
+ BOOST_CHECK_CLOSE(value, expected_value, 0.0001);
+}
+
+template <typename Geometry>
+void test_geometry(std::string const& wkt1, std::string const& wkt2,
+ typename bgi::detail::default_content_result<Geometry>::type expected_value)
+{
+ Geometry geometry1, geometry2;
+ bg::read_wkt(wkt1, geometry1);
+ bg::read_wkt(wkt2, geometry2);
+ test_intersection_content(geometry1, geometry2, expected_value);
+}
+
+#endif
diff --git a/libs/geometry/index/test/algorithms/test_margin.hpp b/libs/geometry/index/test/algorithms/test_margin.hpp
new file mode 100644
index 0000000000..8146b7fe0c
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/test_margin.hpp
@@ -0,0 +1,48 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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_INDEX_TEST_MARGIN_HPP
+#define BOOST_GEOMETRY_INDEX_TEST_MARGIN_HPP
+
+#include <geometry_index_test_common.hpp>
+
+#include <boost/geometry/index/detail/algorithms/margin.hpp>
+
+//#include <boost/geometry/io/wkt/read.hpp>
+
+template <typename Geometry>
+void test_margin(Geometry const& geometry,
+ typename bgi::detail::default_margin_result<Geometry>::type expected_value)
+{
+ typename bgi::detail::default_margin_result<Geometry>::type value = bgi::detail::comparable_margin(geometry);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::ostringstream out;
+ out << typeid(typename bg::coordinate_type<Geometry>::type).name()
+ << " "
+ << typeid(typename bgi::detail::default_margin_result<Geometry>::type).name()
+ << " "
+ << "content : " << value
+ << std::endl;
+ std::cout << out.str();
+#endif
+
+ BOOST_CHECK_CLOSE(value, expected_value, 0.0001);
+}
+
+template <typename Geometry>
+void test_geometry(std::string const& wkt,
+ typename bgi::detail::default_margin_result<Geometry>::type expected_value)
+{
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ test_margin(geometry, expected_value);
+}
+
+#endif
diff --git a/libs/geometry/index/test/algorithms/test_union_content.hpp b/libs/geometry/index/test/algorithms/test_union_content.hpp
new file mode 100644
index 0000000000..b2648c471e
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/test_union_content.hpp
@@ -0,0 +1,47 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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_INDEX_TEST_UNION_CONTENT_HPP
+#define BOOST_GEOMETRY_INDEX_TEST_UNION_CONTENT_HPP
+
+#include <geometry_index_test_common.hpp>
+
+#include <boost/geometry/index/detail/algorithms/union_content.hpp>
+
+template <typename Geometry>
+void test_union_content(Geometry const& geometry1, Geometry const& geometry2,
+ typename bgi::detail::default_content_result<Geometry>::type expected_value)
+{
+ typename bgi::detail::default_content_result<Geometry>::type value = bgi::detail::union_content(geometry1, geometry2);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::ostringstream out;
+ out << typeid(typename bg::coordinate_type<Geometry>::type).name()
+ << " "
+ << typeid(typename bgi::detail::default_content_result<Geometry>::type).name()
+ << " "
+ << "union_content : " << value
+ << std::endl;
+ std::cout << out.str();
+#endif
+
+ BOOST_CHECK_CLOSE(value, expected_value, 0.0001);
+}
+
+template <typename Geometry>
+void test_geometry(std::string const& wkt1, std::string const& wkt2,
+ typename bgi::detail::default_content_result<Geometry>::type expected_value)
+{
+ Geometry geometry1, geometry2;
+ bg::read_wkt(wkt1, geometry1);
+ bg::read_wkt(wkt2, geometry2);
+ test_union_content(geometry1, geometry2, expected_value);
+}
+
+#endif
diff --git a/libs/geometry/index/test/algorithms/union_content.cpp b/libs/geometry/index/test/algorithms/union_content.cpp
new file mode 100644
index 0000000000..beaa17136e
--- /dev/null
+++ b/libs/geometry/index/test/algorithms/union_content.cpp
@@ -0,0 +1,70 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <algorithms/test_union_content.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+//#define BOOST_GEOMETRY_TEST_DEBUG
+
+void test_large_integers()
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> int_point_type;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> double_point_type;
+
+ bg::model::box<int_point_type> int_box1, int_box2;
+ bg::model::box<double_point_type> double_box1, double_box2;
+
+ std::string const box_li1 = "POLYGON((1536119 192000, 1872000 528000))";
+ std::string const box_li2 = "POLYGON((1701234 368250, 2673400 777400))";
+ bg::read_wkt(box_li1, int_box1);
+ bg::read_wkt(box_li1, double_box1);
+ bg::read_wkt(box_li2, int_box2);
+ bg::read_wkt(box_li2, double_box2);
+
+ double int_value = bgi::detail::union_content(int_box1, int_box2);
+ double double_value = bgi::detail::union_content(double_box1, double_box2);
+
+ BOOST_CHECK_CLOSE(int_value, double_value, 0.0001);
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> P2ic;
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2fc;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P2dc;
+
+ typedef bg::model::point<int, 3, bg::cs::cartesian> P3ic;
+ typedef bg::model::point<float, 3, bg::cs::cartesian> P3fc;
+ typedef bg::model::point<double, 3, bg::cs::cartesian> P3dc;
+
+ test_geometry<bg::model::box<P2ic> >("POLYGON((0 1,2 4))", "POLYGON((1 2,3 5))", 12.0);
+ test_geometry<bg::model::box<P2fc> >("POLYGON((0 1,2 4))", "POLYGON((1 2,3 5))", 12.0);
+ test_geometry<bg::model::box<P2dc> >("POLYGON((0 1,2 4))", "POLYGON((1 2,3 5))", 12.0);
+ test_geometry<bg::model::box<P3ic> >("POLYGON((0 1 2,2 4 6))", "POLYGON((1 2 3,3 5 7))", 60.0);
+ test_geometry<bg::model::box<P3fc> >("POLYGON((0 1 2,2 4 6))", "POLYGON((1 2 3,3 5 7))", 60.0);
+ test_geometry<bg::model::box<P3dc> >("POLYGON((0 1 2,2 4 6))", "POLYGON((1 2 3,3 5 7))", 60.0);
+
+ test_geometry<bg::model::box<P2dc> >("POLYGON((0 1,2 4))", "POLYGON((2 1,3 4))", 9.0);
+ test_geometry<bg::model::box<P2dc> >("POLYGON((0 1,2 4))", "POLYGON((2 4,3 5))", 12.0);
+
+#ifdef HAVE_TTMATH
+ typedef bg::model::point<ttmath_big, 2, bg::cs::cartesian> P2ttmc;
+ typedef bg::model::point<ttmath_big, 3, bg::cs::cartesian> P3ttmc;
+
+ test_geometry<bg::model::box<P2ttmc> >("POLYGON((0 1,2 4))", "POLYGON((1 2,3 5))", 12.0);
+ test_geometry<bg::model::box<P3ttmc> >("POLYGON((0 1 2,2 4 6))", "POLYGON((1 2 3,3 5 7))", 60.0);
+#endif
+
+ test_large_integers();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/geometry_index_test_common.hpp b/libs/geometry/index/test/geometry_index_test_common.hpp
new file mode 100644
index 0000000000..4a2ac615c3
--- /dev/null
+++ b/libs/geometry/index/test/geometry_index_test_common.hpp
@@ -0,0 +1,28 @@
+// Boost.Geometry Index
+// Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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 GEOMETRY_TEST_GEOMETRY_INDEX_TEST_COMMON_HPP
+#define GEOMETRY_TEST_GEOMETRY_INDEX_TEST_COMMON_HPP
+
+#if defined(_MSC_VER)
+
+//#pragma warning (disable : 4996) // deprecated functions
+//#pragma warning (disable : 4100) // unreferenced formal parameter
+//#pragma warning (disable : 4127) // conditional expression is constant
+
+#endif // _MSC_VER
+
+#include <boost/geometry.hpp>
+
+#include <geometry_test_common.hpp>
+
+namespace boost { namespace geometry { namespace index {}}}
+namespace bgi = boost::geometry::index;
+
+#endif // GEOMETRY_TEST_GEOMETRY_INDEX_TEST_COMMON_HPP
diff --git a/libs/geometry/index/test/movable.hpp b/libs/geometry/index/test/movable.hpp
new file mode 100644
index 0000000000..c1dd278e7c
--- /dev/null
+++ b/libs/geometry/index/test/movable.hpp
@@ -0,0 +1,92 @@
+// Boost.Geometry.Index varray
+// Unit Test
+
+// Copyright (c) 2009 Ion Gaztanaga
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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_INDEX_TEST_MOVABLE_HPP
+#define BOOST_GEOMETRY_INDEX_TEST_MOVABLE_HPP
+
+//[movable_definition
+//header file "movable.hpp"
+#include <boost/move/move.hpp>
+
+//A movable class
+class movable
+{
+ BOOST_MOVABLE_BUT_NOT_COPYABLE(movable)
+ int value_;
+
+public:
+ movable() : value_(1){}
+
+ //Move constructor and assignment
+ movable(BOOST_RV_REF(movable) m)
+ { value_ = m.value_; m.value_ = 0; }
+
+ movable & operator=(BOOST_RV_REF(movable) m)
+ { value_ = m.value_; m.value_ = 0; return *this; }
+
+ bool moved() const //Observer
+ { return value_ == 0; }
+};
+
+
+class copy_movable
+{
+ BOOST_COPYABLE_AND_MOVABLE(copy_movable)
+ size_t value_;
+
+public:
+ copy_movable(size_t value = 1) : value_(value){}
+
+ //Move constructor and assignment
+ copy_movable(BOOST_RV_REF(copy_movable) m)
+ { value_ = m.value_; m.value_ = 0; }
+
+ copy_movable(const copy_movable &m)
+ { value_ = m.value_; }
+
+ copy_movable & operator=(BOOST_RV_REF(copy_movable) m)
+ { value_ = m.value_; m.value_ = 0; return *this; }
+
+ copy_movable & operator=(BOOST_COPY_ASSIGN_REF(copy_movable) m)
+ { value_ = m.value_; return *this; }
+
+ bool moved() const //Observer
+ { return value_ == 0; }
+
+ bool operator==(const copy_movable& m) const
+ { return value_ == m.value_; }
+};
+
+struct copy_movable_wrapper
+{
+ copy_movable cm;
+};
+
+copy_movable produce()
+{ return copy_movable(); }
+
+namespace boost{
+
+template<>
+struct has_nothrow_move<movable>
+{
+ static const bool value = true;
+};
+
+template<>
+struct has_nothrow_move<copy_movable>
+{
+ static const bool value = true;
+};
+
+} //namespace boost{
+//]
+
+#endif //BOOST_GEOMETRY_INDEX_TEST_MOVABLE_HPP
diff --git a/libs/geometry/index/test/rtree/Jamfile.v2 b/libs/geometry/index/test/rtree/Jamfile.v2
new file mode 100644
index 0000000000..463ccb3fa4
--- /dev/null
+++ b/libs/geometry/index/test/rtree/Jamfile.v2
@@ -0,0 +1,17 @@
+# Boost.Geometry Index
+#
+# Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+#
+# 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)
+
+build-project exceptions ;
+build-project interprocess ;
+build-project generated ;
+
+test-suite boost-geometry-index-rtree
+ :
+ [ run rtree_values.cpp ]
+ [ compile-fail rtree_values_invalid.cpp ]
+ ;
diff --git a/libs/geometry/index/test/rtree/exceptions/Jamfile.v2 b/libs/geometry/index/test/rtree/exceptions/Jamfile.v2
new file mode 100644
index 0000000000..1728b245b4
--- /dev/null
+++ b/libs/geometry/index/test/rtree/exceptions/Jamfile.v2
@@ -0,0 +1,26 @@
+# Boost.Geometry Index
+#
+# Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+#
+# 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)
+
+rule test_all
+{
+ local all_rules = ;
+
+ for local fileb in [ glob *.cpp ]
+ {
+ all_rules += [ run $(fileb)
+ : # additional args
+ : # test-files
+ : # requirements
+ <toolset>msvc:<cxxflags>/bigobj
+ ] ;
+ }
+
+ return $(all_rules) ;
+}
+
+test-suite boost-geometry-index-rtree-exceptions : [ test_all r ] ;
diff --git a/libs/geometry/index/test/rtree/exceptions/rtree_exceptions_lin.cpp b/libs/geometry/index/test/rtree/exceptions/rtree_exceptions_lin.cpp
new file mode 100644
index 0000000000..74c0ba6d00
--- /dev/null
+++ b/libs/geometry/index/test/rtree/exceptions/rtree_exceptions_lin.cpp
@@ -0,0 +1,20 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/exceptions/test_exceptions.hpp>
+
+int test_main(int, char* [])
+{
+ test_rtree_value_exceptions< bgi::linear<4, 2> >();
+ test_rtree_value_exceptions(bgi::dynamic_linear(4, 2));
+
+ test_rtree_elements_exceptions< bgi::linear_throwing<4, 2> >();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/exceptions/rtree_exceptions_qua.cpp b/libs/geometry/index/test/rtree/exceptions/rtree_exceptions_qua.cpp
new file mode 100644
index 0000000000..5dde64a8d3
--- /dev/null
+++ b/libs/geometry/index/test/rtree/exceptions/rtree_exceptions_qua.cpp
@@ -0,0 +1,20 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/exceptions/test_exceptions.hpp>
+
+int test_main(int, char* [])
+{
+ test_rtree_value_exceptions< bgi::quadratic<4, 2> >();
+ test_rtree_value_exceptions(bgi::dynamic_quadratic(4, 2));
+
+ test_rtree_elements_exceptions< bgi::quadratic_throwing<4, 2> >();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/exceptions/rtree_exceptions_rst.cpp b/libs/geometry/index/test/rtree/exceptions/rtree_exceptions_rst.cpp
new file mode 100644
index 0000000000..c09e2d3780
--- /dev/null
+++ b/libs/geometry/index/test/rtree/exceptions/rtree_exceptions_rst.cpp
@@ -0,0 +1,20 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/exceptions/test_exceptions.hpp>
+
+int test_main(int, char* [])
+{
+ test_rtree_value_exceptions< bgi::rstar<4, 2> >();
+ test_rtree_value_exceptions(bgi::dynamic_rstar(4, 2));
+
+ test_rtree_elements_exceptions< bgi::rstar_throwing<4, 2> >();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/exceptions/test_exceptions.hpp b/libs/geometry/index/test/rtree/exceptions/test_exceptions.hpp
new file mode 100644
index 0000000000..25f9fb8440
--- /dev/null
+++ b/libs/geometry/index/test/rtree/exceptions/test_exceptions.hpp
@@ -0,0 +1,193 @@
+// Boost.Geometry Index
+//
+// R-tree nodes based on runtime-polymorphism, storing static-size containers
+// test version throwing exceptions on creation
+//
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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_INDEX_TEST_RTREE_EXCEPTIONS_HPP
+#define BOOST_GEOMETRY_INDEX_TEST_RTREE_EXCEPTIONS_HPP
+
+#include <rtree/test_rtree.hpp>
+
+#include <rtree/exceptions/test_throwing.hpp>
+#include <rtree/exceptions/test_throwing_node.hpp>
+
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+// test value exceptions
+template <typename Parameters>
+void test_rtree_value_exceptions(Parameters const& parameters = Parameters())
+{
+ typedef std::pair<bg::model::point<float, 2, bg::cs::cartesian>, throwing_value> Value;
+ typedef bgi::rtree<Value, Parameters> Tree;
+ typedef typename Tree::bounds_type B;
+
+ throwing_value::reset_calls_counter();
+ throwing_value::set_max_calls((std::numeric_limits<size_t>::max)());
+ std::vector<Value> input;
+ B qbox;
+ generate::input<2>::apply(input, qbox);
+
+ for ( size_t i = 0 ; i < 50 ; i += 2 )
+ {
+ throwing_value::reset_calls_counter();
+ throwing_value::set_max_calls(10000);
+
+ Tree tree(parameters);
+
+ throwing_value::reset_calls_counter();
+ throwing_value::set_max_calls(i);
+
+ BOOST_CHECK_THROW( tree.insert(input.begin(), input.end()), throwing_value_copy_exception );
+ }
+
+ for ( size_t i = 0 ; i < 20 ; i += 1 )
+ {
+ throwing_value::reset_calls_counter();
+ throwing_value::set_max_calls(i);
+
+ BOOST_CHECK_THROW( Tree tree(input.begin(), input.end(), parameters), throwing_value_copy_exception );
+ }
+
+ for ( size_t i = 0 ; i < 10 ; i += 1 )
+ {
+ throwing_value::reset_calls_counter();
+ throwing_value::set_max_calls(10000);
+
+ Tree tree(parameters);
+
+ tree.insert(input.begin(), input.end());
+
+ throwing_value::reset_calls_counter();
+ throwing_value::set_max_calls(i);
+
+ BOOST_CHECK_THROW( tree.remove(input.begin(), input.end()), throwing_value_copy_exception );
+ }
+
+ for ( size_t i = 0 ; i < 20 ; i += 2 )
+ {
+ throwing_value::reset_calls_counter();
+ throwing_value::set_max_calls(10000);
+
+ Tree tree(parameters);
+
+ tree.insert(input.begin(), input.end());
+
+ throwing_value::reset_calls_counter();
+ throwing_value::set_max_calls(i);
+
+ BOOST_CHECK_THROW( Tree tree2(tree), throwing_value_copy_exception );
+ }
+
+ for ( size_t i = 0 ; i < 20 ; i += 2 )
+ {
+ throwing_value::reset_calls_counter();
+ throwing_value::set_max_calls(10000);
+
+ Tree tree(parameters);
+ Tree tree2(parameters);
+
+ tree.insert(input.begin(), input.end());
+
+ throwing_value::reset_calls_counter();
+ throwing_value::set_max_calls(i);
+
+ BOOST_CHECK_THROW(tree2 = tree, throwing_value_copy_exception );
+ }
+}
+
+// test value exceptions
+template <typename Parameters>
+void test_rtree_elements_exceptions(Parameters const& parameters = Parameters())
+{
+ typedef std::pair<bg::model::point<float, 2, bg::cs::cartesian>, throwing_value> Value;
+ typedef bgi::rtree<Value, Parameters> Tree;
+ typedef typename Tree::bounds_type B;
+
+ throwing_value::reset_calls_counter();
+ throwing_value::set_max_calls((std::numeric_limits<size_t>::max)());
+
+ std::vector<Value> input;
+ B qbox;
+ generate::input<2>::apply(input, qbox, 2);
+
+ for ( size_t i = 0 ; i < 100 ; i += 2 )
+ {
+ throwing_varray_settings::reset_calls_counter();
+ throwing_varray_settings::set_max_calls(10000);
+
+ Tree tree(parameters);
+
+ throwing_varray_settings::reset_calls_counter();
+ throwing_varray_settings::set_max_calls(i);
+
+ BOOST_CHECK_THROW( tree.insert(input.begin(), input.end()), throwing_varray_exception );
+ }
+
+ for ( size_t i = 0 ; i < 100 ; i += 2 )
+ {
+ throwing_varray_settings::reset_calls_counter();
+ throwing_varray_settings::set_max_calls(i);
+
+ throwing_nodes_stats::reset_counters();
+
+ BOOST_CHECK_THROW( Tree tree(input.begin(), input.end(), parameters), throwing_varray_exception );
+
+ BOOST_CHECK_EQUAL(throwing_nodes_stats::internal_nodes_count(), 0u);
+ BOOST_CHECK_EQUAL(throwing_nodes_stats::leafs_count(), 0u);
+ }
+
+ for ( size_t i = 0 ; i < 50 ; i += 2 )
+ {
+ throwing_varray_settings::reset_calls_counter();
+ throwing_varray_settings::set_max_calls(10000);
+
+ Tree tree(parameters);
+
+ tree.insert(input.begin(), input.end());
+
+ throwing_varray_settings::reset_calls_counter();
+ throwing_varray_settings::set_max_calls(i);
+
+ BOOST_CHECK_THROW( tree.remove(input.begin(), input.end()), throwing_varray_exception );
+ }
+
+ for ( size_t i = 0 ; i < 50 ; i += 2 )
+ {
+ throwing_varray_settings::reset_calls_counter();
+ throwing_varray_settings::set_max_calls(10000);
+
+ Tree tree(parameters);
+
+ tree.insert(input.begin(), input.end());
+
+ throwing_varray_settings::reset_calls_counter();
+ throwing_varray_settings::set_max_calls(i);
+
+ BOOST_CHECK_THROW( Tree tree2(tree), throwing_varray_exception );
+ }
+
+ for ( size_t i = 0 ; i < 50 ; i += 2 )
+ {
+ throwing_varray_settings::reset_calls_counter();
+ throwing_varray_settings::set_max_calls(10000);
+
+ Tree tree(parameters);
+ Tree tree2(parameters);
+
+ tree.insert(input.begin(), input.end());
+
+ throwing_varray_settings::reset_calls_counter();
+ throwing_varray_settings::set_max_calls(i);
+
+ BOOST_CHECK_THROW(tree2 = tree, throwing_varray_exception );
+ }
+}
+
+#endif // BOOST_GEOMETRY_INDEX_TEST_RTREE_EXCEPTIONS_HPP
diff --git a/libs/geometry/index/test/rtree/exceptions/test_throwing.hpp b/libs/geometry/index/test/rtree/exceptions/test_throwing.hpp
new file mode 100644
index 0000000000..5fc682ce57
--- /dev/null
+++ b/libs/geometry/index/test/rtree/exceptions/test_throwing.hpp
@@ -0,0 +1,161 @@
+// Boost.Geometry Index
+//
+// Throwing objects implementation
+//
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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_INDEX_TEST_THROWING_HPP
+#define BOOST_GEOMETRY_INDEX_TEST_THROWING_HPP
+
+// value
+
+struct throwing_value_copy_exception : public std::exception
+{
+ const char * what() const throw() { return "value copy failed."; }
+};
+
+struct throwing_value
+{
+ explicit throwing_value(int v = 0)
+ : value(v)
+ {}
+
+ bool operator==(throwing_value const& v) const
+ {
+ return value == v.value;
+ }
+
+ throwing_value(throwing_value const& v)
+ {
+ throw_if_required();
+
+ value = v.value;
+ }
+
+ throwing_value & operator=(throwing_value const& v)
+ {
+ throw_if_required();
+
+ value = v.value;
+ return *this;
+ }
+
+ void throw_if_required()
+ {
+ // throw if counter meets max count
+ if ( get_max_calls_ref() <= get_calls_counter_ref() )
+ throw throwing_value_copy_exception();
+ else
+ ++get_calls_counter_ref();
+ }
+
+ static void reset_calls_counter() { get_calls_counter_ref() = 0; }
+ static void set_max_calls(size_t mc) { get_max_calls_ref() = mc; }
+
+ static size_t & get_calls_counter_ref() { static size_t cc = 0; return cc; }
+ static size_t & get_max_calls_ref() { static size_t mc = (std::numeric_limits<size_t>::max)(); return mc; }
+
+ int value;
+};
+
+namespace generate {
+template <typename T, typename C>
+struct value< std::pair<bg::model::point<T, 2, C>, throwing_value> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef std::pair<P, throwing_value> R;
+ static R apply(int x, int y)
+ {
+ return std::make_pair(P(x, y), throwing_value(x + y * 100));
+ }
+};
+} // namespace generate
+
+#include <boost/geometry/index/detail/varray.hpp>
+
+struct throwing_varray_exception : public std::exception
+{
+ const char * what() const throw() { return "static vector exception."; }
+};
+
+struct throwing_varray_settings
+{
+ static void throw_if_required()
+ {
+ // throw if counter meets max count
+ if ( get_max_calls_ref() <= get_calls_counter_ref() )
+ throw throwing_varray_exception();
+ else
+ ++get_calls_counter_ref();
+ }
+
+ static void reset_calls_counter() { get_calls_counter_ref() = 0; }
+ static void set_max_calls(size_t mc) { get_max_calls_ref() = mc; }
+
+ static size_t & get_calls_counter_ref() { static size_t cc = 0; return cc; }
+ static size_t & get_max_calls_ref() { static size_t mc = (std::numeric_limits<size_t>::max)(); return mc; }
+};
+
+template <typename Element, size_t Capacity>
+class throwing_varray
+ : public boost::geometry::index::detail::varray<Element, Capacity>
+{
+ typedef boost::geometry::index::detail::varray<Element, Capacity> container;
+
+public:
+ typedef typename container::value_type value_type;
+ typedef typename container::size_type size_type;
+ typedef typename container::iterator iterator;
+ typedef typename container::const_iterator const_iterator;
+ typedef typename container::reverse_iterator reverse_iterator;
+ typedef typename container::const_reverse_iterator const_reverse_iterator;
+ typedef typename container::reference reference;
+ typedef typename container::const_reference const_reference;
+
+ inline throwing_varray() {}
+
+ template <typename It>
+ inline throwing_varray(It first, It last)
+ : container(first, last)
+ {}
+
+ inline void resize(size_type s)
+ {
+ throwing_varray_settings::throw_if_required();
+ container::resize(s);
+ }
+
+ inline void reserve(size_type s)
+ {
+ throwing_varray_settings::throw_if_required();
+ container::reserve(s);
+ }
+
+ void push_back(Element const& v)
+ {
+ throwing_varray_settings::throw_if_required();
+ container::push_back(v);
+ }
+};
+
+// elements derived type trait
+
+namespace boost { namespace geometry { namespace index {
+
+namespace detail { namespace rtree {
+
+template <typename OldValue, size_t N, typename NewValue>
+struct container_from_elements_type<throwing_varray<OldValue, N>, NewValue>
+{
+ typedef throwing_varray<NewValue, N> type;
+};
+
+}} // namespace detail::rtree
+
+}}} // namespace boost::geometry::index
+
+#endif // BOOST_GEOMETRY_INDEX_TEST_THROWING_HPP
diff --git a/libs/geometry/index/test/rtree/exceptions/test_throwing_node.hpp b/libs/geometry/index/test/rtree/exceptions/test_throwing_node.hpp
new file mode 100644
index 0000000000..d32c6bccae
--- /dev/null
+++ b/libs/geometry/index/test/rtree/exceptions/test_throwing_node.hpp
@@ -0,0 +1,318 @@
+// Boost.Geometry Index
+//
+// R-tree nodes storing static-size containers
+// test version throwing exceptions on creation
+//
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+//
+// 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_INDEX_TEST_RTREE_THROWING_NODE_HPP
+#define BOOST_GEOMETRY_INDEX_TEST_RTREE_THROWING_NODE_HPP
+
+#include <rtree/exceptions/test_throwing.hpp>
+
+struct throwing_nodes_stats
+{
+ static void reset_counters() { get_internal_nodes_counter_ref() = 0; get_leafs_counter_ref() = 0; }
+ static size_t internal_nodes_count() { return get_internal_nodes_counter_ref(); }
+ static size_t leafs_count() { return get_leafs_counter_ref(); }
+
+ static size_t & get_internal_nodes_counter_ref() { static size_t cc = 0; return cc; }
+ static size_t & get_leafs_counter_ref() { static size_t cc = 0; return cc; }
+};
+
+namespace boost { namespace geometry { namespace index {
+
+template <size_t MaxElements, size_t MinElements>
+struct linear_throwing : public linear<MaxElements, MinElements> {};
+
+template <size_t MaxElements, size_t MinElements>
+struct quadratic_throwing : public quadratic<MaxElements, MinElements> {};
+
+template <size_t MaxElements, size_t MinElements, size_t OverlapCostThreshold = 0, size_t ReinsertedElements = detail::default_rstar_reinserted_elements_s<MaxElements>::value>
+struct rstar_throwing : public rstar<MaxElements, MinElements, OverlapCostThreshold, ReinsertedElements> {};
+
+namespace detail { namespace rtree {
+
+// options implementation (from options.hpp)
+
+struct node_throwing_static_tag {};
+
+template <size_t MaxElements, size_t MinElements>
+struct options_type< linear_throwing<MaxElements, MinElements> >
+{
+ typedef options<
+ linear_throwing<MaxElements, MinElements>,
+ insert_default_tag, choose_by_content_diff_tag, split_default_tag, linear_tag,
+ node_throwing_static_tag
+ > type;
+};
+
+template <size_t MaxElements, size_t MinElements>
+struct options_type< quadratic_throwing<MaxElements, MinElements> >
+{
+ typedef options<
+ quadratic_throwing<MaxElements, MinElements>,
+ insert_default_tag, choose_by_content_diff_tag, split_default_tag, quadratic_tag,
+ node_throwing_static_tag
+ > type;
+};
+
+template <size_t MaxElements, size_t MinElements, size_t OverlapCostThreshold, size_t ReinsertedElements>
+struct options_type< rstar_throwing<MaxElements, MinElements, OverlapCostThreshold, ReinsertedElements> >
+{
+ typedef options<
+ rstar_throwing<MaxElements, MinElements, OverlapCostThreshold, ReinsertedElements>,
+ insert_reinsert_tag, choose_by_overlap_diff_tag, split_default_tag, rstar_tag,
+ node_throwing_static_tag
+ > type;
+};
+
+}} // namespace detail::rtree
+
+// node implementation
+
+namespace detail { namespace rtree {
+
+template <typename Value, typename Parameters, typename Box, typename Allocators>
+struct variant_internal_node<Value, Parameters, Box, Allocators, node_throwing_static_tag>
+{
+ typedef throwing_varray<
+ rtree::ptr_pair<Box, typename Allocators::node_pointer>,
+ Parameters::max_elements + 1
+ > elements_type;
+
+ template <typename Alloc>
+ inline variant_internal_node(Alloc const&) { throwing_nodes_stats::get_internal_nodes_counter_ref()++; }
+ inline ~variant_internal_node() { throwing_nodes_stats::get_internal_nodes_counter_ref()--; }
+
+ // required because variants are initialized using node object
+ // temporary must be taken into account
+ inline variant_internal_node(variant_internal_node const& n)
+ : elements(n.elements)
+ {
+ throwing_nodes_stats::get_internal_nodes_counter_ref()++;
+ }
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+ inline variant_internal_node(variant_internal_node && n)
+ : elements(boost::move(n.elements))
+ {
+ throwing_nodes_stats::get_internal_nodes_counter_ref()++;
+ }
+#endif
+
+ elements_type elements;
+
+private:
+ variant_internal_node & operator=(variant_internal_node const& n);
+};
+
+template <typename Value, typename Parameters, typename Box, typename Allocators>
+struct variant_leaf<Value, Parameters, Box, Allocators, node_throwing_static_tag>
+{
+ typedef throwing_varray<Value, Parameters::max_elements + 1> elements_type;
+
+ template <typename Alloc>
+ inline variant_leaf(Alloc const&) { throwing_nodes_stats::get_leafs_counter_ref()++; }
+ inline ~variant_leaf() { throwing_nodes_stats::get_leafs_counter_ref()--; }
+
+ // required because variants are initialized using node object
+ // temporary must be taken into account
+ inline variant_leaf(variant_leaf const& n)
+ : elements(n.elements)
+ {
+ throwing_nodes_stats::get_leafs_counter_ref()++;
+ }
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+ inline variant_leaf(variant_leaf && n)
+ : elements(boost::move(n.elements))
+ {
+ throwing_nodes_stats::get_leafs_counter_ref()++;
+ }
+#endif
+
+ elements_type elements;
+
+private:
+ variant_leaf & operator=(variant_leaf const& n);
+};
+
+// nodes traits
+
+template <typename Value, typename Parameters, typename Box, typename Allocators>
+struct node<Value, Parameters, Box, Allocators, node_throwing_static_tag>
+{
+ typedef boost::variant<
+ variant_leaf<Value, Parameters, Box, Allocators, node_throwing_static_tag>,
+ variant_internal_node<Value, Parameters, Box, Allocators, node_throwing_static_tag>
+ > type;
+};
+
+template <typename Value, typename Parameters, typename Box, typename Allocators>
+struct internal_node<Value, Parameters, Box, Allocators, node_throwing_static_tag>
+{
+ typedef variant_internal_node<Value, Parameters, Box, Allocators, node_throwing_static_tag> type;
+};
+
+template <typename Value, typename Parameters, typename Box, typename Allocators>
+struct leaf<Value, Parameters, Box, Allocators, node_throwing_static_tag>
+{
+ typedef variant_leaf<Value, Parameters, Box, Allocators, node_throwing_static_tag> type;
+};
+
+// visitor traits
+
+template <typename Value, typename Parameters, typename Box, typename Allocators, bool IsVisitableConst>
+struct visitor<Value, Parameters, Box, Allocators, node_throwing_static_tag, IsVisitableConst>
+{
+ typedef static_visitor<> type;
+};
+
+// allocators
+
+template <typename Allocator, typename Value, typename Parameters, typename Box>
+struct allocators<Allocator, Value, Parameters, Box, node_throwing_static_tag>
+ : public Allocator::template rebind<
+ typename node<Value, Parameters, Box, allocators<Allocator, Value, Parameters, Box, node_throwing_static_tag>, node_throwing_static_tag>::type
+ >::other
+{
+ typedef typename Allocator::template rebind<
+ Value
+ >::other value_allocator_type;
+
+public:
+ typedef Allocator allocator_type;
+
+ typedef Value value_type;
+ typedef value_type & reference;
+ typedef const value_type & const_reference;
+ typedef typename value_allocator_type::size_type size_type;
+ typedef typename value_allocator_type::difference_type difference_type;
+ typedef typename value_allocator_type::pointer pointer;
+ typedef typename value_allocator_type::const_pointer const_pointer;
+
+ typedef typename Allocator::template rebind<
+ typename node<Value, Parameters, Box, allocators, node_throwing_static_tag>::type
+ >::other::pointer node_pointer;
+
+// typedef typename Allocator::template rebind<
+// typename internal_node<Value, Parameters, Box, allocators, node_throwing_static_tag>::type
+// >::other::pointer internal_node_pointer;
+
+ typedef typename Allocator::template rebind<
+ typename node<Value, Parameters, Box, allocators, node_throwing_static_tag>::type
+ >::other node_allocator_type;
+
+ inline allocators()
+ : node_allocator_type()
+ {}
+
+ template <typename Alloc>
+ inline explicit allocators(Alloc const& alloc)
+ : node_allocator_type(alloc)
+ {}
+
+ inline allocators(BOOST_FWD_REF(allocators) a)
+ : node_allocator_type(boost::move(a.node_allocator()))
+ {}
+
+ inline allocators & operator=(BOOST_FWD_REF(allocators) a)
+ {
+ node_allocator() = boost::move(a.node_allocator());
+ return *this;
+ }
+
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+ inline allocators & operator=(allocators const& a)
+ {
+ node_allocator() = a.node_allocator();
+ return *this;
+ }
+#endif
+
+ void swap(allocators & a)
+ {
+ boost::swap(node_allocator(), a.node_allocator());
+ }
+
+ bool operator==(allocators const& a) const { return node_allocator() == a.node_allocator(); }
+ template <typename Alloc>
+ bool operator==(Alloc const& a) const { return node_allocator() == node_allocator_type(a); }
+
+ Allocator allocator() const { return Allocator(node_allocator()); }
+
+ node_allocator_type & node_allocator() { return *this; }
+ node_allocator_type const& node_allocator() const { return *this; }
+};
+
+struct node_bad_alloc : public std::exception
+{
+ const char * what() const throw() { return "internal node creation failed."; }
+};
+
+struct throwing_node_settings
+{
+ static void throw_if_required()
+ {
+ // throw if counter meets max count
+ if ( get_max_calls_ref() <= get_calls_counter_ref() )
+ throw node_bad_alloc();
+ else
+ ++get_calls_counter_ref();
+ }
+
+ static void reset_calls_counter() { get_calls_counter_ref() = 0; }
+ static void set_max_calls(size_t mc) { get_max_calls_ref() = mc; }
+
+ static size_t & get_calls_counter_ref() { static size_t cc = 0; return cc; }
+ static size_t & get_max_calls_ref() { static size_t mc = (std::numeric_limits<size_t>::max)(); return mc; }
+};
+
+// create_node
+
+template <typename Allocators, typename Value, typename Parameters, typename Box>
+struct create_node<
+ Allocators,
+ variant_internal_node<Value, Parameters, Box, Allocators, node_throwing_static_tag>
+>
+{
+ static inline typename Allocators::node_pointer
+ apply(Allocators & allocators)
+ {
+ // throw if counter meets max count
+ throwing_node_settings::throw_if_required();
+
+ return create_variant_node<
+ typename Allocators::node_pointer,
+ variant_internal_node<Value, Parameters, Box, Allocators, node_throwing_static_tag>
+ >::apply(allocators.node_allocator());
+ }
+};
+
+template <typename Allocators, typename Value, typename Parameters, typename Box>
+struct create_node<
+ Allocators,
+ variant_leaf<Value, Parameters, Box, Allocators, node_throwing_static_tag>
+>
+{
+ static inline typename Allocators::node_pointer
+ apply(Allocators & allocators)
+ {
+ // throw if counter meets max count
+ throwing_node_settings::throw_if_required();
+
+ return create_variant_node<
+ typename Allocators::node_pointer,
+ variant_leaf<Value, Parameters, Box, Allocators, node_throwing_static_tag>
+ >::apply(allocators.node_allocator());
+ }
+};
+
+}} // namespace detail::rtree
+
+}}} // namespace boost::geometry::index
+
+#endif // BOOST_GEOMETRY_INDEX_TEST_RTREE_THROWING_NODE_HPP
diff --git a/libs/geometry/index/test/rtree/generated/Jamfile.v2 b/libs/geometry/index/test/rtree/generated/Jamfile.v2
new file mode 100644
index 0000000000..f3900741b2
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/Jamfile.v2
@@ -0,0 +1,27 @@
+# Boost.Geometry Index
+#
+# Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+#
+# 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)
+
+rule test_all
+{
+ local all_rules = ;
+
+ for local fileb in [ glob *.cpp ]
+ {
+ all_rules += [ run $(fileb)
+ : # additional args
+ : # test-files
+ : # requirements
+ <toolset>msvc:<cxxflags>/bigobj
+ ] ;
+ }
+
+ return $(all_rules) ;
+}
+
+test-suite boost-geometry-index-rtree-generated : [ test_all r ] ;
+
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_add_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_add_b2d.cpp
new file mode 100644
index 0000000000..adab4cb9c3
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_add_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_add_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_add_b3d.cpp
new file mode 100644
index 0000000000..b387eb1ffb
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_add_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_add_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_add_p2d.cpp
new file mode 100644
index 0000000000..09e1c20e38
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_add_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_add_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_add_p3d.cpp
new file mode 100644
index 0000000000..9959dc3f0a
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_add_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_add_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_add_s2d.cpp
new file mode 100644
index 0000000000..c89e3ddbef
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_add_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_b2d.cpp
new file mode 100644
index 0000000000..0b355cb827
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_b3d.cpp
new file mode 100644
index 0000000000..86a1df0de5
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_p2d.cpp
new file mode 100644
index 0000000000..072b8e2436
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_p3d.cpp
new file mode 100644
index 0000000000..b8e1d62358
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_s2d.cpp
new file mode 100644
index 0000000000..595312c4d5
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_mod_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_que_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_que_b2d.cpp
new file mode 100644
index 0000000000..8a2ee0e70c
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_que_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_que_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_que_b3d.cpp
new file mode 100644
index 0000000000..c054f630f1
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_que_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_que_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_que_p2d.cpp
new file mode 100644
index 0000000000..22bdb83f46
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_que_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_que_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_que_p3d.cpp
new file mode 100644
index 0000000000..68f9017765
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_que_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dlin_que_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dlin_que_s2d.cpp
new file mode 100644
index 0000000000..41f93c5754
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dlin_que_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::dynamic_linear(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_add_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_add_b2d.cpp
new file mode 100644
index 0000000000..80c16cd1f8
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_add_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_add_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_add_b3d.cpp
new file mode 100644
index 0000000000..47760e2243
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_add_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_add_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_add_p2d.cpp
new file mode 100644
index 0000000000..46cc6db245
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_add_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_add_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_add_p3d.cpp
new file mode 100644
index 0000000000..28ec6586c6
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_add_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_add_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_add_s2d.cpp
new file mode 100644
index 0000000000..e6009b8333
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_add_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_b2d.cpp
new file mode 100644
index 0000000000..7de20a5f14
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_b3d.cpp
new file mode 100644
index 0000000000..4c2e7c718e
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_p2d.cpp
new file mode 100644
index 0000000000..3cce646e17
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_p3d.cpp
new file mode 100644
index 0000000000..c0d782d3dc
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_s2d.cpp
new file mode 100644
index 0000000000..be0cb0ad9e
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_mod_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_que_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_que_b2d.cpp
new file mode 100644
index 0000000000..790e29c4d3
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_que_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_que_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_que_b3d.cpp
new file mode 100644
index 0000000000..3c27c09ea3
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_que_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_que_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_que_p2d.cpp
new file mode 100644
index 0000000000..8ba91c01e7
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_que_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_que_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_que_p3d.cpp
new file mode 100644
index 0000000000..2fad909f8f
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_que_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_dqua_que_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_dqua_que_s2d.cpp
new file mode 100644
index 0000000000..8d353e622e
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_dqua_que_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::dynamic_quadratic(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_add_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_add_b2d.cpp
new file mode 100644
index 0000000000..358de99d7c
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_add_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_add_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_add_b3d.cpp
new file mode 100644
index 0000000000..1816462bdb
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_add_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_add_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_add_p2d.cpp
new file mode 100644
index 0000000000..2b2146e073
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_add_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_add_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_add_p3d.cpp
new file mode 100644
index 0000000000..ecbc1c336b
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_add_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_add_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_add_s2d.cpp
new file mode 100644
index 0000000000..fabc1e2e85
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_add_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_mod_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_mod_b2d.cpp
new file mode 100644
index 0000000000..df3cfdac27
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_mod_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_mod_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_mod_b3d.cpp
new file mode 100644
index 0000000000..9f8ea3bef1
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_mod_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_mod_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_mod_p2d.cpp
new file mode 100644
index 0000000000..0cdd1706d6
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_mod_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_mod_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_mod_p3d.cpp
new file mode 100644
index 0000000000..e153051154
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_mod_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_mod_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_mod_s2d.cpp
new file mode 100644
index 0000000000..ca3934411c
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_mod_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_que_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_que_b2d.cpp
new file mode 100644
index 0000000000..5f1ea2e292
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_que_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_que_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_que_b3d.cpp
new file mode 100644
index 0000000000..61e51a2f16
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_que_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_que_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_que_p2d.cpp
new file mode 100644
index 0000000000..f9bd1951a6
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_que_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_que_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_que_p3d.cpp
new file mode 100644
index 0000000000..b7cfc7f711
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_que_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_drst_que_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_drst_que_s2d.cpp
new file mode 100644
index 0000000000..8b402560ed
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_drst_que_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::dynamic_rstar(5, 2), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_add_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_add_b2d.cpp
new file mode 100644
index 0000000000..3474fc4387
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_add_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_add_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_add_b3d.cpp
new file mode 100644
index 0000000000..d390a866c9
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_add_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_add_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_add_p2d.cpp
new file mode 100644
index 0000000000..af06e30ec9
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_add_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_add_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_add_p3d.cpp
new file mode 100644
index 0000000000..24fc32febd
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_add_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_add_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_add_s2d.cpp
new file mode 100644
index 0000000000..10419db62d
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_add_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_mod_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_mod_b2d.cpp
new file mode 100644
index 0000000000..dc8f48c396
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_mod_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_mod_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_mod_b3d.cpp
new file mode 100644
index 0000000000..c00b20ab56
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_mod_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_mod_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_mod_p2d.cpp
new file mode 100644
index 0000000000..7879a5bf02
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_mod_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_mod_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_mod_p3d.cpp
new file mode 100644
index 0000000000..440dbbd0de
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_mod_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_mod_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_mod_s2d.cpp
new file mode 100644
index 0000000000..92c81faf05
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_mod_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_que_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_que_b2d.cpp
new file mode 100644
index 0000000000..19f08a6a8e
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_que_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_que_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_que_b3d.cpp
new file mode 100644
index 0000000000..19f2ee5c77
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_que_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_que_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_que_p2d.cpp
new file mode 100644
index 0000000000..b05ee3f643
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_que_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_que_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_que_p3d.cpp
new file mode 100644
index 0000000000..726287fddd
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_que_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_lin_que_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_lin_que_s2d.cpp
new file mode 100644
index 0000000000..8cfba6bf14
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_lin_que_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::linear<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_add_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_add_b2d.cpp
new file mode 100644
index 0000000000..4601697cdf
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_add_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_add_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_add_b3d.cpp
new file mode 100644
index 0000000000..fbcd981037
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_add_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_add_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_add_p2d.cpp
new file mode 100644
index 0000000000..c7644da8e0
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_add_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_add_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_add_p3d.cpp
new file mode 100644
index 0000000000..17d378094f
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_add_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_add_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_add_s2d.cpp
new file mode 100644
index 0000000000..456e1039c9
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_add_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_mod_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_mod_b2d.cpp
new file mode 100644
index 0000000000..201c0979bc
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_mod_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_mod_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_mod_b3d.cpp
new file mode 100644
index 0000000000..0f96c81608
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_mod_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_mod_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_mod_p2d.cpp
new file mode 100644
index 0000000000..5c0710bab6
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_mod_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_mod_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_mod_p3d.cpp
new file mode 100644
index 0000000000..d3db906e85
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_mod_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_mod_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_mod_s2d.cpp
new file mode 100644
index 0000000000..efd0e0d045
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_mod_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_que_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_que_b2d.cpp
new file mode 100644
index 0000000000..875cbf4f52
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_que_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_que_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_que_b3d.cpp
new file mode 100644
index 0000000000..f29b088313
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_que_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_que_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_que_p2d.cpp
new file mode 100644
index 0000000000..91fd0cfee0
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_que_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_que_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_que_p3d.cpp
new file mode 100644
index 0000000000..15646b04d1
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_que_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_qua_que_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_qua_que_s2d.cpp
new file mode 100644
index 0000000000..84ba5c6b97
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_qua_que_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::quadratic<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_add_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_add_b2d.cpp
new file mode 100644
index 0000000000..cdce85839e
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_add_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_add_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_add_b3d.cpp
new file mode 100644
index 0000000000..b8d85a0343
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_add_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_add_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_add_p2d.cpp
new file mode 100644
index 0000000000..154c5ecd76
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_add_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_add_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_add_p3d.cpp
new file mode 100644
index 0000000000..f072f354d5
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_add_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::additional<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_add_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_add_s2d.cpp
new file mode 100644
index 0000000000..ec2df11cae
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_add_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::additional<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_mod_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_mod_b2d.cpp
new file mode 100644
index 0000000000..5d0760d363
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_mod_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_mod_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_mod_b3d.cpp
new file mode 100644
index 0000000000..8ed1ca8c08
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_mod_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_mod_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_mod_p2d.cpp
new file mode 100644
index 0000000000..7040f93f92
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_mod_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_mod_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_mod_p3d.cpp
new file mode 100644
index 0000000000..95014311d3
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_mod_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::modifiers<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_mod_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_mod_s2d.cpp
new file mode 100644
index 0000000000..10daa86628
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_mod_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::modifiers<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_que_b2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_que_b2d.cpp
new file mode 100644
index 0000000000..b7d694b08a
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_que_b2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_que_b3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_que_b3d.cpp
new file mode 100644
index 0000000000..75f89886f4
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_que_b3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::box< bg::model::point<double, 3, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_que_p2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_que_p2d.cpp
new file mode 100644
index 0000000000..9345409bad
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_que_p2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_que_p3d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_que_p3d.cpp
new file mode 100644
index 0000000000..51a3f44944
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_que_p3d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 3, bg::cs::cartesian> Indexable;
+ testset::queries<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/generated/rtree_rst_que_s2d.cpp b/libs/geometry/index/test/rtree/generated/rtree_rst_que_s2d.cpp
new file mode 100644
index 0000000000..33fb4f52ff
--- /dev/null
+++ b/libs/geometry/index/test/rtree/generated/rtree_rst_que_s2d.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::segment< bg::model::point<double, 2, bg::cs::cartesian> > Indexable;
+ testset::queries<Indexable>(bgi::rstar<5, 2>(), std::allocator<int>());
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/interprocess/Jamfile.v2 b/libs/geometry/index/test/rtree/interprocess/Jamfile.v2
new file mode 100644
index 0000000000..9e8a05f2a8
--- /dev/null
+++ b/libs/geometry/index/test/rtree/interprocess/Jamfile.v2
@@ -0,0 +1,32 @@
+# Boost.Geometry Index
+#
+# Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+#
+# 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)
+
+rule test_all
+{
+ local all_rules = ;
+
+ for local fileb in [ glob *.cpp ]
+ {
+ all_rules += [ run $(fileb) /boost/thread//boost_thread
+ : # additional args
+ : # test-files
+ : # requirements
+ <toolset>acc:<linkflags>-lrt
+ <toolset>acc-pa_risc:<linkflags>-lrt
+ <host-os>hpux,<toolset>gcc:<linkflags>"-Wl,+as,mpas"
+# <toolset>gcc-mingw:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
+ <toolset>gcc,<target-os>windows:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
+ <host-os>windows,<toolset>clang:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
+ <toolset>msvc:<cxxflags>/bigobj
+ ] ;
+ }
+
+ return $(all_rules) ;
+}
+
+test-suite boost-geometry-index-rtree-interprocess : [ test_all r ] : <threading>multi ;
diff --git a/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_linear.cpp b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_linear.cpp
new file mode 100644
index 0000000000..80221ac3f2
--- /dev/null
+++ b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_linear.cpp
@@ -0,0 +1,19 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/interprocess/test_interprocess.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2f;
+
+ testset::interprocess::modifiers_and_additional<P2f>(bgi::linear<32, 8>());
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_linear_dyn.cpp b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_linear_dyn.cpp
new file mode 100644
index 0000000000..17717ce316
--- /dev/null
+++ b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_linear_dyn.cpp
@@ -0,0 +1,19 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/interprocess/test_interprocess.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2f;
+
+ testset::interprocess::modifiers_and_additional<P2f>(bgi::dynamic_linear(32, 8));
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_quadratic.cpp b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_quadratic.cpp
new file mode 100644
index 0000000000..b4630a1725
--- /dev/null
+++ b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_quadratic.cpp
@@ -0,0 +1,19 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/interprocess/test_interprocess.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2f;
+
+ testset::interprocess::modifiers_and_additional<P2f>(bgi::quadratic<32, 8>());
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_quadratic_dyn.cpp b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_quadratic_dyn.cpp
new file mode 100644
index 0000000000..cf935b377a
--- /dev/null
+++ b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_quadratic_dyn.cpp
@@ -0,0 +1,19 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/interprocess/test_interprocess.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2f;
+
+ testset::interprocess::modifiers_and_additional<P2f>(bgi::dynamic_quadratic(32, 8));
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_rstar.cpp b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_rstar.cpp
new file mode 100644
index 0000000000..415a473da6
--- /dev/null
+++ b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_rstar.cpp
@@ -0,0 +1,19 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/interprocess/test_interprocess.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2f;
+
+ testset::interprocess::modifiers_and_additional<P2f>(bgi::rstar<32, 8>());
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_rstar_dyn.cpp b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_rstar_dyn.cpp
new file mode 100644
index 0000000000..06edc43a86
--- /dev/null
+++ b/libs/geometry/index/test/rtree/interprocess/rtree_interprocess_rstar_dyn.cpp
@@ -0,0 +1,19 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/interprocess/test_interprocess.hpp>
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<float, 2, bg::cs::cartesian> P2f;
+
+ testset::interprocess::modifiers_and_additional<P2f>(bgi::dynamic_rstar(32, 8));
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/interprocess/test_interprocess.hpp b/libs/geometry/index/test/rtree/interprocess/test_interprocess.hpp
new file mode 100644
index 0000000000..7f061b00c5
--- /dev/null
+++ b/libs/geometry/index/test/rtree/interprocess/test_interprocess.hpp
@@ -0,0 +1,101 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+#include <boost/interprocess/managed_shared_memory.hpp>
+#include <boost/interprocess/allocators/allocator.hpp>
+
+template <typename Point, typename Parameters>
+void test_rtree_interprocess(Parameters const& parameters = Parameters())
+{
+ namespace bi = boost::interprocess;
+ struct shm_remove
+ {
+ shm_remove() { bi::shared_memory_object::remove("shmem"); }
+ ~shm_remove(){ bi::shared_memory_object::remove("shmem"); }
+ } remover;
+
+ bi::managed_shared_memory segment(bi::create_only, "shmem", 65535);
+ typedef bi::allocator<Point, bi::managed_shared_memory::segment_manager> shmem_alloc;
+
+ test_rtree_for_box<Point>(parameters, shmem_alloc(segment.get_segment_manager()));
+}
+
+namespace testset { namespace interprocess {
+
+template <typename Indexable, typename Parameters>
+void modifiers(Parameters const& parameters = Parameters())
+{
+ namespace bi = boost::interprocess;
+ struct shm_remove
+ {
+ shm_remove() { bi::shared_memory_object::remove("shmem"); }
+ ~shm_remove(){ bi::shared_memory_object::remove("shmem"); }
+ } remover;
+
+ bi::managed_shared_memory segment(bi::create_only, "shmem", 65535);
+ typedef bi::allocator<Indexable, bi::managed_shared_memory::segment_manager> shmem_alloc;
+
+ testset::modifiers<Indexable>(parameters, shmem_alloc(segment.get_segment_manager()));
+}
+
+template <typename Indexable, typename Parameters>
+void queries(Parameters const& parameters = Parameters())
+{
+ namespace bi = boost::interprocess;
+ struct shm_remove
+ {
+ shm_remove() { bi::shared_memory_object::remove("shmem"); }
+ ~shm_remove(){ bi::shared_memory_object::remove("shmem"); }
+ } remover;
+
+ bi::managed_shared_memory segment(bi::create_only, "shmem", 65535);
+ typedef bi::allocator<Indexable, bi::managed_shared_memory::segment_manager> shmem_alloc;
+
+ testset::queries<Indexable>(parameters, shmem_alloc(segment.get_segment_manager()));
+}
+
+template <typename Indexable, typename Parameters>
+void additional(Parameters const& parameters = Parameters())
+{
+ namespace bi = boost::interprocess;
+ struct shm_remove
+ {
+ shm_remove() { bi::shared_memory_object::remove("shmem"); }
+ ~shm_remove(){ bi::shared_memory_object::remove("shmem"); }
+ } remover;
+
+ bi::managed_shared_memory segment(bi::create_only, "shmem", 65535);
+ typedef bi::allocator<Indexable, bi::managed_shared_memory::segment_manager> shmem_alloc;
+
+ testset::additional<Indexable>(parameters, shmem_alloc(segment.get_segment_manager()));
+}
+
+template <typename Indexable, typename Parameters>
+void modifiers_and_additional(Parameters const& parameters = Parameters())
+{
+ namespace bi = boost::interprocess;
+ struct shm_remove
+ {
+ shm_remove() { bi::shared_memory_object::remove("shmem"); }
+ ~shm_remove(){ bi::shared_memory_object::remove("shmem"); }
+ } remover;
+
+ bi::managed_shared_memory segment(bi::create_only, "shmem", 65535);
+ typedef bi::allocator<Indexable, bi::managed_shared_memory::segment_manager> shmem_alloc;
+
+ testset::modifiers<Indexable>(parameters, shmem_alloc(segment.get_segment_manager()));
+ testset::additional<Indexable>(parameters, shmem_alloc(segment.get_segment_manager()));
+}
+
+}}
diff --git a/libs/geometry/index/test/rtree/rtree_test_generator.cpp b/libs/geometry/index/test/rtree/rtree_test_generator.cpp
new file mode 100644
index 0000000000..e1d76ee2fc
--- /dev/null
+++ b/libs/geometry/index/test/rtree/rtree_test_generator.cpp
@@ -0,0 +1,111 @@
+// Boost.Geometry Index
+// Rtree tests generator
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <fstream>
+#include <vector>
+#include <string>
+#include <boost/foreach.hpp>
+#include <boost/assert.hpp>
+#include <boost/tuple/tuple.hpp>
+
+int main()
+{
+ typedef boost::tuple<std::string, std::string> CT;
+ std::vector<CT> coordinate_types;
+ coordinate_types.push_back(boost::make_tuple("double", "d"));
+ //coordinate_types.push_back(boost::make_tuple("int", "i"));
+ //coordinate_types.push_back(boost::make_tuple("float", "f"));
+
+ std::vector<std::string> dimensions;
+ dimensions.push_back("2");
+ dimensions.push_back("3");
+
+ typedef boost::tuple<std::string, std::string> P;
+ std::vector<P> parameters;
+ parameters.push_back(boost::make_tuple("bgi::linear<5, 2>()", "lin"));
+ parameters.push_back(boost::make_tuple("bgi::dynamic_linear(5, 2)", "dlin"));
+ parameters.push_back(boost::make_tuple("bgi::quadratic<5, 2>()", "qua"));
+ parameters.push_back(boost::make_tuple("bgi::dynamic_quadratic(5, 2)", "dqua"));
+ parameters.push_back(boost::make_tuple("bgi::rstar<5, 2>()", "rst"));
+ parameters.push_back(boost::make_tuple("bgi::dynamic_rstar(5, 2)","drst"));
+
+ std::vector<std::string> indexables;
+ indexables.push_back("p");
+ indexables.push_back("b");
+ indexables.push_back("s");
+
+ typedef std::pair<std::string, std::string> TS;
+ std::vector<TS> testsets;
+ testsets.push_back(std::make_pair("testset::modifiers", "mod"));
+ testsets.push_back(std::make_pair("testset::queries", "que"));
+ testsets.push_back(std::make_pair("testset::additional", "add"));
+
+ BOOST_FOREACH(P const& p, parameters)
+ {
+ BOOST_FOREACH(TS const& ts, testsets)
+ {
+ BOOST_FOREACH(std::string const& i, indexables)
+ {
+ BOOST_FOREACH(std::string const& d, dimensions)
+ {
+ // If the I is Segment, generate only for 2d
+ if ( i == "s" && d != "2" )
+ {
+ continue;
+ }
+
+ BOOST_FOREACH(CT const& c, coordinate_types)
+ {
+ std::string filename = std::string() +
+ "rtree_" + boost::get<1>(p) + '_' + ts.second + '_' + i + d + boost::get<1>(c) + ".cpp";
+
+ std::ofstream f(filename.c_str(), std::ios::trunc);
+
+ f <<
+ "// Boost.Geometry Index\n" <<
+ "// Unit Test\n" <<
+ "\n" <<
+ "// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.\n" <<
+ "\n" <<
+ "// Use, modification and distribution is subject to the Boost Software License,\n" <<
+ "// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at\n" <<
+ "// http://www.boost.org/LICENSE_1_0.txt)\n" <<
+ "\n";
+
+ f <<
+ "#include <rtree/test_rtree.hpp>\n" <<
+ "\n";
+
+ std::string indexable_type;
+ std::string point_type = std::string("bg::model::point<") + boost::get<0>(c) + ", " + d + ", bg::cs::cartesian>";
+ if ( i == "p" )
+ indexable_type = point_type;
+ else if ( i == "b" )
+ indexable_type = std::string("bg::model::box< ") + point_type + " >";
+ else if ( i == "s" )
+ indexable_type = std::string("bg::model::segment< ") + point_type + " >";
+ else
+ BOOST_ASSERT(false);
+
+ f <<
+ "int test_main(int, char* [])\n" <<
+ "{\n" <<
+ " typedef " << indexable_type << " Indexable;\n" <<
+ " " << ts.first << "<Indexable>(" << boost::get<0>(p) << ", std::allocator<int>());\n" <<
+ " return 0;\n" <<
+ "}\n";
+ }
+ }
+ }
+
+ }
+ }
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/rtree_values.cpp b/libs/geometry/index/test/rtree/rtree_values.cpp
new file mode 100644
index 0000000000..2a9c3a0dd1
--- /dev/null
+++ b/libs/geometry/index/test/rtree/rtree_values.cpp
@@ -0,0 +1,84 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+
+#include <boost/geometry/geometries/register/point.hpp>
+
+struct point
+{
+ point(double xx = 0, double yy = 0) : x(xx), y(yy) {}
+ double x, y;
+};
+
+BOOST_GEOMETRY_REGISTER_POINT_2D(point, double, bg::cs::cartesian, x, y)
+
+
+template <typename Box, typename Params>
+void test_pair()
+{
+ typedef std::pair<Box, std::size_t> Value;
+
+ typename boost::remove_const<Box>::type box;
+ bg::assign_zero(box);
+
+ Value val(box, 0);
+
+ // sanity check
+ std::vector<Value> vec;
+ vec.push_back(val);
+ vec.push_back(std::make_pair(box, 0));
+ vec.push_back(std::make_pair(box, (unsigned short)0));
+
+ bgi::rtree<Value, Params> rt;
+ rt.insert(val);
+ rt.insert(std::make_pair(box, 0));
+ rt.insert(std::make_pair(box, (unsigned short)0));
+ BOOST_CHECK( rt.size() == 3 );
+
+ BOOST_CHECK( rt.count(val) == 3 );
+ BOOST_CHECK( rt.count(std::make_pair(box, 0)) == 3 );
+ BOOST_CHECK( rt.count(std::make_pair(box, (unsigned short)0)) == 3 );
+ BOOST_CHECK( rt.count(box) == 3 );
+
+ BOOST_CHECK( rt.remove(val) == 1 );
+ BOOST_CHECK( rt.remove(std::make_pair(box, 0)) == 1 );
+ BOOST_CHECK( rt.remove(std::make_pair(box, (unsigned short)0)) == 1 );
+ BOOST_CHECK( rt.size() == 0 );
+}
+
+template <typename Params>
+void test_point()
+{
+ bgi::rtree<point, Params> rt;
+
+ rt.insert(0.0);
+ BOOST_CHECK( rt.size() == 1 );
+ BOOST_CHECK( rt.remove(0.0) == 1 );
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> Pt;
+ typedef bg::model::box<Pt> Box;
+
+ test_pair< Box, bgi::linear<16> >();
+ test_pair< Box, bgi::quadratic<4> >();
+ test_pair< Box, bgi::rstar<4> >();
+ //test_rtree< Box const, bgi::linear<16> >();
+ //test_rtree< Box const, bgi::quadratic<4> >();
+ //test_rtree< Box const, bgi::rstar<4> >();
+
+ test_point< bgi::linear<16> >();
+ test_point< bgi::quadratic<4> >();
+ test_point< bgi::rstar<4> >();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/rtree_values_invalid.cpp b/libs/geometry/index/test/rtree/rtree_values_invalid.cpp
new file mode 100644
index 0000000000..d16861331c
--- /dev/null
+++ b/libs/geometry/index/test/rtree/rtree_values_invalid.cpp
@@ -0,0 +1,31 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <rtree/test_rtree.hpp>
+
+
+template <typename Point, typename Params>
+void test_rtree()
+{
+ bgi::rtree<Point, Params> rt;
+ // coordinates aren't implicitly convertible to Point
+ rt.insert(1.0);
+ rt.remove(1.0);
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 1, bg::cs::cartesian> Pt;
+
+ test_rtree<Pt, bgi::linear<16> >();
+ test_rtree<Pt, bgi::quadratic<4> >();
+ test_rtree<Pt, bgi::rstar<4> >();
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/rtree/test_rtree.hpp b/libs/geometry/index/test/rtree/test_rtree.hpp
new file mode 100644
index 0000000000..12f5e61a5e
--- /dev/null
+++ b/libs/geometry/index/test/rtree/test_rtree.hpp
@@ -0,0 +1,1929 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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_INDEX_TEST_RTREE_HPP
+#define BOOST_GEOMETRY_INDEX_TEST_RTREE_HPP
+
+#include <boost/foreach.hpp>
+#include <vector>
+#include <algorithm>
+
+#include <geometry_index_test_common.hpp>
+
+#include <boost/geometry/index/rtree.hpp>
+
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+#include <boost/geometry/geometries/segment.hpp>
+
+#include <boost/geometry/index/detail/rtree/utilities/are_levels_ok.hpp>
+#include <boost/geometry/index/detail/rtree/utilities/are_boxes_ok.hpp>
+
+//#include <boost/geometry/geometries/ring.hpp>
+//#include <boost/geometry/geometries/polygon.hpp>
+
+namespace generate {
+
+// Set point's coordinates
+
+template <typename Point>
+struct outside_point
+{};
+
+template <typename T, typename C>
+struct outside_point< bg::model::point<T, 2, C> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ static P apply()
+ {
+ return P(13, 26);
+ }
+};
+
+template <typename T, typename C>
+struct outside_point< bg::model::point<T, 3, C> >
+{
+ typedef bg::model::point<T, 3, C> P;
+ static P apply()
+ {
+ return P(13, 26, 13);
+ }
+};
+
+// Default value generation
+
+template <typename Value>
+struct value_default
+{
+ static Value apply(){ return Value(); }
+};
+
+// Values, input and rtree generation
+
+template <typename Value>
+struct value
+{};
+
+template <typename T, typename C>
+struct value< bg::model::point<T, 2, C> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ static P apply(int x, int y)
+ {
+ return P(x, y);
+ }
+};
+
+template <typename T, typename C>
+struct value< bg::model::box< bg::model::point<T, 2, C> > >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::box<P> B;
+ static B apply(int x, int y)
+ {
+ return B(P(x, y), P(x + 2, y + 3));
+ }
+};
+
+template <typename T, typename C>
+struct value< bg::model::segment< bg::model::point<T, 2, C> > >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::segment<P> S;
+ static S apply(int x, int y)
+ {
+ return S(P(x, y), P(x + 2, y + 3));
+ }
+};
+
+template <typename T, typename C>
+struct value< std::pair<bg::model::point<T, 2, C>, int> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef std::pair<P, int> R;
+ static R apply(int x, int y)
+ {
+ return std::make_pair(P(x, y), x + y * 100);
+ }
+};
+
+template <typename T, typename C>
+struct value< std::pair<bg::model::box< bg::model::point<T, 2, C> >, int> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::box<P> B;
+ typedef std::pair<B, int> R;
+ static R apply(int x, int y)
+ {
+ return std::make_pair(B(P(x, y), P(x + 2, y + 3)), x + y * 100);
+ }
+};
+
+template <typename T, typename C>
+struct value< std::pair<bg::model::segment< bg::model::point<T, 2, C> >, int> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::segment<P> S;
+ typedef std::pair<S, int> R;
+ static R apply(int x, int y)
+ {
+ return std::make_pair(S(P(x, y), P(x + 2, y + 3)), x + y * 100);
+ }
+};
+
+template <typename T, typename C>
+struct value< boost::tuple<bg::model::point<T, 2, C>, int, int> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef boost::tuple<P, int, int> R;
+ static R apply(int x, int y)
+ {
+ return boost::make_tuple(P(x, y), x + y * 100, 0);
+ }
+};
+
+template <typename T, typename C>
+struct value< boost::tuple<bg::model::box< bg::model::point<T, 2, C> >, int, int> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::box<P> B;
+ typedef boost::tuple<B, int, int> R;
+ static R apply(int x, int y)
+ {
+ return boost::make_tuple(B(P(x, y), P(x + 2, y + 3)), x + y * 100, 0);
+ }
+};
+
+template <typename T, typename C>
+struct value< boost::tuple<bg::model::segment< bg::model::point<T, 2, C> >, int, int> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::segment<P> S;
+ typedef boost::tuple<S, int, int> R;
+ static R apply(int x, int y)
+ {
+ return boost::make_tuple(S(P(x, y), P(x + 2, y + 3)), x + y * 100, 0);
+ }
+};
+
+template <typename T, typename C>
+struct value< bg::model::point<T, 3, C> >
+{
+ typedef bg::model::point<T, 3, C> P;
+ static P apply(int x, int y, int z)
+ {
+ return P(x, y, z);
+ }
+};
+
+template <typename T, typename C>
+struct value< bg::model::box< bg::model::point<T, 3, C> > >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef bg::model::box<P> B;
+ static B apply(int x, int y, int z)
+ {
+ return B(P(x, y, z), P(x + 2, y + 3, z + 4));
+ }
+};
+
+template <typename T, typename C>
+struct value< std::pair<bg::model::point<T, 3, C>, int> >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef std::pair<P, int> R;
+ static R apply(int x, int y, int z)
+ {
+ return std::make_pair(P(x, y, z), x + y * 100 + z * 10000);
+ }
+};
+
+template <typename T, typename C>
+struct value< std::pair<bg::model::box< bg::model::point<T, 3, C> >, int> >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef bg::model::box<P> B;
+ typedef std::pair<B, int> R;
+ static R apply(int x, int y, int z)
+ {
+ return std::make_pair(B(P(x, y, z), P(x + 2, y + 3, z + 4)), x + y * 100 + z * 10000);
+ }
+};
+
+template <typename T, typename C>
+struct value< boost::tuple<bg::model::point<T, 3, C>, int, int> >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef boost::tuple<P, int, int> R;
+ static R apply(int x, int y, int z)
+ {
+ return boost::make_tuple(P(x, y, z), x + y * 100 + z * 10000, 0);
+ }
+};
+
+template <typename T, typename C>
+struct value< boost::tuple<bg::model::box< bg::model::point<T, 3, C> >, int, int> >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef bg::model::box<P> B;
+ typedef boost::tuple<B, int, int> R;
+ static R apply(int x, int y, int z)
+ {
+ return boost::make_tuple(B(P(x, y, z), P(x + 2, y + 3, z + 4)), x + y * 100 + z * 10000, 0);
+ }
+};
+
+#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+
+template <typename T, typename C>
+struct value< std::tuple<bg::model::point<T, 2, C>, int, int> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef std::tuple<P, int, int> R;
+ static R apply(int x, int y)
+ {
+ return std::make_tuple(P(x, y), x + y * 100, 0);
+ }
+};
+
+template <typename T, typename C>
+struct value< std::tuple<bg::model::box< bg::model::point<T, 2, C> >, int, int> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::box<P> B;
+ typedef std::tuple<B, int, int> R;
+ static R apply(int x, int y)
+ {
+ return std::make_tuple(B(P(x, y), P(x + 2, y + 3)), x + y * 100, 0);
+ }
+};
+
+template <typename T, typename C>
+struct value< std::tuple<bg::model::segment< bg::model::point<T, 2, C> >, int, int> >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::segment<P> S;
+ typedef std::tuple<S, int, int> R;
+ static R apply(int x, int y)
+ {
+ return std::make_tuple(S(P(x, y), P(x + 2, y + 3)), x + y * 100, 0);
+ }
+};
+
+template <typename T, typename C>
+struct value< std::tuple<bg::model::point<T, 3, C>, int, int> >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef std::tuple<P, int, int> R;
+ static R apply(int x, int y, int z)
+ {
+ return std::make_tuple(P(x, y, z), x + y * 100 + z * 10000, 0);
+ }
+};
+
+template <typename T, typename C>
+struct value< std::tuple<bg::model::box< bg::model::point<T, 3, C> >, int, int> >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef bg::model::box<P> B;
+ typedef std::tuple<B, int, int> R;
+ static R apply(int x, int y, int z)
+ {
+ return std::make_tuple(B(P(x, y, z), P(x + 2, y + 3, z + 4)), x + y * 100 + z * 10000, 0);
+ }
+};
+
+#endif // #if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+
+} // namespace generate
+
+// shared_ptr value
+
+template <typename Indexable>
+struct test_object
+{
+ test_object(Indexable const& indexable_) : indexable(indexable_) {}
+ Indexable indexable;
+};
+
+namespace boost { namespace geometry { namespace index {
+
+template <typename Indexable>
+struct indexable< boost::shared_ptr< test_object<Indexable> > >
+{
+ typedef boost::shared_ptr< test_object<Indexable> > value_type;
+ typedef Indexable const& result_type;
+
+ result_type operator()(value_type const& value) const
+ {
+ return value->indexable;
+ }
+};
+
+}}}
+
+namespace generate {
+
+template <typename T, typename C>
+struct value< boost::shared_ptr<test_object<bg::model::point<T, 2, C> > > >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef test_object<P> O;
+ typedef boost::shared_ptr<O> R;
+
+ static R apply(int x, int y)
+ {
+ return R(new O(P(x, y)));
+ }
+};
+
+template <typename T, typename C>
+struct value< boost::shared_ptr<test_object<bg::model::point<T, 3, C> > > >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef test_object<P> O;
+ typedef boost::shared_ptr<O> R;
+
+ static R apply(int x, int y, int z)
+ {
+ return R(new O(P(x, y, z)));
+ }
+};
+
+template <typename T, typename C>
+struct value< boost::shared_ptr<test_object<bg::model::box<bg::model::point<T, 2, C> > > > >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::box<P> B;
+ typedef test_object<B> O;
+ typedef boost::shared_ptr<O> R;
+
+ static R apply(int x, int y)
+ {
+ return R(new O(B(P(x, y), P(x + 2, y + 3))));
+ }
+};
+
+template <typename T, typename C>
+struct value< boost::shared_ptr<test_object<bg::model::box<bg::model::point<T, 3, C> > > > >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef bg::model::box<P> B;
+ typedef test_object<B> O;
+ typedef boost::shared_ptr<O> R;
+
+ static R apply(int x, int y, int z)
+ {
+ return R(new O(B(P(x, y, z), P(x + 2, y + 3, z + 4))));
+ }
+};
+
+template <typename T, typename C>
+struct value< boost::shared_ptr<test_object<bg::model::segment<bg::model::point<T, 2, C> > > > >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::segment<P> S;
+ typedef test_object<S> O;
+ typedef boost::shared_ptr<O> R;
+
+ static R apply(int x, int y)
+ {
+ return R(new O(S(P(x, y), P(x + 2, y + 3))));
+ }
+};
+
+} //namespace generate
+
+// counting value
+
+template <typename Indexable>
+struct counting_value
+{
+ counting_value() { counter()++; }
+ counting_value(Indexable const& i) : indexable(i) { counter()++; }
+ counting_value(counting_value const& c) : indexable(c.indexable) { counter()++; }
+ ~counting_value() { counter()--; }
+
+ static size_t & counter() { static size_t c = 0; return c; }
+ Indexable indexable;
+};
+
+namespace boost { namespace geometry { namespace index {
+
+template <typename Indexable>
+struct indexable< counting_value<Indexable> >
+{
+ typedef counting_value<Indexable> value_type;
+ typedef Indexable const& result_type;
+ result_type operator()(value_type const& value) const
+ {
+ return value.indexable;
+ }
+};
+
+template <typename Indexable>
+struct equal_to< counting_value<Indexable> >
+{
+ typedef counting_value<Indexable> value_type;
+ typedef bool result_type;
+ bool operator()(value_type const& v1, value_type const& v2) const
+ {
+ return boost::geometry::equals(v1.indexable, v2.indexable);
+ }
+};
+
+}}}
+
+namespace generate {
+
+template <typename T, typename C>
+struct value< counting_value<bg::model::point<T, 2, C> > >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef counting_value<P> R;
+ static R apply(int x, int y) { return R(P(x, y)); }
+};
+
+template <typename T, typename C>
+struct value< counting_value<bg::model::point<T, 3, C> > >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef counting_value<P> R;
+ static R apply(int x, int y, int z) { return R(P(x, y, z)); }
+};
+
+template <typename T, typename C>
+struct value< counting_value<bg::model::box<bg::model::point<T, 2, C> > > >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::box<P> B;
+ typedef counting_value<B> R;
+ static R apply(int x, int y) { return R(B(P(x, y), P(x+2, y+3))); }
+};
+
+template <typename T, typename C>
+struct value< counting_value<bg::model::box<bg::model::point<T, 3, C> > > >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef bg::model::box<P> B;
+ typedef counting_value<B> R;
+ static R apply(int x, int y, int z) { return R(B(P(x, y, z), P(x+2, y+3, z+4))); }
+};
+
+template <typename T, typename C>
+struct value< counting_value<bg::model::segment<bg::model::point<T, 2, C> > > >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::segment<P> S;
+ typedef counting_value<S> R;
+ static R apply(int x, int y) { return R(S(P(x, y), P(x+2, y+3))); }
+};
+
+} // namespace generate
+
+// value without default constructor
+
+template <typename Indexable>
+struct value_no_dctor
+{
+ value_no_dctor(Indexable const& i) : indexable(i) {}
+ Indexable indexable;
+};
+
+namespace boost { namespace geometry { namespace index {
+
+template <typename Indexable>
+struct indexable< value_no_dctor<Indexable> >
+{
+ typedef value_no_dctor<Indexable> value_type;
+ typedef Indexable const& result_type;
+ result_type operator()(value_type const& value) const
+ {
+ return value.indexable;
+ }
+};
+
+template <typename Indexable>
+struct equal_to< value_no_dctor<Indexable> >
+{
+ typedef value_no_dctor<Indexable> value_type;
+ typedef bool result_type;
+ bool operator()(value_type const& v1, value_type const& v2) const
+ {
+ return boost::geometry::equals(v1.indexable, v2.indexable);
+ }
+};
+
+}}}
+
+namespace generate {
+
+template <typename Indexable>
+struct value_default< value_no_dctor<Indexable> >
+{
+ static value_no_dctor<Indexable> apply() { return value_no_dctor<Indexable>(Indexable()); }
+};
+
+template <typename T, typename C>
+struct value< value_no_dctor<bg::model::point<T, 2, C> > >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef value_no_dctor<P> R;
+ static R apply(int x, int y) { return R(P(x, y)); }
+};
+
+template <typename T, typename C>
+struct value< value_no_dctor<bg::model::point<T, 3, C> > >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef value_no_dctor<P> R;
+ static R apply(int x, int y, int z) { return R(P(x, y, z)); }
+};
+
+template <typename T, typename C>
+struct value< value_no_dctor<bg::model::box<bg::model::point<T, 2, C> > > >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::box<P> B;
+ typedef value_no_dctor<B> R;
+ static R apply(int x, int y) { return R(B(P(x, y), P(x+2, y+3))); }
+};
+
+template <typename T, typename C>
+struct value< value_no_dctor<bg::model::box<bg::model::point<T, 3, C> > > >
+{
+ typedef bg::model::point<T, 3, C> P;
+ typedef bg::model::box<P> B;
+ typedef value_no_dctor<B> R;
+ static R apply(int x, int y, int z) { return R(B(P(x, y, z), P(x+2, y+3, z+4))); }
+};
+
+template <typename T, typename C>
+struct value< value_no_dctor<bg::model::segment<bg::model::point<T, 2, C> > > >
+{
+ typedef bg::model::point<T, 2, C> P;
+ typedef bg::model::segment<P> S;
+ typedef value_no_dctor<S> R;
+ static R apply(int x, int y) { return R(S(P(x, y), P(x+2, y+3))); }
+};
+
+// generate input
+
+template <size_t Dimension>
+struct input
+{};
+
+template <>
+struct input<2>
+{
+ template <typename Value, typename Box>
+ static void apply(std::vector<Value> & input, Box & qbox, int size = 1)
+ {
+ BOOST_GEOMETRY_INDEX_ASSERT(0 < size, "the value must be greather than 0");
+
+ for ( int i = 0 ; i < 12 * size ; i += 3 )
+ {
+ for ( int j = 1 ; j < 25 * size ; j += 4 )
+ {
+ input.push_back( generate::value<Value>::apply(i, j) );
+ }
+ }
+
+ typedef typename bg::traits::point_type<Box>::type P;
+
+ qbox = Box(P(3, 0), P(10, 9));
+ }
+};
+
+template <>
+struct input<3>
+{
+ template <typename Value, typename Box>
+ static void apply(std::vector<Value> & input, Box & qbox, int size = 1)
+ {
+ BOOST_GEOMETRY_INDEX_ASSERT(0 < size, "the value must be greather than 0");
+
+ for ( int i = 0 ; i < 12 * size ; i += 3 )
+ {
+ for ( int j = 1 ; j < 25 * size ; j += 4 )
+ {
+ for ( int k = 2 ; k < 12 * size ; k += 5 )
+ {
+ input.push_back( generate::value<Value>::apply(i, j, k) );
+ }
+ }
+ }
+
+ typedef typename bg::traits::point_type<Box>::type P;
+
+ qbox = Box(P(3, 0, 3), P(10, 9, 11));
+ }
+};
+
+// generate_value_outside
+
+template <typename Value, size_t Dimension>
+struct value_outside_impl
+{};
+
+template <typename Value>
+struct value_outside_impl<Value, 2>
+{
+ static Value apply()
+ {
+ //TODO - for size > 1 in generate_input<> this won't be outside
+ return generate::value<Value>::apply(13, 26);
+ }
+};
+
+template <typename Value>
+struct value_outside_impl<Value, 3>
+{
+ static Value apply()
+ {
+ //TODO - for size > 1 in generate_input<> this won't be outside
+ return generate::value<Value>::apply(13, 26, 13);
+ }
+};
+
+template <typename Rtree>
+inline typename Rtree::value_type
+value_outside()
+{
+ typedef typename Rtree::value_type V;
+ typedef typename Rtree::indexable_type I;
+
+ return value_outside_impl<V, bg::dimension<I>::value>::apply();
+}
+
+template<typename Rtree, typename Elements, typename Box>
+void rtree(Rtree & tree, Elements & input, Box & qbox)
+{
+ typedef typename Rtree::indexable_type I;
+
+ generate::input<
+ bg::dimension<I>::value
+ >::apply(input, qbox);
+
+ tree.insert(input.begin(), input.end());
+}
+
+} // namespace generate
+
+namespace basictest {
+
+// low level test functions
+
+template <typename Rtree, typename Iter, typename Value>
+Iter find(Rtree const& rtree, Iter first, Iter last, Value const& value)
+{
+ for ( ; first != last ; ++first )
+ if ( rtree.value_eq()(value, *first) )
+ return first;
+ return first;
+}
+
+template <typename Rtree, typename Value>
+void compare_outputs(Rtree const& rtree, std::vector<Value> const& output, std::vector<Value> const& expected_output)
+{
+ bool are_sizes_ok = (expected_output.size() == output.size());
+ BOOST_CHECK( are_sizes_ok );
+ if ( are_sizes_ok )
+ {
+ BOOST_FOREACH(Value const& v, expected_output)
+ {
+ BOOST_CHECK(find(rtree, output.begin(), output.end(), v) != output.end() );
+ }
+ }
+}
+
+template <typename Rtree, typename Range1, typename Range2>
+void exactly_the_same_outputs(Rtree const& rtree, Range1 const& output, Range2 const& expected_output)
+{
+ size_t s1 = std::distance(output.begin(), output.end());
+ size_t s2 = std::distance(expected_output.begin(), expected_output.end());
+ BOOST_CHECK(s1 == s2);
+
+ if ( s1 == s2 )
+ {
+ typename Range1::const_iterator it1 = output.begin();
+ typename Range2::const_iterator it2 = expected_output.begin();
+ for ( ; it1 != output.end() && it2 != expected_output.end() ; ++it1, ++it2 )
+ {
+ if ( !rtree.value_eq()(*it1, *it2) )
+ {
+ BOOST_CHECK(false && "rtree.translator().equals(*it1, *it2)");
+ break;
+ }
+ }
+ }
+}
+
+// alternative version of std::copy taking iterators of differnet types
+template <typename First, typename Last, typename Out>
+void copy_alt(First first, Last last, Out out)
+{
+ for ( ; first != last ; ++first, ++out )
+ *out = *first;
+}
+
+// spatial query
+
+template <typename Rtree, typename Value, typename Predicates>
+void spatial_query(Rtree & rtree, Predicates const& pred, std::vector<Value> const& expected_output)
+{
+ BOOST_CHECK( bgi::detail::rtree::utilities::are_levels_ok(rtree) );
+ if ( !rtree.empty() )
+ BOOST_CHECK( bgi::detail::rtree::utilities::are_boxes_ok(rtree) );
+
+ std::vector<Value> output;
+ size_t n = rtree.query(pred, std::back_inserter(output));
+
+ BOOST_CHECK( expected_output.size() == n );
+ compare_outputs(rtree, output, expected_output);
+
+ std::vector<Value> output2;
+ size_t n2 = query(rtree, pred, std::back_inserter(output2));
+
+ BOOST_CHECK( n == n2 );
+ exactly_the_same_outputs(rtree, output, output2);
+
+ exactly_the_same_outputs(rtree, output, rtree | bgi::adaptors::queried(pred));
+
+ std::vector<Value> output3;
+ std::copy(rtree.qbegin(pred), rtree.qend(), std::back_inserter(output3));
+
+ compare_outputs(rtree, output3, expected_output);
+
+ std::vector<Value> output4;
+ std::copy(qbegin(rtree, pred), qend(rtree), std::back_inserter(output4));
+
+ exactly_the_same_outputs(rtree, output3, output4);
+
+#ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+ {
+ std::vector<Value> output4;
+ std::copy(rtree.qbegin_(pred), rtree.qend_(pred), std::back_inserter(output4));
+ compare_outputs(rtree, output4, expected_output);
+ output4.clear();
+ copy_alt(rtree.qbegin_(pred), rtree.qend_(), std::back_inserter(output4));
+ compare_outputs(rtree, output4, expected_output);
+ }
+#endif
+}
+
+// rtree specific queries tests
+
+template <typename Rtree, typename Value, typename Box>
+void intersects(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+{
+ std::vector<Value> expected_output;
+
+ BOOST_FOREACH(Value const& v, input)
+ if ( bg::intersects(tree.indexable_get()(v), qbox) )
+ expected_output.push_back(v);
+
+ //spatial_query(tree, qbox, expected_output);
+ spatial_query(tree, bgi::intersects(qbox), expected_output);
+ spatial_query(tree, !bgi::disjoint(qbox), expected_output);
+
+ /*typedef bg::traits::point_type<Box>::type P;
+ bg::model::ring<P> qring;
+ bg::convert(qbox, qring);
+ spatial_query(tree, bgi::intersects(qring), expected_output);
+ spatial_query(tree, !bgi::disjoint(qring), expected_output);
+ bg::model::polygon<P> qpoly;
+ bg::convert(qbox, qpoly);
+ spatial_query(tree, bgi::intersects(qpoly), expected_output);
+ spatial_query(tree, !bgi::disjoint(qpoly), expected_output);*/
+}
+
+template <typename Rtree, typename Value, typename Box>
+void disjoint(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+{
+ std::vector<Value> expected_output;
+
+ BOOST_FOREACH(Value const& v, input)
+ if ( bg::disjoint(tree.indexable_get()(v), qbox) )
+ expected_output.push_back(v);
+
+ spatial_query(tree, bgi::disjoint(qbox), expected_output);
+ spatial_query(tree, !bgi::intersects(qbox), expected_output);
+
+ /*typedef bg::traits::point_type<Box>::type P;
+ bg::model::ring<P> qring;
+ bg::convert(qbox, qring);
+ spatial_query(tree, bgi::disjoint(qring), expected_output);
+ bg::model::polygon<P> qpoly;
+ bg::convert(qbox, qpoly);
+ spatial_query(tree, bgi::disjoint(qpoly), expected_output);*/
+}
+
+template <typename Tag>
+struct contains_impl
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+ {
+ std::vector<Value> expected_output;
+
+ BOOST_FOREACH(Value const& v, input)
+ if ( bg::within(qbox, tree.indexable_get()(v)) )
+ expected_output.push_back(v);
+
+ spatial_query(tree, bgi::contains(qbox), expected_output);
+
+ /*typedef bg::traits::point_type<Box>::type P;
+ bg::model::ring<P> qring;
+ bg::convert(qbox, qring);
+ spatial_query(tree, bgi::contains(qring), expected_output);
+ bg::model::polygon<P> qpoly;
+ bg::convert(qbox, qpoly);
+ spatial_query(tree, bgi::contains(qpoly), expected_output);*/
+ }
+};
+
+template <>
+struct contains_impl<bg::point_tag>
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& /*tree*/, std::vector<Value> const& /*input*/, Box const& /*qbox*/)
+ {}
+};
+
+template <>
+struct contains_impl<bg::segment_tag>
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& /*tree*/, std::vector<Value> const& /*input*/, Box const& /*qbox*/)
+ {}
+};
+
+template <typename Rtree, typename Value, typename Box>
+void contains(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+{
+ contains_impl<
+ typename bg::tag<
+ typename Rtree::indexable_type
+ >::type
+ >::apply(tree, input, qbox);
+}
+
+template <typename Tag>
+struct covered_by_impl
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+ {
+ std::vector<Value> expected_output;
+
+ BOOST_FOREACH(Value const& v, input)
+ {
+ if ( bg::covered_by(
+ bgi::detail::return_ref_or_bounds(
+ tree.indexable_get()(v)),
+ qbox) )
+ {
+ expected_output.push_back(v);
+ }
+ }
+
+ spatial_query(tree, bgi::covered_by(qbox), expected_output);
+
+ /*typedef bg::traits::point_type<Box>::type P;
+ bg::model::ring<P> qring;
+ bg::convert(qbox, qring);
+ spatial_query(tree, bgi::covered_by(qring), expected_output);
+ bg::model::polygon<P> qpoly;
+ bg::convert(qbox, qpoly);
+ spatial_query(tree, bgi::covered_by(qpoly), expected_output);*/
+ }
+};
+
+template <>
+struct covered_by_impl<bg::segment_tag>
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& /*tree*/, std::vector<Value> const& /*input*/, Box const& /*qbox*/)
+ {}
+};
+
+template <typename Rtree, typename Value, typename Box>
+void covered_by(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+{
+ covered_by_impl<
+ typename bg::tag<
+ typename Rtree::indexable_type
+ >::type
+ >::apply(tree, input, qbox);
+}
+
+template <typename Tag>
+struct covers_impl
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+ {
+ std::vector<Value> expected_output;
+
+ BOOST_FOREACH(Value const& v, input)
+ if ( bg::covered_by(qbox, tree.indexable_get()(v)) )
+ expected_output.push_back(v);
+
+ spatial_query(tree, bgi::covers(qbox), expected_output);
+
+ /*typedef bg::traits::point_type<Box>::type P;
+ bg::model::ring<P> qring;
+ bg::convert(qbox, qring);
+ spatial_query(tree, bgi::covers(qring), expected_output);
+ bg::model::polygon<P> qpoly;
+ bg::convert(qbox, qpoly);
+ spatial_query(tree, bgi::covers(qpoly), expected_output);*/
+ }
+};
+
+template <>
+struct covers_impl<bg::point_tag>
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& /*tree*/, std::vector<Value> const& /*input*/, Box const& /*qbox*/)
+ {}
+};
+
+template <>
+struct covers_impl<bg::segment_tag>
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& /*tree*/, std::vector<Value> const& /*input*/, Box const& /*qbox*/)
+ {}
+};
+
+template <typename Rtree, typename Value, typename Box>
+void covers(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+{
+ covers_impl<
+ typename bg::tag<
+ typename Rtree::indexable_type
+ >::type
+ >::apply(tree, input, qbox);
+}
+
+template <typename Tag>
+struct overlaps_impl
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+ {
+ std::vector<Value> expected_output;
+
+ BOOST_FOREACH(Value const& v, input)
+ if ( bg::overlaps(tree.indexable_get()(v), qbox) )
+ expected_output.push_back(v);
+
+ spatial_query(tree, bgi::overlaps(qbox), expected_output);
+
+ /*typedef bg::traits::point_type<Box>::type P;
+ bg::model::ring<P> qring;
+ bg::convert(qbox, qring);
+ spatial_query(tree, bgi::overlaps(qring), expected_output);
+ bg::model::polygon<P> qpoly;
+ bg::convert(qbox, qpoly);
+ spatial_query(tree, bgi::overlaps(qpoly), expected_output);*/
+ }
+};
+
+template <>
+struct overlaps_impl<bg::point_tag>
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& /*tree*/, std::vector<Value> const& /*input*/, Box const& /*qbox*/)
+ {}
+};
+
+template <>
+struct overlaps_impl<bg::segment_tag>
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& /*tree*/, std::vector<Value> const& /*input*/, Box const& /*qbox*/)
+ {}
+};
+
+template <typename Rtree, typename Value, typename Box>
+void overlaps(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+{
+ overlaps_impl<
+ typename bg::tag<
+ typename Rtree::indexable_type
+ >::type
+ >::apply(tree, input, qbox);
+}
+
+//template <typename Tag, size_t Dimension>
+//struct touches_impl
+//{
+// template <typename Rtree, typename Value, typename Box>
+// static void apply(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+// {}
+//};
+//
+//template <>
+//struct touches_impl<bg::box_tag, 2>
+//{
+// template <typename Rtree, typename Value, typename Box>
+// static void apply(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+// {
+// std::vector<Value> expected_output;
+//
+// BOOST_FOREACH(Value const& v, input)
+// if ( bg::touches(tree.translator()(v), qbox) )
+// expected_output.push_back(v);
+//
+// spatial_query(tree, bgi::touches(qbox), expected_output);
+// }
+//};
+//
+//template <typename Rtree, typename Value, typename Box>
+//void touches(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+//{
+// touches_impl<
+// bgi::traits::tag<typename Rtree::indexable_type>::type,
+// bgi::traits::dimension<typename Rtree::indexable_type>::value
+// >::apply(tree, input, qbox);
+//}
+
+template <typename Tag>
+struct within_impl
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+ {
+ std::vector<Value> expected_output;
+
+ BOOST_FOREACH(Value const& v, input)
+ if ( bg::within(tree.indexable_get()(v), qbox) )
+ expected_output.push_back(v);
+
+ spatial_query(tree, bgi::within(qbox), expected_output);
+
+ /*typedef bg::traits::point_type<Box>::type P;
+ bg::model::ring<P> qring;
+ bg::convert(qbox, qring);
+ spatial_query(tree, bgi::within(qring), expected_output);
+ bg::model::polygon<P> qpoly;
+ bg::convert(qbox, qpoly);
+ spatial_query(tree, bgi::within(qpoly), expected_output);*/
+ }
+};
+
+template <>
+struct within_impl<bg::segment_tag>
+{
+ template <typename Rtree, typename Value, typename Box>
+ static void apply(Rtree const& /*tree*/, std::vector<Value> const& /*input*/, Box const& /*qbox*/)
+ {}
+};
+
+template <typename Rtree, typename Value, typename Box>
+void within(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+{
+ within_impl<
+ typename bg::tag<
+ typename Rtree::indexable_type
+ >::type
+ >::apply(tree, input, qbox);
+}
+
+// rtree nearest queries
+
+template <typename Rtree, typename Point>
+struct NearestKLess
+{
+ typedef typename bg::default_distance_result<Point, typename Rtree::indexable_type>::type D;
+
+ template <typename Value>
+ bool operator()(std::pair<D, Value> const& p1, std::pair<D, Value> const& p2) const
+ {
+ return p1.first < p2.first;
+ }
+};
+
+template <typename Rtree, typename Point>
+struct NearestKTransform
+{
+ typedef typename bg::default_distance_result<Point, typename Rtree::indexable_type>::type D;
+
+ template <typename Value>
+ Value const& operator()(std::pair<D, Value> const& p) const
+ {
+ return p.second;
+ }
+};
+
+template <typename Rtree, typename Value, typename Point, typename Distance>
+inline void compare_nearest_outputs(Rtree const& rtree, std::vector<Value> const& output, std::vector<Value> const& expected_output, Point const& pt, Distance greatest_distance)
+{
+ // check output
+ bool are_sizes_ok = (expected_output.size() == output.size());
+ BOOST_CHECK( are_sizes_ok );
+ if ( are_sizes_ok )
+ {
+ BOOST_FOREACH(Value const& v, output)
+ {
+ // TODO - perform explicit check here?
+ // should all objects which are closest be checked and should exactly the same be found?
+
+ if ( find(rtree, expected_output.begin(), expected_output.end(), v) == expected_output.end() )
+ {
+ Distance d = bg::comparable_distance(pt, rtree.indexable_get()(v));
+ BOOST_CHECK(d == greatest_distance);
+ }
+ }
+ }
+}
+
+template <typename Rtree, typename Value, typename Point>
+inline void check_sorted_by_distance(Rtree const& rtree, std::vector<Value> const& output, Point const& pt)
+{
+ typedef typename bg::default_distance_result<Point, typename Rtree::indexable_type>::type D;
+
+ D prev_dist = 0;
+ BOOST_FOREACH(Value const& v, output)
+ {
+ D d = bg::comparable_distance(pt, rtree.indexable_get()(v));
+ BOOST_CHECK(prev_dist <= d);
+ prev_dist = d;
+ }
+}
+
+template <typename Rtree, typename Value, typename Point>
+inline void nearest_query_k(Rtree const& rtree, std::vector<Value> const& input, Point const& pt, unsigned int k)
+{
+ // TODO: Nearest object may not be the same as found by the rtree if distances are equal
+ // All objects with the same closest distance should be picked
+
+ typedef typename bg::default_distance_result<Point, typename Rtree::indexable_type>::type D;
+
+ std::vector< std::pair<D, Value> > test_output;
+
+ // calculate test output - k closest values pairs
+ BOOST_FOREACH(Value const& v, input)
+ {
+ D d = bg::comparable_distance(pt, rtree.indexable_get()(v));
+
+ if ( test_output.size() < k )
+ test_output.push_back(std::make_pair(d, v));
+ else
+ {
+ std::sort(test_output.begin(), test_output.end(), NearestKLess<Rtree, Point>());
+ if ( d < test_output.back().first )
+ test_output.back() = std::make_pair(d, v);
+ }
+ }
+
+ // caluclate biggest distance
+ std::sort(test_output.begin(), test_output.end(), NearestKLess<Rtree, Point>());
+ D greatest_distance = 0;
+ if ( !test_output.empty() )
+ greatest_distance = test_output.back().first;
+
+ // transform test output to vector of values
+ std::vector<Value> expected_output(test_output.size(), generate::value_default<Value>::apply());
+ std::transform(test_output.begin(), test_output.end(), expected_output.begin(), NearestKTransform<Rtree, Point>());
+
+ // calculate output using rtree
+ std::vector<Value> output;
+ rtree.query(bgi::nearest(pt, k), std::back_inserter(output));
+
+ // check output
+ compare_nearest_outputs(rtree, output, expected_output, pt, greatest_distance);
+
+ exactly_the_same_outputs(rtree, output, rtree | bgi::adaptors::queried(bgi::nearest(pt, k)));
+
+ std::vector<Value> output2(k, generate::value_default<Value>::apply());
+ typename Rtree::size_type found_count = rtree.query(bgi::nearest(pt, k), output2.begin());
+ output2.resize(found_count, generate::value_default<Value>::apply());
+
+ exactly_the_same_outputs(rtree, output, output2);
+
+ std::vector<Value> output3;
+ std::copy(rtree.qbegin(bgi::nearest(pt, k)), rtree.qend(), std::back_inserter(output3));
+
+ compare_nearest_outputs(rtree, output3, expected_output, pt, greatest_distance);
+ check_sorted_by_distance(rtree, output3, pt);
+
+#ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
+ {
+ std::vector<Value> output4;
+ std::copy(rtree.qbegin_(bgi::nearest(pt, k)), rtree.qend_(bgi::nearest(pt, k)), std::back_inserter(output4));
+ exactly_the_same_outputs(rtree, output4, output3);
+ output4.clear();
+ copy_alt(rtree.qbegin_(bgi::nearest(pt, k)), rtree.qend_(), std::back_inserter(output4));
+ exactly_the_same_outputs(rtree, output4, output3);
+ }
+#endif
+}
+
+// rtree nearest not found
+
+struct AlwaysFalse
+{
+ template <typename Value>
+ bool operator()(Value const& ) const { return false; }
+};
+
+template <typename Rtree, typename Point>
+void nearest_query_not_found(Rtree const& rtree, Point const& pt)
+{
+ typedef typename Rtree::value_type Value;
+
+ std::vector<Value> output_v;
+ size_t n_res = rtree.query(bgi::nearest(pt, 5) && bgi::satisfies(AlwaysFalse()), std::back_inserter(output_v));
+ BOOST_CHECK(output_v.size() == n_res);
+ BOOST_CHECK(n_res < 5);
+}
+
+template <typename Value>
+bool satisfies_fun(Value const& ) { return true; }
+
+struct satisfies_obj
+{
+ template <typename Value>
+ bool operator()(Value const& ) const { return true; }
+};
+
+template <typename Rtree, typename Value>
+void satisfies(Rtree const& rtree, std::vector<Value> const& input)
+{
+ std::vector<Value> result;
+ rtree.query(bgi::satisfies(satisfies_obj()), std::back_inserter(result));
+ BOOST_CHECK(result.size() == input.size());
+ result.clear();
+ rtree.query(!bgi::satisfies(satisfies_obj()), std::back_inserter(result));
+ BOOST_CHECK(result.size() == 0);
+
+ result.clear();
+ rtree.query(bgi::satisfies(satisfies_fun<Value>), std::back_inserter(result));
+ BOOST_CHECK(result.size() == input.size());
+ result.clear();
+ rtree.query(!bgi::satisfies(satisfies_fun<Value>), std::back_inserter(result));
+ BOOST_CHECK(result.size() == 0);
+
+#ifndef BOOST_NO_CXX11_LAMBDAS
+ result.clear();
+ rtree.query(bgi::satisfies([](Value const&){ return true; }), std::back_inserter(result));
+ BOOST_CHECK(result.size() == input.size());
+ result.clear();
+ rtree.query(!bgi::satisfies([](Value const&){ return true; }), std::back_inserter(result));
+ BOOST_CHECK(result.size() == 0);
+#endif
+}
+
+// rtree copying and moving
+
+template <typename Rtree, typename Box>
+void copy_swap_move(Rtree const& tree, Box const& qbox)
+{
+ typedef typename Rtree::value_type Value;
+ typedef typename Rtree::parameters_type Params;
+
+ size_t s = tree.size();
+ Params params = tree.parameters();
+
+ std::vector<Value> expected_output;
+ tree.query(bgi::intersects(qbox), std::back_inserter(expected_output));
+
+ // copy constructor
+ Rtree t1(tree);
+
+ BOOST_CHECK(tree.empty() == t1.empty());
+ BOOST_CHECK(tree.size() == t1.size());
+ BOOST_CHECK(t1.parameters().get_max_elements() == params.get_max_elements());
+ BOOST_CHECK(t1.parameters().get_min_elements() == params.get_min_elements());
+
+ std::vector<Value> output;
+ t1.query(bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t1, output, expected_output);
+
+ // copying assignment operator
+ t1 = tree;
+
+ BOOST_CHECK(tree.empty() == t1.empty());
+ BOOST_CHECK(tree.size() == t1.size());
+ BOOST_CHECK(t1.parameters().get_max_elements() == params.get_max_elements());
+ BOOST_CHECK(t1.parameters().get_min_elements() == params.get_min_elements());
+
+ output.clear();
+ t1.query(bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t1, output, expected_output);
+
+ Rtree t2(tree.parameters(), tree.indexable_get(), tree.value_eq(), tree.get_allocator());
+ t2.swap(t1);
+ BOOST_CHECK(tree.empty() == t2.empty());
+ BOOST_CHECK(tree.size() == t2.size());
+ BOOST_CHECK(true == t1.empty());
+ BOOST_CHECK(0 == t1.size());
+ // those fails e.g. on darwin 4.2.1 because it can't copy base obejcts properly
+ BOOST_CHECK(t1.parameters().get_max_elements() == params.get_max_elements());
+ BOOST_CHECK(t1.parameters().get_min_elements() == params.get_min_elements());
+ BOOST_CHECK(t2.parameters().get_max_elements() == params.get_max_elements());
+ BOOST_CHECK(t2.parameters().get_min_elements() == params.get_min_elements());
+
+ output.clear();
+ t1.query(bgi::intersects(qbox), std::back_inserter(output));
+ BOOST_CHECK(output.empty());
+
+ output.clear();
+ t2.query(bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t2, output, expected_output);
+ t2.swap(t1);
+ // those fails e.g. on darwin 4.2.1 because it can't copy base obejcts properly
+ BOOST_CHECK(t1.parameters().get_max_elements() == params.get_max_elements());
+ BOOST_CHECK(t1.parameters().get_min_elements() == params.get_min_elements());
+ BOOST_CHECK(t2.parameters().get_max_elements() == params.get_max_elements());
+ BOOST_CHECK(t2.parameters().get_min_elements() == params.get_min_elements());
+
+ // moving constructor
+ Rtree t3(boost::move(t1), tree.get_allocator());
+
+ BOOST_CHECK(t3.size() == s);
+ BOOST_CHECK(t1.size() == 0);
+ BOOST_CHECK(t3.parameters().get_max_elements() == params.get_max_elements());
+ BOOST_CHECK(t3.parameters().get_min_elements() == params.get_min_elements());
+
+ output.clear();
+ t3.query(bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t3, output, expected_output);
+
+ // moving assignment operator
+ t1 = boost::move(t3);
+
+ BOOST_CHECK(t1.size() == s);
+ BOOST_CHECK(t3.size() == 0);
+ BOOST_CHECK(t1.parameters().get_max_elements() == params.get_max_elements());
+ BOOST_CHECK(t1.parameters().get_min_elements() == params.get_min_elements());
+
+ output.clear();
+ t1.query(bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t1, output, expected_output);
+
+ //TODO - test SWAP
+
+ ::boost::ignore_unused_variable_warning(params);
+}
+
+template <typename I, typename O>
+inline void my_copy(I first, I last, O out)
+{
+ for ( ; first != last ; ++first, ++out )
+ *out = *first;
+}
+
+// rtree creation and insertion
+
+template <typename Rtree, typename Value, typename Box>
+void create_insert(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+{
+ std::vector<Value> expected_output;
+ tree.query(bgi::intersects(qbox), std::back_inserter(expected_output));
+
+ {
+ Rtree t(tree.parameters(), tree.indexable_get(), tree.value_eq(), tree.get_allocator());
+ BOOST_FOREACH(Value const& v, input)
+ t.insert(v);
+ BOOST_CHECK(tree.size() == t.size());
+ std::vector<Value> output;
+ t.query(bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t, output, expected_output);
+ }
+ {
+ Rtree t(tree.parameters(), tree.indexable_get(), tree.value_eq(), tree.get_allocator());
+ //std::copy(input.begin(), input.end(), bgi::inserter(t));
+ my_copy(input.begin(), input.end(), bgi::inserter(t)); // to suppress MSVC warnings
+ BOOST_CHECK(tree.size() == t.size());
+ std::vector<Value> output;
+ t.query(bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t, output, expected_output);
+ }
+ {
+ Rtree t(input.begin(), input.end(), tree.parameters(), tree.indexable_get(), tree.value_eq(), tree.get_allocator());
+ BOOST_CHECK(tree.size() == t.size());
+ std::vector<Value> output;
+ t.query(bgi::intersects(qbox), std::back_inserter(output));
+ compare_outputs(t, output, expected_output);
+ }
+ {
+ Rtree t(input, tree.parameters(), tree.indexable_get(), tree.value_eq(), tree.get_allocator());
+ BOOST_CHECK(tree.size() == t.size());
+ std::vector<Value> output;
+ t.query(bgi::intersects(qbox), std::back_inserter(output));
+ compare_outputs(t, output, expected_output);
+ }
+ {
+ Rtree t(tree.parameters(), tree.indexable_get(), tree.value_eq(), tree.get_allocator());
+ t.insert(input.begin(), input.end());
+ BOOST_CHECK(tree.size() == t.size());
+ std::vector<Value> output;
+ t.query(bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t, output, expected_output);
+ }
+ {
+ Rtree t(tree.parameters(), tree.indexable_get(), tree.value_eq(), tree.get_allocator());
+ t.insert(input);
+ BOOST_CHECK(tree.size() == t.size());
+ std::vector<Value> output;
+ t.query(bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t, output, expected_output);
+ }
+
+ {
+ Rtree t(tree.parameters(), tree.indexable_get(), tree.value_eq(), tree.get_allocator());
+ BOOST_FOREACH(Value const& v, input)
+ bgi::insert(t, v);
+ BOOST_CHECK(tree.size() == t.size());
+ std::vector<Value> output;
+ bgi::query(t, bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t, output, expected_output);
+ }
+ {
+ Rtree t(tree.parameters(), tree.indexable_get(), tree.value_eq(), tree.get_allocator());
+ bgi::insert(t, input.begin(), input.end());
+ BOOST_CHECK(tree.size() == t.size());
+ std::vector<Value> output;
+ bgi::query(t, bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t, output, expected_output);
+ }
+ {
+ Rtree t(tree.parameters(), tree.indexable_get(), tree.value_eq(), tree.get_allocator());
+ bgi::insert(t, input);
+ BOOST_CHECK(tree.size() == t.size());
+ std::vector<Value> output;
+ bgi::query(t, bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t, output, expected_output);
+ }
+}
+
+// rtree removing
+
+template <typename Rtree, typename Box>
+void remove(Rtree const& tree, Box const& qbox)
+{
+ typedef typename Rtree::value_type Value;
+
+ std::vector<Value> values_to_remove;
+ tree.query(bgi::intersects(qbox), std::back_inserter(values_to_remove));
+ BOOST_CHECK(0 < values_to_remove.size());
+
+ std::vector<Value> expected_output;
+ tree.query(bgi::disjoint(qbox), std::back_inserter(expected_output));
+ size_t expected_removed_count = values_to_remove.size();
+ size_t expected_size_after_remove = tree.size() - values_to_remove.size();
+
+ // Add value which is not stored in the Rtree
+ Value outsider = generate::value_outside<Rtree>();
+ values_to_remove.push_back(outsider);
+
+ {
+ Rtree t(tree);
+ size_t r = 0;
+ BOOST_FOREACH(Value const& v, values_to_remove)
+ r += t.remove(v);
+ BOOST_CHECK( r == expected_removed_count );
+ std::vector<Value> output;
+ t.query(bgi::disjoint(qbox), std::back_inserter(output));
+ BOOST_CHECK( t.size() == expected_size_after_remove );
+ BOOST_CHECK( output.size() == tree.size() - expected_removed_count );
+ compare_outputs(t, output, expected_output);
+ }
+ {
+ Rtree t(tree);
+ size_t r = t.remove(values_to_remove.begin(), values_to_remove.end());
+ BOOST_CHECK( r == expected_removed_count );
+ std::vector<Value> output;
+ t.query(bgi::disjoint(qbox), std::back_inserter(output));
+ BOOST_CHECK( t.size() == expected_size_after_remove );
+ BOOST_CHECK( output.size() == tree.size() - expected_removed_count );
+ compare_outputs(t, output, expected_output);
+ }
+ {
+ Rtree t(tree);
+ size_t r = t.remove(values_to_remove);
+ BOOST_CHECK( r == expected_removed_count );
+ std::vector<Value> output;
+ t.query(bgi::disjoint(qbox), std::back_inserter(output));
+ BOOST_CHECK( t.size() == expected_size_after_remove );
+ BOOST_CHECK( output.size() == tree.size() - expected_removed_count );
+ compare_outputs(t, output, expected_output);
+ }
+
+ {
+ Rtree t(tree);
+ size_t r = 0;
+ BOOST_FOREACH(Value const& v, values_to_remove)
+ r += bgi::remove(t, v);
+ BOOST_CHECK( r == expected_removed_count );
+ std::vector<Value> output;
+ bgi::query(t, bgi::disjoint(qbox), std::back_inserter(output));
+ BOOST_CHECK( t.size() == expected_size_after_remove );
+ BOOST_CHECK( output.size() == tree.size() - expected_removed_count );
+ compare_outputs(t, output, expected_output);
+ }
+ {
+ Rtree t(tree);
+ size_t r = bgi::remove(t, values_to_remove.begin(), values_to_remove.end());
+ BOOST_CHECK( r == expected_removed_count );
+ std::vector<Value> output;
+ bgi::query(t, bgi::disjoint(qbox), std::back_inserter(output));
+ BOOST_CHECK( t.size() == expected_size_after_remove );
+ BOOST_CHECK( output.size() == tree.size() - expected_removed_count );
+ compare_outputs(t, output, expected_output);
+ }
+ {
+ Rtree t(tree);
+ size_t r = bgi::remove(t, values_to_remove);
+ BOOST_CHECK( r == expected_removed_count );
+ std::vector<Value> output;
+ bgi::query(t, bgi::disjoint(qbox), std::back_inserter(output));
+ BOOST_CHECK( t.size() == expected_size_after_remove );
+ BOOST_CHECK( output.size() == tree.size() - expected_removed_count );
+ compare_outputs(t, output, expected_output);
+ }
+}
+
+template <typename Rtree, typename Value, typename Box>
+void clear(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+{
+ std::vector<Value> values_to_remove;
+ tree.query(bgi::intersects(qbox), std::back_inserter(values_to_remove));
+ BOOST_CHECK(0 < values_to_remove.size());
+
+ //clear
+ {
+ Rtree t(tree);
+
+ std::vector<Value> expected_output;
+ t.query(bgi::intersects(qbox), std::back_inserter(expected_output));
+ size_t s = t.size();
+ t.clear();
+ BOOST_CHECK(t.empty());
+ BOOST_CHECK(t.size() == 0);
+ t.insert(input);
+ BOOST_CHECK(t.size() == s);
+ std::vector<Value> output;
+ t.query(bgi::intersects(qbox), std::back_inserter(output));
+ exactly_the_same_outputs(t, output, expected_output);
+ }
+}
+
+// rtree queries
+
+template <typename Rtree, typename Value, typename Box>
+void queries(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+{
+ basictest::intersects(tree, input, qbox);
+ basictest::disjoint(tree, input, qbox);
+ basictest::covered_by(tree, input, qbox);
+ basictest::overlaps(tree, input, qbox);
+ //basictest::touches(tree, input, qbox);
+ basictest::within(tree, input, qbox);
+ basictest::contains(tree, input, qbox);
+ basictest::covers(tree, input, qbox);
+
+ typedef typename bg::point_type<Box>::type P;
+ P pt;
+ bg::centroid(qbox, pt);
+
+ basictest::nearest_query_k(tree, input, pt, 10);
+ basictest::nearest_query_not_found(tree, generate::outside_point<P>::apply());
+
+ basictest::satisfies(tree, input);
+}
+
+// rtree creation and modification
+
+template <typename Rtree, typename Value, typename Box>
+void modifiers(Rtree const& tree, std::vector<Value> const& input, Box const& qbox)
+{
+ basictest::copy_swap_move(tree, qbox);
+ basictest::create_insert(tree, input, qbox);
+ basictest::remove(tree, qbox);
+ basictest::clear(tree, input, qbox);
+}
+
+} // namespace basictest
+
+template <typename Value, typename Parameters, typename Allocator>
+void test_rtree_queries(Parameters const& parameters, Allocator const& allocator)
+{
+ typedef bgi::indexable<Value> I;
+ typedef bgi::equal_to<Value> E;
+ typedef typename Allocator::template rebind<Value>::other A;
+ typedef bgi::rtree<Value, Parameters, I, E, A> Tree;
+ typedef typename Tree::bounds_type B;
+
+ Tree tree(parameters, I(), E(), allocator);
+ std::vector<Value> input;
+ B qbox;
+
+ generate::rtree(tree, input, qbox);
+
+ basictest::queries(tree, input, qbox);
+
+ Tree empty_tree(parameters, I(), E(), allocator);
+ std::vector<Value> empty_input;
+
+ basictest::queries(empty_tree, empty_input, qbox);
+}
+
+template <typename Value, typename Parameters, typename Allocator>
+void test_rtree_modifiers(Parameters const& parameters, Allocator const& allocator)
+{
+ typedef bgi::indexable<Value> I;
+ typedef bgi::equal_to<Value> E;
+ typedef typename Allocator::template rebind<Value>::other A;
+ typedef bgi::rtree<Value, Parameters, I, E, A> Tree;
+ typedef typename Tree::bounds_type B;
+
+ Tree tree(parameters, I(), E(), allocator);
+ std::vector<Value> input;
+ B qbox;
+
+ generate::rtree(tree, input, qbox);
+
+ basictest::modifiers(tree, input, qbox);
+
+ Tree empty_tree(parameters, I(), E(), allocator);
+ std::vector<Value> empty_input;
+
+ basictest::copy_swap_move(empty_tree, qbox);
+}
+
+// run all tests for a single Algorithm and single rtree
+// defined by Value
+
+template <typename Value, typename Parameters, typename Allocator>
+void test_rtree_by_value(Parameters const& parameters, Allocator const& allocator)
+{
+ test_rtree_queries<Value>(parameters, allocator);
+ test_rtree_modifiers<Value>(parameters, allocator);
+}
+
+// rtree inserting and removing of counting_value
+
+template <typename Indexable, typename Parameters, typename Allocator>
+void test_count_rtree_values(Parameters const& parameters, Allocator const& allocator)
+{
+ typedef counting_value<Indexable> Value;
+
+ typedef bgi::indexable<Value> I;
+ typedef bgi::equal_to<Value> E;
+ typedef typename Allocator::template rebind<Value>::other A;
+ typedef bgi::rtree<Value, Parameters, I, E, A> Tree;
+ typedef typename Tree::bounds_type B;
+
+ Tree t(parameters, I(), E(), allocator);
+ std::vector<Value> input;
+ B qbox;
+
+ generate::rtree(t, input, qbox);
+
+ size_t rest_count = input.size();
+
+ BOOST_CHECK(t.size() + rest_count == Value::counter());
+
+ std::vector<Value> values_to_remove;
+ t.query(bgi::intersects(qbox), std::back_inserter(values_to_remove));
+
+ rest_count += values_to_remove.size();
+
+ BOOST_CHECK(t.size() + rest_count == Value::counter());
+
+ size_t values_count = Value::counter();
+
+ BOOST_FOREACH(Value const& v, values_to_remove)
+ {
+ size_t r = t.remove(v);
+ --values_count;
+
+ BOOST_CHECK(1 == r);
+ BOOST_CHECK(Value::counter() == values_count);
+ BOOST_CHECK(t.size() + rest_count == values_count);
+ }
+}
+
+// rtree count
+
+template <typename Indexable, typename Parameters, typename Allocator>
+void test_rtree_count(Parameters const& parameters, Allocator const& allocator)
+{
+ typedef std::pair<Indexable, int> Value;
+
+ typedef bgi::indexable<Value> I;
+ typedef bgi::equal_to<Value> E;
+ typedef typename Allocator::template rebind<Value>::other A;
+ typedef bgi::rtree<Value, Parameters, I, E, A> Tree;
+ typedef typename Tree::bounds_type B;
+
+ Tree t(parameters, I(), E(), allocator);
+ std::vector<Value> input;
+ B qbox;
+
+ generate::rtree(t, input, qbox);
+
+ BOOST_CHECK(t.count(input[0]) == 1);
+ BOOST_CHECK(t.count(input[0].first) == 1);
+
+ t.insert(input[0]);
+
+ BOOST_CHECK(t.count(input[0]) == 2);
+ BOOST_CHECK(t.count(input[0].first) == 2);
+
+ t.insert(std::make_pair(input[0].first, -1));
+
+ BOOST_CHECK(t.count(input[0]) == 2);
+ BOOST_CHECK(t.count(input[0].first) == 3);
+}
+
+// test rtree box
+
+template <typename Value, typename Parameters, typename Allocator>
+void test_rtree_bounds(Parameters const& parameters, Allocator const& allocator)
+{
+ typedef bgi::indexable<Value> I;
+ typedef bgi::equal_to<Value> E;
+ typedef typename Allocator::template rebind<Value>::other A;
+ typedef bgi::rtree<Value, Parameters, I, E, A> Tree;
+ typedef typename Tree::bounds_type B;
+ //typedef typename bg::traits::point_type<B>::type P;
+
+ B b;
+ bg::assign_inverse(b);
+
+ Tree t(parameters, I(), E(), allocator);
+ std::vector<Value> input;
+ B qbox;
+
+ BOOST_CHECK(bg::equals(t.bounds(), b));
+
+ generate::rtree(t, input, qbox);
+
+ BOOST_FOREACH(Value const& v, input)
+ bg::expand(b, t.indexable_get()(v));
+
+ BOOST_CHECK(bg::equals(t.bounds(), b));
+ BOOST_CHECK(bg::equals(t.bounds(), bgi::bounds(t)));
+
+ size_t s = input.size();
+ while ( s/2 < input.size() && !input.empty() )
+ {
+ t.remove(input.back());
+ input.pop_back();
+ }
+
+ bg::assign_inverse(b);
+ BOOST_FOREACH(Value const& v, input)
+ bg::expand(b, t.indexable_get()(v));
+
+ BOOST_CHECK(bg::equals(t.bounds(), b));
+
+ Tree t2(t);
+ BOOST_CHECK(bg::equals(t2.bounds(), b));
+ t2.clear();
+ t2 = t;
+ BOOST_CHECK(bg::equals(t2.bounds(), b));
+ t2.clear();
+ t2 = boost::move(t);
+ BOOST_CHECK(bg::equals(t2.bounds(), b));
+
+ t.clear();
+
+ bg::assign_inverse(b);
+ BOOST_CHECK(bg::equals(t.bounds(), b));
+}
+
+template <typename Indexable, typename Parameters, typename Allocator>
+void test_rtree_additional(Parameters const& parameters, Allocator const& allocator)
+{
+ test_count_rtree_values<Indexable>(parameters, allocator);
+ test_rtree_count<Indexable>(parameters, allocator);
+ test_rtree_bounds<Indexable>(parameters, allocator);
+}
+
+// run all tests for one Algorithm for some number of rtrees
+// defined by some number of Values constructed from given Point
+
+template<typename Point, typename Parameters, typename Allocator>
+void test_rtree_for_point(Parameters const& parameters, Allocator const& allocator)
+{
+ typedef std::pair<Point, int> PairP;
+ typedef boost::tuple<Point, int, int> TupleP;
+ typedef boost::shared_ptr< test_object<Point> > SharedPtrP;
+ typedef value_no_dctor<Point> VNoDCtor;
+
+ test_rtree_by_value<Point, Parameters>(parameters, allocator);
+ test_rtree_by_value<PairP, Parameters>(parameters, allocator);
+ test_rtree_by_value<TupleP, Parameters>(parameters, allocator);
+
+ test_rtree_by_value<SharedPtrP, Parameters>(parameters, allocator);
+ test_rtree_by_value<VNoDCtor, Parameters>(parameters, allocator);
+
+ test_rtree_additional<Point>(parameters, allocator);
+
+#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+ typedef std::tuple<Point, int, int> StdTupleP;
+ test_rtree_by_value<StdTupleP, Parameters>(parameters, allocator);
+#endif
+}
+
+template<typename Point, typename Parameters, typename Allocator>
+void test_rtree_for_box(Parameters const& parameters, Allocator const& allocator)
+{
+ typedef bg::model::box<Point> Box;
+ typedef std::pair<Box, int> PairB;
+ typedef boost::tuple<Box, int, int> TupleB;
+ typedef value_no_dctor<Box> VNoDCtor;
+
+ test_rtree_by_value<Box, Parameters>(parameters, allocator);
+ test_rtree_by_value<PairB, Parameters>(parameters, allocator);
+ test_rtree_by_value<TupleB, Parameters>(parameters, allocator);
+
+ test_rtree_by_value<VNoDCtor, Parameters>(parameters, allocator);
+
+ test_rtree_additional<Box>(parameters, allocator);
+
+#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+ typedef std::tuple<Box, int, int> StdTupleB;
+ test_rtree_by_value<StdTupleB, Parameters>(parameters, allocator);
+#endif
+}
+
+template<typename Point, typename Parameters>
+void test_rtree_for_point(Parameters const& parameters)
+{
+ test_rtree_for_point<Point>(parameters, std::allocator<int>());
+}
+
+template<typename Point, typename Parameters>
+void test_rtree_for_box(Parameters const& parameters)
+{
+ test_rtree_for_box<Point>(parameters, std::allocator<int>());
+}
+
+namespace testset {
+
+template<typename Indexable, typename Parameters, typename Allocator>
+void modifiers(Parameters const& parameters, Allocator const& allocator)
+{
+ typedef std::pair<Indexable, int> Pair;
+ typedef boost::tuple<Indexable, int, int> Tuple;
+ typedef boost::shared_ptr< test_object<Indexable> > SharedPtr;
+ typedef value_no_dctor<Indexable> VNoDCtor;
+
+ test_rtree_modifiers<Indexable>(parameters, allocator);
+ test_rtree_modifiers<Pair>(parameters, allocator);
+ test_rtree_modifiers<Tuple>(parameters, allocator);
+
+ test_rtree_modifiers<SharedPtr>(parameters, allocator);
+ test_rtree_modifiers<VNoDCtor>(parameters, allocator);
+
+#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+ typedef std::tuple<Indexable, int, int> StdTuple;
+ test_rtree_modifiers<StdTuple>(parameters, allocator);
+#endif
+}
+
+template<typename Indexable, typename Parameters, typename Allocator>
+void queries(Parameters const& parameters, Allocator const& allocator)
+{
+ typedef std::pair<Indexable, int> Pair;
+ typedef boost::tuple<Indexable, int, int> Tuple;
+ typedef boost::shared_ptr< test_object<Indexable> > SharedPtr;
+ typedef value_no_dctor<Indexable> VNoDCtor;
+
+ test_rtree_queries<Indexable>(parameters, allocator);
+ test_rtree_queries<Pair>(parameters, allocator);
+ test_rtree_queries<Tuple>(parameters, allocator);
+
+ test_rtree_queries<SharedPtr>(parameters, allocator);
+ test_rtree_queries<VNoDCtor>(parameters, allocator);
+
+#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+ typedef std::tuple<Indexable, int, int> StdTuple;
+ test_rtree_queries<StdTuple>(parameters, allocator);
+#endif
+}
+
+template<typename Indexable, typename Parameters, typename Allocator>
+void additional(Parameters const& parameters, Allocator const& allocator)
+{
+ test_rtree_additional<Indexable, Parameters>(parameters, allocator);
+}
+
+} // namespace testset
+
+#endif // BOOST_GEOMETRY_INDEX_TEST_RTREE_HPP
diff --git a/libs/geometry/index/test/varray.cpp b/libs/geometry/index/test/varray.cpp
new file mode 100644
index 0000000000..d561f1c788
--- /dev/null
+++ b/libs/geometry/index/test/varray.cpp
@@ -0,0 +1,781 @@
+// Boost.Geometry.Index varray
+// Unit Test
+
+// Copyright (c) 2012-2014 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2012-2013 Andrew Hundt.
+
+// 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)
+
+#include <boost/test/included/test_exec_monitor.hpp>
+#include <boost/test/impl/execution_monitor.ipp>
+
+// TODO: Disable parts of the unit test that should not run when BOOST_NO_EXCEPTIONS
+// if exceptions are enabled there must be a user defined throw_exception function
+#ifdef BOOST_NO_EXCEPTIONS
+namespace boost {
+ void throw_exception(std::exception const & e){}; // user defined
+} // namespace boost
+#endif // BOOST_NO_EXCEPTIONS
+
+#include <vector>
+#include <list>
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#include <boost/container/vector.hpp>
+#include <boost/container/stable_vector.hpp>
+using namespace boost::container;
+#endif
+
+#include "varray_test.hpp"
+
+using namespace boost::geometry::index::detail;
+
+template <typename T, size_t N>
+void test_ctor_ndc()
+{
+ varray<T, N> s;
+ BOOST_CHECK_EQUAL(s.size(), 0u);
+ BOOST_CHECK(s.capacity() == N);
+#ifndef BOOST_NO_EXCEPTIONS
+ BOOST_CHECK_THROW( s.at(0), std::out_of_range );
+#endif // BOOST_NO_EXCEPTIONS
+}
+
+template <typename T, size_t N>
+void test_ctor_nc(size_t n)
+{
+ varray<T, N> s(n);
+ BOOST_CHECK(s.size() == n);
+ BOOST_CHECK(s.capacity() == N);
+#ifndef BOOST_NO_EXCEPTIONS
+ BOOST_CHECK_THROW( s.at(n), std::out_of_range );
+#endif // BOOST_NO_EXCEPTIONS
+ if ( 1 < n )
+ {
+ T val10(10);
+ s[0] = val10;
+ BOOST_CHECK(T(10) == s[0]);
+ BOOST_CHECK(T(10) == s.at(0));
+ T val20(20);
+ s.at(1) = val20;
+ BOOST_CHECK(T(20) == s[1]);
+ BOOST_CHECK(T(20) == s.at(1));
+ }
+}
+
+template <typename T, size_t N>
+void test_ctor_nd(size_t n, T const& v)
+{
+ varray<T, N> s(n, v);
+ BOOST_CHECK(s.size() == n);
+ BOOST_CHECK(s.capacity() == N);
+#ifndef BOOST_NO_EXCEPTIONS
+ BOOST_CHECK_THROW( s.at(n), std::out_of_range );
+#endif // BOOST_NO_EXCEPTIONS
+ if ( 1 < n )
+ {
+ BOOST_CHECK(v == s[0]);
+ BOOST_CHECK(v == s.at(0));
+ BOOST_CHECK(v == s[1]);
+ BOOST_CHECK(v == s.at(1));
+ s[0] = T(10);
+ BOOST_CHECK(T(10) == s[0]);
+ BOOST_CHECK(T(10) == s.at(0));
+ s.at(1) = T(20);
+ BOOST_CHECK(T(20) == s[1]);
+ BOOST_CHECK(T(20) == s.at(1));
+ }
+}
+
+template <typename T, size_t N>
+void test_resize_nc(size_t n)
+{
+ varray<T, N> s;
+
+ s.resize(n);
+ BOOST_CHECK(s.size() == n);
+ BOOST_CHECK(s.capacity() == N);
+#ifndef BOOST_NO_EXCEPTIONS
+ BOOST_CHECK_THROW( s.at(n), std::out_of_range );
+#endif // BOOST_NO_EXCEPTIONS
+ if ( 1 < n )
+ {
+ T val10(10);
+ s[0] = val10;
+ BOOST_CHECK(T(10) == s[0]);
+ BOOST_CHECK(T(10) == s.at(0));
+ T val20(20);
+ s.at(1) = val20;
+ BOOST_CHECK(T(20) == s[1]);
+ BOOST_CHECK(T(20) == s.at(1));
+ }
+}
+
+template <typename T, size_t N>
+void test_resize_nd(size_t n, T const& v)
+{
+ varray<T, N> s;
+
+ s.resize(n, v);
+ BOOST_CHECK(s.size() == n);
+ BOOST_CHECK(s.capacity() == N);
+#ifndef BOOST_NO_EXCEPTIONS
+ BOOST_CHECK_THROW( s.at(n), std::out_of_range );
+#endif // BOOST_NO_EXCEPTIONS
+ if ( 1 < n )
+ {
+ BOOST_CHECK(v == s[0]);
+ BOOST_CHECK(v == s.at(0));
+ BOOST_CHECK(v == s[1]);
+ BOOST_CHECK(v == s.at(1));
+ s[0] = T(10);
+ BOOST_CHECK(T(10) == s[0]);
+ BOOST_CHECK(T(10) == s.at(0));
+ s.at(1) = T(20);
+ BOOST_CHECK(T(20) == s[1]);
+ BOOST_CHECK(T(20) == s.at(1));
+ }
+}
+
+template <typename T, size_t N>
+void test_push_back_nd()
+{
+ varray<T, N> s;
+
+ BOOST_CHECK(s.size() == 0);
+#ifndef BOOST_NO_EXCEPTIONS
+ BOOST_CHECK_THROW( s.at(0), std::out_of_range );
+#endif // BOOST_NO_EXCEPTIONS
+
+ for ( size_t i = 0 ; i < N ; ++i )
+ {
+ T t(i);
+ s.push_back(t);
+ BOOST_CHECK(s.size() == i + 1);
+#ifndef BOOST_NO_EXCEPTIONS
+ BOOST_CHECK_THROW( s.at(i + 1), std::out_of_range );
+#endif // BOOST_NO_EXCEPTIONS
+ BOOST_CHECK(T(i) == s.at(i));
+ BOOST_CHECK(T(i) == s[i]);
+ BOOST_CHECK(T(i) == s.back());
+ BOOST_CHECK(T(0) == s.front());
+ BOOST_CHECK(T(i) == *(s.data() + i));
+ }
+}
+
+template <typename T, size_t N>
+void test_pop_back_nd()
+{
+ varray<T, N> s;
+
+ for ( size_t i = 0 ; i < N ; ++i )
+ {
+ T t(i);
+ s.push_back(t);
+ }
+
+ for ( size_t i = N ; i > 1 ; --i )
+ {
+ s.pop_back();
+ BOOST_CHECK(s.size() == i - 1);
+#ifndef BOOST_NO_EXCEPTIONS
+ BOOST_CHECK_THROW( s.at(i - 1), std::out_of_range );
+#endif // BOOST_NO_EXCEPTIONS
+ BOOST_CHECK(T(i - 2) == s.at(i - 2));
+ BOOST_CHECK(T(i - 2) == s[i - 2]);
+ BOOST_CHECK(T(i - 2) == s.back());
+ BOOST_CHECK(T(0) == s.front());
+ }
+}
+
+template <typename It1, typename It2>
+void test_compare_ranges(It1 first1, It1 last1, It2 first2, It2 last2)
+{
+ BOOST_CHECK(std::distance(first1, last1) == std::distance(first2, last2));
+ for ( ; first1 != last1 && first2 != last2 ; ++first1, ++first2 )
+ BOOST_CHECK(*first1 == *first2);
+}
+
+template <typename T, size_t N, typename C>
+void test_copy_and_assign(C const& c)
+{
+ {
+ varray<T, N> s(c.begin(), c.end());
+ BOOST_CHECK(s.size() == c.size());
+ test_compare_ranges(s.begin(), s.end(), c.begin(), c.end());
+ }
+ {
+ varray<T, N> s;
+ BOOST_CHECK(0 == s.size());
+ s.assign(c.begin(), c.end());
+ BOOST_CHECK(s.size() == c.size());
+ test_compare_ranges(s.begin(), s.end(), c.begin(), c.end());
+ }
+}
+
+template <typename T, size_t N>
+void test_copy_and_assign_nd(T const& val)
+{
+ varray<T, N> s;
+ std::vector<T> v;
+ std::list<T> l;
+
+ for ( size_t i = 0 ; i < N ; ++i )
+ {
+ T t(i);
+ s.push_back(t);
+ v.push_back(t);
+ l.push_back(t);
+ }
+ // copy ctor
+ {
+ varray<T, N> s1(s);
+ BOOST_CHECK(s.size() == s1.size());
+ test_compare_ranges(s.begin(), s.end(), s1.begin(), s1.end());
+ }
+ // copy assignment
+ {
+ varray<T, N> s1;
+ BOOST_CHECK(0 == s1.size());
+ s1 = s;
+ BOOST_CHECK(s.size() == s1.size());
+ test_compare_ranges(s.begin(), s.end(), s1.begin(), s1.end());
+ }
+
+ // ctor(Iter, Iter) and assign(Iter, Iter)
+ test_copy_and_assign<T, N>(s);
+ test_copy_and_assign<T, N>(v);
+ test_copy_and_assign<T, N>(l);
+
+ // assign(N, V)
+ {
+ varray<T, N> s1(s);
+ test_compare_ranges(s.begin(), s.end(), s1.begin(), s1.end());
+ std::vector<T> a(N, val);
+ s1.assign(N, val);
+ test_compare_ranges(a.begin(), a.end(), s1.begin(), s1.end());
+ }
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ stable_vector<T> bsv(s.begin(), s.end());
+ vector<T> bv(s.begin(), s.end());
+ test_copy_and_assign<T, N>(bsv);
+ test_copy_and_assign<T, N>(bv);
+#endif
+}
+
+template <typename T, size_t N>
+void test_iterators_nd()
+{
+ varray<T, N> s;
+ std::vector<T> v;
+
+ for ( size_t i = 0 ; i < N ; ++i )
+ {
+ s.push_back(T(i));
+ v.push_back(T(i));
+ }
+
+ test_compare_ranges(s.begin(), s.end(), v.begin(), v.end());
+ test_compare_ranges(s.rbegin(), s.rend(), v.rbegin(), v.rend());
+
+ s.assign(v.rbegin(), v.rend());
+
+ test_compare_ranges(s.cbegin(), s.cend(), v.rbegin(), v.rend());
+ test_compare_ranges(s.crbegin(), s.crend(), v.begin(), v.end());
+
+ varray<T, N> const& cs = s;
+ std::vector<T> const& cv = v;
+ s.assign(cv.rbegin(), cv.rend());
+
+ test_compare_ranges(cs.begin(), cs.end(), cv.rbegin(), cv.rend());
+ test_compare_ranges(cs.rbegin(), cs.rend(), cv.begin(), cv.end());
+}
+
+template <typename T, size_t N>
+void test_erase_nd()
+{
+ varray<T, N> s;
+ typedef typename varray<T, N>::iterator It;
+
+ for ( size_t i = 0 ; i < N ; ++i )
+ s.push_back(T(i));
+
+ // erase(pos)
+ {
+ for ( size_t i = 0 ; i < N ; ++i )
+ {
+ varray<T, N> s1(s);
+ It it = s1.erase(s1.begin() + i);
+ BOOST_CHECK(s1.begin() + i == it);
+ BOOST_CHECK(s1.size() == N - 1);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ for ( size_t j = i+1 ; j < N ; ++j )
+ BOOST_CHECK(s1[j-1] == T(j));
+ }
+ }
+ // erase(first, last)
+ {
+ size_t n = N/3;
+ for ( size_t i = 0 ; i <= N ; ++i )
+ {
+ varray<T, N> s1(s);
+ size_t removed = i + n < N ? n : N - i;
+ It it = s1.erase(s1.begin() + i, s1.begin() + i + removed);
+ BOOST_CHECK(s1.begin() + i == it);
+ BOOST_CHECK(s1.size() == N - removed);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ for ( size_t j = i+n ; j < N ; ++j )
+ BOOST_CHECK(s1[j-n] == T(j));
+ }
+ }
+}
+
+template <typename T, size_t N, typename SV, typename C>
+void test_insert(SV const& s, C const& c)
+{
+ size_t h = N/2;
+ size_t n = size_t(h/1.5f);
+
+ for ( size_t i = 0 ; i <= h ; ++i )
+ {
+ varray<T, N> s1(s);
+
+ typename C::const_iterator it = c.begin();
+ std::advance(it, n);
+ typename varray<T, N>::iterator
+ it1 = s1.insert(s1.begin() + i, c.begin(), it);
+
+ BOOST_CHECK(s1.begin() + i == it1);
+ BOOST_CHECK(s1.size() == h+n);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ for ( size_t j = 0 ; j < n ; ++j )
+ BOOST_CHECK(s1[j+i] == T(100 + j));
+ for ( size_t j = 0 ; j < h-i ; ++j )
+ BOOST_CHECK(s1[j+i+n] == T(j+i));
+ }
+}
+
+template <typename T, size_t N>
+void test_insert_nd(T const& val)
+{
+ size_t h = N/2;
+
+ varray<T, N> s, ss;
+ std::vector<T> v;
+ std::list<T> l;
+
+ typedef typename varray<T, N>::iterator It;
+
+ for ( size_t i = 0 ; i < h ; ++i )
+ {
+ s.push_back(T(i));
+ ss.push_back(T(100 + i));
+ v.push_back(T(100 + i));
+ l.push_back(T(100 + i));
+ }
+
+ // insert(pos, val)
+ {
+ for ( size_t i = 0 ; i <= h ; ++i )
+ {
+ varray<T, N> s1(s);
+ It it = s1.insert(s1.begin() + i, val);
+ BOOST_CHECK(s1.begin() + i == it);
+ BOOST_CHECK(s1.size() == h+1);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ BOOST_CHECK(s1[i] == val);
+ for ( size_t j = 0 ; j < h-i ; ++j )
+ BOOST_CHECK(s1[j+i+1] == T(j+i));
+ }
+ }
+ // insert(pos, n, val)
+ {
+ size_t n = size_t(h/1.5f);
+ for ( size_t i = 0 ; i <= h ; ++i )
+ {
+ varray<T, N> s1(s);
+ It it = s1.insert(s1.begin() + i, n, val);
+ BOOST_CHECK(s1.begin() + i == it);
+ BOOST_CHECK(s1.size() == h+n);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ for ( size_t j = 0 ; j < n ; ++j )
+ BOOST_CHECK(s1[j+i] == val);
+ for ( size_t j = 0 ; j < h-i ; ++j )
+ BOOST_CHECK(s1[j+i+n] == T(j+i));
+ }
+ }
+ // insert(pos, first, last)
+ test_insert<T, N>(s, ss);
+ test_insert<T, N>(s, v);
+ test_insert<T, N>(s, l);
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ stable_vector<T> bsv(ss.begin(), ss.end());
+ vector<T> bv(ss.begin(), ss.end());
+ test_insert<T, N>(s, bv);
+ test_insert<T, N>(s, bsv);
+#endif
+}
+
+template <typename T>
+void test_capacity_0_nd()
+{
+ varray<T, 10> v(5u, T(0));
+
+ //varray<T, 0, bad_alloc_strategy<T> > s;
+ varray<T, 0> s;
+ BOOST_CHECK(s.size() == 0);
+ BOOST_CHECK(s.capacity() == 0);
+#ifndef BOOST_NO_EXCEPTIONS
+ BOOST_CHECK_THROW(s.at(0), std::out_of_range);
+ //BOOST_CHECK_THROW(s.resize(5u, T(0)), std::bad_alloc);
+ //BOOST_CHECK_THROW(s.push_back(T(0)), std::bad_alloc);
+ //BOOST_CHECK_THROW(s.insert(s.end(), T(0)), std::bad_alloc);
+ //BOOST_CHECK_THROW(s.insert(s.end(), 5u, T(0)), std::bad_alloc);
+ //BOOST_CHECK_THROW(s.insert(s.end(), v.begin(), v.end()), std::bad_alloc);
+ //BOOST_CHECK_THROW(s.assign(v.begin(), v.end()), std::bad_alloc);
+ //BOOST_CHECK_THROW(s.assign(5u, T(0)), std::bad_alloc);
+ //try{
+ // varray<T, 0, bad_alloc_strategy<T> > s2(v.begin(), v.end());
+ // BOOST_CHECK(false);
+ //}catch(std::bad_alloc &){}
+ //try{
+ // varray<T, 0, bad_alloc_strategy<T> > s1(5u, T(0));
+ // BOOST_CHECK(false);
+ //}catch(std::bad_alloc &){}
+#endif // BOOST_NO_EXCEPTIONS
+}
+
+template <typename T, size_t N>
+void test_exceptions_nd()
+{
+ varray<T, N> v(N, T(0));
+ //varray<T, N/2, bad_alloc_strategy<T> > s(N/2, T(0));
+ varray<T, N/2> s(N/2, T(0));
+
+#ifndef BOOST_NO_EXCEPTIONS
+ /*BOOST_CHECK_THROW(s.resize(N, T(0)), std::bad_alloc);
+ BOOST_CHECK_THROW(s.push_back(T(0)), std::bad_alloc);
+ BOOST_CHECK_THROW(s.insert(s.end(), T(0)), std::bad_alloc);
+ BOOST_CHECK_THROW(s.insert(s.end(), N, T(0)), std::bad_alloc);
+ BOOST_CHECK_THROW(s.insert(s.end(), v.begin(), v.end()), std::bad_alloc);
+ BOOST_CHECK_THROW(s.assign(v.begin(), v.end()), std::bad_alloc);
+ BOOST_CHECK_THROW(s.assign(N, T(0)), std::bad_alloc);
+ try{
+ container_detail::varray<T, N/2, bad_alloc_strategy<T> > s2(v.begin(), v.end());
+ BOOST_CHECK(false);
+ }catch(std::bad_alloc &){}
+ try{
+ container_detail::varray<T, N/2, bad_alloc_strategy<T> > s1(N, T(0));
+ BOOST_CHECK(false);
+ }catch(std::bad_alloc &){}*/
+#endif // BOOST_NO_EXCEPTIONS
+}
+
+template <typename T, size_t N>
+void test_swap_and_move_nd()
+{
+ {
+ varray<T, N> v1, v2, v3, v4;
+ varray<T, N> s1, s2;
+ //varray<T, N, bad_alloc_strategy<T> > s4;
+ varray<T, N> s4;
+
+ for (size_t i = 0 ; i < N ; ++i )
+ {
+ v1.push_back(T(i));
+ v2.push_back(T(i));
+ v3.push_back(T(i));
+ v4.push_back(T(i));
+ }
+ for (size_t i = 0 ; i < N/2 ; ++i )
+ {
+ s1.push_back(T(100 + i));
+ s2.push_back(T(100 + i));
+ s4.push_back(T(100 + i));
+ }
+
+ s1.swap(v1);
+ s2 = boost::move(v2);
+ varray<T, N> s3(boost::move(v3));
+ s4.swap(v4);
+
+ BOOST_CHECK(v1.size() == N/2);
+ BOOST_CHECK(s1.size() == N);
+ BOOST_CHECK(v2.size() == N); // objects aren't destroyed
+ BOOST_CHECK(s2.size() == N);
+ BOOST_CHECK(v3.size() == N); // objects aren't destroyed
+ BOOST_CHECK(s3.size() == N);
+ BOOST_CHECK(v4.size() == N/2);
+ BOOST_CHECK(s4.size() == N);
+ for (size_t i = 0 ; i < N/2 ; ++i )
+ {
+ BOOST_CHECK(v1[i] == T(100 + i));
+ BOOST_CHECK(v4[i] == T(100 + i));
+ }
+ for (size_t i = 0 ; i < N ; ++i )
+ {
+ BOOST_CHECK(s1[i] == T(i));
+ BOOST_CHECK(s2[i] == T(i));
+ BOOST_CHECK(s3[i] == T(i));
+ BOOST_CHECK(s4[i] == T(i));
+ }
+ }
+ {
+ varray<T, N> v1, v2, v3;
+ varray<T, N/2> s1, s2;
+
+ for (size_t i = 0 ; i < N/2 ; ++i )
+ {
+ v1.push_back(T(i));
+ v2.push_back(T(i));
+ v3.push_back(T(i));
+ }
+ for (size_t i = 0 ; i < N/3 ; ++i )
+ {
+ s1.push_back(T(100 + i));
+ s2.push_back(T(100 + i));
+ }
+
+ s1.swap(v1);
+ s2 = boost::move(v2);
+ varray<T, N/2> s3(boost::move(v3));
+
+ BOOST_CHECK(v1.size() == N/3);
+ BOOST_CHECK(s1.size() == N/2);
+ BOOST_CHECK(v2.size() == N/2); // objects aren't destroyed
+ BOOST_CHECK(s2.size() == N/2);
+ BOOST_CHECK(v3.size() == N/2); // objects aren't destroyed
+ BOOST_CHECK(s3.size() == N/2);
+ for (size_t i = 0 ; i < N/3 ; ++i )
+ BOOST_CHECK(v1[i] == T(100 + i));
+ for (size_t i = 0 ; i < N/2 ; ++i )
+ {
+ BOOST_CHECK(s1[i] == T(i));
+ BOOST_CHECK(s2[i] == T(i));
+ BOOST_CHECK(s3[i] == T(i));
+ }
+ }
+ {
+ varray<T, N> v(N, T(0));
+ //varray<T, N/2, bad_alloc_strategy<T> > s(N/2, T(1));
+ varray<T, N/2> s(N/2, T(1));
+#ifndef BOOST_NO_EXCEPTIONS
+ //BOOST_CHECK_THROW(s.swap(v), std::bad_alloc);
+ //v.resize(N, T(0));
+ //BOOST_CHECK_THROW(s = boost::move(v), std::bad_alloc);
+ //v.resize(N, T(0));
+ //try {
+ // varray<T, N/2, bad_alloc_strategy<T> > s2(boost::move(v));
+ // BOOST_CHECK(false);
+ //} catch (std::bad_alloc &) {}
+#endif // BOOST_NO_EXCEPTIONS
+ }
+}
+
+template <typename T, size_t N>
+void test_emplace_0p()
+{
+ //emplace_back()
+ {
+ //varray<T, N, bad_alloc_strategy<T> > v;
+ varray<T, N> v;
+
+ for (int i = 0 ; i < int(N) ; ++i )
+ v.emplace_back();
+ BOOST_CHECK(v.size() == N);
+#ifndef BOOST_NO_EXCEPTIONS
+ //BOOST_CHECK_THROW(v.emplace_back(), std::bad_alloc);
+#endif
+ }
+}
+
+template <typename T, size_t N>
+void test_emplace_2p()
+{
+ //emplace_back(pos, int, int)
+ {
+ //varray<T, N, bad_alloc_strategy<T> > v;
+ varray<T, N> v;
+
+ for (int i = 0 ; i < int(N) ; ++i )
+ v.emplace_back(i, 100 + i);
+ BOOST_CHECK(v.size() == N);
+#ifndef BOOST_NO_EXCEPTIONS
+ //BOOST_CHECK_THROW(v.emplace_back(N, 100 + N), std::bad_alloc);
+#endif
+ BOOST_CHECK(v.size() == N);
+ for (int i = 0 ; i < int(N) ; ++i )
+ BOOST_CHECK(v[i] == T(i, 100 + i));
+ }
+
+ // emplace(pos, int, int)
+ {
+ //typedef typename varray<T, N, bad_alloc_strategy<T> >::iterator It;
+ typedef typename varray<T, N>::iterator It;
+
+ int h = N / 2;
+
+ //varray<T, N, bad_alloc_strategy<T> > v;
+ varray<T, N> v;
+ for ( int i = 0 ; i < h ; ++i )
+ v.emplace_back(i, 100 + i);
+
+ for ( int i = 0 ; i <= h ; ++i )
+ {
+ //varray<T, N, bad_alloc_strategy<T> > vv(v);
+ varray<T, N> vv(v);
+ It it = vv.emplace(vv.begin() + i, i+100, i+200);
+ BOOST_CHECK(vv.begin() + i == it);
+ BOOST_CHECK(vv.size() == size_t(h+1));
+ for ( int j = 0 ; j < i ; ++j )
+ BOOST_CHECK(vv[j] == T(j, j+100));
+ BOOST_CHECK(vv[i] == T(i+100, i+200));
+ for ( int j = 0 ; j < h-i ; ++j )
+ BOOST_CHECK(vv[j+i+1] == T(j+i, j+i+100));
+ }
+ }
+}
+
+template <typename T, size_t N>
+void test_sv_elem(T const& t)
+{
+ //typedef varray<T, N, bad_alloc_strategy<T> > V;
+ typedef varray<T, N> V;
+
+ //varray<V, N, bad_alloc_strategy<V> > v;
+ varray<V, N> v;
+
+ v.push_back(V(N/2, t));
+ V vvv(N/2, t);
+ v.push_back(boost::move(vvv));
+ v.insert(v.begin(), V(N/2, t));
+ v.insert(v.end(), V(N/2, t));
+ v.emplace_back(N/2, t);
+}
+
+int test_main(int, char* [])
+{
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_ctor_ndc<size_t, 10>();
+ test_ctor_ndc<value_ndc, 10>();
+ test_ctor_ndc<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+ test_ctor_ndc<shptr_value, 10>();
+ test_ctor_ndc<copy_movable, 10>();
+
+ test_ctor_nc<size_t, 10>(5);
+ test_ctor_nc<value_nc, 10>(5);
+ test_ctor_nc<counting_value, 10>(5);
+ BOOST_CHECK(counting_value::count() == 0);
+ test_ctor_nc<shptr_value, 10>(5);
+ test_ctor_nc<copy_movable, 10>(5);
+
+ test_ctor_nd<size_t, 10>(5, 1);
+ test_ctor_nd<value_nd, 10>(5, value_nd(1));
+ test_ctor_nd<counting_value, 10>(5, counting_value(1));
+ BOOST_CHECK(counting_value::count() == 0);
+ test_ctor_nd<shptr_value, 10>(5, shptr_value(1));
+ test_ctor_nd<copy_movable, 10>(5, produce());
+
+ test_resize_nc<size_t, 10>(5);
+ test_resize_nc<value_nc, 10>(5);
+ test_resize_nc<counting_value, 10>(5);
+ BOOST_CHECK(counting_value::count() == 0);
+ test_resize_nc<shptr_value, 10>(5);
+ test_resize_nc<copy_movable, 10>(5);
+
+ test_resize_nd<size_t, 10>(5, 1);
+ test_resize_nd<value_nd, 10>(5, value_nd(1));
+ test_resize_nd<counting_value, 10>(5, counting_value(1));
+ BOOST_CHECK(counting_value::count() == 0);
+ test_resize_nd<shptr_value, 10>(5, shptr_value(1));
+ test_resize_nd<copy_movable, 10>(5, produce());
+
+ test_push_back_nd<size_t, 10>();
+ test_push_back_nd<value_nd, 10>();
+ test_push_back_nd<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+ test_push_back_nd<shptr_value, 10>();
+ test_push_back_nd<copy_movable, 10>();
+
+ test_pop_back_nd<size_t, 10>();
+ test_pop_back_nd<value_nd, 10>();
+ test_pop_back_nd<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+ test_pop_back_nd<shptr_value, 10>();
+ test_pop_back_nd<copy_movable, 10>();
+
+ test_copy_and_assign_nd<size_t, 10>(1);
+ test_copy_and_assign_nd<value_nd, 10>(value_nd(1));
+ test_copy_and_assign_nd<counting_value, 10>(counting_value(1));
+ BOOST_CHECK(counting_value::count() == 0);
+ test_copy_and_assign_nd<shptr_value, 10>(shptr_value(1));
+ test_copy_and_assign_nd<copy_movable, 10>(produce());
+
+ test_iterators_nd<size_t, 10>();
+ test_iterators_nd<value_nd, 10>();
+ test_iterators_nd<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+ test_iterators_nd<shptr_value, 10>();
+ test_iterators_nd<copy_movable, 10>();
+
+ test_erase_nd<size_t, 10>();
+ test_erase_nd<value_nd, 10>();
+ test_erase_nd<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+ test_erase_nd<shptr_value, 10>();
+ test_erase_nd<copy_movable, 10>();
+
+ test_insert_nd<size_t, 10>(50);
+ test_insert_nd<value_nd, 10>(value_nd(50));
+ test_insert_nd<counting_value, 10>(counting_value(50));
+ BOOST_CHECK(counting_value::count() == 0);
+ test_insert_nd<shptr_value, 10>(shptr_value(50));
+ test_insert_nd<copy_movable, 10>(produce());
+
+ test_capacity_0_nd<size_t>();
+ test_capacity_0_nd<value_nd>();
+ test_capacity_0_nd<counting_value>();
+ BOOST_CHECK(counting_value::count() == 0);
+ test_capacity_0_nd<shptr_value>();
+ test_capacity_0_nd<copy_movable>();
+
+ test_exceptions_nd<size_t, 10>();
+ test_exceptions_nd<value_nd, 10>();
+ test_exceptions_nd<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+ test_exceptions_nd<shptr_value, 10>();
+ test_exceptions_nd<copy_movable, 10>();
+
+ test_swap_and_move_nd<size_t, 10>();
+ test_swap_and_move_nd<value_nd, 10>();
+ test_swap_and_move_nd<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+ test_swap_and_move_nd<shptr_value, 10>();
+ test_swap_and_move_nd<copy_movable, 10>();
+
+ test_emplace_0p<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_emplace_2p<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_sv_elem<size_t, 10>(50);
+ test_sv_elem<value_nd, 10>(value_nd(50));
+ test_sv_elem<counting_value, 10>(counting_value(50));
+ BOOST_CHECK(counting_value::count() == 0);
+ test_sv_elem<shptr_value, 10>(shptr_value(50));
+ test_sv_elem<copy_movable, 10>(copy_movable(50));
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/varray_old.cpp b/libs/geometry/index/test/varray_old.cpp
new file mode 100644
index 0000000000..37840f96fd
--- /dev/null
+++ b/libs/geometry/index/test/varray_old.cpp
@@ -0,0 +1,490 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <boost/test/included/test_exec_monitor.hpp>
+#include <boost/test/impl/execution_monitor.ipp>
+
+#include <boost/geometry/index/detail/varray.hpp>
+
+using namespace boost::geometry::index::detail;
+
+class value_ndc
+{
+public:
+ explicit value_ndc(int a) : aa(a) {}
+ ~value_ndc() {}
+ bool operator==(value_ndc const& v) const { return aa == v.aa; }
+private:
+ value_ndc(value_ndc const&) {}
+ value_ndc & operator=(value_ndc const&) { return *this; }
+ int aa;
+};
+
+class value_nd
+{
+public:
+ explicit value_nd(int a) : aa(a) {}
+ ~value_nd() {}
+ bool operator==(value_nd const& v) const { return aa == v.aa; }
+private:
+ int aa;
+};
+
+class value_nc
+{
+public:
+ explicit value_nc(int a = 0) : aa(a) {}
+ ~value_nc() {}
+ bool operator==(value_nc const& v) const { return aa == v.aa; }
+private:
+ value_nc(value_nc const&) {}
+ value_nc & operator=(value_ndc const&) { return *this; }
+ int aa;
+};
+
+class counting_value
+{
+public:
+ explicit counting_value(int a = 0) : aa(a) { ++c(); }
+ counting_value(counting_value const& v) : aa(v.aa) { ++c(); }
+ counting_value & operator=(counting_value const& v) { aa = v.aa; return *this; }
+ ~counting_value() { --c(); }
+ bool operator==(counting_value const& v) const { return aa == v.aa; }
+ static size_t count() { return c(); }
+private:
+ static size_t & c() { static size_t co = 0; return co; }
+ int aa;
+};
+
+template <typename T, size_t N>
+void test_ctor_ndc()
+{
+ varray<T, N> s;
+ BOOST_CHECK(s.size() == 0);
+ BOOST_CHECK(s.capacity() == N);
+ BOOST_CHECK_THROW( s.at(0), std::out_of_range );
+}
+
+template <typename T, size_t N>
+void test_ctor_nc(size_t n)
+{
+ varray<T, N> s(n);
+ BOOST_CHECK(s.size() == n);
+ BOOST_CHECK(s.capacity() == N);
+ BOOST_CHECK_THROW( s.at(n), std::out_of_range );
+ if ( !boost::has_trivial_constructor<T>::value )
+ {
+ for ( size_t i = 0 ; i < n ; ++i )
+ BOOST_CHECK(T() == s[i]);
+ }
+}
+
+template <typename T, size_t N>
+void test_ctor_nd(size_t n, T const& v)
+{
+ varray<T, N> s(n, v);
+ BOOST_CHECK(s.size() == n);
+ BOOST_CHECK(s.capacity() == N);
+ BOOST_CHECK_THROW( s.at(n), std::out_of_range );
+ if ( 1 < n )
+ {
+ BOOST_CHECK(v == s[0]);
+ BOOST_CHECK(v == s.at(0));
+ BOOST_CHECK(v == s[1]);
+ BOOST_CHECK(v == s.at(1));
+ s[0] = T(10);
+ BOOST_CHECK(T(10) == s[0]);
+ BOOST_CHECK(T(10) == s.at(0));
+ s.at(1) = T(20);
+ BOOST_CHECK(T(20) == s[1]);
+ BOOST_CHECK(T(20) == s.at(1));
+ }
+}
+
+template <typename T, size_t N>
+void test_resize_nc(size_t n)
+{
+ varray<T, N> s;
+
+ s.resize(n);
+ BOOST_CHECK(s.size() == n);
+ BOOST_CHECK(s.capacity() == N);
+ BOOST_CHECK_THROW( s.at(n), std::out_of_range );
+
+ if ( !boost::has_trivial_constructor<T>::value )
+ {
+ for ( size_t i = 0 ; i < n ; ++i )
+ BOOST_CHECK(T() == s[i]);
+ }
+}
+
+template <typename T, size_t N>
+void test_resize_nd(size_t n, T const& v)
+{
+ varray<T, N> s;
+
+ s.resize(n, v);
+ BOOST_CHECK(s.size() == n);
+ BOOST_CHECK(s.capacity() == N);
+ BOOST_CHECK_THROW( s.at(n), std::out_of_range );
+ if ( 1 < n )
+ {
+ BOOST_CHECK(v == s[0]);
+ BOOST_CHECK(v == s.at(0));
+ BOOST_CHECK(v == s[1]);
+ BOOST_CHECK(v == s.at(1));
+ s[0] = T(10);
+ BOOST_CHECK(T(10) == s[0]);
+ BOOST_CHECK(T(10) == s.at(0));
+ s.at(1) = T(20);
+ BOOST_CHECK(T(20) == s[1]);
+ BOOST_CHECK(T(20) == s.at(1));
+ }
+}
+
+template <typename T, size_t N>
+void test_push_back_nd()
+{
+ varray<T, N> s;
+
+ BOOST_CHECK(s.size() == 0);
+ BOOST_CHECK_THROW( s.at(0), std::out_of_range );
+
+ for ( size_t i = 0 ; i < N ; ++i )
+ {
+ s.push_back(T(i));
+ BOOST_CHECK(s.size() == i + 1);
+ BOOST_CHECK_THROW( s.at(i + 1), std::out_of_range );
+ BOOST_CHECK(T(i) == s.at(i));
+ BOOST_CHECK(T(i) == s[i]);
+ BOOST_CHECK(T(i) == s.back());
+ BOOST_CHECK(T(0) == s.front());
+ }
+}
+
+template <typename T, size_t N>
+void test_pop_back_nd()
+{
+ varray<T, N> s;
+
+ for ( size_t i = 0 ; i < N ; ++i )
+ s.push_back(T(i));
+
+ for ( size_t i = N ; i > 1 ; --i )
+ {
+ s.pop_back();
+ BOOST_CHECK(s.size() == i - 1);
+ BOOST_CHECK_THROW( s.at(i - 1), std::out_of_range );
+ BOOST_CHECK(T(i - 2) == s.at(i - 2));
+ BOOST_CHECK(T(i - 2) == s[i - 2]);
+ BOOST_CHECK(T(i - 2) == s.back());
+ BOOST_CHECK(T(0) == s.front());
+ }
+}
+
+template <typename It1, typename It2>
+void test_compare_ranges(It1 first1, It1 last1, It2 first2, It2 last2)
+{
+ BOOST_CHECK(std::distance(first1, last1) == std::distance(first2, last2));
+ for ( ; first1 != last1 && first2 != last2 ; ++first1, ++first2 )
+ BOOST_CHECK(*first1 == *first2);
+}
+
+template <typename T, size_t N>
+void test_copy_and_assign_nd(T const& val)
+{
+ varray<T, N> s;
+ std::vector<T> v;
+ std::list<T> l;
+
+ for ( size_t i = 0 ; i < N ; ++i )
+ {
+ s.push_back(T(i));
+ v.push_back(T(i));
+ l.push_back(T(i));
+ }
+ // copy ctor
+ {
+ varray<T, N> s1(s);
+ BOOST_CHECK(s.size() == s1.size());
+ test_compare_ranges(s.begin(), s.end(), s1.begin(), s1.end());
+ }
+ // copy assignment
+ {
+ varray<T, N> s1;
+ BOOST_CHECK(0 == s1.size());
+ s1 = s;
+ BOOST_CHECK(s.size() == s1.size());
+ test_compare_ranges(s.begin(), s.end(), s1.begin(), s1.end());
+ }
+ // ctor(Iter, Iter)
+ {
+ varray<T, N> s1(s.begin(), s.end());
+ BOOST_CHECK(s.size() == s1.size());
+ test_compare_ranges(s.begin(), s.end(), s1.begin(), s1.end());
+ }
+ {
+ varray<T, N> s1(v.begin(), v.end());
+ BOOST_CHECK(v.size() == s1.size());
+ test_compare_ranges(v.begin(), v.end(), s1.begin(), s1.end());
+ }
+ {
+ varray<T, N> s1(l.begin(), l.end());
+ BOOST_CHECK(l.size() == s1.size());
+ test_compare_ranges(l.begin(), l.end(), s1.begin(), s1.end());
+ }
+ // assign(Iter, Iter)
+ {
+ varray<T, N> s1;
+ BOOST_CHECK(0 == s1.size());
+ s1.assign(s.begin(), s.end());
+ BOOST_CHECK(s.size() == s1.size());
+ test_compare_ranges(s.begin(), s.end(), s1.begin(), s1.end());
+ }
+ {
+ varray<T, N> s1;
+ BOOST_CHECK(0 == s1.size());
+ s1.assign(v.begin(), v.end());
+ BOOST_CHECK(v.size() == s1.size());
+ test_compare_ranges(v.begin(), v.end(), s1.begin(), s1.end());
+ }
+ {
+ varray<T, N> s1;
+ BOOST_CHECK(0 == s1.size());
+ s1.assign(l.begin(), l.end());
+ BOOST_CHECK(l.size() == s1.size());
+ test_compare_ranges(l.begin(), l.end(), s1.begin(), s1.end());
+ }
+ // assign(N, V)
+ {
+ varray<T, N> s1(s);
+ test_compare_ranges(s.begin(), s.end(), s1.begin(), s1.end());
+ std::vector<T> a(N, val);
+ s1.assign(N, val);
+ test_compare_ranges(a.begin(), a.end(), s1.begin(), s1.end());
+ }
+}
+
+template <typename T, size_t N>
+void test_iterators_nd()
+{
+ varray<T, N> s;
+ std::vector<T> v;
+
+ for ( size_t i = 0 ; i < N ; ++i )
+ {
+ s.push_back(T(i));
+ v.push_back(T(i));
+ }
+
+ test_compare_ranges(s.begin(), s.end(), v.begin(), v.end());
+ test_compare_ranges(s.rbegin(), s.rend(), v.rbegin(), v.rend());
+
+ s.assign(v.rbegin(), v.rend());
+
+ test_compare_ranges(s.begin(), s.end(), v.rbegin(), v.rend());
+ test_compare_ranges(s.rbegin(), s.rend(), v.begin(), v.end());
+}
+
+template <typename T, size_t N>
+void test_erase_nd()
+{
+ varray<T, N> s;
+
+ for ( size_t i = 0 ; i < N ; ++i )
+ s.push_back(T(i));
+
+ // erase(pos)
+ {
+ for ( size_t i = 0 ; i < N ; ++i )
+ {
+ varray<T, N> s1(s);
+ s1.erase(s1.begin() + i);
+ BOOST_CHECK(s1.size() == N - 1);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ for ( size_t j = i+1 ; j < N ; ++j )
+ BOOST_CHECK(s1[j-1] == T(j));
+ }
+ }
+ // erase(first, last)
+ {
+ size_t n = N/3;
+ for ( size_t i = 0 ; i <= N ; ++i )
+ {
+ varray<T, N> s1(s);
+ size_t removed = i + n < N ? n : N - i;
+ s1.erase(s1.begin() + i, s1.begin() + i + removed);
+ BOOST_CHECK(s1.size() == N - removed);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ for ( size_t j = i+n ; j < N ; ++j )
+ BOOST_CHECK(s1[j-n] == T(j));
+ }
+ }
+}
+
+template <typename T, size_t N>
+void test_insert_nd(T const& val)
+{
+ size_t h = N/2;
+
+ varray<T, N> s, ss;
+ std::vector<T> v;
+ std::list<T> l;
+
+ for ( size_t i = 0 ; i < h ; ++i )
+ {
+ s.push_back(T(i));
+ ss.push_back(T(100 + i));
+ v.push_back(T(100 + i));
+ l.push_back(T(100 + i));
+ }
+
+ // insert(pos, val)
+ {
+ for ( size_t i = 0 ; i <= h ; ++i )
+ {
+ varray<T, N> s1(s);
+ s1.insert(s1.begin() + i, val);
+ BOOST_CHECK(s1.size() == h+1);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ BOOST_CHECK(s1[i] == val);
+ for ( size_t j = 0 ; j < h-i ; ++j )
+ BOOST_CHECK(s1[j+i+1] == T(j+i));
+ }
+ }
+ // insert(pos, n, val)
+ {
+ size_t n = size_t(h/1.5f);
+ for ( size_t i = 0 ; i <= h ; ++i )
+ {
+ varray<T, N> s1(s);
+ s1.insert(s1.begin() + i, n, val);
+ BOOST_CHECK(s1.size() == h+n);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ for ( size_t j = 0 ; j < n ; ++j )
+ BOOST_CHECK(s1[j+i] == val);
+ for ( size_t j = 0 ; j < h-i ; ++j )
+ BOOST_CHECK(s1[j+i+n] == T(j+i));
+ }
+ }
+ // insert(pos, first, last)
+ {
+ size_t n = size_t(h/1.5f);
+ for ( size_t i = 0 ; i <= h ; ++i )
+ {
+ varray<T, N> s1(s);
+ s1.insert(s1.begin() + i, ss.begin(), ss.begin() + n);
+ BOOST_CHECK(s1.size() == h+n);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ for ( size_t j = 0 ; j < n ; ++j )
+ BOOST_CHECK(s1[j+i] == T(100 + j));
+ for ( size_t j = 0 ; j < h-i ; ++j )
+ BOOST_CHECK(s1[j+i+n] == T(j+i));
+ }
+ }
+ {
+ size_t n = size_t(h/1.5f);
+ for ( size_t i = 0 ; i <= h ; ++i )
+ {
+ varray<T, N> s1(s);
+ s1.insert(s1.begin() + i, v.begin(), v.begin() + n);
+ BOOST_CHECK(s1.size() == h+n);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ for ( size_t j = 0 ; j < n ; ++j )
+ BOOST_CHECK(s1[j+i] == T(100 + j));
+ for ( size_t j = 0 ; j < h-i ; ++j )
+ BOOST_CHECK(s1[j+i+n] == T(j+i));
+ }
+ }
+ {
+ size_t n = size_t(h/1.5f);
+ for ( size_t i = 0 ; i <= h ; ++i )
+ {
+ varray<T, N> s1(s);
+ typename std::list<T>::iterator it = l.begin();
+ std::advance(it, n);
+ s1.insert(s1.begin() + i, l.begin(), it);
+ BOOST_CHECK(s1.size() == h+n);
+ for ( size_t j = 0 ; j < i ; ++j )
+ BOOST_CHECK(s1[j] == T(j));
+ for ( size_t j = 0 ; j < n ; ++j )
+ BOOST_CHECK(s1[j+i] == T(100 + j));
+ for ( size_t j = 0 ; j < h-i ; ++j )
+ BOOST_CHECK(s1[j+i+n] == T(j+i));
+ }
+ }
+}
+
+int test_main(int, char* [])
+{
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_ctor_ndc<int, 10>();
+ test_ctor_ndc<value_ndc, 10>();
+ test_ctor_ndc<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_ctor_nc<int, 10>(5);
+ test_ctor_nc<value_nc, 10>(5);
+ test_ctor_nc<counting_value, 10>(5);
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_ctor_nd<int, 10>(5, 1);
+ test_ctor_nd<value_nd, 10>(5, value_nd(1));
+ test_ctor_nd<counting_value, 10>(5, counting_value(1));
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_resize_nc<int, 10>(5);
+ test_resize_nc<value_nc, 10>(5);
+ test_resize_nc<counting_value, 10>(5);
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_resize_nd<int, 10>(5, 1);
+ test_resize_nd<value_nd, 10>(5, value_nd(1));
+ test_resize_nd<counting_value, 10>(5, counting_value(1));
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_push_back_nd<int, 10>();
+ test_push_back_nd<value_nd, 10>();
+ test_push_back_nd<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_pop_back_nd<int, 10>();
+ test_pop_back_nd<value_nd, 10>();
+ test_pop_back_nd<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_copy_and_assign_nd<int, 10>(1);
+ test_copy_and_assign_nd<value_nd, 10>(value_nd(1));
+ test_copy_and_assign_nd<counting_value, 10>(counting_value(1));
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_iterators_nd<int, 10>();
+ test_iterators_nd<value_nd, 10>();
+ test_iterators_nd<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_erase_nd<int, 10>();
+ test_erase_nd<value_nd, 10>();
+ test_erase_nd<counting_value, 10>();
+ BOOST_CHECK(counting_value::count() == 0);
+
+ test_insert_nd<int, 10>(50);
+ test_insert_nd<value_nd, 10>(value_nd(50));
+ test_insert_nd<counting_value, 10>(counting_value(50));
+ BOOST_CHECK(counting_value::count() == 0);
+
+ return 0;
+}
diff --git a/libs/geometry/index/test/varray_test.hpp b/libs/geometry/index/test/varray_test.hpp
new file mode 100644
index 0000000000..4136db7fcf
--- /dev/null
+++ b/libs/geometry/index/test/varray_test.hpp
@@ -0,0 +1,97 @@
+// Boost.Geometry.Index varray
+// Unit Test
+
+// Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland.
+// Copyright (c) 2012-2013 Andrew Hundt.
+
+// 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_INDEX_TEST_VARRAY_TEST_HPP
+#define BOOST_GEOMETRY_INDEX_TEST_VARRAY_TEST_HPP
+
+#include <boost/geometry/index/detail/varray.hpp>
+
+#include <boost/shared_ptr.hpp>
+#include "movable.hpp"
+
+class value_ndc
+{
+public:
+ explicit value_ndc(size_t a) : aa(a) {}
+ ~value_ndc() {}
+ bool operator==(value_ndc const& v) const { return aa == v.aa; }
+ bool operator<(value_ndc const& v) const { return aa < v.aa; }
+private:
+ value_ndc(value_ndc const&) {}
+ value_ndc & operator=(value_ndc const&) { return *this; }
+ size_t aa;
+};
+
+class value_nd
+{
+public:
+ explicit value_nd(size_t a) : aa(a) {}
+ ~value_nd() {}
+ bool operator==(value_nd const& v) const { return aa == v.aa; }
+ bool operator<(value_nd const& v) const { return aa < v.aa; }
+private:
+ size_t aa;
+};
+
+class value_nc
+{
+public:
+ explicit value_nc(size_t a = 0) : aa(a) {}
+ ~value_nc() {}
+ bool operator==(value_nc const& v) const { return aa == v.aa; }
+ bool operator<(value_nc const& v) const { return aa < v.aa; }
+private:
+ value_nc(value_nc const&) {}
+ value_nc & operator=(value_ndc const&) { return *this; }
+ size_t aa;
+};
+
+class counting_value
+{
+ BOOST_COPYABLE_AND_MOVABLE(counting_value)
+
+public:
+ explicit counting_value(size_t a = 0, size_t b = 0) : aa(a), bb(b) { ++c(); }
+ counting_value(counting_value const& v) : aa(v.aa), bb(v.bb) { ++c(); }
+ counting_value(BOOST_RV_REF(counting_value) p) : aa(p.aa), bb(p.bb) { p.aa = 0; p.bb = 0; ++c(); } // Move constructor
+ counting_value& operator=(BOOST_RV_REF(counting_value) p) { aa = p.aa; p.aa = 0; bb = p.bb; p.bb = 0; return *this; } // Move assignment
+ counting_value& operator=(BOOST_COPY_ASSIGN_REF(counting_value) p) { aa = p.aa; bb = p.bb; return *this; } // Copy assignment
+ ~counting_value() { --c(); }
+ bool operator==(counting_value const& v) const { return aa == v.aa && bb == v.bb; }
+ bool operator<(counting_value const& v) const { return aa < v.aa || ( aa == v.aa && bb < v.bb ); }
+ static size_t count() { return c(); }
+
+private:
+ static size_t & c() { static size_t co = 0; return co; }
+ size_t aa, bb;
+};
+
+namespace boost {
+
+template <>
+struct has_nothrow_move<counting_value>
+{
+ static const bool value = true;
+};
+
+}
+
+class shptr_value
+{
+ typedef boost::shared_ptr<size_t> Ptr;
+public:
+ explicit shptr_value(size_t a = 0) : m_ptr(new size_t(a)) {}
+ bool operator==(shptr_value const& v) const { return *m_ptr == *(v.m_ptr); }
+ bool operator<(shptr_value const& v) const { return *m_ptr < *(v.m_ptr); }
+private:
+ boost::shared_ptr<size_t> m_ptr;
+};
+
+#endif // BOOST_GEOMETRY_INDEX_TEST_VARRAY_TEST_HPP
diff --git a/libs/geometry/meta/libraries.json b/libs/geometry/meta/libraries.json
new file mode 100644
index 0000000000..a6648fc393
--- /dev/null
+++ b/libs/geometry/meta/libraries.json
@@ -0,0 +1,25 @@
+[
+ {
+ "key": "geometry",
+ "boost-version": "1.47.0",
+ "name": "Geometry",
+ "authors": [
+ "Barend Gehrels",
+ "Bruno Lalande",
+ "Mateusz Loskot",
+ "Adam Wulkiewicz",
+ "Menelaos Karavelas"
+ ],
+ "maintainers": [
+ "Barend Gehrels <barend -at- xs4all.nl>",
+ "Bruno Lalande <bruno.lalande -at- gmail.com>",
+ "Mateusz Loskot <mateusz -at- loskot.net>",
+ "Adam Wulkiewicz <adam.wulkiewicz -at- gmail.com>"
+ ],
+ "description":
+ "The Boost.Geometry library provides geometric algorithms, primitives and spatial index.",
+ "category": [
+ "Algorithms", "Data", "Math"
+ ]
+ }
+]
diff --git a/libs/geometry/sublibs b/libs/geometry/sublibs
new file mode 100644
index 0000000000..edc2ec0784
--- /dev/null
+++ b/libs/geometry/sublibs
@@ -0,0 +1,2 @@
+The existance of this file tells the regression reporting programs that the directory contains sub-directories which are libraries.
+
diff --git a/libs/geometry/test/Jamfile.v2 b/libs/geometry/test/Jamfile.v2
index f4289156cb..d915429516 100644
--- a/libs/geometry/test/Jamfile.v2
+++ b/libs/geometry/test/Jamfile.v2
@@ -30,4 +30,3 @@ build-project io ;
build-project util ;
build-project views ;
build-project multi ;
-#build-project domains ; \ No newline at end of file
diff --git a/libs/geometry/test/algorithms/Jamfile.v2 b/libs/geometry/test/algorithms/Jamfile.v2
index 13811d3036..79b3d4ca94 100644
--- a/libs/geometry/test/algorithms/Jamfile.v2
+++ b/libs/geometry/test/algorithms/Jamfile.v2
@@ -1,8 +1,13 @@
# 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.
+# Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+# Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+# Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+#
+# This file was modified by Oracle on 2014.
+# Modifications copyright (c) 2014, Oracle and/or its affiliates.
+#
+# Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
#
# Use, modification and distribution is subject to the Boost Software License,
# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -10,40 +15,74 @@
test-suite boost-geometry-algorithms
:
- [ run append.cpp ]
- [ run area.cpp ]
+ [ run append.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run area.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
[ run assign.cpp ]
[ run buffer.cpp ]
- [ run centroid.cpp ]
- [ run comparable_distance.cpp ]
- [ run convex_hull.cpp ]
- [ run correct.cpp ]
- [ run convert.cpp ]
+ [ run centroid.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run comparable_distance.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run convex_hull.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run correct.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run convert.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
[ run covered_by.cpp ]
- [ run difference.cpp ]
- [ run disjoint.cpp ]
- [ run distance.cpp ]
- [ run envelope.cpp ]
- [ run equals.cpp ]
+ [ run crosses.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run difference.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
+ [ run difference_linear_linear.cpp ]
+ [ run difference_pl_pl.cpp ]
+ [ run disjoint.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run disjoint_coverage.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run distance.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run distance_areal_areal.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run distance_linear_areal.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run distance_linear_linear.cpp ]
+ [ run distance_pointlike_areal.cpp ]
+ [ run distance_pointlike_linear.cpp ]
+ [ run distance_pointlike_pointlike.cpp ]
+ [ run envelope.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run equals.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
[ run expand.cpp ]
[ run for_each.cpp ]
- [ run intersection.cpp ]
- [ run intersects.cpp ]
+ [ run intersection.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
+ [ run intersection_linear_linear.cpp ]
+ [ run intersection_pl_pl.cpp ]
+ [ run intersects.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run is_simple.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run is_valid.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
[ run length.cpp ]
[ run make.cpp ]
- [ run overlaps.cpp ]
+ [ run num_geometries.cpp ]
+ [ run num_interior_rings.cpp ]
+ [ run num_points.cpp ]
+ [ run num_segments.cpp ]
+ [ run overlaps.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
[ run perimeter.cpp ]
+ [ run point_on_surface.cpp ]
+ [ run relate_areal_areal.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run relate_linear_areal.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run relate_linear_linear.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run relate_pointlike_xxx.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run remove_spikes.cpp ]
[ run reverse.cpp ]
[ run simplify.cpp ]
- [ run touches.cpp ]
+ [ run sym_difference_linear_linear.cpp ]
+ [ run touches.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
[ run transform.cpp ]
- [ run union.cpp ]
+ [ run union.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
+ [ run union_linear_linear.cpp ]
+ [ run union_pl_pl.cpp ]
[ run unique.cpp ]
- [ run within.cpp ]
+ [ run within.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run within_areal_areal.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run within_linear_areal.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run within_linear_linear.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
+ [ run within_pointlike_xxx.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
;
build-project overlay
;
+
+build-project buffer
+ ;
build-project detail
;
diff --git a/libs/geometry/test/algorithms/algorithms_tests.sln b/libs/geometry/test/algorithms/algorithms_tests.sln
deleted file mode 100644
index 96ba064921..0000000000
--- a/libs/geometry/test/algorithms/algorithms_tests.sln
+++ /dev/null
@@ -1,193 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "append", "append.vcproj", "{774F6471-D8A0-481C-9B0A-4903EED25C70}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "area", "area.vcproj", "{E86E6687-AC05-4DBE-A8BD-C47BCB6AEE90}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "assign", "assign.vcproj", "{94BC6547-67C1-44DB-903D-526537A91E23}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "expand", "expand.vcproj", "{5330DAB1-DF27-44FC-971B-3C5094F82FA3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convex_hull", "convex_hull.vcproj", "{0AFF7A85-63A7-4178-92A5-CC692B09F5B9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "distance", "distance.vcproj", "{347D08A4-22E9-45B1-A55B-AE84AA2EAA53}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "envelope", "envelope.vcproj", "{26EFCAF4-7907-4A47-ACBF-6CAB738CDCEB}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make", "make.vcproj", "{BCD17F3E-8DF2-4B00-A75E-BF7372D2873B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simplify", "simplify.vcproj", "{B1760CB8-553B-42AB-B54E-3D0320FF252F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "transform", "transform.vcproj", "{41413E56-08DA-4592-94D2-5311FE90C62B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buffer", "buffer.vcproj", "{C66E1F6F-84F6-44E2-B5E8-2B127065BE31}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "for_each", "for_each.vcproj", "{774F6471-D8A0-481C-9B0A-4903EAD25B70}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "disjoint", "disjoint.vcproj", "{96D51D96-B35F-47C8-864D-371DF2280686}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "centroid", "centroid.vcproj", "{1E90E5BC-1280-4A6A-B197-132ABBF97EB9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intersection", "intersection.vcproj", "{2FD8EDAB-B3C3-4654-B6C3-B25C12A063D3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "correct", "correct.vcproj", "{71582BDA-D4DF-400D-8630-378BE102C038}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "within", "within.vcproj", "{C7BCD670-543D-4B29-B2D6-F3169949F79D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "length", "length.vcproj", "{C4D75B1E-34D5-4A98-8535-A9535BE949E4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perimeter", "perimeter.vcproj", "{EFC23FC0-86D3-4C81-A218-26F0D5A4D50B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "union", "union.vcproj", "{CA5EE1D6-CB4B-4A15-85C5-31D5C00289C4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "overlaps", "overlaps.vcproj", "{30C37854-9ED6-4C1E-97FB-BF8637BD5811}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intersects", "intersects.vcproj", "{B1A97F62-85CD-4239-BB56-619988B08260}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "equals", "equals.vcproj", "{E54F493F-BF9D-4A6D-AE2F-5F97AC95251A}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "difference", "difference.vcproj", "{4EBFC27A-75C9-43A1-8DDA-AFEB45C564DC}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unique", "unique.vcproj", "{104D31F9-49BA-4A1A-B84F-0A3AEE3C4DB2}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reverse", "reverse.vcproj", "{14B5DFC5-D511-4D8C-A231-EE90A05687E1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "comparable_distance", "comparable_distance.vcproj", "{F11970B5-BE16-4FF5-9780-4C15082B76A0}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convert", "convert.vcproj", "{FABF1AA7-F695-49F8-92F6-AB6C4B0C088A}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "covered_by", "covered_by.vcproj", "{5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "touches", "touches.vcproj", "{8359726E-9F03-4300-8F63-1FEAC84251D0}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {774F6471-D8A0-481C-9B0A-4903EED25C70}.Debug|Win32.ActiveCfg = Debug|Win32
- {774F6471-D8A0-481C-9B0A-4903EED25C70}.Debug|Win32.Build.0 = Debug|Win32
- {774F6471-D8A0-481C-9B0A-4903EED25C70}.Release|Win32.ActiveCfg = Release|Win32
- {774F6471-D8A0-481C-9B0A-4903EED25C70}.Release|Win32.Build.0 = Release|Win32
- {E86E6687-AC05-4DBE-A8BD-C47BCB6AEE90}.Debug|Win32.ActiveCfg = Debug|Win32
- {E86E6687-AC05-4DBE-A8BD-C47BCB6AEE90}.Debug|Win32.Build.0 = Debug|Win32
- {E86E6687-AC05-4DBE-A8BD-C47BCB6AEE90}.Release|Win32.ActiveCfg = Release|Win32
- {E86E6687-AC05-4DBE-A8BD-C47BCB6AEE90}.Release|Win32.Build.0 = Release|Win32
- {94BC6547-67C1-44DB-903D-526537A91E23}.Debug|Win32.ActiveCfg = Debug|Win32
- {94BC6547-67C1-44DB-903D-526537A91E23}.Debug|Win32.Build.0 = Debug|Win32
- {94BC6547-67C1-44DB-903D-526537A91E23}.Release|Win32.ActiveCfg = Release|Win32
- {94BC6547-67C1-44DB-903D-526537A91E23}.Release|Win32.Build.0 = Release|Win32
- {5330DAB1-DF27-44FC-971B-3C5094F82FA3}.Debug|Win32.ActiveCfg = Debug|Win32
- {5330DAB1-DF27-44FC-971B-3C5094F82FA3}.Debug|Win32.Build.0 = Debug|Win32
- {5330DAB1-DF27-44FC-971B-3C5094F82FA3}.Release|Win32.ActiveCfg = Release|Win32
- {5330DAB1-DF27-44FC-971B-3C5094F82FA3}.Release|Win32.Build.0 = Release|Win32
- {0AFF7A85-63A7-4178-92A5-CC692B09F5B9}.Debug|Win32.ActiveCfg = Debug|Win32
- {0AFF7A85-63A7-4178-92A5-CC692B09F5B9}.Debug|Win32.Build.0 = Debug|Win32
- {0AFF7A85-63A7-4178-92A5-CC692B09F5B9}.Release|Win32.ActiveCfg = Release|Win32
- {0AFF7A85-63A7-4178-92A5-CC692B09F5B9}.Release|Win32.Build.0 = Release|Win32
- {347D08A4-22E9-45B1-A55B-AE84AA2EAA53}.Debug|Win32.ActiveCfg = Debug|Win32
- {347D08A4-22E9-45B1-A55B-AE84AA2EAA53}.Debug|Win32.Build.0 = Debug|Win32
- {347D08A4-22E9-45B1-A55B-AE84AA2EAA53}.Release|Win32.ActiveCfg = Release|Win32
- {347D08A4-22E9-45B1-A55B-AE84AA2EAA53}.Release|Win32.Build.0 = Release|Win32
- {26EFCAF4-7907-4A47-ACBF-6CAB738CDCEB}.Debug|Win32.ActiveCfg = Debug|Win32
- {26EFCAF4-7907-4A47-ACBF-6CAB738CDCEB}.Debug|Win32.Build.0 = Debug|Win32
- {26EFCAF4-7907-4A47-ACBF-6CAB738CDCEB}.Release|Win32.ActiveCfg = Release|Win32
- {26EFCAF4-7907-4A47-ACBF-6CAB738CDCEB}.Release|Win32.Build.0 = Release|Win32
- {BCD17F3E-8DF2-4B00-A75E-BF7372D2873B}.Debug|Win32.ActiveCfg = Debug|Win32
- {BCD17F3E-8DF2-4B00-A75E-BF7372D2873B}.Debug|Win32.Build.0 = Debug|Win32
- {BCD17F3E-8DF2-4B00-A75E-BF7372D2873B}.Release|Win32.ActiveCfg = Release|Win32
- {BCD17F3E-8DF2-4B00-A75E-BF7372D2873B}.Release|Win32.Build.0 = Release|Win32
- {B1760CB8-553B-42AB-B54E-3D0320FF252F}.Debug|Win32.ActiveCfg = Debug|Win32
- {B1760CB8-553B-42AB-B54E-3D0320FF252F}.Debug|Win32.Build.0 = Debug|Win32
- {B1760CB8-553B-42AB-B54E-3D0320FF252F}.Release|Win32.ActiveCfg = Release|Win32
- {B1760CB8-553B-42AB-B54E-3D0320FF252F}.Release|Win32.Build.0 = Release|Win32
- {41413E56-08DA-4592-94D2-5311FE90C62B}.Debug|Win32.ActiveCfg = Debug|Win32
- {41413E56-08DA-4592-94D2-5311FE90C62B}.Debug|Win32.Build.0 = Debug|Win32
- {41413E56-08DA-4592-94D2-5311FE90C62B}.Release|Win32.ActiveCfg = Release|Win32
- {41413E56-08DA-4592-94D2-5311FE90C62B}.Release|Win32.Build.0 = Release|Win32
- {C66E1F6F-84F6-44E2-B5E8-2B127065BE31}.Debug|Win32.ActiveCfg = Debug|Win32
- {C66E1F6F-84F6-44E2-B5E8-2B127065BE31}.Debug|Win32.Build.0 = Debug|Win32
- {C66E1F6F-84F6-44E2-B5E8-2B127065BE31}.Release|Win32.ActiveCfg = Release|Win32
- {C66E1F6F-84F6-44E2-B5E8-2B127065BE31}.Release|Win32.Build.0 = Release|Win32
- {774F6471-D8A0-481C-9B0A-4903EAD25B70}.Debug|Win32.ActiveCfg = Debug|Win32
- {774F6471-D8A0-481C-9B0A-4903EAD25B70}.Debug|Win32.Build.0 = Debug|Win32
- {774F6471-D8A0-481C-9B0A-4903EAD25B70}.Release|Win32.ActiveCfg = Release|Win32
- {774F6471-D8A0-481C-9B0A-4903EAD25B70}.Release|Win32.Build.0 = Release|Win32
- {96D51D96-B35F-47C8-864D-371DF2280686}.Debug|Win32.ActiveCfg = Debug|Win32
- {96D51D96-B35F-47C8-864D-371DF2280686}.Debug|Win32.Build.0 = Debug|Win32
- {96D51D96-B35F-47C8-864D-371DF2280686}.Release|Win32.ActiveCfg = Release|Win32
- {96D51D96-B35F-47C8-864D-371DF2280686}.Release|Win32.Build.0 = Release|Win32
- {1E90E5BC-1280-4A6A-B197-132ABBF97EB9}.Debug|Win32.ActiveCfg = Debug|Win32
- {1E90E5BC-1280-4A6A-B197-132ABBF97EB9}.Debug|Win32.Build.0 = Debug|Win32
- {1E90E5BC-1280-4A6A-B197-132ABBF97EB9}.Release|Win32.ActiveCfg = Release|Win32
- {1E90E5BC-1280-4A6A-B197-132ABBF97EB9}.Release|Win32.Build.0 = Release|Win32
- {2FD8EDAB-B3C3-4654-B6C3-B25C12A063D3}.Debug|Win32.ActiveCfg = Debug|Win32
- {2FD8EDAB-B3C3-4654-B6C3-B25C12A063D3}.Debug|Win32.Build.0 = Debug|Win32
- {2FD8EDAB-B3C3-4654-B6C3-B25C12A063D3}.Release|Win32.ActiveCfg = Release|Win32
- {2FD8EDAB-B3C3-4654-B6C3-B25C12A063D3}.Release|Win32.Build.0 = Release|Win32
- {71582BDA-D4DF-400D-8630-378BE102C038}.Debug|Win32.ActiveCfg = Debug|Win32
- {71582BDA-D4DF-400D-8630-378BE102C038}.Debug|Win32.Build.0 = Debug|Win32
- {71582BDA-D4DF-400D-8630-378BE102C038}.Release|Win32.ActiveCfg = Release|Win32
- {71582BDA-D4DF-400D-8630-378BE102C038}.Release|Win32.Build.0 = Release|Win32
- {C7BCD670-543D-4B29-B2D6-F3169949F79D}.Debug|Win32.ActiveCfg = Debug|Win32
- {C7BCD670-543D-4B29-B2D6-F3169949F79D}.Debug|Win32.Build.0 = Debug|Win32
- {C7BCD670-543D-4B29-B2D6-F3169949F79D}.Release|Win32.ActiveCfg = Release|Win32
- {C7BCD670-543D-4B29-B2D6-F3169949F79D}.Release|Win32.Build.0 = Release|Win32
- {C4D75B1E-34D5-4A98-8535-A9535BE949E4}.Debug|Win32.ActiveCfg = Debug|Win32
- {C4D75B1E-34D5-4A98-8535-A9535BE949E4}.Debug|Win32.Build.0 = Debug|Win32
- {C4D75B1E-34D5-4A98-8535-A9535BE949E4}.Release|Win32.ActiveCfg = Release|Win32
- {C4D75B1E-34D5-4A98-8535-A9535BE949E4}.Release|Win32.Build.0 = Release|Win32
- {EFC23FC0-86D3-4C81-A218-26F0D5A4D50B}.Debug|Win32.ActiveCfg = Debug|Win32
- {EFC23FC0-86D3-4C81-A218-26F0D5A4D50B}.Debug|Win32.Build.0 = Debug|Win32
- {EFC23FC0-86D3-4C81-A218-26F0D5A4D50B}.Release|Win32.ActiveCfg = Release|Win32
- {EFC23FC0-86D3-4C81-A218-26F0D5A4D50B}.Release|Win32.Build.0 = Release|Win32
- {CA5EE1D6-CB4B-4A15-85C5-31D5C00289C4}.Debug|Win32.ActiveCfg = Debug|Win32
- {CA5EE1D6-CB4B-4A15-85C5-31D5C00289C4}.Debug|Win32.Build.0 = Debug|Win32
- {CA5EE1D6-CB4B-4A15-85C5-31D5C00289C4}.Release|Win32.ActiveCfg = Release|Win32
- {CA5EE1D6-CB4B-4A15-85C5-31D5C00289C4}.Release|Win32.Build.0 = Release|Win32
- {30C37854-9ED6-4C1E-97FB-BF8637BD5811}.Debug|Win32.ActiveCfg = Debug|Win32
- {30C37854-9ED6-4C1E-97FB-BF8637BD5811}.Debug|Win32.Build.0 = Debug|Win32
- {30C37854-9ED6-4C1E-97FB-BF8637BD5811}.Release|Win32.ActiveCfg = Release|Win32
- {30C37854-9ED6-4C1E-97FB-BF8637BD5811}.Release|Win32.Build.0 = Release|Win32
- {B1A97F62-85CD-4239-BB56-619988B08260}.Debug|Win32.ActiveCfg = Debug|Win32
- {B1A97F62-85CD-4239-BB56-619988B08260}.Debug|Win32.Build.0 = Debug|Win32
- {B1A97F62-85CD-4239-BB56-619988B08260}.Release|Win32.ActiveCfg = Release|Win32
- {B1A97F62-85CD-4239-BB56-619988B08260}.Release|Win32.Build.0 = Release|Win32
- {E54F493F-BF9D-4A6D-AE2F-5F97AC95251A}.Debug|Win32.ActiveCfg = Debug|Win32
- {E54F493F-BF9D-4A6D-AE2F-5F97AC95251A}.Debug|Win32.Build.0 = Debug|Win32
- {E54F493F-BF9D-4A6D-AE2F-5F97AC95251A}.Release|Win32.ActiveCfg = Release|Win32
- {E54F493F-BF9D-4A6D-AE2F-5F97AC95251A}.Release|Win32.Build.0 = Release|Win32
- {4EBFC27A-75C9-43A1-8DDA-AFEB45C564DC}.Debug|Win32.ActiveCfg = Debug|Win32
- {4EBFC27A-75C9-43A1-8DDA-AFEB45C564DC}.Debug|Win32.Build.0 = Debug|Win32
- {4EBFC27A-75C9-43A1-8DDA-AFEB45C564DC}.Release|Win32.ActiveCfg = Release|Win32
- {4EBFC27A-75C9-43A1-8DDA-AFEB45C564DC}.Release|Win32.Build.0 = Release|Win32
- {104D31F9-49BA-4A1A-B84F-0A3AEE3C4DB2}.Debug|Win32.ActiveCfg = Debug|Win32
- {104D31F9-49BA-4A1A-B84F-0A3AEE3C4DB2}.Debug|Win32.Build.0 = Debug|Win32
- {104D31F9-49BA-4A1A-B84F-0A3AEE3C4DB2}.Release|Win32.ActiveCfg = Release|Win32
- {104D31F9-49BA-4A1A-B84F-0A3AEE3C4DB2}.Release|Win32.Build.0 = Release|Win32
- {14B5DFC5-D511-4D8C-A231-EE90A05687E1}.Debug|Win32.ActiveCfg = Debug|Win32
- {14B5DFC5-D511-4D8C-A231-EE90A05687E1}.Debug|Win32.Build.0 = Debug|Win32
- {14B5DFC5-D511-4D8C-A231-EE90A05687E1}.Release|Win32.ActiveCfg = Release|Win32
- {14B5DFC5-D511-4D8C-A231-EE90A05687E1}.Release|Win32.Build.0 = Release|Win32
- {F11970B5-BE16-4FF5-9780-4C15082B76A0}.Debug|Win32.ActiveCfg = Debug|Win32
- {F11970B5-BE16-4FF5-9780-4C15082B76A0}.Debug|Win32.Build.0 = Debug|Win32
- {F11970B5-BE16-4FF5-9780-4C15082B76A0}.Release|Win32.ActiveCfg = Release|Win32
- {F11970B5-BE16-4FF5-9780-4C15082B76A0}.Release|Win32.Build.0 = Release|Win32
- {FABF1AA7-F695-49F8-92F6-AB6C4B0C088A}.Debug|Win32.ActiveCfg = Debug|Win32
- {FABF1AA7-F695-49F8-92F6-AB6C4B0C088A}.Debug|Win32.Build.0 = Debug|Win32
- {FABF1AA7-F695-49F8-92F6-AB6C4B0C088A}.Release|Win32.ActiveCfg = Release|Win32
- {FABF1AA7-F695-49F8-92F6-AB6C4B0C088A}.Release|Win32.Build.0 = Release|Win32
- {5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}.Debug|Win32.ActiveCfg = Debug|Win32
- {5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}.Debug|Win32.Build.0 = Debug|Win32
- {5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}.Release|Win32.ActiveCfg = Release|Win32
- {5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}.Release|Win32.Build.0 = Release|Win32
- {8359726E-9F03-4300-8F63-1FEAC84251D0}.Debug|Win32.ActiveCfg = Debug|Win32
- {8359726E-9F03-4300-8F63-1FEAC84251D0}.Debug|Win32.Build.0 = Debug|Win32
- {8359726E-9F03-4300-8F63-1FEAC84251D0}.Release|Win32.ActiveCfg = Release|Win32
- {8359726E-9F03-4300-8F63-1FEAC84251D0}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/algorithms/append.cpp b/libs/geometry/test/algorithms/append.cpp
index 256300cf97..2a3d01a86a 100644
--- a/libs/geometry/test/algorithms/append.cpp
+++ b/libs/geometry/test/algorithms/append.cpp
@@ -1,9 +1,14 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
-// 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.
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014, 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.
@@ -25,60 +30,139 @@
#include <boost/geometry/algorithms/num_points.hpp>
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/geometries/register/linestring.hpp>
+#include <boost/variant/variant.hpp>
#include <test_common/test_point.hpp>
#include <test_geometries/wrapped_boost_array.hpp>
+// includes for multi-geometries
+#include <boost/geometry/multi/core/point_type.hpp>
+#include <boost/geometry/multi/core/tags.hpp>
+#include <boost/geometry/multi/geometries/concepts/check.hpp>
+#include <boost/geometry/multi/geometries/multi_geometries.hpp>
+#include <boost/geometry/multi/algorithms/append.hpp>
+#include <boost/geometry/multi/algorithms/clear.hpp>
+#include <boost/geometry/multi/algorithms/num_points.hpp>
+
BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED(std::vector)
BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED(std::deque)
-template <typename G>
-void test_geometry(bool check = true)
+template <bool EnableAll>
+struct do_checks
{
- G geometry;
- typedef typename bg::point_type<G>::type P;
-
- bg::append(geometry, bg::make_zero<P>());
- if (check)
+ template <typename G>
+ static inline void apply(G const& geometry,
+ std::size_t size1,
+ std::size_t = 0,
+ std::size_t = 0)
{
- BOOST_CHECK_EQUAL(bg::num_points(geometry), 1u);
+ BOOST_CHECK_EQUAL(bg::num_points(geometry), size1);
}
+};
- // Append a range
- std::vector<P> v;
- v.push_back(bg::make_zero<P>());
- v.push_back(bg::make_zero<P>());
- bg::append(geometry, v);
- if (check)
+template<>
+struct do_checks<true>
+{
+ template <typename G>
+ static inline void apply(G const& geometry,
+ std::size_t size1,
+ std::size_t size2 = 0,
+ std::size_t size3 = 0)
{
- BOOST_CHECK_EQUAL(bg::num_points(geometry), 3u);
+ do_checks<false>::apply(geometry, size1);
+ BOOST_CHECK_EQUAL(bg::num_points(geometry[0]), size2);
+ BOOST_CHECK_EQUAL(bg::num_points(geometry[1]), size3);
}
+};
+
- bg::clear(geometry);
- if (check)
+template <bool HasMultiIndex, bool IsVariant>
+struct test_geometry
+{
+ template <typename G>
+ static inline void apply(G& geometry, bool check)
{
- BOOST_CHECK_EQUAL(bg::num_points(geometry), 0u);
+ typedef typename bg::point_type<G>::type P;
+ typedef do_checks<HasMultiIndex && !IsVariant> checks;
+
+ bg::append(geometry, bg::make_zero<P>(), -1, 0);
+ if (check)
+ {
+ checks::apply(geometry, 1u, 1u, 0u);
+ }
+
+ // Append a range
+ std::vector<P> v;
+ v.push_back(bg::make_zero<P>());
+ v.push_back(bg::make_zero<P>());
+ bg::append(geometry, v, -1, 1);
+
+ if (check)
+ {
+ checks::apply(geometry, 3u, 1u, 2u);
+ }
+
+ bg::clear(geometry);
+
+ if (check)
+ {
+ do_checks<false>::apply(geometry, 0u);
+ }
}
+};
+
+
- //P p = boost::range::front(geometry);
+template <typename G>
+void test_geometry_and_variant(bool check = true)
+{
+ G geometry;
+ boost::variant<G> variant_geometry = G();
+ test_geometry<false, false>::apply(geometry, check);
+ test_geometry<false, true>::apply(variant_geometry, check);
}
+
+template <typename MG>
+void test_multigeometry_and_variant(bool check = true)
+{
+ typedef typename boost::range_value<MG>::type G;
+
+ G geometry;
+ MG multigeometry;
+ bg::traits::push_back<MG>::apply(multigeometry, geometry);
+ bg::traits::push_back<MG>::apply(multigeometry, geometry);
+
+ boost::variant<MG> variant_multigeometry = multigeometry;
+ test_geometry<true, false>::apply(multigeometry, check);
+ test_geometry<true, true>::apply(variant_multigeometry, check);
+}
+
+
template <typename P>
void test_all()
{
- test_geometry<P>(false);
- test_geometry<bg::model::box<P> >(false);
- test_geometry<bg::model::segment<P> >(false);
- test_geometry<bg::model::linestring<P> >();
- test_geometry<bg::model::ring<P> >();
- test_geometry<bg::model::polygon<P> >();
-
- test_geometry<std::vector<P> >();
- test_geometry<std::deque<P> >();
- //test_geometry<std::list<P> >();
+ test_geometry_and_variant<P>(false);
+ test_geometry_and_variant<bg::model::box<P> >(false);
+ test_geometry_and_variant<bg::model::segment<P> >(false);
+ test_geometry_and_variant<bg::model::linestring<P> >();
+ test_geometry_and_variant<bg::model::ring<P> >();
+ test_geometry_and_variant<bg::model::polygon<P> >();
+ test_geometry_and_variant<bg::model::multi_point<P> >();
+ test_multigeometry_and_variant
+ <
+ bg::model::multi_linestring<bg::model::linestring<P> >
+ >();
+ test_multigeometry_and_variant
+ <
+ bg::model::multi_polygon<bg::model::polygon<P> >
+ >();
+
+ test_geometry_and_variant<std::vector<P> >();
+ test_geometry_and_variant<std::deque<P> >();
}
int test_main(int, char* [])
diff --git a/libs/geometry/test/algorithms/append.vcproj b/libs/geometry/test/algorithms/append.vcproj
deleted file mode 100644
index b162dd1b09..0000000000
--- a/libs/geometry/test/algorithms/append.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="append"
- ProjectGUID="{774F6471-D8A0-481C-9B0A-4903EED25C70}"
- RootNamespace="append"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\append"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\append"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\append.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/area.cpp b/libs/geometry/test/algorithms/area.cpp
index 1b2dc49f50..7213464b07 100644
--- a/libs/geometry/test/algorithms/area.cpp
+++ b/libs/geometry/test/algorithms/area.cpp
@@ -23,7 +23,9 @@
#include <test_geometries/all_custom_ring.hpp>
#include <test_geometries/all_custom_polygon.hpp>
-//#define GEOMETRY_TEST_DEBUG
+//#define BOOST_GEOMETRY_TEST_DEBUG
+
+#include <boost/variant/variant.hpp>
template <typename Polygon>
void test_polygon()
@@ -94,14 +96,14 @@ void test_spherical(bool polar = false)
// SQL Server gives: 4537.9654419375
// PostGIS gives: 4537.9311668307
// Note: those are Geographic, this test is Spherical
- BOOST_CHECK_CLOSE(area, 4506.6389, 0.001);
+ BOOST_CHECK_CLOSE(area, 4506.6389, 0.001);
// Wrangel, more in detail
bg::read_wkt("POLYGON((-178.568604 71.564148,-178.017548 71.449692,-177.833313 71.3461,-177.502838 71.277466 ,-177.439453 71.226929,-177.620026 71.116638,-177.9389 71.037491,-178.8186 70.979965,-179.274445 70.907761,-180 70.9972,179.678314 70.895538,179.272766 70.888596,178.791016 70.7964,178.617737 71.035538,178.872192 71.217484,179.530273 71.4383 ,-180 71.535843 ,-179.628601 71.577194,-179.305298 71.551361,-179.03421 71.597748,-178.568604 71.564148))", geometry);
area = bg::area(geometry, spherical_earth);
// SQL Server gives: 7669.10402181435
// PostGIS gives: 7669.55565459832
- BOOST_CHECK_CLOSE(area, 7616.523769, 0.001);
+ BOOST_CHECK_CLOSE(area, 7616.523769, 0.001);
// Check more at the equator
/*
@@ -123,7 +125,7 @@ void test_spherical(bool polar = false)
bg::read_wkt("POLYGON((-178.7858 20.7852, 177.4758 21.2333, 179.7436 21.5733, -178.7858 20.7852))", geometry);
area = bg::area(geometry, spherical_earth);
- BOOST_CHECK_CLOSE(area, 12987.8682, 0.001); // SQL Server gives: 12944.3970990317 -> -39m^2
+ BOOST_CHECK_CLOSE(area, 12987.8682, 0.001); // SQL Server gives: 12944.3970990317 -> -39m^2
bg::read_wkt("POLYGON((-178.7858 30.7852, 177.4758 31.2333, 179.7436 31.5733, -178.7858 30.7852))", geometry);
area = bg::area(geometry, spherical_earth);
@@ -222,6 +224,28 @@ void test_large_integers()
BOOST_CHECK_CLOSE(int_area, double_area, 0.0001);
}
+void test_variant()
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> double_point_type;
+ typedef bg::model::polygon<double_point_type> polygon_type;
+ typedef bg::model::box<double_point_type> box_type;
+
+ polygon_type poly;
+ std::string const polygon_li = "POLYGON((18 5,18 1,15 1,15 5,12 5,12 8,15 8,18 8,18 5))";
+ bg::read_wkt(polygon_li, poly);
+
+ box_type box;
+ std::string const box_li = "BOX(0 0,2 2)";
+ bg::read_wkt(box_li, box);
+
+ boost::variant<polygon_type, box_type> v;
+
+ v = poly;
+ BOOST_CHECK_CLOSE(bg::area(v), bg::area(poly), 0.0001);
+ v = box;
+ BOOST_CHECK_CLOSE(bg::area(v), bg::area(box), 0.0001);
+}
+
int test_main(int, char* [])
{
test_all<bg::model::point<int, 2, bg::cs::cartesian> >();
@@ -242,6 +266,8 @@ int test_main(int, char* [])
test_large_integers();
+ test_variant();
+
// test_empty_input<bg::model::d2::point_xy<int> >();
return 0;
diff --git a/libs/geometry/test/algorithms/area.vcproj b/libs/geometry/test/algorithms/area.vcproj
deleted file mode 100644
index e091e28faf..0000000000
--- a/libs/geometry/test/algorithms/area.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="area"
- ProjectGUID="{E86E6687-AC05-4DBE-A8BD-C47BCB6AEE90}"
- RootNamespace="area"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\area"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\area"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\area.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/assign.cpp b/libs/geometry/test/algorithms/assign.cpp
index 82251db5a9..aca34a6875 100644
--- a/libs/geometry/test/algorithms/assign.cpp
+++ b/libs/geometry/test/algorithms/assign.cpp
@@ -4,6 +4,7 @@
// 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.
+// Copyright (c) 2014 Samuel Debionne, Grenoble, France.
// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
@@ -21,30 +22,31 @@
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/geometries/adapted/c_array.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
+#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/variant/variant.hpp>
#include <test_common/test_point.hpp>
BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian)
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
-template <typename Linestring>
-void check_linestring_2d(Linestring const& line)
+template <typename Geometry>
+void check_geometry(Geometry const& geometry, std::string const& expected)
{
- BOOST_CHECK((boost::size(line) == 3));
- BOOST_CHECK((bg::num_points(line) == 3));
-
- typedef typename bg::point_type<Linestring>::type point_type;
- point_type const& p0 = line[0];
- BOOST_CHECK(bg::get<0>(p0) == 1);
- BOOST_CHECK(bg::get<1>(p0) == 2);
+ std::ostringstream out;
+ out << bg::wkt(geometry);
+ BOOST_CHECK_EQUAL(out.str(), expected);
+}
- point_type const& p1 = line[1];
- BOOST_CHECK(bg::get<0>(p1) == 3);
- BOOST_CHECK(bg::get<1>(p1) == 4);
+template <typename Geometry, typename Points>
+void check_assign_points(Points const& points, std::string const& /*expected*/)
+{
+ Geometry geometry;
+ bg::assign_points(geometry, points);
+ check_geometry(geometry, "LINESTRING(1 2,3 4,5 6)");
- point_type const& p2 = line[2];
- BOOST_CHECK(bg::get<0>(p2) == 5);
- BOOST_CHECK(bg::get<1>(p2) == 6);
+ boost::variant<Geometry> v;
+ bg::assign_points(v, points);
}
template <typename Point>
@@ -54,24 +56,21 @@ void test_assign_linestring_2d()
// Test assignment of plain array (note that this is only possible if adapted c-array is included!)
const double coors[3][2] = { {1, 2}, {3, 4}, {5, 6} };
- bg::assign_points(line, coors);
- check_linestring_2d(line);
+ check_assign_points<bg::model::linestring<Point> >(coors, "LINESTRING(1 2,3 4,5 6)");
// Test assignment of point array
Point points[3];
bg::assign_values(points[0], 1, 2);
bg::assign_values(points[1], 3, 4);
bg::assign_values(points[2], 5, 6);
- bg::assign_points(line, points);
- check_linestring_2d(line);
+ check_assign_points<bg::model::linestring<Point> >(points, "LINESTRING(1 2,3 4,5 6)");
// Test assignment of array with different point-type (tuple adaption should be included)
boost::tuple<float, float> tuples[3];
tuples[0] = boost::make_tuple(1, 2);
tuples[1] = boost::make_tuple(3, 4);
tuples[2] = boost::make_tuple(5, 6);
- bg::assign_points(line, tuples);
- check_linestring_2d(line);
+ check_assign_points<bg::model::linestring<Point> >(tuples, "LINESTRING(1 2,3 4,5 6)");
}
namespace detail
@@ -113,26 +112,18 @@ void test_assign_box_2d()
detail::test_assign_box_or_segment_2d<bg::model::box<Point> >();
}
-
template <typename Point>
void test_assign_point_3d()
{
Point p;
bg::assign_values(p, 1, 2, 3);
- BOOST_CHECK(bg::get<0>(p) == 1);
- BOOST_CHECK(bg::get<1>(p) == 2);
- BOOST_CHECK(bg::get<2>(p) == 3);
+ check_geometry(p, "POINT(1 2 3)");
bg::assign_value(p, 123);
- BOOST_CHECK(bg::get<0>(p) == 123);
- BOOST_CHECK(bg::get<1>(p) == 123);
- BOOST_CHECK(bg::get<2>(p) == 123);
+ check_geometry(p, "POINT(123 123 123)");
bg::assign_zero(p);
- BOOST_CHECK(bg::get<0>(p) == 0);
- BOOST_CHECK(bg::get<1>(p) == 0);
- BOOST_CHECK(bg::get<2>(p) == 0);
-
+ check_geometry(p, "POINT(0 0 0)");
}
template <typename P>
@@ -158,7 +149,7 @@ void test_assign_conversion()
bg::set<bg::min_corner, 1>(b, 2);
bg::set<bg::max_corner, 0>(b, 3);
bg::set<bg::max_corner, 1>(b, 4);
-
+
ring_type ring;
bg::assign(ring, b);
@@ -169,10 +160,6 @@ void test_assign_conversion()
}
-
- //std::cout << bg::wkt(b) << std::endl;
- //std::cout << bg::wkt(ring) << std::endl;
-
typename boost::range_const_iterator<ring_type>::type it = ring.begin();
BOOST_CHECK_CLOSE(bg::get<0>(*it), 1.0, 0.001);
BOOST_CHECK_CLOSE(bg::get<1>(*it), 2.0, 0.001);
@@ -203,21 +190,86 @@ void test_assign_conversion()
}
+template <typename P>
+void test_assign_conversion_variant()
+{
+ typedef bg::model::box<P> box_type;
+ typedef bg::model::ring<P> ring_type;
+ typedef bg::model::polygon<P> polygon_type;
+
+ P p;
+ bg::assign_values(p, 1, 2);
+
+ box_type b;
+ boost::variant<box_type&> variant_b(b);
+ bg::assign(variant_b, p);
+
+ BOOST_CHECK_CLOSE((bg::get<0, 0>(b)), 1.0, 0.001);
+ BOOST_CHECK_CLOSE((bg::get<0, 1>(b)), 2.0, 0.001);
+ BOOST_CHECK_CLOSE((bg::get<1, 0>(b)), 1.0, 0.001);
+ BOOST_CHECK_CLOSE((bg::get<1, 1>(b)), 2.0, 0.001);
+
+
+ bg::set<bg::min_corner, 0>(b, 1);
+ bg::set<bg::min_corner, 1>(b, 2);
+ bg::set<bg::max_corner, 0>(b, 3);
+ bg::set<bg::max_corner, 1>(b, 4);
+
+ ring_type ring;
+ boost::variant<ring_type&> variant_ring(ring);
+ bg::assign(variant_ring, boost::variant<box_type>(b));
+
+ {
+ typedef bg::model::ring<P, false, false> ring_type_ccw;
+ ring_type_ccw ring_ccw;
+ // Should NOT compile (currently): bg::assign(ring_ccw, ring);
+
+ }
+
+ typename boost::range_const_iterator<ring_type>::type it = ring.begin();
+ BOOST_CHECK_CLOSE(bg::get<0>(*it), 1.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(*it), 2.0, 0.001);
+ it++;
+ BOOST_CHECK_CLOSE(bg::get<0>(*it), 1.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(*it), 4.0, 0.001);
+ it++;
+ BOOST_CHECK_CLOSE(bg::get<0>(*it), 3.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(*it), 4.0, 0.001);
+ it++;
+ BOOST_CHECK_CLOSE(bg::get<0>(*it), 3.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(*it), 2.0, 0.001);
+ it++;
+ BOOST_CHECK_CLOSE(bg::get<0>(*it), 1.0, 0.001);
+ BOOST_CHECK_CLOSE(bg::get<1>(*it), 2.0, 0.001);
+
+ BOOST_CHECK_EQUAL(ring.size(), 5u);
+
+
+ polygon_type polygon;
+ boost::variant<polygon_type&> variant_polygon(polygon);
+
+ bg::assign(variant_polygon, boost::variant<ring_type>(ring));
+ BOOST_CHECK_EQUAL(bg::num_points(polygon), 5u);
+
+ ring_type ring2;
+ boost::variant<ring_type&> variant_ring2(ring2);
+ bg::assign(variant_ring2, boost::variant<polygon_type>(polygon));
+ BOOST_CHECK_EQUAL(bg::num_points(ring2), 5u);
+}
+
+
template <typename Point>
void test_assign_point_2d()
{
Point p;
bg::assign_values(p, 1, 2);
- BOOST_CHECK(bg::get<0>(p) == 1);
- BOOST_CHECK(bg::get<1>(p) == 2);
+ check_geometry(p, "POINT(1 2)");
bg::assign_value(p, 123);
- BOOST_CHECK(bg::get<0>(p) == 123);
- BOOST_CHECK(bg::get<1>(p) == 123);
+ check_geometry(p, "POINT(123 123)");
bg::assign_zero(p);
- BOOST_CHECK(bg::get<0>(p) == 0);
- BOOST_CHECK(bg::get<1>(p) == 0);
+ check_geometry(p, "POINT(0 0)");
}
@@ -242,6 +294,7 @@ int test_main(int, char* [])
test_assign_point_2d<bg::model::point<double, 2, bg::cs::cartesian> >();
test_assign_conversion<bg::model::point<double, 2, bg::cs::cartesian> >();
+ test_assign_conversion_variant<bg::model::point<double, 2, bg::cs::cartesian> >();
// Segment (currently) cannot handle array's because derived from std::pair
diff --git a/libs/geometry/test/algorithms/assign.vcproj b/libs/geometry/test/algorithms/assign.vcproj
deleted file mode 100644
index 50214b53ba..0000000000
--- a/libs/geometry/test/algorithms/assign.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="assign"
- ProjectGUID="{94BC6547-67C1-44DB-903D-526537A91E23}"
- RootNamespace="assign"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\assign"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\assign"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\assign.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/buffer.cpp b/libs/geometry/test/algorithms/buffer.cpp
index f64a25f9d2..fc591e630a 100644
--- a/libs/geometry/test/algorithms/buffer.cpp
+++ b/libs/geometry/test/algorithms/buffer.cpp
@@ -13,6 +13,8 @@
// http://www.boost.org/LICENSE_1_0.txt)
+#include <boost/variant/variant.hpp>
+
#include <geometry_test_common.hpp>
#include <boost/geometry/algorithms/buffer.hpp>
@@ -32,11 +34,16 @@ void test_all()
P p1(0, 0);
P p2(2, 2);
- bg::model::box<P> b1(p1, p2);
- bg::model::box<P> b2;
+ typedef bg::model::box<P> box_type;
+
+ box_type b1(p1, p2);
+ box_type b2;
bg::buffer(b1, b2, coordinate_type(2));
+ boost::variant<box_type> v(b1);
+ bg::buffer(v, b2, coordinate_type(2));
+
// TODO: Check if buffer is correct
// using bg::equals to compare boxes
// (TODO: implement that)
diff --git a/libs/geometry/test/algorithms/buffer.vcproj b/libs/geometry/test/algorithms/buffer.vcproj
deleted file mode 100644
index 60514c7689..0000000000
--- a/libs/geometry/test/algorithms/buffer.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="buffer"
- ProjectGUID="{C66E1F6F-84F6-44E2-B5E8-2B127065BE31}"
- RootNamespace="buffer"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\buffer"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\buffer"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\buffer.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/buffer/Jamfile.v2 b/libs/geometry/test/algorithms/buffer/Jamfile.v2
new file mode 100644
index 0000000000..81f1a0a8b8
--- /dev/null
+++ b/libs/geometry/test/algorithms/buffer/Jamfile.v2
@@ -0,0 +1,24 @@
+# Boost.Geometry (aka GGL, Generic Geometry Library)
+#
+# Copyright (c) 2011-2013 Barend Gehrels, 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)
+
+project boost-geometry-algorithms-buffer
+ :
+ requirements
+ <include>.
+ ;
+
+test-suite boost-geometry-algorithms-buffer
+ :
+ [ run point_buffer.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
+ [ run linestring_buffer.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
+ [ run polygon_buffer.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
+ [ run multi_point_buffer.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
+ [ run multi_linestring_buffer.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
+ [ run multi_polygon_buffer.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
+ ;
+
diff --git a/libs/geometry/test/algorithms/buffer/aimes_linestring_buffer.cpp b/libs/geometry/test/algorithms/buffer/aimes_linestring_buffer.cpp
new file mode 100644
index 0000000000..b3c956c29e
--- /dev/null
+++ b/libs/geometry/test/algorithms/buffer/aimes_linestring_buffer.cpp
@@ -0,0 +1,528 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2012-2014 Barend Gehrels, 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)
+
+#define BOOST_GEOMETRY_BUFFER_SIMPLIFY_WITH_AX
+
+#include <test_buffer.hpp>
+
+#include <boost/geometry/algorithms/buffer.hpp>
+
+#include <boost/geometry/geometries/point.hpp>
+
+
+// Test cases of the list sent by Aimes on geometry list at 2012 Jul 19.
+// Complete list at: http://boost-geometry.203548.n3.nabble.com/file/n4025063/BufferProblems.txt
+template <typename P>
+void test_aimes()
+{
+ static std::string testcases[] =
+ {
+ "LINESTRING(-3.031075 52.22385,-3.030809 52.223579,-3.030424 52.223207,-3.030212 52.222931,-3.030013 52.222764,-3.029721 52.222584,-3.029469 52.222443,-3.029218 52.222319,-3.028886 52.222187,-3.028859 52.222176,-3.028815 52.222158,-3.028563 52.222016,-3.028462 52.221945,-3.028407 52.221881,-3.028351 52.22179,-3.028301 52.221718,-3.028203 52.221601,-3.028151 52.221552,-3.027982 52.221422,-3.027871 52.221353,-3.027755 52.221293,-3.027573 52.22121,-3.027493 52.221179,-3.027463 52.221165,-3.027147 52.221065,-3.027045 52.221039,-3.026812 52.220989,-3.026691 52.220968,-3.026602 52.220957,-3.026111 52.220898,-3.025715 52.220861,-3.025332 52.220842,-3.025011 52.220845,-3.024587 52.220849,-3.024339 52.220869,-3.024213 52.220881,-3.024103 52.220905,-3.023904 52.220966,-3.023687 52.221027,-3.023575 52.221054,-3.023409 52.221077,-3.023317 52.221072,-3.023259 52.221049,-3.023028 52.220905,-3.022859 52.220819,-3.022799 52.220774,-3.022739 52.220688)",
+ "LINESTRING(-3.056646 52.20421,-3.055298 52.204143,-3.054991 52.204119,-3.053966 52.204125,-3.053793 52.204126)",
+ "LINESTRING(-3.040117 52.307787,-3.040012 52.307874,-3.03999 52.30792,-3.039986 52.307973,-3.040054 52.308123,-3.040092 52.308238,-3.040125 52.308398,-3.040165 52.308558,-3.040194 52.308587,-3.040539 52.30889,-3.040868 52.309147,-3.041196 52.309396,-3.042401 52.310114,-3.042414 52.310121,-3.042758 52.31032,-3.04277 52.310327,-3.042779 52.310353,-3.042771 52.31038,-3.042746 52.310444,-3.042627 52.310704,-3.042601 52.310799,-3.042588 52.310846,-3.042588 52.310941,-3.042596 52.311007,-3.04261 52.311035,-3.04264 52.311099,-3.042646 52.311111,-3.042662 52.311134,-3.042681 52.311161,-3.042708 52.311199,-3.042792 52.311275,-3.042808 52.31129,-3.042908 52.311364,-3.04294 52.311385,-3.042996 52.311423,-3.043232 52.311542,-3.043424 52.311632,-3.043447 52.311641,-3.043452 52.311643,-3.043537 52.311677,-3.043725 52.311728,-3.043876 52.311759,-3.044048 52.311784,-3.044325 52.311813,-3.044963 52.31187,-3.045654 52.311927,-3.046044 52.31196,-3.04609 52.311963,-3.046235 52.311979,-3.046374 52.312015,-3.046477 52.312058,-3.046587 52.312109,-3.046654 52.312147,-3.046771 52.312228,-3.046962 52.312372,-3.047043 52.312443,-3.047089 52.312498,-3.04711 52.312547,-3.047112 52.312586,-3.047113 52.312607,-3.047105 52.312666,-3.047067 52.312722)",
+ "LINESTRING(-3.054162 52.34456,-3.054088 52.344534,-3.054014 52.344508,-3.053926 52.34449,-3.053823 52.344491,-3.053632 52.344493,-3.053368 52.344513,-3.053149 52.344551,-3.053076 52.34457,-3.053033 52.344588,-3.053003 52.344598)",
+ "LINESTRING(-3.032714 52.342934,-3.032658 52.342814,-3.032617 52.342701,-3.032583 52.342606,-3.032554 52.342502,-3.032517 52.342439,-3.032453 52.34233,-3.032374 52.3422,-3.032325 52.342121,-3.032288 52.342056,-3.032252 52.342028)",
+ "LINESTRING(-3.041066 52.338221,-3.040547 52.33801,-3.040399 52.337939,-3.040398 52.337921,-3.040427 52.337894,-3.040456 52.337867,-3.040499 52.337849)",
+ "LINESTRING(-3.044091 52.565713,-3.044077 52.565734,-3.044071 52.565742,-3.044028 52.565796,-3.043992 52.565879,-3.043952 52.565959,-3.043915 52.566,-3.043857 52.56604,-3.043741 52.566113,-3.043492 52.566223,-3.042615 52.566563,-3.042425 52.566646,-3.042294 52.566683,-3.041932 52.566745,-3.041648 52.566791,-3.041445 52.566841,-3.041226 52.566924,-3.041066 52.566992,-3.04089 52.567056,-3.040865 52.56708,-3.040858 52.5671,-3.040879 52.567118,-3.040944 52.567135,-3.041034 52.567137,-3.041288 52.567141,-3.041822 52.567144,-3.042107 52.567134,-3.042245 52.567142,-3.04229 52.56715,-3.042558 52.567247,-3.042736 52.56729,-3.042918 52.567326,-3.043082 52.567338,-3.043388 52.567401,-3.043848 52.567532,-3.043908 52.567568,-3.043923 52.567577,-3.043938 52.567603,-3.04394 52.567657,-3.043941 52.567711,-3.043895 52.56798,-3.043869 52.568115,-3.043868 52.568138,-3.043869 52.568158)",
+ "LINESTRING(-3.039713 52.536795,-3.039808 52.536825,-3.039958 52.536844,-3.040172 52.536885,-3.040322 52.536924,-3.040476 52.536964,-3.04061 52.536989,-3.040678 52.536992,-3.040773 52.536986,-3.040949 52.536958,-3.041148 52.536905,-3.041312 52.536857,-3.041544 52.536777,-3.04173 52.536705,-3.041942 52.536634,-3.042081 52.5366,-3.042204 52.53659,-3.042324 52.536587,-3.042414 52.536591,-3.042491 52.536598,-3.042595 52.536619,-3.042767 52.536683,-3.042916 52.536749,-3.043007 52.536786,-3.043108 52.5368)",
+ "LINESTRING(-3.049078 52.571837,-3.049229 52.571855,-3.04964 52.571857,-3.049841 52.571858,-3.049967 52.571873,-3.05006 52.571903,-3.050094 52.571922,-3.050135 52.57194,-3.050228 52.571958,-3.05033 52.571969,-3.050391 52.571987,-3.050413 52.572027,-3.050421 52.572072,-3.050386 52.572205)",
+ "LINESTRING(-2.983733 52.233609,-2.98371 52.233684,-2.983736 52.233793,-2.98379 52.233906,-2.983869 52.233994,-2.984058 52.234121,-2.984225 52.234228,-2.984382 52.234341,-2.984557 52.234481,-2.984695 52.234575,-2.984716 52.234589,-2.984758 52.234617,-2.984943 52.234694,-2.984978 52.234706,-2.985031 52.234722,-2.98506 52.234731,-2.985343 52.234799,-2.985594 52.234867,-2.985755 52.234917,-2.986071 52.23497,-2.9863 52.235006,-2.986458 52.235044,-2.986602 52.235109,-2.987015 52.23534,-2.987215 52.235464,-2.987423 52.235617,-2.987637 52.235785,-2.987968 52.23602,-2.988192 52.236213,-2.988438 52.236386,-2.988512 52.236449,-2.988579 52.236505,-2.98865 52.236583,-2.98869 52.236656,-2.988721 52.236744,-2.988612 52.236848,-2.988548 52.236932,-2.988497 52.237107,-2.988432 52.237336,-2.988372 52.237567,-2.98833 52.237709,-2.988286 52.23788,-2.988233 52.23807,-2.988249 52.238145,-2.988291 52.238321,-2.988323 52.238505,-2.988379 52.238624,-2.988435 52.238727,-2.988438 52.238732,-2.988466 52.238777,-2.988485 52.238809,-2.988525 52.238854,-2.98858 52.238916,-2.988715 52.239098,-2.988806 52.239204,-2.988865 52.239275,-2.988962 52.239393,-2.989045 52.239474,-2.989244 52.239629,-2.989254 52.239636,-2.989273 52.239649,-2.989508 52.239816,-2.989534 52.239835,-2.989747 52.23998,-2.989769 52.239996,-2.98982 52.240033,-2.989843 52.240055,-2.989949 52.240152,-2.989956 52.240159,-2.99002 52.240248,-2.990074 52.240334,-2.990079 52.24034,-2.990089 52.240357,-2.990106 52.240401,-2.99015 52.240512,-2.990268 52.240793,-2.990336 52.24095,-2.990425 52.241123,-2.990472 52.241198,-2.990617 52.241383,-2.990723 52.241527,-2.990784 52.241601,-2.990811 52.241633,-2.990859 52.241753,-2.990892 52.241854,-2.99094 52.241995,-2.990947 52.242025,-2.990958 52.24207,-2.991023 52.242175,-2.991122 52.242333,-2.991202 52.242485,-2.991276 52.242624,-2.991408 52.242809,-2.991639 52.2431,-2.99172 52.243202,-2.991734 52.243222,-2.991897 52.243461,-2.991944 52.243547,-2.992072 52.243781,-2.992267 52.244138,-2.992431 52.244408,-2.992503 52.244532,-2.992657 52.244802,-2.992761 52.245063,-2.9928 52.245305,-2.992813 52.245622,-2.992822 52.245701,-2.99281 52.245784,-2.992793 52.245867,-2.992771 52.245927,-2.992736 52.245978,-2.992646 52.246076,-2.992573 52.246144,-2.992455 52.246276,-2.992316 52.246468,-2.992432 52.246557,-2.99253 52.246568,-2.992901 52.246565,-2.993581 52.246527,-2.993926 52.246509,-2.994191 52.246514)",
+ "LINESTRING(-3.012501 52.228425,-3.012694 52.22837,-3.012848 52.228308,-3.012946 52.22824,-3.013055 52.228146,-3.013123 52.228048,-3.013182 52.227904,-3.013242 52.227742,-3.013269 52.227632,-3.01327 52.227553,-3.013245 52.227479,-3.013151 52.227332,-3.013072 52.227223,-3.012938 52.227095,-3.012779 52.226936,-3.01271 52.226867,-3.012639 52.226817,-3.012452 52.226743,-3.012278 52.226685,-3.01201 52.226616,-3.011707 52.226519,-3.011541 52.226458,-3.011388 52.22638,-3.011334 52.226352,-3.011111 52.226206,-3.010983 52.226107,-3.010893 52.226012,-3.010832 52.225905,-3.010825 52.225845,-3.010841 52.225687,-3.010858 52.225516,-3.010857 52.225451,-3.010844 52.225405,-3.010747 52.225247,-3.01062 52.225123,-3.010467 52.224893,-3.010372 52.224658)",
+ "LINESTRING(-2.998218 52.230123,-2.998074 52.230203,-2.998066 52.230206,-2.997957 52.230258,-2.997863 52.230302,-2.997049 52.230561,-2.996351 52.230783,-2.995741 52.230976,-2.995552 52.231032)",
+ "LINESTRING(-3.005291 52.231131,-3.005218 52.2312,-3.005076 52.23132,-3.004901 52.231443,-3.004725 52.231551,-3.004586 52.231621,-3.004439 52.231667,-3.004381 52.231685,-3.004236 52.231693,-3.004106 52.231684,-3.003877 52.231653,-3.003705 52.231618,-3.003613 52.231587,-3.003529 52.231549,-3.003019 52.231279,-3.002922 52.231244,-3.002789 52.231196,-3.002657 52.231144,-3.002492 52.231112,-3.002372 52.231091,-3.002239 52.231073,-3.001708 52.231062,-3.001596 52.231053,-3.000959 52.230853,-3.000714 52.230758,-3.00005 52.2305,-2.999016 52.230131,-2.999001 52.230122)",
+ "LINESTRING(-3.031075 52.22385,-3.030809 52.223579,-3.030424 52.223207,-3.030212 52.222931,-3.030013 52.222764,-3.029721 52.222584,-3.029469 52.222443,-3.029218 52.222319,-3.028886 52.222187,-3.028859 52.222176,-3.028815 52.222158,-3.028563 52.222016,-3.028462 52.221945,-3.028407 52.221881,-3.028351 52.22179,-3.028301 52.221718,-3.028203 52.221601,-3.028151 52.221552,-3.027982 52.221422,-3.027871 52.221353,-3.027755 52.221293,-3.027573 52.22121,-3.027493 52.221179,-3.027463 52.221165,-3.027147 52.221065,-3.027045 52.221039,-3.026812 52.220989,-3.026691 52.220968,-3.026602 52.220957,-3.026111 52.220898,-3.025715 52.220861,-3.025332 52.220842,-3.025011 52.220845,-3.024587 52.220849,-3.024339 52.220869,-3.024213 52.220881,-3.024103 52.220905,-3.023904 52.220966,-3.023687 52.221027,-3.023575 52.221054,-3.023409 52.221077,-3.023317 52.221072,-3.023259 52.221049,-3.023028 52.220905,-3.022859 52.220819,-3.022799 52.220774,-3.022739 52.220688)",
+ "LINESTRING(-3.005281 52.202464,-3.005919 52.202654,-3.006134 52.202718,-3.007138 52.202939,-3.007725 52.20309)",
+ "LINESTRING(-3.003371 52.210074,-3.003224 52.21001,-3.003195 52.209997,-3.003094 52.209988,-3.003007 52.209981,-3.002994 52.20998,-3.002952 52.209994,-3.002853 52.210026,-3.002667 52.210068,-3.002566 52.21008,-3.002539 52.210084,-3.002326 52.210102,-3.002318 52.210103,-3.00231 52.210104,-3.002164 52.210134,-3.001964 52.21022,-3.001792 52.210359)",
+ "LINESTRING(-2.968498 52.185726,-2.968594 52.185677,-2.968762 52.185642,-2.968969 52.185608,-2.969272 52.185575,-2.970091 52.185526,-2.970473 52.185443,-2.971035 52.185384,-2.971959 52.185251,-2.972754 52.185111,-2.973037 52.185044,-2.973168 52.185016,-2.973851 52.184803,-2.97401 52.184739,-2.974271 52.184602,-2.974856 52.184364,-2.97488 52.184356,-2.975153 52.184265,-2.975391 52.184212,-2.975741 52.184173,-2.97598 52.184125,-2.976288 52.184004,-2.976831 52.183673,-2.977132 52.183471,-2.977414 52.183259,-2.977612 52.183012,-2.978006 52.182385,-2.978157 52.182251,-2.97863 52.181886)",
+ "LINESTRING(-2.898438 52.177673,-2.897173 52.178057,-2.896867 52.178131,-2.89675 52.178159,-2.896383 52.178233,-2.896087 52.178291,-2.895818 52.178337,-2.895512 52.178384,-2.895118 52.178441,-2.894593 52.178499,-2.894339 52.178519,-2.894317 52.178514,-2.894308 52.178511,-2.894282 52.178504,-2.894217 52.178425,-2.894159 52.178354,-2.894028 52.178134,-2.894001 52.178031,-2.893855 52.177495,-2.893851 52.177478,-2.893683 52.17713,-2.893553 52.176988,-2.893238 52.176731,-2.893127 52.176628,-2.892918 52.176433,-2.892613 52.176056,-2.892122 52.175233,-2.892067 52.175113,-2.891895 52.174561,-2.891781 52.174335,-2.891634 52.174134,-2.891492 52.17394,-2.891344 52.173699,-2.891083 52.173401,-2.89083 52.173169,-2.890577 52.172964,-2.890468 52.172913,-2.890384 52.172882,-2.890276 52.172865,-2.890107 52.17286,-2.890063 52.172851,-2.889975 52.172834,-2.889808 52.17278,-2.889709 52.172725,-2.889451 52.172532,-2.88907 52.172247,-2.888619 52.171957,-2.888574 52.171916)",
+ "LINESTRING(-3.001027 52.270697,-3.001233 52.270714,-3.00157 52.270711,-3.001614 52.270715,-3.001658 52.270719,-3.001746 52.270736,-3.002 52.270828)",
+ "LINESTRING(-3.002514 52.270973,-3.002616 52.270954,-3.00282 52.270916,-3.002878 52.27088,-3.002978 52.270771,-3.003022 52.270752,-3.003066 52.270743,-3.003124 52.270734)",
+ "LINESTRING(-2.944639 52.25447,-2.944459 52.254529,-2.944255 52.254603,-2.944087 52.254655,-2.943732 52.254787,-2.943453 52.25489,-2.943209 52.254982,-2.943098 52.255011,-2.942917 52.255063,-2.94283 52.255093,-2.94258 52.255195,-2.942226 52.255335,-2.942051 52.255401,-2.941816 52.255507,-2.941631 52.255602,-2.941497 52.255668,-2.941335 52.255741,-2.941207 52.2558,-2.941149 52.255815,-2.941074 52.255876,-2.94107 52.255945,-2.941106 52.255995,-2.941153 52.256023,-2.94152 52.25616,-2.941797 52.256259,-2.94205 52.256349,-2.9425 52.256509,-2.942615 52.256533,-2.942714 52.256543,-2.94282 52.256546,-2.943027 52.256522,-2.943226 52.256496,-2.943459 52.256443,-2.943774 52.256373,-2.944095 52.256291,-2.944325 52.256228,-2.944471 52.256187,-2.94475 52.256106,-2.944948 52.256054,-2.945042 52.256035,-2.945176 52.256027,-2.945305 52.256026,-2.94547 52.256032,-2.945731 52.256048,-2.945977 52.256064,-2.94623 52.256087,-2.946353 52.256107,-2.94647 52.256139,-2.946483 52.256142,-2.946595 52.256185,-2.946689 52.256202,-2.946889 52.256233,-2.946994 52.256232)",
+ "LINESTRING(-2.983733 52.233609,-2.98371 52.233684,-2.983736 52.233793,-2.98379 52.233906,-2.983869 52.233994,-2.984058 52.234121,-2.984225 52.234228,-2.984382 52.234341,-2.984557 52.234481,-2.984695 52.234575,-2.984716 52.234589,-2.984758 52.234617,-2.984943 52.234694,-2.984978 52.234706,-2.985031 52.234722,-2.98506 52.234731,-2.985343 52.234799,-2.985594 52.234867,-2.985755 52.234917,-2.986071 52.23497,-2.9863 52.235006,-2.986458 52.235044,-2.986602 52.235109,-2.987015 52.23534,-2.987215 52.235464,-2.987423 52.235617,-2.987637 52.235785,-2.987968 52.23602,-2.988192 52.236213,-2.988438 52.236386,-2.988512 52.236449,-2.988579 52.236505,-2.98865 52.236583,-2.98869 52.236656,-2.988721 52.236744,-2.988612 52.236848,-2.988548 52.236932,-2.988497 52.237107,-2.988432 52.237336,-2.988372 52.237567,-2.98833 52.237709,-2.988286 52.23788,-2.988233 52.23807,-2.988249 52.238145,-2.988291 52.238321,-2.988323 52.238505,-2.988379 52.238624,-2.988435 52.238727,-2.988438 52.238732,-2.988466 52.238777,-2.988485 52.238809,-2.988525 52.238854,-2.98858 52.238916,-2.988715 52.239098,-2.988806 52.239204,-2.988865 52.239275,-2.988962 52.239393,-2.989045 52.239474,-2.989244 52.239629,-2.989254 52.239636,-2.989273 52.239649,-2.989508 52.239816,-2.989534 52.239835,-2.989747 52.23998,-2.989769 52.239996,-2.98982 52.240033,-2.989843 52.240055,-2.989949 52.240152,-2.989956 52.240159,-2.99002 52.240248,-2.990074 52.240334,-2.990079 52.24034,-2.990089 52.240357,-2.990106 52.240401,-2.99015 52.240512,-2.990268 52.240793,-2.990336 52.24095,-2.990425 52.241123,-2.990472 52.241198,-2.990617 52.241383,-2.990723 52.241527,-2.990784 52.241601,-2.990811 52.241633,-2.990859 52.241753,-2.990892 52.241854,-2.99094 52.241995,-2.990947 52.242025,-2.990958 52.24207,-2.991023 52.242175,-2.991122 52.242333,-2.991202 52.242485,-2.991276 52.242624,-2.991408 52.242809,-2.991639 52.2431,-2.99172 52.243202,-2.991734 52.243222,-2.991897 52.243461,-2.991944 52.243547,-2.992072 52.243781,-2.992267 52.244138,-2.992431 52.244408,-2.992503 52.244532,-2.992657 52.244802,-2.992761 52.245063,-2.9928 52.245305,-2.992813 52.245622,-2.992822 52.245701,-2.99281 52.245784,-2.992793 52.245867,-2.992771 52.245927,-2.992736 52.245978,-2.992646 52.246076,-2.992573 52.246144,-2.992455 52.246276,-2.992316 52.246468,-2.992432 52.246557,-2.99253 52.246568,-2.992901 52.246565,-2.993581 52.246527,-2.993926 52.246509,-2.994191 52.246514)",
+ "LINESTRING(-2.96971 52.385285,-2.969713 52.385302,-2.969795 52.385527,-2.969832 52.385568,-2.969956 52.38576,-2.970018 52.385883,-2.970042 52.386056,-2.970042 52.386067,-2.970029 52.386343,-2.970014 52.386442,-2.970008 52.386483,-2.970029 52.386586,-2.970032 52.386601,-2.970046 52.38667,-2.970131 52.386944,-2.970207 52.387072,-2.970265 52.387126,-2.970375 52.387143,-2.970425 52.387133,-2.970477 52.387106,-2.970477 52.38709,-2.970472 52.386848,-2.970485 52.386677,-2.970516 52.386575,-2.970655 52.386395,-2.970876 52.386204,-2.971034 52.386111,-2.971198 52.386032,-2.971267 52.386004,-2.97138 52.385958,-2.971639 52.385807,-2.971826 52.385679,-2.972103 52.385586,-2.97241 52.385483,-2.972753 52.385377,-2.973047 52.385311,-2.973623 52.385203,-2.973844 52.385136,-2.974009 52.385057,-2.974682 52.384692,-2.97509 52.384475,-2.975346 52.384353,-2.975663 52.384199,-2.975822 52.384099,-2.976126 52.383856,-2.976248 52.383782,-2.976406 52.383709,-2.976808 52.383507,-2.97691 52.383452,-2.977112 52.383324,-2.977314 52.383143,-2.977415 52.383034,-2.977529 52.382898,-2.9776 52.382799,-2.977628 52.382736,-2.977656 52.382637,-2.977696 52.382474,-2.977693 52.38234,-2.977622 52.382209,-2.977479 52.382031,-2.977175 52.381694,-2.97694 52.381417,-2.976698 52.381146,-2.976623 52.381043,-2.976554 52.380924,-2.976446 52.380715,-2.976363 52.380584,-2.976241 52.380298,-2.976087 52.379831,-2.976036 52.379608,-2.976069 52.37928,-2.976091 52.378928,-2.976071 52.378613,-2.976035 52.378424,-2.975992 52.378395,-2.975901 52.378223,-2.975842 52.378095,-2.975834 52.37802,-2.975822 52.3779,-2.975776 52.377677,-2.97571 52.377473,-2.975613 52.377281,-2.975564 52.377153,-2.975519 52.376974,-2.975433 52.376805,-2.975342 52.376658,-2.975273 52.376573,-2.97521 52.376501,-2.975142 52.376448,-2.975027 52.376371,-2.975012 52.376362,-2.974887 52.376293,-2.974849 52.376237,-2.974917 52.37617,-2.97468 52.376055,-2.974513 52.375966,-2.974362 52.375877,-2.97431 52.375843,-2.974406 52.375776,-2.974582 52.37576,-2.974724 52.37574,-2.974958 52.375653,-2.975739 52.375344,-2.976395 52.37508,-2.976664 52.374976,-2.97683 52.374762)",
+ "LINESTRING(-2.997814 52.40448,-2.997576 52.404378,-2.997296 52.404275,-2.996941 52.404117,-2.99681 52.404059,-2.996536 52.40394,-2.996318 52.403882,-2.996251 52.403881,-2.995987 52.403877,-2.995775 52.403884,-2.995515 52.403893,-2.994131 52.403964,-2.993583 52.403996,-2.992706 52.404048,-2.991636 52.404103,-2.990507 52.404147,-2.990135 52.404129)",
+ "LINESTRING(-2.982697 52.39662,-2.98267 52.396548,-2.982609 52.396497,-2.982548 52.396461,-2.982336 52.396409,-2.981863 52.396237,-2.981625 52.396145,-2.981339 52.396039,-2.981101 52.395931,-2.980871 52.395818,-2.980433 52.395637,-2.979978 52.395444,-2.979797 52.395343,-2.979337 52.395045,-2.978829 52.394739,-2.978805 52.39471,-2.978742 52.394637,-2.978614 52.39454,-2.978484 52.394484,-2.978426 52.394459,-2.97776 52.394027,-2.977536 52.393867,-2.977492 52.393849,-2.977344 52.393805,-2.975869 52.393539,-2.975558 52.393469,-2.975307 52.393408,-2.975026 52.393312,-2.974937 52.393268,-2.974733 52.393166,-2.974573 52.393071,-2.974432 52.39302,-2.974284 52.392994,-2.97424 52.392995,-2.97399 52.392997,-2.973932 52.393006,-2.973771 52.393035)",
+ "LINESTRING(-2.953194 52.366719,-2.953507 52.366736,-2.95351 52.366736,-2.953908 52.366768,-2.954334 52.366791,-2.954562 52.366786,-2.954729 52.366779,-2.95522 52.366749,-2.955385 52.366757,-2.955502 52.366795,-2.955579 52.366826,-2.955921 52.366996,-2.956027 52.367056,-2.95617 52.367141,-2.956353 52.367269,-2.956449 52.367341,-2.956469 52.367356,-2.956512 52.367399,-2.956659 52.367549,-2.956776 52.367661,-2.956944 52.367788,-2.957149 52.367924,-2.95735 52.368033,-2.95769 52.368188,-2.957898 52.368266,-2.95797 52.368293,-2.958228 52.368394,-2.958339 52.368458,-2.958398 52.368522,-2.958431 52.368627,-2.958477 52.368714,-2.95853 52.368773,-2.958568 52.368816,-2.958702 52.368923,-2.958908 52.369053,-2.959013 52.369151,-2.959058 52.369195,-2.959133 52.369258)",
+ "LINESTRING(-2.966068 52.360895,-2.966222 52.360891,-2.966478 52.360892,-2.966667 52.360885,-2.966835 52.360892,-2.967243 52.360923,-2.967495 52.360948,-2.967636 52.360953,-2.968078 52.360941,-2.968299 52.360944,-2.968545 52.360956,-2.968642 52.36095,-2.968822 52.360921,-2.968959 52.360912,-2.96913 52.360911,-2.969356 52.36086,-2.969479 52.360843,-2.969638 52.360834,-2.969796 52.360838,-2.96996 52.360861,-2.970075 52.360884,-2.970228 52.360942,-2.970326 52.360979,-2.970397 52.361011,-2.970521 52.361026,-2.970653 52.361041,-2.97072 52.361051,-2.97083 52.361056,-2.970936 52.36106,-2.97094 52.361061,-2.971028 52.36107,-2.971061 52.361068,-2.971165 52.361061,-2.971173 52.361062,-2.971229 52.361066,-2.971282 52.361087,-2.97138 52.361148,-2.97159 52.361282,-2.971747 52.361379,-2.971835 52.361427,-2.97189 52.361457,-2.971956 52.361493,-2.972094 52.361559,-2.972336 52.361658,-2.972537 52.361748,-2.972635 52.361815,-2.972698 52.361858,-2.972796 52.361938,-2.972891 52.362013,-2.972933 52.362045,-2.973002 52.36209)",
+ "LINESTRING(-2.9647 52.372689,-2.964835 52.372426,-2.964879 52.372262,-2.964847 52.372112,-2.964788 52.372011,-2.964689 52.371911,-2.964426 52.371713,-2.964038 52.371527,-2.963476 52.371297,-2.962907 52.3711,-2.962814 52.371067,-2.962322 52.3709,-2.961904 52.370745,-2.9619 52.370744,-2.961896 52.370742,-2.961634 52.370672,-2.961628 52.370671,-2.961259 52.370618,-2.961135 52.370605,-2.961085 52.3706,-2.961086 52.370591,-2.961095 52.370497,-2.961096 52.370488,-2.961121 52.370455,-2.96131 52.370209,-2.961519 52.369984,-2.961685 52.369803,-2.96174 52.369743,-2.961792 52.369643,-2.961827 52.369523,-2.961869 52.369469)",
+ "LINESTRING(-2.991736 52.342846,-2.991747 52.342813,-2.991756 52.342764,-2.991745 52.342628,-2.991739 52.342554,-2.991732 52.342531,-2.991722 52.342499,-2.991718 52.342485,-2.991714 52.342478,-2.9917 52.342451,-2.99169 52.342431,-2.991614 52.342342,-2.991594 52.342322,-2.991511 52.342239,-2.991321 52.34207,-2.991234 52.341994,-2.991138 52.341912,-2.99098 52.34178,-2.990834 52.34166,-2.990727 52.341549,-2.990648 52.341466,-2.990603 52.341414,-2.990584 52.341391,-2.990528 52.341311,-2.990484 52.341226,-2.990471 52.341181)",
+ "LINESTRING(-2.981095 52.339053,-2.981289 52.3392,-2.981405 52.339277,-2.981642 52.339412,-2.981862 52.339531,-2.98203 52.339615,-2.982129 52.339653,-2.982253 52.339691,-2.982421 52.33973,-2.982601 52.339756,-2.982838 52.339782,-2.982943 52.339791,-2.983192 52.339812,-2.983421 52.339829,-2.983576 52.339841,-2.983713 52.339838,-2.983942 52.339827,-2.984066 52.339821,-2.984197 52.339814,-2.984359 52.339813,-2.984503 52.339822,-2.984523 52.339825,-2.984641 52.339843,-2.984781 52.339878,-2.984989 52.33993,-2.985142 52.339976,-2.98533 52.340048,-2.98545 52.340101,-2.985793 52.340305,-2.986179 52.340517,-2.987262 52.341021,-2.987502 52.341139,-2.987993 52.341405,-2.98828 52.341552,-2.988419 52.341614,-2.988615 52.341683,-2.988796 52.34174,-2.989201 52.34185,-2.98978 52.342006,-2.989938 52.342049,-2.990297 52.342157,-2.990544 52.342244,-2.99059 52.342263,-2.990618 52.342275,-2.990752 52.342331,-2.990972 52.342441,-2.991182 52.342569,-2.991334 52.34268,-2.991462 52.34278,-2.991575 52.342877)",
+ "LINESTRING(-2.978378 52.326615,-2.97858 52.326744,-2.978935 52.326903,-2.979113 52.326964,-2.98031 52.327377,-2.98094 52.327552,-2.981104 52.3276,-2.981291 52.327676,-2.981642 52.327824,-2.981986 52.327972,-2.982377 52.328139,-2.982546 52.328208,-2.982722 52.328274,-2.982959 52.328344,-2.983549 52.328502,-2.983608 52.328518,-2.983888 52.328588,-2.984434 52.328711,-2.984582 52.328744,-2.985255 52.328894)",
+ "LINESTRING(-2.943084 52.483843,-2.943363 52.483805,-2.943509 52.483777,-2.943656 52.483749,-2.943861 52.483702,-2.946632 52.483131,-2.946734 52.483095,-2.946799 52.483048,-2.946915 52.482932,-2.946924 52.482923,-2.947675 52.481978,-2.947651 52.481577)",
+ "LINESTRING(-2.953071 52.469338,-2.953299 52.469326,-2.953594 52.469323,-2.953639 52.469322,-2.953712 52.469319,-2.953768 52.469307,-2.95379 52.469286,-2.953798 52.469217,-2.953806 52.46915,-2.953821 52.469024,-2.953855 52.468907,-2.953909 52.468773,-2.953968 52.468659,-2.954018 52.468562,-2.954068 52.468403,-2.954076 52.46835)",
+ "LINESTRING(-2.916212 52.483947,-2.91619 52.483345,-2.916182 52.48319,-2.916111 52.48314,-2.915883 52.483029,-2.915722 52.482945,-2.915568 52.482864,-2.915468 52.4828,-2.915327 52.482683,-2.915234 52.482569,-2.915128 52.482414,-2.915013 52.482195,-2.914907 52.48201,-2.914737 52.481759,-2.914614 52.481537,-2.914521 52.481405,-2.914382 52.481233,-2.914305 52.481106,-2.914271 52.481006,-2.914213 52.480799,-2.914163 52.480589,-2.914093 52.480359,-2.914032 52.480197,-2.913985 52.480069,-2.913891 52.479905,-2.913802 52.479758,-2.913734 52.479661,-2.913625 52.479521,-2.913468 52.479309,-2.913381 52.479147,-2.913312 52.478929,-2.913259 52.478706,-2.913218 52.478303,-2.913225 52.478168,-2.913255 52.478098,-2.913311 52.478047,-2.913425 52.477985,-2.913772 52.477823,-2.914284 52.477584,-2.914879 52.477304,-2.915429 52.477045,-2.915857 52.476856,-2.915888 52.476843,-2.916396 52.476614,-2.916883 52.476387,-2.917208 52.476227,-2.917382 52.476128,-2.917702 52.47591,-2.917998 52.475688,-2.918258 52.475444,-2.918358 52.475335,-2.918513 52.475115,-2.918572 52.474971,-2.918603 52.474853,-2.918636 52.474674,-2.918663 52.47453,-2.91872 52.474392,-2.918813 52.474244)",
+ "LINESTRING(-2.919312 52.439208,-2.919221 52.439125,-2.919125 52.43902,-2.919047 52.438938,-2.918999 52.438881,-2.918932 52.438799,-2.918872 52.438731,-2.918806 52.438649,-2.918698 52.438542,-2.918601 52.438445,-2.918499 52.438349,-2.918451 52.438292,-2.918439 52.438256,-2.918376 52.438088,-2.918314 52.437944,-2.918234 52.437751,-2.918185 52.437647,-2.918111 52.437478,-2.918055 52.437349,-2.918005 52.437213,-2.917956 52.437109,-2.917925 52.437023,-2.9179 52.43698,-2.917864 52.436926,-2.917809 52.436844,-2.917742 52.436751,-2.917724 52.436719,-2.917693 52.436644,-2.917668 52.436583,-2.917572 52.436479,-2.91747 52.436365,-2.917331 52.436215,-2.917139 52.436033,-2.917043 52.435915,-2.916953 52.435851,-2.916768 52.435712,-2.916576 52.435559,-2.916332 52.435417,-2.916082 52.435279,-2.915838 52.435151,-2.915684 52.435073,-2.915559 52.43501,-2.915481 52.434949,-2.915403 52.434892,-2.915349 52.434824,-2.9153 52.434756,-2.915258 52.434688,-2.915228 52.434645,-2.915186 52.434572,-2.915155 52.434498,-2.915139 52.434444,-2.915139 52.43442,-2.915138 52.434417,-2.915139 52.434415,-2.91516 52.434369,-2.915165 52.434358,-2.915181 52.434324,-2.915231 52.43426,-2.915311 52.434181,-2.915369 52.434138,-2.915495 52.434062,-2.91564 52.433982,-2.915832 52.433884,-2.916101 52.433748,-2.916287 52.433654,-2.916591 52.43349,-2.916911 52.433308,-2.917317 52.433053,-2.917607 52.432862,-2.918043 52.432589,-2.918319 52.432407,-2.91859 52.432242,-2.918741 52.43214,-2.918915 52.43202,-2.919031 52.431948,-2.919164 52.431846,-2.91935 52.4317,-2.919518 52.431584,-2.919732 52.43141,-2.919836 52.431326,-2.920015 52.431156,-2.920147 52.431018,-2.920192 52.430928,-2.920225 52.430809,-2.920223 52.43068,-2.92019 52.430536,-2.920104 52.430342,-2.920006 52.430149,-2.919897 52.429995,-2.919775 52.429802,-2.91972 52.429727,-2.919612 52.429616,-2.919503 52.429521,-2.919419 52.429431,-2.918939 52.429004,-2.918704 52.42882,-2.918615 52.428748,-2.918495 52.428652,-2.918399 52.428585,-2.918197 52.428464,-2.91803 52.428365,-2.917685 52.428162,-2.917572 52.428098,-2.917458 52.428024,-2.917214 52.427882,-2.917012 52.427772,-2.916822 52.427687,-2.916679 52.427623,-2.916631 52.427591,-2.916617 52.427566,-2.916582 52.427504,-2.91651 52.427356)",
+ "LINESTRING(-2.947531 52.452306,-2.947455 52.452225,-2.947258 52.452046,-2.947076 52.45192,-2.946897 52.451781,-2.946825 52.451714,-2.946704 52.451592,-2.946619 52.451467,-2.946503 52.451249,-2.946459 52.451116,-2.946407 52.450915,-2.946378 52.450667,-2.946375 52.45052,-2.946369 52.450229,-2.946394 52.450034,-2.946421 52.449922,-2.946465 52.44976,-2.946549 52.449573,-2.946633 52.449371,-2.946715 52.449246,-2.947034 52.448702,-2.94729 52.448297,-2.947489 52.447958,-2.94775 52.447531,-2.947921 52.447256,-2.948205 52.446801,-2.948314 52.446631,-2.948518 52.446295,-2.948569 52.446201,-2.948642 52.446042,-2.948715 52.445855,-2.948821 52.445591,-2.948888 52.445408,-2.948953 52.445166,-2.948951 52.445083,-2.948944 52.445001,-2.948888 52.444902,-2.948786 52.444799,-2.948738 52.444734,-2.94869 52.444649,-2.948687 52.444493)",
+ "LINESTRING(-2.984196 52.486523,-2.984457 52.486368,-2.984901 52.486099,-2.985548 52.4857,-2.985908 52.48547,-2.986144 52.485334,-2.986369 52.485187,-2.986479 52.485104,-2.986539 52.485057,-2.986632 52.485021,-2.986663 52.485009,-2.986728 52.485002,-2.986917 52.485008,-2.986978 52.485013,-2.987559 52.485093,-2.987778 52.485123,-2.987914 52.485143,-2.988009 52.485137,-2.988065 52.485122,-2.988137 52.485085,-2.988211 52.485037,-2.988273 52.484995,-2.98831 52.484979)",
+ "LINESTRING(-2.995145 52.490812,-2.995121 52.49082,-2.995106 52.490825,-2.995003 52.490841)",
+ "LINESTRING(-2.987242 52.435163,-2.987322 52.435211,-2.987423 52.435307,-2.98768 52.435622,-2.987945 52.435949,-2.988222 52.436339,-2.988312 52.436495,-2.988352 52.436544,-2.988361 52.436555,-2.988405 52.436579,-2.988465 52.436592,-2.988548 52.436586,-2.988625 52.436547,-2.988673 52.436501,-2.988917 52.436278,-2.989057 52.43615,-2.989383 52.435896,-2.989453 52.435863,-2.989572 52.435828,-2.989748 52.435819,-2.990029 52.435835,-2.990331 52.435876,-2.990701 52.435933,-2.990873 52.435968,-2.990993 52.435992,-2.991047 52.436006,-2.991327 52.436078,-2.992217 52.436386,-2.992457 52.436462,-2.992636 52.436531,-2.992846 52.436578,-2.993009 52.436622,-2.993203 52.436691,-2.993324 52.436736,-2.99351 52.436806,-2.993735 52.436909,-2.993967 52.43702,-2.994208 52.437165,-2.994378 52.437262,-2.994486 52.437308,-2.994589 52.437341,-2.994683 52.43736,-2.994729 52.437357,-2.994784 52.437355,-2.994838 52.437352,-2.994951 52.437331,-2.995025 52.437296,-2.995207 52.437212,-2.995258 52.437194,-2.995512 52.43715,-2.995565 52.437141,-2.995813 52.437096,-2.995912 52.437047,-2.996021 52.436998)",
+ "LINESTRING(-3.029102 52.479538,-3.029049 52.479509,-3.028994 52.479479,-3.028888 52.479419,-3.028646 52.47933,-3.028348 52.479265,-3.028073 52.479214,-3.02755 52.479103,-3.027262 52.47905,-3.027073 52.479053,-3.026789 52.479067,-3.026518 52.47907,-3.026262 52.479053,-3.025955 52.479011,-3.025684 52.47899,-3.025529 52.478978,-3.025097 52.478974,-3.024128 52.47895,-3.023829 52.478945,-3.023721 52.478946,-3.023507 52.478953,-3.023167 52.478975,-3.022985 52.478992,-3.02261 52.479015,-3.021561 52.479059,-3.020843 52.479097,-3.020462 52.47911,-3.020266 52.479114,-3.020121 52.479106,-3.019963 52.47908,-3.019725 52.479036,-3.01932 52.478968,-3.018772 52.478867,-3.018526 52.478829,-3.018251 52.478814,-3.017985 52.478774,-3.017884 52.478751,-3.017605 52.478673,-3.017112 52.478514,-3.016597 52.478347,-3.016245 52.478223,-3.015841 52.478072,-3.015526 52.477969,-3.015358 52.477924,-3.014825 52.477794,-3.014565 52.47771,-3.014336 52.477613,-3.014103 52.4775,-3.013876 52.47739,-3.01364 52.477248,-3.013381 52.4771,-3.013161 52.476988,-3.013064 52.476926)",
+ "LINESTRING(-3.008701 52.44449,-3.008806 52.444489,-3.008871 52.444477,-3.00893 52.444439,-3.008992 52.444367,-3.009041 52.444272,-3.009049 52.444253,-3.009086 52.444167,-3.009098 52.444151,-3.009134 52.444105,-3.009155 52.444079,-3.009207 52.444041,-3.009221 52.444037,-3.009296 52.444019,-3.009444 52.444016,-3.009517 52.444026,-3.009602 52.444065,-3.009694 52.444138,-3.009901 52.444328,-3.010028 52.444423,-3.010179 52.444535,-3.010234 52.444616,-3.010236 52.4447,-3.01023 52.444761,-3.010174 52.444835,-3.009969 52.445065,-3.009889 52.445178,-3.009855 52.445256,-3.009839 52.445333,-3.009853 52.445429,-3.009877 52.445498,-3.010006 52.445802,-3.010081 52.445987,-3.010137 52.446124,-3.010162 52.446161,-3.010229 52.446251,-3.010268 52.446287,-3.010294 52.446311,-3.010299 52.446313,-3.010328 52.446328,-3.010406 52.446368,-3.010632 52.446455,-3.010819 52.446526,-3.011086 52.446642,-3.011376 52.446774,-3.011647 52.446917,-3.011727 52.446963,-3.011901 52.447061,-3.012048 52.447139,-3.012145 52.447179,-3.012182 52.447194,-3.012277 52.447234,-3.01243 52.447287,-3.012658 52.447348,-3.012779 52.447373,-3.012893 52.447397,-3.012977 52.447417,-3.012991 52.447421,-3.013064 52.447438,-3.013156 52.447476,-3.013197 52.447503,-3.013264 52.447547,-3.013364 52.447637,-3.013408 52.447677,-3.013462 52.447734,-3.013562 52.447839,-3.013753 52.448031,-3.013818 52.44808,-3.013951 52.44818,-3.014102 52.448282,-3.014287 52.448381,-3.014469 52.448466,-3.014688 52.44857,-3.014982 52.448692,-3.015141 52.448747,-3.015189 52.448758,-3.015261 52.448775,-3.015477 52.448805,-3.015627 52.448814,-3.015683 52.448818,-3.015766 52.448816,-3.01584 52.448814,-3.015968 52.44881,-3.016098 52.448795,-3.016222 52.44878,-3.016235 52.448779,-3.016315 52.448758,-3.0164 52.448737,-3.016504 52.44871,-3.016553 52.448693,-3.016907 52.44857,-3.01692 52.448565,-3.017298 52.448432,-3.017657 52.448308,-3.018457 52.448028,-3.018735 52.447925,-3.019186 52.447718,-3.019297 52.447667,-3.019504 52.447573,-3.019691 52.447485,-3.020021 52.447306,-3.02034 52.447097,-3.020412 52.447042,-3.020528 52.446951,-3.020585 52.446897,-3.0207 52.446752,-3.02077 52.446625,-3.020854 52.446427,-3.020881 52.446319,-3.02093 52.446112,-3.020953 52.446002,-3.020959 52.445992,-3.02098 52.445958,-3.021035 52.445909,-3.021088 52.445881,-3.021142 52.445861,-3.021244 52.445841,-3.021316 52.445845,-3.021396 52.445857,-3.021469 52.445882,-3.021555 52.445938,-3.021636 52.446023,-3.02173 52.446141,-3.021988 52.446453,-3.022105 52.44658,-3.022157 52.446676,-3.022161 52.446683,-3.022195 52.446757,-3.022211 52.446841,-3.022242 52.447147,-3.022262 52.447328,-3.022289 52.4474,-3.022322 52.447442,-3.02234 52.447465,-3.022449 52.44753,-3.022566 52.447562,-3.022722 52.447581,-3.022849 52.447588,-3.023013 52.447578,-3.023241 52.447549,-3.02373 52.447493,-3.023942 52.447483)",
+ "LINESTRING(-2.888846 52.559077,-2.888526 52.559015,-2.8881 52.558936,-2.887961 52.558894,-2.887797 52.55883,-2.887612 52.558738,-2.887359 52.558609,-2.887079 52.558467,-2.886905 52.558368,-2.886651 52.558193,-2.886535 52.55806,-2.886397 52.55782,-2.886355 52.557709,-2.886353 52.557593,-2.886389 52.557524,-2.886442 52.55749,-2.886469 52.557473,-2.886648 52.557357,-2.886851 52.557271,-2.887098 52.557196,-2.887359 52.557129,-2.887542 52.557082,-2.887792 52.557048,-2.88827 52.557015,-2.888439 52.556996,-2.888542 52.55699,-2.889071 52.556911,-2.889527 52.556827,-2.889674 52.556817,-2.889807 52.556843,-2.890283 52.55701,-2.890685 52.557196,-2.890908 52.557302,-2.891384 52.557487)",
+ "LINESTRING(-3.001325 52.540011,-3.001671 52.540197,-3.002042 52.540409,-3.002262 52.540556,-3.002374 52.540609,-3.002493 52.54064,-3.002832 52.540729,-3.00343 52.540875,-3.00422 52.541066,-3.004733 52.54121,-3.004769 52.541221,-3.004913 52.54127,-3.005031 52.541311,-3.005047 52.541327,-3.005244 52.541459,-3.005596 52.541763,-3.006017 52.542175,-3.006452 52.542614,-3.006565 52.542732,-3.006843 52.542953,-3.006847 52.542957,-3.006998 52.543117,-3.007013 52.54314,-3.007085 52.543249,-3.007161 52.543314,-3.007272 52.54334,-3.007546 52.543391,-3.007698 52.543446,-3.007879 52.543533,-3.007883 52.543536,-3.008032 52.543626,-3.008038 52.54363,-3.008144 52.543722,-3.008188 52.543761,-3.008298 52.543868,-3.008317 52.543886,-3.008438 52.54404,-3.008465 52.544087,-3.008538 52.544214,-3.008612 52.544387,-3.008682 52.544563)",
+ "LINESTRING(-3.011001 52.573086,-3.012121 52.572393,-3.01401 52.571244,-3.014085 52.571198,-3.014816 52.570754,-3.014951 52.570672,-3.015417 52.570455,-3.015886 52.570226,-3.016029 52.570153,-3.016323 52.569987,-3.016482 52.569904,-3.016585 52.569854,-3.016815 52.569735,-3.016974 52.56964,-3.017033 52.569586,-3.017063 52.569502,-3.017065 52.569402,-3.017007 52.569243,-3.016987 52.569186,-3.016885 52.568864,-3.016852 52.568756)",
+ "LINESTRING(-3.015129 52.575841,-3.015019 52.575829,-3.014945 52.575821,-3.014885 52.575812,-3.014782 52.575786,-3.014678 52.57576,-3.014574 52.575734,-3.01447 52.575717,-3.014445 52.575713,-3.014381 52.5757,-3.0142 52.575673,-3.013943 52.575639,-3.013602 52.575603)",
+ "LINESTRING(-3.019494 52.52701,-3.019262 52.527165,-3.01868 52.527548,-3.018282 52.52781,-3.01832 52.527865,-3.018397 52.528008,-3.018519 52.528205,-3.018731 52.528464,-3.018942 52.528642,-3.019077 52.52874,-3.019108 52.528766,-3.019393 52.529033,-3.019454 52.529105,-3.01956 52.529248,-3.019938 52.52977,-3.020112 52.529971,-3.020139 52.530025,-3.020088 52.530084,-3.020002 52.530183,-3.019925 52.530293)",
+ "LINESTRING(-2.740076 52.23265,-2.740031 52.232641,-2.739944 52.232642,-2.739856 52.232643,-2.739753 52.232652,-2.739637 52.23268,-2.739535 52.232734,-2.739506 52.232762,-2.739406 52.232888,-2.739377 52.232906,-2.739333 52.232934,-2.73929 52.232952,-2.739217 52.232961,-2.739071 52.232971,-2.738968 52.232981)",
+ "LINESTRING(-2.74881 52.228926,-2.748782 52.228995,-2.748772 52.229095,-2.748813 52.229324,-2.74882 52.229329,-2.7489 52.22938,-2.748952 52.229431,-2.748997 52.229574,-2.749054 52.229656,-2.74907 52.229679,-2.749201 52.229778)",
+ "LINESTRING(-2.762382 52.225983,-2.7627 52.225925,-2.763153 52.225859,-2.763517 52.225776,-2.763912 52.225686)",
+ "LINESTRING(-2.798257 52.212656,-2.798231 52.212824,-2.798217 52.212861,-2.798145 52.212924,-2.797348 52.213361,-2.79711 52.21347,-2.796976 52.213514,-2.796803 52.213559,-2.796593 52.213602,-2.796416 52.213631,-2.796137 52.213677,-2.795965 52.213701,-2.795794 52.213715,-2.795591 52.213721,-2.79543 52.21372,-2.795302 52.213724,-2.795172 52.213737,-2.795033 52.213758,-2.794911 52.213788,-2.794771 52.213826,-2.794724 52.213839,-2.794536 52.213891,-2.794189 52.213996,-2.793878 52.214113,-2.793834 52.21414,-2.79356 52.214357,-2.793459 52.214421,-2.793285 52.214494,-2.793038 52.214595,-2.792965 52.214613,-2.792921 52.214622,-2.792863 52.214632,-2.792819 52.214632,-2.792731 52.214615,-2.792443 52.214496)",
+ "LINESTRING(-2.770867 52.164475,-2.770805 52.164343,-2.770749 52.164267,-2.770768 52.164207,-2.770905 52.164126,-2.771177 52.16399,-2.771345 52.163895,-2.771531 52.163784,-2.771669 52.163688,-2.77181 52.163566,-2.771884 52.163495,-2.771993 52.163371,-2.7721 52.163235,-2.772176 52.163118,-2.772345 52.163,-2.772474 52.162882,-2.772558 52.162848,-2.772658 52.162837,-2.77279 52.162871,-2.772898 52.163016,-2.773065 52.163285,-2.773134 52.163376,-2.773404 52.163732,-2.773459 52.163818,-2.77355 52.16408)",
+ "LINESTRING(-2.781014 52.154968,-2.780805 52.154691,-2.780461 52.154235,-2.780358 52.154095,-2.780245 52.153973,-2.780063 52.153849,-2.77988 52.153794,-2.779824 52.153785,-2.779736 52.153772,-2.77963 52.153756,-2.779487 52.153738)",
+ "LINESTRING(-2.870687 52.157811,-2.870528 52.157893,-2.870484 52.157902,-2.870124 52.157943,-2.869676 52.157994)",
+ "LINESTRING(-2.791074 52.328059,-2.791045 52.32805,-2.791015 52.328041,-2.790911 52.32797,-2.790554 52.327667,-2.79042 52.327582,-2.790316 52.327516,-2.79031 52.327512,-2.790063 52.327293,-2.789899 52.327132,-2.789749 52.32698,-2.789689 52.326881,-2.789596 52.326639,-2.789536 52.326523,-2.78952 52.326482,-2.789505 52.326442,-2.789473 52.32629,-2.789516 52.326217,-2.789573 52.326154,-2.789629 52.326096,-2.789686 52.326042,-2.789909 52.325879,-2.789968 52.325835,-2.790036 52.325764,-2.790079 52.32571,-2.790135 52.325593,-2.790177 52.325449,-2.790223 52.325296)",
+ "LINESTRING(-2.773759 52.312448,-2.77381 52.312252,-2.773812 52.312017,-2.773804 52.311886,-2.77377 52.311786,-2.773674 52.311637,-2.773624 52.311554,-2.773614 52.311493,-2.773592 52.311322,-2.773565 52.311134,-2.773535 52.311048,-2.773523 52.311013,-2.773473 52.310921,-2.773387 52.310827,-2.773263 52.31071,-2.773185 52.310631,-2.773152 52.310584,-2.773114 52.310494,-2.77309 52.310445,-2.773064 52.310392,-2.773028 52.310346,-2.772976 52.310304,-2.772771 52.310182,-2.77243 52.309952,-2.772317 52.309891,-2.772167 52.309832,-2.771975 52.309775,-2.77168 52.309706,-2.77148 52.309669,-2.77137 52.30967)",
+ "LINESTRING(-2.785431 52.305367,-2.785715 52.305338,-2.785805 52.305312,-2.785869 52.305267,-2.785918 52.305217,-2.785966 52.305127,-2.786009 52.305053,-2.786069 52.304985,-2.786168 52.30492,-2.786481 52.30477,-2.786754 52.30465,-2.786958 52.304563,-2.787363 52.304407,-2.787459 52.304362,-2.787543 52.304308,-2.787585 52.304261,-2.787586 52.304219,-2.787557 52.304173,-2.787526 52.304166,-2.787396 52.304139,-2.786805 52.304046,-2.786647 52.304034,-2.786116 52.304031,-2.785881 52.304033,-2.785573 52.304044,-2.785383 52.304052,-2.785165 52.304042,-2.78493 52.304011,-2.784582 52.303947,-2.784168 52.303884,-2.784024 52.303864,-2.783814 52.303824,-2.783694 52.303791,-2.783578 52.303753,-2.78352 52.303729,-2.783488 52.303712,-2.783434 52.303684,-2.783335 52.303628,-2.783206 52.303549,-2.783037 52.303439,-2.782861 52.303342,-2.782699 52.303257,-2.782395 52.30311,-2.781973 52.302914,-2.781694 52.302819,-2.781396 52.30272,-2.781217 52.302671,-2.780941 52.302616,-2.780775 52.302591,-2.780146 52.3025,-2.779867 52.302464,-2.779539 52.302432,-2.779246 52.302421,-2.778979 52.302411,-2.778679 52.302375,-2.778164 52.302297,-2.7779 52.302263,-2.777551 52.30225,-2.777494 52.302248,-2.776549 52.302209,-2.776271 52.302202,-2.77608 52.302203,-2.775656 52.30226,-2.775393 52.302315,-2.775297 52.302361)",
+ "LINESTRING(-2.768162 52.285915,-2.768448 52.285831,-2.768652 52.285764,-2.768716 52.285764,-2.768724 52.285766,-2.76878 52.28578,-2.768815 52.285808,-2.768911 52.285913,-2.769079 52.286078,-2.769143 52.286115,-2.76922 52.286138,-2.769578 52.286155,-2.769661 52.286164,-2.769734 52.286199,-2.769802 52.286251,-2.769847 52.286303)",
+ "LINESTRING(-2.785332 52.291734,-2.785304 52.291218,-2.785283 52.29103,-2.785269 52.290905)",
+ "LINESTRING(-2.810067 52.296994,-2.810306 52.296809,-2.810486 52.296658,-2.810606 52.296549,-2.810711 52.296415,-2.810832 52.296234,-2.810912 52.296108,-2.810927 52.296089,-2.81152 52.295364,-2.811823 52.29498,-2.812021 52.294804,-2.812244 52.294671,-2.812416 52.294582,-2.812839 52.294371,-2.813389 52.294105,-2.813715 52.293961,-2.814725 52.29352,-2.815498 52.293161,-2.815944 52.292958,-2.816497 52.292709,-2.816911 52.292523,-2.817309 52.292353,-2.817554 52.292232,-2.817807 52.29212,-2.818191 52.291952,-2.818516 52.291758,-2.818674 52.291653,-2.818796 52.291556,-2.819045 52.291358,-2.819169 52.291236,-2.819287 52.291088,-2.819404 52.290933,-2.819521 52.290805,-2.819616 52.290721,-2.819736 52.29064,-2.819933 52.290532,-2.820069 52.290466,-2.820477 52.290285,-2.820695 52.29019,-2.820963 52.290063,-2.821334 52.289891,-2.821566 52.289792,-2.821976 52.289633,-2.822547 52.2894,-2.822746 52.289344,-2.822912 52.289303,-2.823099 52.289258,-2.823253 52.289233,-2.823578 52.289197,-2.823976 52.289155,-2.824248 52.289124,-2.824589 52.289082,-2.824774 52.289047,-2.825019 52.289004,-2.825263 52.288949,-2.825477 52.288862,-2.825763 52.288707,-2.826032 52.288602,-2.826442 52.288464,-2.826752 52.288385,-2.82704 52.288331,-2.827267 52.288288,-2.827426 52.288252,-2.827609 52.28819,-2.827827 52.288111,-2.827996 52.288043,-2.828204 52.287909,-2.828342 52.287776,-2.828584 52.287612,-2.828936 52.287406,-2.829149 52.287291,-2.829567 52.287102,-2.82977 52.287014,-2.830091 52.286903,-2.830346 52.286808,-2.830576 52.286697,-2.830867 52.286455,-2.831063 52.286299,-2.831265 52.286057,-2.831309 52.285924,-2.831315 52.285778,-2.831316 52.285452,-2.831349 52.285112,-2.83138 52.284946,-2.831477 52.28477,-2.831655 52.284461,-2.831747 52.284338,-2.832017 52.284076,-2.832121 52.283978,-2.83233 52.283767,-2.832466 52.283576,-2.832612 52.283282,-2.83271 52.283022,-2.832765 52.282754,-2.832774 52.282516,-2.83276 52.28226,-2.832722 52.282057,-2.832663 52.28172,-2.832668 52.281617,-2.8327 52.281503,-2.832809 52.281175,-2.832862 52.280979,-2.832885 52.280839,-2.832872 52.280765,-2.832837 52.280582,-2.832766 52.280266,-2.832763 52.280223,-2.832772 52.280085,-2.832798 52.279996,-2.832863 52.279778,-2.832882 52.279713,-2.832876 52.279654,-2.832819 52.279514,-2.832641 52.279207,-2.832576 52.279063,-2.832564 52.279002,-2.832572 52.278926,-2.832579 52.278835)",
+ "LINESTRING(-2.8096 52.313156,-2.809812 52.312762,-2.809934 52.312592,-2.810033 52.312491,-2.810125 52.312411,-2.81044 52.312106,-2.810489 52.312065,-2.810617 52.311959,-2.810653 52.31193,-2.810848 52.311783,-2.810927 52.311736,-2.811041 52.311684,-2.811097 52.311676,-2.811322 52.311644,-2.811699 52.311638,-2.811945 52.311586,-2.812366 52.311228,-2.812591 52.311079,-2.812836 52.310968,-2.81304 52.310901,-2.813225 52.310872,-2.813313 52.31088,-2.813416 52.310888,-2.813783 52.311141,-2.813911 52.311216,-2.814051 52.311194,-2.814099 52.311176,-2.814195 52.31114,-2.814227 52.311087,-2.814246 52.311025,-2.814254 52.310972,-2.814214 52.310739,-2.814205 52.31068,-2.81411 52.31053,-2.813621 52.310087,-2.813172 52.309559,-2.813157 52.309541,-2.813064 52.309299,-2.813077 52.309132,-2.813233 52.30893,-2.81437 52.308113,-2.814622 52.307931,-2.815506 52.307296,-2.815512 52.307292,-2.81569 52.307207,-2.81587 52.307147,-2.816298 52.307036,-2.816653 52.306942,-2.816811 52.306893,-2.817057 52.3068,-2.817143 52.30675,-2.817279 52.30664,-2.817435 52.306508,-2.817543 52.306409,-2.817628 52.306361,-2.8179 52.306176,-2.818153 52.306013,-2.818347 52.305877,-2.81847 52.305738,-2.818656 52.305494,-2.818772 52.305448)",
+ "LINESTRING(-2.84966 52.261773,-2.849607 52.261747,-2.849544 52.261684,-2.849539 52.261679,-2.849462 52.26156,-2.849356 52.261536,-2.849261 52.261527,-2.849154 52.261515)",
+ "LINESTRING(-2.871409 52.253843,-2.87124 52.25344,-2.871087 52.253117,-2.871026 52.252974,-2.870964 52.252804,-2.870824 52.2524,-2.870797 52.252328,-2.870748 52.252157,-2.870679 52.251973,-2.870634 52.251891,-2.870588 52.251822,-2.870409 52.2517,-2.870132 52.251533,-2.869956 52.251435,-2.869871 52.251388,-2.869749 52.251338,-2.869334 52.251179,-2.868741 52.250899,-2.868417 52.250783,-2.868236 52.250729,-2.868045 52.250672,-2.866816 52.250353)",
+ "LINESTRING(-2.866721 52.282142,-2.866766 52.282095,-2.866835 52.282034,-2.866896 52.281948,-2.866942 52.281807,-2.866984 52.281567,-2.866991 52.281348,-2.867006 52.281279,-2.867061 52.281207,-2.867135 52.281129,-2.867236 52.281049,-2.867331 52.280989,-2.867449 52.280938,-2.867612 52.280873,-2.868169 52.280722,-2.868635 52.280548,-2.868836 52.280505,-2.868971 52.2805,-2.869074 52.280499,-2.869279 52.280507,-2.869416 52.2805,-2.869557 52.280482,-2.869675 52.280445,-2.869778 52.280377,-2.869861 52.280285,-2.869898 52.280191,-2.869895 52.280142,-2.869892 52.280068,-2.869854 52.279936,-2.869807 52.279858,-2.869681 52.279711,-2.869446 52.279519,-2.869358 52.279459,-2.869315 52.279431,-2.869233 52.279397,-2.869029 52.279331,-2.868575 52.279258,-2.8683 52.279184,-2.868182 52.279139,-2.867982 52.279053,-2.867644 52.278872,-2.867516 52.278822,-2.867511 52.27882,-2.867427 52.278795,-2.867315 52.278778,-2.867175 52.278764,-2.867006 52.27877,-2.866844 52.278795,-2.866732 52.278819,-2.866155 52.278948,-2.865845 52.279016,-2.865695 52.279031,-2.865584 52.279027,-2.865529 52.279025,-2.865376 52.279001,-2.865206 52.278966,-2.865049 52.278909,-2.864961 52.278851,-2.864926 52.278799,-2.864926 52.278784,-2.864925 52.278747,-2.864945 52.278685,-2.864986 52.278636,-2.865202 52.278483,-2.865357 52.278359,-2.865431 52.278293,-2.865515 52.278218,-2.865547 52.278181,-2.865644 52.278066,-2.865765 52.277915,-2.865774 52.277902,-2.865846 52.277793,-2.865912 52.277678,-2.86599 52.277542,-2.86609 52.277401,-2.866137 52.277336,-2.86626 52.2772,-2.866323 52.277128,-2.866543 52.276946,-2.866747 52.276785,-2.866852 52.276704,-2.866996 52.276593,-2.867047 52.27655,-2.867079 52.276496,-2.867102 52.27644,-2.86713 52.276372,-2.86713 52.276355,-2.867129 52.276333,-2.867129 52.276317,-2.867122 52.276257,-2.867119 52.276239,-2.867111 52.276195,-2.867043 52.276054,-2.867001 52.275938,-2.866955 52.275829,-2.866893 52.275746,-2.866827 52.275671,-2.866762 52.275632,-2.866691 52.275578,-2.866513 52.275507,-2.866306 52.275444,-2.86601 52.275385,-2.865752 52.275365,-2.865458 52.275371,-2.86523 52.275395,-2.865015 52.275435,-2.864873 52.275467,-2.864636 52.275542,-2.864401 52.275629,-2.864239 52.275701,-2.863556 52.276004,-2.863334 52.276119,-2.863074 52.276293,-2.863031 52.276303,-2.862937 52.276294,-2.862877 52.276262,-2.862847 52.276227,-2.862827 52.276156,-2.862827 52.276075,-2.862831 52.276051,-2.86284 52.275998,-2.862844 52.275975,-2.862864 52.275936,-2.862937 52.275793,-2.86301 52.275653,-2.863091 52.275495,-2.863188 52.275311,-2.863291 52.275136,-2.863322 52.275083,-2.863481 52.274831,-2.863709 52.274511,-2.863937 52.274198,-2.863983 52.274135,-2.864108 52.273941,-2.864208 52.27378,-2.864262 52.273664,-2.864344 52.273524,-2.864377 52.273449,-2.864455 52.273267,-2.864541 52.273114,-2.864604 52.272967,-2.86466 52.272888,-2.864761 52.272799,-2.864874 52.272701,-2.865244 52.272223,-2.865303 52.272127,-2.865359 52.272017,-2.86538 52.271943,-2.865378 52.271853,-2.865358 52.271782,-2.865321 52.271713,-2.865314 52.2717,-2.865286 52.271658,-2.865212 52.271578,-2.865112 52.271488,-2.864864 52.271324,-2.864508 52.271098,-2.864143 52.270876,-2.863871 52.270713,-2.86357 52.270537,-2.863198 52.270336,-2.862901 52.270192,-2.862665 52.270082,-2.862462 52.269977,-2.862355 52.269914,-2.862143 52.269791,-2.861777 52.269578,-2.861671 52.269522,-2.861598 52.269466,-2.861568 52.269412,-2.861557 52.269298,-2.861551 52.269222)",
+ "LINESTRING(-2.870042 52.273476,-2.870124 52.273451,-2.870412 52.273356,-2.870614 52.273316,-2.870828 52.273282,-2.871244 52.27326,-2.871744 52.273239,-2.872129 52.273221,-2.87277 52.273192,-2.87302 52.273178,-2.873339 52.273154,-2.873444 52.273149,-2.873634 52.27313,-2.873663 52.27312,-2.873692 52.273102,-2.873773 52.273038,-2.873892 52.272891,-2.873901 52.272881,-2.873987 52.272815,-2.87408 52.272782,-2.874156 52.272771,-2.874329 52.272746,-2.874551 52.272709,-2.874662 52.272677,-2.874758 52.272637,-2.874892 52.272595,-2.874999 52.272543,-2.875313 52.27243,-2.875555 52.27235,-2.875835 52.272267,-2.876071 52.272199,-2.876178 52.272148,-2.876381 52.272039,-2.876555 52.271924,-2.876722 52.271792,-2.876875 52.271663,-2.87701 52.271536,-2.877145 52.271414,-2.877244 52.271326,-2.877368 52.271244,-2.877559 52.271134,-2.877754 52.271029,-2.877916 52.27095,-2.878073 52.270895,-2.878135 52.270884,-2.878202 52.270885,-2.878258 52.270903,-2.8783 52.27094,-2.878464 52.271092,-2.878685 52.271279,-2.878926 52.271466,-2.879012 52.271546,-2.879085 52.271657,-2.879158 52.271791,-2.879168 52.271856,-2.879157 52.272034,-2.879174 52.272151,-2.879231 52.272368,-2.879301 52.272639,-2.879357 52.272808,-2.879362 52.272916,-2.879353 52.273034,-2.87934 52.273124,-2.879347 52.273212,-2.879365 52.273387,-2.87935 52.2735,-2.879281 52.273704,-2.879202 52.273859,-2.87915 52.273902,-2.879067 52.274004,-2.879003 52.274159,-2.878877 52.27432,-2.878794 52.274425,-2.87864 52.274567)",
+ "LINESTRING(-2.866721 52.282142,-2.866546 52.282289,-2.866394 52.282429,-2.866309 52.282508,-2.86607 52.282714,-2.865899 52.282839,-2.865598 52.283033,-2.865402 52.283143,-2.865272 52.283216,-2.864748 52.28343,-2.864323 52.283589,-2.86384 52.283766,-2.863651 52.28385,-2.863464 52.283952,-2.863198 52.284137,-2.86295 52.284316,-2.862834 52.284492)",
+ "LINESTRING(-2.845194 52.369086,-2.845265 52.369109,-2.845329 52.369154,-2.845454 52.369264,-2.845608 52.369421,-2.845968 52.369803,-2.846306 52.370142,-2.846346 52.370182,-2.846352 52.370188,-2.847293 52.371183,-2.847719 52.371643,-2.847908 52.371843,-2.849636 52.373671)",
+ "LINESTRING(-2.772262 52.351621,-2.772146 52.351676,-2.772073 52.351712,-2.771812 52.351912,-2.771522 52.35213,-2.771022 52.352546,-2.770992 52.352572,-2.770365 52.353117,-2.770282 52.353181,-2.770046 52.353362,-2.769878 52.353489,-2.769556 52.353646,-2.769406 52.353699,-2.76872 52.353919,-2.768529 52.353947,-2.768192 52.353949,-2.767383 52.353892,-2.76723 52.353883,-2.766907 52.353874,-2.766437 52.353888,-2.766083 52.353923,-2.765772 52.353968,-2.765589 52.354014,-2.765519 52.354032,-2.765474 52.354043,-2.765296 52.354115,-2.765148 52.354231,-2.76491 52.3544,-2.764838 52.354448,-2.764679 52.354533,-2.764424 52.354632,-2.764211 52.354685,-2.763933 52.354741,-2.763889 52.35475,-2.763596 52.354806,-2.763321 52.354844,-2.763259 52.354853,-2.763235 52.354852,-2.763095 52.35485,-2.763014 52.354846,-2.762868 52.354839,-2.762565 52.35481,-2.762292 52.354785,-2.762104 52.354779,-2.761605 52.354788,-2.761516 52.354793,-2.761476 52.354795,-2.761285 52.354806,-2.761247 52.354808,-2.760687 52.354846,-2.760029 52.354864,-2.760015 52.354865,-2.759721 52.354886,-2.759369 52.354926,-2.759053 52.354955,-2.758903 52.354953,-2.758735 52.35493,-2.758489 52.354875,-2.758337 52.354841,-2.758063 52.354778,-2.757839 52.354704,-2.757629 52.354657,-2.757158 52.35459,-2.756717 52.354517,-2.756277 52.354423,-2.755841 52.354312,-2.755313 52.354172,-2.754894 52.354049,-2.754619 52.353955,-2.754135 52.353786,-2.753547 52.353566,-2.753298 52.353465,-2.752793 52.353258,-2.752668 52.353175,-2.752563 52.353066,-2.752496 52.352931,-2.752453 52.352791,-2.752438 52.352626,-2.752416 52.352374,-2.752377 52.352138,-2.752361 52.35204,-2.752337 52.351869)",
+ "LINESTRING(-2.773655 52.354022,-2.773551 52.353995,-2.773507 52.353978,-2.773209 52.353728,-2.773149 52.353665,-2.773117 52.353504,-2.773065 52.353162,-2.773034 52.352965,-2.772972 52.35274,-2.772923 52.352611,-2.772886 52.352534,-2.772743 52.352239,-2.772652 52.352068,-2.772561 52.351925,-2.772486 52.351836,-2.772411 52.351764,-2.772262 52.351621)",
+ "LINESTRING(-2.753656 52.360846,-2.753728 52.360934,-2.75384 52.360962,-2.753998 52.360946,-2.754437 52.360861,-2.754844 52.360793,-2.755044 52.36079,-2.755406 52.360811,-2.755894 52.360855,-2.756264 52.360871,-2.756746 52.360857,-2.757133 52.360818,-2.757461 52.360766,-2.757826 52.360684,-2.758227 52.360567,-2.758449 52.360533,-2.758593 52.36053,-2.758726 52.360542,-2.758943 52.360557,-2.759457 52.36057,-2.759816 52.360576,-2.760312 52.360553,-2.761192 52.360483,-2.761344 52.360478,-2.761509 52.360472,-2.761826 52.360457,-2.762371 52.360427,-2.762703 52.360414,-2.762894 52.360411,-2.763043 52.360388,-2.763479 52.360312,-2.763729 52.360296,-2.76429 52.36028,-2.764477 52.36026,-2.764917 52.360214,-2.765116 52.360202,-2.765425 52.360215,-2.765639 52.360213,-2.765865 52.360194,-2.76605 52.360171,-2.766263 52.36013,-2.766457 52.360088,-2.76694 52.359981,-2.76706 52.359964,-2.767268 52.359952,-2.768163 52.359913,-2.768729 52.359888,-2.769041 52.359891,-2.769305 52.359905,-2.769823 52.359945,-2.770114 52.35996,-2.770396 52.35995,-2.770967 52.359901,-2.771202 52.359881,-2.77151 52.359843,-2.771908 52.359735,-2.772174 52.359668,-2.772387 52.35964,-2.77246 52.35963,-2.772868 52.359611,-2.773179 52.359572,-2.773429 52.359575,-2.773575 52.359585,-2.773773 52.359599,-2.773949 52.359605,-2.773984 52.359603,-2.774069 52.359597,-2.774254 52.359562,-2.774815 52.359409,-2.775031 52.359354,-2.775245 52.35932,-2.775579 52.359291,-2.775698 52.35927,-2.775772 52.359256,-2.775799 52.359252,-2.776123 52.359169,-2.776302 52.359162,-2.776435 52.359179,-2.776568 52.359227,-2.776772 52.35931,-2.776943 52.359359,-2.777208 52.359402,-2.777429 52.359408,-2.777672 52.359372,-2.778029 52.359313,-2.778447 52.35922,-2.77871 52.359146,-2.779052 52.359031,-2.77954 52.358873,-2.779776 52.358807,-2.780075 52.358754,-2.780289 52.358728,-2.780606 52.358709,-2.781231 52.358698,-2.781563 52.358681,-2.781774 52.358689,-2.7818 52.358693,-2.782251 52.35876,-2.782572 52.358786,-2.782757 52.358799,-2.782907 52.358797,-2.783039 52.358776,-2.783141 52.358741,-2.783219 52.358672,-2.783336 52.358477,-2.783339 52.358472,-2.783396 52.358373,-2.783511 52.358242,-2.78358 52.35819,-2.78379 52.358072,-2.784078 52.357953,-2.784352 52.357823,-2.784454 52.357751,-2.784543 52.357628,-2.784625 52.357492,-2.784723 52.357393,-2.784828 52.357338,-2.785047 52.357268,-2.785404 52.357212,-2.785891 52.357142,-2.78619 52.357119,-2.786454 52.357117,-2.786613 52.357129,-2.786808 52.357178,-2.787204 52.357335,-2.787725 52.357596,-2.787844 52.357651,-2.787959 52.357686,-2.788219 52.357751,-2.788682 52.357899,-2.789149 52.358066,-2.789808 52.358293,-2.790064 52.358316,-2.790349 52.358303,-2.790691 52.358225,-2.790901 52.358168,-2.791044 52.358104,-2.791144 52.358062,-2.791241 52.357942,-2.791255 52.357924,-2.791346 52.357721,-2.791407 52.357521,-2.791455 52.357414,-2.79158 52.357176,-2.791734 52.356947,-2.791818 52.356849,-2.791869 52.35679,-2.791974 52.356735,-2.792074 52.356716,-2.792153 52.356721,-2.792292 52.356756,-2.79254 52.356832,-2.792669 52.356851,-2.79276 52.356852,-2.792863 52.356848,-2.792998 52.356827,-2.793086 52.356814,-2.793267 52.356791,-2.793417 52.356786,-2.793567 52.356803,-2.793967 52.356842,-2.794114 52.35685,-2.794284 52.356833,-2.794483 52.356768,-2.794772 52.356662,-2.794939 52.356645,-2.795065 52.356662,-2.795174 52.356692,-2.795346 52.356779,-2.795737 52.356976,-2.795915 52.357054,-2.796172 52.357158,-2.79635 52.357236,-2.796486 52.3573,-2.796602 52.357365,-2.796807 52.357481,-2.796919 52.357523,-2.797055 52.357551,-2.797169 52.357565,-2.797284 52.357564,-2.797442 52.357556,-2.797624 52.357529,-2.7978 52.357496,-2.797975 52.357444,-2.798129 52.357373,-2.79824 52.357318,-2.798353 52.357231,-2.798466 52.357144,-2.798585 52.357059,-2.798716 52.356999,-2.79874 52.356991,-2.798815 52.356966,-2.798918 52.35696,-2.799035 52.35697,-2.799433 52.357046,-2.799616 52.357068,-2.799801 52.357071,-2.799918 52.357055,-2.80017 52.357009,-2.800416 52.356975,-2.800521 52.35694,-2.800654 52.356844)",
+ "LINESTRING(-2.818355 52.347202,-2.818399 52.347293,-2.818443 52.347384,-2.818512 52.347477,-2.818663 52.3476,-2.818888 52.347728,-2.819106 52.347835,-2.819235 52.347893,-2.819377 52.347931,-2.819537 52.347956,-2.819804 52.347997,-2.820024 52.348028,-2.820145 52.348056,-2.820331 52.348128,-2.820539 52.348206,-2.82071 52.348258,-2.820909 52.348302,-2.820981 52.348318,-2.821029 52.348352,-2.821031 52.348388,-2.821011 52.348437,-2.820967 52.34846,-2.820826 52.348507,-2.820756 52.348526,-2.82037 52.348612,-2.820269 52.348639,-2.820204 52.34866,-2.819667 52.348853,-2.819451 52.34892,-2.819269 52.348968,-2.819144 52.349017,-2.818939 52.349106,-2.81881 52.349162,-2.818689 52.349193,-2.818372 52.349238,-2.818072 52.349298,-2.817924 52.34933,-2.817707 52.349379,-2.817626 52.349417,-2.817488 52.34949,-2.817383 52.349555,-2.817306 52.349621,-2.817254 52.349654,-2.817208 52.349686,-2.817105 52.34975,-2.817061 52.349773,-2.816975 52.349802,-2.816725 52.349885,-2.816603 52.349932,-2.816494 52.349974,-2.816223 52.350076,-2.816136 52.350122,-2.815942 52.350213,-2.815839 52.350255,-2.815772 52.350275,-2.815636 52.35032,-2.815461 52.350359,-2.815168 52.350407,-2.815007 52.350429,-2.814702 52.35048,-2.814474 52.350521,-2.814312 52.35054,-2.813958 52.350566,-2.813574 52.350584,-2.813074 52.350598,-2.812936 52.350596)",
+ "LINESTRING(-2.817427 52.368525,-2.817397 52.368498,-2.817317 52.368426,-2.817133 52.368212,-2.816979 52.368059,-2.816899 52.367997,-2.816833 52.367974,-2.816774 52.367967,-2.816692 52.367984,-2.816435 52.368082,-2.816345 52.368116,-2.816226 52.368194,-2.816155 52.368223,-2.816103 52.368243,-2.816033 52.368271,-2.816012 52.368352,-2.816011 52.368378,-2.816065 52.368732,-2.816082 52.368876,-2.8161 52.369074,-2.816104 52.369262,-2.816104 52.369271)",
+ "LINESTRING(-2.765419 52.340898,-2.765378 52.342352,-2.765365 52.342451,-2.764943 52.342966,-2.764864 52.343063,-2.764849 52.343129,-2.765031 52.343412,-2.765042 52.343442,-2.765041 52.343497,-2.764983 52.343558,-2.76489 52.343578,-2.764778 52.343581,-2.764724 52.343578,-2.764486 52.343576,-2.764254 52.34357,-2.764096 52.343593,-2.763938 52.343628,-2.763737 52.343721,-2.763547 52.343811,-2.763396 52.343864,-2.763203 52.343899,-2.763004 52.343974,-2.762803 52.344067,-2.762672 52.344127,-2.762663 52.344128,-2.762564 52.344139,-2.762487 52.344123,-2.762484 52.344121,-2.762422 52.344075,-2.762287 52.343936,-2.761979 52.343615,-2.761814 52.343418,-2.761739 52.343311,-2.761583 52.342988,-2.761496 52.342809,-2.761405 52.342665,-2.76136 52.342621,-2.76133 52.342585,-2.761239 52.342546)",
+ "LINESTRING(-2.737783 52.341558,-2.737981 52.341618,-2.738154 52.341638,-2.738366 52.341621,-2.738571 52.341608,-2.738747 52.341607,-2.738976 52.341633,-2.739153 52.341677,-2.739309 52.341678,-2.739566 52.341635,-2.73983 52.341584,-2.740346 52.341505,-2.740486 52.341483,-2.740723 52.341448,-2.740952 52.341432,-2.741154 52.341443,-2.741561 52.341497,-2.741619 52.341505,-2.741772 52.341515,-2.741874 52.341495,-2.741986 52.341474,-2.742249 52.341397,-2.742395 52.341374,-2.742703 52.341356,-2.742976 52.341335,-2.743242 52.341282,-2.743443 52.341211,-2.743662 52.341118,-2.743995 52.341022,-2.744255 52.340947,-2.744517 52.340827,-2.744621 52.340743,-2.744632 52.340675,-2.744546 52.340604,-2.744345 52.340529,-2.744095 52.340491,-2.743921 52.340447,-2.743828 52.340356,-2.743807 52.340312,-2.743809 52.340236,-2.743912 52.340074,-2.744027 52.339961,-2.744239 52.339814,-2.744414 52.339725,-2.744788 52.339635,-2.745551 52.339441,-2.745769 52.339357,-2.745918 52.339264,-2.746016 52.339167,-2.746142 52.33899,-2.746219 52.338838,-2.746281 52.338717)",
+ "LINESTRING(-2.791074 52.328059,-2.791045 52.32805,-2.791015 52.328041,-2.790911 52.32797,-2.790554 52.327667,-2.79042 52.327582,-2.790316 52.327516,-2.79031 52.327512,-2.790063 52.327293,-2.789899 52.327132,-2.789749 52.32698,-2.789689 52.326881,-2.789596 52.326639,-2.789536 52.326523,-2.78952 52.326482,-2.789505 52.326442,-2.789473 52.32629,-2.789516 52.326217,-2.789573 52.326154,-2.789629 52.326096,-2.789686 52.326042,-2.789909 52.325879,-2.789968 52.325835,-2.790036 52.325764,-2.790079 52.32571,-2.790135 52.325593,-2.790177 52.325449,-2.790223 52.325296)",
+ "LINESTRING(-2.876391 52.35697,-2.876449 52.357044,-2.876479 52.357079,-2.876525 52.357196,-2.876726 52.357707,-2.876727 52.357743,-2.876669 52.357797,-2.87664 52.357815,-2.876509 52.357861,-2.876421 52.35788)",
+ "LINESTRING(-2.85556 52.396517,-2.855534 52.396022,-2.855521 52.395526,-2.855513 52.395292,-2.855499 52.395243,-2.855499 52.395241,-2.855441 52.395187,-2.855286 52.395049,-2.855032 52.394824,-2.85445 52.394312,-2.853884 52.393808,-2.853774 52.393713,-2.853653 52.393622,-2.853425 52.393464,-2.853104 52.393254,-2.852847 52.393086,-2.852393 52.392779,-2.852311 52.392723,-2.8519 52.392452,-2.851752 52.392358,-2.851734 52.392346,-2.851695 52.392304,-2.851677 52.392247,-2.851691 52.392204,-2.851704 52.392193,-2.851712 52.392185,-2.851729 52.39217,-2.851751 52.392161,-2.851795 52.392143,-2.853022 52.391795,-2.853067 52.391781,-2.853157 52.391754,-2.853208 52.391727,-2.853232 52.391698,-2.853238 52.391659,-2.853226 52.391609,-2.853207 52.391558,-2.852786 52.390888,-2.852564 52.390535,-2.852295 52.390097,-2.851979 52.389588,-2.85188 52.389439,-2.851585 52.389,-2.851343 52.388633,-2.851011 52.388114,-2.850987 52.388076,-2.850866 52.38789,-2.850855 52.387881,-2.85083 52.387861,-2.850792 52.387854,-2.850735 52.387864,-2.850576 52.387911,-2.850467 52.387949,-2.85043 52.387961,-2.850363 52.387983,-2.850303 52.388025,-2.850294 52.388032,-2.850198 52.3881,-2.850123 52.388144,-2.850047 52.388176,-2.849561 52.38835,-2.849105 52.388508,-2.84873 52.388639,-2.848151 52.388841,-2.848126 52.38885,-2.848093 52.388861,-2.848036 52.388869,-2.847961 52.388866,-2.847881 52.388852,-2.8478 52.388826,-2.847373 52.388665,-2.846573 52.388365,-2.845732 52.388047,-2.845134 52.387819,-2.844629 52.387632,-2.844577 52.387619,-2.844511 52.387615,-2.844423 52.387617,-2.844304 52.387625,-2.844172 52.387633,-2.844031 52.38765,-2.843693 52.387697,-2.843032 52.387787,-2.842679 52.387842,-2.842089 52.387939,-2.841699 52.388,-2.841066 52.388111,-2.840644 52.388189,-2.840601 52.388197,-2.840249 52.388268,-2.840205 52.388278,-2.839876 52.388349,-2.839457 52.388438,-2.839302 52.388471,-2.839156 52.388507,-2.839064 52.388525,-2.838993 52.388536,-2.838901 52.388548,-2.83878 52.388561,-2.838608 52.388572,-2.838373 52.388602,-2.837898 52.38866,-2.837343 52.388751,-2.83692 52.388814,-2.836688 52.388836,-2.836525 52.388853,-2.836407 52.38886,-2.836264 52.388869,-2.836097 52.388875,-2.835884 52.388887,-2.835807 52.388894,-2.835725 52.388908,-2.835593 52.388929,-2.835501 52.388944,-2.835384 52.388961,-2.835305 52.388972,-2.835256 52.388979,-2.835115 52.388998,-2.834892 52.389042,-2.834639 52.38909,-2.834337 52.389144,-2.834152 52.389174,-2.834038 52.38919,-2.833914 52.389202,-2.833758 52.38921,-2.833503 52.389214,-2.833378 52.389219,-2.833226 52.389232,-2.832982 52.389261,-2.832221 52.389361,-2.831966 52.389395,-2.831785 52.389419,-2.831648 52.389439,-2.831467 52.389466,-2.83136 52.389482,-2.831282 52.389492,-2.831212 52.389498,-2.83115 52.389501,-2.831069 52.389498,-2.831008 52.389485,-2.830965 52.389454,-2.830933 52.389431,-2.830912 52.389387,-2.830918 52.389326,-2.830943 52.389246,-2.83098 52.389159,-2.831 52.389088,-2.83101 52.389013,-2.831014 52.38894,-2.831011 52.388855,-2.831001 52.388759,-2.830979 52.388633,-2.830951 52.388515,-2.830863 52.388224,-2.830836 52.388137,-2.830805 52.387982,-2.830787 52.387894,-2.830775 52.387745,-2.830763 52.387601,-2.830759 52.38756,-2.830742 52.387533,-2.830712 52.387509,-2.830673 52.387493,-2.830608 52.387477,-2.830474 52.387467,-2.829886 52.387431,-2.829247 52.387393,-2.828714 52.387362,-2.828589 52.387356,-2.828479 52.387342,-2.828398 52.387328,-2.828291 52.387296,-2.828268 52.387285,-2.828239 52.387272,-2.828188 52.387234,-2.828129 52.3872,-2.828118 52.387197,-2.828062 52.387177,-2.827989 52.387162,-2.827887 52.387148,-2.827766 52.387134,-2.827541 52.387099,-2.827199 52.387048,-2.826926 52.387011,-2.826678 52.386979,-2.826484 52.386962,-2.826128 52.386937,-2.825835 52.386921,-2.825578 52.386909,-2.825252 52.386883,-2.824822 52.386841,-2.82427 52.386796,-2.823937 52.386775,-2.823542 52.386749,-2.823387 52.386739,-2.823187 52.38673,-2.822928 52.386723,-2.822737 52.386725,-2.822636 52.386727,-2.822504 52.386737,-2.82239 52.386753,-2.822291 52.386764,-2.822187 52.386771,-2.822071 52.38677,-2.821698 52.386754,-2.821006 52.386716,-2.820424 52.386678,-2.820017 52.386642,-2.819853 52.386632,-2.819682 52.386628,-2.819589 52.386628,-2.819231 52.386643,-2.818809 52.386659,-2.818609 52.386667,-2.818181 52.386684,-2.817766 52.386708,-2.817455 52.386728,-2.817396 52.386731,-2.817365 52.386732,-2.817012 52.386745,-2.816911 52.386753,-2.816895 52.386757,-2.816813 52.38678,-2.81671 52.386814)",
+ "LINESTRING(-2.749888 52.382861,-2.751339 52.382845,-2.751707 52.382817,-2.751819 52.382778,-2.75187 52.38276,-2.75201 52.382642,-2.752104 52.382552,-2.752124 52.382532,-2.752165 52.382507,-2.752235 52.382465,-2.75224 52.382462,-2.752326 52.382443,-2.75249 52.38246,-2.752823 52.382513,-2.753021 52.38252,-2.753173 52.382509,-2.753231 52.382491,-2.75326 52.382473,-2.753274 52.382455,-2.753361 52.382337,-2.753447 52.38222,-2.753542 52.382158)",
+ "LINESTRING(-2.849636 52.373671,-2.849509 52.373732,-2.849432 52.373769,-2.849363 52.373797,-2.848991 52.373928,-2.848774 52.374004,-2.848314 52.374154,-2.848093 52.374223,-2.847627 52.37434,-2.847196 52.374451,-2.846893 52.374547,-2.846484 52.374688,-2.846072 52.374839,-2.845713 52.374983,-2.845325 52.375139,-2.844837 52.375341,-2.844717 52.375383,-2.844507 52.375452,-2.843824 52.375678,-2.843494 52.375781,-2.8433 52.375826,-2.843033 52.375873,-2.842747 52.37592,-2.842341 52.375982,-2.84211 52.376015,-2.841836 52.376063,-2.841536 52.376121,-2.841258 52.37618,-2.841027 52.376233,-2.840883 52.376266,-2.840791 52.376285,-2.840711 52.376296,-2.840647 52.376305,-2.840597 52.376303,-2.840554 52.376288,-2.840532 52.376278,-2.840492 52.376261,-2.840432 52.376221,-2.840385 52.376186,-2.840337 52.376165,-2.84028 52.376149,-2.840223 52.376136,-2.840149 52.376134,-2.840088 52.376141,-2.840085 52.376141,-2.839997 52.376156,-2.839849 52.376181,-2.839693 52.376196,-2.839501 52.376215,-2.839384 52.376221,-2.839316 52.376223,-2.839233 52.376212,-2.839133 52.376189,-2.838954 52.376148,-2.838297 52.375973,-2.837891 52.375872,-2.837768 52.375854,-2.837658 52.375844,-2.837547 52.375842,-2.83745 52.375842,-2.837346 52.375848,-2.83726 52.37586,-2.837161 52.375877,-2.837075 52.375903,-2.837011 52.375921,-2.836956 52.375931,-2.836916 52.37593,-2.836866 52.375921,-2.83682 52.375905,-2.83677 52.375886,-2.836633 52.375832,-2.836527 52.375789,-2.836448 52.37576,-2.836297 52.37572,-2.835957 52.375646,-2.835684 52.375592,-2.835382 52.375539,-2.835101 52.375498,-2.835051 52.375491,-2.834666 52.375443,-2.834309 52.375408,-2.834102 52.37539,-2.833896 52.375379,-2.833767 52.375379,-2.833655 52.375384,-2.833547 52.3754,-2.833465 52.375423,-2.833372 52.375473,-2.83333 52.375504,-2.833298 52.375527,-2.833246 52.375597,-2.833219 52.375648,-2.833215 52.375691,-2.83321 52.375722,-2.833227 52.375763,-2.833265 52.375818,-2.833342 52.375935,-2.833401 52.376015,-2.833472 52.376113,-2.833505 52.376174,-2.833506 52.376229,-2.8335 52.376258,-2.833497 52.376272,-2.833459 52.376299,-2.833439 52.376303,-2.833401 52.37631,-2.833357 52.376309,-2.833354 52.376308,-2.833312 52.376295,-2.833241 52.376231,-2.833152 52.376155,-2.833073 52.376082,-2.833008 52.376025,-2.832937 52.375973,-2.832878 52.375929,-2.8328 52.375893,-2.832717 52.375865,-2.832619 52.375831,-2.832523 52.3758,-2.832414 52.375772,-2.832111 52.375704,-2.831984 52.37568,-2.831765 52.375635,-2.831397 52.375571,-2.831087 52.375529,-2.830752 52.375481,-2.830563 52.375455,-2.830471 52.375449,-2.830324 52.375441,-2.830123 52.375437,-2.829918 52.375431,-2.829842 52.375423,-2.829737 52.375408,-2.829284 52.37535,-2.828579 52.375259,-2.827637 52.375138,-2.826761 52.375024,-2.826152 52.374942,-2.825627 52.374876,-2.825152 52.374818,-2.824631 52.374752,-2.82419 52.374692,-2.823612 52.374617,-2.822892 52.374522,-2.822234 52.374436,-2.819541 52.374073)",
+ "LINESTRING(-2.812104 52.378289,-2.812462 52.378218,-2.812687 52.378173,-2.812849 52.37812,-2.812995 52.378065,-2.813084 52.378011,-2.813152 52.377925,-2.813193 52.377827,-2.813234 52.377705,-2.813288 52.377616,-2.813365 52.377529,-2.813436 52.377478,-2.813525 52.377435,-2.813627 52.377399,-2.813696 52.377367,-2.813739 52.377308,-2.813784 52.377238,-2.813816 52.37715,-2.813855 52.376997,-2.813891 52.376849,-2.813926 52.376782,-2.813993 52.37674,-2.814096 52.376715,-2.814202 52.376708,-2.814323 52.3767,-2.814413 52.376688,-2.814475 52.376669,-2.814553 52.376617,-2.814678 52.376511,-2.814971 52.376268,-2.815065 52.376187)",
+ "LINESTRING(-2.829632 52.505566,-2.82985 52.505388,-2.830133 52.505157,-2.83044 52.504943,-2.831098 52.50454)",
+ "LINESTRING(-2.857778 52.498206,-2.857762 52.498348,-2.857727 52.498658,-2.857706 52.499173,-2.85764 52.499648,-2.857575 52.5001)",
+ "LINESTRING(-2.779723 52.462749,-2.779545 52.462676,-2.779526 52.462668,-2.779096 52.462511,-2.778881 52.462447,-2.778792 52.462417,-2.778607 52.462395,-2.778255 52.462332,-2.778078 52.462279,-2.777901 52.462215,-2.777793 52.462162,-2.777596 52.462038,-2.777408 52.461908,-2.777232 52.461832,-2.777084 52.461738,-2.776848 52.461632,-2.776494 52.461485,-2.776347 52.461427,-2.77626 52.461391,-2.776088 52.46132,-2.775911 52.46125,-2.775811 52.461218,-2.775773 52.461202,-2.77556 52.461128,-2.775442 52.461087,-2.775236 52.461023,-2.775099 52.460989,-2.774987 52.460989)",
+ "LINESTRING(-2.748927 52.460261,-2.748895 52.460247,-2.748855 52.460247,-2.748774 52.460285,-2.748667 52.460342,-2.748423 52.460455,-2.74833 52.460504,-2.74826 52.460539,-2.748165 52.460628,-2.748143 52.460637,-2.747994 52.460698,-2.747658 52.460744,-2.747408 52.460786,-2.747086 52.460816,-2.746861 52.460802,-2.746672 52.46075,-2.746663 52.460748,-2.746633 52.46073,-2.74641 52.460588,-2.746082 52.460374,-2.745724 52.46018,-2.745566 52.4601,-2.745255 52.460006)",
+ "LINESTRING(-2.831391 52.445745,-2.831339 52.445682,-2.831253 52.445621,-2.831039 52.44551,-2.830941 52.44546,-2.830856 52.445417,-2.830585 52.44522,-2.830148 52.444916,-2.829946 52.444785,-2.829823 52.444658,-2.829669 52.444499,-2.829529 52.444301,-2.829337 52.444027,-2.829228 52.443938)",
+ "LINESTRING(-2.862644 52.42015,-2.862666 52.420191,-2.862617 52.420468,-2.86324 52.42065,-2.863646 52.420786,-2.863929 52.42088,-2.864098 52.420923,-2.864238 52.420943,-2.864523 52.421001,-2.864593 52.421023,-2.864624 52.421057,-2.864662 52.421116,-2.864726 52.421363,-2.864872 52.421795,-2.864946 52.422014,-2.865 52.422122,-2.865058 52.422183,-2.865126 52.422208,-2.865203 52.422225)",
+ "LINESTRING(-2.755579 52.587427,-2.755548 52.587419,-2.755514 52.587406,-2.754749 52.587077,-2.754192 52.586858,-2.754158 52.586844,-2.753716 52.586664,-2.753125 52.586419,-2.75309 52.586407,-2.752784 52.586294,-2.751987 52.585975,-2.750903 52.585522,-2.750786 52.585474,-2.750434 52.585337,-2.7502 52.585287,-2.750041 52.585273,-2.749718 52.585276,-2.749452 52.585272,-2.749222 52.585245,-2.749042 52.585194,-2.74897 52.585173,-2.748916 52.585145,-2.748871 52.585093,-2.748724 52.584982,-2.748585 52.584877,-2.748371 52.584716,-2.74821 52.584667,-2.748025 52.584628,-2.747835 52.584588,-2.747546 52.584561)",
+ "LINESTRING(-2.758824 52.566573,-2.758843 52.566612,-2.758884 52.56673,-2.758879 52.566811,-2.75884 52.566919,-2.758784 52.567022,-2.758735 52.567116,-2.758661 52.567189,-2.758503 52.56727,-2.758483 52.567301,-2.758484 52.567328,-2.758515 52.567351,-2.758562 52.567348,-2.75862 52.567336,-2.758687 52.567284,-2.758831 52.567185,-2.759103 52.566989,-2.759359 52.566874,-2.759639 52.566798,-2.759771 52.566778,-2.759893 52.566784,-2.760066 52.566813,-2.760578 52.56694,-2.760622 52.566931,-2.760666 52.566922,-2.760711 52.566913,-2.760755 52.566894,-2.760798 52.566858,-2.760968 52.566699)",
+ "LINESTRING(-2.79983 52.554365,-2.79986 52.554392,-2.799905 52.554428,-2.800233 52.554632,-2.800442 52.554793,-2.800517 52.554837,-2.800636 52.554899,-2.800948 52.555032,-2.801053 52.555094,-2.801172 52.555183,-2.801217 52.555201,-2.801335 52.555209,-2.801512 52.555199,-2.80163 52.555198,-2.801748 52.555197,-2.801866 52.555188,-2.801969 52.555169,-2.802115 52.555132,-2.80235 52.555085,-2.802454 52.555076,-2.802793 52.555073,-2.80294 52.555054,-2.80316 52.554999,-2.803538 52.554912,-2.803829 52.554803,-2.804605 52.554622,-2.805872 52.554267,-2.806038 52.554234,-2.80643 52.554195,-2.806568 52.554212,-2.806931 52.554219,-2.807023 52.554211,-2.807075 52.554198,-2.807114 52.55418,-2.807192 52.554172,-2.807355 52.554181,-2.807566 52.554194,-2.808058 52.554246,-2.80856 52.554279,-2.808708 52.554287)",
+ "LINESTRING(-2.838002 52.589989,-2.838081 52.590031,-2.838235 52.590053,-2.838557 52.590099,-2.838864 52.590158,-2.83901 52.590208,-2.839129 52.590255,-2.839262 52.590309,-2.839384 52.590391,-2.839451 52.590444,-2.839562 52.590509,-2.839657 52.590536,-2.839789 52.590543,-2.839919 52.590545,-2.840044 52.590556,-2.840131 52.59058,-2.840177 52.590626,-2.840219 52.590711,-2.84025 52.590812,-2.840451 52.591463,-2.840611 52.591889,-2.840709 52.592094,-2.840819 52.592311,-2.841156 52.592947,-2.841231 52.593054,-2.841378 52.59321,-2.841452 52.593274)",
+ "LINESTRING(-2.888846 52.559077,-2.888526 52.559015,-2.8881 52.558936,-2.887961 52.558894,-2.887797 52.55883,-2.887612 52.558738,-2.887359 52.558609,-2.887079 52.558467,-2.886905 52.558368,-2.886651 52.558193,-2.886535 52.55806,-2.886397 52.55782,-2.886355 52.557709,-2.886353 52.557593,-2.886389 52.557524,-2.886442 52.55749,-2.886469 52.557473,-2.886648 52.557357,-2.886851 52.557271,-2.887098 52.557196,-2.887359 52.557129,-2.887542 52.557082,-2.887792 52.557048,-2.88827 52.557015,-2.888439 52.556996,-2.888542 52.55699,-2.889071 52.556911,-2.889527 52.556827,-2.889674 52.556817,-2.889807 52.556843,-2.890283 52.55701,-2.890685 52.557196,-2.890908 52.557302,-2.891384 52.557487)",
+ "LINESTRING(-2.829632 52.505566,-2.82985 52.505388,-2.830133 52.505157,-2.83044 52.504943,-2.831098 52.50454)",
+ "LINESTRING(-2.642485 52.161121,-2.642505 52.161137,-2.642515 52.161145,-2.642731 52.16118,-2.642813 52.161197,-2.643002 52.161234,-2.643168 52.161289,-2.643448 52.161364,-2.643565 52.161395)",
+ "LINESTRING(-2.637575 52.233071,-2.637728 52.233077,-2.637808 52.233079,-2.638076 52.233102,-2.638622 52.233136,-2.638791 52.233154,-2.638988 52.233195,-2.639222 52.233274,-2.639415 52.233362,-2.639539 52.233424,-2.63961 52.23345,-2.639721 52.233468,-2.639879 52.233473,-2.639982 52.233465,-2.640052 52.233456,-2.640186 52.233424,-2.640256 52.233391,-2.640318 52.233354,-2.640357 52.233311,-2.640411 52.233211,-2.640523 52.232946,-2.640638 52.232675,-2.64068 52.232612,-2.640723 52.23256,-2.640835 52.232451,-2.640927 52.232405,-2.641263 52.232261,-2.641743 52.23204,-2.642283 52.23178,-2.642565 52.231658,-2.642817 52.231562,-2.643029 52.231484,-2.643329 52.231368,-2.643708 52.231212,-2.64387 52.231162,-2.644195 52.231077,-2.644562 52.230981,-2.644794 52.230902,-2.644881 52.230856,-2.645009 52.230764,-2.645114 52.23066,-2.645264 52.230502,-2.645455 52.230308,-2.645595 52.230207,-2.64568 52.230165,-2.645736 52.230157,-2.645791 52.230153,-2.646069 52.230191,-2.646136 52.230212,-2.64618 52.230262,-2.646227 52.230349,-2.646285 52.230415,-2.646331 52.230442,-2.646375 52.230449,-2.646438 52.230451,-2.64652 52.230443,-2.646687 52.230402,-2.646814 52.230356,-2.646936 52.230288,-2.64703 52.230232,-2.647068 52.230219,-2.647089 52.230219,-2.647115 52.230227,-2.647136 52.230247,-2.647171 52.230303,-2.647317 52.2306,-2.64753 52.23105,-2.647562 52.231115,-2.647752 52.231493,-2.647963 52.231909,-2.648125 52.232278,-2.648195 52.23237,-2.648499 52.232678,-2.648787 52.233036)",
+ "LINESTRING(-2.690171 52.230102,-2.689196 52.230251,-2.689023 52.230279,-2.689 52.230275,-2.688958 52.230234,-2.688885 52.230144,-2.688817 52.230056,-2.688737 52.229961,-2.688654 52.229882,-2.688612 52.229842,-2.688251 52.229564,-2.687704 52.229139,-2.687509 52.228987,-2.687417 52.22891)",
+ "LINESTRING(-2.665954 52.174958,-2.665528 52.175062,-2.664759 52.175273,-2.663968 52.175413,-2.663044 52.175559,-2.662799 52.175583,-2.662155 52.175646,-2.66196 52.175665,-2.661055 52.175805,-2.660705 52.175852,-2.659976 52.175964,-2.659505 52.175989,-2.659009 52.17604,-2.658398 52.176098,-2.657639 52.176165,-2.657347 52.176185,-2.657069 52.176232,-2.656894 52.176251,-2.656646 52.176252,-2.656445 52.176242,-2.655922 52.176208,-2.655463 52.176181)",
+ "LINESTRING(-2.72594 52.149683,-2.72591 52.149665,-2.725895 52.149656,-2.725866 52.149657,-2.725793 52.149675,-2.725546 52.149748,-2.725343 52.149831,-2.725198 52.149903,-2.725159 52.149924,-2.72514 52.149949,-2.725155 52.149967,-2.725184 52.149984)",
+ "LINESTRING(-2.632796 52.240441,-2.63376 52.240018,-2.634053 52.239885,-2.634766 52.239675,-2.634794 52.239667,-2.634963 52.239618,-2.635271 52.239519,-2.635415 52.239464,-2.635737 52.239402,-2.636024 52.239367,-2.636327 52.239342,-2.63676 52.239321,-2.636986 52.23931,-2.637142 52.239302,-2.637321 52.239294,-2.63775 52.239315,-2.637888 52.239316,-2.637972 52.239302,-2.638385 52.239243,-2.638485 52.239241,-2.638748 52.239205,-2.639029 52.239164,-2.639202 52.239131,-2.639375 52.239092,-2.639563 52.239052,-2.639751 52.238986,-2.64009 52.238867,-2.640313 52.238778,-2.640843 52.238542,-2.641227 52.238369,-2.641732 52.238155,-2.64186 52.238089)",
+ "LINESTRING(-2.639628 52.316021,-2.639653 52.315956,-2.639945 52.315567,-2.640282 52.315088,-2.64036 52.314942,-2.640476 52.314813,-2.640679 52.314644,-2.640745 52.314588,-2.640912 52.314469,-2.641118 52.314317,-2.641179 52.314283,-2.641222 52.314259,-2.641342 52.314239,-2.641487 52.314269,-2.642391 52.314469,-2.642953 52.314591,-2.643178 52.314646)",
+ "LINESTRING(-2.665957 52.29218,-2.666931 52.29203,-2.667244 52.291978,-2.667331 52.29194,-2.667506 52.291819,-2.667615 52.291681,-2.667794 52.29147,-2.668031 52.291296,-2.66824 52.291155,-2.668371 52.291076,-2.668653 52.290936,-2.669207 52.290705,-2.669537 52.290575,-2.669953 52.290379,-2.670247 52.29023,-2.670637 52.290046,-2.670942 52.289843,-2.671075 52.289716,-2.671488 52.289099,-2.671632 52.288956,-2.672236 52.288543,-2.672427 52.288412,-2.672747 52.28806,-2.672811 52.287989,-2.672892 52.287933,-2.672999 52.287857,-2.673944 52.287449,-2.674238 52.287319,-2.674307 52.287288,-2.674378 52.287251,-2.674592 52.28714,-2.674977 52.286959,-2.675056 52.286924,-2.675263 52.28683,-2.675265 52.286828,-2.675294 52.286799,-2.675328 52.286766,-2.675371 52.286705,-2.675399 52.286661,-2.675431 52.286611,-2.675543 52.286414,-2.675699 52.286026,-2.675725 52.285828,-2.675767 52.28572,-2.675881 52.285486,-2.676288 52.284918,-2.67647 52.28468,-2.676749 52.284329,-2.677128 52.283814,-2.6772 52.283739,-2.677232 52.283728,-2.677302 52.283711,-2.677379 52.283733,-2.677402 52.283746)",
+ "LINESTRING(-2.672184 52.273394,-2.671954 52.273362,-2.671202 52.27319,-2.670777 52.273124,-2.670389 52.27307,-2.669867 52.272991,-2.669658 52.272944,-2.669554 52.272906,-2.669302 52.2728,-2.669102 52.272753,-2.669026 52.272692,-2.668962 52.272593,-2.668927 52.272465,-2.6689 52.272333,-2.668849 52.272254,-2.668552 52.271936,-2.668499 52.271864,-2.668375 52.271699,-2.668374 52.271697,-2.668306 52.271613,-2.668247 52.271578,-2.667917 52.271501,-2.667817 52.271476,-2.667733 52.271425,-2.667666 52.27137,-2.667582 52.271301,-2.667422 52.271071,-2.667232 52.270769,-2.667053 52.270509,-2.666868 52.270205,-2.666625 52.269824,-2.66648 52.269572,-2.666433 52.26948,-2.666419 52.269388,-2.666404 52.26923,-2.666411 52.269141,-2.666439 52.269054,-2.666486 52.26889,-2.666521 52.268726,-2.666542 52.268474,-2.666572 52.268218,-2.66661 52.267985,-2.666625 52.267873,-2.666709 52.267648,-2.6668 52.267359,-2.666856 52.267185,-2.666864 52.266914,-2.666884 52.266832,-2.666937 52.266732,-2.666994 52.266678,-2.667118 52.266601,-2.667395 52.266464,-2.667439 52.266433)",
+ "LINESTRING(-2.692432 52.276201,-2.692573 52.276122,-2.692668 52.276056,-2.69298 52.275861,-2.693366 52.275692,-2.693791 52.275545,-2.693888 52.27549,-2.693936 52.275445,-2.69398 52.275364,-2.694043 52.275154,-2.694096 52.27492,-2.69415 52.274558,-2.694205 52.274431,-2.694414 52.273995,-2.694706 52.273077,-2.694727 52.273025,-2.694777 52.272924,-2.694852 52.272846,-2.694945 52.272757,-2.695188 52.272611,-2.695378 52.272511,-2.695563 52.272425,-2.695781 52.272325,-2.69595 52.272254,-2.696126 52.272181,-2.696269 52.272109,-2.69645 52.271997,-2.696741 52.271827,-2.696895 52.271751,-2.697155 52.27167,-2.697364 52.271596,-2.697454 52.27156,-2.697493 52.271543,-2.697549 52.271515,-2.697592 52.271487,-2.69765 52.271451,-2.697679 52.271433,-2.697693 52.271388)",
+ "LINESTRING(-2.71662 52.29899,-2.716103 52.299093,-2.71594 52.299121,-2.715839 52.299122,-2.715711 52.299112,-2.715571 52.299113,-2.715197 52.299153,-2.714666 52.299215,-2.714587 52.299221,-2.714368 52.299293,-2.714006 52.299449,-2.713865 52.299471,-2.713742 52.299458,-2.713671 52.299432,-2.713618 52.299416,-2.713543 52.299414,-2.713271 52.299485,-2.713048 52.299527,-2.712863 52.299542,-2.712736 52.299537,-2.712603 52.299514,-2.712426 52.299461,-2.712134 52.299365,-2.711913 52.299299,-2.711755 52.299265,-2.711653 52.299244,-2.711437 52.299227,-2.711186 52.29922,-2.710958 52.299232,-2.71072 52.299215,-2.710236 52.299199,-2.709901 52.299171,-2.709575 52.299138,-2.709434 52.299134,-2.709285 52.299151,-2.709074 52.299203,-2.708771 52.299229,-2.708419 52.299242,-2.708094 52.299239,-2.707891 52.299202,-2.707749 52.299133,-2.707594 52.299058,-2.707474 52.298978,-2.70734 52.298882,-2.707131 52.298743,-2.706936 52.298636,-2.706577 52.298439,-2.706244 52.298255,-2.706146 52.298212,-2.706107 52.298204)",
+ "LINESTRING(-2.625241 52.364223,-2.625313 52.364079,-2.625396 52.363755,-2.625417 52.363684,-2.625467 52.36353,-2.625566 52.363323,-2.625637 52.363115,-2.625694 52.362997,-2.625737 52.362908,-2.625837 52.362728,-2.626097 52.362394,-2.626226 52.362213,-2.626255 52.362177,-2.626284 52.362105,-2.626297 52.362024,-2.62631 52.361925,-2.626308 52.361772,-2.626276 52.361658,-2.626215 52.36144,-2.626199 52.361341,-2.626197 52.36118,-2.62623 52.361076,-2.626386 52.360856,-2.626497 52.360664,-2.626545 52.360526,-2.626561 52.360396,-2.626552 52.360324,-2.626536 52.360216,-2.62655 52.360062,-2.626547 52.359991,-2.626569 52.359896,-2.626591 52.359799,-2.626651 52.359693,-2.626763 52.359532,-2.626821 52.35939,-2.626881 52.359282,-2.626983 52.358974,-2.626997 52.358931,-2.62704 52.358888,-2.627095 52.358848,-2.627292 52.358805,-2.627482 52.358788,-2.627652 52.358769,-2.627925 52.358743,-2.628089 52.3587,-2.628234 52.358601,-2.6284 52.358454,-2.628643 52.358199,-2.628776 52.358066,-2.628833 52.357997)",
+ "LINESTRING(-2.701915 52.415412,-2.70192 52.415411,-2.701938 52.415405,-2.701956 52.4154,-2.701968 52.415395,-2.701982 52.41539,-2.701996 52.415385,-2.70201 52.41538,-2.702027 52.415375,-2.702051 52.415369,-2.702096 52.415363,-2.702615 52.415426,-2.70304 52.415478,-2.703535 52.415544,-2.703915 52.415593,-2.704146 52.415621,-2.704382 52.415651,-2.704569 52.415674,-2.704741 52.415695,-2.704891 52.415713,-2.705012 52.415727,-2.705118 52.41574,-2.705203 52.415751,-2.705272 52.415759,-2.705334 52.415767,-2.705401 52.415775)",
+ "LINESTRING(-2.707812 52.377531,-2.707872 52.377589,-2.708109 52.377788,-2.708334 52.377977,-2.708556 52.378111,-2.709177 52.378368,-2.70934 52.37842,-2.709472 52.378447,-2.709956 52.378548)",
+ "LINESTRING(-2.620516 52.379118,-2.620457 52.379211,-2.620431 52.379337,-2.62039 52.37952,-2.62036 52.37975,-2.620341 52.379986,-2.620345 52.380114,-2.6204 52.380269,-2.6204 52.380305,-2.620328 52.380386,-2.620246 52.380461,-2.620105 52.380619,-2.620013 52.38068,-2.619911 52.380753,-2.619865 52.380797,-2.619844 52.380845,-2.619698 52.380995,-2.61959 52.381106,-2.61956 52.381171,-2.619543 52.381275,-2.619538 52.381331)",
+ "LINESTRING(-2.707602 52.372668,-2.707795 52.372744,-2.70812 52.372872,-2.70846 52.372996)",
+ "LINESTRING(-2.711811 52.37457,-2.711658 52.374351,-2.711597 52.374317,-2.711513 52.374312,-2.711339 52.374339,-2.710727 52.374445,-2.710437 52.374497,-2.710174 52.374562,-2.709927 52.374623,-2.709397 52.374757)",
+ "LINESTRING(-2.706761 52.37698,-2.706716 52.376953,-2.706627 52.37689,-2.706537 52.37681,-2.706388 52.376667,-2.706314 52.376596,-2.706192 52.376318,-2.706146 52.376153)",
+ "LINESTRING(-2.621756 52.445112,-2.621868 52.444997,-2.621989 52.444842,-2.622251 52.444614,-2.622538 52.444381,-2.622715 52.444245,-2.622746 52.444162,-2.622761 52.444092,-2.622739 52.444014,-2.622645 52.443805,-2.622485 52.443494,-2.622426 52.443401,-2.62237 52.443298,-2.622323 52.443194,-2.622298 52.443091,-2.622292 52.442974,-2.622318 52.442867,-2.622363 52.442789,-2.622434 52.442638,-2.622483 52.442528,-2.622536 52.442409,-2.622539 52.442289,-2.622522 52.442225,-2.622475 52.44213,-2.62243 52.442042,-2.622353 52.441909,-2.622241 52.441739,-2.622058 52.441463,-2.621748 52.441037,-2.621524 52.440713,-2.621368 52.440483,-2.621248 52.440291,-2.621166 52.440152,-2.621086 52.439994,-2.621018 52.439834,-2.62092 52.439574,-2.620759 52.439153,-2.620586 52.438729,-2.620425 52.438338,-2.620138 52.437647)",
+ "LINESTRING(-2.654057 52.461737,-2.654156 52.461723,-2.654248 52.461682,-2.654354 52.461623,-2.654612 52.461392,-2.654764 52.461257,-2.654893 52.461097,-2.655048 52.460894,-2.655062 52.460875,-2.655109 52.460821,-2.655134 52.460792,-2.655226 52.46069,-2.655231 52.460685,-2.655344 52.460581,-2.655418 52.460523,-2.65552 52.460452,-2.655555 52.460434,-2.655627 52.460397,-2.655695 52.460367,-2.655719 52.460356,-2.655819 52.460324,-2.655992 52.460266,-2.656134 52.460217,-2.656205 52.460188,-2.656229 52.460176,-2.656276 52.460152,-2.6564 52.460089,-2.656492 52.46003,-2.656579 52.45996,-2.656722 52.459843,-2.656837 52.459745,-2.657007 52.459598,-2.657009 52.459596,-2.657095 52.459498,-2.657107 52.459484,-2.657153 52.459424,-2.657211 52.459359,-2.657332 52.459224,-2.657388 52.459182,-2.657462 52.459126,-2.65762 52.459015,-2.65783 52.458869,-2.657942 52.458791,-2.658069 52.458703,-2.658316 52.458521,-2.658471 52.45842,-2.658762 52.458249,-2.65919 52.458021,-2.659703 52.457759,-2.659955 52.457606)",
+ "LINESTRING(-2.735941 52.47267,-2.735934 52.472667,-2.735924 52.472661,-2.735852 52.47262,-2.735599 52.47246,-2.73548 52.47237,-2.735464 52.472357,-2.735361 52.472276,-2.735294 52.472218,-2.735262 52.472172,-2.735206 52.472079,-2.735165 52.472022,-2.734934 52.471758,-2.734895 52.471727,-2.734885 52.471718,-2.734835 52.471673,-2.734825 52.471663,-2.734729 52.471589,-2.734697 52.47157,-2.73464 52.471541,-2.734612 52.471531)",
+ "LINESTRING(-2.600202 52.588818,-2.599984 52.588964,-2.599881 52.58905,-2.599775 52.589104,-2.599548 52.589215,-2.599542 52.589219,-2.599052 52.589451,-2.59847 52.589744,-2.598061 52.589933,-2.597517 52.59018,-2.597069 52.590412,-2.596399 52.590737,-2.596005 52.590942,-2.595702 52.591172,-2.595278 52.591479,-2.594971 52.591716,-2.594324 52.592189,-2.594038 52.592401,-2.593483 52.592668,-2.592961 52.592903,-2.592742 52.593009,-2.59245 52.593148,-2.592205 52.593362,-2.591903 52.593647,-2.591599 52.593929,-2.591221 52.594265,-2.590853 52.594544,-2.590349 52.594841,-2.589792 52.595132,-2.589358 52.595346,-2.588695 52.595666,-2.58789 52.596063,-2.587503 52.596248,-2.587206 52.59639,-2.586929 52.596499,-2.58639 52.596768,-2.585825 52.597044,-2.585507 52.597212,-2.585136 52.597431,-2.584636 52.597744,-2.584113 52.598065,-2.583643 52.598353,-2.583338 52.598545,-2.58302 52.598717,-2.582686 52.5989,-2.582504 52.598987,-2.582322 52.599055,-2.582214 52.599083,-2.581887 52.599137,-2.581618 52.599174,-2.581605 52.599185,-2.5816 52.59919,-2.581574 52.599213,-2.581574 52.599231)",
+ "LINESTRING(-2.643908 52.583275,-2.643708 52.583233,-2.643223 52.58317,-2.642576 52.583105,-2.641417 52.582982,-2.64131 52.582971,-2.641297 52.582969,-2.641206 52.582963,-2.641102 52.582947,-2.640998 52.582903,-2.640938 52.582866,-2.640862 52.582804,-2.640729 52.582636,-2.640672 52.582555,-2.640647 52.582507,-2.640625 52.582469,-2.640621 52.58244,-2.640622 52.582385,-2.640636 52.582358,-2.640709 52.582304,-2.640817 52.58222,-2.6409 52.582151,-2.640989 52.582077,-2.641102 52.58199,-2.641183 52.581935,-2.641303 52.581863,-2.641425 52.581798,-2.64147 52.581768,-2.641513 52.581728,-2.641632 52.58163,-2.64178 52.5815,-2.641912 52.581426,-2.642237 52.581273,-2.642484 52.58117,-2.642678 52.581101,-2.642836 52.581071)",
+ "LINESTRING(-2.694135 52.569982,-2.6944 52.570116,-2.694927 52.57055,-2.695022 52.570633,-2.695077 52.570645,-2.695132 52.57064,-2.695204 52.570588,-2.695539 52.570325,-2.695671 52.570243,-2.6957 52.570225,-2.695773 52.570198,-2.695832 52.570188,-2.695906 52.570188,-2.696069 52.570214,-2.696187 52.570213,-2.696305 52.570213,-2.696393 52.570194,-2.696452 52.570185,-2.69654 52.570139,-2.696642 52.570067,-2.696685 52.570013,-2.696742 52.569886,-2.696786 52.569832,-2.696829 52.569796,-2.696932 52.569733,-2.697108 52.569669,-2.697695 52.569485,-2.69793 52.569412,-2.698376 52.569276,-2.698473 52.569256,-2.698576 52.569219,-2.699147 52.568955,-2.699557 52.568755,-2.70001 52.568492,-2.700259 52.568355,-2.700596 52.568219,-2.70091 52.568118,-2.701081 52.568063,-2.701433 52.567971,-2.701933 52.56786,-2.702052 52.567827)",
+ "LINESTRING(-2.735197 52.581367,-2.734933 52.581501,-2.734664 52.581612,-2.734412 52.581716,-2.734155 52.581793,-2.73393 52.581831,-2.733637 52.581899,-2.733549 52.581899)",
+ "LINESTRING(-2.471251 52.186382,-2.471183 52.186377,-2.471137 52.186366,-2.471089 52.18633,-2.471061 52.186262,-2.471046 52.186148,-2.471038 52.186098,-2.470963 52.186025,-2.470884 52.185977,-2.470715 52.185932,-2.470661 52.185913,-2.470461 52.185895,-2.470222 52.185855,-2.470068 52.185818,-2.46998 52.185797,-2.469735 52.185775,-2.469362 52.185764,-2.469308 52.185757,-2.468923 52.185734,-2.468668 52.185713,-2.468601 52.185695,-2.468482 52.185663,-2.468349 52.185615,-2.468213 52.185558,-2.468109 52.185501,-2.467894 52.185386,-2.467456 52.185107,-2.467185 52.184921,-2.467114 52.184875,-2.466823 52.184617,-2.466688 52.184521,-2.466615 52.184469,-2.466488 52.184209,-2.466276 52.183883)",
+ "LINESTRING(-2.471194 52.161747,-2.471208 52.161746,-2.471329 52.161734,-2.471447 52.16172,-2.471514 52.161706,-2.471686 52.16167,-2.471771 52.161669,-2.47189 52.161687)",
+ "LINESTRING(-2.486775 52.192233,-2.486664 52.192166,-2.486034 52.191851,-2.485589 52.191668,-2.485207 52.191477,-2.485187 52.191467,-2.484394 52.191077,-2.484261 52.190967,-2.484201 52.190922,-2.484156 52.190876,-2.484035 52.19073,-2.483971 52.190665,-2.483911 52.190625,-2.48372 52.1905,-2.483666 52.190465,-2.483521 52.19038,-2.483259 52.190129,-2.483087 52.189954,-2.482767 52.189456)",
+ "LINESTRING(-2.506368 52.187521,-2.506339 52.187566,-2.50631 52.187593,-2.506252 52.187611,-2.506223 52.18762,-2.506091 52.187603)",
+ "LINESTRING(-2.505218 52.189211,-2.505069 52.189019,-2.504941 52.188854)",
+ "LINESTRING(-2.50762 52.201419,-2.507724 52.201279,-2.50784 52.201135,-2.507882 52.201,-2.507915 52.200773,-2.50795 52.200666,-2.507951 52.200662,-2.508038 52.200532,-2.508095 52.200451,-2.508153 52.200388,-2.508225 52.200315,-2.508327 52.200234,-2.508414 52.200171,-2.508574 52.20008,-2.509286 52.199681,-2.509563 52.199545,-2.509636 52.199518,-2.509841 52.199449,-2.510023 52.199411,-2.51022 52.199386,-2.51036 52.199374,-2.510693 52.19938,-2.511144 52.199398,-2.511418 52.199391,-2.511575 52.199373,-2.51177 52.199338,-2.512456 52.199218,-2.51266 52.19919,-2.513226 52.199136,-2.513306 52.199118,-2.513362 52.199106,-2.513367 52.199105,-2.5135 52.199064,-2.51351 52.199059,-2.51353 52.199049,-2.513624 52.199006,-2.513725 52.198907)",
+ "LINESTRING(-2.511843 52.190473,-2.511727 52.190563,-2.511672 52.190594,-2.511625 52.1906,-2.511465 52.190619,-2.511392 52.190628,-2.511333 52.190628,-2.5113 52.19062,-2.511274 52.190601,-2.511259 52.190574,-2.511153 52.190269,-2.511032 52.189865,-2.511017 52.189818,-2.511001 52.189775,-2.510972 52.189749,-2.510928 52.189731,-2.510884 52.189713,-2.510825 52.189713,-2.510723 52.189723,-2.510636 52.189744)",
+ "LINESTRING(-2.540195 52.199951,-2.540115 52.199992,-2.539923 52.200124,-2.539792 52.200195,-2.539712 52.200274,-2.539129 52.200421,-2.538881 52.200476,-2.538735 52.200495,-2.538427 52.200514,-2.538121 52.20056,-2.53796 52.200597,-2.537669 52.200706,-2.537523 52.200761,-2.537131 52.201005,-2.53671 52.201286,-2.536448 52.201413,-2.536288 52.201477,-2.536113 52.201522,-2.535953 52.201568,-2.535734 52.201605,-2.535573 52.201633,-2.535295 52.201652,-2.53512 52.201644,-2.535061 52.201635,-2.534944 52.2016,-2.53487 52.201564,-2.534723 52.201475,-2.534162 52.201073,-2.534088 52.201019,-2.533631 52.200707,-2.533528 52.200662,-2.533454 52.200644,-2.533393 52.200645,-2.533258 52.200637,-2.532589 52.200671,-2.532514 52.200672,-2.532447 52.200673,-2.532357 52.200667,-2.532181 52.20065,-2.531512 52.200542,-2.531233 52.200507,-2.531033 52.200494,-2.530901 52.200478,-2.530773 52.200462,-2.529977 52.200263,-2.529738 52.200201,-2.529564 52.200141,-2.529338 52.200039,-2.529245 52.199997,-2.528879 52.199775,-2.528693 52.199663,-2.528521 52.199549,-2.528378 52.199481,-2.528156 52.199402,-2.52758 52.19925,-2.527218 52.199153,-2.526851 52.199047,-2.526484 52.198959,-2.526279 52.198897,-2.525676 52.198692,-2.525427 52.198595,-2.524883 52.198372,-2.524721 52.198328,-2.524545 52.198293)",
+ "LINESTRING(-2.544544 52.17669,-2.544596 52.176676,-2.544688 52.176668,-2.544773 52.176675,-2.54492 52.176689,-2.545117 52.176722,-2.545294 52.176748,-2.545435 52.176759,-2.545625 52.176784,-2.545699 52.176791,-2.545889 52.176809,-2.546085 52.176831,-2.546323 52.176845,-2.546654 52.176873,-2.546825 52.176888,-2.547009 52.17689,-2.54726 52.176893,-2.547529 52.176899,-2.547848 52.176917,-2.548111 52.176923,-2.548264 52.176934,-2.548447 52.176948,-2.548566 52.176945)",
+ "LINESTRING(-2.572267 52.237221,-2.572354 52.23703,-2.572462 52.236915,-2.572642 52.236834,-2.572777 52.236822,-2.573147 52.236798,-2.573256 52.23677,-2.573293 52.236761,-2.573381 52.236734,-2.573672 52.236597,-2.57437 52.23618,-2.574776 52.235936,-2.575348 52.235529,-2.575583 52.235373,-2.575987 52.235117,-2.576503 52.234756,-2.576544 52.234726,-2.576745 52.234593,-2.576895 52.234517,-2.577057 52.234461,-2.577394 52.234363,-2.577633 52.234284,-2.577839 52.234198,-2.577967 52.234153,-2.578536 52.233986,-2.579064 52.233819,-2.579075 52.233815,-2.579399 52.23368,-2.579744 52.233564,-2.580219 52.233415,-2.580847 52.233218)",
+ "LINESTRING(-2.441663 52.321315,-2.441916 52.321358,-2.442019 52.321366,-2.442294 52.321388,-2.44248 52.321436,-2.442685 52.321469,-2.44299 52.321514,-2.443297 52.32154,-2.443602 52.321574,-2.443702 52.321607,-2.443745 52.321669,-2.443789 52.32201,-2.443829 52.322171,-2.443914 52.322332,-2.443995 52.322392,-2.444002 52.322398,-2.444023 52.322413,-2.444032 52.322417,-2.444041 52.322421,-2.4441 52.322447,-2.444476 52.322556,-2.444493 52.32256,-2.444694 52.322611,-2.444935 52.322681,-2.445149 52.322755,-2.445355 52.322852,-2.445631 52.323012,-2.445893 52.323175,-2.446104 52.323281,-2.44629 52.323343,-2.446489 52.323402,-2.446927 52.323534,-2.447081 52.323584,-2.447145 52.323602,-2.447282 52.323637,-2.447384 52.323654,-2.447486 52.323657,-2.447589 52.323648,-2.448131 52.323592,-2.448249 52.323592,-2.44849 52.323599,-2.448762 52.323617)",
+ "LINESTRING(-2.472028 52.316325,-2.472073 52.316386,-2.472207 52.316558,-2.472267 52.316683,-2.472312 52.316764,-2.472327 52.316809,-2.472343 52.316962,-2.472345 52.317132,-2.472304 52.317456,-2.47229 52.317501,-2.472203 52.317683,-2.472045 52.317966,-2.472003 52.318045,-2.47196 52.318159,-2.471917 52.318267,-2.471903 52.318312,-2.471859 52.318375,-2.47183 52.318402,-2.471801 52.318429,-2.471758 52.318447,-2.471654 52.318472)",
+ "LINESTRING(-2.513312 52.310431,-2.513306 52.310371,-2.5133 52.310355,-2.513222 52.310076,-2.513172 52.30988,-2.513115 52.309663,-2.513099 52.309626,-2.513048 52.309509,-2.513032 52.309431,-2.513078 52.309344,-2.513109 52.309326,-2.513184 52.309281,-2.513257 52.309237,-2.513461 52.309147,-2.513605 52.309075,-2.513739 52.309009,-2.513795 52.308971,-2.513839 52.308901,-2.513843 52.308833,-2.513782 52.30868,-2.513738 52.308606,-2.513621 52.308397,-2.513579 52.308322,-2.513493 52.308058,-2.513457 52.307962,-2.513405 52.307867,-2.513197 52.307596,-2.51312 52.30749,-2.512969 52.307256,-2.512865 52.307106,-2.512804 52.307012,-2.512779 52.306933,-2.512773 52.306863,-2.512784 52.306794,-2.5128 52.306747)",
+ "LINESTRING(-2.447545 52.312033,-2.447574 52.312015,-2.447603 52.311997,-2.447748 52.311762,-2.447893 52.311609,-2.447984 52.31151,-2.448009 52.311483,-2.448242 52.311302,-2.448344 52.311221,-2.448708 52.310967,-2.448795 52.310904,-2.449013 52.310652,-2.449042 52.310616,-2.449071 52.310597,-2.449114 52.31057,-2.44929 52.310507,-2.449859 52.310217,-2.449961 52.310154,-2.449975 52.3101,-2.450001 52.309803,-2.450015 52.309686,-2.450058 52.309587,-2.45013 52.309434,-2.450235 52.309256,-2.450453 52.309011,-2.450681 52.308838,-2.450827 52.30873,-2.451118 52.308531,-2.451569 52.308206,-2.451685 52.308114,-2.451712 52.308092,-2.451754 52.308061,-2.4518 52.308009,-2.451846 52.307936,-2.451896 52.307834,-2.451924 52.307764,-2.451926 52.307708,-2.451935 52.307634,-2.451944 52.307557,-2.451928 52.307467,-2.451928 52.307465,-2.451913 52.307395,-2.451838 52.307198,-2.45185 52.307128,-2.451852 52.307116,-2.451856 52.307093,-2.451884 52.307035,-2.451961 52.306947,-2.452048 52.306867,-2.452174 52.306789,-2.452283 52.306727,-2.452473 52.306631,-2.452524 52.306604,-2.452668 52.30651,-2.45271 52.306475,-2.45303 52.306222,-2.453176 52.306123,-2.453239 52.306091)",
+ "LINESTRING(-2.504205 52.303927,-2.504313 52.303921,-2.504708 52.303739,-2.504743 52.303727,-2.504947 52.303657,-2.505136 52.30361,-2.505179 52.303607,-2.505327 52.303594,-2.505721 52.303539,-2.505735 52.303537,-2.506063 52.303488,-2.506494 52.303412,-2.506697 52.303379,-2.506829 52.303359,-2.507095 52.303328,-2.507372 52.303307,-2.507605 52.303302,-2.507775 52.303307,-2.508311 52.303289,-2.508416 52.303304,-2.508705 52.303355,-2.509098 52.303421,-2.509553 52.30349,-2.509639 52.303492,-2.509761 52.303471,-2.509877 52.303422,-2.509979 52.303349,-2.510145 52.303238,-2.510265 52.303178,-2.51049 52.303111,-2.510669 52.303047,-2.510794 52.302988,-2.510973 52.302883,-2.511093 52.302795,-2.511267 52.302679,-2.511436 52.302578,-2.511679 52.302427,-2.511826 52.302358,-2.511969 52.30229,-2.512169 52.302212,-2.512498 52.302075,-2.51274 52.301972,-2.512942 52.3019,-2.513044 52.301864,-2.513083 52.301833,-2.513105 52.301787,-2.513094 52.301723,-2.513033 52.30132,-2.512999 52.301071,-2.512998 52.301062)",
+ "LINESTRING(-2.471692 52.306163,-2.471601 52.306131,-2.471559 52.30611,-2.471471 52.306066,-2.471372 52.306008,-2.471235 52.305918,-2.471124 52.305828,-2.470985 52.3057,-2.470942 52.305644,-2.470888 52.305565,-2.470828 52.305459,-2.470768 52.305348,-2.470707 52.305268,-2.470672 52.30523,-2.470672 52.30523,-2.470671 52.305229,-2.47066 52.305224)",
+ "LINESTRING(-2.460975 52.291103,-2.460895 52.291139,-2.460541 52.291265,-2.46029 52.29135,-2.460273 52.29136,-2.460239 52.29138,-2.460162 52.291444,-2.460092 52.291508,-2.460018 52.291578,-2.459951 52.291614,-2.459858 52.291635,-2.459754 52.291643,-2.459648 52.29164,-2.45952 52.291627,-2.459354 52.291608,-2.459248 52.291608,-2.459195 52.291613,-2.459113 52.291632,-2.458917 52.291709,-2.458094 52.292053,-2.457536 52.29228,-2.45715 52.292444,-2.456959 52.292532,-2.456719 52.292656,-2.455967 52.293047,-2.45559 52.293237,-2.455529 52.293266,-2.455447 52.293284,-2.454891 52.293361,-2.454729 52.293387,-2.454654 52.293412,-2.454636 52.293418,-2.45458 52.293447)",
+ "LINESTRING(-2.527254 52.284957,-2.527217 52.284992,-2.527166 52.285086,-2.527039 52.285303,-2.527002 52.285402,-2.52696 52.285441,-2.526887 52.28558,-2.526854 52.28564,-2.526846 52.285665,-2.526847 52.285695,-2.526855 52.285734,-2.52687 52.285764,-2.526912 52.285807,-2.526946 52.285842,-2.526988 52.285887,-2.527049 52.285949,-2.527079 52.285988,-2.527129 52.286055,-2.527159 52.286105,-2.527186 52.286149,-2.527216 52.286195,-2.52724 52.286247,-2.527259 52.286296,-2.527294 52.286383,-2.527327 52.286465,-2.527392 52.286665,-2.527405 52.286865,-2.527394 52.287169,-2.527378 52.287376,-2.527368 52.287493,-2.527344 52.287666,-2.527326 52.287704,-2.527292 52.287753,-2.527281 52.287816,-2.527302 52.287863,-2.527411 52.287887,-2.527687 52.287883,-2.52791 52.287894,-2.528124 52.287909,-2.528404 52.287941,-2.528654 52.287974,-2.528888 52.288003,-2.529118 52.288033,-2.52948 52.288081,-2.5296 52.288088,-2.5299 52.288117,-2.530232 52.288148,-2.530578 52.288161,-2.530763 52.288171,-2.530984 52.288192,-2.531201 52.2882,-2.531392 52.288201,-2.531518 52.288207,-2.531633 52.288219,-2.531806 52.288224,-2.531985 52.288245,-2.532221 52.288262,-2.532435 52.288288,-2.532926 52.288341,-2.533105 52.288362,-2.533188 52.288389,-2.533259 52.288423,-2.533339 52.288487,-2.533333 52.288518,-2.533328 52.288566,-2.53334 52.288619,-2.533332 52.288664,-2.533289 52.288739,-2.533199 52.288857,-2.533167 52.2889,-2.533148 52.288969,-2.533137 52.289042,-2.533123 52.28912,-2.53308 52.28919,-2.533037 52.289243,-2.532926 52.289358,-2.532822 52.289458,-2.532779 52.289508,-2.532703 52.289579,-2.532616 52.289655,-2.532564 52.28971)",
+ "LINESTRING(-2.448937 52.282899,-2.448852 52.28286,-2.448805 52.282836,-2.447935 52.28238,-2.447175 52.281963,-2.446732 52.28172,-2.446589 52.281628,-2.44658 52.281619,-2.446447 52.281495,-2.446396 52.281389,-2.446387 52.281328,-2.446405 52.281235,-2.446457 52.281182,-2.446507 52.281131,-2.446744 52.281)",
+ "LINESTRING(-2.563133 52.253041,-2.563455 52.252986,-2.563777 52.252876,-2.564579 52.252572,-2.56506 52.25239,-2.565162 52.252371,-2.565269 52.252375,-2.566355 52.252547,-2.566456 52.252563,-2.567209 52.252685,-2.567378 52.252711,-2.567596 52.252732,-2.568538 52.252798,-2.569435 52.252855,-2.569635 52.252857,-2.569726 52.252852,-2.57001 52.252813,-2.570499 52.252757,-2.570648 52.25274,-2.570966 52.25271,-2.57109 52.252714,-2.571365 52.252768,-2.571592 52.252817,-2.57164 52.252824,-2.571675 52.252829,-2.571753 52.25283,-2.571852 52.252811,-2.571865 52.252804,-2.571958 52.252754,-2.572143 52.252652,-2.572291 52.252577,-2.57244 52.252535,-2.572446 52.252534,-2.572473 52.25253,-2.572666 52.252499,-2.57274 52.252496,-2.572809 52.252494,-2.572882 52.252499)",
+ "LINESTRING(-2.548434 52.318773,-2.54837 52.31869,-2.548342 52.318571,-2.54829 52.318243,-2.548328 52.318091,-2.548343 52.317724,-2.548345 52.317578,-2.548348 52.317463,-2.548352 52.317393,-2.548359 52.31729,-2.548367 52.317172,-2.548362 52.317132,-2.548348 52.317089,-2.548335 52.317051,-2.548303 52.317005,-2.548268 52.316968,-2.548228 52.316939,-2.548197 52.316914)",
+ "LINESTRING(-2.5647 52.280694,-2.564611 52.280667,-2.564554 52.280647,-2.564553 52.280646,-2.564466 52.280583,-2.564464 52.280581,-2.564462 52.280579,-2.564382 52.280491,-2.5643 52.280394,-2.5642 52.280285,-2.564089 52.280184,-2.564012 52.280141,-2.563911 52.280103,-2.563849 52.28009,-2.56382 52.280083,-2.563771 52.280073,-2.56375 52.280071,-2.563685 52.280064,-2.56362 52.280057)",
+ "LINESTRING(-2.572267 52.237221,-2.572354 52.23703,-2.572462 52.236915,-2.572642 52.236834,-2.572777 52.236822,-2.573147 52.236798,-2.573256 52.23677,-2.573293 52.236761,-2.573381 52.236734,-2.573672 52.236597,-2.57437 52.23618,-2.574776 52.235936,-2.575348 52.235529,-2.575583 52.235373,-2.575987 52.235117,-2.576503 52.234756,-2.576544 52.234726,-2.576745 52.234593,-2.576895 52.234517,-2.577057 52.234461,-2.577394 52.234363,-2.577633 52.234284,-2.577839 52.234198,-2.577967 52.234153,-2.578536 52.233986,-2.579064 52.233819,-2.579075 52.233815,-2.579399 52.23368,-2.579744 52.233564,-2.580219 52.233415,-2.580847 52.233218)",
+ "LINESTRING(-2.471886 52.410372,-2.472048 52.410396,-2.472451 52.410365,-2.473273 52.4103,-2.473549 52.410281,-2.473782 52.410266,-2.474242 52.410265,-2.474647 52.410255,-2.474666 52.410255,-2.474948 52.410239,-2.475095 52.410224,-2.475192 52.410209,-2.475535 52.410156,-2.476032 52.410086,-2.476313 52.41005,-2.476674 52.410016,-2.476947 52.409988,-2.47713 52.409984,-2.477333 52.409991,-2.477465 52.410011,-2.477505 52.410023,-2.477604 52.410054,-2.477621 52.410059,-2.47776 52.410118,-2.477938 52.410225,-2.47796 52.410242,-2.478004 52.410276,-2.478065 52.410324,-2.478077 52.410336,-2.478164 52.410437,-2.478193 52.410445,-2.478311 52.410454,-2.478707 52.410425,-2.478741 52.410429)",
+ "LINESTRING(-2.466721 52.410894,-2.466809 52.41093,-2.466969 52.411017,-2.467398 52.411283,-2.46767 52.411458,-2.467738 52.411487,-2.467844 52.411521,-2.468032 52.411543,-2.468194 52.411562,-2.468255 52.411569,-2.470843 52.41184,-2.471402 52.411902)",
+ "LINESTRING(-2.554667 52.389753,-2.554543 52.38971,-2.554214 52.389653,-2.55373 52.389577,-2.553436 52.389514,-2.553155 52.389412,-2.552772 52.38929,-2.552624 52.389246,-2.552374 52.389193,-2.552153 52.389131,-2.552101 52.389104,-2.552049 52.389077,-2.552 52.389048)",
+ "LINESTRING(-2.474069 52.386413,-2.474094 52.386471,-2.474115 52.386496,-2.474138 52.386512,-2.474147 52.386518,-2.474168 52.386532,-2.474186 52.386543,-2.474206 52.38655,-2.474224 52.386555,-2.474247 52.386557,-2.474265 52.386558,-2.474356 52.386555)",
+ "LINESTRING(-2.577546 52.379129,-2.577584 52.379095,-2.577739 52.379002,-2.57807 52.378821,-2.579069 52.378298,-2.580057 52.377738,-2.580511 52.377505,-2.580879 52.3773,-2.58191 52.376725,-2.5821 52.376616,-2.582245 52.37653,-2.582368 52.376457,-2.582477 52.376409,-2.582588 52.376376,-2.582702 52.376349,-2.582832 52.37633,-2.583016 52.376318,-2.583245 52.376315,-2.583266 52.376315,-2.583497 52.376348,-2.583633 52.376389,-2.583712 52.376413,-2.583878 52.376449,-2.584109 52.376495,-2.584299 52.376554,-2.584416 52.376593,-2.58449 52.376599,-2.584599 52.376567,-2.584676 52.376514,-2.584728 52.376458,-2.584749 52.376421)",
+ "LINESTRING(-2.459996 52.457962,-2.459215 52.4578,-2.45878 52.457693,-2.458686 52.457664,-2.458619 52.457636,-2.458585 52.457607,-2.458548 52.457468,-2.458519 52.457359,-2.458485 52.457302,-2.458481 52.457242,-2.458492 52.457168,-2.458519 52.457079,-2.458548 52.456995,-2.458598 52.456919,-2.458673 52.456838,-2.458893 52.456647,-2.459155 52.456424,-2.459233 52.456346,-2.459266 52.456298,-2.459277 52.456238,-2.459288 52.456113,-2.459284 52.455913,-2.459288 52.45563,-2.459307 52.45544,-2.459305 52.455367,-2.459301 52.455309,-2.459283 52.455264,-2.459234 52.455202,-2.459169 52.455154,-2.459056 52.455092,-2.458995 52.455039,-2.458933 52.454965,-2.458907 52.454912,-2.458852 52.454721,-2.458775 52.454426,-2.458715 52.454227,-2.458665 52.454112,-2.458609 52.454007,-2.458514 52.453871,-2.458433 52.453774,-2.458356 52.453697,-2.458293 52.45363,-2.458277 52.453587)",
+ "LINESTRING(-2.578602 52.498031,-2.579251 52.498096,-2.579281 52.498114,-2.579311 52.498132,-2.579329 52.498169,-2.579309 52.498265)",
+ "LINESTRING(-2.571655 52.452134,-2.571922 52.452084,-2.572008 52.452068,-2.572449 52.452065,-2.573334 52.452059,-2.573409 52.452073)",
+ "LINESTRING(-2.545333 52.455671,-2.545365 52.455672,-2.545391 52.455671,-2.545479 52.455653,-2.545553 52.455635,-2.545919 52.455507,-2.545995 52.455476,-2.54605 52.455469,-2.546051 52.455469,-2.546107 52.455486,-2.54617 52.455533,-2.546229 52.455605,-2.546334 52.455703,-2.546482 52.455828,-2.54675 52.456016,-2.546824 52.456087,-2.546869 52.456177,-2.546884 52.456377,-2.546897 52.456551,-2.546919 52.456924,-2.546914 52.456973,-2.546866 52.456996,-2.546808 52.456985,-2.546774 52.456978,-2.546585 52.456905,-2.546199 52.456729,-2.546066 52.456697,-2.546052 52.456693,-2.545934 52.456672,-2.545904 52.456667,-2.545727 52.45665,-2.54547 52.456622,-2.544925 52.456606,-2.544903 52.456606,-2.544375 52.456603,-2.544226 52.456608,-2.543741 52.456612,-2.543313 52.456598)",
+ "LINESTRING(-2.47225 52.463886,-2.472365 52.463904,-2.472832 52.463991,-2.472848 52.463994,-2.473175 52.464072,-2.473328 52.464126,-2.473333 52.464128,-2.473338 52.46413,-2.473463 52.464195,-2.473616 52.464322,-2.473678 52.464369,-2.473732 52.464407)",
+ "LINESTRING(-2.457175 52.510534,-2.456312 52.51087,-2.45619 52.510917,-2.456011 52.510988,-2.455861 52.511048,-2.455756 52.51109,-2.455731 52.511109)",
+ "LINESTRING(-2.518319 52.577444,-2.518208 52.577535,-2.518032 52.577597,-2.517232 52.577863,-2.51674 52.578024,-2.516571 52.578088,-2.516489 52.578164,-2.516356 52.578267,-2.5163 52.578304,-2.516133 52.578414,-2.515911 52.578595,-2.515846 52.578648)",
+ "LINESTRING(-2.497517 52.560907,-2.497589 52.560937,-2.497794 52.561027,-2.498074 52.561161,-2.498513 52.561426,-2.49877 52.561577,-2.498981 52.561683,-2.499414 52.561923,-2.499551 52.562023,-2.499692 52.562176,-2.499774 52.562338,-2.499914 52.56263,-2.50008 52.562958,-2.500308 52.563461,-2.500415 52.563697)",
+ "LINESTRING(-2.600202 52.588818,-2.599984 52.588964,-2.599881 52.58905,-2.599775 52.589104,-2.599548 52.589215,-2.599542 52.589219,-2.599052 52.589451,-2.59847 52.589744,-2.598061 52.589933,-2.597517 52.59018,-2.597069 52.590412,-2.596399 52.590737,-2.596005 52.590942,-2.595702 52.591172,-2.595278 52.591479,-2.594971 52.591716,-2.594324 52.592189,-2.594038 52.592401,-2.593483 52.592668,-2.592961 52.592903,-2.592742 52.593009,-2.59245 52.593148,-2.592205 52.593362,-2.591903 52.593647,-2.591599 52.593929,-2.591221 52.594265,-2.590853 52.594544,-2.590349 52.594841,-2.589792 52.595132,-2.589358 52.595346,-2.588695 52.595666,-2.58789 52.596063,-2.587503 52.596248,-2.587206 52.59639,-2.586929 52.596499,-2.58639 52.596768,-2.585825 52.597044,-2.585507 52.597212,-2.585136 52.597431,-2.584636 52.597744,-2.584113 52.598065,-2.583643 52.598353,-2.583338 52.598545,-2.58302 52.598717,-2.582686 52.5989,-2.582504 52.598987,-2.582322 52.599055,-2.582214 52.599083,-2.581887 52.599137,-2.581618 52.599174,-2.581605 52.599185,-2.5816 52.59919,-2.581574 52.599213,-2.581574 52.599231)",
+ "LINESTRING(-2.478365 52.517265,-2.478477 52.517347,-2.478512 52.517372,-2.478895 52.517586,-2.4791 52.517735,-2.479305 52.517896,-2.479507 52.518064,-2.479846 52.518332,-2.480108 52.518545,-2.480699 52.51908,-2.480877 52.519241,-2.480944 52.519297,-2.480997 52.519358,-2.481038 52.519415,-2.48116 52.519651,-2.481163 52.519657,-2.481165 52.519662,-2.4812 52.519808,-2.481269 52.520139,-2.481295 52.520381,-2.481283 52.520579,-2.481261 52.520732,-2.481316 52.520904,-2.481459 52.521127,-2.481552 52.521267,-2.481731 52.521449,-2.481895 52.521618,-2.482215 52.521987,-2.482547 52.522309,-2.483038 52.522747,-2.483544 52.523186,-2.483841 52.523382,-2.484123 52.523534,-2.484448 52.523677,-2.484641 52.523748,-2.485042 52.52389,-2.485233 52.523952,-2.485345 52.523986,-2.485602 52.524068,-2.485927 52.524147,-2.486091 52.524175,-2.486336 52.524205,-2.486547 52.524225,-2.486651 52.524234,-2.486702 52.524243,-2.4868 52.52426,-2.486931 52.524296,-2.487035 52.52434,-2.487168 52.524412,-2.487242 52.524453,-2.487376 52.524546,-2.487449 52.524597,-2.48753 52.524681,-2.4876 52.524761,-2.487704 52.524868,-2.487764 52.524922,-2.487824 52.524976,-2.487943 52.525119,-2.488078 52.525352,-2.488187 52.525735,-2.488216 52.525855,-2.488278 52.526115,-2.488305 52.526239,-2.488385 52.526429,-2.488431 52.5266,-2.488462 52.526735,-2.488512 52.527283,-2.488513 52.527346,-2.488528 52.527418,-2.488559 52.527481,-2.488614 52.527547,-2.488721 52.52762,-2.488857 52.52769,-2.489649 52.528116,-2.490231 52.528454,-2.490491 52.528575,-2.490601 52.528632,-2.490729 52.528709,-2.490812 52.528777,-2.490994 52.528932,-2.491131 52.529129,-2.491132 52.529212,-2.49112 52.529238,-2.491085 52.529304)",
+ "LINESTRING(-2.399788 52.170841,-2.39976 52.170875,-2.399673 52.170957,-2.399615 52.170993,-2.399542 52.171029,-2.399324 52.171111,-2.399207 52.171147,-2.39909 52.171183,-2.398828 52.171238,-2.398687 52.171248,-2.398571 52.171249,-2.398435 52.17124,-2.398415 52.171239,-2.39838 52.171242,-2.398299 52.17125,-2.398201 52.171264,-2.398103 52.171311)",
+ "LINESTRING(-2.39886 52.194121,-2.398902 52.194016,-2.39878 52.19367,-2.398754 52.193547,-2.398799 52.193432,-2.398894 52.193346,-2.398981 52.193289,-2.399046 52.193265,-2.399249 52.193196,-2.399485 52.193106,-2.399774 52.192991,-2.400075 52.192865,-2.400318 52.192747,-2.40067 52.192582,-2.400878 52.192503,-2.401028 52.192446,-2.40112 52.192388,-2.4012 52.192317,-2.401209 52.192289,-2.40121 52.19225,-2.401165 52.192124,-2.40115 52.192061,-2.401261 52.191423,-2.401298 52.191298,-2.4014 52.19114,-2.401526 52.190955,-2.401612 52.190805,-2.401674 52.190626,-2.401736 52.190451,-2.401787 52.190325,-2.401832 52.190182,-2.401888 52.189919)",
+ "LINESTRING(-2.420562 52.189747,-2.420649 52.189755,-2.420904 52.189748,-2.421703 52.189726,-2.421869 52.189701,-2.422065 52.189651,-2.422175 52.18964,-2.422326 52.189643,-2.422433 52.18966,-2.422603 52.189707,-2.422789 52.189736,-2.423127 52.189773,-2.423211 52.189771,-2.423304 52.189737,-2.423401 52.189718,-2.423611 52.189748,-2.423773 52.189749,-2.424169 52.189666,-2.424832 52.189523,-2.424895 52.189492,-2.425031 52.189393,-2.42513 52.189322,-2.425258 52.189185)",
+ "LINESTRING(-2.431553 52.211334,-2.431826 52.211228,-2.432062 52.211176,-2.432725 52.21103,-2.432992 52.210966,-2.433262 52.21089,-2.433621 52.210751,-2.433836 52.210616,-2.434025 52.210455,-2.434143 52.210242,-2.434182 52.210042,-2.434238 52.209873,-2.434312 52.209601,-2.43435 52.209277,-2.434391 52.209007,-2.434394 52.208868)",
+ "LINESTRING(-2.411074 52.184883,-2.410958 52.184882,-2.410934 52.18488,-2.41067 52.184841,-2.410351 52.184785,-2.410136 52.184761,-2.409997 52.18475,-2.409754 52.184755,-2.409291 52.184788,-2.409123 52.1848,-2.40881 52.184786,-2.408474 52.184759,-2.408347 52.184763,-2.407924 52.184807,-2.407374 52.184865,-2.407051 52.184899,-2.406995 52.184894,-2.406965 52.184885,-2.406892 52.184858,-2.406686 52.184751,-2.406636 52.18473,-2.406583 52.184715,-2.406525 52.184707,-2.405576 52.184658,-2.405101 52.184641,-2.404782 52.184628,-2.404481 52.184626,-2.404104 52.184627,-2.403745 52.184639,-2.403416 52.184676,-2.402704 52.184781)",
+ "LINESTRING(-2.411444 52.156441,-2.411417 52.156354,-2.411373 52.156202,-2.411266 52.155878,-2.41114 52.155478,-2.411087 52.155324,-2.41101 52.1551,-2.410884 52.154704,-2.410759 52.154315,-2.41071 52.154107,-2.410674 52.154034,-2.41064 52.153965,-2.410614 52.153891,-2.410553 52.153752,-2.410141 52.153263,-2.40989 52.152986,-2.409609 52.152708,-2.40916 52.152261,-2.409114 52.152257,-2.408964 52.152286,-2.408323 52.152406,-2.408029 52.152462,-2.40781 52.15248,-2.407722 52.152481,-2.40743 52.152473,-2.407093 52.152429,-2.406984 52.152418,-2.406773 52.152362,-2.406536 52.152334,-2.406269 52.152317,-2.406083 52.152324)",
+ "LINESTRING(-2.309246 52.321985,-2.30921 52.322046,-2.309069 52.322272,-2.309024 52.322327,-2.30898 52.322338,-2.30896 52.322343,-2.30885 52.322344,-2.308767 52.322364,-2.308753 52.322369)",
+ "LINESTRING(-2.317414 52.305071,-2.317354 52.305041,-2.317212 52.30497,-2.317056 52.304907,-2.316933 52.304856,-2.316823 52.304778)",
+ "LINESTRING(-2.31162 52.298537,-2.31168 52.298317,-2.311681 52.298306,-2.311717 52.298032,-2.311803 52.297506,-2.311828 52.297403,-2.311885 52.29728,-2.311899 52.297265,-2.311943 52.297213,-2.312097 52.297157,-2.312239 52.297129,-2.312491 52.297101,-2.3128 52.29706,-2.312944 52.297037,-2.313045 52.29702,-2.313186 52.29698,-2.313245 52.296964,-2.313407 52.296912,-2.313418 52.296908,-2.313451 52.296896,-2.313624 52.296829,-2.313666 52.296809,-2.313875 52.296709,-2.314267 52.296499,-2.314505 52.296391,-2.314865 52.29626,-2.315593 52.295989,-2.316099 52.295795,-2.317154 52.295436,-2.317332 52.295378,-2.318137 52.295173,-2.318314 52.29513,-2.319226 52.294921,-2.319938 52.294753,-2.320333 52.29466,-2.320446 52.294633,-2.320696 52.294577,-2.32076 52.294519,-2.32084 52.29447,-2.320946 52.294376,-2.321001 52.294344,-2.321105 52.294315,-2.321169 52.294298,-2.321239 52.294287,-2.321331 52.294279,-2.321476 52.29428,-2.322073 52.294296,-2.322789 52.294317,-2.322742 52.294467,-2.322676 52.294735,-2.322625 52.294996,-2.322596 52.295041,-2.322529 52.295078,-2.322365 52.295129,-2.322313 52.295156,-2.322284 52.295221,-2.322259 52.29536,-2.322265 52.295417)",
+ "LINESTRING(-2.303381 52.282977,-2.303361 52.28292,-2.303334 52.282843,-2.303301 52.282764,-2.303278 52.282705,-2.303027 52.282448,-2.302958 52.282307,-2.302958 52.282251,-2.302958 52.282236)",
+ "LINESTRING(-2.330317 52.266892,-2.330322 52.266946,-2.330326 52.266989,-2.330319 52.267158,-2.330317 52.267329,-2.330291 52.267437,-2.330195 52.267845)",
+ "LINESTRING(-2.325552 52.324293,-2.325676 52.32429,-2.325721 52.324308,-2.325775 52.32433,-2.325834 52.324354,-2.326184 52.324634,-2.326472 52.324866,-2.32673 52.325073,-2.326893 52.325203,-2.327011 52.325296,-2.327231 52.325463)",
+ "LINESTRING(-2.394535 52.321592,-2.394659 52.321506,-2.394904 52.321359,-2.395022 52.321287,-2.395179 52.321211,-2.39532 52.321134,-2.395429 52.321062,-2.39552 52.320986,-2.395648 52.32088,-2.395753 52.320779,-2.395813 52.320708,-2.395856 52.320643,-2.395939 52.3205,-2.396028 52.320348,-2.396095 52.320239,-2.396155 52.320159,-2.396269 52.320018,-2.39646 52.319815,-2.396568 52.319689,-2.396723 52.319489,-2.396904 52.319268,-2.397038 52.31913,-2.397126 52.319043,-2.397219 52.318972,-2.397266 52.318946,-2.397317 52.318896,-2.397368 52.318846,-2.397393 52.318803,-2.397433 52.318728,-2.397467 52.318668,-2.397516 52.318602,-2.39758 52.318536,-2.397689 52.318435,-2.397794 52.318348,-2.397905 52.318255,-2.398077 52.318125,-2.398168 52.31805,-2.398217 52.317987,-2.39824 52.317925,-2.398252 52.317882,-2.398254 52.317838)",
+ "LINESTRING(-2.378569 52.312133,-2.37857 52.312127,-2.378321 52.311753,-2.3781 52.311421)",
+ "LINESTRING(-2.367521 52.286345,-2.367594 52.286291,-2.367984 52.286161,-2.368477 52.286025,-2.368881 52.285927,-2.36908 52.285878,-2.369367 52.285843,-2.369432 52.285834,-2.369552 52.285818,-2.369669 52.285802,-2.369818 52.285757,-2.369894 52.285715,-2.370197 52.285531,-2.370559 52.285294,-2.37092 52.285059,-2.372029 52.284362,-2.372119 52.284306,-2.372218 52.284251,-2.37247 52.284157,-2.372648 52.284069,-2.372718 52.284018,-2.372749 52.283955,-2.372772 52.283858,-2.372733 52.283773,-2.372691 52.283642,-2.372643 52.283484,-2.372621 52.283362,-2.372615 52.283303,-2.372626 52.283207,-2.372652 52.283134,-2.372753 52.282962,-2.372846 52.282879,-2.37293 52.282811,-2.373244 52.282583,-2.37328 52.282551,-2.373543 52.282366,-2.373753 52.282222,-2.374052 52.282024,-2.374299 52.281847,-2.374437 52.281744,-2.374638 52.281589,-2.374835 52.281434,-2.37505 52.281274,-2.37517 52.281179,-2.375292 52.281104,-2.375429 52.281011,-2.375717 52.280825,-2.37583 52.280752,-2.375883 52.280713,-2.375901 52.280687,-2.375908 52.280641,-2.375943 52.280465,-2.375969 52.280312,-2.375983 52.28013,-2.375997 52.280043,-2.376011 52.279916,-2.376028 52.279736,-2.376029 52.279554,-2.376028 52.279374,-2.376055 52.27919,-2.376091 52.279008,-2.37611 52.278827,-2.376143 52.278646,-2.376142 52.278524,-2.376117 52.278402,-2.376085 52.278261,-2.376002 52.278084,-2.375937 52.277952,-2.375879 52.277791,-2.375869 52.277657)",
+ "LINESTRING(-2.356828 52.29325,-2.35674 52.292996,-2.356687 52.292818,-2.356655 52.292763,-2.356609 52.292711,-2.356551 52.292684,-2.35648 52.29268,-2.356456 52.292684,-2.356274 52.292712,-2.356212 52.292719,-2.356141 52.292727,-2.356016 52.292741,-2.355927 52.292741,-2.355848 52.292741,-2.355743 52.292732,-2.355719 52.29273,-2.355703 52.292726,-2.355544 52.292691,-2.355469 52.292682,-2.355305 52.292664,-2.355283 52.292661,-2.355196 52.292648,-2.355177 52.29265,-2.355073 52.292657,-2.354956 52.292666,-2.35483 52.292723,-2.354682 52.292809,-2.354512 52.29291,-2.354314 52.292985,-2.35412 52.293026,-2.354027 52.293038)",
+ "LINESTRING(-2.439742 52.273662,-2.439487 52.27359,-2.439344 52.273597,-2.439059 52.273611,-2.43898 52.273595,-2.43881 52.273451)",
+ "LINESTRING(-2.386295 52.272591,-2.386277 52.272551,-2.386273 52.272507,-2.386273 52.272447,-2.386275 52.272432,-2.386278 52.272384,-2.386279 52.272367,-2.386284 52.272356,-2.386302 52.272316,-2.386322 52.272286,-2.38633 52.272274,-2.386347 52.272262,-2.386366 52.27225,-2.386368 52.272248,-2.386451 52.272216,-2.386781 52.272128,-2.386868 52.272101,-2.386905 52.272065,-2.386904 52.272017,-2.386883 52.271978,-2.386829 52.271926,-2.386761 52.271888,-2.386644 52.271853,-2.386502 52.27183,-2.386391 52.271819,-2.386275 52.271812,-2.386211 52.271794,-2.386207 52.27179,-2.386187 52.271768,-2.386193 52.271714,-2.386224 52.271702,-2.386245 52.271693,-2.386256 52.271689,-2.386336 52.271687,-2.386393 52.271685,-2.386579 52.27167,-2.386619 52.271665,-2.386721 52.271652,-2.386799 52.271643,-2.386816 52.271638,-2.386953 52.271599,-2.387064 52.271552,-2.38708 52.271546,-2.387114 52.271521,-2.387193 52.271465,-2.387434 52.271266,-2.387709 52.271054,-2.387859 52.270946,-2.388003 52.270832,-2.388051 52.270783,-2.388095 52.270737,-2.388136 52.270666,-2.388156 52.27053,-2.388171 52.27044,-2.388222 52.270343,-2.38829 52.270248,-2.388348 52.270213,-2.388433 52.270189,-2.388543 52.270166,-2.388775 52.270123,-2.388964 52.270083,-2.389059 52.270051,-2.38919 52.270002,-2.389295 52.269948,-2.389399 52.269881,-2.389458 52.269828,-2.389488 52.269756,-2.389557 52.269482,-2.389596 52.269274,-2.389609 52.269022,-2.389622 52.268896,-2.389692 52.268518,-2.389749 52.268374,-2.389778 52.268329,-2.389863 52.268272,-2.390046 52.268158,-2.390356 52.267968,-2.390702 52.26776,-2.390886 52.267669,-2.390974 52.267633,-2.391061 52.267605,-2.39112 52.267596,-2.391247 52.267581,-2.39153 52.267568,-2.391603 52.267559,-2.391706 52.267517,-2.391771 52.267474,-2.391774 52.267472,-2.391775 52.267471,-2.391863 52.267381,-2.391962 52.267263,-2.392009 52.267172,-2.39204 52.267074,-2.39206 52.266964,-2.392102 52.266757,-2.392115 52.266694,-2.392193 52.266545,-2.392282 52.266434,-2.39236 52.266357,-2.39245 52.266303,-2.392565 52.266261,-2.392723 52.266231,-2.392901 52.266206,-2.393029 52.266188,-2.393073 52.266175,-2.39316 52.266149,-2.393313 52.26609,-2.393392 52.266044,-2.393453 52.266005,-2.393627 52.265865,-2.393811 52.265725,-2.393847 52.265679,-2.393852 52.265637,-2.393825 52.265578,-2.393745 52.265507,-2.393448 52.265288,-2.393385 52.265244,-2.393161 52.265087,-2.393002 52.264965,-2.392901 52.264891)",
+ "LINESTRING(-2.413413 52.258694,-2.413538 52.259264,-2.41355 52.259313,-2.413676 52.259883,-2.413779 52.260331,-2.413839 52.260595,-2.413895 52.260804,-2.413933 52.261004,-2.413968 52.261134,-2.414015 52.261357,-2.41411 52.26167,-2.414162 52.261798,-2.414221 52.261889,-2.414317 52.261954,-2.414454 52.261996,-2.414872 52.262069,-2.415052 52.26213,-2.415116 52.262207,-2.415148 52.262318,-2.415124 52.262503,-2.415013 52.262875,-2.414913 52.263165,-2.414805 52.263391,-2.414465 52.263742,-2.414041 52.264168,-2.413843 52.264367,-2.413608 52.264517,-2.413418 52.264593,-2.41315 52.264649,-2.412802 52.264738,-2.412492 52.264842,-2.412056 52.265013,-2.411777 52.265105,-2.41154 52.265151,-2.411298 52.265155,-2.411154 52.265137,-2.410854 52.2651,-2.410463 52.265056)",
+ "LINESTRING(-2.422179 52.250591,-2.422229 52.25056,-2.422258 52.250542,-2.422404 52.250506,-2.422448 52.250479,-2.422506 52.250406,-2.422598 52.25024)",
+ "LINESTRING(-2.304096 52.38383,-2.304311 52.383709,-2.304375 52.383673,-2.304741 52.383474)",
+ "LINESTRING(-2.311777 52.355598,-2.311908 52.355533,-2.312027 52.355479,-2.311996 52.355417,-2.311862 52.355242,-2.311751 52.355094,-2.311715 52.35494,-2.311647 52.354695,-2.311602 52.354528,-2.311601 52.354461,-2.3116 52.354326,-2.311555 52.35417,-2.311489 52.354145,-2.311335 52.354178,-2.311181 52.354211,-2.31102 52.354269,-2.310948 52.354295,-2.310895 52.354314,-2.310667 52.354401)",
+ "LINESTRING(-2.310861 52.374127,-2.310797 52.374063,-2.310739 52.374022,-2.310657 52.373964,-2.310579 52.373921)",
+ "LINESTRING(-2.331681 52.351268,-2.331968 52.351174,-2.332394 52.351032,-2.332727 52.350926,-2.333121 52.3508,-2.333336 52.350697,-2.333535 52.350572,-2.333728 52.350421,-2.33399 52.350216,-2.334129 52.350094,-2.334252 52.349977,-2.334333 52.349867,-2.334419 52.349752,-2.334485 52.349592,-2.334495 52.349413,-2.334456 52.349228,-2.334372 52.348983,-2.334323 52.348821,-2.334316 52.348799)",
+ "LINESTRING(-2.328113 52.34744,-2.328381 52.347429,-2.328637 52.347401,-2.328936 52.347357,-2.329147 52.347329,-2.32934 52.347286,-2.32945 52.347264,-2.329714 52.347204,-2.329903 52.347157,-2.330088 52.347111,-2.330303 52.347075,-2.330413 52.347035,-2.330616 52.346951)",
+ "LINESTRING(-2.377692 52.403371,-2.377783 52.403294,-2.377821 52.403256,-2.377923 52.40318,-2.378179 52.402998,-2.378403 52.402832,-2.37892 52.402432,-2.379181 52.40224,-2.379405 52.402124,-2.379934 52.40181,-2.38016 52.401672,-2.380332 52.401507,-2.380498 52.401279,-2.380777 52.400857,-2.380868 52.400761,-2.38108 52.400531,-2.381152 52.400413,-2.381184 52.400297,-2.381217 52.400057,-2.381256 52.399866,-2.381298 52.399733,-2.381373 52.39961,-2.381469 52.399356,-2.381489 52.399177,-2.381495 52.398913,-2.381469 52.398764,-2.381359 52.398634,-2.381155 52.398507,-2.381016 52.398461,-2.380878 52.398423,-2.38062 52.398386,-2.380386 52.398338,-2.380169 52.398274,-2.380085 52.398228,-2.379902 52.398126,-2.379793 52.398048,-2.379716 52.397953,-2.379691 52.397856,-2.379723 52.397749,-2.379781 52.397586,-2.379801 52.39745,-2.379787 52.397334,-2.379669 52.397187,-2.379388 52.396965,-2.37896 52.39669,-2.378453 52.396307,-2.378046 52.395955,-2.377357 52.395277,-2.377302 52.395176,-2.3772 52.394948,-2.377105 52.394613,-2.376996 52.394229,-2.376749 52.393658,-2.376667 52.393464,-2.37645 52.392901,-2.37639 52.392785,-2.375713 52.391955,-2.375234 52.391356,-2.375004 52.391043,-2.374907 52.390855,-2.374914 52.390767,-2.374988 52.390534,-2.375028 52.390408,-2.375047 52.390376,-2.375212 52.390101,-2.375258 52.389951,-2.375276 52.389892,-2.375314 52.389655,-2.375315 52.389636,-2.375321 52.389509,-2.375321 52.389505,-2.375438 52.389241,-2.375754 52.388654,-2.375912 52.388359,-2.375976 52.388178,-2.37602 52.388052,-2.375996 52.387924,-2.375716 52.387478,-2.375151 52.386671,-2.374893 52.386348,-2.374724 52.386148,-2.374601 52.38596,-2.374589 52.385941,-2.374556 52.385827,-2.374571 52.385719,-2.374616 52.385639,-2.374694 52.385554,-2.374796 52.385442,-2.374826 52.38541,-2.375082 52.385237,-2.375492 52.385069,-2.375811 52.384952,-2.376154 52.384779,-2.376547 52.384534,-2.376794 52.384354,-2.377111 52.384089,-2.377263 52.38397,-2.377377 52.38388,-2.377532 52.383758,-2.377707 52.383613)",
+ "LINESTRING(-2.41285 52.381728,-2.41263 52.381673,-2.412534 52.38165,-2.412416 52.381631,-2.412314 52.381609,-2.412146 52.381574,-2.41204 52.381558,-2.411958 52.381553,-2.411908 52.381559,-2.411769 52.381592,-2.411629 52.38164,-2.411416 52.381728,-2.41137 52.381751,-2.411362 52.381755)",
+ "LINESTRING(-2.32153 52.435879,-2.321434 52.435843,-2.321169 52.435748,-2.321029 52.435692,-2.320891 52.435624,-2.320814 52.435544,-2.320789 52.435454,-2.320686 52.43505,-2.320678 52.435016,-2.320697 52.434978,-2.3207 52.434977,-2.320741 52.434964,-2.320807 52.434964,-2.320847 52.434986,-2.320903 52.435022,-2.32098 52.435044,-2.32112 52.435084,-2.321164 52.435095,-2.321305 52.435128,-2.321308 52.435129,-2.321397 52.435165,-2.321537 52.435254,-2.321663 52.435362,-2.321808 52.435503,-2.321811 52.435518,-2.321824 52.43558,-2.321813 52.435716,-2.321777 52.435796,-2.321718 52.435883,-2.321666 52.43593)",
+ "LINESTRING(-2.307716 52.425456,-2.307818 52.425431,-2.307876 52.425407,-2.307913 52.425393,-2.307955 52.425381,-2.307993 52.425377,-2.308035 52.42538,-2.308086 52.425401,-2.308219 52.425445,-2.308331 52.425485,-2.308463 52.425511,-2.308596 52.425534,-2.308714 52.425547,-2.308825 52.425552,-2.309022 52.425546,-2.309125 52.425533,-2.309161 52.425522,-2.309213 52.425506,-2.309219 52.425501,-2.309245 52.425482,-2.309286 52.425452,-2.309447 52.425307,-2.309696 52.425131,-2.309799 52.425067,-2.310109 52.424883,-2.310276 52.424771,-2.310451 52.424658,-2.310519 52.424607,-2.310586 52.424531,-2.310665 52.42442,-2.310708 52.424391)",
+ "LINESTRING(-2.368821 52.479672,-2.368718 52.479668,-2.368563 52.479662,-2.368422 52.479647,-2.368321 52.479625,-2.368055 52.479535,-2.367906 52.479453,-2.367768 52.479353,-2.367678 52.479272)",
+ "LINESTRING(-2.356756 52.456904,-2.3567 52.456817,-2.356403 52.456452,-2.356335 52.456374,-2.356182 52.456224,-2.356001 52.456019,-2.355913 52.455933,-2.355897 52.455925,-2.355889 52.455921,-2.35586 52.455907,-2.355792 52.455906)",
+ "LINESTRING(-2.351301 52.457594,-2.351243 52.457599,-2.351081 52.457613,-2.350831 52.457667,-2.350523 52.457776,-2.350141 52.457939,-2.350024 52.458003)",
+ "LINESTRING(-2.351553 52.453669,-2.351661 52.453639,-2.351911 52.453547,-2.352488 52.453293,-2.352981 52.453076,-2.353348 52.452904,-2.353436 52.452854)",
+ "LINESTRING(-2.358583 52.43464,-2.358485 52.434675,-2.358283 52.434761,-2.358063 52.434905,-2.357924 52.434996,-2.357888 52.435043,-2.357871 52.435063,-2.357815 52.435066,-2.357731 52.435058,-2.357557 52.435069,-2.357033 52.435113,-2.356814 52.43513,-2.356696 52.435121,-2.356544 52.435094,-2.356379 52.435059,-2.356325 52.435055,-2.356269 52.435064,-2.355794 52.435249)",
+ "LINESTRING(-2.36948 52.442856,-2.369591 52.442905,-2.369678 52.442964,-2.369829 52.443057,-2.36992 52.443113,-2.370008 52.443155,-2.370101 52.443184,-2.37022 52.443212)",
+ "LINESTRING(-2.378203 52.420339,-2.377907 52.420588,-2.377812 52.420689,-2.377747 52.420784,-2.377636 52.420949,-2.377438 52.421253,-2.37723 52.421596,-2.377145 52.421741,-2.377032 52.421894,-2.37695 52.421998,-2.37685 52.422099,-2.376733 52.42218,-2.376585 52.422267,-2.376382 52.422369,-2.376173 52.422464,-2.376015 52.422525,-2.375777 52.422613,-2.375539 52.422702,-2.375192 52.422816,-2.374837 52.422933,-2.374674 52.422981,-2.374571 52.423022,-2.374448 52.423075,-2.374379 52.423108,-2.374324 52.423142,-2.374227 52.423211,-2.374132 52.42328,-2.37405 52.423355,-2.373964 52.423444,-2.373799 52.423653,-2.373586 52.423942,-2.373383 52.424274,-2.373231 52.424506,-2.373167 52.424614,-2.373126 52.424671,-2.373096 52.424694,-2.373001 52.424733,-2.372757 52.424811,-2.372453 52.42491,-2.372215 52.424983,-2.371593 52.425148,-2.371186 52.425256,-2.371087 52.425292,-2.370841 52.425377,-2.370665 52.425442,-2.370489 52.425505,-2.370155 52.425593,-2.369952 52.425637,-2.369691 52.425684,-2.369177 52.425766,-2.368982 52.425788,-2.368642 52.425837,-2.368614 52.425842,-2.368611 52.425842,-2.368609 52.425843,-2.368465 52.42587,-2.368347 52.425896,-2.368256 52.425948,-2.368198 52.425992,-2.368112 52.426089,-2.367959 52.42626,-2.367834 52.426413,-2.3677 52.426546,-2.367614 52.426657,-2.36759 52.426744,-2.367598 52.426837,-2.367632 52.426944,-2.367705 52.427086)",
+ "LINESTRING(-2.430145 52.497136,-2.429921 52.496968,-2.42984 52.49691,-2.429772 52.496859,-2.429759 52.496849,-2.429681 52.496802,-2.429674 52.496798,-2.429601 52.49676,-2.429592 52.496755,-2.429577 52.49675,-2.429452 52.496705,-2.429156 52.496622,-2.428936 52.496571,-2.428713 52.496519,-2.428662 52.496509,-2.42838 52.496451,-2.428278 52.49643,-2.427906 52.496362,-2.427796 52.496359,-2.427692 52.496374,-2.427614 52.496413,-2.427594 52.496423,-2.427497 52.496563,-2.427473 52.496604,-2.427424 52.496683,-2.427409 52.496697,-2.427333 52.496767,-2.427313 52.496788,-2.427262 52.496844,-2.427253 52.496852,-2.427253 52.496854,-2.42723 52.496909,-2.427251 52.496965,-2.42727 52.497014,-2.427279 52.497085,-2.427279 52.497097,-2.427274 52.497153,-2.427272 52.497192,-2.427256 52.497239,-2.427248 52.497264,-2.427249 52.497297,-2.427262 52.497316,-2.427274 52.497333,-2.427276 52.497335,-2.427375 52.497409,-2.427536 52.497534,-2.427549 52.497543,-2.427734 52.497685,-2.427863 52.497795,-2.427899 52.49783,-2.427971 52.497897,-2.428166 52.498061,-2.428402 52.498242,-2.428577 52.498372,-2.428759 52.498507,-2.428938 52.498655,-2.429307 52.498971,-2.42952 52.49917,-2.429637 52.499279,-2.429907 52.499533,-2.430107 52.499708,-2.43019 52.499779,-2.430309 52.499887,-2.430347 52.499938,-2.430354 52.499947,-2.430396 52.500005,-2.430403 52.500067,-2.430403 52.50013,-2.430396 52.500164,-2.430395 52.500168,-2.430384 52.500186,-2.430342 52.500254,-2.430222 52.500419,-2.430129 52.500571,-2.430049 52.500741)",
+ "LINESTRING(-2.384219 52.482371,-2.384296 52.482448,-2.384358 52.482546,-2.38439 52.482628,-2.384477 52.482964,-2.38456 52.48325,-2.384633 52.48332,-2.384683 52.483336,-2.385527 52.483375,-2.386516 52.483431,-2.386754 52.483455,-2.386904 52.483491,-2.386908 52.483492,-2.38696 52.48351,-2.387116 52.483564,-2.387205 52.483599,-2.387258 52.48362,-2.387266 52.483624,-2.387373 52.483676,-2.3874 52.483699,-2.387405 52.483732,-2.387404 52.483741,-2.387401 52.483772,-2.387188 52.484013,-2.387151 52.484063,-2.387135 52.484117,-2.387132 52.484128,-2.387132 52.484135,-2.387133 52.484219,-2.387128 52.484283,-2.387116 52.484454,-2.387105 52.484566,-2.387079 52.484639,-2.387041 52.484709,-2.386988 52.484814,-2.386922 52.484945,-2.386917 52.484955,-2.386797 52.485264,-2.386765 52.485391,-2.386753 52.485438,-2.386725 52.485502,-2.386614 52.485766,-2.386546 52.485953,-2.38654 52.485983)",
+ "LINESTRING(-2.409893 52.500854,-2.409695 52.500838,-2.409501 52.500821,-2.409485 52.500817,-2.40946 52.500811,-2.40945 52.500808,-2.409439 52.500768,-2.409456 52.500683,-2.409462 52.500587,-2.409477 52.500532,-2.409451 52.500492,-2.409392 52.500465,-2.409194 52.500421,-2.409173 52.500406,-2.409139 52.500381,-2.409116 52.500337,-2.409098 52.500304,-2.409093 52.500125,-2.40903 52.499999,-2.408956 52.49991,-2.408952 52.499905,-2.408935 52.499891,-2.408772 52.499757,-2.408677 52.499692,-2.408658 52.499679,-2.408632 52.499667,-2.408306 52.499518,-2.408293 52.499507,-2.408247 52.499467,-2.408236 52.499458,-2.408234 52.49945,-2.408202 52.499331,-2.408205 52.499195,-2.408133 52.498988,-2.408037 52.498857,-2.407772 52.49855,-2.407591 52.498335,-2.407348 52.498142,-2.407131 52.497985,-2.407067 52.497943,-2.406992 52.497894,-2.406829 52.497786,-2.406808 52.497772,-2.406522 52.497612,-2.406495 52.497602,-2.406233 52.497495,-2.406027 52.497414,-2.405534 52.497297,-2.405457 52.497278,-2.404824 52.497124,-2.403814 52.496815,-2.40333 52.496679,-2.403133 52.496635,-2.40265 52.496552,-2.401894 52.496427,-2.401568 52.496373,-2.400958 52.496297,-2.40045 52.496245,-2.400184 52.496219,-2.400092 52.496211,-2.400034 52.496193,-2.399953 52.496147,-2.39985 52.496033,-2.399776 52.495956)",
+ "LINESTRING(-2.358014 52.492146,-2.358028 52.492193,-2.358029 52.492234,-2.35786 52.492818,-2.357794 52.493046,-2.357747 52.493245,-2.357732 52.493321)",
+ "LINESTRING(-2.345449 52.467635,-2.345714 52.467635,-2.345802 52.467634,-2.345964 52.467634,-2.346156 52.467651,-2.346421 52.467677,-2.34648 52.467686,-2.346554 52.467713,-2.346687 52.467758,-2.34688 52.467846,-2.347019 52.467912,-2.347165 52.467976,-2.347251 52.468013,-2.347374 52.468089,-2.347533 52.468179,-2.347609 52.468222,-2.347754 52.468317,-2.347802 52.468356,-2.34787 52.468446,-2.347959 52.468599,-2.348004 52.468716,-2.348034 52.468787,-2.348168 52.46894,-2.348276 52.469186,-2.348332 52.469236)",
+ "LINESTRING(-2.304184 52.534293,-2.304229 52.534219,-2.304246 52.53395,-2.304293 52.533323,-2.304343 52.532656,-2.304409 52.531983,-2.304495 52.531339,-2.304623 52.53067,-2.304758 52.530145,-2.304946 52.529717,-2.304941 52.529607)",
+ "LINESTRING(-2.404084 52.529404,-2.404094 52.529399,-2.404103 52.529392,-2.40411 52.529384,-2.404115 52.529376,-2.404118 52.529367,-2.404119 52.529358,-2.404118 52.529349,-2.404115 52.529341,-2.40411 52.529332,-2.404102 52.529325,-2.404093 52.529318,-2.404082 52.529312,-2.40407 52.529307,-2.404057 52.529303,-2.404043 52.529301,-2.404029 52.529299,-2.404014 52.529299,-2.404 52.529301,-2.403986 52.529303,-2.403973 52.529307,-2.403961 52.529312,-2.40395 52.529318,-2.403941 52.529325,-2.403934 52.529333,-2.403929 52.529341,-2.403926 52.52935,-2.403925 52.529359,-2.403926 52.529368,-2.403929 52.529376,-2.403935 52.529385,-2.403942 52.529392,-2.403951 52.529399,-2.403962 52.529405,-2.403974 52.52941,-2.403987 52.529414,-2.404001 52.529416,-2.404015 52.529418,-2.40403 52.529418,-2.404044 52.529416,-2.404058 52.529414,-2.404071 52.52941,-2.404083 52.529405,-2.404084 52.529404)"
+ };
+
+ static double expectations[][4] =
+ {
+ { 3.41515232094025E-07, 3.42522426421965E-07, 6.83030293657794E-07, 6.87058957282716E-07},
+ { 1.02802331980456E-07, 1.03813675877973E-07, 2.05604735015186E-07, 2.09650025340125E-07},
+ { 3.56112451527224E-07, 3.57098969061553E-07, 7.12224860421884E-07, 7.16171342673988E-07},
+ { 4.25305444196056E-08, 4.35412488286602E-08, 8.50612309477583E-08, 8.91039491079937E-08},
+ { 3.69520876120077E-08, 3.79614419898644E-08, 7.39041894348702E-08, 7.79416069462968E-08},
+ { 3.12580681338659E-08, 3.22376649819489E-08, 6.23702476332255E-08, 6.62886350255576E-08},
+ { 2.64535032101776E-07, 2.65503302898651E-07, 5.29010577565714E-07, 5.32883049686461E-07},
+ { 1.26452604831684E-07, 1.27462314480908E-07, 2.52905124398239E-07, 2.56944261423087E-07},
+ { 5.62396706982327E-08, 5.7239461170866E-08, 1.12479426661594E-07, 1.16478773293238E-07},
+ { 7.03945403301987E-07, 7.04847309407342E-07, 1.40789144609244E-06, 1.41149810417573E-06},
+ { 2.05895901217446E-07, 2.06897283305807E-07, 4.11792029808566E-07, 4.15797074992952E-07},
+ { 1.01571146160495E-07, 1.02582319527755E-07, 2.031423207427E-07, 2.07186729994646E-07},
+ { 2.42559636376427E-07, 2.43568607061206E-07, 4.85119102222598E-07, 4.89155340233083E-07},
+ { 3.41515232094025E-07, 3.42522426421965E-07, 6.83030293657794E-07, 6.87058957282716E-07},
+ { 9.08697614931953E-08, 9.1881105390712E-08, 1.81739480353826E-07, 1.85784855943893E-07},
+ { 6.0466163631645E-08, 6.14741111348849E-08, 1.20932355684999E-07, 1.24964373071634E-07},
+ { 4.04659118657946E-07, 4.05667066161186E-07, 8.09318166261619E-07, 8.13350311545946E-07},
+ { 4.80904560618001E-07, 4.81905772176106E-07, 9.61808808597198E-07, 9.65813697462181E-07},
+ { 3.57066625156222E-08, 3.67177221960446E-08, 7.14132681878255E-08, 7.54576063854984E-08},
+ { 2.44433664420285E-08, 2.54509160413363E-08, 4.88867044623476E-08, 5.29170023355618E-08},
+ { 3.61392153536144E-07, 3.62384142249539E-07, 7.22784136542032E-07, 7.26752162449884E-07},
+ { 7.03945403301987E-07, 7.04847309407342E-07, 1.40789144609244E-06, 1.41149810417573E-06},
+ { 7.91276917766481E-07, 7.91866199278957E-07, 1.58255338078561E-06, 1.58491059210064E-06},
+ { 2.80934472129957E-07, 2.81945006008755E-07, 5.61869072157606E-07, 5.65911307148781E-07},
+ { 3.5339049020422E-07, 3.54394444457284E-07, 7.06780582504507E-07, 7.10797138481212E-07},
+ { 2.44327040377357E-07, 2.4533331099974E-07, 4.88653867591893E-07, 4.9267929114194E-07},
+ { 2.6145809783884E-07, 2.62465945866097E-07, 5.22915939882296E-07, 5.26947090406793E-07},
+ { 2.21305654690696E-07, 2.22233921931547E-07, 4.42615530005241E-07, 4.46329210035401E-07},
+ { 7.88202072499189E-08, 7.98287089764926E-08, 1.5764054239753E-07, 1.61674222454167E-07},
+ { 4.08582224054044E-07, 4.09593170047629E-07, 8.17164746536037E-07, 8.21208203660717E-07},
+ { 2.61692591152496E-07, 2.62703764519756E-07, 5.23385125461573E-07, 5.27429577346084E-07},
+ { 2.01361032736713E-07, 2.0236487330294E-07, 4.02722207581974E-07, 4.06737527214318E-07},
+ { 6.18118889406105E-08, 6.28143510539303E-08, 1.23623692616093E-07, 1.27633413171679E-07},
+ { 5.01939382502314E-07, 5.02932437029813E-07, 1.00387870816121E-06, 1.00785118206659E-06},
+ { 6.52623768360172E-07, 6.53615401802199E-07, 1.30525545216642E-06, 1.30922269647726E-06},
+ { 3.24414514807359E-07, 3.25418923807774E-07, 6.48829413307794E-07, 6.52846509296978E-07},
+ { 1.65468009072356E-07, 1.66476610274913E-07, 3.30936202885823E-07, 3.34970451376648E-07},
+ { 5.23240828442795E-09, 6.24356744083343E-09, 1.04648165688559E-08, 1.45094389836231E-08},
+ { 3.62318644420156E-07, 3.63320253882193E-07, 7.24637303051168E-07, 7.28643442471366E-07},
+ { 5.94340193060816E-07, 5.95350627463631E-07, 1.18868054244103E-06, 1.19272210952204E-06},
+ { 7.32884174681203E-07, 7.33866755808776E-07, 1.46576839199497E-06, 1.46969848913159E-06},
+ { 3.02247087802243E-07, 3.0325044519941E-07, 6.04493862965683E-07, 6.08507960464522E-07},
+ { 3.23513106081919E-07, 3.24517259286949E-07, 6.47026212163837E-07, 6.51042981303362E-07},
+ { 2.82636392512359E-07, 2.83643203147221E-07, 5.65272713970444E-07, 5.6930015546186E-07},
+ { 5.57109984811177E-08, 5.67222713243609E-08, 1.11422096438218E-07, 1.15467202022046E-07},
+ { 1.69497056390355E-07, 1.70405499488879E-07, 3.38994169624129E-07, 3.42627942018225E-07},
+ { 4.37937046626757E-08, 4.4801083731727E-08, 8.75873382710779E-08, 9.16166129627527E-08},
+ { 3.69329029581422E-08, 3.79310165499192E-08, 7.38645837827789E-08, 7.78570665715961E-08},
+ { 5.61418005418091E-08, 5.71532154935994E-08, 1.12283629505328E-07, 1.16328905619412E-07},
+ { 2.30063292860905E-07, 2.31069662959271E-07, 4.60126457824117E-07, 4.64152151380404E-07},
+ { 1.53257730062251E-07, 1.54239160110592E-07, 3.06515318015954E-07, 3.10441222950431E-07},
+ { 7.43983150641725E-08, 7.54085220933121E-08, 1.4879661591749E-07, 1.52837202449518E-07},
+ { 3.73331090486317E-08, 3.83436145057203E-08, 7.46662180972635E-08, 7.87081404496348E-08},
+ { 1.35055771011139E-07, 1.36057437316595E-07, 2.70111300437748E-07, 2.74118391985212E-07},
+ { 1.49921490333327E-07, 1.50926723563316E-07, 2.99842824347252E-07, 3.03863657791226E-07},
+ { 5.4672608484907E-07, 5.47715472976051E-07, 1.09345225496327E-06, 1.09740931009128E-06},
+ { 6.82862975054377E-08, 6.92914738920081E-08, 1.3657287922797E-07, 1.40593087394336E-07},
+ { 2.99415603421949E-08, 3.09528473962928E-08, 5.9883106473535E-08, 6.39284820636021E-08},
+ { 1.15991221605327E-06, 1.16091044333189E-06, 2.31982436105227E-06, 2.32381808018545E-06},
+ { 5.37620522322868E-07, 5.38598712296334E-07, 1.07524111570001E-06, 1.07915387559387E-06},
+ { 2.19138769352867E-08, 2.29165522114272E-08, 4.38277680814281E-08, 4.78386539271014E-08},
+ { 2.25320761160219E-07, 2.26330556074572E-07, 4.50641536531293E-07, 4.54680815664688E-07},
+ { 1.01003628572016E-06, 1.01100829397183E-06, 2.02007224459066E-06, 2.02395995074767E-06},
+ { 4.75155772505786E-07, 4.76152848705169E-07, 9.50311530800718E-07, 9.5429980717654E-07},
+ { 1.65787653827465E-07, 1.66797761380622E-07, 3.31575222389802E-07, 3.35615951030377E-07},
+ { 2.30222070740638E-07, 2.31232661462855E-07, 4.60444127270421E-07, 4.64487072804332E-07},
+ { 7.98883817765272E-07, 7.99890472080733E-07, 1.59776760710884E-06, 1.60179418173811E-06},
+ { 1.04933420175257E-07, 1.05940515027214E-07, 2.0986679771795E-07, 2.13895532397146E-07},
+ { 1.77967848458138E-06, 1.78066323996973E-06, 3.55935688389764E-06, 3.56329583439674E-06},
+ { 4.1623603408425E-07, 4.17224313764564E-07, 8.3247203974679E-07, 8.36425286365738E-07},
+ { 9.68960307545785E-08, 9.78908332172068E-08, 1.93792118352576E-07, 1.97771228727106E-07},
+ { 2.7254995416115E-07, 2.73529721539489E-07, 5.45099553050932E-07, 5.49018324136341E-07},
+ { 4.01288005491551E-07, 4.02259715315267E-07, 8.02576039404812E-07, 8.06462495006599E-07},
+ { 1.35055771011139E-07, 1.36057437316595E-07, 2.70111300437748E-07, 2.74118391985212E-07},
+ { 4.29554916081543E-08, 4.39544862729235E-08, 8.59111395357104E-08, 8.99071466164969E-08},
+ { 1.76189836054164E-06, 1.76286511077706E-06, 3.52380727974833E-06, 3.52767503386531E-06},
+ { 1.41602981784672E-07, 1.42607618158763E-07, 2.83206148310455E-07, 2.87224651174256E-07},
+ { 1.15380575493873E-06, 1.15479357987169E-06, 0.000002307610870389, 2.31156330698923E-06},
+ { 1.41356807148441E-07, 1.42356668675347E-07, 2.82713486399189E-07, 2.86713202513056E-07},
+ { 6.45327844495114E-08, 6.55440999253187E-08, 1.29065526266459E-07, 1.33110816591397E-07},
+ { 6.86342787048488E-08, 6.96456083915109E-08, 1.37268628463971E-07, 1.41313861945491E-07},
+ { 1.83265086661777E-07, 1.84274682624164E-07, 3.66530358064665E-07, 3.70568429275409E-07},
+ { 1.43990902756741E-07, 1.44994970696644E-07, 2.87981706037499E-07, 2.91998276225058E-07},
+ { 1.02871865692578E-07, 1.03880751112229E-07, 2.05743802439429E-07, 2.09779301485469E-07},
+ { 1.36728246502571E-07, 1.37673012545747E-07, 2.7345657827027E-07, 2.77235542966991E-07},
+ { 3.10800132297118E-07, 3.11808250330614E-07, 6.21600349859364E-07, 6.25632381456853E-07},
+ { 1.32283005882528E-07, 1.33261437440524E-07, 2.64565414909157E-07, 2.68479169562852E-07},
+ { 3.33188367562798E-07, 3.34195561890738E-07, 6.66376735125596E-07, 6.70405427172227E-07},
+ { 1.90134230138028E-07, 1.91139307048616E-07, 3.80268787125715E-07, 3.8428883897268E-07},
+ { 3.02247087802243E-07, 3.0325044519941E-07, 6.04493862965683E-07, 6.08507960464522E-07},
+ { 6.45327844495114E-08, 6.55440999253187E-08, 1.29065526266459E-07, 1.33110816591397E-07},
+ { 4.02965838475211E-08, 4.13054976888816E-08, 8.05931534841875E-08, 8.46289225364671E-08},
+ { 5.11229515609557E-07, 5.12224545445861E-07, 1.02245836330894E-06, 1.02643905108835E-06},
+ { 1.18189390718726E-07, 1.19196172931879E-07, 2.36378838280871E-07, 2.40405839235791E-07},
+ { 3.81603527443986E-07, 3.82614828708938E-07, 7.63207339105065E-07, 7.67251918887268E-07},
+ { 3.34147500780091E-08, 3.43787576184695E-08, 6.67881465687969E-08, 7.06435514530313E-08},
+ { 3.4107115709503E-07, 3.42081634130409E-07, 6.82142385244333E-07, 6.86184307596704E-07},
+ { 1.58899425173331E-07, 1.59907060037767E-07, 3.17798821924953E-07, 3.21829773497484E-07},
+ { 5.36395234007614E-07, 5.37394143407255E-07, 1.07279079486489E-06, 1.07678548033618E-06},
+ { 3.9406657492691E-07, 3.95064475355866E-07, 7.88133220908094E-07, 7.92124779991354E-07},
+ { 2.77072558674263E-07, 2.78073869708351E-07, 5.54145316300492E-07, 5.58150745177954E-07},
+ { 3.93172285839682E-07, 3.94176680629243E-07, 7.8634455746851E-07, 7.90362207681028E-07},
+ { 2.85718613213248E-07, 2.86716215214256E-07, 5.71436899576838E-07, 5.75428146021295E-07},
+ { 1.26677917933193E-07, 1.27688309703444E-07, 2.5335566533613E-07, 2.57397502423373E-07},
+ { 8.70625598281549E-08, 8.80735200325944E-08, 1.74125048602036E-07, 1.7816884678723E-07},
+ { 9.37471753559294E-08, 9.47451752608686E-08, 1.87494393344423E-07, 1.91486549283582E-07},
+ { 3.30706200202258E-08, 3.40820349720161E-08, 6.61412968838704E-08, 7.01866440522281E-08},
+ { 9.30588299752344E-08, 9.40660100923196E-08, 1.86117645739614E-07, 1.90146408840519E-07},
+ { 3.83720646368602E-08, 3.9382058503179E-08, 7.67441576954297E-08, 8.07838489436108E-08},
+ { 3.12277990133225E-07, 3.13278405883466E-07, 6.2455600868816E-07, 6.28557373261174E-07},
+ { 2.62851173715717E-07, 2.63860243876479E-07, 5.25702404274853E-07, 5.29738812815594E-07},
+ { 6.38404742403509E-08, 6.48505391609433E-08, 1.27680962691556E-07, 1.3172102342196E-07},
+ { 7.73673903609051E-07, 7.74670056102877E-07, 1.54734770774212E-06, 1.55133201928948E-06},
+ { 2.23658261688797E-07, 2.24661988568187E-07, 4.47316281793064E-07, 4.51331573003699E-07},
+ { 3.18664490350784E-07, 3.19664522407948E-07, 6.37329037544987E-07, 6.41328341544067E-07},
+ { 6.28178327133355E-08, 6.38285229115354E-08, 1.25635679637526E-07, 1.29678596749727E-07},
+ { 2.14196546721723E-07, 2.15193523445123E-07, 4.28392880280626E-07, 4.32381142445593E-07},
+ { 2.53436667208007E-08, 2.63544563949836E-08, 5.06872623873278E-08, 5.47306626685895E-08},
+ { 1.79067058070359E-07, 1.80076483502489E-07, 3.58134101929863E-07, 3.62171505230435E-07},
+ { 1.14243619009358E-08, 1.24315846505851E-08, 2.28486385367432E-08, 2.68776432221784E-08},
+ { 1.62669806513804E-08, 1.72783103380425E-08, 3.25339186701967E-08, 3.65793084711186E-08},
+ { 2.55726050113481E-07, 2.56733443393387E-07, 5.11451958118414E-07, 5.15481701768294E-07},
+ { 6.74249776011493E-08, 6.84268144368616E-08, 1.34849770461187E-07, 1.38856961484635E-07},
+ { 6.02680273686929E-07, 6.03684966904439E-07, 1.20536046210873E-06, 1.20937964709356E-06},
+ { 1.45373832083351E-07, 1.46384664390098E-07, 2.90747806275249E-07, 2.94791007604545E-07},
+ { 3.46929951433594E-07, 3.4793785630427E-07, 6.93859675493513E-07, 6.9789133760878E-07},
+ { 2.86301002461187E-07, 2.87301332946299E-07, 5.72601834392117E-07, 5.76603540025644E-07},
+ { 8.92922287221154E-08, 9.02999346408251E-08, 1.78584627974487E-07, 1.82615082167104E-07},
+ { 1.61394524411662E-07, 1.62388303692751E-07, 3.22789020401615E-07, 3.26764009628278E-07},
+ { 3.15667904260408E-07, 3.16657960297562E-07, 6.31335680623124E-07, 6.35296956374987E-07},
+ { 3.65886961617434E-07, 3.66888201597249E-07, 7.31774122186835E-07, 7.35779138949511E-07},
+ { 5.1565010039667E-08, 5.25749044300028E-08, 1.03130020079334E-07, 1.07168872887087E-07},
+ { 2.49045257305625E-07, 2.50053105332881E-07, 4.98090642508942E-07, 5.02122333045918E-07},
+ { 3.89293546732006E-07, 3.90250974646733E-07, 7.78586866090336E-07, 7.82417473033092E-07},
+ { 1.28008643685007E-07, 1.29012775573756E-07, 2.56017258948305E-07, 2.60033857557573E-07},
+ { 3.59406385541661E-07, 3.60415128852765E-07, 7.18812870559304E-07, 7.2284757379748E-07},
+ { 7.04774407722653E-08, 7.14837113946487E-08, 1.40955009442223E-07, 1.44979907190645E-07},
+ { 4.69074876718878E-08, 4.79159325550427E-08, 9.38164674835207E-08, 9.78508154503288E-08},
+ { 3.46929951433594E-07, 3.4793785630427E-07, 6.93859675493513E-07, 6.9789133760878E-07},
+ { 2.52614157147946E-07, 2.5362039934862E-07, 5.05228484826148E-07, 5.09253013092348E-07},
+ { 1.752849669856E-07, 1.76295728238074E-07, 3.50569891338637E-07, 3.54612936348531E-07},
+ { 9.97295472870974E-08, 1.00740251696152E-07, 1.99459023519921E-07, 2.03501656415028E-07},
+ { 1.27083694678731E-08, 1.37173685743619E-08, 2.54168952551481E-08, 2.94525364097353E-08},
+ { 2.88675792603499E-07, 2.89683143250841E-07, 5.77351315200758E-07, 5.81380774633544E-07},
+ { 2.2199529325917E-07, 2.22990578890858E-07, 4.43990884946288E-07, 4.47971643779965E-07},
+ { 3.101136769601E-08, 3.20127782060808E-08, 6.20226217051822E-08, 6.60284200648675E-08},
+ { 6.34119317055593E-08, 6.44227355905969E-08, 1.26823891832828E-07, 1.30867206848961E-07},
+ { 2.27363642579803E-07, 2.28347417419172E-07, 4.54726489351742E-07, 4.5866131870298E-07},
+ { 5.761698673723E-08, 5.86278900982506E-08, 1.15233817155058E-07, 1.19277274279739E-07},
+ { 5.59963240220895E-08, 5.70068436900328E-08, 1.11992690676743E-07, 1.16034897246209E-07},
+ { 1.00404065506154E-07, 1.01413306197173E-07, 2.00808131012309E-07, 2.04845150619803E-07},
+ { 1.51791383018463E-07, 1.52801391095636E-07, 3.03582666560942E-07, 3.07622912032457E-07},
+ { 7.73673903609051E-07, 7.74670056102877E-07, 1.54734770774212E-06, 1.55133201928948E-06},
+ { 6.7849948948151E-07, 6.79496110933542E-07, 1.35699917791499E-06, 1.36098604741619E-06},
+ { 6.46773514745291E-08, 6.56873169191385E-08, 1.29354639000212E-07, 1.33394671308906E-07},
+ { 2.14274791687785E-07, 2.15266346970111E-07, 4.28549661535271E-07, 4.32515697923463E-07},
+ { 1.75431694060535E-07, 1.76439094445868E-07, 3.50863423648207E-07, 3.54893018084113E-07},
+ { 1.54840201105344E-07, 1.55849093630422E-07, 3.09680387999833E-07, 3.13715879940446E-07},
+ { 3.03876547036452E-07, 3.04886683011318E-07, 6.07753179338033E-07, 6.11793765870061E-07},
+ { 2.87581904956369E-07, 2.88585042085288E-07, 5.7516393781043E-07, 5.79176422377259E-07},
+ { 2.4641536811032E-08, 2.56472958426457E-08, 4.92830878329187E-08, 5.33060031671084E-08},
+ { 2.38351063330811E-08, 2.48459812723922E-08, 4.76701984553074E-08, 5.17136911071248E-08},
+ { 5.06429515212403E-07, 5.07291815665667E-07, 1.01285916542793E-06, 1.0163081114456E-06},
+ { 3.16136237188402E-08, 3.26210596313103E-08, 6.32272758593899E-08, 6.72569697712788E-08},
+ { 3.48408235595343E-08, 3.58516203391446E-08, 6.96816471190687E-08, 7.37248200266549E-08},
+ { 7.48174926457068E-08, 7.58264846467682E-08, 1.49634963975132E-07, 1.5367105987707E-07},
+ { 1.93732120123968E-07, 1.94739627090712E-07, 3.87464289985928E-07, 3.9149432495833E-07},
+ { 3.07901757423679E-08, 3.17564925467195E-08, 6.17883486597748E-08, 6.55261729320955E-08},
+ { 4.99771878992306E-07, 5.00766930144891E-07, 9.99543672719483E-07, 1.00352374943213E-06},
+ { 1.17716950853719E-07, 1.18722240927127E-07, 2.35433859074874E-07, 2.39455012263079E-07},
+ { 3.58876590667023E-08, 3.6895563937378E-08, 7.17753749768235E-08, 7.58068807726886E-08},
+ { 4.9829156978376E-07, 4.99225798478165E-07, 9.96582841139571E-07, 1.0003212125298E-06},
+ { 3.75331644875132E-07, 3.76332543794433E-07, 7.50663197379708E-07, 7.54666956481742E-07},
+ { 2.08074482088705E-08, 2.18164970533508E-08, 4.16148893123136E-08, 4.56511770607904E-08},
+ { 2.65227200202389E-08, 2.75340639177557E-08, 5.30454471459052E-08, 5.70908014196903E-08},
+ { 9.48590397342741E-08, 9.57736716600266E-08, 1.89718221577095E-07, 1.93376600066131E-07},
+ { 1.26375994113914E-08, 1.36486946189507E-08, 2.52751917173555E-08, 2.93195441258831E-08},
+ { 1.50946419807951E-07, 1.51955084959354E-07, 3.01892768561629E-07, 3.05927514432369E-07},
+ { 9.22171139450256E-08, 9.32281949417302E-08, 1.84434327366034E-07, 1.88478459506314E-07},
+ { 9.69194388744654E-07, 9.70171512904017E-07, 1.93838912565525E-06, 1.94229757255471E-06},
+ { 5.55253905076825E-08, 5.65363365012672E-08, 1.11050773909938E-07, 1.15094508146285E-07},
+ { 1.13003537194345E-07, 1.13988456007519E-07, 2.26006307002535E-07, 2.29945861462966E-07},
+ { 1.2296865747885E-07, 1.23975510746277E-07, 2.45937201270863E-07, 2.49964827503391E-07},
+ { 4.48469990033118E-08, 4.58578668371956E-08, 8.96939909011962E-08, 9.37375403964325E-08},
+ { 5.0952010610672E-08, 5.19609670845966E-08, 1.01904042537626E-07, 1.05939804484478E-07},
+ { 4.86714952785405E-08, 4.96825975915272E-08, 9.73430047679358E-08, 1.01387534812147E-07},
+ { 7.39467296284602E-08, 7.49580095771307E-08, 1.47893480573202E-07, 1.51938643000449E-07},
+ { 1.0657652893542E-07, 1.07576717311986E-07, 2.13153157346824E-07, 2.17153882431376E-07},
+ { 2.98015478961133E-08, 3.08124867842707E-08, 5.96030602650899E-08, 6.36467447634459E-08},
+ { 4.8263878227317E-07, 4.83640725690293E-07, 9.65278132980529E-07, 9.69288855401373E-07},
+ { 3.14623996189312E-07, 3.15605028333721E-07, 6.29259531592652E-07, 6.33185010201487E-07},
+ { 2.29475041635396E-07, 2.30466028483534E-07, 4.5895009037622E-07, 4.62914151455607E-07},
+ { 4.36916394619402E-07, 4.37877190506697E-07, 8.7382976232675E-07, 8.77673194565887E-07},
+ { 4.38233769273211E-08, 4.4833392109922E-08, 8.76467751709242E-08, 9.16867648470543E-08},
+ { 1.28198685445113E-07, 1.29205858456771E-07, 2.56397569842193E-07, 2.60425942144593E-07},
+ { 1.72098651773922E-07, 1.73105441092503E-07, 3.44197339074981E-07, 3.48224730828406E-07},
+ { 1.79612058559542E-08, 1.79676149514307E-08, 3.5905237893985E-08, 3.59159741947224E-08}
+ };
+
+ typedef bg::model::linestring<P> linestring;
+ typedef bg::model::polygon<P> polygon;
+
+ int const n = sizeof(testcases) / sizeof(testcases[0]);
+ int const ne = sizeof(expectations) / sizeof(expectations[0]);
+ BOOST_ASSERT(n == ne);
+
+#if 0
+ // Create PostGIS query to verify results
+ {
+ std::cout << "with viewy as ( select " << std::endl;
+ for (int i = 0; i < n; i++)
+ {
+ std::cout << (i > 0 ? "," : "") << " ST_GeomFromText('" << testcases[i] << "',0) as p" << i << std::endl;
+ }
+
+ std::cout << ") select 'afm18' as code" << std::endl;
+ for (int i = 0; i < n; i++)
+ {
+ std::cout << ", ST_Area(ST_Buffer(p" << i << ", 0.000018, 'endcap=flat join=miter')) as afm18_" << i << std::endl;
+ }
+ std::cout << " from viewy union all select 'arr18' as code" << std::endl;
+ for (int i = 0; i < n; i++)
+ {
+ std::cout << ", ST_Area(ST_Buffer(p" << i << ", 0.000018, 'endcap=round join=round')) as arr18_" << i << std::endl;
+ }
+ std::cout << " from viewy union all select 'afm36' as code" << std::endl;
+ for (int i = 0; i < n; i++)
+ {
+ std::cout << ", ST_Area(ST_Buffer(p" << i << ", 0.000036, 'endcap=flat join=miter')) as afm36_" << i << std::endl;
+ }
+ std::cout << " from viewy union all select 'arr36' as code" << std::endl;
+ for (int i = 0; i < n; i++)
+ {
+ std::cout << ", ST_Area(ST_Buffer(p" << i << ", 0.000036, 'endcap=round join=round')) as arr36_" << i << std::endl;
+ }
+ std::cout << " from viewy" << std::endl;
+ }
+#endif
+
+ bg::strategy::buffer::join_miter join_miter;
+ bg::strategy::buffer::join_round join_round(100);
+ bg::strategy::buffer::end_flat end_flat;
+ bg::strategy::buffer::end_round end_round(100);
+
+ double const tolerance = 1.0e-10;
+
+ // Aimes tested originally with 0.000018 degrees (around 2 m)
+ std::size_t self_ip_count = 0;
+
+ int expectation_index = 0;
+ for (int width = 18; width <= 36; width += 18, expectation_index += 2)
+ {
+ double aimes_width = static_cast<double>(width) / 1000000.0;
+ for (int i = 0; i < n; i++)
+ {
+#if! defined(BOOST_GEOMETRY_BUFFER_INCLUDE_FAILING_TESTS)
+ if (i == 167)
+ {
+ // Failes because of flat-end/helper segment intersection
+ continue;
+ }
+ if (width == 36 && (i == 112 || i == 131 || i == 152))
+ {
+ // Failes (most probably) because of flat-end/helper segment intersection
+ continue;
+ }
+#endif
+
+ std::ostringstream name;
+ try
+ {
+ name << "aimes_" << i << "_" << width;
+ test_one<linestring, polygon>
+ (
+ name.str(), testcases[i], join_miter, end_flat,
+ expectations[i][expectation_index],
+ aimes_width, aimes_width,
+ self_ip_count, tolerance
+ );
+ test_one<linestring, polygon>
+ (
+ name.str(), testcases[i], join_round, end_round,
+ expectations[i][expectation_index + 1],
+ aimes_width, aimes_width,
+ self_ip_count, tolerance
+ );
+ }
+ catch(std::exception const& e)
+ {
+ std::cout << "Exception: " << e.what() << " in " << name.str() << std::endl;
+ }
+ }
+ }
+ std::cout << "Total self-ips: " << self_ip_count << std::endl;
+}
+
+
+int test_main(int, char* [])
+{
+ test_aimes<bg::model::point<double, 2, bg::cs::cartesian> >();
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/buffer/linestring_buffer.cpp b/libs/geometry/test/algorithms/buffer/linestring_buffer.cpp
new file mode 100644
index 0000000000..078ca3f21c
--- /dev/null
+++ b/libs/geometry/test/algorithms/buffer/linestring_buffer.cpp
@@ -0,0 +1,185 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2012-2014 Barend Gehrels, 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)
+
+#include <test_buffer.hpp>
+
+#include <boost/geometry/algorithms/buffer.hpp>
+#include <boost/geometry/core/coordinate_type.hpp>
+
+#include <boost/geometry/strategies/strategies.hpp>
+
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+#include <test_common/test_point.hpp>
+
+
+static std::string const simplex = "LINESTRING(0 0,4 5)";
+static std::string const straight = "LINESTRING(0 0,4 5,8 10)";
+static std::string const one_bend = "LINESTRING(0 0,4 5,7 4)";
+static std::string const two_bends = "LINESTRING(0 0,4 5,7 4,10 6)";
+static std::string const overlapping = "LINESTRING(0 0,4 5,7 4,10 6, 10 2,2 2)";
+static std::string const curve = "LINESTRING(2 7,3 5,5 4,7 5,8 7)";
+static std::string const tripod = "LINESTRING(5 0,5 5,1 8,5 5,9 8)"; // with spike
+
+static std::string const degenerate0 = "LINESTRING()";
+static std::string const degenerate1 = "LINESTRING(5 5)";
+static std::string const degenerate2 = "LINESTRING(5 5,5 5)";
+static std::string const degenerate3 = "LINESTRING(5 5,5 5,5 5)";
+static std::string const degenerate4 = "LINESTRING(5 5,5 5,4 4,5 5,5 5)";
+
+static std::string const for_collinear = "LINESTRING(2 0,0 0,0 4,6 4,6 0,4 0)";
+static std::string const for_collinear2 = "LINESTRING(2 1,2 0,0 0,0 4,6 4,6 0,4 0,4 1)";
+
+static std::string const chained2 = "LINESTRING(0 0,1 1,2 2)";
+static std::string const chained3 = "LINESTRING(0 0,1 1,2 2,3 3)";
+static std::string const chained4 = "LINESTRING(0 0,1 1,2 2,3 3,4 4)";
+
+static std::string const field_sprayer1 = "LINESTRING(76396.40464822574 410095.6795147947,76397.85016212701 410095.211865792,76401.30666443033 410095.0466387949,76405.05892643372 410096.1007777959,76409.45103273794 410098.257640797,76412.96309264141 410101.6522238015)";
+static std::string const aimes120 = "LINESTRING(-2.505218 52.189211,-2.505069 52.189019,-2.504941 52.188854)";
+static std::string const aimes167 = "LINESTRING(-2.378569 52.312133,-2.37857 52.312127,-2.378544 52.31209)";
+static std::string const aimes175 = "LINESTRING(-2.3116 52.354326,-2.311555 52.35417,-2.311489 52.354145,-2.311335 52.354178)";
+static std::string const aimes171 = "LINESTRING(-2.393161 52.265087,-2.393002 52.264965,-2.392901 52.264891)";
+static std::string const aimes181 = "LINESTRING(-2.320686 52.43505,-2.320678 52.435016,-2.320697 52.434978,-2.3207 52.434977,-2.320741 52.434964,-2.320807 52.434964,-2.320847 52.434986,-2.320903 52.435022)";
+
+
+template <bool Clockwise, typename P>
+void test_all()
+{
+ typedef bg::model::linestring<P> linestring;
+ typedef bg::model::polygon<P, Clockwise> polygon;
+
+ bg::strategy::buffer::join_miter join_miter;
+ bg::strategy::buffer::join_round join_round(100);
+ bg::strategy::buffer::join_round_by_divide join_round_by_divide(4);
+ bg::strategy::buffer::end_flat end_flat;
+ bg::strategy::buffer::end_round end_round(100);
+
+ // Simplex (join-type is not relevant)
+ test_one<linestring, polygon>("simplex", simplex, join_miter, end_flat, 19.209, 1.5, 1.5);
+ test_one<linestring, polygon>("simplex", simplex, join_miter, end_round, 26.2733, 1.5, 1.5);
+
+ test_one<linestring, polygon>("simplex_asym_neg", simplex, join_miter, end_flat, 3.202, +1.5, -1.0);
+ test_one<linestring, polygon>("simplex_asym_pos", simplex, join_miter, end_flat, 3.202, -1.0, +1.5);
+ // Do not work yet:
+ // test_one<linestring, polygon>("simplex_asym_neg", simplex, join_miter, end_round, 3.202, +1.5, -1.0);
+ // test_one<linestring, polygon>("simplex_asym_pos", simplex, join_miter, end_round, 3.202, -1.0, +1.5);
+
+ // Generates (initially) a reversed polygon, with a negative area, which is reversed afterwards in assign_parents
+ test_one<linestring, polygon>("simplex_asym_neg_rev", simplex, join_miter, end_flat, 3.202, +1.0, -1.5);
+ test_one<linestring, polygon>("simplex_asym_pos_rev", simplex, join_miter, end_flat, 3.202, -1.5, +1.0);
+
+ test_one<linestring, polygon>("straight", straight, join_round, end_flat, 38.4187, 1.5, 1.5);
+ test_one<linestring, polygon>("straight", straight, join_miter, end_flat, 38.4187, 1.5, 1.5);
+
+ // One bend/two bends (tests join-type)
+ test_one<linestring, polygon>("one_bend", one_bend, join_round, end_flat, 28.488, 1.5, 1.5);
+ test_one<linestring, polygon>("one_bend", one_bend, join_miter, end_flat, 28.696, 1.5, 1.5);
+ test_one<linestring, polygon>("one_bend", one_bend, join_round_by_divide, end_flat, 28.488, 1.5, 1.5);
+
+ test_one<linestring, polygon>("one_bend", one_bend, join_round, end_round, 35.5603, 1.5, 1.5);
+ test_one<linestring, polygon>("one_bend", one_bend, join_miter, end_round, 35.7601, 1.5, 1.5);
+
+ test_one<linestring, polygon>("two_bends", two_bends, join_round, end_flat, 39.235, 1.5, 1.5);
+ test_one<linestring, polygon>("two_bends", two_bends, join_round_by_divide, end_flat, 39.235, 1.5, 1.5);
+ test_one<linestring, polygon>("two_bends", two_bends, join_miter, end_flat, 39.513, 1.5, 1.5);
+ test_one<linestring, polygon>("two_bends_left", two_bends, join_round, end_flat, 20.028, 1.5, 0.0);
+ test_one<linestring, polygon>("two_bends_left", two_bends, join_miter, end_flat, 20.225, 1.5, 0.0);
+ test_one<linestring, polygon>("two_bends_right", two_bends, join_round, end_flat, 19.211, 0.0, 1.5);
+ test_one<linestring, polygon>("two_bends_right", two_bends, join_miter, end_flat, 19.288, 0.0, 1.5);
+
+
+ // Next (and all similar cases) which a offsetted-one-sided buffer has to be fixed. TODO
+ //test_one<linestring, polygon>("two_bends_neg", two_bends, join_miter, end_flat, 99, +1.5, -1.0);
+ //test_one<linestring, polygon>("two_bends_pos", two_bends, join_miter, end_flat, 99, -1.5, +1.0);
+ //test_one<linestring, polygon>("two_bends_neg", two_bends, join_round, end_flat,99, +1.5, -1.0);
+ //test_one<linestring, polygon>("two_bends_pos", two_bends, join_round, end_flat, 99, -1.5, +1.0);
+
+ test_one<linestring, polygon>("overlapping150", overlapping, join_round, end_flat, 65.6786, 1.5, 1.5);
+ test_one<linestring, polygon>("overlapping150", overlapping, join_miter, end_flat, 68.140, 1.5, 1.5);
+
+ // Different cases with intersection points on flat and (left/right from line itself)
+ test_one<linestring, polygon>("overlapping_asym_150_010", overlapping, join_round, end_flat, 48.308, 1.5, 0.25);
+ test_one<linestring, polygon>("overlapping_asym_150_010", overlapping, join_miter, end_flat, 50.770, 1.5, 0.25);
+ test_one<linestring, polygon>("overlapping_asym_150_075", overlapping, join_round, end_flat, 58.506, 1.5, 0.75);
+ test_one<linestring, polygon>("overlapping_asym_150_075", overlapping, join_miter, end_flat, 60.985, 1.5, 0.75);
+ test_one<linestring, polygon>("overlapping_asym_150_100", overlapping, join_round, end_flat, 62.514, 1.5, 1.0);
+ test_one<linestring, polygon>("overlapping_asym_150_100", overlapping, join_miter, end_flat, 64.984, 1.5, 1.0);
+
+ // Having flat end
+ test_one<linestring, polygon>("for_collinear", for_collinear, join_round, end_flat, 68.561, 2.0, 2.0);
+ test_one<linestring, polygon>("for_collinear", for_collinear, join_miter, end_flat, 72, 2.0, 2.0);
+#if defined(BOOST_GEOMETRY_BUFFER_INCLUDE_FAILING_TESTS)
+ test_one<linestring, polygon>("for_collinear2", for_collinear2, join_round, end_flat, 74.387, 2.0, 2.0);
+ test_one<linestring, polygon>("for_collinear2", for_collinear2, join_miter, end_flat, 78.0, 2.0, 2.0);
+#endif
+
+#if defined(BOOST_GEOMETRY_BUFFER_INCLUDE_FAILING_TESTS)
+ // Having flat end causing self-intersection
+ test_one<linestring, polygon>("curve", curve, join_round, end_flat, 54.8448, 5.0, 3.0);
+ test_one<linestring, polygon>("curve", curve, join_miter, end_flat, 55.3875, 5.0, 3.0);
+#endif
+
+ test_one<linestring, polygon>("tripod", tripod, join_miter, end_flat, 74.25, 3.0);
+ test_one<linestring, polygon>("tripod", tripod, join_miter, end_round, 116.6336, 3.0);
+
+ test_one<linestring, polygon>("chained2", chained2, join_round, end_flat, 11.3137, 2.5, 1.5);
+ test_one<linestring, polygon>("chained3", chained3, join_round, end_flat, 16.9706, 2.5, 1.5);
+ test_one<linestring, polygon>("chained4", chained4, join_round, end_flat, 22.6274, 2.5, 1.5);
+
+#if defined(BOOST_GEOMETRY_BUFFER_INCLUDE_FAILING_TESTS)
+ // Having flat end causing self-intersection
+ test_one<linestring, polygon>("field_sprayer1", reallife1, join_round, end_flat, 99, 16.5, 6.5);
+#endif
+ test_one<linestring, polygon>("field_sprayer1", field_sprayer1, join_round, end_round, 718.761877, 16.5, 6.5);
+ test_one<linestring, polygon>("field_sprayer1", field_sprayer1, join_miter, end_round, 718.939628, 16.5, 6.5);
+
+ test_one<linestring, polygon>("degenerate0", degenerate0, join_round, end_round, 0.0, 3.0);
+ test_one<linestring, polygon>("degenerate1", degenerate1, join_round, end_round, 28.25, 3.0);
+ test_one<linestring, polygon>("degenerate2", degenerate2, join_round, end_round, 28.2503, 3.0);
+ test_one<linestring, polygon>("degenerate3", degenerate3, join_round, end_round, 28.2503, 3.0);
+ test_one<linestring, polygon>("degenerate4", degenerate4, join_round, end_round, 36.7410, 3.0);
+ test_one<linestring, polygon>("degenerate4", degenerate4, join_round, end_flat, 8.4853, 3.0);
+
+ double tolerance = 1.0e-10;
+
+ test_one<linestring, polygon>("aimes120", aimes120, join_miter, end_flat, 1.62669948622351512e-08, 0.000018, 0.000018, false, tolerance);
+ test_one<linestring, polygon>("aimes120", aimes120, join_round, end_round, 1.72842078427493107e-08, 0.000018, 0.000018, true, tolerance);
+
+#if defined(BOOST_GEOMETRY_BUFFER_INCLUDE_FAILING_TESTS)
+ // Having flat end causing self-intersection
+ test_one<linestring, polygon>("aimes167", aimes167, join_miter, end_flat, 1.62669948622351512e-08, 0.000018, 0.000018, true, tolerance);
+#endif
+ test_one<linestring, polygon>("aimes167", aimes167, join_round, end_round, 2.85734813587623648e-09, 0.000018, 0.000018, true, tolerance);
+
+ test_one<linestring, polygon>("aimes175", aimes175, join_miter, end_flat, 2.81111809385947709e-08, 0.000036, 0.000036, true, tolerance);
+ test_one<linestring, polygon>("aimes175", aimes175, join_round, end_round, 3.21215765097804251e-08, 0.000036, 0.000036, true, tolerance);
+
+ test_one<linestring, polygon>("aimes171", aimes171, join_miter, end_flat, 1.1721873249825876e-08, 0.000018, 0.000018, true, tolerance);
+ test_one<linestring, polygon>("aimes171", aimes171, join_round, end_round, 1.2739093335767393e-08, 0.000018, 0.000018, true, tolerance);
+ test_one<linestring, polygon>("aimes171", aimes171, join_round_by_divide, end_round, 1.2739093335767393e-08, 0.000018, 0.000018, true, tolerance);
+
+ test_one<linestring, polygon>("aimes181", aimes181, join_miter, end_flat, 2.1729405830228643e-08, 0.000036, 0.000036, true, tolerance);
+ test_one<linestring, polygon>("aimes181", aimes181, join_round, end_round, 2.57415564419716247e-08, 0.000036, 0.000036, true, tolerance);
+ test_one<linestring, polygon>("aimes181", aimes181, join_round_by_divide, end_round, 2.57415564419716247e-08, 0.000036, 0.000036, true, tolerance);
+}
+
+
+//#define HAVE_TTMATH
+#ifdef HAVE_TTMATH
+#include <ttmath_stub.hpp>
+#endif
+
+
+int test_main(int, char* [])
+{
+ test_all<true, bg::model::point<double, 2, bg::cs::cartesian> >();
+ test_all<false, bg::model::point<double, 2, bg::cs::cartesian> >();
+ //test_all<bg::model::point<tt, 2, bg::cs::cartesian> >();
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/buffer/multi_linestring_buffer.cpp b/libs/geometry/test/algorithms/buffer/multi_linestring_buffer.cpp
new file mode 100644
index 0000000000..c36a3a2e46
--- /dev/null
+++ b/libs/geometry/test/algorithms/buffer/multi_linestring_buffer.cpp
@@ -0,0 +1,74 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2012-2014 Barend Gehrels, 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)
+
+#include <test_buffer.hpp>
+
+#include <boost/geometry/multi/geometries/multi_geometries.hpp>
+
+static std::string const simplex = "MULTILINESTRING((0 0,4 5),(5 4,10 0))";
+static std::string const two_bends = "MULTILINESTRING((0 0,4 5,7 4,10 6),(1 5,5 9,8 6))";
+static std::string const turn_inside = "MULTILINESTRING((0 0,4 5,7 4,10 6),(1 5,5 9,8 6),(0 4,-2 6))";
+
+static std::string const degenerate0 = "MULTILINESTRING()";
+static std::string const degenerate1 = "MULTILINESTRING((5 5))";
+static std::string const degenerate2 = "MULTILINESTRING((5 5),(9 9))";
+static std::string const degenerate3 = "MULTILINESTRING((5 5),(9 9),(4 10))";
+static std::string const degenerate4 = "MULTILINESTRING((5 5,5 5),(9 9,9 9,10 10,9 9,9 9,9 9),(4 10,4 10,3 11,4 12,3 11,4 10,4 10))";
+
+
+template <bool Clockwise, typename P>
+void test_all()
+{
+ typedef bg::model::linestring<P> linestring;
+ typedef bg::model::multi_linestring<linestring> multi_linestring_type;
+ typedef bg::model::polygon<P, Clockwise> polygon;
+
+ bg::strategy::buffer::join_miter join_miter;
+ bg::strategy::buffer::join_round join_round(100);
+ bg::strategy::buffer::join_round_by_divide join_round_by_divide(4);
+ bg::strategy::buffer::end_flat end_flat;
+ bg::strategy::buffer::end_round end_round(100);
+
+ // Round joins / round ends
+ test_one<multi_linestring_type, polygon>("simplex", simplex, join_round, end_round, 49.0217, 1.5, 1.5);
+ test_one<multi_linestring_type, polygon>("two_bends", two_bends, join_round, end_round, 74.73, 1.5, 1.5);
+ test_one<multi_linestring_type, polygon>("turn_inside", turn_inside, join_round, end_round, 86.3313, 1.5, 1.5);
+ test_one<multi_linestring_type, polygon>("two_bends_asym", two_bends, join_round, end_round, 58.3395, 1.5, 0.75);
+
+ // Round joins / flat ends:
+ test_one<multi_linestring_type, polygon>("simplex", simplex, join_round, end_flat, 38.2623, 1.5, 1.5);
+ test_one<multi_linestring_type, polygon>("two_bends", two_bends, join_round, end_flat, 64.6217, 1.5, 1.5);
+
+ // TODO this should be fixed test_one<multi_linestring_type, polygon>("turn_inside", turn_inside, join_round, end_flat, 99, 1.5, 1.5);
+ test_one<multi_linestring_type, polygon>("two_bends_asym", two_bends, join_round, end_flat, 52.3793, 1.5, 0.75);
+
+ // This one is far from done:
+ // test_one<multi_linestring_type, polygon>("turn_inside_asym_neg", turn_inside, join_round, end_flat, 99, +1.5, -1.0);
+
+ // Miter / divide joins, various ends
+ test_one<multi_linestring_type, polygon>("two_bends", two_bends, join_round_by_divide, end_flat, 64.6217, 1.5, 1.5);
+ test_one<multi_linestring_type, polygon>("two_bends", two_bends, join_miter, end_flat, 65.1834, 1.5, 1.5);
+ test_one<multi_linestring_type, polygon>("two_bends", two_bends, join_miter, end_round, 75.2917, 1.5, 1.5);
+
+ test_one<multi_linestring_type, polygon>("degenerate0", degenerate0, join_round, end_round, 0.0, 3.0, 3.0);
+ test_one<multi_linestring_type, polygon>("degenerate1", degenerate1, join_round, end_round, 28.2503, 3.0, 3.0);
+ test_one<multi_linestring_type, polygon>("degenerate2", degenerate2, join_round, end_round, 56.0457, 3.0, 3.0);
+ test_one<multi_linestring_type, polygon>("degenerate3", degenerate3, join_round, end_round, 80.4531, 3.0, 3.0);
+ test_one<multi_linestring_type, polygon>("degenerate4", degenerate4, join_round, end_round, 104.3142, 3.0, 3.0);
+}
+
+
+
+int test_main(int, char* [])
+{
+ test_all<true, bg::model::point<double, 2, bg::cs::cartesian> >();
+ test_all<false, bg::model::point<double, 2, bg::cs::cartesian> >();
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/buffer/multi_point_buffer.cpp b/libs/geometry/test/algorithms/buffer/multi_point_buffer.cpp
new file mode 100644
index 0000000000..da0efc3a7b
--- /dev/null
+++ b/libs/geometry/test/algorithms/buffer/multi_point_buffer.cpp
@@ -0,0 +1,198 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2012-2014 Barend Gehrels, 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)
+
+#include <test_buffer.hpp>
+
+#include <boost/geometry/multi/geometries/multi_geometries.hpp>
+
+static std::string const simplex = "MULTIPOINT((5 5),(7 7))";
+static std::string const three = "MULTIPOINT((5 8),(9 8),(7 11))";
+
+// Generates error (extra polygon on top of rest) at distance 14.0:
+static std::string const multipoint_a = "MULTIPOINT((39 44),(38 37),(41 29),(15 33),(58 39))";
+
+// Just one with holes at distance ~ 15
+static std::string const multipoint_b = "MULTIPOINT((5 56),(98 67),(20 7),(58 60),(10 4),(75 68),(61 68),(75 62),(92 26),(74 6),(67 54),(20 43),(63 30),(45 7))";
+
+
+template <bool Clockwise, typename P>
+void test_all()
+{
+ typedef bg::model::polygon<P, Clockwise> polygon;
+ typedef bg::model::multi_point<P> multi_point_type;
+
+ bg::strategy::buffer::join_miter join_miter;
+ bg::strategy::buffer::end_flat end_flat;
+
+ double const pi = boost::geometry::math::pi<double>();
+
+ test_one<multi_point_type, polygon>("simplex1", simplex, join_miter, end_flat, 2.0 * pi, 1.0, 1.0);
+ test_one<multi_point_type, polygon>("simplex2", simplex, join_miter, end_flat, 22.8372, 2.0, 2.0);
+ test_one<multi_point_type, polygon>("simplex3", simplex, join_miter, end_flat, 44.5692, 3.0, 3.0);
+
+ test_one<multi_point_type, polygon>("three1", three, join_miter, end_flat, 3.0 * pi, 1.0, 1.0);
+ test_one<multi_point_type, polygon>("three2", three, join_miter, end_flat, 36.7592, 2.0, 2.0);
+ test_one<multi_point_type, polygon>("three19", three, join_miter, end_flat, 33.6914, 1.9, 1.9);
+ test_one<multi_point_type, polygon>("three21", three, join_miter, end_flat, 39.6394, 2.1, 2.1);
+ test_one<multi_point_type, polygon>("three3", three, join_miter, end_flat, 65.533, 3.0, 3.0);
+
+ test_one<multi_point_type, polygon>("multipoint_a", multipoint_a, join_miter, end_flat, 2049.98, 14.0, 14.0);
+ test_one<multi_point_type, polygon>("multipoint_b", multipoint_b, join_miter, end_flat, 7109.88, 15.0, 15.0);
+ test_one<multi_point_type, polygon>("multipoint_b1", multipoint_b, join_miter, end_flat, 6911.89, 14.7, 14.7);
+ test_one<multi_point_type, polygon>("multipoint_b2", multipoint_b, join_miter, end_flat, 7174.79, 15.1, 15.1);
+}
+
+template
+<
+ typename GeometryOut,
+ template<typename, typename> class JoinStrategy,
+ template<typename, typename> class EndStrategy,
+ typename Geometry
+>
+double test_growth(Geometry const& geometry, int n, int d, double distance)
+{
+ namespace bg = boost::geometry;
+
+ typedef typename bg::coordinate_type<Geometry>::type coordinate_type;
+ typedef typename bg::point_type<Geometry>::type point_type;
+
+ // extern int point_buffer_count;
+ std::ostringstream complete;
+ complete
+ << "point" << "_"
+ << "growth" << "_"
+ << string_from_type<coordinate_type>::name()
+ << "_" << "r"
+ << "_" << n
+ << "_" << d
+ // << "_" << point_buffer_count
+ ;
+
+ //std::cout << complete.str() << std::endl;
+
+ std::ostringstream filename;
+ filename << "buffer_" << complete.str() << ".svg";
+
+ std::ofstream svg(filename.str().c_str());
+
+#ifdef BOOST_GEOMETRY_DEBUG_WITH_MAPPER
+ bg::svg_mapper<point_type> mapper(svg, 500, 500);
+
+ {
+ bg::model::box<point_type> box;
+ bg::envelope(geometry, box);
+
+ bg::buffer(box, box, distance * 1.01);
+ mapper.add(box);
+ }
+#endif
+
+ JoinStrategy
+ <
+ point_type,
+ typename bg::point_type<GeometryOut>::type
+ > join_strategy;
+ EndStrategy
+ <
+ point_type,
+ typename bg::point_type<GeometryOut>::type
+ > end_strategy;
+
+ typedef bg::strategy::buffer::distance_symmetric<coordinate_type> distance_strategy_type;
+ distance_strategy_type distance_strategy(distance);
+
+ std::vector<GeometryOut> buffered;
+
+ typedef typename bg::rescale_policy_type<point_type>::type
+ rescale_policy_type;
+ rescale_policy_type rescale_policy
+ = bg::get_rescale_policy<rescale_policy_type>(geometry);
+
+ bg::detail::buffer::buffer_inserter<GeometryOut>(geometry,
+ std::back_inserter(buffered),
+ distance_strategy,
+ join_strategy,
+ end_strategy,
+ rescale_policy
+#ifdef BOOST_GEOMETRY_DEBUG_WITH_MAPPER
+ , mapper
+#endif
+ );
+
+ typename bg::default_area_result<GeometryOut>::type area = 0;
+ BOOST_FOREACH(GeometryOut const& polygon, buffered)
+ {
+ area += bg::area(polygon);
+ }
+
+#ifdef BOOST_GEOMETRY_DEBUG_WITH_MAPPER
+ // Map input geometry in green
+ mapper.map(geometry, "opacity:0.5;fill:rgb(0,128,0);stroke:rgb(0,128,0);stroke-width:10");
+
+ BOOST_FOREACH(GeometryOut const& polygon, buffered)
+ {
+ mapper.map(polygon, "opacity:0.4;fill:rgb(255,255,128);stroke:rgb(0,0,0);stroke-width:3");
+ }
+#endif
+
+ return area;
+}
+
+template <typename P>
+void test_growth(int n, int distance_count)
+{
+ srand(int(time(NULL)));
+ //std::cout << typeid(bg::coordinate_type<P>::type).name() << std::endl;
+ boost::timer t;
+
+ namespace buf = bg::strategy::buffer;
+ typedef bg::model::polygon<P> polygon;
+ typedef bg::model::multi_point<P> multi_point_type;
+
+ multi_point_type multi_point;
+ for (int i = 0; i < n; i++)
+ {
+ P point(rand() % 100, rand() % 100);
+ multi_point.push_back(point);
+ }
+
+ //std::cout << bg::wkt(multi_point) << std::endl;
+
+ double previous_area = 0;
+ double epsilon = 0.1;
+ double distance = 15.0;
+ for (int d = 0; d < distance_count; d++, distance += epsilon)
+ {
+ double area = test_growth<polygon, buf::join_miter, buf::end_round>(multi_point, n, d, distance);
+ if (area < previous_area)
+ {
+ std::cout << "Error: " << area << " < " << previous_area << std::endl
+ << " n=" << n << " distance=" << distance
+ << bg::wkt(multi_point) << std::endl;
+ }
+ previous_area = area;
+ }
+ std::cout << "n=" << n << " time=" << t.elapsed() << std::endl;
+}
+
+int test_main(int, char* [])
+{
+ test_all<true, bg::model::point<double, 2, bg::cs::cartesian> >();
+ test_all<false, bg::model::point<double, 2, bg::cs::cartesian> >();
+
+
+#ifdef BOOST_GEOMETRY_BUFFER_TEST_GROWTH
+ for (int i = 5; i <= 50; i++)
+ {
+ test_growth<bg::model::point<double, 2, bg::cs::cartesian> >(i, 20);
+ }
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/buffer/multi_polygon_buffer.cpp b/libs/geometry/test/algorithms/buffer/multi_polygon_buffer.cpp
new file mode 100644
index 0000000000..4cce69a4cc
--- /dev/null
+++ b/libs/geometry/test/algorithms/buffer/multi_polygon_buffer.cpp
@@ -0,0 +1,416 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2012-2014 Barend Gehrels, 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)
+
+#include <test_buffer.hpp>
+
+#include <boost/geometry/multi/geometries/multi_geometries.hpp>
+
+
+static std::string const simplex
+ = "MULTIPOLYGON(((0 1,2 5,5 3,0 1)),((1 1,5 2,5 0,1 1)))";
+
+static std::string const zonethru
+ = "MULTIPOLYGON(((0 0,0 6,5 6,5 4,3 4,3 0,0 0)),((5 0,5 2,7 2,7 6,10 6,10 0,5 0)))";
+
+static std::string const wrapped
+ = "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2)),((4 4,4 6,6 6,6 4,4 4)))";
+
+static std::string const triangles
+ = "MULTIPOLYGON(((0 4,3 0,-2.5 -1,0 4)),((3 8,5.5 13,8 8,3 8)),((11 4,13.5 -1,8 0,11 4)))";
+
+static std::string const degenerate0
+ = "MULTIPOLYGON()";
+static std::string const degenerate1
+ = "MULTIPOLYGON(((5 5,5 5,5 5,5 5)),((6 6,6 6,6 6,6 6)))";
+static std::string const degenerate2
+ = "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(5 5,5 5,5 5,5 5)),((11 5,11 5,11 5,11 5)))";
+
+// From robustness tests (rt)
+
+// Case with duplicate points (due to chained boxes) (round)
+static std::string const rt_a
+ = "MULTIPOLYGON(((2 7,2 8,3 8,3 7,2 7)),((5 4,5 5,6 5,6 4,5 4)),((5 8,6 8,6 7,6 6,5 6,5 7,4 7,4 8,5 8)),((3 5,4 5,4 4,3 4,2 4,2 5,3 5)))";
+
+// Case with u-u (miter)
+static std::string const rt_b
+ = "MULTIPOLYGON(((8 4,8 5,9 5,9 4,8 4)),((6 2,6 3,7 3,7 2,6 2)),((8 0,8 1,9 1,9 0,8 0)),((9 7,9 8,10 8,10 7,9 7)))";
+
+// Case with geometry::equals( turn.point(7.0000000000000000, 4.3368086899420177e-019), helper_segment(7.0000000000000000, 0.00000000000000000))) (round)
+static std::string const rt_c
+ = "MULTIPOLYGON(((6 1,6 2,7 2,7 1,6 1)),((8 0,8 1,9 1,9 0,8 0)))";
+
+// Case with round corner on same perpendicular points (round)
+static std::string const rt_d
+ = "MULTIPOLYGON(((2 2,2 3,3 2,2 2)),((2 5,2 6,3 5,2 5)),((2 4,2 5,3 4,2 4)),((3 2,3 3,4 2,3 2)),((4 4,4 5,5 4,4 4)),((5 6,5 5,4 5,4 6,5 7,5 6)),((2 2,3 1,3 0,2 0,2 1,1 1,1 2,2 2)),((1 3,1 2,0 2,1 3)),((1 4,2 4,2 3,1 3,1 4)))";
+
+// Case with missing turning point (miter) and many intersections (round, OK)
+static std::string const rt_e
+ = "MULTIPOLYGON(((0 6,0 7,1 6,0 6)),((3 7,3 8,4 8,4 7,3 7)),((4 6,4 7,5 7,4 6)),((3 6,3 7,4 6,3 6)),((1 9,2 10,2 9,1 9)),((1 9,1 8,0 8,0 9,1 9)),((3 5,3 4,2 4,2 5,2 6,3 5)))";
+
+// Extract of e (miter)
+static std::string const rt_f
+ = "MULTIPOLYGON(((0 6,0 7,1 6,0 6)),((1 9,1 8,0 8,0 9,1 9)))";
+
+// Robustness / turn problem (collinearity with turn after), solved in get_turn-info
+static std::string const rt_g1
+ = "MULTIPOLYGON(((3 8,3 9,4 9,3 8)),((7 5,7 6,8 5,7 5)),((1 8,1 9,2 9,1 8)),((1 6,1 7,2 7,1 6)))";
+
+static std::string const rt_g2
+ = "MULTIPOLYGON(((6 5,7 5,6 4,5 4,5 5,6 5)),((4 2,4 3,5 3,4 2)))";
+
+static std::string const rt_g3
+ = "MULTIPOLYGON(((4 2,5 3,5 2,4 2)),((2 0,3 1,3 0,2 0)))";
+
+
+// IP on match of 3 lines
+static std::string const rt_h
+ = "MULTIPOLYGON(((4 7,4 8,5 7,4 7)),((4 8,5 9,5 8,4 8)),((9 1,10 2,10 1,9 1)),((4 1,4 2,5 2,4 1)),((2 9,2 10,3 10,2 9)),((7 7,8 8,8 7,7 7)),((3 4,4 4,3 3,2 3,2 4,3 4)))";
+
+// r=1.16 (touching)
+static std::string const rt_i
+ = "MULTIPOLYGON(((2 1,2 2,3 2,2 1)),((3 2,3 3,4 3,3 2)))";
+
+// r=1.16 (touching in the middle)
+static std::string const rt_j
+ = "MULTIPOLYGON(((2 4,2 5,3 5,2 4)),((5 3,5 4,6 4,5 3)),((9 4,9 5,10 5,10 4,9 4)),((0 2,0 3,1 3,0 2)))";
+
+// Occupied (but not completely - due to duplicate point there)
+static std::string const rt_k
+ = "MULTIPOLYGON(((3 7,3 8,4 8,3 7)),((0 4,0 5,1 5,0 4)),((3 5,3 6,4 6,4 5,3 5)),((2 6,3 7,3 6,2 6)),((3 2,3 1,2 1,2 2,3 3,3 2)),((0 9,1 10,1 9,1 8,0 8,0 9)))";
+
+// Segment-intersection problem (nearly collinear not reported as collinear), fixed
+static std::string const rt_l
+ = "MULTIPOLYGON(((2 5,2 6,3 5,2 5)),((6 1,6 2,7 1,6 1)))";
+
+// Segment-intersection problem (missed touch because of robustness) (with 4), fixed
+static std::string const rt_m1
+ = "MULTIPOLYGON(((4 2,4 3,5 2,4 2)),((1 2,2 3,2 2,1 2)))";
+
+// Same, with 2
+static std::string const rt_m2
+ = "MULTIPOLYGON(((0 3,1 4,1 3,0 3)),((3 6,4 7,4 6,4 5,3 5,3 6)))";
+
+// Segment-intersection problem (disjoint nearly collinear segments were reported as intersecting), fixed.
+static std::string const rt_n
+ = "MULTIPOLYGON(((0 0,1 1,1 0,0 0)),((3 3,4 4,4 3,3 3)))";
+
+// Segment intersection of 3 pieces in one point, plus all intersection points are within the other piece (due to precision)
+static std::string const rt_o1
+ = "MULTIPOLYGON(((8 4,8 5,9 5,8 4)),((9 4,10 5,10 4,9 4)),((6 2,6 3,7 3,6 2)))";
+
+static std::string const rt_o2
+ = "MULTIPOLYGON(((8 4,8 5,9 5,8 4)),((6 5,7 4,6 4,6 5)),((9 4,10 5,10 4,9 4)),((6 2,6 3,7 3,6 2)))";
+
+static std::string const rt_o3
+ = "MULTIPOLYGON(((8 4,8 5,9 5,8 4)),((6.5 5,7.5 4,6.5 4,6.5 5)),((8.5 4,9.5 5,9.5 4,8.5 4)),((6 2,6 3,7 3,6 2)),((10 4,11 5,11 4,10 4)))";
+
+static std::string const rt_o4
+ = "MULTIPOLYGON(((8 4,8 5,9 5,8 4)),((6.5 5,7.5 4,6.5 4,6.5 5)),((8.5 4,9.5 5,9.5 4,8.5 4)),((6 2,6 3,7 3,6 2)),((10 4,11 5,11 4,10 4)),((10 3,11 3,11 2,10 3)))";
+
+// Occupied - intersection
+static std::string const rt_p1
+ = "MULTIPOLYGON(((5 2,5 3,6 3,6 2,5 2)),((8 0,8 1,9 0,8 0)),((8 2,9 3,9 2,8 2)))";
+
+static std::string const rt_p2
+ = "MULTIPOLYGON(((9 3,9 4,10 3,9 3)),((9 4,9 5,10 5,9 4)),((8 6,9 7,9 6,8 6)))";
+
+static std::string const rt_p3
+ = "MULTIPOLYGON(((3 8,3 9,4 9,3 8)),((3 7,3 8,4 8,3 7)),((0 8,0 9,1 8,0 8)))";
+
+// Occupation map: robustness, nearly collinear, both incoming
+static std::string const rt_p4
+ = "MULTIPOLYGON(((8 8,9 9,9 8,8 8)),((5 8,5 9,6 9,5 8)),((6 5,6 6,7 6,6 5)),((4 7,4 8,5 8,4 7)))";
+
+// Occupation map: Two collinear segments intersecting one segment
+static std::string const rt_p5
+ = "MULTIPOLYGON(((3 2,4 3,4 2,3 2)),((2 2,2 3,3 3,3 2,2 2)),((4 3,5 4,5 3,4 3)))";
+
+// Occupied map: only two pieces involved so leave early
+static std::string const rt_p6
+ = "MULTIPOLYGON(((7 3,7 4,8 3,7 3)),((7 6,8 7,8 6,7 6)))";
+
+// Occupation map: needing relaxed_less for map
+static std::string const rt_p7
+ = "MULTIPOLYGON(((6 6,7 7,7 6,6 6)),((3 4,3 5,4 4,3 4)),((2 6,3 7,3 6,2 6)))";
+
+// Occupation map: needing relaxed_less PLUS relaxed_equals for map
+static std::string const rt_p8
+ = "MULTIPOLYGON(((4 7,4 8,5 7,4 7)),((5 3,6 4,6 3,5 3)),((8 5,8 6,9 6,8 5)))";
+
+// Occupation map: needing go back for extra outgoing vectors too
+static std::string const rt_p9
+ = "MULTIPOLYGON(((1 6,1 7,2 6,1 6)),((4 3,4 4,5 3,4 3)),((3 4,2 3,2 4,3 5,3 4)))";
+
+static std::string const rt_p10
+ = "MULTIPOLYGON(((6 6,7 7,7 6,6 6)),((4 6,5 7,5 6,4 6)),((8 8,9 9,9 8,8 8)))";
+
+// Occupation map, multiple back/forward cases and combinations
+static std::string const rt_p11
+ = "MULTIPOLYGON(((0 8,0 9,1 9,1 8,0 8)),((2 8,2 9,3 9,3 8,2 8)),((3 8,4 9,4 8,3 8)),((4 1,4 2,5 2,4 1)))";
+
+// Occupation map - incoming angle, non-zero
+static std::string const rt_p12
+ = "MULTIPOLYGON(((8 4,9 5,9 4,8 4)),((5 5,5 6,6 6,6 5,5 5)),((8 4,8 3,7 3,8 4)))";
+
+// Occupation map - outgoing angle, 1
+static std::string const rt_p13
+ = "MULTIPOLYGON(((5 2,6 3,6 2,5 2)),((3 0,4 1,4 0,3 0)),((3 1,3 2,4 2,4 1,3 1)))";
+
+// Occupation map - touch which was originally in other segment-id
+static std::string const rt_p14
+ = "MULTIPOLYGON(((9 9,10 10,10 9,9 9)),((7 7,8 8,8 7,7 7)),((6 6,6 7,7 7,7 6,6 6)))";
+
+// Occupation map - needing measuring sides from original point and not center point
+static std::string const rt_p15
+ = "MULTIPOLYGON(((5 2,5 3,6 3,6 2,5 2)),((4 1,5 2,5 1,4 1)),((8 5,9 6,9 5,8 5)))";
+
+// Occupation map - needing other approach w.r.t. discarding (collinear) segments
+static std::string const rt_p16
+ = "MULTIPOLYGON(((5 7,5 8,6 7,5 7)),((9 3,9 4,10 3,9 3)),((6 7,7 8,7 7,6 7)))";
+
+// Occupation map - outputting two valid turns (resulting in the wrong choice in the end)
+static std::string const rt_p17
+ = "MULTIPOLYGON(((4 8,5 9,5 8,4 8)),((1 8,2 9,2 8,1 8)),((2 6,3 7,3 6,2 6)))";
+
+// Occupation map - outputting no valid turns (needing to take other turns into account)
+static std::string const rt_p18
+ = "MULTIPOLYGON(((7 6,8 7,8 6,7 6)),((7 3,7 4,8 3,7 3)),((5 4,6 5,6 4,5 4)))";
+
+// Occupation map - showing wrong approach in p17/p18, now new approach with keep_indices
+static std::string const rt_p19
+ = "MULTIPOLYGON(((0 5,1 6,1 5,0 5)),((0 7,0 8,1 7,0 7)),((3 4,3 5,4 4,3 4)))";
+
+// Occupation map: two non-collinear segments non-intersecting, needing relaxed_equal
+static std::string const rt_p20
+ = "MULTIPOLYGON(((2 3,2 4,3 4,3 3,2 3)),((0 5,0 6,1 6,0 5)),((2 7,2 8,3 8,2 7)))";
+
+// Occupation map: turn more right should still be included
+static std::string const rt_p21
+ = "MULTIPOLYGON(((4 2,4 3,5 3,4 2)),((4 1,5 2,5 1,4 1)),((5 2,6 3,6 2,5 2)))";
+
+static std::string const rt_p22
+ = "MULTIPOLYGON(((4 8,5 9,5 8,4 8)),((5 9,6 10,6 9,5 9)),((1 7,1 8,2 8,2 7,1 7)),((2 6,3 7,3 6,2 6)))";
+
+// Occupation map with a uu-turn
+static std::string const rt_q1
+ = "MULTIPOLYGON(((4 6,4 7,5 7,5 6,4 6)),((1 6,1 7,2 7,2 6,1 6)),((1 9,1 10,2 10,2 9,1 9)))";
+
+// Occupation map with twice a uu-turn
+static std::string const rt_q2
+ = "MULTIPOLYGON(((0 6,0 7,1 6,0 6)),((2 6,2 7,3 6,2 6)),((4 5,3 5,3 6,4 6,5 6,5 5,4 4,4 5)))";
+
+// Robustness issue related to collinear correction (meeting) and selecting the right axis (x/y)
+static std::string const rt_r
+ = "MULTIPOLYGON(((3 1,2 0,1 1,2 2,3 1)),((5 3,4 2,3 2,4 4,5 3)))";
+
+// Robustness - flagged by "meeting"
+static std::string const rt_s1
+ = "MULTIPOLYGON(((4 1,5 2,5 1,4 1)),((5 2,6 3,6 2,5 2)),((7 1,7 2,8 1,7 1)))";
+
+// Robustness - flagged by "disjoint"
+static std::string const rt_s2
+ = "MULTIPOLYGON(((0 0,1 1,1 0,0 0)),((2 4,2 5,3 4,2 4)),((3.5 3.5,4 4,4 3,3 3,3 4,3.5 3.5)))";
+
+// Robustness issue in get_turn_info (touch, collinear, blocking q)
+static std::string const rt_t
+ = "MULTIPOLYGON(((1 3,1 4,2 3,1 3)),((1 4,0 3,0 4,0 5,1 4)))";
+
+// Created traversed ring
+static std::string const rt_u1
+ = "MULTIPOLYGON(((7 6,8 7,8 6,7 6)),((8 9,9 10,9 9,8 9)),((2 8,3 9,3 8,2 8)),((6 5,6 6,7 6,6 5)),((6 7,7 7,6 6,5 6,6 7)),((7 7,7 8,8 7,7 7)),((6 7,6 8,7 8,6 7)),((8 7,8 8,9 8,9 7,8 7)))";
+
+static std::string const rt_u2
+ = "MULTIPOLYGON(((4 2,5 3,5 2,4 2)),((6 4,6 5,7 5,6 4)),((7 4,7 5,8 5,7 4)),((7 3,7 4,8 3,7 3)),((7 10,8 10,7 9,6 9,7 10)),((0 7,0 8,1 7,0 7)),((6 1,6 2,7 2,7 1,6 1)),((5 7,5 8,6 9,6 8,7 9,7 8,7 7,6 6,6 7,5 7)),((5 4,6 4,6 3,5 3,4 3,4 4,5 4)),((5 2,6 2,5 1,4 0,3 0,4 1,3 1,3 2,3 3,4 3,4 2,4.5 1.5,5 2)),((5 6,5 5,4 5,4 6,4 7,5 7,5 6)),((5 0,5 1,5.5 0.5,6 1,6 0,5 0)),((5 9,5 8,4 8,3 8,2 8,1 8,0 8,1 9,1 10,2 9,2 10,3 10,4 10,5 10,5 9)),((4 5,4 4,3 4,3 3,2 3,1 3,0 3,0 4,0 5,0 6,1 6,2 5,1 5,1 4,2 4,3 5,2 5,2 6,2.5 5.5,3 6,4 5)),((3 2,2 2,2 3,3 2)),((2 0,1 0,2 1,3 0,2 0)),((1 1,0 1,0 2,0 3,1 2,1.5 1.5,2 2,3 1,2 1,1 1)),((2 6,1 6,1 7,2 7,3 7,2 6)),((4 8,4 7,3 7,4 8)),((9 6,8 6,7 6,7 7,8 7,8.5 6.5,9 7,8 7,8 8,8.5 7.5,9 8,8 8,8 9,9 9,9 10,10 10,10 9,10 8,10 7,10 6,10 5,9 4,9 5,8 5,9 6)),((7 0,6 0,7 1,8 1,7 0)),((8 3,9 2,8 2,7 2,8 3)),((10 2,10 1,10 0,9 0,9 1,8 1,8 2,8.5 1.5,9 2,9 3,10 4,10 3,10 2)),((9 4,9 3,8 3,8 4,9 4)))";
+
+static std::string const rt_u3
+ = "MULTIPOLYGON(((3 0,4 1,4 0,3 0)),((2 0,2 1,3 1,2 0)),((6 7,7 8,7 7,6 7)),((1 2,2 3,2 2,1 2)),((9 1,10 2,10 1,9 1)),((0 2,0 3,1 3,1 2,0 2)),((5 0,5 1,6 1,6 0,5 0)),((1 1,2 2,2 1,1 1)),((0 7,0 8,1 7,0 7)),((9 0,10 1,10 0,9 0)),((0 5,0 6,1 6,1 5,0 5)),((1 6,2 7,2 6,1 6)),((7 0,8 1,8 0,7 0)),((8 6,9 7,9 6,8 6)),((9 6,10 7,10 6,9 6)),((1 4,1 5,2 5,1 4)),((5 6,4 5,4 6,5 7,5 6)),((5 4,4.5 3.5,5 3,4 3,4 2,3 1,3 2,3 3,2 3,2 4,3 4,4 4,5 5,5 4)),((4 7,3 7,3 8,4 9,5 10,6 10,6 9,5 9,4 8,5 8,4 7)),((6 3,5 3,5 4,5.5 3.5,6 4,7 4,7 3,8 3,8 2,8 1,7 1,6 1,6 2,6 3)),((3 5,2 4,2 5,2 6,3 5)),((1 1,1 0,0 0,0 1,1 2,1 1)),((2 9,2 8,1 8,0 8,1 9,1 10,1.5 9.5,2 10,2.5 9.5,3 10,3 9,2 9)),((6 5,6 6,7 7,8 7,8 6,7 6,7 5,6 4,6 5)),((7 8,6 8,6 9,7 9,8 8,7 8)),((9 10,10 10,10 9,10 8,9 7,9 8,8 8,9 9,8 9,8 10,9 10)))";
+
+static std::string const rt_u4
+ = "MULTIPOLYGON(((5 0,6 1,6 0,5 0)),((6 1,6 2,7 2,7 1,6 1)),((6 6,7 7,7 6,6 6)),((4 7,4 8,5 8,4 7)),((1 6,1 7,2 7,1 6)),((3 4,3 5,4 5,3 4)),((2 0,2 1,3 0,2 0)),((7 2,7 3,8 3,7 2)),((3 3,4 4,4 3,3 3)),((5 9,5 10,6 10,7 10,6 9,5 8,5 9)),((5 4,5 5,6 4,5 4)),((3 1,4 2,4 1,3 1)),((3 0,3 1,4 0,3 0)),((2 7,2 8,3 8,3 7,2 7)),((9 2,9 3,10 2,9 2)),((6 2,6 3,7 3,6 2)),((8 8,9 9,9 8,8 8)),((2 1,2 2,3 2,3 1,2 1)),((4 3,5 4,5 3,4 3)),((4 6,5 7,5 6,4 6)),((1 8,1 9,2 8,1 7,1 8)),((8 8,9 7,8 7,7 7,7 8,8 8)),((8 1,8 2,9 2,9 1,10 1,9 0,8 0,8 1)),((5 2,4 2,4 3,5 2)),((2 5,1 5,1 6,2 6,3 5,2 5)),((1 3,2 4,2 3,2 2,1 1,0 1,1 2,1 3)),((1 0,0 0,1 1,2 1,1.5 0.5,2 0,1 0)),((2 10,3 10,4 10,4 9,3 9,2 8,2 9,1 9,0 9,1 10,2 10)),((9 5,9 6,10 6,10 5,10 4,9 4,8.5 3.5,9 3,8 3,8 4,7 4,7 5,8 5,9 5)),((7 0,6 0,7 1,8 1,7 0)),((7 9,7 8,6 8,6 9,7 9)))";
+
+static std::string const rt_u5
+ = "MULTIPOLYGON(((4 3,4 4,5 4,5 3,4 3)),((6 5,6 6,7 6,6 5)),((5 4,6 5,6 4,5 4)),((4 0,4 1,5 1,5 0,4 0)),((7 8,8 9,8 8,7 8)),((8 2,8 3,9 3,8 2)),((2 1,2 2,3 1,2 1)),((5 7,5 8,6 8,5 7)),((4 5,4 6,5 5,4 5)),((7 0,8 1,8 0,7 0)),((7 2,8 1,7 1,6 1,7 2)),((3 3,4 3,4 2,3 2,3 3)),((3 9,3 10,4 9,3 9)),((1 2,2 3,2 2,1 2)),((2 4,2 5,3 4,2 3,2 4)),((3 7,4 7,3 6,2 6,3 7)))";
+
+static std::string const rt_u6
+ = "MULTIPOLYGON(((2 2,3 3,3 2,2 2)),((9 8,9 9,10 9,10 8,9 8)),((5 3,6 4,6 3,5 3)),((5 5,5 6,6 6,5 5)),((5 1,6 2,6 1,5 1)),((6 5,7 6,7 5,6 5)),((3 0,4 1,4 0,3 0)),((6 6,6 7,7 6,6 6)),((9 2,10 2,10 1,9 1,9 2)),((6 8,6 9,7 9,7 8,6 8)),((7 0,7 1,8 0,7 0)),((4 4,4 5,5 5,4 4)),((0 7,0 8,1 8,0 7)),((5 9,6 10,6 9,5 9)),((4 9,4 10,5 10,5 9,4 9)),((3 7,4 7,3 6,2 6,3 7)),((9 7,10 6,9 6,8 6,9 7)),((5 3,5 2,4 2,4 3,4 4,5 4,5 3)),((1 1,2 0,1 0,0 0,1 1)),((2 10,3 10,3 9,2 9,1 9,1 10,2 10)),((8.5 4.5,9 4,8 4,7 4,8 5,9 5,8.5 4.5)),((8 3,9 3,9 2,8 2,8 3)))";
+
+// This case has colocated intersection points and is fixed by specific sorting in enrich_intersection_points
+static std::string const rt_u7
+ = "MULTIPOLYGON(((4 5,4 6,5 5,4 5)),((9 2,9 3,10 3,10 2,9 2)),((7 3,7 4,8 4,8 3,7 3)),((5 5,6 6,6 5,5 5)),((3 6,4 7,4 6,3 6)),((0 5,0 6,1 5,0 5)))";
+
+// This case is also fixed by sorting order in enrich_intersection_points. It also has IP's between piece and original (due to rounding/rescaling pieces but not original) but that is not problematic
+// anymore by the fix in sorting
+static std::string const rt_u8
+ = "MULTIPOLYGON(((4 3,4 4,5 4,5 3,4 3)),((6 3,6 4,7 4,7 3,6 3)),((9 0,9 1,10 0,9 0)),((9 3,9 4,10 4,10 3,9 3)),((8 2,9 2,9 1,8 1,8 2)),((8 4,8 5,9 4,8 4)),((9 1,10 2,10 1,9 1)),((6 7,7 8,7 7,6 7)),((4 6,4 7,5 7,4 6)),((8 8,8 9,9 9,8 8)),((3 2,3 3,4 3,4 2,3 2)),((7 1,8 1,8 0,7 0,6 0,6 1,7 1)))";
+
+// Fixed by checking IP's between piece and original (using robust represention of original)
+static std::string const rt_u9
+ = "MULTIPOLYGON(((2 3,2 4,3 4,2 3)),((9 8,9 9,10 9,10 8,9 8)),((6 3,6 4,7 4,6 3)),((5 8,5 9,6 9,5 8)),((9 5,9 6,10 6,9 5)),((4 4,4 5,5 5,5 4,4 4)),((7 7,7 8,8 8,7 7)),((8 6,8 7,9 6,8 6)),((6 7,7 7,6 6,5 6,5 7,6 7)))";
+
+// Fixed by fixing border check for IP's
+static std::string const rt_u10
+ = "MULTIPOLYGON(((7 5,8 6,8 5,7 5)),((4 5,5 6,5 5,5 4,4 4,4 5)),((9 5,10 5,10 4,9 4,8 4,9 5)),((1 2,1 1,0 1,1 2)),((6 6,6 7,7 7,7 6,6 6)),((3 6,3 7,4 6,3 6)),((8 6,8 7,9 6,8 6)),((1 3,1 4,2 3,1 3)),((9 9,10 8,9 8,9 7,8 7,8 8,9 9)),((9 2,10 3,10 2,9 2)),((2 5,2 6,3 6,2 5)),((1 9,1 10,2 10,2 9,1 9)),((4 6,4 7,5 7,5 6,4 6)),((6 0,6 1,7 1,7 0,6 0)),((0 9,0 10,1 10,0 9)),((3.5 5.5,4 6,4 5,3 5,3 6,3.5 5.5)),((9 3,9 4,10 3,9 3)),((9 9,10 10,10 9,9 9)),((1 6,2 7,2 6,1 6)),((4 2,4 3,5 2,4 2)),((5 10,4 9,4 10,5 10)),((0 3,1 2,0 2,0 3)),((5 8,4 8,5 9,6 10,6 9,7 9,7 8,6 8,5 7,5 8)),((6 2,5 2,5 3,5.5 2.5,6 3,6 4,7 4,8 4,8 3,7 3,7 2,6 2)),((4 0,3 0,3 1,2.5 0.5,3 0,2 0,2 1,2 2,3 3,3 2,4 2,4 1,5 0,4 0)),((3 5,4 4,3 4,2 4,3 5)),((0 6,0 7,1 7,1 6,1 5,0 5,0 6)),((2 8,3 8,3 7,2 7,1 7,1 8,2 8)),((9 1,9 0,8 0,8 1,8 2,9 1)),((7 10,8 10,8 9,7 9,7 10)))";
+
+// Fixed by blocking IP's instead of discarding them
+static std::string const rt_u11
+ = "MULTIPOLYGON(((7 3,8 4,8 3,7 3)),((4 8,5 9,5 8,4 8)),((7 1,8 2,8 1,7 1)),((7 2,8 3,8 2,7 2)),((0 1,0 2,1 2,0 1)),((8 1,9 2,9 1,8 1)),((6 9,6 8,5 8,6 9)),((7 9,7 10,8 10,7 9)),((0 7,1 8,1 7,0 7)),((6 4,6 5,7 5,7 4,6 4)),((7 4,8 5,8 4,7 4)),((4 2,4 3,5 3,5 2,4 2)),((5 5,5 6,6 6,6 5,5 5)),((5 9,6 10,6 9,5 9)),((4 8,4 7,3 7,3 8,4 8)),((5 5,6 4,5 4,4 4,4 5,5 5)),((4.5 0.5,5 0,4 0,4 1,5 2,6 2,6 3,7 4,7 3,7 2,7 1,6 1,6 0,5 0,5 1,4.5 0.5)),((4 6,3 5,3 6,4 7,5 7,5 6,4 6)),((2 3,1 3,0 3,1 4,1 5,1 6,2 6,2 5,2 4,2 3)),((3 4,4 4,3 3,2 3,3 4)),((3 9,4 9,3 8,2 8,2 9,3 9)),((1 9,1 8,0 8,0 9,1 10,2 9,1 9)),((3 7,3 6,2 6,2 7,3 7)),((8 6,8 7,9 7,9 6,9 5,8 5,8 6)),((9 1,10 2,10 1,10 0,9 0,9 1)),((8 8,8 7,7 7,7 8,8 8)),((6 8,7 9,7 8,6 7,6 8)),((10 9,10 8,10 7,9 7,9 8,9 9,9 10,10 10,10 9)))";
+
+static std::string const rt_u12
+ = "MULTIPOLYGON(((9 0,9 1,10 0,9 0)),((1 0,1 1,2 1,2 0,1 0)),((4 0,4 1,5 0,4 0)),((1 2,1 3,2 2,1 2)),((3 7,4 8,4 7,3 7)),((3 6,4 7,4 6,3 6)),((6 9,7 10,7 9,6 9)),((5 6,5 7,6 7,5 6)),((7 6,7 7,8 7,7 6)),((7 3,7 4,8 3,7 3)),((8 7,8 8,9 7,8 6,8 7)),((8 5,8 6,9 6,8 5)),((6 4,6 5,7 5,6 4)),((2 9,2 10,3 10,2 9)),((1 4,2 5,2 4,1 4)),((2 2,2 3,3 3,2 2)),((3 2,3 3,4 3,3 2)),((9 5,10 6,10 5,9 5)),((4 4,5 5,5 4,4 4)),((5 10,6 10,6 9,5 9,4 9,4 10,5 10)),((5 3,5 4,6 4,6 3,6 2,6 1,5 1,5 2,4 2,4 3,5 3)),((0 6,1 6,1 5,0 5,0 6)),((3 5,4 6,4 5,4 4,3 4,3 5)),((2 2,3 2,4 2,4 1,3 1,2 1,2 2)),((2 8,1 8,2 9,3 9,2 8)),((2 6,1 6,2 7,3 6,2 6)),((0 9,1 10,1 9,0 8,0 9)),((1 8,1 7,0 7,1 8)),((9 5,10 4,9 4,8 4,8 5,9 5)),((6 1,7 1,6.5 0.5,7 0,6 0,6 1)),((8 1,9 1,8.5 0.5,9 0,8 0,8 1)),((6 7,7 7,6.5 6.5,7 6,6 6,6 7)),((6.5 8.5,7 9,7 8,6 8,6 9,6.5 8.5)),((9 9,10 10,10 9,9 8,9 9)))";
+
+static std::string const rt_u13
+ = "MULTIPOLYGON(((6 4,6 5,7 5,6 4)),((3 2,3 3,4 3,3 2)),((7 8,7 9,8 9,8 8,7 8)),((4 9,4 10,5 10,4 9)),((7 7,7 8,8 7,7 7)),((2 6,2 7,3 7,2 6)),((0 1,1 2,1 1,0 1)),((3 1,4 2,4 1,3 1)),((2 5,2 6,3 6,2 5)),((3 5,4 4,3 4,2 4,3 5)),((4 1,5 2,5 1,4 1)),((2 0,2 1,3 1,2 0)),((5 7,5 8,6 7,5 7)),((0 2,0 3,1 3,0 2)),((9 8,9 9,10 9,10 8,9 8)),((7 5,7 6,8 5,7 5)),((5 6,5 7,6 6,5 6)),((0 6,0 7,1 7,1 6,0 6)),((5 0,5 1,6 1,5 0)),((8 7,8 8,9 8,8 7)),((4.5 4.5,5 4,4 4,4 5,5 5,4.5 4.5)),((6 2,5 2,5 3,6 3,7 3,8 2,7 2,6 2)),((8 6,8 7,9 7,9 6,9 5,8 5,8 6)),((8 1,9 0,8 0,7 0,8 1)))";
+
+template <bool Clockwise, typename P>
+void test_all()
+{
+ typedef bg::model::polygon<P, Clockwise> polygon_type;
+ typedef bg::model::multi_polygon<polygon_type> multi_polygon_type;
+
+ bg::strategy::buffer::join_miter join_miter;
+ bg::strategy::buffer::join_round join_round(100);
+ bg::strategy::buffer::join_round join_round_rough(12);
+ bg::strategy::buffer::end_flat end_flat;
+
+ test_one<multi_polygon_type, polygon_type>("triangles424", triangles, join_miter, end_flat, 417.910, 4.24);
+ test_one<multi_polygon_type, polygon_type>("triangles425", triangles, join_miter, end_flat, 418.918, 4.25);
+ test_one<multi_polygon_type, polygon_type>("triangles426", triangles, join_miter, end_flat, 419.927, 4.26);
+ test_one<multi_polygon_type, polygon_type>("zonethru_10", zonethru, join_miter, end_flat, 96.0000, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("multi_simplex_05", simplex, join_round, end_flat, 23.7030, 0.5);
+ test_one<multi_polygon_type, polygon_type>("multi_simplex_05", simplex, join_miter, end_flat, 24.5965, 0.5);
+ test_one<multi_polygon_type, polygon_type>("multi_simplex_10", simplex, join_round, end_flat, 34.2532, 1.0);
+ test_one<multi_polygon_type, polygon_type>("multi_simplex_10", simplex, join_miter, end_flat, 38.1379, 1.0);
+ test_one<multi_polygon_type, polygon_type>("multi_simplex_20", simplex, join_round, end_flat, 59.9159, 2.0);
+ test_one<multi_polygon_type, polygon_type>("multi_simplex_20", simplex, join_miter, end_flat, 77.7060, 2.0);
+ test_one<multi_polygon_type, polygon_type>("multi_simplex_50", simplex, join_round, end_flat, 174.46, 5.0);
+ test_one<multi_polygon_type, polygon_type>("multi_simplex_50", simplex, join_miter, end_flat, 298.797, 5.0);
+
+ test_one<multi_polygon_type, polygon_type>("zonethru_05", zonethru, join_round, end_flat, 67.4627, 0.5);
+ test_one<multi_polygon_type, polygon_type>("zonethru_05", zonethru, join_miter, end_flat, 68.0000, 0.5);
+ test_one<multi_polygon_type, polygon_type>("zonethru_10", zonethru, join_round, end_flat, 93.8508, 1.0);
+ test_one<multi_polygon_type, polygon_type>("zonethru_10", zonethru, join_miter, end_flat, 96.0000, 1.0);
+ test_one<multi_polygon_type, polygon_type>("zonethru_15", zonethru, join_round, end_flat, 114.584, 1.5);
+ test_one<multi_polygon_type, polygon_type>("zonethru_15", zonethru, join_miter, end_flat, 117.000, 1.5);
+ test_one<multi_polygon_type, polygon_type>("wrapped_05", wrapped, join_round, end_flat, 104.570, 0.5);
+ test_one<multi_polygon_type, polygon_type>("wrapped_05", wrapped, join_miter, end_flat, 105.000, 0.5);
+ test_one<multi_polygon_type, polygon_type>("wrapped_10", wrapped, join_round, end_flat, 142.281, 1.0);
+ test_one<multi_polygon_type, polygon_type>("wrapped_10", wrapped, join_miter, end_flat, 144.000, 1.0);
+ test_one<multi_polygon_type, polygon_type>("wrapped_15", wrapped, join_round, end_flat, 167.066, 1.5);
+ test_one<multi_polygon_type, polygon_type>("wrapped_15", wrapped, join_miter, end_flat, 169.000, 1.5);
+
+ test_one<multi_polygon_type, polygon_type>("degenerate0", degenerate0, join_round, end_flat, 0.0, 1.0);
+ test_one<multi_polygon_type, polygon_type>("degenerate1", degenerate1, join_round, end_flat, 5.708, 1.0);
+ test_one<multi_polygon_type, polygon_type>("degenerate2", degenerate2, join_round, end_flat, 133.0166, 0.75);
+
+ test_one<multi_polygon_type, polygon_type>("rt_a", rt_a, join_round, end_flat, 34.5381, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_a", rt_a, join_miter, end_flat, 36, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_b", rt_b, join_round, end_flat, 31.4186, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_b", rt_b, join_miter, end_flat, 34, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_c", rt_c, join_round, end_flat, 14.7093, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_c", rt_c, join_miter, end_flat, 16, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_d", rt_d, join_round, end_flat, 18.8726, 0.3);
+ test_one<multi_polygon_type, polygon_type>("rt_d", rt_d, join_miter, end_flat, 19.8823, 0.3);
+ test_one<multi_polygon_type, polygon_type>("rt_e", rt_e, join_round, end_flat, 14.1866, 0.3);
+ test_one<multi_polygon_type, polygon_type>("rt_e", rt_e, join_miter, end_flat, 15.1198, 0.3);
+
+ test_one<multi_polygon_type, polygon_type>("rt_f", rt_f, join_miter, end_flat, 4.60853, 0.3);
+
+ test_one<multi_polygon_type, polygon_type>("rt_g1", rt_g1, join_round, end_flat, 24.719, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_g1", rt_g1, join_miter, end_flat, 30.3137, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_g2", rt_g2, join_miter, end_flat, 18.5711, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_g3", rt_g3, join_miter, end_flat, 16.5711, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_h", rt_h, join_round, end_flat, 47.6012, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_h", rt_h, join_miter, end_flat, 61.7058, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_i", rt_i, join_round, end_flat, 10.7528, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_i", rt_i, join_miter, end_flat, 13.6569, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_j", rt_j, join_round, end_flat, 28.7309, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_j", rt_j, join_miter, end_flat, 35.1421, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_k", rt_k, join_round, end_flat, 42.0092, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_k", rt_k, join_miter, end_flat, 48.0563, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_l", rt_l, join_miter, end_flat, 19.3995, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_m1", rt_m1, join_round, end_flat, 14.1074, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_m1", rt_m1, join_miter, end_flat, 19.4853, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_m2", rt_m2, join_miter, end_flat, 21.4853, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_n", rt_n, join_miter, end_flat, 18.4853, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_o1", rt_o1, join_round, end_flat, 17.536, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_o1", rt_o1, join_miter, end_flat, 20.9142, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_o2", rt_o2, join_miter, end_flat, 25.7426, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_o3", rt_o3, join_miter, end_flat, 28.8247, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_o4", rt_o4, join_miter, end_flat, 34.6532, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_p1", rt_p1, join_miter, end_flat, 24.8211, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p2", rt_p2, join_miter, end_flat, 21.4853, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p3", rt_p3, join_miter, end_flat, 22.3995, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p4", rt_p4, join_miter, end_flat, 33.0563, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p5", rt_p5, join_miter, end_flat, 17, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p6", rt_p6, join_miter, end_flat, 18.4853, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p7", rt_p7, join_miter, end_flat, 26.2279, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p8", rt_p8, join_miter, end_flat, 29.0563, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p9", rt_p9, join_miter, end_flat, 26.1421, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p10", rt_p10, join_miter, end_flat, 23.3995, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_p11", rt_p11, join_miter, end_flat, 28.7426, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p12", rt_p12, join_miter, end_flat, 22.5711, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p13", rt_p13, join_miter, end_flat, 19.9142, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p14", rt_p14, join_miter, end_flat, 20.8284, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p15", rt_p15, join_miter, end_flat, 23.6569, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p16", rt_p16, join_miter, end_flat, 23.4853, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p17", rt_p17, join_miter, end_flat, 25.3137, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p18", rt_p18, join_miter, end_flat, 23.3137, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p19", rt_p19, join_miter, end_flat, 25.5637, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p20", rt_p20, join_miter, end_flat, 25.4853, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p21", rt_p21, join_miter, end_flat, 17.1716, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_p22", rt_p22, join_miter, end_flat, 26.5711, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_q1", rt_q1, join_miter, end_flat, 27, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_q2", rt_q2, join_miter, end_flat, 26.4853, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_r", rt_r, join_miter, end_flat, 21.0761, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_s1", rt_s1, join_miter, end_flat, 20.4853, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_s2", rt_s2, join_miter, end_flat, 24.6495, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_t", rt_t, join_miter, end_flat, 15.6569, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_u1", rt_u1, join_round, end_flat, 33.2032, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_u2", rt_u2, join_round, end_flat, 138.8001, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_u3", rt_u3, join_round, end_flat, 133.4526, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_u4", rt_u4, join_round, end_flat, 126.9268, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_u5", rt_u5, join_round, end_flat, 78.4906, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_u6", rt_u6, join_round, end_flat, 115.4461, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_u7", rt_u7, join_round, end_flat, 35.6233, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_u7", rt_u7, join_miter, end_flat, 42.6421, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_u7_rough", rt_u7, join_round_rough, end_flat, 35.0483, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_u8", rt_u8, join_miter, end_flat, 70.9142, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_u9", rt_u9, join_miter, end_flat, 59.3063, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_u10", rt_u10, join_miter, end_flat, 144.0858, 1.0);
+
+ test_one<multi_polygon_type, polygon_type>("rt_u11", rt_u11, join_miter, end_flat, 131.3995, 1.0);
+#if defined(BOOST_GEOMETRY_BUFFER_INCLUDE_FAILING_TESTS)
+ test_one<multi_polygon_type, polygon_type>("rt_u12", rt_u12, join_miter, end_flat, 999, 1.0);
+ test_one<multi_polygon_type, polygon_type>("rt_u13", rt_u13, join_miter, end_flat, 115.4853, 1.0);
+#endif
+}
+
+int test_main(int, char* [])
+{
+ test_all<true, bg::model::point<double, 2, bg::cs::cartesian> >();
+ test_all<false, bg::model::point<double, 2, bg::cs::cartesian> >();
+ //test_all<bg::model::point<ttmath_big, 2, bg::cs::cartesian> >();
+
+ return 0;
+}
+
+// intersecting:
+//= "MULTIPOLYGON(((8 6,9 7,9 6,8 6)),((0 6,0 7,1 6,0 6)),((1 6,1 7,2 7,2 6,1 6)),((2 0,2 1,3 0,2 0)),((9 2,10 3,10 2,9 2)),((7 0,7 1,8 1,7 0)),((4 6,5 7,5 6,4 6)),((7 1,7 2,8 2,7 1)),((0 8,0 9,1 8,0 8)),((0 1,0 2,1 2,0 1)),((7 2,7 3,8 3,7 2)),((9 8,9 9,10 8,9 8)),((5 2,5 3,6 3,6 2,5 2)),((1 1,1 2,2 2,2 1,1 1)),((5 3,4 2,4 3,5 4,6 5,6 6,6 7,7 7,7 6,8 6,7 5,8 4,7 4,6 4,5 3)),((3 4,2 4,2 5,2 6,3 6,3 5,4 5,3 4)),((3 7,2 7,2 8,3 8,4 8,5 8,4 7,3 7)))";
diff --git a/libs/geometry/test/algorithms/buffer/point_buffer.cpp b/libs/geometry/test/algorithms/buffer/point_buffer.cpp
new file mode 100644
index 0000000000..a5f1b979b7
--- /dev/null
+++ b/libs/geometry/test/algorithms/buffer/point_buffer.cpp
@@ -0,0 +1,36 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2012-2014 Barend Gehrels, 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)
+
+#include <test_buffer.hpp>
+
+
+static std::string const simplex = "POINT(5 5)";
+
+template <bool Clockwise, typename P>
+void test_all()
+{
+ typedef bg::model::polygon<P, Clockwise> polygon;
+
+ bg::strategy::buffer::join_miter join_miter;
+ bg::strategy::buffer::end_flat end_flat;
+
+ double const pi = boost::geometry::math::pi<double>();
+
+ test_one<P, polygon>("simplex1", simplex, join_miter, end_flat, pi, 1.0, 1.0);
+ test_one<P, polygon>("simplex2", simplex, join_miter, end_flat, pi * 4.0, 2.0, 2.0, true, 0.1);
+ test_one<P, polygon>("simplex3", simplex, join_miter, end_flat, pi * 9.0, 3.0, 3.0, true, 0.1);
+}
+
+
+int test_main(int, char* [])
+{
+ test_all<true, bg::model::point<double, 2, bg::cs::cartesian> >();
+ test_all<false, bg::model::point<double, 2, bg::cs::cartesian> >();
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/buffer/polygon_buffer.cpp b/libs/geometry/test/algorithms/buffer/polygon_buffer.cpp
new file mode 100644
index 0000000000..f4cee670f8
--- /dev/null
+++ b/libs/geometry/test/algorithms/buffer/polygon_buffer.cpp
@@ -0,0 +1,429 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2012-2014 Barend Gehrels, 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)
+
+#include <test_buffer.hpp>
+
+
+static std::string const simplex
+ = "POLYGON ((0 0,1 5,6 1,0 0))";
+static std::string const concave_simplex
+ = "POLYGON ((0 0,3 5,3 3,5 3,0 0))";
+static std::string const spike_simplex
+ = "POLYGON ((0 0,1 5,3 3,5 5,3 3,5 1,0 0))";
+static std::string const chained_box
+ = "POLYGON((0 0,0 4,4 4,8 4,12 4,12 0,8 0,4 0,0 0))";
+
+static std::string const join_types
+ = "POLYGON ((0 0,0 4,4 4,2 6,0 8,2 6,4 8,8 4,4 0,0 0))"; // first 4 join types are all different: convex, concave, continue, spike
+
+static std::string const donut_simplex
+ = "POLYGON ((0 0,1 9,8 1,0 0),(1 1,4 1,1 4,1 1))";
+static std::string const donut_diamond
+ = "POLYGON((15 0,15 15,30 15,30 0,15 0),(26 11,22 14,19 10,23 07,26 11))";
+static std::string const letter_L
+ = "POLYGON ((0 0,0 4,1 4,1 1,3 1,3 0,0 0))";
+static std::string const indentation
+ = "POLYGON ((0 0,0 5,4 5,4 4,3 3,2 4,2 1,3 2,4 1,4 0,0 0))";
+static std::string const funnelgate
+ = "POLYGON((0 0,0 7,7 7,7 0,5 0,5 1,6 6,1 6,2 1,2 0,0 0))";
+static std::string const gammagate
+ = "POLYGON((0 0,0 6,9 6,9 0,4 0,4 2,7 2,7 4,2 4,2 0,0 0))";
+static std::string const fork_a
+ = "POLYGON((0 0,0 6,9 6,9 0,4 0,4 2,7 2,7 4,6 4,6 5,5 5,5 4,4 4,4 5,3 5,3 4,2 4,2 0,0 0))";
+static std::string const fork_b
+ = "POLYGON((0 0,0 8,14 8,14 0,4 0,4 2,13 2,13 4,12 4,12 7,9 7,9 4,7 4,7 7,4 7,4 4,2 4,2 0,0 0))";
+static std::string const fork_c
+ = "POLYGON((0 0,0 9,12 9,12 0,4 0,4 4,6 4,6 2,8 2,8 4,10 4,10 7,6 7,6 6,2 6,2 0,0 0))";
+
+static std::string const arrow
+ = "POLYGON ((1 0,1 5,0.5 4.5,2 10,3.5 4.5,3 5,3 0,1 0))";
+static std::string const tipped_aitch
+ = "POLYGON ((0 0,0 3,3 3,3 4,0 4,0 7,7 7,7 4,4 4,4 3,7 3,7 0,0 0))";
+static std::string const snake
+ = "POLYGON ((0 0,0 3,3 3,3 4,0 4,0 7,8 7,8 4,6 4,6 3,8 3,8 0,7 0,7 2,5 2"
+ ",5 5,7 5,7 6,1 6,1 5,4 5,4 2,1 2,1 1,6 1,6 0,0 0))";
+static std::string const church
+ = "POLYGON ((0 0,0 3,2.999 3,3 8,3 0,0 0))";
+static std::string const flower
+ = "POLYGON ((1 0,1 10,9 10,9 0,4.99 0,4.99 5.5,4.5 6,5 6.5,5.5 6,5.01 5.5,5.01 0.01,5.25 0.01,5.25 5,6 3,8 5,6 6,8 7,6 9,5 7,4 9,2 7,4 6,2 5,4 3,4.75 5,4.75 0,1 0))";
+
+static std::string const saw
+ = "POLYGON((1 3,1 8,1.5 6,5 8,5.5 6,9 8,9.5 6,13 8,13 3,1 3))";
+
+static std::string const bowl
+ = "POLYGON((1 2,1 7,2 7,3 5,5 4,7 5,8 7,9 7,9 2,1 2))";
+
+// Triangle with segmented sides, closing point at longest side
+static std::string const triangle
+ = "POLYGON((4 5,5 4,4 4,3 4,3 5,3 6,4 5))";
+
+static std::string const degenerate0
+ = "POLYGON(())";
+static std::string const degenerate1
+ = "POLYGON((5 5))";
+static std::string const degenerate2
+ = "POLYGON((5 5,5 5,5 5,5 5))";
+static std::string const degenerate3
+ = "POLYGON((0 0,0 10,10 10,10 0,0 0),(5 5,5 5,5 5,5 5))";
+
+
+// Real-life examples
+static std::string const county1
+ = "POLYGON((-111.700 41.200 ,-111.681388 41.181739 ,-111.682453 41.181506 ,-111.684052 41.180804 ,-111.685295 41.180538 ,-111.686318 41.180776 ,-111.687517 41.181416 ,-111.688982 41.181520 ,-111.690670 41.181523 ,-111.692135 41.181460 ,-111.693646 41.182034 ,-111.695156 41.182204 ,-111.696489 41.182274 ,-111.697775 41.182075 ,-111.698974 41.181539 ,-111.700485 41.182348 ,-111.701374 41.182955 ,-111.700 41.200))";
+
+//static std::string const invalid_parcel
+// = "POLYGON((116042.20 464335.07,116056.35 464294.59,116066.41 464264.16,116066.44 464264.09,116060.35 464280.93,116028.89 464268.43,116028.89 464268.44,116024.74 464280.7,116018.91 464296.71,116042.2 464335.07))";
+
+static std::string const parcel1
+ = "POLYGON((225343.489 585110.376,225319.123 585165.731,225323.497 585167.287,225323.134 585167.157,225313.975 585169.208,225321.828 585172,225332.677 585175.83,225367.032 585186.977,225401.64 585196.671,225422.799 585201.029,225429.784 585202.454,225418.859 585195.112,225423.803 585196.13,225425.389 585196.454,225397.027 585165.48,225363.802 585130.372,225354.086 585120.261,225343.489 585110.376))";
+static std::string const parcel2
+ = "POLYGON((173356.986490154 605912.122380707,173358.457939143 605902.891897507,173358.458257372 605902.889901239,173214.162964795 605901.13020255,173214.162746654 605901.132200038,173213.665 605905.69,173212.712441616 605913.799985923,173356.986490154 605912.122380707))";
+static std::string const parcel3
+ = "POLYGON((120528.56 462115.62,120533.4 462072.1,120533.4 462072.01,120533.39 462071.93,120533.36 462071.86,120533.33 462071.78,120533.28 462071.72,120533.22 462071.66,120533.15 462071.61,120533.08 462071.58,120533 462071.55,120532.92 462071.54,120467.68 462068.66,120468.55 462059.04,120517.39 462062.87,120517.47 462062.87,120517.55 462062.86,120517.62 462062.83,120517.69 462062.79,120517.76 462062.74,120517.81 462062.68,120517.86 462062.62,120517.89 462062.55,120517.92 462062.47,120530.49 461998.63,120530.5 461998.55,120530.49 461998.47,120530.47 461998.39,120530.44 461998.31,120530.4 461998.24,120530.35 461998.18,120530.28 461998.13,120530.21 461998.09,120530.13 461998.06,120482.19 461984.63,120485 461963.14,120528.2 461950.66,120528.28 461950.63,120528.35 461950.59,120528.42 461950.53,120528.47 461950.47,120528.51 461950.4,120528.54 461950.32,120528.56 461950.24,120528.56 461950.15,120528.55 461950.07,120528.53 461949.99,120528.49 461949.92,120528.44 461949.85,120497.49 461915.03,120497.43 461914.98,120497.37 461914.93,120497.3 461914.9,120497.23 461914.88,120497.15 461914.86,120424.61 461910.03,120424.53 461910.03,120424.45 461910.05,120424.37 461910.07,120424.3 461910.11,120424.24 461910.16,120424.18 461910.22,120424.14 461910.29,120424.11 461910.37,120424.09 461910.45,120424.08 461910.53,120424.08 461967.59,120424.08 461967.67,120424.1 461967.75,120424.14 461967.82,120424.18 461967.89,120424.23 461967.95,120424.3 461968,120424.37 461968.04,120424.44 461968.07,120424.52 461968.09,120473.31 461973.83,120469.63 461993.16,120399.48 461986.43,120399.4 461986.43,120399.32 461986.44,120399.25 461986.47,120399.17 461986.5,120399.11 461986.55,120399.05 461986.61,120399.01 461986.67,120398.97 461986.74,120398.95 461986.82,120398.93 461986.9,120394.1 462057.5,120394.1 462057.58,120394.11 462057.66,120394.14 462057.74,120394.18 462057.81,120394.23 462057.87,120394.29 462057.93,120394.35 462057.97,120394.43 462058,120394.5 462058.03,120394.58 462058.03,120458.74 462059.95,120455.16 462072.48,120396.57 462067.68,120396.49 462067.68,120396.4 462067.69,120396.32 462067.72,120396.25 462067.76,120396.18 462067.82,120396.13 462067.88,120396.08 462067.96,120396.05 462068.04,120396.03 462068.12,120392.17 462103.9,120392.16 462103.99,120392.18 462104.07,120392.2 462104.15,120392.24 462104.22,120392.29 462104.29,120392.35 462104.35,120392.42 462104.4,120392.5 462104.43,120392.58 462104.45,120392.66 462104.46,120393.63 462104.46,120393.63 462103.46,120393.22 462103.46,120396.98 462068.71,120455.49 462073.51,120455.57 462073.51,120455.66 462073.49,120455.74 462073.46,120455.81 462073.42,120455.88 462073.37,120455.93 462073.3,120455.98 462073.23,120456.01 462073.15,120459.88 462059.61,120459.89 462059.52,120459.9 462059.44,120459.88 462059.36,120459.86 462059.28,120459.82 462059.21,120459.77 462059.14,120459.72 462059.08,120459.65 462059.04,120459.57 462059,120459.49 462058.98,120459.41 462058.97,120395.13 462057.05,120399.9 461987.48,120469.99 461994.2,120470.07 461994.2,120470.15 461994.19,120470.23 461994.16,120470.3 461994.13,120470.37 461994.08,120470.42 461994.02,120470.47 461993.95,120470.5 461993.88,120470.53 461993.8,120474.4 461973.48,120474.4 461973.4,120474.4 461973.32,120474.38 461973.24,120474.35 461973.16,120474.31 461973.09,120474.25 461973.03,120474.19 461972.98,120474.12 461972.94,120474.04 461972.91,120473.96 461972.9,120425.08 461967.14,120425.08 461911.06,120496.88 461915.85,120527.16 461949.92,120484.4 461962.27,120484.33 461962.3,120484.25 461962.35,120484.19 461962.4,120484.14 461962.46,120484.09 461962.53,120484.06 461962.61,120484.05 461962.69,120481.14 461984.93,120481.14 461985.01,120481.15 461985.09,120481.17 461985.17,120481.2 461985.24,120481.25 461985.31,120481.3 461985.36,120481.36 461985.41,120481.43 461985.45,120481.51 461985.48,120529.42 461998.9,120517.02 462061.84,120468.14 462058,120468.05 462058,120467.97 462058.02,120467.89 462058.05,120467.81 462058.09,120467.75 462058.15,120467.69 462058.22,120467.65 462058.29,120467.62 462058.37,120467.6 462058.46,120466.64 462069.1,120466.63 462069.18,120466.65 462069.26,120466.67 462069.33,120466.71 462069.4,120466.76 462069.47,120466.81 462069.53,120466.88 462069.57,120466.95 462069.61,120467.03 462069.63,120467.11 462069.64,120532.34 462072.52,120527.62 462115.03,120391.73 462106.36,120391.66 462107.36,120528.03 462116.06,120528.12 462116.06,120528.2 462116.04,120528.28 462116.02,120528.35 462115.97,120528.42 462115.92,120528.47 462115.85,120528.51 462115.78,120528.54 462115.7,120528.56 462115.62))";
+
+static std::string const parcel3_bend // of parcel_3 - clipped
+ = "POLYGON((120399.40000152588 461986.43000030518, 120399.47999954224 461986.43000030518, 120403 461986.76769953477, 120403 461987.777217312, 120399.90000152588 461987.47999954224, 120399.72722010587 461990, 120398.71791817161 461990, 120398.93000030518 461986.90000152588, 120398.95000076294 461986.81999969482, 120398.9700012207 461986.74000167847, 120399.00999832153 461986.66999816895, 120399.04999923706 461986.61000061035, 120399.11000061035 461986.54999923706, 120399.16999816895 461986.5, 120399.25 461986.4700012207, 120399.31999969482 461986.43999862671, 120399.40000152588 461986.43000030518))";
+
+// Ticket 10398, fails at next distances ( /10.0 ):
+// #1: 5,25,84
+// #2: 5,13,45,49,60,62,66,73
+// #3: 4,8,12,35,45,54
+// #4: 6,19,21,23,30,43,45,66,78,91
+
+static std::string const ticket_10398_1
+ = "POLYGON((897866.5 6272518.7,897882.5 6272519.2,897882.6 6272519,897883.3 6272508.7,897883.5 6272505.5,897855 6272503.5,897852.4 6272505.6,897850.1 6272517.6,897860.8 6272518.5,897866.5 6272518.7))";
+static std::string const ticket_10398_2
+ = "POLYGON((898882.3 6271337.3,898895.7 6271339.9,898898 6271328.3,898881.6 6271325.1,898879.3 6271336.7,898882.3 6271337.3))";
+static std::string const ticket_10398_3
+ = "POLYGON((897558.7 6272055,897552.5 6272054.2,897552.5 6272053.7,897546.1 6272052.7,897545.6 6272057.7,897560.7 6272059.6,897560.9 6272055.3,897558.7 6272055))";
+static std::string const ticket_10398_4
+ = "POLYGON((898563.3 6272366.9,898554.7 6272379.2,898559.7 6272382.3,898561.6 6272379.4,898568.7 6272369.1,898563.8 6272366.2,898563.3 6272366.9))";
+
+static std::string const ticket_10412
+ = "POLYGON((897747.8 6270564.3,897764.3 6270569.7,897776.5 6270529.5,897768.1 6270527.1,897767.6 6270529.4,897756.3 6270525.8,897745.8 6270522.3,897752 6270502.9,897749.7 6270502,897750.7 6270499.1,897751.8 6270498.6,897752.3 6270499.3,897754.6 6270497.9,897755.8 6270500.2,897766.8 6270494.1,897765.6 6270491.5,897768.3 6270490.5,897770.9 6270491.5,897770.2 6270494.6,897780.1 6270497.5,897781 6270494.6,897786.8 6270496.6,897790.8 6270482.5,897785.3 6270480.7,897785.9 6270478.2,897768.9 6270473.2,897768.1 6270475.8,897766.1 6270475.2,897758.7 6270479.2,897753.2 6270481.8,897751.9 6270479,897746.5 6270481.9,897748 6270484.6,897745.2 6270486.1,897743.9 6270483.3,897741.4 6270484.7,897742.6 6270487.3,897739.4 6270488.9,897738.3 6270486.3,897735.6 6270487.8,897733.1 6270496.8,897731.2 6270502.7,897732.4 6270503.2,897731.5 6270506.1,897730.3 6270505.7,897725.8 6270520.2,897726.8 6270520.7,897726 6270523,897728 6270523.7,897726.3 6270529.6,897742.8 6270534.5,897741.2 6270539.9,897751.4 6270543.4,897750.7 6270546.4,897753.2 6270547.2,897747.8 6270564.3))";
+
+static std::string const mysql_report_2014_10_24
+ = "POLYGON((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))";
+
+
+
+template <bool Clockwise, typename P>
+void test_all()
+{
+ typedef bg::model::polygon<P, Clockwise, true> polygon_type;
+
+ bg::strategy::buffer::join_miter join_miter(10.0);
+ bg::strategy::buffer::join_round join_round(100);
+ bg::strategy::buffer::end_flat end_flat;
+ bg::strategy::buffer::end_round end_round(100);
+
+ test_one<polygon_type, polygon_type>("simplex", simplex, join_round, end_flat, 47.9408, 1.5);
+ test_one<polygon_type, polygon_type>("simplex", simplex, join_miter, end_flat, 52.8733, 1.5);
+
+ test_one<polygon_type, polygon_type>("concave_simplex", concave_simplex, join_round, end_flat, 14.5616, 0.5);
+ test_one<polygon_type, polygon_type>("concave_simplex", concave_simplex, join_miter, end_flat, 16.3861, 0.5);
+
+ test_one<polygon_type, polygon_type>("spike_simplex15", spike_simplex, join_round, end_round, 50.3633, 1.5);
+ test_one<polygon_type, polygon_type>("spike_simplex15", spike_simplex, join_miter, end_flat, 51.5509, 1.5);
+
+#if defined(BOOST_GEOMETRY_BUFFER_INCLUDE_FAILING_TESTS)
+ test_one<polygon_type, polygon_type>("spike_simplex30", spike_simplex, join_round, end_round, 100.9199, 3.0);
+ test_one<polygon_type, polygon_type>("spike_simplex30", spike_simplex, join_miter, end_flat, 120.9859, 3.0);
+#endif
+ test_one<polygon_type, polygon_type>("spike_simplex150", spike_simplex, join_round, end_round, 998.9530, 15.0);
+#if defined(BOOST_GEOMETRY_BUFFER_INCLUDE_FAILING_TESTS)
+ test_one<polygon_type, polygon_type>("spike_simplex150", spike_simplex, join_miter, end_flat, 1532.6543, 15.0);
+#endif
+
+ test_one<polygon_type, polygon_type>("join_types", join_types, join_round, end_flat, 88.2060, 1.5);
+
+ test_one<polygon_type, polygon_type>("chained_box", chained_box, join_round, end_flat, 83.1403, 1.0);
+ test_one<polygon_type, polygon_type>("chained_box", chained_box, join_miter, end_flat, 84, 1.0);
+ test_one<polygon_type, polygon_type>("L", letter_L, join_round, end_flat, 13.7314, 0.5);
+ test_one<polygon_type, polygon_type>("L", letter_L, join_miter, end_flat, 14.0, 0.5);
+
+ test_one<polygon_type, polygon_type>("chained_box", chained_box, join_miter, end_flat, 84, 1.0);
+ test_one<polygon_type, polygon_type>("chained_box", chained_box, join_round, end_flat, 83.1403, 1.0);
+
+ test_one<polygon_type, polygon_type>("indentation4", indentation, join_miter, end_flat, 25.7741, 0.4);
+ test_one<polygon_type, polygon_type>("indentation4", indentation, join_round, end_flat, 25.5695, 0.4);
+ test_one<polygon_type, polygon_type>("indentation5", indentation, join_miter, end_flat, 28.2426, 0.5);
+ test_one<polygon_type, polygon_type>("indentation5", indentation, join_round, end_flat, 27.9953, 0.5);
+ test_one<polygon_type, polygon_type>("indentation6", indentation, join_miter, end_flat, 30.6712, 0.6);
+
+ // SQL Server gives 30.34479159164
+ test_one<polygon_type, polygon_type>("indentation6", indentation, join_round, end_flat, 30.3445, 0.6);
+
+ test_one<polygon_type, polygon_type>("indentation7", indentation, join_miter, end_flat, 33.0958, 0.7);
+ test_one<polygon_type, polygon_type>("indentation7", indentation, join_round, end_flat, 32.6533, 0.7);
+
+ test_one<polygon_type, polygon_type>("indentation8", indentation, join_miter, end_flat, 35.5943, 0.8);
+ test_one<polygon_type, polygon_type>("indentation8", indentation, join_round, end_flat, 35.0164, 0.8);
+ test_one<polygon_type, polygon_type>("indentation12", indentation, join_miter, end_flat, 46.3541, 1.2);
+ test_one<polygon_type, polygon_type>("indentation12", indentation, join_round, end_flat, 45.0537, 1.2);
+
+ // TODO: fix, the buffered pieces are currently counterclockwise, that should be reversed
+ //test_one<polygon_type, polygon_type>("indentation4_neg", indentation, join_miter, end_flat, 6.99098413022335, -0.4);
+ //test_one<polygon_type, polygon_type>("indentation4_neg", indentation, join_round, end_flat, 7.25523322189147, -0.4);
+ //test_one<polygon_type, polygon_type>("indentation8_neg", indentation, join_miter, end_flat, 1.36941992048731, -0.8);
+ //test_one<polygon_type, polygon_type>("indentation8_neg", indentation, join_round, end_flat, 1.37375487490664, -0.8);
+ //test_one<polygon_type, polygon_type>("indentation12_neg", indentation, join_miter, end_flat, 0, -1.2);
+ //test_one<polygon_type, polygon_type>("indentation12_neg", indentation, join_round, end_flat, 0, -1.2);
+
+ test_one<polygon_type, polygon_type>("donut_simplex6", donut_simplex, join_miter, end_flat, 53.648, 0.6);
+ test_one<polygon_type, polygon_type>("donut_simplex6", donut_simplex, join_round, end_flat, 52.820, 0.6);
+ test_one<polygon_type, polygon_type>("donut_simplex8", donut_simplex, join_miter, end_flat, 61.132, 0.8);
+ test_one<polygon_type, polygon_type>("donut_simplex8", donut_simplex, join_round, end_flat, 59.6713, 0.8);
+ test_one<polygon_type, polygon_type>("donut_simplex10", donut_simplex, join_miter, end_flat, 68.670, 1.0);
+ test_one<polygon_type, polygon_type>("donut_simplex10", donut_simplex, join_round, end_flat, 66.387, 1.0);
+ test_one<polygon_type, polygon_type>("donut_simplex12", donut_simplex, join_miter, end_flat, 76.605, 1.2);
+ test_one<polygon_type, polygon_type>("donut_simplex12", donut_simplex, join_round, end_flat, 73.3179, 1.2);
+ test_one<polygon_type, polygon_type>("donut_simplex14", donut_simplex, join_miter, end_flat, 84.974, 1.4);
+ test_one<polygon_type, polygon_type>("donut_simplex14", donut_simplex, join_round, end_flat, 80.500, 1.4);
+ test_one<polygon_type, polygon_type>("donut_simplex16", donut_simplex, join_miter, end_flat, 93.777, 1.6);
+ test_one<polygon_type, polygon_type>("donut_simplex16", donut_simplex, join_round, end_flat, 87.933, 1.6);
+
+ test_one<polygon_type, polygon_type>("donut_diamond1", donut_diamond, join_miter, end_flat, 280.0, 1.0);
+ test_one<polygon_type, polygon_type>("donut_diamond4", donut_diamond, join_miter, end_flat, 529.0, 4.0);
+ test_one<polygon_type, polygon_type>("donut_diamond5", donut_diamond, join_miter, end_flat, 625.0, 5.0);
+ test_one<polygon_type, polygon_type>("donut_diamond6", donut_diamond, join_miter, end_flat, 729.0, 6.0);
+
+ test_one<polygon_type, polygon_type>("arrow4", arrow, join_miter, end_flat, 28.265, 0.4);
+ test_one<polygon_type, polygon_type>("arrow4", arrow, join_round, end_flat, 27.039, 0.4);
+ test_one<polygon_type, polygon_type>("arrow5", arrow, join_miter, end_flat, 31.500, 0.5);
+ test_one<polygon_type, polygon_type>("arrow5", arrow, join_round, end_flat, 29.621, 0.5);
+ test_one<polygon_type, polygon_type>("arrow6", arrow, join_miter, end_flat, 34.903, 0.6);
+ test_one<polygon_type, polygon_type>("arrow6", arrow, join_round, end_flat, 32.268, 0.6);
+
+ test_one<polygon_type, polygon_type>("tipped_aitch3", tipped_aitch, join_miter, end_flat, 55.36, 0.3);
+ test_one<polygon_type, polygon_type>("tipped_aitch9", tipped_aitch, join_miter, end_flat, 77.44, 0.9);
+ test_one<polygon_type, polygon_type>("tipped_aitch13", tipped_aitch, join_miter, end_flat, 92.16, 1.3);
+
+ // SQL Server: 55.205415532967 76.6468846383224 90.642916957136
+ test_one<polygon_type, polygon_type>("tipped_aitch3", tipped_aitch, join_round, end_flat, 55.2053, 0.3);
+ test_one<polygon_type, polygon_type>("tipped_aitch9", tipped_aitch, join_round, end_flat, 76.6457, 0.9);
+ test_one<polygon_type, polygon_type>("tipped_aitch13", tipped_aitch, join_round, end_flat, 90.641, 1.3);
+
+ test_one<polygon_type, polygon_type>("snake4", snake, join_miter, end_flat, 64.44, 0.4);
+ test_one<polygon_type, polygon_type>("snake5", snake, join_miter, end_flat, 72, 0.5);
+ test_one<polygon_type, polygon_type>("snake6", snake, join_miter, end_flat, 75.44, 0.6);
+ test_one<polygon_type, polygon_type>("snake16", snake, join_miter, end_flat, 114.24, 1.6);
+
+ test_one<polygon_type, polygon_type>("funnelgate2", funnelgate, join_miter, end_flat, 120.982, 2);
+ test_one<polygon_type, polygon_type>("funnelgate3", funnelgate, join_miter, end_flat, 13*13, 3);
+ test_one<polygon_type, polygon_type>("funnelgate4", funnelgate, join_miter, end_flat, 15*15, 4);
+ test_one<polygon_type, polygon_type>("gammagate1", gammagate, join_miter, end_flat, 88, 1);
+ test_one<polygon_type, polygon_type>("fork_a1", fork_a, join_miter, end_flat, 88, 1);
+ test_one<polygon_type, polygon_type>("fork_b1", fork_b, join_miter, end_flat, 154, 1);
+ test_one<polygon_type, polygon_type>("fork_c1", fork_c, join_miter, end_flat, 152, 1);
+ test_one<polygon_type, polygon_type>("triangle", triangle, join_miter, end_flat, 14.6569, 1.0);
+
+ test_one<polygon_type, polygon_type>("degenerate0", degenerate0, join_round, end_round, 0.0, 1.0);
+ test_one<polygon_type, polygon_type>("degenerate1", degenerate1, join_round, end_round, 3.1389, 1.0);
+ test_one<polygon_type, polygon_type>("degenerate2", degenerate2, join_round, end_round, 3.1389, 1.0);
+ test_one<polygon_type, polygon_type>("degenerate3", degenerate3, join_round, end_round, 143.1395, 1.0);
+
+ test_one<polygon_type, polygon_type>("gammagate2", gammagate, join_miter, end_flat, 130, 2);
+
+ test_one<polygon_type, polygon_type>("flower1", flower, join_miter, end_flat, 67.614, 0.1);
+ test_one<polygon_type, polygon_type>("flower20", flower, join_miter, end_flat, 74.894, 0.20);
+ test_one<polygon_type, polygon_type>("flower25", flower, join_miter, end_flat, 78.226, 0.25);
+ test_one<polygon_type, polygon_type>("flower30", flower, join_miter, end_flat, 81.492494146177947, 0.30);
+ test_one<polygon_type, polygon_type>("flower35", flower, join_miter, end_flat, 84.694183819917185, 0.35);
+ test_one<polygon_type, polygon_type>("flower40", flower, join_miter, end_flat, 87.8306529577, 0.40);
+ test_one<polygon_type, polygon_type>("flower45", flower, join_miter, end_flat, 90.901901559536029, 0.45);
+ test_one<polygon_type, polygon_type>("flower50", flower, join_miter, end_flat, 93.907929625415662, 0.50);
+ test_one<polygon_type, polygon_type>("flower55", flower, join_miter, end_flat, 96.848737155342079, 0.55);
+ test_one<polygon_type, polygon_type>("flower60", flower, join_miter, end_flat, 99.724324149315279, 0.60);
+
+ test_one<polygon_type, polygon_type>("flower10", flower, join_round, end_flat, 67.486, 0.10);
+ test_one<polygon_type, polygon_type>("flower20", flower, join_round, end_flat, 74.702, 0.20);
+ test_one<polygon_type, polygon_type>("flower25", flower, join_round, end_flat, 78.071, 0.25);
+ test_one<polygon_type, polygon_type>("flower30", flower, join_round, end_flat, 81.352, 0.30);
+ test_one<polygon_type, polygon_type>("flower35", flower, join_round, end_flat, 84.547, 0.35);
+ test_one<polygon_type, polygon_type>("flower40", flower, join_round, end_flat, 87.665, 0.40);
+ test_one<polygon_type, polygon_type>("flower45", flower, join_round, end_flat, 90.709, 0.45);
+ test_one<polygon_type, polygon_type>("flower50", flower, join_round, end_flat, 93.680, 0.50);
+ test_one<polygon_type, polygon_type>("flower55", flower, join_round, end_flat, 96.580, 0.55);
+ test_one<polygon_type, polygon_type>("flower60", flower, join_round, end_flat, 99.408, 0.60);
+
+ // Saw
+ {
+ // SQL Server:
+ // 68.6258859984014 90.2254986930165 112.799509089077 136.392823913949 161.224547934625 187.427508982734
+ //215.063576036522 244.167935815974 274.764905445676 306.878264367143 340.530496138041 375.720107548269
+ int const n = 12;
+ double expected_round[n] =
+ {
+ 68.6252, 90.222, 112.792, 136.397, 161.230, 187.435,
+ 215.073, 244.179, 274.779, 306.894, 340.543, 375.734
+ };
+ double expected_miter[n] =
+ {
+ 70.7706, 98.804, 132.101, 170.661, 214.484, 263.57,
+ 317.92, 377.532, 442.408, 512.546, 587.948, 668.613
+ };
+
+ for (int i = 1; i <= n; i++)
+ {
+ std::ostringstream out;
+ out << "saw_" << i;
+ test_one<polygon_type, polygon_type>(out.str(), saw, join_round, end_flat, expected_round[i - 1], double(i) / 2.0, -999, true, 0.1);
+ test_one<polygon_type, polygon_type>(out.str(), saw, join_miter, end_flat, expected_miter[i - 1], double(i) / 2.0);
+ }
+ }
+
+ // Bowl
+ {
+ // SQL Server values - see query below.
+ //1 43.2425133175081 60.0257800296593 78.3497997564532 98.2145746255142 119.620102487345 142.482792724034
+ //2 166.499856911107 191.763334982583 218.446279387336 246.615018368511 276.300134755606 307.518458532186
+
+ int const n = 12;
+ double expected_round[n] =
+ {
+ 43.2423, 60.025, 78.3477, 98.2109, 119.614, 142.487,
+ 166.505, 191.77, 218.455, 246.625, 276.312, 307.532
+ };
+ double expected_miter[n] =
+ {
+ 43.4895, 61.014, 80.5726, 102.166, 125.794, 151.374,
+ 178.599, 207.443, 237.904, 270.000, 304.0, 340.000
+ };
+
+ for (int i = 1; i <= n; i++)
+ {
+ std::ostringstream out;
+ out << "bowl_" << i;
+ test_one<polygon_type, polygon_type>(out.str(), bowl, join_round, end_flat, expected_round[i - 1], double(i) / 2.0, -999, true, 0.1);
+ test_one<polygon_type, polygon_type>(out.str(), bowl, join_miter, end_flat, expected_miter[i - 1], double(i) / 2.0);
+ }
+ }
+ test_one<polygon_type, polygon_type>("county1", county1, join_round, end_flat, 0.00114092, 0.01);
+ test_one<polygon_type, polygon_type>("county1", county1, join_miter, end_flat, 0.00132859, 0.01);
+
+ test_one<polygon_type, polygon_type>("parcel1_10", parcel1, join_round, end_flat, 7571.39121246337891, 10.0);
+ test_one<polygon_type, polygon_type>("parcel1_10", parcel1, join_miter, end_flat, 8207.45314788818359, 10.0);
+ test_one<polygon_type, polygon_type>("parcel1_20", parcel1, join_round, end_flat, 11648.0537185668945, 20.0);
+ test_one<polygon_type, polygon_type>("parcel1_20", parcel1, join_miter, end_flat, 14184.0223083496094, 20.0);
+ test_one<polygon_type, polygon_type>("parcel1_30", parcel1, join_round, end_flat, 16350.3611068725586, 30.0);
+ test_one<polygon_type, polygon_type>("parcel1_30", parcel1, join_miter, end_flat, 22417.8007659912109, 30.0);
+
+ test_one<polygon_type, polygon_type>("parcel2_10", parcel2, join_round, end_flat, 5000.85063171386719, 10.0);
+ test_one<polygon_type, polygon_type>("parcel2_10", parcel2, join_miter, end_flat, 5091.12226867675781, 10.0);
+ test_one<polygon_type, polygon_type>("parcel2_20", parcel2, join_round, end_flat, 9049.60844421386719, 20.0);
+ test_one<polygon_type, polygon_type>("parcel2_20", parcel2, join_miter, end_flat, 9410.69154357910156, 20.0);
+ test_one<polygon_type, polygon_type>("parcel2_30", parcel2, join_round, end_flat, 13726.3790588378906, 30.0);
+ test_one<polygon_type, polygon_type>("parcel2_30", parcel2, join_miter, end_flat, 14535.2319564819336, 30.0);
+
+ test_one<polygon_type, polygon_type>("parcel3_10", parcel3, join_round, end_flat, 19992.6824035644531, 10.0);
+ test_one<polygon_type, polygon_type>("parcel3_10", parcel3, join_miter, end_flat, 20024.5579376220703, 10.0);
+ test_one<polygon_type, polygon_type>("parcel3_20", parcel3, join_round, end_flat, 34505.0746192932129, 20.0);
+ test_one<polygon_type, polygon_type>("parcel3_20", parcel3, join_miter, end_flat, 34633.2606201171875, 20.0);
+ test_one<polygon_type, polygon_type>("parcel3_30", parcel3, join_round, end_flat, 45261.4196014404297, 30.0);
+ test_one<polygon_type, polygon_type>("parcel3_30", parcel3, join_miter, end_flat, 45567.3875694274902, 30.0);
+
+ test_one<polygon_type, polygon_type>("parcel3_bend_5", parcel3_bend, join_round, end_flat, 155.6188, 5.0);
+ test_one<polygon_type, polygon_type>("parcel3_bend_10", parcel3_bend, join_round, end_flat, 458.4187, 10.0);
+
+ // These cases differ a bit based on point order (TODO: find out / describe why)
+ test_one<polygon_type, polygon_type>("parcel3_bend_15", parcel3_bend, join_round, end_flat, Clockwise ? 917.9747 : 917.996, 15.0);
+ test_one<polygon_type, polygon_type>("parcel3_bend_20", parcel3_bend, join_round, end_flat, Clockwise ? 1534.4795 : 1534.508, 20.0);
+
+ // Negative buffers making polygons smaller
+ test_one<polygon_type, polygon_type>("simplex", simplex, join_round, end_flat, 7.04043, -0.5);
+ test_one<polygon_type, polygon_type>("simplex", simplex, join_miter, end_flat, 7.04043, -0.5);
+ test_one<polygon_type, polygon_type>("concave_simplex", concave_simplex, join_round, end_flat, 0.777987, -0.5);
+ test_one<polygon_type, polygon_type>("concave_simplex", concave_simplex, join_miter, end_flat, 0.724208, -0.5);
+
+ test_one<polygon_type, polygon_type>("donut_simplex3", donut_simplex, join_miter, end_flat, 19.7636, -0.3);
+ test_one<polygon_type, polygon_type>("donut_simplex3", donut_simplex, join_round, end_flat, 19.8861, -0.3);
+ test_one<polygon_type, polygon_type>("donut_simplex6", donut_simplex, join_miter, end_flat, 12.8920, -0.6);
+ test_one<polygon_type, polygon_type>("donut_simplex6", donut_simplex, join_round, end_flat, 12.9157, -0.6);
+
+ test_one<polygon_type, polygon_type>("ticket_10398_1_5", ticket_10398_1, join_miter, end_flat, 494.7192, 0.5, -999, false);
+ test_one<polygon_type, polygon_type>("ticket_10398_1_25", ticket_10398_1, join_miter, end_flat, 697.7798, 2.5, -999, false);
+ test_one<polygon_type, polygon_type>("ticket_10398_1_84", ticket_10398_1, join_miter, end_flat, 1470.8096, 8.4, -999, false);
+
+ test_one<polygon_type, polygon_type>("ticket_10398_2_45", ticket_10398_2, join_miter, end_flat, 535.4780, 4.5, -999, false);
+ test_one<polygon_type, polygon_type>("ticket_10398_2_62", ticket_10398_2, join_miter, end_flat, 705.2046, 6.2, -999, false);
+ test_one<polygon_type, polygon_type>("ticket_10398_2_73", ticket_10398_2, join_miter, end_flat, 827.3394, 7.3, -999, false);
+
+ test_one<polygon_type, polygon_type>("ticket_10398_3_12", ticket_10398_3, join_miter, end_flat, 122.9443, 1.2, -999, false);
+ test_one<polygon_type, polygon_type>("ticket_10398_3_35", ticket_10398_3, join_miter, end_flat, 258.2729, 3.5, -999, false);
+ test_one<polygon_type, polygon_type>("ticket_10398_3_54", ticket_10398_3, join_miter, end_flat, 402.0571, 5.4, -999, false);
+
+ test_one<polygon_type, polygon_type>("ticket_10398_4_30", ticket_10398_4, join_miter, end_flat, 257.9482, 3.0, -999, false);
+ test_one<polygon_type, polygon_type>("ticket_10398_4_66", ticket_10398_4, join_miter, end_flat, 553.0112, 6.6, -999, false);
+ test_one<polygon_type, polygon_type>("ticket_10398_4_91", ticket_10398_4, join_miter, end_flat, 819.1406, 9.1, -999, false);
+
+ test_one<polygon_type, polygon_type>("ticket_10412", ticket_10412, join_miter, end_flat, 3109.6616, 1.5, -999, false);
+
+ bg::strategy::buffer::join_round join_round32(32);
+ bg::strategy::buffer::end_round end_round32(32);
+ test_one<polygon_type, polygon_type>("mysql_report_2014_10_24", mysql_report_2014_10_24, join_round32, end_round32, 174.902, 1.0, -999, false);
+}
+
+template
+<
+ typename InputPoint,
+ typename OutputPoint,
+ bool InputClockwise,
+ bool OutputClockwise,
+ bool InputClosed,
+ bool OutputClosed
+>
+void test_mixed()
+{
+ typedef bg::model::polygon<InputPoint, InputClockwise, InputClosed> input_polygon_type;
+ typedef bg::model::polygon<OutputPoint, OutputClockwise, OutputClosed> output_polygon_type;
+
+ bg::strategy::buffer::join_round join_round(12);
+ bg::strategy::buffer::end_flat end_flat;
+
+ std::ostringstream name;
+ name << "mixed_" << std::boolalpha
+ << InputClockwise << "_" << OutputClockwise
+ << "_" << InputClosed << "_" << OutputClosed;
+
+ test_one<input_polygon_type, output_polygon_type>(name.str(),
+ simplex, join_round, end_flat, 47.4831, 1.5);
+}
+
+#ifdef HAVE_TTMATH
+#include <ttmath_stub.hpp>
+#endif
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> dpoint;
+
+ test_all<true, dpoint>();
+
+#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
+ test_all<false, dpoint>();
+
+ test_mixed<dpoint, dpoint, false, false, true, true>();
+ test_mixed<dpoint, dpoint, false, true, true, true>();
+ test_mixed<dpoint, dpoint, true, false, true, true>();
+ test_mixed<dpoint, dpoint, true, true, true, true>();
+
+ test_mixed<dpoint, dpoint, false, false, false, true>();
+ test_mixed<dpoint, dpoint, false, true, false, true>();
+ test_mixed<dpoint, dpoint, true, false, false, true>();
+ test_mixed<dpoint, dpoint, true, true, false, true>();
+
+#ifdef HAVE_TTMATH
+ test_all<bg::model::point<tt, 2, bg::cs::cartesian> >();
+#endif
+
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/buffer/test_buffer.hpp b/libs/geometry/test/algorithms/buffer/test_buffer.hpp
new file mode 100644
index 0000000000..248519c58a
--- /dev/null
+++ b/libs/geometry/test/algorithms/buffer/test_buffer.hpp
@@ -0,0 +1,631 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2010-2014 Barend Gehrels, 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_TEST_BUFFER_HPP
+#define BOOST_GEOMETRY_TEST_BUFFER_HPP
+
+#include <iostream>
+#include <fstream>
+#include <iomanip>
+
+#if defined(TEST_WITH_SVG)
+#define BOOST_GEOMETRY_BUFFER_USE_HELPER_POINTS
+#endif
+
+#include <boost/foreach.hpp>
+#include <geometry_test_common.hpp>
+
+
+#include <boost/geometry/algorithms/envelope.hpp>
+#include <boost/geometry/algorithms/area.hpp>
+#include <boost/geometry/algorithms/buffer.hpp>
+#include <boost/geometry/algorithms/correct.hpp>
+#include <boost/geometry/algorithms/union.hpp>
+
+#include <boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp>
+
+#include <boost/geometry/geometries/geometries.hpp>
+
+#include <boost/geometry/strategies/strategies.hpp>
+
+#include <boost/geometry/algorithms/disjoint.hpp>
+#include <boost/geometry/algorithms/intersects.hpp>
+#include <boost/geometry/algorithms/detail/overlay/self_turn_points.hpp>
+
+#include <boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp>
+
+#include <boost/geometry/strategies/buffer.hpp>
+
+
+
+#include <boost/geometry/io/wkt/wkt.hpp>
+
+
+#if defined(TEST_WITH_SVG)
+
+#include <boost/geometry/io/svg/svg_mapper.hpp>
+
+template <typename Geometry, typename Mapper, typename RescalePolicy>
+void post_map(Geometry const& geometry, Mapper& mapper, RescalePolicy const& rescale_policy)
+{
+ typedef typename bg::point_type<Geometry>::type point_type;
+ typedef bg::detail::overlay::turn_info
+ <
+ point_type,
+ typename bg::segment_ratio_type<point_type, RescalePolicy>::type
+ > turn_info;
+
+ std::vector<turn_info> turns;
+
+ bg::detail::self_get_turn_points::no_interrupt_policy policy;
+ bg::self_turns
+ <
+ bg::detail::overlay::assign_null_policy
+ >(geometry, rescale_policy, turns, policy);
+
+ BOOST_FOREACH(turn_info const& turn, turns)
+ {
+ mapper.map(turn.point, "fill:rgb(255,128,0);stroke:rgb(0,0,100);stroke-width:1", 3);
+ }
+}
+
+template <typename SvgMapper, typename Tag>
+struct svg_visitor
+{
+ class si
+ {
+ private :
+ bg::segment_identifier m_id;
+
+ public :
+ inline si(bg::segment_identifier const& id)
+ : m_id(id)
+ {}
+
+ template <typename Char, typename Traits>
+ inline friend std::basic_ostream<Char, Traits>& operator<<(
+ std::basic_ostream<Char, Traits>& os,
+ si const& s)
+ {
+ os << s.m_id.multi_index << "." << s.m_id.segment_index;
+ return os;
+ }
+ };
+
+
+ SvgMapper& m_mapper;
+
+ svg_visitor(SvgMapper& mapper)
+ : m_mapper(mapper)
+ {}
+
+ template <typename Turns>
+ inline void map_turns(Turns const& turns, bool label_good_turns, bool label_wrong_turns)
+ {
+ namespace bgdb = boost::geometry::detail::buffer;
+ typedef typename boost::range_value<Turns const>::type turn_type;
+ typedef typename turn_type::point_type point_type;
+ typedef typename turn_type::robust_point_type robust_point_type;
+
+ std::map<robust_point_type, int, bg::less<robust_point_type> > offsets;
+
+ for (typename boost::range_iterator<Turns const>::type it =
+ boost::begin(turns); it != boost::end(turns); ++it)
+ {
+ bool is_good = true;
+ char color = 'g';
+ std::string fill = "fill:rgb(0,255,0);";
+ switch(it->location)
+ {
+ case bgdb::inside_buffer :
+ fill = "fill:rgb(255,0,0);";
+ color = 'r';
+ is_good = false;
+ break;
+ case bgdb::inside_original :
+ fill = "fill:rgb(0,0,255);";
+ color = 'b';
+ is_good = false;
+ break;
+ }
+ if (!it->selectable_start)
+ {
+ fill = "fill:rgb(255,192,0);";
+ color = 'o'; // orange
+ }
+ if (it->blocked())
+ {
+ fill = "fill:rgb(128,128,128);";
+ color = '-';
+ is_good = false;
+ }
+
+ fill += "fill-opacity:0.7;";
+
+ m_mapper.map(it->point, fill, 4);
+
+ if ((label_good_turns && is_good) || (label_wrong_turns && ! is_good))
+ {
+ std::ostringstream out;
+ out << it->turn_index
+ << " " << it->operations[0].piece_index << "/" << it->operations[1].piece_index
+ << " " << si(it->operations[0].seg_id) << "/" << si(it->operations[1].seg_id)
+
+ // If you want to see travel information
+ << std::endl
+ << " nxt " << it->operations[0].enriched.travels_to_ip_index
+ << "/" << it->operations[1].enriched.travels_to_ip_index
+ << " or " << it->operations[0].enriched.next_ip_index
+ << "/" << it->operations[1].enriched.next_ip_index
+ //<< " frac " << it->operations[0].fraction
+
+ // If you want to see robust-point coordinates (e.g. to find duplicates)
+ // << std::endl
+ // << " " << bg::get<0>(it->robust_point) << " , " << bg::get<1>(it->robust_point)
+
+ << std::endl;
+ out << " " << bg::method_char(it->method)
+ << ":" << bg::operation_char(it->operations[0].operation)
+ << "/" << bg::operation_char(it->operations[1].operation);
+ out << " "
+ << (it->count_on_offsetted > 0 ? "b" : "") // b: offsetted border
+ << (it->count_within_near_offsetted > 0 ? "n" : "")
+ << (it->count_within > 0 ? "w" : "")
+ << (it->count_on_helper > 0 ? "h" : "")
+ << (it->count_on_multi > 0 ? "m" : "")
+ ;
+
+ offsets[it->get_robust_point()] += 10;
+ int offset = offsets[it->get_robust_point()];
+
+ m_mapper.text(it->point, out.str(), "fill:rgb(0,0,0);font-family='Arial';font-size:9px;", 5, offset);
+
+ offsets[it->get_robust_point()] += 25;
+ }
+ }
+ }
+
+ template <typename Pieces, typename OffsettedRings>
+ inline void map_pieces(Pieces const& pieces,
+ OffsettedRings const& offsetted_rings,
+ bool do_pieces, bool do_indices)
+ {
+ typedef typename boost::range_value<Pieces const>::type piece_type;
+ typedef typename boost::range_value<OffsettedRings const>::type ring_type;
+
+ for(typename boost::range_iterator<Pieces const>::type it = boost::begin(pieces);
+ it != boost::end(pieces);
+ ++it)
+ {
+ const piece_type& piece = *it;
+ bg::segment_identifier seg_id = piece.first_seg_id;
+ if (seg_id.segment_index < 0)
+ {
+ continue;
+ }
+
+ ring_type corner;
+
+
+ ring_type const& ring = offsetted_rings[seg_id.multi_index];
+
+ std::copy(boost::begin(ring) + seg_id.segment_index,
+ boost::begin(ring) + piece.last_segment_index,
+ std::back_inserter(corner));
+ std::copy(boost::begin(piece.helper_points),
+ boost::end(piece.helper_points),
+ std::back_inserter(corner));
+
+ if (corner.empty())
+ {
+ continue;
+ }
+
+ if (do_pieces)
+ {
+ std::string style = "opacity:0.3;stroke:rgb(0,0,0);stroke-width:1;";
+ m_mapper.map(corner,
+ piece.type == bg::strategy::buffer::buffered_segment
+ ? style + "fill:rgb(255,128,0);"
+ : style + "fill:rgb(255,0,0);");
+ }
+
+ if (do_indices)
+ {
+ // Label starting piece_index / segment_index
+ typedef typename bg::point_type<ring_type>::type point_type;
+
+ std::ostringstream out;
+ out << piece.index << "/" << int(piece.type) << "/" << piece.first_seg_id.segment_index << ".." << piece.last_segment_index - 1;
+ point_type label_point = corner.front();
+ int const mid_offset = piece.offsetted_count / 2 - 1;
+ if (mid_offset >= 0 && mid_offset + 1 < corner.size())
+ {
+ bg::set<0>(label_point, (bg::get<0>(corner[mid_offset]) + bg::get<0>(corner[mid_offset + 1])) / 2.0);
+ bg::set<1>(label_point, (bg::get<1>(corner[mid_offset]) + bg::get<1>(corner[mid_offset + 1])) / 2.0);
+ }
+ m_mapper.text(label_point, out.str(), "fill:rgb(255,0,0);font-family='Arial';font-size:10px;", 5, 5);
+ }
+ }
+ }
+
+ template <typename TraversedRings>
+ inline void map_traversed_rings(TraversedRings const& traversed_rings)
+ {
+ for(typename boost::range_iterator<TraversedRings const>::type it
+ = boost::begin(traversed_rings); it != boost::end(traversed_rings); ++it)
+ {
+ m_mapper.map(*it, "opacity:0.4;fill:none;stroke:rgb(0,255,0);stroke-width:2");
+ }
+ }
+
+ template <typename OffsettedRings>
+ inline void map_offsetted_rings(OffsettedRings const& offsetted_rings)
+ {
+ for(typename boost::range_iterator<OffsettedRings const>::type it
+ = boost::begin(offsetted_rings); it != boost::end(offsetted_rings); ++it)
+ {
+ if (it->discarded())
+ {
+ m_mapper.map(*it, "opacity:0.4;fill:none;stroke:rgb(255,0,0);stroke-width:2");
+ }
+ else
+ {
+ m_mapper.map(*it, "opacity:0.4;fill:none;stroke:rgb(0,0,255);stroke-width:2");
+ }
+ }
+ }
+
+ template <typename PieceCollection>
+ inline void apply(PieceCollection const& collection, int phase)
+ {
+ if(phase == 0)
+ {
+ map_pieces(collection.m_pieces, collection.offsetted_rings, true, true);
+ map_turns(collection.m_turns, true, false);
+ }
+ if (phase == 1)
+ {
+// map_traversed_rings(collection.traversed_rings);
+// map_offsetted_rings(collection.offsetted_rings);
+ }
+ }
+};
+
+#endif
+
+//-----------------------------------------------------------------------------
+template <typename JoinStrategy>
+struct JoinTestProperties { };
+
+template<> struct JoinTestProperties<boost::geometry::strategy::buffer::join_round>
+{
+ static std::string name() { return "round"; }
+};
+
+template<> struct JoinTestProperties<boost::geometry::strategy::buffer::join_miter>
+{
+ static std::string name() { return "miter"; }
+};
+
+template<> struct JoinTestProperties<boost::geometry::strategy::buffer::join_round_by_divide>
+{
+ static std::string name() { return "divide"; }
+};
+
+
+//-----------------------------------------------------------------------------
+template <typename EndStrategy>
+struct EndTestProperties { };
+
+template<> struct EndTestProperties<boost::geometry::strategy::buffer::end_round>
+{
+ static std::string name() { return "round"; }
+};
+
+template<> struct EndTestProperties<boost::geometry::strategy::buffer::end_flat>
+{
+ static std::string name() { return "flat"; }
+};
+
+
+
+template <typename Geometry, typename RescalePolicy>
+std::size_t count_self_ips(Geometry const& geometry, RescalePolicy const& rescale_policy)
+{
+ typedef typename bg::point_type<Geometry>::type point_type;
+ typedef bg::detail::overlay::turn_info
+ <
+ point_type,
+ typename bg::segment_ratio_type<point_type, RescalePolicy>::type
+ > turn_info;
+
+ std::vector<turn_info> turns;
+
+ bg::detail::self_get_turn_points::no_interrupt_policy policy;
+ bg::self_turns
+ <
+ bg::detail::overlay::assign_null_policy
+ >(geometry, rescale_policy, turns, policy);
+
+ return turns.size();
+}
+
+template
+<
+ typename GeometryOut,
+ typename JoinStrategy,
+ typename EndStrategy,
+ typename Geometry
+>
+void test_buffer(std::string const& caseid, Geometry const& geometry,
+ JoinStrategy const& join_strategy, EndStrategy const& end_strategy,
+ bool check_self_intersections, double expected_area,
+ double distance_left, double distance_right,
+ double tolerance,
+ std::size_t* self_ip_count)
+{
+ namespace bg = boost::geometry;
+
+ typedef typename bg::coordinate_type<Geometry>::type coordinate_type;
+ typedef typename bg::point_type<Geometry>::type point_type;
+
+ typedef typename bg::tag<Geometry>::type tag;
+ // TODO use something different here:
+ std::string type = boost::is_same<tag, bg::polygon_tag>::value ? "poly"
+ : boost::is_same<tag, bg::linestring_tag>::value ? "line"
+ : boost::is_same<tag, bg::point_tag>::value ? "point"
+ : boost::is_same<tag, bg::multi_polygon_tag>::value ? "multipoly"
+ : boost::is_same<tag, bg::multi_linestring_tag>::value ? "multiline"
+ : boost::is_same<tag, bg::multi_point_tag>::value ? "multipoint"
+ : ""
+ ;
+
+ if (distance_right < -998)
+ {
+ distance_right = distance_left;
+ }
+
+ bg::model::box<point_type> envelope;
+ bg::envelope(geometry, envelope);
+
+ std::string join_name = JoinTestProperties<JoinStrategy>::name();
+ std::string end_name = EndTestProperties<EndStrategy>::name();
+
+ if (boost::is_same<tag, bg::point_tag>::value
+ || boost::is_same<tag, bg::multi_point_tag>::value)
+ {
+ join_name.clear();
+ }
+
+ std::ostringstream complete;
+ complete
+ << type << "_"
+ << caseid << "_"
+ << string_from_type<coordinate_type>::name()
+ << "_" << join_name
+ << (end_name.empty() ? "" : "_") << end_name
+ << (distance_left < 0 && distance_right < 0 ? "_deflate" : "")
+ << (bg::point_order<GeometryOut>::value == bg::counterclockwise ? "_ccw" : "")
+ // << "_" << point_buffer_count
+ ;
+
+ //std::cout << complete.str() << std::endl;
+
+ std::ostringstream filename;
+ filename << "buffer_" << complete.str() << ".svg";
+
+#if defined(TEST_WITH_SVG)
+ std::ofstream svg(filename.str().c_str());
+ typedef bg::svg_mapper<point_type> mapper_type;
+ mapper_type mapper(svg, 1000, 1000);
+
+ {
+ double d = std::abs(distance_left) + std::abs(distance_right);
+
+ bg::model::box<point_type> box = envelope;
+ bg::buffer(box, box, d * (join_name == "miter" ? 2.0 : 1.1));
+ mapper.add(box);
+ }
+
+ svg_visitor<mapper_type, tag> visitor(mapper);
+#else
+ bg::detail::buffer::visit_pieces_default_policy visitor;
+#endif
+
+ bg::strategy::buffer::distance_asymmetric
+ <
+ coordinate_type
+ >
+ distance_strategy(distance_left, distance_right);
+
+ bg::strategy::buffer::side_straight side_strategy;
+
+ // For (multi)points a buffer with 88 points is used for testing.
+ // More points will give a more precise result - expected area should be
+ // adapted then
+ bg::strategy::buffer::point_circle circle_strategy(88);
+
+ typedef typename bg::point_type<Geometry>::type point_type;
+ typedef typename bg::rescale_policy_type<point_type>::type
+ rescale_policy_type;
+
+ // Enlarge the box to get a proper rescale policy
+ bg::buffer(envelope, envelope, distance_strategy.max_distance(join_strategy, end_strategy));
+
+ rescale_policy_type rescale_policy
+ = bg::get_rescale_policy<rescale_policy_type>(envelope);
+
+ std::vector<GeometryOut> buffered;
+
+ bg::detail::buffer::buffer_inserter<GeometryOut>(geometry,
+ std::back_inserter(buffered),
+ distance_strategy,
+ side_strategy,
+ join_strategy,
+ end_strategy,
+ circle_strategy,
+ rescale_policy,
+ visitor);
+
+ typename bg::default_area_result<GeometryOut>::type area = 0;
+ BOOST_FOREACH(GeometryOut const& polygon, buffered)
+ {
+ area += bg::area(polygon);
+ }
+
+ //std::cout << caseid << " " << distance_left << std::endl;
+ //std::cout << "INPUT: " << bg::wkt(geometry) << std::endl;
+ //std::cout << "OUTPUT: " << area << std::endl;
+ //BOOST_FOREACH(GeometryOut const& polygon, buffered)
+ //{
+ // std::cout << bg::wkt(polygon) << std::endl;
+ //}
+
+
+ if (expected_area > -0.1)
+ {
+ BOOST_CHECK_MESSAGE
+ (
+ bg::math::abs(area - expected_area) < tolerance,
+ complete.str() << " not as expected. "
+ << std::setprecision(18)
+ << " Expected: " << expected_area
+ << " Detected: " << area
+ );
+
+ if (check_self_intersections)
+ {
+ // Be sure resulting polygon does not contain
+ // self-intersections
+ BOOST_FOREACH(GeometryOut const& polygon, buffered)
+ {
+ BOOST_CHECK_MESSAGE
+ (
+ ! bg::detail::overlay::has_self_intersections(polygon,
+ rescale_policy, false),
+ complete.str() << " output is self-intersecting. "
+ );
+ }
+ }
+ }
+
+#if defined(TEST_WITH_SVG)
+ bool const areal = boost::is_same
+ <
+ typename bg::tag_cast<tag, bg::areal_tag>::type, bg::areal_tag
+ >::type::value;
+
+ // Map input geometry in green
+ if (areal)
+ {
+ mapper.map(geometry, "opacity:0.5;fill:rgb(0,128,0);stroke:rgb(0,128,0);stroke-width:2");
+ }
+ else
+ {
+ mapper.map(geometry, "opacity:0.5;stroke:rgb(0,128,0);stroke-width:10");
+ }
+
+ BOOST_FOREACH(GeometryOut const& polygon, buffered)
+ {
+ mapper.map(polygon, "opacity:0.4;fill:rgb(255,255,128);stroke:rgb(0,0,0);stroke-width:3");
+ post_map(polygon, mapper, rescale_policy);
+ }
+#endif
+
+ if (self_ip_count != NULL)
+ {
+ std::size_t count = 0;
+ BOOST_FOREACH(GeometryOut const& polygon, buffered)
+ {
+ if (bg::detail::overlay::has_self_intersections(polygon,
+ rescale_policy, false))
+ {
+ count += count_self_ips(polygon, rescale_policy);
+ }
+ }
+
+ *self_ip_count += count;
+ if (count > 0)
+ {
+ std::cout << complete.str() << " " << count << std::endl;
+ }
+ }
+}
+
+
+#ifdef BOOST_GEOMETRY_CHECK_WITH_POSTGIS
+static int counter = 0;
+#endif
+
+template
+<
+ typename Geometry,
+ typename GeometryOut,
+ typename JoinStrategy,
+ typename EndStrategy
+>
+void test_one(std::string const& caseid, std::string const& wkt,
+ JoinStrategy const& join_strategy, EndStrategy const& end_strategy,
+ double expected_area,
+ double distance_left, double distance_right = -999,
+ bool check_self_intersections = true,
+ double tolerance = 0.01)
+{
+ namespace bg = boost::geometry;
+ Geometry g;
+ bg::read_wkt(wkt, g);
+ bg::correct(g);
+
+
+#ifdef BOOST_GEOMETRY_CHECK_WITH_POSTGIS
+ std::cout
+ << (counter > 0 ? "union " : "")
+ << "select " << counter++
+ << ", '" << caseid << "' as caseid"
+ << ", ST_Area(ST_Buffer(ST_GeomFromText('" << wkt << "'), "
+ << distance_left
+ << ", 'endcap=" << end_name << " join=" << join_name << "'))"
+ << ", " << expected_area
+ << std::endl;
+#endif
+
+ test_buffer<GeometryOut>
+ (caseid, g, join_strategy, end_strategy,
+ check_self_intersections, expected_area,
+ distance_left, distance_right, tolerance, NULL);
+}
+
+// Version (currently for the Aimes test) counting self-ip's instead of checking
+template
+<
+ typename Geometry,
+ typename GeometryOut,
+ typename JoinStrategy,
+ typename EndStrategy
+>
+void test_one(std::string const& caseid, std::string const& wkt,
+ JoinStrategy const& join_strategy, EndStrategy const& end_strategy,
+ double expected_area,
+ double distance_left, double distance_right,
+ std::size_t& self_ip_count,
+ double tolerance = 0.01)
+{
+ namespace bg = boost::geometry;
+ Geometry g;
+ bg::read_wkt(wkt, g);
+ bg::correct(g);
+
+ test_buffer<GeometryOut>(caseid, g, join_strategy, end_strategy,
+ false, expected_area,
+ distance_left, distance_right, tolerance, &self_ip_count);
+}
+
+
+#endif
diff --git a/libs/geometry/test/algorithms/centroid.cpp b/libs/geometry/test/algorithms/centroid.cpp
index 90eca01ab0..8e3af7f754 100644
--- a/libs/geometry/test/algorithms/centroid.cpp
+++ b/libs/geometry/test/algorithms/centroid.cpp
@@ -5,6 +5,11 @@
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 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.
@@ -51,6 +56,8 @@ void test_2d()
test_centroid<bg::model::linestring<P> >("LINESTRING(0 0,0 4, 4 4)", 1.0, 3.0);
test_centroid<bg::model::linestring<P> >("LINESTRING(0 0,3 3,0 6,3 9,0 12)", 1.5, 6.0);
+ test_centroid<bg::model::segment<P> >("LINESTRING(1 1, 3 3)", 2.0, 2.0);
+
test_centroid<bg::model::ring<P> >(
"POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2"
",3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3))",
@@ -82,6 +89,7 @@ void test_3d()
test_centroid<bg::model::linestring<P> >("LINESTRING(1 2 3,4 5 -6,7 -8 9,-10 11 12,13 -14 -15, 16 17 18)",
5.6748865168734692, 0.31974938587214002, 1.9915270387763671);
test_centroid<bg::model::box<P> >("POLYGON((1 2 3,5 6 7))", 3, 4, 5);
+ test_centroid<bg::model::segment<P> >("LINESTRING(1 1 1,3 3 3)", 2, 2, 2);
test_centroid<P>("POINT(1 2 3)", 1, 2, 3);
}
@@ -126,6 +134,34 @@ void test_large_integers()
BOOST_CHECK_EQUAL(bg::get<1>(int_centroid), bg::get<1>(double_centroid_as_int));
}
+//#include <to_svg.hpp>
+
+void test_large_doubles()
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> point;
+ point pt_far, pt_near;
+ bg::model::polygon<point> poly_far, poly_near;
+
+ // related to ticket #10643
+ bg::read_wkt("POLYGON((1074699.93 703064.65, 1074703.90 703064.58, 1074704.53 703061.40, 1074702.10 703054.62, 1074699.93 703064.65))", poly_far);
+ bg::read_wkt("POLYGON((699.93 64.65, 703.90 64.58, 704.53 61.40, 702.10 54.62, 699.93 64.65))", poly_near);
+
+ bg::centroid(poly_far, pt_far);
+ bg::centroid(poly_near, pt_near);
+
+ BOOST_CHECK(bg::within(pt_far, poly_far));
+ BOOST_CHECK(bg::within(pt_near, poly_near));
+
+ point pt_near_moved;
+ bg::set<0>(pt_near_moved, bg::get<0>(pt_near) + 1074000.0);
+ bg::set<1>(pt_near_moved, bg::get<1>(pt_near) + 703000.0);
+
+ //geom_to_svg(poly_far, pt_far, "far.svg");
+ //geom_to_svg(poly_near, pt_near, "near.svg");
+
+ double d = bg::distance(pt_far, pt_near_moved);
+ BOOST_CHECK(d < 0.1);
+}
int test_main(int, char* [])
{
@@ -142,7 +178,13 @@ int test_main(int, char* [])
test_3d<boost::tuple<ttmath_big, ttmath_big, ttmath_big> >();
#endif
+#ifndef NDEBUG
+ // The test currently fails in release mode. TODO: fix this
test_large_integers();
+#endif
+
+ test_large_doubles();
+
test_exceptions<bg::model::d2::point_xy<double> >();
return 0;
diff --git a/libs/geometry/test/algorithms/centroid.vcproj b/libs/geometry/test/algorithms/centroid.vcproj
deleted file mode 100644
index 5c908c6542..0000000000
--- a/libs/geometry/test/algorithms/centroid.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="centroid"
- ProjectGUID="{1E90E5BC-1280-4A6A-B197-132ABBF97EB9}"
- RootNamespace="centroid"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\centroid"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\centroid"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\centroid.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/comparable_distance.cpp b/libs/geometry/test/algorithms/comparable_distance.cpp
index 1f5266fdde..01ef5d98ad 100644
--- a/libs/geometry/test/algorithms/comparable_distance.cpp
+++ b/libs/geometry/test/algorithms/comparable_distance.cpp
@@ -1,9 +1,15 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
-// 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.
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014, 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.
@@ -16,19 +22,16 @@
#include <sstream>
#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_same.hpp>
#include <geometry_test_common.hpp>
-#include <boost/geometry/geometry.hpp>
-
-#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/geometries/linestring.hpp>
-
#include <boost/geometry/algorithms/comparable_distance.hpp>
-#include <boost/geometry/strategies/strategies.hpp>
-
#include <boost/geometry/geometries/geometries.hpp>
-
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
template <typename P>
void test_distance_result()
@@ -102,11 +105,11 @@ void test_distance_linestring()
P p = bg::make<P>(2, 1);
typename bg::coordinate_type<P>::type d = bg::comparable_distance(p, points);
- BOOST_CHECK_CLOSE(d, 0.70710678, 0.001);
+ BOOST_CHECK_CLOSE(d, 0.5, 0.001);
p = bg::make<P>(5, 5);
d = bg::comparable_distance(p, points);
- BOOST_CHECK_CLOSE(d, 2.828427, 0.001);
+ BOOST_CHECK_CLOSE(d, 8.0, 0.001);
bg::model::linestring<P> line;
@@ -117,11 +120,11 @@ void test_distance_linestring()
p = bg::make<P>(5, 5);
d = bg::comparable_distance(p, line);
- BOOST_CHECK_CLOSE(d, 2.828427, 0.001);
+ BOOST_CHECK_CLOSE(d, 8.0, 0.001);
// Reverse case
d = bg::comparable_distance(line, p);
- BOOST_CHECK_CLOSE(d, 2.828427, 0.001);
+ BOOST_CHECK_CLOSE(d, 8.0, 0.001);
}
template <typename P>
@@ -133,14 +136,386 @@ void test_all()
test_distance_linestring<P>();
}
+template <typename T>
+void test_double_result_from_integer()
+{
+ typedef bg::model::point<T, 2, bg::cs::cartesian> point_type;
+
+ point_type point;
+
+ // Check linestring
+ bg::model::linestring<point_type> linestring;
+ bg::read_wkt("POINT(2 2)", point);
+ bg::read_wkt("LINESTRING(4 1,1 4)", linestring);
+
+ double normal_distance = bg::distance(point, linestring);
+ double comparable_distance = bg::comparable_distance(point, linestring);
+
+ BOOST_CHECK_CLOSE(normal_distance, std::sqrt(0.5), 0.001);
+ BOOST_CHECK_CLOSE(comparable_distance, 0.5, 0.001);
+
+ // Check polygon
+ bg::model::polygon<point_type> polygon;
+ bg::read_wkt("POLYGON((0 0,1 9,8 1,0 0),(1 1,4 1,1 4,1 1))", polygon);
+
+ normal_distance = bg::distance(point, polygon);
+ comparable_distance = bg::comparable_distance(point, polygon);
+
+ BOOST_CHECK_CLOSE(normal_distance, std::sqrt(0.5), 0.001);
+ BOOST_CHECK_CLOSE(comparable_distance, 0.5, 0.001);
+}
+
+template <typename T>
+struct test_variant_different_default_strategy
+{
+ static inline void apply()
+ {
+ typedef bg::model::point<T, 2, bg::cs::cartesian> point_type;
+ typedef bg::model::segment<point_type> segment_type;
+ typedef bg::model::box<point_type> box_type;
+ typedef boost::variant<point_type, segment_type, box_type> variant_type;
+
+ point_type point;
+ bg::read_wkt("POINT(1 3)", point);
+
+ segment_type seg;
+ bg::read_wkt("LINESTRING(1 1,4 4)", seg);
+
+ box_type box;
+ bg::read_wkt("BOX(-1 -1,0 0)", box);
+
+ variant_type v1, v2;
+
+ BOOST_MPL_ASSERT((
+ boost::is_same
+ <
+ typename bg::comparable_distance_result
+ <
+ variant_type, variant_type, bg::default_strategy
+ >::type,
+ typename bg::comparable_distance_result
+ <
+ point_type, point_type, bg::default_strategy
+ >::type
+ >
+ ));
+
+ // Default strategy
+ v1 = point;
+ v2 = point;
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, v2),
+ bg::comparable_distance(point, point),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, point),
+ bg::comparable_distance(point, point),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(point, v2),
+ bg::comparable_distance(point, point),
+ 0.0001);
+ v1 = point;
+ v2 = seg;
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, v2),
+ bg::comparable_distance(point, seg),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, seg),
+ bg::comparable_distance(point, seg),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(point, v2),
+ bg::comparable_distance(point, seg), 0.0001);
+ v1 = point;
+ v2 = box;
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, v2),
+ bg::comparable_distance(point, box),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, box),
+ bg::comparable_distance(point, box),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(point, v2),
+ bg::comparable_distance(point, box), 0.0001);
+ }
+};
+
+template <typename T, typename ExpectedResultType = double>
+struct test_variant_same_default_strategy
+{
+ static inline void apply()
+ {
+ typedef bg::model::point<T, 2, bg::cs::cartesian> point_type;
+ typedef bg::model::segment<point_type> segment_type;
+ typedef bg::model::linestring<point_type> linestring_type;
+ typedef boost::variant
+ <
+ point_type, segment_type, linestring_type
+ > variant_type;
+
+ point_type point;
+ bg::read_wkt("POINT(1 3)", point);
+
+ segment_type seg;
+ bg::read_wkt("LINESTRING(1 1,4 4)", seg);
+
+ linestring_type linestring;
+ bg::read_wkt("LINESTRING(-1 -1,-1 0,0 0,0 -1,-1 -1)", linestring);
+
+ variant_type v1, v2;
+
+ BOOST_MPL_ASSERT((
+ boost::is_same
+ <
+ typename bg::comparable_distance_result
+ <
+ variant_type, variant_type, bg::default_strategy
+ >::type,
+ ExpectedResultType
+ >
+ ));
+
+ BOOST_MPL_ASSERT((
+ boost::is_same
+ <
+ typename bg::comparable_distance_result
+ <
+ point_type, point_type, bg::default_strategy
+ >::type,
+ ExpectedResultType
+ >
+ ));
+
+ // Default strategy
+ v1 = point;
+ v2 = point;
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, v2),
+ bg::comparable_distance(point, point),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, point),
+ bg::comparable_distance(point, point),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(point, v2),
+ bg::comparable_distance(point, point),
+ 0.0001);
+ v1 = point;
+ v2 = seg;
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, v2),
+ bg::comparable_distance(point, seg),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, seg),
+ bg::comparable_distance(point, seg),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(point, v2),
+ bg::comparable_distance(point, seg),
+ 0.0001);
+ v1 = point;
+ v2 = linestring;
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, v2),
+ bg::comparable_distance(point, linestring),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, linestring),
+ bg::comparable_distance(point, linestring),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(point, v2),
+ bg::comparable_distance(point, linestring),
+ 0.0001);
+ }
+};
+
+template <typename T, typename ExpectedResultType = T>
+struct test_variant_with_strategy
+{
+ static inline void apply()
+ {
+ typedef bg::strategy::distance::projected_point<T> strategy_type;
+
+ typedef bg::model::point<T, 2, bg::cs::cartesian> point_type;
+ typedef bg::model::segment<point_type> segment_type;
+ typedef bg::model::linestring<point_type> linestring_type;
+ typedef bg::model::multi_linestring
+ <
+ linestring_type
+ > multi_linestring_type;
+ typedef boost::variant
+ <
+ segment_type, linestring_type, multi_linestring_type
+ > variant_type;
+
+ segment_type seg;
+ bg::read_wkt("LINESTRING(1 1,4 4)", seg);
+
+ linestring_type ls;
+ bg::read_wkt("LINESTRING(-1 -1,-1 0,0 0,0 -1,-1 -1)", ls);
+
+ multi_linestring_type mls;
+ bg::read_wkt("MULTILINESTRING((10 0,20 0),(30 0,40 0))", mls);
+
+ variant_type v1, v2;
+
+ strategy_type strategy;
+
+ BOOST_MPL_ASSERT((
+ boost::is_same
+ <
+ typename bg::comparable_distance_result
+ <
+ variant_type, variant_type, strategy_type
+ >::type,
+ ExpectedResultType
+ >
+ ));
+
+ BOOST_MPL_ASSERT((
+ boost::is_same
+ <
+ typename bg::comparable_distance_result
+ <
+ segment_type, linestring_type, strategy_type
+ >::type,
+ ExpectedResultType
+ >
+ ));
+
+ // Passed strategy
+ v1 = seg;
+ v2 = seg;
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, v2, strategy),
+ bg::comparable_distance(seg, seg, strategy),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, seg, strategy),
+ bg::comparable_distance(seg, seg, strategy),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(seg, v2, strategy),
+ bg::comparable_distance(seg, seg, strategy),
+ 0.0001);
+ v1 = seg;
+ v2 = ls;
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, v2, strategy),
+ bg::comparable_distance(seg, ls, strategy),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, ls, strategy),
+ bg::comparable_distance(seg, ls, strategy),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(seg, v2, strategy),
+ bg::comparable_distance(seg, ls, strategy),
+ 0.0001);
+ v1 = seg;
+ v2 = mls;
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, v2, strategy),
+ bg::comparable_distance(seg, mls, strategy),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, mls, strategy),
+ bg::comparable_distance(seg, mls, strategy),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(seg, v2, strategy),
+ bg::comparable_distance(seg, mls, strategy),
+ 0.0001);
+ v1 = ls;
+ v2 = mls;
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, v2, strategy),
+ bg::comparable_distance(ls, mls, strategy),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(v1, mls, strategy),
+ bg::comparable_distance(ls, mls, strategy),
+ 0.0001);
+ BOOST_CHECK_CLOSE(bg::comparable_distance(ls, v2, strategy),
+ bg::comparable_distance(ls, mls, strategy),
+ 0.0001);
+ }
+};
+
+template <typename T, bool IsIntergral = boost::is_integral<T>::value>
+struct check_result
+{
+ template <typename ExpectedResult>
+ static inline void apply(T const& value,
+ ExpectedResult const& expected_value)
+ {
+ BOOST_CHECK_EQUAL(value, expected_value);
+ }
+};
+
+template <typename T>
+struct check_result<T, false>
+{
+ template <typename ExpectedResult>
+ static inline void apply(T const& value,
+ ExpectedResult const& expected_value)
+ {
+ BOOST_CHECK_CLOSE(value, expected_value, 0.0001);
+ }
+};
+
+template <typename T>
+struct test_variant_boxes
+{
+ static inline void apply()
+ {
+ typedef bg::model::point<T, 2, bg::cs::cartesian> point_type;
+ typedef bg::model::box<point_type> box_type;
+ typedef boost::variant<box_type> variant_type;
+
+ box_type box1, box2;
+ bg::read_wkt("BOX(-1 -1,0 0)", box1);
+ bg::read_wkt("BOX(1 1,2 2)", box2);
+
+ variant_type v1 = box1, v2 = box2;
+
+ typedef typename boost::mpl::if_c
+ <
+ boost::is_float<T>::value,
+ double,
+ typename bg::util::detail::default_integral::type
+ >::type expected_result_type;
+
+ BOOST_MPL_ASSERT((
+ boost::is_same
+ <
+ typename bg::comparable_distance_result
+ <
+ variant_type, variant_type, bg::default_strategy
+ >::type,
+ expected_result_type
+ >
+ ));
+
+ // Default strategy
+ check_result<T>::apply(bg::comparable_distance(v1, v2),
+ bg::comparable_distance(box1, box2));
+ check_result<T>::apply(bg::comparable_distance(v1, box2),
+ bg::comparable_distance(box1, box2));
+ check_result<T>::apply(bg::comparable_distance(box1, v2),
+ bg::comparable_distance(box1, box2));
+ }
+};
+
+
int test_main(int, char* [])
{
- //test_all<bg::model::d2::point_xy<int> >();
+ test_double_result_from_integer<int>();
+ test_double_result_from_integer<boost::long_long_type>();
+
test_all<bg::model::d2::point_xy<float> >();
test_all<bg::model::d2::point_xy<double> >();
#ifdef HAVE_TTMATH
test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif
+
+ // test variant support
+ test_variant_different_default_strategy<double>::apply();
+
+ test_variant_same_default_strategy<double>::apply();
+ test_variant_same_default_strategy<int>::apply();
+ test_variant_same_default_strategy<long>::apply();
+
+ test_variant_with_strategy<double>::apply();
+ test_variant_with_strategy<float>::apply();
+ test_variant_with_strategy<long double>::apply();
+ test_variant_with_strategy<int, double>::apply();
+#ifdef HAVE_TTMATH
+ test_variant_with_strategy<ttmath_big>::apply();
+#endif
+
+ test_variant_boxes<double>::apply();
+ test_variant_boxes<int>::apply();
+ test_variant_boxes<long>::apply();
+
return 0;
}
diff --git a/libs/geometry/test/algorithms/comparable_distance.vcproj b/libs/geometry/test/algorithms/comparable_distance.vcproj
deleted file mode 100644
index cf9b8ea413..0000000000
--- a/libs/geometry/test/algorithms/comparable_distance.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="comparable_distance"
- ProjectGUID="{F11970B5-BE16-4FF5-9780-4C15082B76A0}"
- RootNamespace="comparable_distance"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\comparable_distance"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\comparable_distance"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\comparable_distance.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/convert.cpp b/libs/geometry/test/algorithms/convert.cpp
index 90856ff4e2..a2758832d3 100644
--- a/libs/geometry/test/algorithms/convert.cpp
+++ b/libs/geometry/test/algorithms/convert.cpp
@@ -26,14 +26,14 @@ void test_mixed_point_types()
// Box
test_mixed_identical_result
<
- bg::model::box<Point1>,
+ bg::model::box<Point1>,
bg::model::box<Point2>
>
("POLYGON((1 2,1 4,3 4,3 2,1 2))");
test_mixed_identical_result
<
- bg::model::segment<Point1>,
+ bg::model::segment<Point1>,
bg::model::segment<Point2>
>
("LINESTRING(1 1,2 2)");
@@ -41,68 +41,71 @@ void test_mixed_point_types()
// Linestring
test_mixed_identical_result
<
- bg::model::linestring<Point1>,
- bg::model::linestring<Point2>
+ bg::model::linestring<Point1>,
+ bg::model::linestring<Point2>
>
("LINESTRING(1 1,2 2)");
// Ring
test_mixed_identical_result
<
- bg::model::ring<Point1>,
- bg::model::ring<Point2>
+ bg::model::ring<Point1>,
+ bg::model::ring<Point2>
>
("POLYGON((1 1,2 2,3 0,1 1))");
test_mixed_reversible_result
<
- bg::model::ring<Point1, true>,
- bg::model::ring<Point2, false>
+ bg::model::ring<Point1, true>,
+ bg::model::ring<Point2, false>
>
(
- "POLYGON((1 1,2 2,3 0,1 1))",
+ "POLYGON((1 1,2 2,3 0,1 1))",
"POLYGON((1 1,3 0,2 2,1 1))"
);
test_mixed
<
- bg::model::ring<Point1, true, true>,
- bg::model::ring<Point2, true, false>
+ bg::model::ring<Point1, true, true>,
+ bg::model::ring<Point2, true, false>
>
(
- "POLYGON((1 1,2 2,3 0,1 1))",
- "POLYGON((1 1,2 2,3 0))"
+ "POLYGON((1 1,2 2,3 0,1 1))",
+ "POLYGON((1 1,2 2,3 0))",
+ 3
);
test_mixed
<
- bg::model::ring<Point1, true, false>,
- bg::model::ring<Point2, true, true>
+ bg::model::ring<Point1, true, false>,
+ bg::model::ring<Point2, true, true>
>
(
- "POLYGON((1 1,2 2,3 0))",
- "POLYGON((1 1,2 2,3 0,1 1))"
+ "POLYGON((1 1,2 2,3 0))",
+ "POLYGON((1 1,2 2,3 0,1 1))",
+ 4
);
// Polygon
test_mixed_reversible_result
<
- bg::model::polygon<Point1, true>,
- bg::model::polygon<Point2, false>
+ bg::model::polygon<Point1, true>,
+ bg::model::polygon<Point2, false>
>
(
- "POLYGON((0 0,0 5,5 5,5 0,0 0),(1 1,3 2,2 4,1 1))",
+ "POLYGON((0 0,0 5,5 5,5 0,0 0),(1 1,3 2,2 4,1 1))",
"POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 4,3 2,1 1))"
);
test_mixed
<
bg::model::polygon<Point1>,
- bg::model::polygon<Point2, false, false>
+ bg::model::polygon<Point2, false, false>
>
(
- "POLYGON((0 0,0 5,5 5,5 0,0 0),(1 1,3 2,2 4,1 1))",
- "POLYGON((0 0,5 0,5 5,0 5),(1 1,2 4,3 2))"
+ "POLYGON((0 0,0 5,5 5,5 0,0 0),(1 1,3 2,2 4,1 1))",
+ "POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 4,3 2,1 1))",
+ 7 // WKT is closed, polygon is open
);
// (polygon uses ring, so other tests omitted here)
@@ -110,134 +113,145 @@ void test_mixed_point_types()
// ring <-> polygon
test_mixed_identical_result
<
- bg::model::polygon<Point1>,
- bg::model::ring<Point2>
+ bg::model::polygon<Point1>,
+ bg::model::ring<Point2>
>
("POLYGON((1 1,2 2,3 0,1 1))");
test_mixed_reversible_result
<
- bg::model::polygon<Point1, true>,
- bg::model::ring<Point2, false>
+ bg::model::polygon<Point1, true>,
+ bg::model::ring<Point2, false>
>
- (
- "POLYGON((1 1,2 2,3 0,1 1))",
+ (
+ "POLYGON((1 1,2 2,3 0,1 1))",
"POLYGON((1 1,3 0,2 2,1 1))"
);
// Any hole will be omitted going from polygon to ring
test_mixed
<
- bg::model::polygon<Point1>,
- bg::model::ring<Point2>
+ bg::model::polygon<Point1>,
+ bg::model::ring<Point2>
>
(
- "POLYGON((0 0,0 5,5 5,5 0,0 0),(1 1,3 2,2 4,1 1))",
- "POLYGON((0 0,0 5,5 5,5 0,0 0))"
+ "POLYGON((0 0,0 5,5 5,5 0,0 0),(1 1,3 2,2 4,1 1))",
+ "POLYGON((0 0,0 5,5 5,5 0,0 0))",
+ 5
);
// point -> box
test_mixed
<
- Point1,
- bg::model::box<Point2>
+ Point1,
+ bg::model::box<Point2>
>
(
- "POINT(0 0)",
- "POLYGON((0 0,0 0,0 0,0 0,0 0))"
+ "POINT(0 0)",
+ "POLYGON((0 0,0 0,0 0,0 0,0 0))",
+ 4
);
// segment -> line
test_mixed
<
bg::model::segment<Point1>,
- bg::model::linestring<Point2>
+ bg::model::linestring<Point2>
>
(
- "LINESTRING(0 0,1 1)",
- "LINESTRING(0 0,1 1)"
+ "LINESTRING(0 0,1 1)",
+ "LINESTRING(0 0,1 1)",
+ 2
);
// box -> ring ( <- is NYI)
test_mixed
<
- bg::model::box<Point1>,
- bg::model::ring<Point2>
+ bg::model::box<Point1>,
+ bg::model::ring<Point2>
>
(
- "BOX(0 0,2 2)",
- "POLYGON((0 0,0 2,2 2,2 0,0 0))"
+ "BOX(0 0,2 2)",
+ "POLYGON((0 0,0 2,2 2,2 0,0 0))",
+ 5
);
test_mixed
<
- bg::model::box<Point1>,
- bg::model::ring<Point2, false>
+ bg::model::box<Point1>,
+ bg::model::ring<Point2, false>
>
(
- "BOX(0 0,2 2)",
- "POLYGON((0 0,2 0,2 2,0 2,0 0))"
+ "BOX(0 0,2 2)",
+ "POLYGON((0 0,2 0,2 2,0 2,0 0))",
+ 5
);
test_mixed
<
- bg::model::box<Point1>,
- bg::model::ring<Point2, true, false>
+ bg::model::box<Point1>,
+ bg::model::ring<Point2, true, false>
>
(
- "BOX(0 0,2 2)",
- "POLYGON((0 0,0 2,2 2,2 0))"
+ "BOX(0 0,2 2)",
+ "POLYGON((0 0,0 2,2 2,2 0))",
+ 4
);
test_mixed
<
- bg::model::box<Point1>,
- bg::model::ring<Point2, false, false>
+ bg::model::box<Point1>,
+ bg::model::ring<Point2, false, false>
>
(
- "BOX(0 0,2 2)",
- "POLYGON((0 0,2 0,2 2,0 2))"
+ "BOX(0 0,2 2)",
+ "POLYGON((0 0,2 0,2 2,0 2))",
+ 4
);
// box -> polygon ( <- is NYI)
test_mixed
<
- bg::model::box<Point1>,
- bg::model::polygon<Point2>
+ bg::model::box<Point1>,
+ bg::model::polygon<Point2>
>
(
- "BOX(0 0,2 2)",
- "POLYGON((0 0,0 2,2 2,2 0,0 0))"
+ "BOX(0 0,2 2)",
+ "POLYGON((0 0,0 2,2 2,2 0,0 0))",
+ 5
);
test_mixed
<
- bg::model::box<Point1>,
- bg::model::polygon<Point2, false>
+ bg::model::box<Point1>,
+ bg::model::polygon<Point2, false>
>
(
- "BOX(0 0,2 2)",
- "POLYGON((0 0,2 0,2 2,0 2,0 0))"
+ "BOX(0 0,2 2)",
+ "POLYGON((0 0,2 0,2 2,0 2,0 0))",
+ 5
);
test_mixed
<
- bg::model::box<Point1>,
- bg::model::polygon<Point2, true, false>
+ bg::model::box<Point1>,
+ bg::model::polygon<Point2, true, false>
>
(
- "BOX(0 0,2 2)",
- "POLYGON((0 0,0 2,2 2,2 0))"
+ "BOX(0 0,2 2)",
+ "POLYGON((0 0,0 2,2 2,2 0,0 0))",
+ 4 // WKT is closed, polygon is open
);
test_mixed
<
- bg::model::box<Point1>,
- bg::model::polygon<Point2, false, false>
+ bg::model::box<Point1>,
+ bg::model::polygon<Point2, false, false>
>
(
- "BOX(0 0,2 2)",
- "POLYGON((0 0,2 0,2 2,0 2))"
+ "BOX(0 0,2 2)",
+ "POLYGON((0 0,2 0,2 2,0 2,0 0))",
+ 4 // WKT is closed, polygon is open
);
}
@@ -249,7 +263,7 @@ void test_mixed_point_types_3d()
test_mixed_identical_result
<
- bg::model::segment<Point1>,
+ bg::model::segment<Point1>,
bg::model::segment<Point2>
>
("LINESTRING(1 2 3,4 5 6)");
@@ -257,8 +271,8 @@ void test_mixed_point_types_3d()
// Linestring
test_mixed_identical_result
<
- bg::model::linestring<Point1>,
- bg::model::linestring<Point2>
+ bg::model::linestring<Point1>,
+ bg::model::linestring<Point2>
>
("LINESTRING(1 2 3,4 5 6,7 8 9)");
@@ -266,11 +280,12 @@ void test_mixed_point_types_3d()
test_mixed
<
bg::model::segment<Point1>,
- bg::model::linestring<Point2>
+ bg::model::linestring<Point2>
>
(
- "LINESTRING(1 2 3,4 5 6)",
- "LINESTRING(1 2 3,4 5 6)"
+ "LINESTRING(1 2 3,4 5 6)",
+ "LINESTRING(1 2 3,4 5 6)",
+ 2
);
}
diff --git a/libs/geometry/test/algorithms/convert.vcproj b/libs/geometry/test/algorithms/convert.vcproj
deleted file mode 100644
index c75bf0ee5e..0000000000
--- a/libs/geometry/test/algorithms/convert.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="convert"
- ProjectGUID="{FABF1AA7-F695-49F8-92F6-AB6C4B0C088A}"
- RootNamespace="convert"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\convert"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\convert"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\convert.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/convex_hull.cpp b/libs/geometry/test/algorithms/convex_hull.cpp
index f268aa90e3..dab96ebd8a 100644
--- a/libs/geometry/test/algorithms/convex_hull.cpp
+++ b/libs/geometry/test/algorithms/convex_hull.cpp
@@ -45,7 +45,7 @@ void test_all()
12, 8, 5.245);
test_geometry<bg::model::box<P> >("box(0 0,2 2)", 4, 5, 4);
-
+
test_empty_input<bg::model::linestring<P> >();
test_empty_input<bg::model::ring<P> >();
test_empty_input<bg::model::polygon<P> >();
diff --git a/libs/geometry/test/algorithms/convex_hull.vcproj b/libs/geometry/test/algorithms/convex_hull.vcproj
deleted file mode 100644
index 365f60c0ff..0000000000
--- a/libs/geometry/test/algorithms/convex_hull.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="convex_hull"
- ProjectGUID="{0AFF7A85-63A7-4178-92A5-CC692B09F5B9}"
- RootNamespace="convex_hull"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\convex_hull"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\convex_hull"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\convex_hull.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/correct.cpp b/libs/geometry/test/algorithms/correct.cpp
index b929286593..bd5e7f7bde 100644
--- a/libs/geometry/test/algorithms/correct.cpp
+++ b/libs/geometry/test/algorithms/correct.cpp
@@ -14,37 +14,18 @@
#include <sstream>
-#include <geometry_test_common.hpp>
+#include <algorithms/test_correct.hpp>
-#include <boost/geometry/algorithms/correct.hpp>
#include <boost/geometry/strategies/strategies.hpp>
#include <boost/geometry/io/dsv/write.hpp>
-#include <boost/geometry/io/wkt/read.hpp>
-#include <boost/geometry/io/wkt/write.hpp>
-
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/box.hpp>
#include <boost/geometry/geometries/ring.hpp>
#include <boost/geometry/geometries/polygon.hpp>
-template <typename Geometry>
-void test_geometry(std::string const& wkt, std::string const& expected)
-{
- Geometry geometry;
-
- bg::read_wkt(wkt, geometry);
- bg::correct(geometry);
-
- std::ostringstream out;
- out << bg::wkt(geometry);
-
- BOOST_CHECK_EQUAL(out.str(), expected);
-}
-
-
// Note: 3D/box test cannot be done using WKT because:
// -> wkt-box does not exist
// -> so it is converted to a ring
diff --git a/libs/geometry/test/algorithms/correct.vcproj b/libs/geometry/test/algorithms/correct.vcproj
deleted file mode 100644
index e36945a2d0..0000000000
--- a/libs/geometry/test/algorithms/correct.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="correct"
- ProjectGUID="{71582BDA-D4DF-400D-8630-378BE102C038}"
- RootNamespace="correct"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\correct"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\correct"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\correct.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/covered_by.cpp b/libs/geometry/test/algorithms/covered_by.cpp
index 32683cbe75..b4a00ea89f 100644
--- a/libs/geometry/test/algorithms/covered_by.cpp
+++ b/libs/geometry/test/algorithms/covered_by.cpp
@@ -1,6 +1,8 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
-//
+
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
// 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)
@@ -37,6 +39,22 @@ void test_all()
*/
+ typedef bg::model::segment<P> seg;
+ test_geometry<P, seg>("POINT(1 1)", "LINESTRING(0 0, 2 2)", true);
+ test_geometry<P, seg>("POINT(0 0)", "LINESTRING(0 0, 1 1)", true);
+ test_geometry<P, seg>("POINT(1 0)", "LINESTRING(0 0, 1 1)", false);
+
+ // linestrings
+ typedef bg::model::linestring<P> ls;
+ test_geometry<P, ls>("POINT(0 0)", "LINESTRING(0 0,1 1,2 2)", true);
+ test_geometry<P, ls>("POINT(3 3)", "LINESTRING(0 0,1 1,2 2)", false);
+ test_geometry<P, ls>("POINT(1 1)", "LINESTRING(0 0,2 2,3 3)", true);
+
+ // multi_linestrings
+ typedef bg::model::multi_linestring<ls> mls;
+ test_geometry<P, mls>("POINT(0 0)", "MULTILINESTRING((0 0,1 1,2 2),(0 0,0 1))", true);
+ test_geometry<P, mls>("POINT(0 0)", "MULTILINESTRING((0 0,1 1,2 2),(0 0,0 1),(0 0,1 0))", true);
+
typedef bg::model::box<P> box_type;
test_geometry<P, box_type>("POINT(1 1)", "BOX(0 0,2 2)", true);
@@ -52,22 +70,6 @@ void test_all()
test_geometry<box_type, box_type>("BOX(1 1,3 3)", "BOX(0 0,3 3)", true);
test_geometry<box_type, box_type>("BOX(1 2,3 3)", "BOX(0 0,3 3)", true);
test_geometry<box_type, box_type>("BOX(1 1,4 3)", "BOX(0 0,3 3)", false);
-
-
- /*
- test_within_code<P, box_type>("POINT(1 1)", "BOX(0 0,2 2)", 1);
- test_within_code<P, box_type>("POINT(1 0)", "BOX(0 0,2 2)", 0);
- test_within_code<P, box_type>("POINT(0 1)", "BOX(0 0,2 2)", 0);
- test_within_code<P, box_type>("POINT(0 3)", "BOX(0 0,2 2)", -1);
- test_within_code<P, box_type>("POINT(3 3)", "BOX(0 0,2 2)", -1);
-
- test_within_code<box_type, box_type>("BOX(1 1,2 2)", "BOX(0 0,3 3)", 1);
- test_within_code<box_type, box_type>("BOX(0 1,2 2)", "BOX(0 0,3 3)", 0);
- test_within_code<box_type, box_type>("BOX(1 0,2 2)", "BOX(0 0,3 3)", 0);
- test_within_code<box_type, box_type>("BOX(1 1,2 3)", "BOX(0 0,3 3)", 0);
- test_within_code<box_type, box_type>("BOX(1 1,3 2)", "BOX(0 0,3 3)", 0);
- test_within_code<box_type, box_type>("BOX(1 1,3 4)", "BOX(0 0,3 3)", -1);
- */
}
@@ -90,7 +92,8 @@ void test_mixed_of()
typedef boost::geometry::model::box<P1> box_type1;
typedef boost::geometry::model::box<P2> box_type2;
- polygon_type1 poly1, poly2;
+ polygon_type1 poly1;
+ polygon_type2 poly2;
boost::geometry::read_wkt("POLYGON((0 0,0 5,5 5,5 0,0 0))", poly1);
boost::geometry::read_wkt("POLYGON((0 0,0 5,5 5,5 0,0 0))", poly2);
diff --git a/libs/geometry/test/algorithms/covered_by.vcproj b/libs/geometry/test/algorithms/covered_by.vcproj
deleted file mode 100644
index 13f41e9300..0000000000
--- a/libs/geometry/test/algorithms/covered_by.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="covered_by"
- ProjectGUID="{5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}"
- RootNamespace="covered_by"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\covered_by"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\covered_by"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\covered_by.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/crosses.cpp b/libs/geometry/test/algorithms/crosses.cpp
new file mode 100644
index 0000000000..1037910185
--- /dev/null
+++ b/libs/geometry/test/algorithms/crosses.cpp
@@ -0,0 +1,97 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#include <algorithms/test_crosses.hpp>
+
+template <typename P>
+void test_pl()
+{
+ /*typedef bg::model::multi_point<P> mpt;
+ typedef bg::model::linestring<P> ls;
+
+ // not implemented yet
+ test_geometry<mpt, ls>("MULTIPOINT(0 0,1 1)", "LINESTRING(0 0,1 0,3 3)", true);
+ test_geometry<mpt, ls>("MULTIPOINT(0 0,1 1)", "LINESTRING(0 0,1 1,3 3)", false);*/
+}
+
+template <typename P>
+void test_pa()
+{
+ /*typedef bg::model::multi_point<P> mpt;
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::multi_polygon<poly> mpoly;
+
+ // not implemented yet
+ test_geometry<mpt, poly>("MULTIPOINT(0 0,6 6)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", true);
+ test_geometry<mpt, poly>("MULTIPOINT(0 0,1 1)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", false);*/
+}
+
+template <typename P>
+void test_ll()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,4 4)", "LINESTRING(0 1,2 1,3 1)", true);
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2)", "LINESTRING(0 1,2 1)", true);
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,4 4)", "LINESTRING(0 1,1 1,2 2,3 2)", false);
+
+ test_geometry<ls, mls>("LINESTRING(0 0,2 2,4 4)", "MULTILINESTRING((0 1,4 1),(0 2,4 2))", true);
+ test_geometry<mls, ls>("MULTILINESTRING((0 1,4 1),(0 2,4 2))", "LINESTRING(0 0,2 2,4 4)", true);
+
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,2 2,4 4),(3 0,3 4))", "MULTILINESTRING((0 1,4 1),(0 2,4 2))", true);
+}
+
+template <typename P>
+void test_la()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+ typedef bg::model::ring<P> ring;
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::multi_polygon<poly> mpoly;
+
+ test_geometry<ls, ring>("LINESTRING(0 0, 10 10)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", true);
+ test_geometry<ls, poly>("LINESTRING(0 0, 10 10)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", true);
+ test_geometry<ls, mpoly>("LINESTRING(0 0, 10 10)", "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)))", true);
+
+ test_geometry<ls, poly>("LINESTRING(0 0, 10 0)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", false);
+ test_geometry<ls, poly>("LINESTRING(1 1, 5 5)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", false);
+
+ test_geometry<mls, ring>("MULTILINESTRING((1 1, 5 5),(6 6,7 7))", "POLYGON((0 0,0 5,5 5,5 0,0 0))", true);
+ test_geometry<mls, poly>("MULTILINESTRING((1 1, 5 5),(6 6,7 7))", "POLYGON((0 0,0 5,5 5,5 0,0 0))", true);
+ test_geometry<mls, mpoly>("MULTILINESTRING((1 1, 5 5),(6 6,7 7))", "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)))", true);
+}
+
+template <typename P>
+void test_2d()
+{
+ test_pl<P>();
+ test_pa<P>();
+ test_ll<P>();
+ test_la<P>();
+}
+
+int test_main( int , char* [] )
+{
+ test_2d<bg::model::d2::point_xy<int> >();
+ test_2d<bg::model::d2::point_xy<double> >();
+
+#if defined(HAVE_TTMATH)
+ test_2d<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ //test_3d<bg::model::point<double, 3, bg::cs::cartesian> >();
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/detail/detail.sln b/libs/geometry/test/algorithms/detail/detail.sln
deleted file mode 100644
index 394921ecca..0000000000
--- a/libs/geometry/test/algorithms/detail/detail.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "partition", "partition.vcproj", "{5EF21715-DB87-41AB-9D0A-59ED04F316A1}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {5EF21715-DB87-41AB-9D0A-59ED04F316A1}.Debug|Win32.ActiveCfg = Debug|Win32
- {5EF21715-DB87-41AB-9D0A-59ED04F316A1}.Debug|Win32.Build.0 = Debug|Win32
- {5EF21715-DB87-41AB-9D0A-59ED04F316A1}.Release|Win32.ActiveCfg = Release|Win32
- {5EF21715-DB87-41AB-9D0A-59ED04F316A1}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/algorithms/detail/get_left_turns.cpp b/libs/geometry/test/algorithms/detail/get_left_turns.cpp
new file mode 100644
index 0000000000..d420b0c910
--- /dev/null
+++ b/libs/geometry/test/algorithms/detail/get_left_turns.cpp
@@ -0,0 +1,321 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+//
+// Copyright (c) 2012-2014 Barend Gehrels, 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)
+
+#include <geometry_test_common.hpp>
+
+#include <boost/algorithm/string/trim.hpp>
+#include <boost/assign/list_of.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/algorithms/detail/get_left_turns.hpp>
+
+#if defined(TEST_WITH_SVG)
+# include <boost/geometry/io/svg/svg_mapper.hpp>
+#endif
+
+
+NOTE: this unit test is out of date.
+get_left_turns is used by buffer and might be used in the future by solving self-tangencies in overlays.
+it is currently being changed by buffer.
+
+namespace bglt = boost::geometry::detail::left_turns;
+
+#if defined(TEST_WITH_SVG)
+template <typename Point>
+inline Point further_than(Point const& p, Point const& origin, int mul, int div)
+{
+ typedef Point vector_type;
+
+ vector_type v = p;
+ bg::subtract_point(v, origin);
+
+ bg::divide_value(v, div);
+ bg::multiply_value(v, mul);
+ Point result = origin;
+ bg::add_point(result, v);
+ return result;
+}
+
+inline std::string get_color(int index)
+{
+ switch (index)
+ {
+ case 0 : return "rgb(0,192,0)";
+ case 1 : return "rgb(0,0,255)";
+ case 2 : return "rgb(255,0,0)";
+ case 3 : return "rgb(255,255,0)";
+ }
+ return "rgb(128,128,128)";
+}
+#endif
+
+
+template <typename Point>
+void test_one(std::string const& caseid,
+ Point const& p,
+ std::vector<bglt::turn_angle_info<Point> > const& angles,
+ std::string const& expected_sorted_indices,
+ std::string const& expected_left_indices)
+{
+ typedef Point vector_type;
+
+ std::vector<bglt::angle_info<Point> > sorted;
+ for (typename std::vector<bglt::turn_angle_info<Point> >::const_iterator it =
+ angles.begin(); it != angles.end(); ++it)
+ {
+ for (int i = 0; i < 2; i++)
+ {
+ bglt::angle_info<Point> info(it->seg_id, i == 0, it->points[i]);
+ sorted.push_back(info);
+ }
+ }
+
+ // Sort on angle
+ std::sort(sorted.begin(), sorted.end(), bglt::angle_less<Point>(p));
+
+ // Block all turns on the right side of any turn
+ bglt::block_turns_on_right_sides(angles, sorted);
+
+ // Check the sorting
+ {
+ std::ostringstream out;
+ out << std::boolalpha;
+ for (typename std::vector<bglt::angle_info<Point> >::const_iterator it =
+ sorted.begin(); it != sorted.end(); ++it)
+ {
+ out << " " << it->seg_id.segment_index
+ << "-" << it->incoming;
+ }
+ std::string detected = boost::trim_copy(out.str());
+ BOOST_CHECK_EQUAL(expected_sorted_indices, detected);
+ }
+
+
+ // Check outgoing lines
+ std::vector<bglt::left_turn> seg_ids;
+ bglt::get_left_turns(sorted, p, seg_ids);
+ {
+ std::ostringstream out;
+ out << std::boolalpha;
+ for (std::vector<bglt::left_turn>::const_iterator it =
+ seg_ids.begin(); it != seg_ids.end(); ++it)
+ {
+ out
+ << " " << it->from.segment_index
+ << "->" << it->to.segment_index
+ ;
+ }
+ std::string detected = boost::trim_copy(out.str());
+ BOOST_CHECK_EQUAL(expected_left_indices, detected);
+ }
+
+#if defined(TEST_WITH_SVG)
+ {
+ std::ostringstream filename;
+ filename << "get_left_turns_" << caseid
+ << "_" << string_from_type<typename bg::coordinate_type<Point>::type>::name()
+ << ".svg";
+
+ std::ofstream svg(filename.str().c_str());
+
+ bg::svg_mapper<Point> mapper(svg, 500, 500);
+ mapper.add(p);
+ for (typename std::vector<bglt::turn_angle_info<Point> >::const_iterator it =
+ angles.begin(); it != angles.end(); ++it)
+ {
+ // Add a point further then it->to_point, just for the mapping
+ for (int i = 0; i < 2; i++)
+ {
+ mapper.add(further_than(it->points[i], p, 12, 10));
+ }
+ }
+
+ int color_index = 0;
+ typedef bg::model::referring_segment<Point const> segment_type;
+ for (typename std::vector<bglt::turn_angle_info<Point> >::const_iterator it =
+ angles.begin(); it != angles.end(); ++it, color_index++)
+ {
+ for (int i = 0; i < 2; i++)
+ {
+ std::string style = "opacity:0.5;stroke-width:1;stroke:rgb(0,0,0);fill:" + get_color(color_index);
+
+ bool const incoming = i == 0;
+ Point const& pf = incoming ? it->points[i] : p;
+ Point const& pt = incoming ? p : it->points[i];
+ vector_type v = pt;
+ bg::subtract_point(v, pf);
+
+ bg::divide_value(v, 10.0);
+
+ // Generate perpendicular vector to right-side
+ vector_type perpendicular;
+ bg::set<0>(perpendicular, bg::get<1>(v));
+ bg::set<1>(perpendicular, -bg::get<0>(v));
+
+ bg::model::ring<Point> ring;
+ ring.push_back(pf);
+ ring.push_back(pt);
+
+ // Extra point at 9/10
+ {
+ Point pe = pt;
+ bg::add_point(pe, perpendicular);
+ ring.push_back(pe);
+ }
+ {
+ Point pe = pf;
+ bg::add_point(pe, perpendicular);
+ ring.push_back(pe);
+ }
+ ring.push_back(pf);
+
+ mapper.map(ring, style);
+
+ segment_type s(pf, pt);
+ mapper.map(s, "opacity:0.9;stroke-width:4;stroke:rgb(0,0,0);");
+ }
+ }
+
+ // Output angles for left-turns
+ for (std::vector<bglt::left_turn>::const_iterator ltit =
+ seg_ids.begin(); ltit != seg_ids.end(); ++ltit)
+ {
+ for (typename std::vector<bglt::angle_info<Point> >::const_iterator sit =
+ sorted.begin(); sit != sorted.end(); ++sit, color_index++)
+ {
+ Point pf, pt;
+ int factor = 0;
+ if (sit->seg_id == ltit->from && sit->incoming)
+ {
+ pf = sit->point;
+ pt = p;
+ factor = -1; // left side
+ }
+ else if (sit->seg_id == ltit->to && ! sit->incoming)
+ {
+ pf = p;
+ pt = sit->point;
+ factor = -1; // left side
+ }
+ if (factor != 0)
+ {
+ vector_type v = pt;
+ bg::subtract_point(v, pf);
+ bg::divide_value(v, 10.0);
+
+ // Generate perpendicular vector to right-side
+ vector_type perpendicular;
+ bg::set<0>(perpendicular, factor * bg::get<1>(v));
+ bg::set<1>(perpendicular, -factor * bg::get<0>(v));
+
+ bg::add_point(pf, v);
+ bg::subtract_point(pt, v);
+
+ bg::add_point(pf, perpendicular);
+ bg::add_point(pt, perpendicular);
+
+ segment_type s(pf, pt);
+ mapper.map(s, "opacity:0.9;stroke-width:4;stroke:rgb(255,0,0);");
+ }
+ }
+ }
+
+ // Output texts with info about sorted/blocked
+ int index = 0;
+ for (typename std::vector<bglt::angle_info<Point> >::const_iterator it =
+ sorted.begin(); it != sorted.end(); ++it, ++index)
+ {
+ std::ostringstream out;
+ out << std::boolalpha;
+ out << " seg:" << it->seg_id.segment_index
+ << " " << (it->incoming ? "in" : "out")
+ << " idx:" << index
+ << (it->blocked ? " blocked" : "")
+ ;
+ mapper.text(further_than(it->point, p, 11, 10), out.str(), "fill:rgb(0,0,0);font-family='Verdana'");
+ }
+
+ mapper.map(p, "fill:rgb(255,0,0)");
+
+ }
+
+#endif
+
+}
+
+
+template <typename P>
+void test_all()
+{
+ using bglt::turn_angle_info;
+
+ test_one<P>("cross",
+ bg::make<P>(50, 50), // ip
+ boost::assign::list_of
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 1), bg::make<P>(100, 100), bg::make<P>(0, 0)))
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 2), bg::make<P>(100, 0), bg::make<P>(0, 100)))
+ , "1-true 2-true 1-false 2-false"
+ , "2->1"
+ );
+
+ test_one<P>("occupied",
+ bg::make<P>(50, 50), // ip
+ boost::assign::list_of
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 1), bg::make<P>(100, 100), bg::make<P>(0, 0)))
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 2), bg::make<P>(100, 0), bg::make<P>(0, 100)))
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 3), bg::make<P>(0, 30), bg::make<P>(100, 70)))
+ , "1-true 3-false 2-true 1-false 3-true 2-false"
+ , ""
+ );
+
+ test_one<P>("uu",
+ bg::make<P>(50, 50), // ip
+ boost::assign::list_of
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 1), bg::make<P>(0, 0), bg::make<P>(100, 0)))
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 2), bg::make<P>(100, 100), bg::make<P>(0, 100)))
+ , "2-true 1-false 1-true 2-false"
+ , "2->1 1->2"
+ );
+
+ test_one<P>("uu2",
+ bg::make<P>(50, 50), // ip
+ boost::assign::list_of
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 1), bg::make<P>(0, 0), bg::make<P>(100, 0)))
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 2), bg::make<P>(100, 100), bg::make<P>(0, 100)))
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 3), bg::make<P>(0, 50), bg::make<P>(100, 50)))
+ , "2-true 3-false 1-false 1-true 3-true 2-false"
+ , "2->3 3->2"
+ );
+
+ test_one<P>("uu3",
+ bg::make<P>(50, 50), // ip
+ boost::assign::list_of
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 1), bg::make<P>(0, 0), bg::make<P>(100, 0)))
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 2), bg::make<P>(100, 100), bg::make<P>(0, 100)))
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 3), bg::make<P>(50, 0), bg::make<P>(50, 100)))
+ , "3-false 2-true 1-false 3-true 1-true 2-false"
+ , "1->2"
+ );
+
+ test_one<P>("longer",
+ bg::make<P>(50, 50), // ip
+ boost::assign::list_of
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 1), bg::make<P>(100, 100), bg::make<P>(0, 0)))
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 2), bg::make<P>(100, 0), bg::make<P>(0, 100)))
+ (turn_angle_info<P>(bg::segment_identifier(0, -1, -1, 3), bg::make<P>(90, 10), bg::make<P>(10, 10)))
+ , "1-true 2-true 3-true 1-false 3-false 2-false"
+ , "3->1"
+ );
+}
+
+int test_main( int , char* [] )
+{
+ test_all<bg::model::d2::point_xy<int> >();
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/detail/partition.cpp b/libs/geometry/test/algorithms/detail/partition.cpp
index 74efb15302..90cbe137ff 100644
--- a/libs/geometry/test/algorithms/detail/partition.cpp
+++ b/libs/geometry/test/algorithms/detail/partition.cpp
@@ -21,7 +21,7 @@
#include <boost/geometry/multi/io/wkt/wkt.hpp>
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
#include <boost/random/linear_congruential.hpp>
@@ -89,13 +89,47 @@ struct box_visitor
}
};
+struct point_in_box_visitor
+{
+ int count;
+ point_in_box_visitor()
+ : count(0)
+ {}
+
+ template <typename Point, typename BoxItem>
+ inline void apply(Point const& point, BoxItem const& box_item)
+ {
+ if (bg::within(point, box_item.box))
+ {
+ count++;
+ }
+ }
+};
+
+struct reversed_point_in_box_visitor
+{
+ int count;
+ reversed_point_in_box_visitor()
+ : count(0)
+ {}
+
+ template <typename BoxItem, typename Point>
+ inline void apply(BoxItem const& box_item, Point const& point)
+ {
+ if (bg::within(point, box_item.box))
+ {
+ count++;
+ }
+ }
+};
+
template <typename Box>
void test_boxes(std::string const& wkt_box_list, double expected_area, int expected_count)
{
std::vector<std::string> wkt_boxes;
-
+
boost::split(wkt_boxes, wkt_box_list, boost::is_any_of(";"), boost::token_compress_on);
typedef box_item<Box> sample;
@@ -119,7 +153,7 @@ void test_boxes(std::string const& wkt_box_list, double expected_area, int expec
-struct point_item
+struct point_item
{
point_item()
: id(0)
@@ -156,7 +190,7 @@ struct point_visitor
{
int count;
- point_visitor()
+ point_visitor()
: count(0)
{}
@@ -179,10 +213,10 @@ void test_points(std::string const& wkt1, std::string const& wkt2, int expected_
bg::read_wkt(wkt2, mp2);
int id = 1;
- BOOST_FOREACH(point_item& p, mp1)
+ BOOST_FOREACH(point_item& p, mp1)
{ p.id = id++; }
id = 1;
- BOOST_FOREACH(point_item& p, mp2)
+ BOOST_FOREACH(point_item& p, mp2)
{ p.id = id++; }
point_visitor visitor;
@@ -203,18 +237,18 @@ void test_all()
test_boxes<box>(
// 1 2 3 4 5 6 7
- "box(0 0,1 1); box(0 0,2 2); box(9 9,10 10); box(8 8,9 9); box(4 4,6 6); box(2 4,6 8); box(7 1,8 2)",
- 5, // Area(Intersection(1,2)) + A(I(5,6))
+ "box(0 0,1 1); box(0 0,2 2); box(9 9,10 10); box(8 8,9 9); box(4 4,6 6); box(2 4,6 8); box(7 1,8 2)",
+ 5, // Area(Intersection(1,2)) + A(I(5,6))
3);
test_boxes<box>(
- "box(0 0,10 10); box(4 4,6 6); box(3 3,7 7)",
+ "box(0 0,10 10); box(4 4,6 6); box(3 3,7 7)",
4 + 16 + 4, // A(I(1,2)) + A(I(1,3)) + A(I(2,3))
3);
test_boxes<box>(
- "box(0 2,10 3); box(3 1,4 5); box(7 1,8 5)",
- 1 + 1, // A(I(1,2)) + A(I(1,3))
+ "box(0 2,10 3); box(3 1,4 5); box(7 1,8 5)",
+ 1 + 1, // A(I(1,2)) + A(I(1,3))
2);
test_points("multipoint((1 1))", "multipoint((1 1))", 1);
@@ -224,6 +258,7 @@ void test_all()
//------------------- higher volumes
+#if defined(TEST_WITH_SVG)
template <typename SvgMapper>
struct svg_visitor
{
@@ -234,7 +269,7 @@ struct svg_visitor
{}
template <typename Box>
- inline void apply(Box const& box, int level)
+ inline void apply(Box const& box, int level)
{
/*
std::string color("rgb(64,64,64)");
@@ -257,8 +292,7 @@ struct svg_visitor
}
};
-
-
+#endif
template <typename Collection>
@@ -320,7 +354,7 @@ void test_many_points(int seed, int size, int count)
bg::svg_mapper<point_item> mapper(svg, 800, 800);
{
- point_item p;
+ point_item p;
p.x = -1; p.y = -1; mapper.add(p);
p.x = size + 1; p.y = size + 1; mapper.add(p);
}
@@ -335,7 +369,9 @@ void test_many_points(int seed, int size, int count)
point_visitor visitor;
bg::partition
<
- bg::model::box<point_item>, get_point, ovelaps_point,
+ bg::model::box<point_item>,
+ get_point, ovelaps_point,
+ get_point, ovelaps_point,
box_visitor_type
>::apply(mp1, mp2, visitor, 2, box_visitor);
@@ -384,8 +420,6 @@ void fill_boxes(Collection& collection, int seed, int size, int count)
}
}
-
-
void test_many_boxes(int seed, int size, int count)
{
typedef bg::model::box<point_item> box_type;
@@ -422,7 +456,7 @@ void test_many_boxes(int seed, int size, int count)
bg::svg_mapper<point_item> mapper(svg, 800, 800);
{
- point_item p;
+ point_item p;
p.x = -1; p.y = -1; mapper.add(p);
p.x = size + 1; p.y = size + 1; mapper.add(p);
}
@@ -432,27 +466,170 @@ void test_many_boxes(int seed, int size, int count)
mapper.map(item.box, "opacity:0.6;fill:rgb(50,50,210);stroke:rgb(0,0,0);stroke-width:1");
}
- typedef svg_visitor<bg::svg_mapper<point_item> > partition_visitor_type;
- partition_visitor_type partition_visitor(mapper);
+ typedef svg_visitor<bg::svg_mapper<point_item> > partition_box_visitor_type;
+ partition_box_visitor_type partition_box_visitor(mapper);
+#else
+ typedef bg::visit_no_policy partition_box_visitor_type;
+ partition_box_visitor_type partition_box_visitor;
+#endif
box_visitor<box_type> visitor;
bg::partition
<
- box_type, get_box, ovelaps_box,
- partition_visitor_type
- >::apply(boxes, visitor, 2, partition_visitor);
+ box_type,
+ get_box, ovelaps_box,
+ get_box, ovelaps_box,
+ partition_box_visitor_type
+ >::apply(boxes, visitor, 2, partition_box_visitor);
BOOST_CHECK_EQUAL(visitor.count, expected_count);
BOOST_CHECK_CLOSE(visitor.area, expected_area, 0.001);
+}
+
+void test_two_collections(int seed1, int seed2, int size, int count)
+{
+ typedef bg::model::box<point_item> box_type;
+ std::vector<box_item<box_type> > boxes1, boxes2;
+ fill_boxes(boxes1, seed1, size, count);
+ fill_boxes(boxes2, seed2, size, count);
+
+ // Get expectations in quadratic loop
+ int expected_count = 0;
+ double expected_area = 0.0;
+ BOOST_FOREACH(box_item<box_type> const& item1, boxes1)
+ {
+ BOOST_FOREACH(box_item<box_type> const& item2, boxes2)
+ {
+ if (bg::intersects(item1.box, item2.box))
+ {
+ box_type b;
+ bg::intersection(item1.box, item2.box, b);
+ expected_area += bg::area(b);
+ expected_count++;
+ }
+ }
+ }
+
+
+#if defined(TEST_WITH_SVG)
+ std::ostringstream filename;
+ filename << "partition_boxes_" << seed1 << "_" << seed2 << ".svg";
+ std::ofstream svg(filename.str().c_str());
+
+ bg::svg_mapper<point_item> mapper(svg, 800, 800);
+
+ {
+ point_item p;
+ p.x = -1; p.y = -1; mapper.add(p);
+ p.x = size + 1; p.y = size + 1; mapper.add(p);
+ }
+
+ BOOST_FOREACH(box_item<box_type> const& item, boxes1)
+ {
+ mapper.map(item.box, "opacity:0.6;fill:rgb(50,50,210);stroke:rgb(0,0,0);stroke-width:1");
+ }
+ BOOST_FOREACH(box_item<box_type> const& item, boxes2)
+ {
+ mapper.map(item.box, "opacity:0.6;fill:rgb(0,255,0);stroke:rgb(0,0,0);stroke-width:1");
+ }
+
+ typedef svg_visitor<bg::svg_mapper<point_item> > partition_box_visitor_type;
+ partition_box_visitor_type partition_box_visitor(mapper);
+#else
+ typedef bg::visit_no_policy partition_box_visitor_type;
+ partition_box_visitor_type partition_box_visitor;
#endif
+
+ box_visitor<box_type> visitor;
+ bg::partition
+ <
+ box_type,
+ get_box, ovelaps_box,
+ get_box, ovelaps_box,
+ partition_box_visitor_type
+ >::apply(boxes1, boxes2, visitor, 2, partition_box_visitor);
+
+ BOOST_CHECK_EQUAL(visitor.count, expected_count);
+ BOOST_CHECK_CLOSE(visitor.area, expected_area, 0.001);
}
+void test_heterogenuous_collections(int seed1, int seed2, int size, int count)
+{
+ typedef bg::model::box<point_item> box_type;
+ std::vector<point_item> points;
+ std::vector<box_item<box_type> > boxes;
+ fill_points(points, seed1, size, count);
+ fill_boxes(boxes, seed2, size, count);
+
+ // Get expectations in quadratic loop
+ int expected_count = 0;
+ BOOST_FOREACH(point_item const& point, points)
+ {
+ BOOST_FOREACH(box_item<box_type> const& box_item, boxes)
+ {
+ if (bg::within(point, box_item.box))
+ {
+ expected_count++;
+ }
+ }
+ }
+#if defined(TEST_WITH_SVG)
+ std::ostringstream filename;
+ filename << "partition_heterogeneous_" << seed1 << "_" << seed2 << ".svg";
+ std::ofstream svg(filename.str().c_str());
+
+ bg::svg_mapper<point_item> mapper(svg, 800, 800);
+
+ {
+ point_item p;
+ p.x = -1; p.y = -1; mapper.add(p);
+ p.x = size + 1; p.y = size + 1; mapper.add(p);
+ }
+
+ BOOST_FOREACH(point_item const& point, points)
+ {
+ mapper.map(point, "fill:rgb(255,128,0);stroke:rgb(0,0,100);stroke-width:1", 8);
+ }
+ BOOST_FOREACH(box_item<box_type> const& item, boxes)
+ {
+ mapper.map(item.box, "opacity:0.6;fill:rgb(0,255,0);stroke:rgb(0,0,0);stroke-width:1");
+ }
+
+ typedef svg_visitor<bg::svg_mapper<point_item> > partition_box_visitor_type;
+ partition_box_visitor_type partition_box_visitor(mapper);
+#else
+ typedef bg::visit_no_policy partition_box_visitor_type;
+ partition_box_visitor_type partition_box_visitor;
+#endif
+
+ point_in_box_visitor visitor1;
+ bg::partition
+ <
+ box_type,
+ get_point, ovelaps_point,
+ get_box, ovelaps_box,
+ partition_box_visitor_type
+ >::apply(points, boxes, visitor1, 2, partition_box_visitor);
+
+ reversed_point_in_box_visitor visitor2;
+ bg::partition
+ <
+ box_type,
+ get_box, ovelaps_box,
+ get_point, ovelaps_point,
+ partition_box_visitor_type
+ >::apply(boxes, points, visitor2, 2, partition_box_visitor);
+
+ BOOST_CHECK_EQUAL(visitor1.count, expected_count);
+ BOOST_CHECK_EQUAL(visitor2.count, expected_count);
+}
+
int test_main( int , char* [] )
{
test_all<bg::model::d2::point_xy<double> >();
@@ -472,5 +649,10 @@ int test_main( int , char* [] )
test_many_boxes(i, 20, i * 10);
}
+ test_two_collections(12345, 54321, 20, 40);
+ test_two_collections(67890, 98765, 20, 60);
+
+ test_heterogenuous_collections(67890, 98765, 20, 60);
+
return 0;
}
diff --git a/libs/geometry/test/algorithms/detail/partition.vcproj b/libs/geometry/test/algorithms/detail/partition.vcproj
deleted file mode 100644
index 66e26a9739..0000000000
--- a/libs/geometry/test/algorithms/detail/partition.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="partition"
- ProjectGUID="{5EF21715-DB87-41AB-9D0A-59ED04F316A1}"
- RootNamespace="partition"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\partition"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../..;../../../../../boost/geometry/extensions/contrib/ttmath"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\partition"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../..;../../../../../boost/geometry/extensions/contrib/ttmath"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\partition.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/detail/sections/range_by_section.cpp b/libs/geometry/test/algorithms/detail/sections/range_by_section.cpp
index e1d1bca1df..d7cadde309 100644
--- a/libs/geometry/test/algorithms/detail/sections/range_by_section.cpp
+++ b/libs/geometry/test/algorithms/detail/sections/range_by_section.cpp
@@ -10,6 +10,7 @@
#include <iostream>
#include <string>
+#define BOOST_GEOMETRY_UNIT_TEST_SECTIONALIZE
#include <geometry_test_common.hpp>
@@ -23,7 +24,7 @@
template <int DimensionCount, bool Reverse, typename Geometry>
-void test_sectionalize(std::string const caseid, Geometry const& geometry, std::size_t section_count)
+void test_sectionalize(std::string const /*caseid*/, Geometry const& geometry, std::size_t section_count)
{
typedef typename bg::point_type<Geometry>::type point;
typedef bg::model::box<point> box;
diff --git a/libs/geometry/test/algorithms/detail/sections/range_by_section.vcproj b/libs/geometry/test/algorithms/detail/sections/range_by_section.vcproj
deleted file mode 100644
index 0d7ffb6cfc..0000000000
--- a/libs/geometry/test/algorithms/detail/sections/range_by_section.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="range_by_section"
- ProjectGUID="{A91434CB-CB32-48AE-8C74-81B6A1EB342F}"
- RootNamespace="range_by_section"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\range_by_section"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\range_by_section"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\range_by_section.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/detail/sections/sectionalize.cpp b/libs/geometry/test/algorithms/detail/sections/sectionalize.cpp
index 531a301284..8cf079db7f 100644
--- a/libs/geometry/test/algorithms/detail/sections/sectionalize.cpp
+++ b/libs/geometry/test/algorithms/detail/sections/sectionalize.cpp
@@ -15,6 +15,7 @@
#include <iostream>
#include <string>
+#define BOOST_GEOMETRY_UNIT_TEST_SECTIONALIZE
#include <geometry_test_common.hpp>
@@ -30,7 +31,7 @@
#include <test_common/test_point.hpp>
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
# include <boost/geometry/algorithms/buffer.hpp>
# include <boost/geometry/algorithms/centroid.hpp>
#endif
@@ -48,7 +49,7 @@ void test_sectionalize_part()
typedef bg::detail::sectionalize::sectionalize_part
<
- Geometry, point_type, sections_type, 1, 10
+ point_type, 1
> sectionalize_part;
sections_type sections;
@@ -58,22 +59,24 @@ void test_sectionalize_part()
Geometry geometry;
geometry.push_back(bg::make<point_type>(1, 1));
+ bg::detail::no_rescale_policy rescale_policy;
+
bg::ring_identifier ring_id;
- int index = 0;
- int ndi = 0;
- sectionalize_part::apply(sections, section, index, ndi, geometry, ring_id);
+ sectionalize_part::apply(sections, geometry, rescale_policy, false, ring_id, 10);
// There should not yet be anything generated, because it is only ONE point
geometry.push_back(bg::make<point_type>(2, 2));
- sectionalize_part::apply(sections, section, index, ndi, geometry, ring_id);
+ sectionalize_part::apply(sections, geometry, rescale_policy, false, ring_id, 10);
}
template <int DimensionCount, bool Reverse, typename G>
-void test_sectionalize(std::string const caseid, G const& g, std::size_t section_count,
+void test_sectionalize(std::string const& caseid, G const& g, std::size_t section_count,
std::string const& index_check, std::string const& dir_check)
{
+ boost::ignore_unused_variable_warning(caseid);
+
typedef typename bg::point_type<G>::type point;
typedef bg::model::box<point> box;
typedef bg::sections<box, DimensionCount> sections;
@@ -313,7 +316,7 @@ void test_large_integers()
bg::sectionalize<false>(int_poly, int_sections);
bg::sectionalize<false>(double_poly, double_sections);
-
+
bool equally_sized = int_sections.size() == double_sections.size();
BOOST_CHECK(equally_sized);
if (! equally_sized)
diff --git a/libs/geometry/test/algorithms/detail/sections/sectionalize.sln b/libs/geometry/test/algorithms/detail/sections/sectionalize.sln
deleted file mode 100644
index 5b2ae402b9..0000000000
--- a/libs/geometry/test/algorithms/detail/sections/sectionalize.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sectionalize", "sectionalize.vcproj", "{50410F81-7B83-49D9-BDAE-FA3F0ADB2ADC}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "range_by_section", "range_by_section.vcproj", "{A91434CB-CB32-48AE-8C74-81B6A1EB342F}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {50410F81-7B83-49D9-BDAE-FA3F0ADB2ADC}.Debug|Win32.ActiveCfg = Debug|Win32
- {50410F81-7B83-49D9-BDAE-FA3F0ADB2ADC}.Debug|Win32.Build.0 = Debug|Win32
- {50410F81-7B83-49D9-BDAE-FA3F0ADB2ADC}.Release|Win32.ActiveCfg = Release|Win32
- {50410F81-7B83-49D9-BDAE-FA3F0ADB2ADC}.Release|Win32.Build.0 = Release|Win32
- {A91434CB-CB32-48AE-8C74-81B6A1EB342F}.Debug|Win32.ActiveCfg = Debug|Win32
- {A91434CB-CB32-48AE-8C74-81B6A1EB342F}.Debug|Win32.Build.0 = Debug|Win32
- {A91434CB-CB32-48AE-8C74-81B6A1EB342F}.Release|Win32.ActiveCfg = Release|Win32
- {A91434CB-CB32-48AE-8C74-81B6A1EB342F}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/algorithms/detail/sections/sectionalize.vcproj b/libs/geometry/test/algorithms/detail/sections/sectionalize.vcproj
deleted file mode 100644
index 7c7ee5ac88..0000000000
--- a/libs/geometry/test/algorithms/detail/sections/sectionalize.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="sectionalize"
- ProjectGUID="{50410F81-7B83-49D9-BDAE-FA3F0ADB2ADC}"
- RootNamespace="sectionalize"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\sectionalize"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\sectionalize"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\sectionalize.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/difference.cpp b/libs/geometry/test/algorithms/difference.cpp
index e72af3c24b..6f83aef4a3 100644
--- a/libs/geometry/test/algorithms/difference.cpp
+++ b/libs/geometry/test/algorithms/difference.cpp
@@ -7,22 +7,14 @@
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
-// #define TEST_ISOVIST
-
-//#define BOOST_GEOMETRY_CHECK_WITH_POSTGIS
-
-//#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
-//#define BOOST_GEOMETRY_DEBUG_INTERSECTION
-//#define BOOST_GEOMETRY_DEBUG_TRAVERSE
-//#define BOOST_GEOMETRY_DEBUG_FOLLOW
-//#define BOOST_GEOMETRY_DEBUG_ASSEMBLE
-//#define BOOST_GEOMETRY_DEBUG_IDENTIFIER
-
-
#include <iostream>
#include <string>
#include <iomanip>
+// If defined, tests are run without rescaling-to-integer or robustness policy
+// Test which would fail then are disabled automatically
+// #define BOOST_GEOMETRY_NO_ROBUSTNESS
+
#include <boost/geometry/algorithms/correct.hpp>
#include <boost/geometry/algorithms/perimeter.hpp>
@@ -33,9 +25,6 @@
#include <boost/geometry/geometries/point_xy.hpp>
-//#include <boost/geometry/extensions/gis/io/wkb/read_wkb.hpp>
-//#include <boost/geometry/extensions/gis/io/wkb/utility.hpp>
-
#include <algorithms/test_difference.hpp>
#include <algorithms/test_overlay.hpp>
#include <algorithms/overlay/overlay_cases.hpp>
@@ -59,7 +48,7 @@ void test_areal_linear()
test_one_lp<LineString, LineString, Polygon>("case4", "LINESTRING(1 1,3 2,1 3)", "POLYGON((0 0,0 4,2 4,2 0,0 0))", 1, 3, sqrt(5.0));
test_one_lp<LineString, LineString, Polygon>("case5", "LINESTRING(0 1,3 4)", poly_simplex, 2, 4, 2.0 * sqrt(2.0));
- test_one_lp<LineString, LineString, Polygon>("case6", "LINESTRING(1 1,10 3)", "POLYGON((2 0,2 4,3 4,3 1,4 1,4 3,5 3,5 1,6 1,6 3,7 3,7 1,8 1,8 3,9 3,9 0,2 0))", 5, 10,
+ test_one_lp<LineString, LineString, Polygon>("case6", "LINESTRING(1 1,10 3)", "POLYGON((2 0,2 4,3 4,3 1,4 1,4 3,5 3,5 1,6 1,6 3,7 3,7 1,8 1,8 3,9 3,9 0,2 0))", 5, 10,
// Pieces are 1 x 2/9:
5.0 * sqrt(1.0 + 4.0/81.0));
@@ -85,7 +74,8 @@ void test_areal_linear()
test_one_lp<LineString, LineString, Polygon>("case19", "LINESTRING(1 2,1 3,0 3)", poly_9, 1, 2, 1.0);
test_one_lp<LineString, LineString, Polygon>("case20", "LINESTRING(1 2,1 3,2 3)", poly_9, 0, 0, 0.0);
- test_one_lp<LineString, LineString, Polygon>("case21", "LINESTRING(1 2,1 4,4 4,4 1,2 1,2 2)", poly_9, 0, 0, 0.0);
+ // PROPERTIES CHANGED BY switch_to_integer
+ // TODO test_one_lp<LineString, LineString, Polygon>("case21", "LINESTRING(1 2,1 4,4 4,4 1,2 1,2 2)", poly_9, 0, 0, 0.0);
// More collinear (opposite) cases
test_one_lp<LineString, LineString, Polygon>("case22", "LINESTRING(4 1,4 4,7 4)", poly_9, 1, 2, 3.0);
@@ -108,11 +98,10 @@ void test_all()
test_areal_linear<polygon, linestring>();
-
test_one<polygon, polygon, polygon>("simplex_normal",
simplex_normal[0], simplex_normal[1],
- 3, 3, 2.52636706856656,
- 3, 3, 3.52636706856656);
+ 3, 12, 2.52636706856656,
+ 3, 12, 3.52636706856656);
test_one<polygon, polygon, polygon>("simplex_with_empty",
simplex_normal[0], polygon_empty,
@@ -126,61 +115,62 @@ void test_all()
test_one<polygon, polygon, polygon>("two_bends",
two_bends[0], two_bends[1],
- 1, 7, 8.0,
- 1, 7, 8.0);
+ 1, 5, 8.0,
+ 1, 5, 8.0);
test_one<polygon, polygon, polygon>("star_comb_15",
star_comb_15[0], star_comb_15[1],
- 30, 150, 227.658275102812,
- 30, 150, 480.485775259312);
+ 30, 160, 227.658275102812,
+ 30, 198, 480.485775259312);
test_one<polygon, polygon, polygon>("new_hole",
new_hole[0], new_hole[1],
- 1, 10, 7.0,
- 1, 10, 14.0);
+ 1, 9, 7.0,
+ 1, 13, 14.0);
test_one<polygon, polygon, polygon>("crossed",
crossed[0], crossed[1],
- 1, 0, 19.5,
- 1, 0, 2.5);
+ 1, 18, 19.5,
+ 1, 7, 2.5);
test_one<polygon, polygon, polygon>("disjoint",
disjoint[0], disjoint[1],
1, 5, 1.0,
1, 5, 1.0);
+ // The too small one might be discarded (depending on point-type / compiler)
+ // We check area only
test_one<polygon, polygon, polygon>("distance_zero",
distance_zero[0], distance_zero[1],
- 2, 0, 8.7048386,
- if_typed<ct, float>(1, 2), // The too small one is discarded for floating point
- 0, 0.0098387);
-
+ -1, -1, 8.7048386,
+ -1, -1, 0.0098387,
+ 0.001);
test_one<polygon, polygon, polygon>("equal_holes_disjoint",
equal_holes_disjoint[0], equal_holes_disjoint[1],
- 1, 0, 9.0,
- 1, 0, 9.0);
+ 1, 5, 9.0,
+ 1, 5, 9.0);
test_one<polygon, polygon, polygon>("only_hole_intersections1",
only_hole_intersections[0], only_hole_intersections[1],
- 2, 0, 1.9090909,
- 4, 0, 10.9090909);
+ 2, 10, 1.9090909,
+ 4, 16, 10.9090909);
test_one<polygon, polygon, polygon>("only_hole_intersection2",
only_hole_intersections[0], only_hole_intersections[2],
- 3, 0, 30.9090909,
- 4, 0, 10.9090909);
+ 3, 20, 30.9090909,
+ 4, 16, 10.9090909);
test_one<polygon, polygon, polygon>("first_within_second",
first_within_second[1], first_within_second[0],
- 1, 1, 24,
+ 1, 10, 24,
0, 0, 0);
test_one<polygon, polygon, polygon>("fitting",
fitting[0], fitting[1],
- 1, 0, 21.0,
- 1, 0, 4.0);
+ 1, 9, 21.0,
+ 1, 4, 4.0);
test_one<polygon, polygon, polygon>("identical",
identical[0], identical[1],
@@ -189,63 +179,78 @@ void test_all()
test_one<polygon, polygon, polygon>("intersect_exterior_and_interiors_winded",
intersect_exterior_and_interiors_winded[0], intersect_exterior_and_interiors_winded[1],
- 4, 0, 11.533333,
- 5, 0, 29.783333);
+ 4, 20, 11.533333,
+ 5, 26, 29.783333);
test_one<polygon, polygon, polygon>("intersect_holes_intersect_and_disjoint",
intersect_holes_intersect_and_disjoint[0], intersect_holes_intersect_and_disjoint[1],
- 2, 0, 15.75,
- 3, 0, 6.75);
+ 2, 16, 15.75,
+ 3, 17, 6.75);
test_one<polygon, polygon, polygon>("intersect_holes_intersect_and_touch",
intersect_holes_intersect_and_touch[0], intersect_holes_intersect_and_touch[1],
- 3, 0, 16.25,
- 3, 0, 6.25);
+ 3, 21, 16.25,
+ 3, 17, 6.25);
test_one<polygon, polygon, polygon>("intersect_holes_new_ring",
intersect_holes_new_ring[0], intersect_holes_new_ring[1],
- 3, 0, 9.8961,
- 4, 0, 121.8961, 0.01);
+ 3, 15, 9.8961,
+ 4, 25, 121.8961, 0.01);
test_one<polygon, polygon, polygon>("first_within_hole_of_second",
first_within_hole_of_second[0], first_within_hole_of_second[1],
- 1, -1, 1,
- 1, -1, 16);
+ 1, 5, 1,
+ 1, 10, 16);
test_one<polygon, polygon, polygon>("intersect_holes_disjoint",
intersect_holes_disjoint[0], intersect_holes_disjoint[1],
- 2, 15, 16.0,
- 2, 15, 6.0);
+ 2, 14, 16.0,
+ 2, 10, 6.0);
test_one<polygon, polygon, polygon>("intersect_holes_intersect",
intersect_holes_intersect[0], intersect_holes_intersect[1],
- 2, 14, 15.75,
- 2, 14, 5.75);
+ 2, 16, 15.75,
+ 2, 12, 5.75);
test_one<polygon, polygon, polygon>(
"case4", case_4[0], case_4[1],
- 6, 22, 2.77878787878788,
- 4, 27, 4.77878787878788);
+ 6, 28, 2.77878787878788,
+ 4, 22, 4.77878787878788);
test_one<polygon, polygon, polygon>(
"case5", case_5[0], case_5[1],
- 8, 22, 2.43452380952381,
- 7, 27, 3.18452380952381);
+ 8, 36, 2.43452380952381,
+ 7, 33, 3.18452380952381);
test_one<polygon, polygon, polygon>("winded",
winded[0], winded[1],
- 3, 1, 61,
- 1, 0, 13);
+ 3, 37, 61,
+ 1, 15, 13);
test_one<polygon, polygon, polygon>("within_holes_disjoint",
within_holes_disjoint[0], within_holes_disjoint[1],
- 2, 1, 25,
- 1, 0, 1);
+ 2, 15, 25,
+ 1, 5, 1);
test_one<polygon, polygon, polygon>("side_side",
side_side[0], side_side[1],
- 1, 0, 1,
- 1, 0, 1);
+ 1, 5, 1,
+ 1, 5, 1);
+
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ test_one<polygon, polygon, polygon>("buffer_mp1",
+ buffer_mp1[0], buffer_mp1[1],
+ 1, 61, 10.2717,
+ 1, 61, 10.2717);
+#endif
+
+ if (boost::is_same<ct, double>::value)
+ {
+ test_one<polygon, polygon, polygon>("buffer_mp2",
+ buffer_mp2[0], buffer_mp2[1],
+ 1, 91, 12.09857,
+ 1, 155, 24.19714);
+ }
/*** TODO: self-tangencies for difference
test_one<polygon, polygon, polygon>("wrapped_a",
@@ -259,62 +264,114 @@ void test_all()
1, 0, 13);
***/
-#ifdef _MSC_VER
-#ifdef TEST_ISOVIST
+ // Isovist - the # output polygons differ per compiler/pointtype, (very) small
+ // rings might be discarded. We check area only
test_one<polygon, polygon, polygon>("isovist",
isovist1[0], isovist1[1],
- if_typed_tt<ct>(4, 2), 0, 0.279121891701124,
- if_typed_tt<ct>(4, 3), 0, if_typed_tt<ct>(224.889211358929, 223.777),
- if_typed_tt<ct>(0.001, 0.2));
-
+ -1, -1, 0.279121,
+ -1, -1, 224.8892,
+ 0.001);
// SQL Server gives: 0.279121891701124 and 224.889211358929
// PostGIS gives: 0.279121991127244 and 224.889205853156
-#endif
+ test_one<polygon, polygon, polygon>("geos_1",
+ geos_1[0], geos_1[1],
+ 21, -1, 0.31640625,
+ 9, -1, 0.01953125);
+ // SQL Server gives: 0.28937764436705 and 0.000786406897532288 with 44/35 rings
+ // PostGIS gives: 0.30859375 and 0.033203125 with 35/35 rings
+
+ test_one<polygon, polygon, polygon>("geos_2",
+ geos_2[0], geos_2[1],
+ 1, -1, 138.6923828,
+ 1, -1, 211.859375);
+
+ test_one<polygon, polygon, polygon>("geos_3",
+ geos_3[0], geos_3[1],
+ 1, -1, 16211128.5,
+ 1, -1, 13180420.0);
+
+ test_one<polygon, polygon, polygon>("geos_4",
+ geos_4[0], geos_4[1],
+ 1, -1, 971.9163115,
+ 1, -1, 1332.4163115);
test_one<polygon, polygon, polygon>("ggl_list_20110306_javier",
ggl_list_20110306_javier[0], ggl_list_20110306_javier[1],
- 1, 0, 71495.3331,
- 2, 0, 8960.49049);
-#endif
-
+ 1, -1, 71495.3331,
+ 2, -1, 8960.49049);
+
test_one<polygon, polygon, polygon>("ggl_list_20110307_javier",
ggl_list_20110307_javier[0], ggl_list_20110307_javier[1],
- 1, 0, 16815.6,
- 1, 0, 3200.4,
+ 1, if_typed<ct, float>(14, 13), 16815.6,
+ 1, 4, 3200.4,
0.01);
if (! boost::is_same<ct, float>::value)
{
test_one<polygon, polygon, polygon>("ggl_list_20110716_enrico",
ggl_list_20110716_enrico[0], ggl_list_20110716_enrico[1],
- 3, 0, 35723.8506317139,
- 1, 0, 58456.4964294434
+ 3, -1, 35723.8506317139,
+ 1, -1, 58456.4964294434
);
}
test_one<polygon, polygon, polygon>("ggl_list_20110820_christophe",
ggl_list_20110820_christophe[0], ggl_list_20110820_christophe[1],
- 1, 0, 2.8570121719168924,
- 1, 0, 64.498061986388564);
-
+ 1, -1, 2.8570121719168924,
+ 1, -1, 64.498061986388564);
+ test_one<polygon, polygon, polygon>("ggl_list_20120717_volker",
+ ggl_list_20120717_volker[0], ggl_list_20120717_volker[1],
+ 1, 11, 3370866.2295081965,
+ 1, 5, 384.2295081964694, 0.01);
-#ifdef _MSC_VER
- // 2011-07-02
+ // 2011-07-02 / 2014-06-19
// Interesting FP-precision case.
// sql server gives: 6.62295817619452E-05
// PostGIS gives: 0.0 (no output)
- // Boost.Geometry gives results depending on FP-type, and compiler, and operating system.
- // For double, it is zero (skipped). On gcc/Linux, for float either.
- // Because we cannot predict this, we only test for MSVC
+ // Boost.Geometry gave results depending on FP-type, and compiler, and operating system.
+ // Since rescaling to integer results are equal w.r.t. compiler/FP type,
+ // however, some long spikes are still generated in the resulting difference
test_one<polygon, polygon, polygon>("ggl_list_20110627_phillip",
ggl_list_20110627_phillip[0], ggl_list_20110627_phillip[1],
- if_typed_tt<ct>(1, 0), 0,
- if_typed_tt<ct>(0.0000000000001105367, 0.0),
- 1, 0, 3577.40960816756,
+ 1, -1,
+ if_typed_tt<ct>(0.0000000000001105367, 0.00021401892),
+ 1, -1, 3577.40960816756,
0.01
);
+
+ // Ticket 8310, one should be completely subtracted from the other.
+ test_one<polygon, polygon, polygon>("ticket_8310a",
+ ticket_8310a[0], ticket_8310a[1],
+ 1, 10, 10.11562724,
+ 0, 0, 0);
+ test_one<polygon, polygon, polygon>("ticket_8310b",
+ ticket_8310b[0], ticket_8310b[1],
+ 1, 10, 10.12655608,
+ 0, 0, 0);
+ test_one<polygon, polygon, polygon>("ticket_8310c",
+ ticket_8310c[0], ticket_8310c[1],
+ 1, 10, 10.03103292,
+ 0, 0, 0);
+
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ test_one<polygon, polygon, polygon>("ticket_9081_15",
+ ticket_9081_15[0], ticket_9081_15[1],
+ 1, 10, 0.0334529710902111,
+ 0, 0, 0);
+#endif
+
+ test_one<polygon, polygon, polygon>("ticket_9081_314",
+ ticket_9081_314[0], ticket_9081_314[1],
+ 2, 12, 0.0451236449624935,
+ 0, 0, 0);
+
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ test_one<polygon, polygon, polygon>("ticket_9563",
+ ticket_9563[0], ticket_9563[1],
+ 0, 0, 0,
+ 6, 24, 20.096189);
#endif
// Other combi's
@@ -325,17 +382,17 @@ void test_all()
test_one<polygon, ring, polygon>(
"ring_star_ring", example_ring, example_star,
- 5, 22, 1.6701714, 5, 27, 1.1901714);
+ 5, 27, 1.6701714, 5, 22, 1.1901714);
static std::string const clip = "POLYGON((2.5 0.5,5.5 2.5))";
test_one<polygon, box, ring>("star_box",
clip, example_star,
- 4, 11, 2.833333, 4, 11, 0.833333);
+ 4, 20, 2.833333, 4, 16, 0.833333);
test_one<polygon, ring, box>("box_star",
example_star, clip,
- 4, 11, 0.833333, 4, 11, 2.833333);
+ 4, 16, 0.833333, 4, 20, 2.833333);
}
// Counter clockwise
@@ -352,8 +409,6 @@ void test_all()
5, 22, 1.1901714, 5, 27, 1.6701714);
}
-
-
// Multi/box (should be moved to multi)
{
/* Tested with SQL Geometry:
@@ -361,8 +416,8 @@ void test_all()
'MULTIPOLYGON(((0 1,2 5,5 3,0 1)),((1 1,5 2,5 0,1 1)))',0) as p,
geometry::STGeomFromText(
'POLYGON((2 2,2 4,4 4,4 2,2 2))',0) as q)
-
- select
+
+ select
p.STDifference(q).STArea(),p.STDifference(q).STNumGeometries(),p.STDifference(q) as p_min_q,
q.STDifference(p).STArea(),q.STDifference(p).STNumGeometries(),q.STDifference(p) as q_min_p,
p.STSymDifference(q).STArea(),q.STSymDifference(p) as p_xor_q
@@ -464,6 +519,19 @@ void test_difference_parcel_precision()
}
*****/
+
+template <typename P, bool clockwise, bool closed>
+void test_specific()
+{
+ typedef bg::model::polygon<P, clockwise, closed> polygon;
+
+ test_one<polygon, polygon, polygon>("ggl_list_20120717_volker",
+ ggl_list_20120717_volker[0], ggl_list_20120717_volker[1],
+ 1, 11, 3371540,
+ 0, 0, 0, 0.001); // output is discarded
+}
+
+
int test_main(int, char* [])
{
//test_difference_parcel_precision<float>();
@@ -471,6 +539,8 @@ int test_main(int, char* [])
test_all<bg::model::d2::point_xy<double> >();
+ test_specific<bg::model::d2::point_xy<int>, false, false>();
+
#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
test_all<bg::model::d2::point_xy<float> >();
diff --git a/libs/geometry/test/algorithms/difference.vcproj b/libs/geometry/test/algorithms/difference.vcproj
deleted file mode 100644
index 2302ee27fe..0000000000
--- a/libs/geometry/test/algorithms/difference.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="difference"
- ProjectGUID="{4EBFC27A-75C9-43A1-8DDA-AFEB45C564DC}"
- RootNamespace="difference"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\difference"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;..;../$(TTMATH_ROOT)"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\difference"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\difference.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/difference_linear_linear.cpp b/libs/geometry/test/algorithms/difference_linear_linear.cpp
new file mode 100644
index 0000000000..6d3d8029e7
--- /dev/null
+++ b/libs/geometry/test/algorithms/difference_linear_linear.cpp
@@ -0,0 +1,1231 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_difference_linear_linear
+#endif
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+#define BOOST_GEOMETRY_DEBUG_TURNS
+#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_difference_linear_linear.hpp"
+
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/algorithms/difference.hpp>
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::segment<point_type> segment_type;
+typedef bg::model::linestring<point_type> linestring_type;
+typedef bg::model::multi_linestring<linestring_type> multi_linestring_type;
+
+
+
+//===========================================================================
+//===========================================================================
+//===========================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_difference_linestring_linestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** LINESTRING / LINESTRING DIFFERENCE ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_difference_of_geometries<L, L, ML> tester;
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 1,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(0 2,1 1,2 1,3 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1),(2 1,3 2))"),
+ "lldf00");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 2,1 1,2 1,3 0)"),
+ from_wkt<L>("LINESTRING(0 0,1 1,2 1,3 2)"),
+ from_wkt<ML>("MULTILINESTRING((0 2,1 1),(2 1,3 0))"),
+ "lldf00-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,5 0)"),
+ from_wkt<L>("LINESTRING(3 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,3 0),(4 0,5 0))"),
+ "lldf01");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(3 0,4 0)"),
+ from_wkt<L>("LINESTRING(0 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "lldf01-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,6 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,3 0))"),
+ "lldf01-2");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(3 0,6 0)"),
+ from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((4 0,6 0))"),
+ "lldf01-3");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,6 0)"),
+ from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((4 0,6 0))"),
+ "lldf01-4");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<L>("LINESTRING(0 0,6 0)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "lldf01-5");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,4 0),(5 0,20 0))"),
+ "lldf01-6");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-20 0,20 0)"),
+ from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
+ from_wkt<ML>("MULTILINESTRING((-20 0,4 0),(5 0,20 0))"),
+ "lldf01-7");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<L>("LINESTRING(2 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ "lldf01-8");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(2 0,4 0)"),
+ from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "lldf01-9");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ "lldf01-10");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(2 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ "lldf01-11");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,3 0))"),
+ "lldf01-11a");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,3 0))"),
+ "lldf01-11b");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,6 0)"),
+ from_wkt<L>("LINESTRING(2 0,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,6 0))"),
+ "lldf01-12");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0)"),
+ from_wkt<L>("LINESTRING(-1 6,0 5,15 5)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,5 5),(10 5,15 0))"),
+ "lldf02");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0))"),
+ "lldf03");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0,20 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 5,10 5,15 0))"),
+ "lldf04");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,25 1)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (20 0,25 1))"),
+ "lldf05");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0))"),
+ "lldf05-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (30 0,31 0))"),
+ "lldf06");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,25 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (30 0,31 0))"),
+ "lldf07");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (30 0,31 0))"),
+ "lldf08");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (30 0,31 1))"),
+ "lldf09");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (30 0,31 1))"),
+ "lldf10");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,\
+ 30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(2 0,3 0),\
+ (4 0,5 5,10 5,15 0),(30 0,31 1))"),
+ "lldf11");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(2 0,3 0),\
+ (4 0,5 5,10 5,15 0),(30 0,31 0))"),
+ "lldf11-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "lldf12");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<L>("LINESTRING(3 1,2 0,0 0)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "lldf12-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
+ from_wkt<L>("LINESTRING(1 0,2 1,3 5,4 0,5 10)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0))"),
+ "lldf13");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 0,2.5 0,3 1)"),
+ from_wkt<L>("LINESTRING(0 0,2 0,2.5 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "lldf14");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
+ from_wkt<L>("LINESTRING(1 0,2 1,3 5)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(3 5,4 0))"),
+ "lldf15");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(0.5 0,1 0,3 2,4 5)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,0.5 0))"),
+ "lldf16");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(4 5,3 2,1 0,0.5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,0.5 0))"),
+ "lldf16-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1,30 1)"),
+ from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(25 1,30 1))"),
+ "lldf17");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1,21 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1,21 0,30 0))"),
+ "lldf18");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,4 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19a");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(4 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19a-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19b");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,6 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19c");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19d");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19e");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,5 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19f");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,5 0,4 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19f-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,5 0,5 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19g");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,5 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0))"),
+ "lldf19g-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
+ from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,35 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(25 0,30 0,30 30,10 30),\
+ (10 0,10 -10,15 0,20 0),(25 0,35 0))"),
+ "lldf20");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
+ from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,15 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,15 0),(30 0,30 30,10 30),\
+ (10 0,10 -10,15 0))"),
+ "lldf20a");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<L>("LINESTRING(2 2,5 -1,15 2,18 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,18 0),(20 0,30 0))"),
+ "lldf21"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(2 2,5 -1,15 2,18 0,20 0)"),
+ from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((2 2,5 -1,15 2,18 0))"),
+ "lldf21a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0)"),
+ from_wkt<L>("LINESTRING(1 0,4 0,2 1,5 1,4 0,8 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(8 0,10 0))"),
+ "lldf22"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0)"),
+ from_wkt<L>("LINESTRING(4 0,5 0,5 1,1 1,1 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,10 0))"),
+ "lldf23"
+ );
+
+ // the following two tests have been discussed with by Adam
+ tester::apply
+ (from_wkt<L>("LINESTRING(1 0,1 1,2 1)"),
+ from_wkt<L>("LINESTRING(2 1,1 1,1 0)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "lldf24"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(1 0,1 1,2 1)"),
+ from_wkt<L>("LINESTRING(1 2,1 1,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 1))"),
+ "lldf25"
+ );
+}
+
+
+
+BOOST_AUTO_TEST_CASE( test_difference_linestring_multilinestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** LINESTRING / MULTILINESTRING DIFFERENCE ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_difference_of_geometries<L, ML, ML> tester;
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1))"),
+ "lmldf01"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1))"),
+ "lmldf02"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,10 0,20 1))"),
+ "lmldf03"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1))"),
+ "lmldf04"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0))"),
+ "lmldf07"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0))"),
+ "lmldf07a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "lmldf07b"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0))"),
+ "lmldf08"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 0.5,3 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0))"),
+ "lmldf09"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,1.5 0,2 0.5,3 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(1.5 0,2 0.5,3 0))"),
+ "lmldf10"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
+ (3 1,4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "lmldf12"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\
+ (2 0,18 0,19 1),(3 0,17 0,18 1),\
+ (4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "lmldf13"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "lmldf14"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "lmldf15"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "lmldf15a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,5 0,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "lmldf16"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,5 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "lmldf16a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0))"),
+ "lmldf17"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0,26 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0))"),
+ "lmldf17a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0))"),
+ "lmldf18"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0))"),
+ "lmldf18a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(20 0,30 0))"),
+ "lmldf18b"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,25 0,26 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,25 0),(26 0,30 0))"),
+ "lmldf18c"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,25 0,21 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,21 0),(25 0,30 0))"),
+ "lmldf18d"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 5,1 0,9 0,10 5),(0 1,2 0,3 1),\
+ (0 -2,3 0,4 4),(0 -5,4 0,5 0,6 3))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(9 0,10))"),
+ "lmldf19"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,0 0),(10 0,12 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ "lmldf20"
+ );
+}
+
+
+
+
+
+BOOST_AUTO_TEST_CASE( test_difference_multilinestring_linestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / LINESTRING DIFFERENCE ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_difference_of_geometries<ML, L, ML> tester;
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<L>("LINESTRING(1 1,2 2,4 3)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ "mlldf01"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<L>("LINESTRING(1 1,2 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
+ (1 0,2 0),(4 0,7 0))"),
+ "mlldf02"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<L>("LINESTRING(-1 -1,1 0,101 0,200 -1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0))"),
+ "mlldf03"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<L>("LINESTRING(0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "mlldf04"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((-1 0,-1 10),(0 0,20 0),(25 0,30 0))"),
+ from_wkt<L>("LINESTRING(0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,-1 10),(0 0,1 0),(19 0,20 0),(25 0,30 0))"),
+ "mlldf05"
+ );
+}
+
+
+
+
+
+
+
+BOOST_AUTO_TEST_CASE( test_difference_multilinestring_multilinestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / MULTILINESTRING DIFFERENCE ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef multi_linestring_type ML;
+
+ typedef test_difference_of_geometries<ML, ML, ML> tester;
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ "mlmldf01"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
+ (1 0,2 0),(4 0,7 0))"),
+ "mlmldf02"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,10 0,20 1),\
+ (1 0,2 0),(5 0,7 0))"),
+ "mlmldf03"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
+ (1 0,2 0),(4 0,7 0))"),
+ "mlmldf04"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (10 10,20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (10 20,15 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
+ (1 0,2 0),(4 0,7 0),(10 10,15 10),(20 10,30 20))"),
+ "mlmldf05"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
+ (10 10,20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
+ (10 20,15 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((9 0,10 0,13 3),(15 5,20 10),\
+ (10 10,11 10),(12 10,15 10),(20 10,30 20))"),
+ "mlmldf06"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
+ (10 20,15 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
+ (10 10,20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0),(-1 -1,0 0),(9 0,11 10),\
+ (12 10,13 3),(10 20,15 10),(20 10,25 10,30 15))"),
+ "mlmldf06a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0))"),
+ "mlmldf07"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((-1 1,0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0))"),
+ "mlmldf07a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "mlmldf07b"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0))"),
+ "mlmldf08"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0))"),
+ "mlmldf09"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(1.5 0,2 0.5,3 0))"),
+ "mlmldf10"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 1,100 1,101 0),\
+ (0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1,3 0,4 0,5 1,6 1,\
+ 7 0,8 0,9 1,10 1,11 0,12 0,13 1,14 1,15 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1),(2 1,5 1),(6 1,9 1),\
+ (10 1,13 1),(14 1,100 1,101 0),(0 0,1 0))"),
+ "mlmldf11"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
+ (3 1,4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "mlmldf12"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\
+ (2 0,18 0,19 1),(3 0,17 0,18 1),\
+ (4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "mlmldf13"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "mlmldf14"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "mlmldf15"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "mlmldf15a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,5 0,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "mlmldf16"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,5 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "mlmldf16a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0))"),
+ "mlmldf17"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0,26 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0))"),
+ "mlmldf17a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0))"),
+ "mlmldf18"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0))"),
+ "mlmldf18a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,0 0),(10 0,12 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ "mlmldf19"
+ );
+}
+
+
+
+
+
+
+#ifndef BOOST_GEOMETRY_TEST_NO_DEGENERATE
+BOOST_AUTO_TEST_CASE( test_difference_ml_ml_degenerate )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / MULTILINESTRING DIFFERENCE"
+ << " (DEGENERATE) ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef multi_linestring_type ML;
+
+ typedef test_difference_of_geometries<ML, ML, ML> tester;
+
+ // the following test cases concern linestrings with duplicate
+ // points and possibly linestrings with zero length.
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((5 5,5 5),(0 0,18 0,18 0,\
+ 19 0,19 0,19 0,30 0),(2 0,2 0),(4 10,4 10))"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 10),\
+ (4 0,4 10),(5 5,5 5))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0),(20 0,30 0))"),
+ "mlmldf20a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((5 5,5 5),(0 0,0 0,18 0,18 0,\
+ 19 0,19 0,19 0,30 0,30 0),(2 0,2 0),(4 10,4 10))"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,1 1,2 2,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (4 0,4 10,4 10),(5 5,5 5))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0),(20 0,30 0))"),
+ "mlmldf20aa"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((10 10,10 10),(0 0,0 0,18 0,18 0,\
+ 19 0,19 0,19 0,30 0,30 0),(2 0,2 0),(4 10,4 10))"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,1 1,2 2,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (4 0,4 10,4 10),(5 5,5 5))"),
+ from_wkt<ML>("MULTILINESTRING((10 10,10 10),(0 0,5 0),(20 0,30 0))"),
+ "mlmldf20aaa"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((10 10),(0 0,0 0,18 0,18 0,\
+ 19 0,19 0,19 0,30 0,30 0),(2 0,2 0),(4 10,4 10))"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,1 1,2 2,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (4 0,4 10,4 10),(5 5,5 5))"),
+ from_wkt<ML>("MULTILINESTRING((10 10,10 10),(0 0,5 0),(20 0,30 0))"),
+ "mlmldf20aaaa"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,0 0),(1 1,1 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,1 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,0 0))"),
+ "mlmldf21"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,0 0),(2 2,2 2),(1 1,1 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,1 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,0 0),(2 2,2 2))"),
+ "mlmldf22"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,0 0),(1 1,1 1),(2 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,1 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,0 0),(2 2,2 2))"),
+ "mlmldf23"
+ );
+}
+#endif // BOOST_GEOMETRY_TEST_NO_DEGENERATE
+
+
+
+
+BOOST_AUTO_TEST_CASE( test_difference_ml_ml_spikes )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / MULTILINESTRING DIFFERENCE"
+ << " (WITH SPIKES) ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef multi_linestring_type ML;
+
+ typedef test_difference_of_geometries<ML, ML, ML> tester;
+
+ // the following test cases concern linestrings with spikes
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,9 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(9 0,10 0))"),
+ "mlmldf-spikes-01"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((9 0,1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(9 0,10 0))"),
+ "mlmldf-spikes-02"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,9 0,2 0,8 0,3 0,7 0,4 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(9 0,10 0))"),
+ "mlmldf-spikes-03"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,3 0,2 0,4 0,3 0,5 0,4 0,6 0,\
+ 5 0,7 0,6 0,8 0,7 0,9 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(9 0,10 0))"),
+ "mlmldf-spikes-04"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(7 0,8 0,7 0),\
+ (9 1,9 0,9 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(6 0,7 0),(8 0,10 0))"),
+ "mlmldf-spikes-05"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(7 0,8 0,7 0),\
+ (9 0,9 2,9 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(6 0,7 0),(8 0,10 0))"),
+ "mlmldf-spikes-05a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(9 0,6 0,8 0),\
+ (11 0,8 0,12 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0))"),
+ "mlmldf-spikes-06"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,0 0,-2 0),(11 0,10 0,12 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ "mlmldf-spikes-07"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,-2 -2),(11 1,10 0,12 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ "mlmldf-spikes-07a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(11 0,10 0,12 0),\
+ (7 5,7 0,8 0,6.5 0,8.5 0,8.5 5))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(6 0,6.5 0),(8.5 0,10 0))"),
+ "mlmldf-spikes-08"
+ );
+
+ // now the first geometry has a spike
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,7 0,4 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,8 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(8 0,10 0))"),
+ "mlmldf-spikes-09"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,7 0,4 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(9 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,7 0,4 0,9 0))"),
+ "mlmldf-spikes-09a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,7 0,4 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0),(9 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,7 0,5 0),(5 0,9 0))"),
+ "mlmldf-spikes-09b"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,7 0,4 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0),(6 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,6 0),(6 0,5 0),(5 0,6 0))"),
+ "mlmldf-spikes-09c"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,8 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(8 0,10 0,8 0))"),
+ "mlmldf-spikes-10"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,8 0,4 0),(2 0,9 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(9 0,10 0,9 0))"),
+ "mlmldf-spikes-11"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((11 1,10 0,12 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ "mlmldf-spikes-12"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((11 -1,10 0,12 -2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ "mlmldf-spikes-12a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((11 0,10 0,12 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ "mlmldf-spikes-13"
+ );
+
+ // the following three tests have been discussed with Adam
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 2,1 1,1 2))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1))"),
+ "mlmldf-spikes-14"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 0,0 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,1 0,2 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,0 0))"),
+ "mlmldf-spikes-15"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,1 1,2 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1))"),
+ "mlmldf-spikes-16"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1))"),
+ from_wkt<ML>("MULTILINESTRING((2 1,1 1,2 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1))"),
+ "mlmldf-spikes-17"
+ );
+
+ // test cases sent by Adam on the mailing list (equal slikes)
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 1,0 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1,0 0))"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "mlmldf-spikes-18"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 1,0 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,0 0,1 1))"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "mlmldf-spikes-19"
+ );
+}
diff --git a/libs/geometry/test/algorithms/difference_pl_pl.cpp b/libs/geometry/test/algorithms/difference_pl_pl.cpp
new file mode 100644
index 0000000000..3030dea4e4
--- /dev/null
+++ b/libs/geometry/test/algorithms/difference_pl_pl.cpp
@@ -0,0 +1,226 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_difference_pointlike_pointlike
+#endif
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+#define BOOST_GEOMETRY_DEBUG_TURNS
+#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_set_ops_pl_pl.hpp"
+
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::multi_point<point_type> multi_point_type;
+
+
+
+//===========================================================================
+//===========================================================================
+//===========================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_difference_point_point )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** POINT / POINT DIFFERENCE ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef point_type P;
+ typedef multi_point_type MP;
+
+ typedef test_set_op_of_pointlike_geometries
+ <
+ P, P, MP, bg::overlay_difference
+ > tester;
+
+ tester::apply
+ (from_wkt<P>("POINT(0 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(1 1)"),
+ "ppdf01");
+
+ tester::apply
+ (from_wkt<P>("POINT(0 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "ppdf02");
+}
+
+
+BOOST_AUTO_TEST_CASE( test_difference_multipoint_point )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTIPOINT / POINT DIFFERENCE ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef point_type P;
+ typedef multi_point_type MP;
+
+ typedef test_set_op_of_pointlike_geometries
+ <
+ MP, P, MP, bg::overlay_difference
+ > tester;
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(1 1)"),
+ "mppdf01");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mppdf02");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT(0 0,0 0)"),
+ from_wkt<MP>("MULTIPOINT(1 1)"),
+ "mppdf03");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mppdf04");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0)"),
+ from_wkt<MP>("MULTIPOINT(1 1)"),
+ "mppdf05");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0)"),
+ from_wkt<P>("POINT(1 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0,0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mppdf06");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(1 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mppdf07");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ "mppdf08");
+}
+
+
+BOOST_AUTO_TEST_CASE( test_difference_point_multipoint )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** POINT / MULTIPOINT DIFFERENCE ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef point_type P;
+ typedef multi_point_type MP;
+
+ typedef test_set_op_of_pointlike_geometries
+ <
+ P, MP, MP, bg::overlay_difference
+ > tester;
+
+ tester::apply
+ (from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(1 0,1 1,1 1)"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(1 0,1 1,1 1)"),
+ "pmpdf01");
+
+ tester::apply
+ (from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,1 1,0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT(1 0,1 1)"),
+ "pmpdf02");
+
+ tester::apply
+ (from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "pmpdf03");
+}
+
+
+BOOST_AUTO_TEST_CASE( test_difference_multipoint_multipoint )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTIPOINT / MULTIPOINT DIFFERENCE ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef multi_point_type MP;
+
+ typedef test_set_op_of_pointlike_geometries
+ <
+ MP, MP, MP, bg::overlay_difference
+ > tester;
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(2 2,3 3,0 0,0 0,2 2,1 1,1 1,1 0,1 0)"),
+ from_wkt<MP>("MULTIPOINT(1 0,1 1,1 1,4 4)"),
+ from_wkt<MP>("MULTIPOINT(2 2,3 3,0 0,0 0,2 2)"),
+ from_wkt<MP>("MULTIPOINT(4 4)"),
+ "mpmpdf01");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,1 1,1 0,1 1)"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,1 1,0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mpmpdf02");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,1 1,0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,1 1,0 0)"),
+ "mpmpdf03");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,1 1,1 0,1 1)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT(0 0,1 1,1 0,1 1)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mpmpdf04");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mpmpdf05");
+}
diff --git a/libs/geometry/test/algorithms/disjoint.cpp b/libs/geometry/test/algorithms/disjoint.cpp
index 7cf3c683cc..d765ef9525 100644
--- a/libs/geometry/test/algorithms/disjoint.cpp
+++ b/libs/geometry/test/algorithms/disjoint.cpp
@@ -12,41 +12,18 @@
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
-#include <iostream>
-#include <string>
+#include <algorithms/test_disjoint.hpp>
-#include <geometry_test_common.hpp>
-
-#include <boost/geometry/algorithms/disjoint.hpp>
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/io/wkt/read.hpp>
#include <boost/geometry/strategies/strategies.hpp>
#include <test_common/test_point.hpp>
-#include <algorithms/test_relate.hpp>
-
-
-template <typename G1, typename G2>
-void test_disjoint(std::string const& id,
- std::string const& wkt1,
- std::string const& wkt2, bool expected)
-{
- G1 g1;
- bg::read_wkt(wkt1, g1);
-
- G2 g2;
- bg::read_wkt(wkt2, g2);
-
- bool detected = bg::disjoint(g1, g2);
- BOOST_CHECK_MESSAGE(detected == expected,
- "disjoint: " << id
- << " -> Expected: " << expected
- << " detected: " << detected);
-}
+#include <algorithms/overlay/overlay_cases.hpp>
+#include <algorithms/predef_relop.hpp>
template <typename P>
@@ -91,6 +68,10 @@ void test_all()
test_disjoint<ring, ring>("disjoint_simplex_rr", disjoint_simplex[0], disjoint_simplex[1], true);
test_disjoint<polygon, ring>("disjoint_simplex_pr", disjoint_simplex[0], disjoint_simplex[1], true);
+ test_disjoint<polygon, polygon>("ticket_8310a", ticket_8310a[0], ticket_8310a[1], false);
+ test_disjoint<polygon, polygon>("ticket_8310b", ticket_8310b[0], ticket_8310b[1], false);
+ test_disjoint<polygon, polygon>("ticket_8310c", ticket_8310c[0], ticket_8310c[1], false);
+
// Testing touch
test_disjoint<polygon, polygon>("touch_simplex_pp", touch_simplex[0], touch_simplex[1], false);
@@ -105,6 +86,16 @@ void test_all()
test_disjoint<ring, ring>("within_simplex_rr1", within_simplex[0], within_simplex[1], false);
test_disjoint<ring, ring>("within_simplex_rr2", within_simplex[1], within_simplex[0], false);
+ test_disjoint<P, ring>("point_ring1", "POINT(0 0)", "POLYGON((0 0,3 3,6 0,0 0))", false);
+ test_disjoint<P, ring>("point_ring2", "POINT(3 1)", "POLYGON((0 0,3 3,6 0,0 0))", false);
+ test_disjoint<P, ring>("point_ring3", "POINT(0 3)", "POLYGON((0 0,3 3,6 0,0 0))", true);
+ test_disjoint<P, polygon>("point_polygon1", "POINT(0 0)", "POLYGON((0 0,3 3,6 0,0 0))", false);
+ test_disjoint<P, polygon>("point_polygon2", "POINT(3 1)", "POLYGON((0 0,3 3,6 0,0 0))", false);
+ test_disjoint<P, polygon>("point_polygon3", "POINT(0 3)", "POLYGON((0 0,3 3,6 0,0 0))", true);
+
+ test_disjoint<ring, P>("point_ring2", "POLYGON((0 0,3 3,6 0,0 0))", "POINT(0 0)", false);
+ test_disjoint<polygon, P>("point_polygon2", "POLYGON((0 0,3 3,6 0,0 0))", "POINT(0 0)", false);
+
// Linear
typedef bg::model::linestring<P> ls;
typedef bg::model::segment<P> segment;
@@ -113,6 +104,12 @@ void test_all()
test_disjoint<segment, segment>("s/s 1", "linestring(0 0,1 1)", "linestring(1 0,0 1)", false);
test_disjoint<segment, segment>("s/s 2", "linestring(0 0,1 1)", "linestring(1 0,2 1)", true);
+ // Test degenerate segments (patched by Karsten Ahnert on 2012-07-25)
+ test_disjoint<segment, segment>("s/s 3", "linestring(0 0,0 0)", "linestring(1 0,0 1)", true);
+ test_disjoint<segment, segment>("s/s 4", "linestring(0 0,0 0)", "linestring(0 0,0 0)", false);
+ test_disjoint<segment, segment>("s/s 5", "linestring(0 0,0 0)", "linestring(1 0,1 0)", true);
+ test_disjoint<segment, segment>("s/s 6", "linestring(0 0,0 0)", "linestring(0 1,0 1)", true);
+
// Collinear opposite
test_disjoint<ls, ls>("ls/ls co", "linestring(0 0,2 2)", "linestring(1 1,0 0)", false);
// Collinear opposite and equal
@@ -120,12 +117,12 @@ void test_all()
// Problem described by Volker/Albert 2012-06-01
- test_disjoint<polygon, box>("volker_albert_1",
- "POLYGON((1992 3240,1992 1440,3792 1800,3792 3240,1992 3240))",
+ test_disjoint<polygon, box>("volker_albert_1",
+ "POLYGON((1992 3240,1992 1440,3792 1800,3792 3240,1992 3240))",
"BOX(1941 2066, 2055 2166)", false);
- test_disjoint<polygon, box>("volker_albert_2",
- "POLYGON((1941 2066,2055 2066,2055 2166,1941 2166))",
+ test_disjoint<polygon, box>("volker_albert_2",
+ "POLYGON((1941 2066,2055 2066,2055 2166,1941 2166))",
"BOX(1941 2066, 2055 2166)", false);
// Degenerate linestrings
@@ -143,7 +140,7 @@ void test_all()
// Linestrings making angles normally ignored
{
- // These (non-disjoint) cases
+ // These (non-disjoint) cases
// correspond to the test "segment_intersection_collinear"
// Collinear ('a')
@@ -168,7 +165,7 @@ void test_all()
// |
// |
// a1--------b1----->a2
- test_disjoint<ls, ls>("case_s", "linestring(0 0,4 0)", "linestring(2 0,2 2)", false);
+ test_disjoint<ls, ls>("case_s", "linestring(0 0,4 0)", "linestring(2 0,2 2)", false);
// Collinear, but disjoint
test_disjoint<ls, ls>("c-d", "linestring(2 0,6 0)", "linestring(7 0,8 0)", true);
@@ -177,7 +174,7 @@ void test_all()
test_disjoint<ls, ls>("c-d", "linestring(2 0,6 0)", "linestring(2 1,6 1)", true);
// Error still there until 1.48 (reported "error", was reported to disjoint, so that's why it did no harm)
- test_disjoint<ls, ls>("case_recursive_boxes_1",
+ test_disjoint<ls, ls>("case_recursive_boxes_1",
"linestring(10 7,10 6)", "linestring(10 10,10 9)", true);
}
@@ -189,6 +186,22 @@ void test_all()
}
+
+template <typename P>
+void test_3d()
+{
+ typedef bg::model::box<P> box;
+
+ test_disjoint<P, P>("pp 3d 1", "point(1 1 1)", "point(1 1 1)", false);
+ test_disjoint<P, P>("pp 3d 2", "point(1 1 1)", "point(1.001 1 1)", true);
+
+ test_disjoint<box, box>("bb1", "box(1 1 1, 2 2 2)", "box(3 1 1, 4 2 1)", true);
+ test_disjoint<box, box>("bb2", "box(1 1 1, 2 2 2)", "box(2 1 1, 3 2 1)", false);
+ test_disjoint<box, box>("bb3", "box(1 1 1, 2 2 2)", "box(2 2 1, 3 3 1)", false);
+ test_disjoint<box, box>("bb4", "box(1 1 1, 2 2 2)", "box(2.001 2 1, 3 3 1)", true);
+
+}
+
int test_main(int, char* [])
{
test_all<bg::model::d2::point_xy<float> >();
@@ -198,5 +211,8 @@ int test_main(int, char* [])
test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif
+ test_3d<bg::model::point<double, 3, bg::cs::cartesian> >();
+
+
return 0;
}
diff --git a/libs/geometry/test/algorithms/disjoint.vcproj b/libs/geometry/test/algorithms/disjoint.vcproj
deleted file mode 100644
index d27526cc75..0000000000
--- a/libs/geometry/test/algorithms/disjoint.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="disjoint"
- ProjectGUID="{96D51D96-B35F-47C8-864D-371DF2280686}"
- RootNamespace="disjoint"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;..;"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\disjoint.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/disjoint_coverage.cpp b/libs/geometry/test/algorithms/disjoint_coverage.cpp
new file mode 100644
index 0000000000..184e6988f7
--- /dev/null
+++ b/libs/geometry/test/algorithms/disjoint_coverage.cpp
@@ -0,0 +1,1406 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_disjoint_coverage
+#endif
+
+// unit test to test disjoint for all geometry combinations
+
+#include <iostream>
+
+#include <boost/test/included/unit_test.hpp>
+
+#include <boost/geometry/core/tag.hpp>
+#include <boost/geometry/core/tags.hpp>
+#include <boost/geometry/multi/core/tags.hpp>
+
+#include <boost/geometry/strategies/strategies.hpp>
+
+#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/geometry/io/wkt/write.hpp>
+#include <boost/geometry/multi/io/wkt/read.hpp>
+#include <boost/geometry/multi/io/wkt/write.hpp>
+#include <boost/geometry/io/dsv/write.hpp>
+
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/segment.hpp>
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/geometries/ring.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+#include <boost/geometry/algorithms/disjoint.hpp>
+
+#include "from_wkt.hpp"
+
+
+#ifdef HAVE_TTMATH
+#include <boost/geometry/extensions/contrib/ttmath_stub.hpp>
+#endif
+
+namespace bg = ::boost::geometry;
+
+//============================================================================
+
+template <typename Geometry, typename Tag = typename bg::tag<Geometry>::type>
+struct pretty_print_geometry
+{
+ static inline std::ostream& apply(Geometry const& geometry)
+ {
+ std::cout << bg::wkt(geometry);
+ return std::cout;
+ }
+};
+
+template <typename Segment>
+struct pretty_print_geometry<Segment, bg::segment_tag>
+{
+ static inline std::ostream& apply(Segment const& segment)
+ {
+ std::cout << "SEGMENT" << bg::dsv(segment);
+ return std::cout;
+ }
+};
+
+template <typename Ring>
+struct pretty_print_geometry<Ring, bg::ring_tag>
+{
+ static inline std::ostream& apply(Ring const& ring)
+ {
+ std::cout << "RING" << bg::dsv(ring);
+ return std::cout;
+ }
+};
+
+template <typename Box>
+struct pretty_print_geometry<Box, bg::box_tag>
+{
+ static inline std::ostream& apply(Box const& box)
+ {
+ std::cout << "BOX" << bg::dsv(box);
+ return std::cout;
+ }
+};
+
+//============================================================================
+
+struct test_disjoint
+{
+ template <typename Geometry1, typename Geometry2>
+ static inline void apply(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ bool expected_result)
+ {
+ bool result = bg::disjoint(geometry1, geometry2);
+ BOOST_CHECK( result == expected_result );
+
+ result = bg::disjoint(geometry2, geometry1);
+ BOOST_CHECK( result == expected_result );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "G1 - G2: ";
+ pretty_print_geometry<Geometry1>::apply(geometry1) << " - ";
+ pretty_print_geometry<Geometry2>::apply(geometry2) << std::endl;
+ std::cout << std::boolalpha;
+ std::cout << "expected/computed result: "
+ << expected_result << " / " << result << std::endl;
+ std::cout << std::endl;
+ std::cout << std::noboolalpha;
+#endif
+ }
+};
+
+//============================================================================
+
+// pointlike-pointlike geometries
+template <typename P>
+inline void test_point_point()
+{
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<P>("POINT(0 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(0 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ true);
+}
+
+template <typename P>
+inline void test_point_multipoint()
+{
+ typedef bg::model::multi_point<P> MP;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0,1 1)"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(1 1,2 2)"),
+ true);
+}
+
+template <typename P>
+inline void test_multipoint_multipoint()
+{
+ typedef bg::model::multi_point<P> MP;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(0 0,1 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0,1 1)"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(0 0,1 0)"),
+ from_wkt<MP>("MULTIPOINT(1 1,2 2)"),
+ true);
+}
+
+//============================================================================
+
+// pointlike-linear geometries
+template <typename P>
+inline void test_point_segment()
+{
+ typedef test_disjoint tester;
+ typedef bg::model::segment<P> S;
+
+ tester::apply(from_wkt<P>("POINT(0 0)"),
+ from_wkt<S>("SEGMENT(0 0,2 0)"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(1 0)"),
+ from_wkt<S>("SEGMENT(0 0,2 0)"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(1 1)"),
+ from_wkt<S>("SEGMENT(0 0,2 0)"),
+ true);
+}
+
+template <typename P>
+inline void test_point_linestring()
+{
+ typedef bg::model::linestring<P> L;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<P>("POINT(0 0)"),
+ from_wkt<L>("LINESTRING(0 0,2 2,4 4)"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(1 1)"),
+ from_wkt<L>("LINESTRING(0 0,2 2,4 4)"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(3 3)"),
+ from_wkt<L>("LINESTRING(0 0,2 2,4 4)"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(1 0)"),
+ from_wkt<L>("LINESTRING(0 0,2 2,4 4)"),
+ true);
+}
+
+template <typename P>
+inline void test_point_multilinestring()
+{
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::multi_linestring<L> ML;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<P>("POINT(0 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 2,4 4),(0 0,2 0,4 0))"),
+ true);
+
+ tester::apply(from_wkt<P>("POINT(0 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 2,4 4),(0 0,2 0,4 0))"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(1 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 2,4 4),(0 0,2 0,4 0))"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 2,4 4),(0 0,2 0,4 0))"),
+ false);
+}
+
+template <typename P>
+inline void test_multipoint_segment()
+{
+ typedef test_disjoint tester;
+ typedef bg::model::multi_point<P> MP;
+ typedef bg::model::segment<P> S;
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(0 0,1 1)"),
+ from_wkt<S>("SEGMENT(0 0,2 0)"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 0,1 1)"),
+ from_wkt<S>("SEGMENT(0 0,2 0)"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 1,2 2)"),
+ from_wkt<S>("SEGMENT(0 0,2 0)"),
+ true);
+}
+
+template <typename P>
+inline void test_multipoint_linestring()
+{
+ typedef bg::model::multi_point<P> MP;
+ typedef bg::model::linestring<P> L;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(0 0,1 0)"),
+ from_wkt<L>("LINESTRING(0 0,2 2,4 4)"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 0,1 1)"),
+ from_wkt<L>("LINESTRING(0 0,2 2,4 4)"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 0,3 3)"),
+ from_wkt<L>("LINESTRING(0 0,2 2,4 4)"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 0,2 0)"),
+ from_wkt<L>("LINESTRING(0 0,2 2,4 4)"),
+ true);
+}
+
+template <typename P>
+inline void test_multipoint_multilinestring()
+{
+ typedef bg::model::multi_point<P> MP;
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::multi_linestring<L> ML;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(0 1,0 2)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 2,4 4),(0 0,2 0,4 0))"),
+ true);
+
+ tester::apply(from_wkt<MP>("POINT(0 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 2,4 4),(0 0,2 0,4 0))"),
+ false);
+
+ tester::apply(from_wkt<MP>("POINT(0 1,1 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 2,4 4),(0 0,2 0,4 0))"),
+ false);
+
+ tester::apply(from_wkt<MP>("POINT(0 1,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 2,4 4),(0 0,2 0,4 0))"),
+ false);
+}
+
+//============================================================================
+
+// pointlike-areal geometries
+template <typename P>
+inline void test_point_box()
+{
+ typedef test_disjoint tester;
+ typedef bg::model::box<P> B;
+
+ tester::apply(from_wkt<P>("POINT(0 0)"),
+ from_wkt<B>("BOX(0 0,1 1)"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(2 2)"),
+ from_wkt<B>("BOX(0 0,1 0)"),
+ true);
+}
+
+template <typename P>
+inline void test_point_ring()
+{
+ typedef bg::model::ring<P, false, false> R; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<P>("POINT(0 0)"),
+ from_wkt<R>("POLYGON((0 0,1 0,0 1))"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(1 1)"),
+ from_wkt<R>("POLYGON((0 0,1 0,0 1))"),
+ true);
+}
+
+template <typename P>
+inline void test_point_polygon()
+{
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<P>("POINT(0 0)"),
+ from_wkt<PL>("POLYGON((0 0,1 0,0 1))"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(1 1)"),
+ from_wkt<PL>("POLYGON((0 0,1 0,0 1))"),
+ true);
+}
+
+template <typename P>
+inline void test_point_multipolygon()
+{
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+ typedef bg::model::multi_polygon<PL> MPL;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<P>("POINT(0 0)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,1 0,0 1)),((2 0,3 0,2 1)))"),
+ false);
+
+ tester::apply(from_wkt<P>("POINT(1 1)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,1 0,0 1)),((2 0,3 0,2 1)))"),
+ true);
+}
+
+template <typename P>
+inline void test_multipoint_box()
+{
+ typedef test_disjoint tester;
+ typedef bg::model::multi_point<P> MP;
+ typedef bg::model::box<P> B;
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(0 0,1 1)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 1,3 3)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(3 3,4 4)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ true);
+}
+
+template <typename P>
+inline void test_multipoint_ring()
+{
+ typedef bg::model::multi_point<P> MP;
+ typedef bg::model::ring<P, false, false> R; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(0 0,1 0)"),
+ from_wkt<R>("POLYGON((0 0,1 0,0 1))"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 0,1 1)"),
+ from_wkt<R>("POLYGON((0 0,1 0,0 1))"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 1,2 2)"),
+ from_wkt<R>("POLYGON((0 0,1 0,0 1))"),
+ true);
+}
+
+template <typename P>
+inline void test_multipoint_polygon()
+{
+ typedef bg::model::multi_point<P> MP;
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(0 0,1 0)"),
+ from_wkt<PL>("POLYGON(((0 0,1 0,0 1)))"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(0 0,2 0)"),
+ from_wkt<PL>("POLYGON(((0 0,1 0,0 1)))"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 1,2 0)"),
+ from_wkt<PL>("POLYGON(((0 0,1 0,0 1)))"),
+ true);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 1,2 3)"),
+ from_wkt<PL>("POLYGON(((0 0,1 0,0 1)))"),
+ true);
+}
+
+template <typename P>
+inline void test_multipoint_multipolygon()
+{
+ typedef bg::model::multi_point<P> MP;
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+ typedef bg::model::multi_polygon<PL> MPL;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(0 0,2 0)"),
+ from_wkt<MPL>("MULTIPOLYGON((0 0,1 0,0 1)),(2 0,3 0,2 1))"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(0 0,1 0)"),
+ from_wkt<MPL>("MULTIPOLYGON((0 0,1 0,0 1)),(2 0,3 0,2 1))"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 1,2 0)"),
+ from_wkt<MPL>("MULTIPOLYGON((0 0,1 0,0 1)),(2 0,3 0,2 1))"),
+ false);
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(1 1,2 3)"),
+ from_wkt<MPL>("MULTIPOLYGON((0 0,1 0,0 1)),(2 0,3 0,2 1))"),
+ true);
+}
+
+//============================================================================
+
+// linear-linear geometries
+template <typename P>
+inline void test_segment_segment()
+{
+ typedef bg::model::segment<P> S;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<S>("SEGMENT(0 0,0 2)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<S>("SEGMENT(2 0,3 0)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<S>("SEGMENT(1 0,3 0)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<S>("SEGMENT(1 0,1 1)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<S>("SEGMENT(1 1,2 2)"),
+ true);
+}
+
+template <typename P>
+inline void test_linestring_segment()
+{
+ typedef bg::model::segment<P> S;
+ typedef bg::model::linestring<P> L;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(0 0,0 2)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(2 0,3 0)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(1 0,3 0)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(1 0,1 1)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(1 1,2 2)"),
+ true);
+}
+
+template <typename P>
+inline void test_multilinestring_segment()
+{
+ typedef bg::model::segment<P> S;
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::multi_linestring<L> ML;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<ML>("MULTILINESTRING((2 0,3 0))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,3 0))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_linestring_linestring()
+{
+ typedef bg::model::linestring<P> L;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(0 0,0 2)"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(2 0,3 0)"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(1 0,3 0)"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(1 0,1 1)"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(1 1,2 2)"),
+ true);
+}
+
+template <typename P>
+inline void test_linestring_multilinestring()
+{
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::multi_linestring<L> ML;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<ML>("MULTILINESTRING((2 0,3 0))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,3 0))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_multilinestring_multilinestring()
+{
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::multi_linestring<L> ML;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,3 0))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,3 0))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2))"),
+ true);
+}
+
+//============================================================================
+
+// linear-areal geometries
+template <typename P>
+inline void test_segment_box()
+{
+ typedef bg::model::segment<P> S;
+ typedef bg::model::box<P> B;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(1 1,3 3)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(2 2,3 3)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(4 4,3 3)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ true);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 4,4 4)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ true);
+
+ tester::apply(from_wkt<S>("SEGMENT(4 0,4 4)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ true);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 -2,0 -1)"),
+ from_wkt<B>("BOX(0 0,1 1)"),
+ true);
+
+ tester::apply(from_wkt<S>("SEGMENT(-2 -2,-2 -1)"),
+ from_wkt<B>("BOX(0 0,1 1)"),
+ true);
+
+ tester::apply(from_wkt<S>("SEGMENT(-2 -2,-2 -2)"),
+ from_wkt<B>("BOX(0 0,1 1)"),
+ true);
+
+ tester::apply(from_wkt<S>("SEGMENT(-2 0,-2 0)"),
+ from_wkt<B>("BOX(0 0,1 1)"),
+ true);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 -2,0 -2)"),
+ from_wkt<B>("BOX(0 0,1 1)"),
+ true);
+
+ tester::apply(from_wkt<S>("SEGMENT(-2 0,-1 0)"),
+ from_wkt<B>("BOX(0 0,1 1)"),
+ true);
+
+ // segment degenerates to a point
+ tester::apply(from_wkt<S>("SEGMENT(0 0,0 0)"),
+ from_wkt<B>("BOX(0 0,1 1)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(1 1,1 1)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(2 2,2 2)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(2 0,2 0)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(0 2,0 2)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(2 2,2 2)"),
+ from_wkt<B>("BOX(0 0,1 1)"),
+ true);
+}
+
+template <typename P>
+inline void test_segment_ring()
+{
+ typedef bg::model::segment<P> S;
+ typedef bg::model::ring<P, false, false> R; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(1 0,3 3)"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(1 1,3 3)"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(2 2,3 3)"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_segment_polygon()
+{
+ typedef bg::model::segment<P> S;
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(1 0,3 3)"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(1 1,3 3)"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(2 2,3 3)"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_segment_multipolygon()
+{
+ typedef bg::model::segment<P> S;
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+ typedef bg::model::multi_polygon<PL> MPL;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<S>("SEGMENT(0 0,2 0)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(1 0,3 3)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(1 1,3 3)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<S>("SEGMENT(2 2,3 3)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ true);
+}
+
+template <typename P>
+inline void test_linestring_box()
+{
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::box<P> B;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(1 1,3 3)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(2 2,3 3)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(4 4,3 3)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ true);
+}
+
+template <typename P>
+inline void test_linestring_ring()
+{
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::ring<P, false, false> R; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(1 0,3 3)"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(1 1,3 3)"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(2 2,3 3)"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_linestring_polygon()
+{
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(1 0,3 3)"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(1 1,3 3)"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(2 2,3 3)"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_linestring_multipolygon()
+{
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+ typedef bg::model::multi_polygon<PL> MPL;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(1 0,3 3)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(1 1,3 3)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<L>("LINESTRING(2 2,3 3)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ true);
+}
+
+template <typename P>
+inline void test_multilinestring_box()
+{
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::multi_linestring<L> ML;
+ typedef bg::model::box<P> B;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((1 1,3 3))"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((2 2,3 3))"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((4 4,3 3))"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ true);
+}
+
+template <typename P>
+inline void test_multilinestring_ring()
+{
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::multi_linestring<L> ML;
+ typedef bg::model::ring<P, false, false> R; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((1 0,3 3))"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((1 1,3 3))"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((2 2,3 3))"),
+ from_wkt<R>("POLYGON((0 0,2 0,0 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_multilinestring_polygon()
+{
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::multi_linestring<L> ML;
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((1 0,3 3))"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((1 1,3 3))"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((2 2,3 3))"),
+ from_wkt<PL>("POLYGON((0 0,2 0,0 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_multilinestring_multipolygon()
+{
+ typedef bg::model::linestring<P> L;
+ typedef bg::model::multi_linestring<L> ML;
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+ typedef bg::model::multi_polygon<PL> MPL;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((1 0,3 3))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((1 1,3 3))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((2 2,3 3))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,0 2)))"),
+ true);
+}
+
+//============================================================================
+
+// areal-areal geometries
+template <typename P>
+inline void test_box_box()
+{
+ typedef bg::model::box<P> B;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<B>("BOX(2 2,3 3)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<B>("BOX(1 1,3 3)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ false);
+
+ tester::apply(from_wkt<B>("BOX(3 3,4 4)"),
+ from_wkt<B>("BOX(0 0,2 2)"),
+ true);
+}
+
+template <typename P>
+inline void test_ring_box()
+{
+ typedef bg::model::box<P> B;
+ typedef bg::model::ring<P, false, false> R; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<B>("BOX(2 2,3 3)"),
+ from_wkt<R>("POLYGON((0 0,2 0,2 2,0 2))"),
+ false);
+
+ tester::apply(from_wkt<B>("BOX(1 1,3 3)"),
+ from_wkt<R>("POLYGON((0 0,2 0,2 2,0 2))"),
+ false);
+
+ tester::apply(from_wkt<B>("BOX(3 3,4 4)"),
+ from_wkt<R>("POLYGON((0 0,2 0,2 2,0 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_polygon_box()
+{
+ typedef bg::model::box<P> B;
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<B>("BOX(2 2,3 3)"),
+ from_wkt<PL>("POLYGON((0 0,2 0,2 2,0 2))"),
+ false);
+
+ tester::apply(from_wkt<B>("BOX(1 1,3 3)"),
+ from_wkt<PL>("POLYGON((0 0,2 0,2 2,0 2))"),
+ false);
+
+ tester::apply(from_wkt<B>("BOX(3 3,4 4)"),
+ from_wkt<PL>("POLYGON((0 0,2 0,2 2,0 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_multipolygon_box()
+{
+ typedef bg::model::box<P> B;
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+ typedef bg::model::multi_polygon<PL> MPL;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<B>("BOX(2 2,3 3)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<B>("BOX(1 1,3 3)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<B>("BOX(3 3,4 4)"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ true);
+}
+
+template <typename P>
+inline void test_ring_ring()
+{
+ typedef bg::model::ring<P, false, false> R; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<R>("POLYGON((2 2,2 3,3 3,3 2))"),
+ from_wkt<R>("POLYGON((0 0,2 0,2 2,0 2))"),
+ false);
+
+ tester::apply(from_wkt<R>("POLYGON((1 1,1 3,3 3,3 1))"),
+ from_wkt<R>("POLYGON((0 0,2 0,2 2,0 2))"),
+ false);
+
+ tester::apply(from_wkt<R>("POLYGON((3 3,3 4,4 4,4 3))"),
+ from_wkt<R>("POLYGON((0 0,2 0,2 2,0 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_polygon_ring()
+{
+ typedef bg::model::ring<P, false, false> R; // ccw, open
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<R>("POLYGON((2 2,2 3,3 3,3 2))"),
+ from_wkt<PL>("POLYGON((0 0,2 0,2 2,0 2))"),
+ false);
+
+ tester::apply(from_wkt<R>("POLYGON((1 1,1 3,3 3,3 1))"),
+ from_wkt<PL>("POLYGON((0 0,2 0,2 2,0 2))"),
+ false);
+
+ tester::apply(from_wkt<R>("POLYGON((3 3,3 4,4 4,4 3))"),
+ from_wkt<PL>("POLYGON((0 0,2 0,2 2,0 2))"),
+ true);
+}
+
+template <typename P>
+inline void test_multipolygon_ring()
+{
+ typedef bg::model::ring<P, false, false> R; // ccw, open
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+ typedef bg::model::multi_polygon<PL> MPL;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<R>("POLYGON((2 2,2 3,3 3,3 2))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<R>("POLYGON((1 1,1 3,3 3,3 1))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<R>("POLYGON((3 3,3 4,4 4,4 3))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ true);
+}
+
+template <typename P>
+inline void test_polygon_polygon()
+{
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<PL>("POLYGON((2 2,2 3,3 3,3 2))"),
+ from_wkt<PL>("POLYGON((0 0,2 0,2 2,0 2))"),
+ false);
+
+ tester::apply(from_wkt<PL>("POLYGON((1 1,1 3,3 3,3 1))"),
+ from_wkt<PL>("POLYGON((0 0,2 0,2 2,0 2))"),
+ false);
+
+ tester::apply(from_wkt<PL>("POLYGON((3 3,3 4,4 4,4 3))"),
+ from_wkt<PL>("POLYGON((0 0,2 0,2 2,0 2))"),
+ true);
+
+ tester::apply(from_wkt<PL>("POLYGON((0 0,9 0,9 9,0 9))"),
+ from_wkt<PL>("POLYGON((3 3,6 3,6 6,3 6))"),
+ false);
+ // polygon with a hole which entirely contains the other polygon
+ tester::apply(from_wkt<PL>("POLYGON((0 0,9 0,9 9,0 9),(2 2,2 7,7 7,7 2))"),
+ from_wkt<PL>("POLYGON((3 3,6 3,6 6,3 6))"),
+ true);
+ // polygon with a hole, but the inner ring intersects the other polygon
+ tester::apply(from_wkt<PL>("POLYGON((0 0,9 0,9 9,0 9),(3 2,3 7,7 7,7 2))"),
+ from_wkt<PL>("POLYGON((2 3,6 3,6 6,2 6))"),
+ false);
+ // polygon with a hole, but the other polygon is entirely contained
+ // between the inner and outer rings.
+ tester::apply(from_wkt<PL>("POLYGON((0 0,9 0,9 9,0 9),(6 2,6 7,7 7,7 2))"),
+ from_wkt<PL>("POLYGON((3 3,5 3,5 6,3 6))"),
+ false);
+ // polygon with a hole and the outer ring of the other polygon lies
+ // between the inner and outer, but without touching either.
+ tester::apply(from_wkt<PL>("POLYGON((0 0,9 0,9 9,0 9),(3 3,3 6,6 6,6 3))"),
+ from_wkt<PL>("POLYGON((2 2,7 2,7 7,2 7))"),
+ false);
+}
+
+template <typename P>
+inline void test_polygon_multipolygon()
+{
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+ typedef bg::model::multi_polygon<PL> MPL;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<PL>("POLYGON((2 2,2 3,3 3,3 2))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<PL>("POLYGON((1 1,1 3,3 3,3 1))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<PL>("POLYGON((3 3,3 4,4 4,4 3))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ true);
+}
+
+template <typename P>
+inline void test_multipolygon_multipolygon()
+{
+ typedef bg::model::polygon<P, false, false> PL; // ccw, open
+ typedef bg::model::multi_polygon<PL> MPL;
+
+ typedef test_disjoint tester;
+
+ tester::apply(from_wkt<MPL>("MULTIPOLYGON(((2 2,2 3,3 3,3 2)))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<MPL>("MULTIPOLYGON(((1 1,1 3,3 3,3 1)))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ false);
+
+ tester::apply(from_wkt<MPL>("MULTIPOLYGON(((3 3,3 4,4 4,4 3)))"),
+ from_wkt<MPL>("MULTIPOLYGON(((0 0,2 0,2 2,0 2)))"),
+ true);
+}
+
+//============================================================================
+
+template <typename CoordinateType>
+inline void test_pointlike_pointlike()
+{
+ typedef bg::model::point<CoordinateType, 2, bg::cs::cartesian> point_type;
+
+ test_point_point<point_type>();
+ // not implemented yet
+ // test_point_multipoint<point_type>();
+
+ // test_multipoint_multipoint<point_type>();
+}
+
+template <typename CoordinateType>
+inline void test_pointlike_linear()
+{
+ typedef bg::model::point<CoordinateType, 2, bg::cs::cartesian> point_type;
+
+ test_point_linestring<point_type>();
+ test_point_multilinestring<point_type>();
+ test_point_segment<point_type>();
+
+ // not implemented yet
+ // test_multipoint_linestring<point_type>();
+ // test_multipoint_multilinestring<point_type>();
+ // test_multipoint_segment<point_type>();
+}
+
+template <typename CoordinateType>
+inline void test_pointlike_areal()
+{
+ typedef bg::model::point<CoordinateType, 2, bg::cs::cartesian> point_type;
+
+ test_point_polygon<point_type>();
+ test_point_multipolygon<point_type>();
+ test_point_ring<point_type>();
+ test_point_box<point_type>();
+
+ // not implemented yet
+ // test_multipoint_polygon<point_type>();
+ // test_multipoint_multipolygon<point_type>();
+ // test_multipoint_ring<point_type>();
+ // test_multipoint_box<point_type>();
+}
+
+template <typename CoordinateType>
+inline void test_linear_linear()
+{
+ typedef bg::model::point<CoordinateType, 2, bg::cs::cartesian> point_type;
+
+ test_linestring_linestring<point_type>();
+ test_linestring_multilinestring<point_type>();
+ test_linestring_segment<point_type>();
+
+ test_multilinestring_multilinestring<point_type>();
+ test_multilinestring_segment<point_type>();
+
+ test_segment_segment<point_type>();
+}
+
+template <typename CoordinateType>
+inline void test_linear_areal()
+{
+ typedef bg::model::point<CoordinateType, 2, bg::cs::cartesian> point_type;
+
+ test_segment_polygon<point_type>();
+ test_segment_multipolygon<point_type>();
+ test_segment_ring<point_type>();
+ test_segment_box<point_type>();
+
+ test_linestring_polygon<point_type>();
+ test_linestring_multipolygon<point_type>();
+ test_linestring_ring<point_type>();
+ test_linestring_box<point_type>();
+
+ test_multilinestring_polygon<point_type>();
+ test_multilinestring_multipolygon<point_type>();
+ test_multilinestring_ring<point_type>();
+ test_multilinestring_box<point_type>();
+}
+
+template <typename CoordinateType>
+inline void test_areal_areal()
+{
+ typedef bg::model::point<CoordinateType, 2, bg::cs::cartesian> point_type;
+
+ test_polygon_polygon<point_type>();
+ test_polygon_multipolygon<point_type>();
+ test_polygon_ring<point_type>();
+ test_polygon_box<point_type>();
+
+ test_multipolygon_multipolygon<point_type>();
+ test_multipolygon_ring<point_type>();
+ test_multipolygon_box<point_type>();
+
+ test_ring_ring<point_type>();
+ test_ring_box<point_type>();
+
+ test_box_box<point_type>();
+}
+
+//============================================================================
+
+BOOST_AUTO_TEST_CASE( test_pointlike_pointlike_all )
+{
+ test_pointlike_pointlike<double>();
+ test_pointlike_pointlike<int>();
+#ifdef HAVE_TTMATH
+ test_pointlike_pointlike<ttmath_big>();
+#endif
+}
+
+BOOST_AUTO_TEST_CASE( test_pointlike_linear_all )
+{
+ test_pointlike_linear<double>();
+ test_pointlike_linear<int>();
+#ifdef HAVE_TTMATH
+ test_pointlike_linear<ttmath_big>();
+#endif
+}
+
+BOOST_AUTO_TEST_CASE( test_pointlike_areal_all )
+{
+ test_pointlike_areal<double>();
+ test_pointlike_areal<int>();
+#ifdef HAVE_TTMATH
+ test_pointlike_areal<ttmath_big>();
+#endif
+}
+
+BOOST_AUTO_TEST_CASE( test_linear_linear_all )
+{
+ test_linear_linear<double>();
+ test_linear_linear<int>();
+#ifdef HAVE_TTMATH
+ test_linear_linear<ttmath_big>();
+#endif
+}
+
+BOOST_AUTO_TEST_CASE( test_linear_areal_all )
+{
+ test_linear_areal<double>();
+ test_linear_areal<int>();
+#ifdef HAVE_TTMATH
+ test_linear_areal<ttmath_big>();
+#endif
+}
+
+BOOST_AUTO_TEST_CASE( test_areal_areal_all )
+{
+ test_areal_areal<double>();
+ test_areal_areal<int>();
+#ifdef HAVE_TTMATH
+ test_areal_areal<ttmath_big>();
+#endif
+}
diff --git a/libs/geometry/test/algorithms/distance.cpp b/libs/geometry/test/algorithms/distance.cpp
index e7d0729764..8f2dfd03c9 100644
--- a/libs/geometry/test/algorithms/distance.cpp
+++ b/libs/geometry/test/algorithms/distance.cpp
@@ -1,9 +1,9 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
-// 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.
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
@@ -12,8 +12,8 @@
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
-#define TEST_ARRAY
+#include <string>
#include <sstream>
#include <algorithms/test_distance.hpp>
@@ -30,6 +30,14 @@
#include <test_geometries/custom_segment.hpp>
#include <test_geometries/wrapped_boost_array.hpp>
+// includes for multi-geometries
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+#include <boost/geometry/multi/io/wkt/read.hpp>
+
+#include <boost/variant/variant.hpp>
+
BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian)
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
@@ -64,19 +72,22 @@ void test_distance_point()
BOOST_CHECK_CLOSE(d, return_type(1.4142135), 0.001);
// Test specifying strategy manually
- typename services::default_strategy<bg::point_tag, P>::type strategy;
+ typename services::default_strategy
+ <
+ bg::point_tag, bg::point_tag, P
+ >::type strategy;
d = bg::distance(p1, p2, strategy);
BOOST_CHECK_CLOSE(d, return_type(1.4142135), 0.001);
{
// Test custom strategy
- BOOST_CONCEPT_ASSERT( (bg::concept::PointDistanceStrategy<taxicab_distance<P> >) );
+ BOOST_CONCEPT_ASSERT( (bg::concept::PointDistanceStrategy<taxicab_distance, P, P>) );
- typedef typename services::return_type<taxicab_distance<P> >::type cab_return_type;
+ typedef typename services::return_type<taxicab_distance, P, P>::type cab_return_type;
BOOST_MPL_ASSERT((boost::is_same<cab_return_type, typename bg::coordinate_type<P>::type>));
- taxicab_distance<P> tcd;
+ taxicab_distance tcd;
cab_return_type d = bg::distance(p1, p2, tcd);
BOOST_CHECK( bg::math::abs(d - cab_return_type(2)) <= cab_return_type(0.01) );
@@ -85,12 +96,15 @@ void test_distance_point()
{
// test comparability
- typedef typename services::default_strategy<bg::point_tag, P>::type strategy_type;
+ typedef typename services::default_strategy
+ <
+ bg::point_tag, bg::point_tag, P
+ >::type strategy_type;
typedef typename services::comparable_type<strategy_type>::type comparable_strategy_type;
strategy_type strategy;
comparable_strategy_type comparable_strategy = services::get_comparable<strategy_type>::apply(strategy);
- return_type comparable = services::result_from_distance<comparable_strategy_type>::apply(comparable_strategy, 3);
+ return_type comparable = services::result_from_distance<comparable_strategy_type, P, P>::apply(comparable_strategy, 3);
BOOST_CHECK_CLOSE(comparable, return_type(9), 0.001);
}
@@ -100,7 +114,6 @@ template <typename P>
void test_distance_segment()
{
typedef typename bg::default_distance_result<P>::type return_type;
- typedef typename bg::coordinate_type<P>::type coordinate_type;
P s1; bg::set<0>(s1, 1); bg::set<1>(s1, 1);
P s2; bg::set<0>(s2, 4); bg::set<1>(s2, 4);
@@ -135,21 +148,48 @@ void test_distance_segment()
// Test specifying strategy manually:
// 1) point-point-distance
- typename bg::strategy::distance::services::default_strategy<bg::point_tag, P>::type pp_strategy;
+ typename bg::strategy::distance::services::default_strategy
+ <
+ bg::point_tag, bg::point_tag, P
+ >::type pp_strategy;
d1 = bg::distance(p1, seg, pp_strategy);
BOOST_CHECK_CLOSE(d1, return_type(1), 0.001);
// 2) point-segment-distance
- typename bg::strategy::distance::services::default_strategy<bg::segment_tag, P>::type ps_strategy;
+ typename bg::strategy::distance::services::default_strategy
+ <
+ bg::point_tag, bg::segment_tag, P
+ >::type ps_strategy;
d1 = bg::distance(p1, seg, ps_strategy);
BOOST_CHECK_CLOSE(d1, return_type(1), 0.001);
// 3) custom point strategy
- taxicab_distance<P> tcd;
+ taxicab_distance tcd;
d1 = bg::distance(p1, seg, tcd);
BOOST_CHECK_CLOSE(d1, return_type(1), 0.001);
}
+template <typename Point, typename Geometry, typename T>
+void test_distance_linear(std::string const& wkt_point, std::string const& wkt_geometry, T const& expected)
+{
+ Point p;
+ bg::read_wkt(wkt_point, p);
+
+ Geometry g;
+ bg::read_wkt(wkt_geometry, g);
+
+ typedef typename bg::default_distance_result<Point>::type return_type;
+ return_type d = bg::distance(p, g);
+
+ // For point-to-linestring (or point-to-polygon), both a point-strategy and a point-segment-strategy can be specified.
+ // Test this.
+ return_type ds1 = bg::distance(p, g, bg::strategy::distance::pythagoras<>());
+ return_type ds2 = bg::distance(p, g, bg::strategy::distance::projected_point<>());
+
+ BOOST_CHECK_CLOSE(d, return_type(expected), 0.001);
+ BOOST_CHECK_CLOSE(ds1, return_type(expected), 0.001);
+ BOOST_CHECK_CLOSE(ds2, return_type(expected), 0.001);
+}
template <typename P>
void test_distance_array_as_linestring()
@@ -176,6 +216,105 @@ void test_distance_array_as_linestring()
}
+// code moved from the distance unit test in multi/algorithms -- start
+template <typename Geometry1, typename Geometry2>
+void test_distance(std::string const& wkt1, std::string const& wkt2, double expected)
+{
+ Geometry1 g1;
+ Geometry2 g2;
+ bg::read_wkt(wkt1, g1);
+ bg::read_wkt(wkt2, g2);
+ typename bg::default_distance_result<Geometry1, Geometry2>::type d = bg::distance(g1, g2);
+
+ BOOST_CHECK_CLOSE(d, expected, 0.0001);
+}
+
+template <typename Geometry1, typename Geometry2, typename Strategy>
+void test_distance(Strategy const& strategy, std::string const& wkt1,
+ std::string const& wkt2, double expected)
+{
+ Geometry1 g1;
+ Geometry2 g2;
+ bg::read_wkt(wkt1, g1);
+ bg::read_wkt(wkt2, g2);
+ typename bg::default_distance_result<Geometry1, Geometry2>::type d = bg::distance(g1, g2, strategy);
+
+ BOOST_CHECK_CLOSE(d, expected, 0.0001);
+}
+
+
+template <typename P>
+void test_2d()
+{
+ typedef bg::model::multi_point<P> mp;
+ typedef bg::model::multi_linestring<bg::model::linestring<P> > ml;
+ test_distance<P, P>("POINT(0 0)", "POINT(1 1)", sqrt(2.0));
+ test_distance<P, mp>("POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
+ test_distance<mp, P>("MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
+ test_distance<mp, mp>("MULTIPOINT((1 1),(1 0),(0 2))", "MULTIPOINT((2 2),(2 3))", sqrt(2.0));
+ test_distance<P, ml>("POINT(0 0)", "MULTILINESTRING((1 1,2 2),(1 0,2 0),(0 2,0 3))", 1.0);
+ test_distance<ml, P>("MULTILINESTRING((1 1,2 2),(1 0,2 0),(0 2,0 3))", "POINT(0 0)", 1.0);
+ test_distance<ml, mp>("MULTILINESTRING((1 1,2 2),(1 0,2 0),(0 2,0 3))", "MULTIPOINT((0 0),(1 1))", 0.0);
+
+ // Test with a strategy
+ bg::strategy::distance::pythagoras<> pyth;
+ test_distance<P, P>(pyth, "POINT(0 0)", "POINT(1 1)", sqrt(2.0));
+ test_distance<P, mp>(pyth, "POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
+ test_distance<mp, P>(pyth, "MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
+}
+
+
+template <typename P>
+void test_3d()
+{
+ typedef bg::model::multi_point<P> mp;
+ test_distance<P, P>("POINT(0 0 0)", "POINT(1 1 1)", sqrt(3.0));
+ test_distance<P, mp>("POINT(0 0 0)", "MULTIPOINT((1 1 1),(1 0 0),(0 1 2))", 1.0);
+ test_distance<mp, mp>("MULTIPOINT((1 1 1),(1 0 0),(0 0 2))", "MULTIPOINT((2 2 2),(2 3 4))", sqrt(3.0));
+}
+
+
+template <typename P1, typename P2>
+void test_mixed()
+{
+ typedef bg::model::multi_point<P1> mp1;
+ typedef bg::model::multi_point<P2> mp2;
+
+ test_distance<P1, P2>("POINT(0 0)", "POINT(1 1)", sqrt(2.0));
+
+ test_distance<P1, mp1>("POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
+ test_distance<P1, mp2>("POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
+ test_distance<P2, mp1>("POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
+ test_distance<P2, mp2>("POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
+
+ // Test automatic reversal
+ test_distance<mp1, P1>("MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
+ test_distance<mp1, P2>("MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
+ test_distance<mp2, P1>("MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
+ test_distance<mp2, P2>("MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
+
+ // Test multi-multi using different point types for each
+ test_distance<mp1, mp2>("MULTIPOINT((1 1),(1 0),(0 2))", "MULTIPOINT((2 2),(2 3))", sqrt(2.0));
+
+ // Test with a strategy
+ using namespace bg::strategy::distance;
+
+ test_distance<P1, P2>(pythagoras<>(), "POINT(0 0)", "POINT(1 1)", sqrt(2.0));
+
+ test_distance<P1, mp1>(pythagoras<>(), "POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
+ test_distance<P1, mp2>(pythagoras<>(), "POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
+ test_distance<P2, mp1>(pythagoras<>(), "POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
+ test_distance<P2, mp2>(pythagoras<>(), "POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
+
+ // Most interesting: reversal AND a strategy (note that the stategy must be reversed automatically
+ test_distance<mp1, P1>(pythagoras<>(), "MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
+ test_distance<mp1, P2>(pythagoras<>(), "MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
+ test_distance<mp2, P1>(pythagoras<>(), "MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
+ test_distance<mp2, P2>(pythagoras<>(), "MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
+}
+// code moved from the distance unit test in multi/algorithms -- end
+
+
template <typename P>
@@ -233,6 +372,7 @@ void test_all()
test_geometry<P, test::wrapped_boost_array<P, 2> >("POINT(3 1)", "LINESTRING(1 1,4 4)", sqrt(2.0));
+ test_distance_linear<P, bg::model::linestring<P> >("POINT(3 1)", "LINESTRING(1 1,4 4)", sqrt(2.0));
}
template <typename P>
@@ -242,10 +382,22 @@ void test_empty_input()
bg::model::linestring<P> line_empty;
bg::model::polygon<P> poly_empty;
bg::model::ring<P> ring_empty;
+ bg::model::multi_point<P> mp_empty;
+ bg::model::multi_linestring<bg::model::linestring<P> > ml_empty;
test_empty_input(p, line_empty);
test_empty_input(p, poly_empty);
test_empty_input(p, ring_empty);
+
+ test_empty_input(p, mp_empty);
+ test_empty_input(p, ml_empty);
+ test_empty_input(mp_empty, mp_empty);
+
+ // Test behaviour if one of the inputs is empty
+ bg::model::multi_point<P> mp;
+ mp.push_back(p);
+ test_empty_input(mp_empty, mp);
+ test_empty_input(mp, mp_empty);
}
void test_large_integers()
@@ -267,7 +419,7 @@ void test_large_integers()
BOOST_AUTO(idist, bg::distance(ia, ib));
BOOST_AUTO(ddist, bg::distance(da, db));
- BOOST_CHECK_MESSAGE(std::abs(idist - ddist) < 0.1,
+ BOOST_CHECK_MESSAGE(std::abs(idist - ddist) < 0.1,
"within<a double> different from within<an int>");
}
// Point-segment
@@ -286,11 +438,61 @@ void test_large_integers()
BOOST_AUTO(idist, bg::distance(ia, ib));
BOOST_AUTO(ddist, bg::distance(da, db));
- BOOST_CHECK_MESSAGE(std::abs(idist - ddist) < 0.1,
+ BOOST_CHECK_MESSAGE(std::abs(idist - ddist) < 0.1,
"within<a double> different from within<an int>");
}
}
+template <typename T>
+void test_variant()
+{
+ typedef bg::model::point<T, 2, bg::cs::cartesian> point_type;
+ typedef bg::model::segment<point_type> segment_type;
+ typedef bg::model::box<point_type> box_type;
+ typedef boost::variant<point_type, segment_type, box_type> variant_type;
+
+ point_type point;
+ std::string const point_li = "POINT(1 3)";
+ bg::read_wkt(point_li, point);
+
+ segment_type seg;
+ std::string const seg_li = "LINESTRING(1 1,4 4)";
+ bg::read_wkt(seg_li, seg);
+
+ variant_type v1, v2;
+
+ BOOST_MPL_ASSERT((
+ boost::is_same
+ <
+ typename bg::distance_result
+ <
+ variant_type, variant_type, bg::default_strategy
+ >::type,
+ double
+ >
+ ));
+
+ // Default strategy
+ v1 = point;
+ v2 = point;
+ BOOST_CHECK_CLOSE(bg::distance(v1, v2), bg::distance(point, point), 0.0001);
+ BOOST_CHECK_CLOSE(bg::distance(v1, point), bg::distance(point, point), 0.0001);
+ BOOST_CHECK_CLOSE(bg::distance(point, v2), bg::distance(point, point), 0.0001);
+ v1 = point;
+ v2 = seg;
+ BOOST_CHECK_CLOSE(bg::distance(v1, v2), bg::distance(point, seg), 0.0001);
+ BOOST_CHECK_CLOSE(bg::distance(v1, seg), bg::distance(point, seg), 0.0001);
+ BOOST_CHECK_CLOSE(bg::distance(point, v2), bg::distance(point, seg), 0.0001);
+
+ // User defined strategy
+ v1 = point;
+ v2 = point;
+ bg::strategy::distance::haversine<double> s;
+ //BOOST_CHECK_CLOSE(bg::distance(v1, v2, s), bg::distance(point, point, s), 0.0001);
+ //BOOST_CHECK_CLOSE(bg::distance(v1, point, s), bg::distance(point, point, s), 0.0001);
+ //BOOST_CHECK_CLOSE(bg::distance(point, v2, s), bg::distance(point, point, s), 0.0001);
+}
+
int test_main(int, char* [])
{
#ifdef TEST_ARRAY
@@ -313,5 +515,26 @@ int test_main(int, char* [])
test_empty_input<bg::model::d2::point_xy<int> >();
+ // below are the test cases moved here from the distance unit test
+ // in test/multi/algorithms
+ test_2d<boost::tuple<float, float> >();
+ test_2d<bg::model::d2::point_xy<float> >();
+ test_2d<bg::model::d2::point_xy<double> >();
+
+ test_3d<boost::tuple<float, float, float> >();
+ test_3d<bg::model::point<double, 3, bg::cs::cartesian> >();
+
+ test_mixed<bg::model::d2::point_xy<float>, bg::model::d2::point_xy<double> >();
+
+#ifdef HAVE_TTMATH
+ test_2d<bg::model::d2::point_xy<ttmath_big> >();
+ test_mixed<bg::model::d2::point_xy<ttmath_big>, bg::model::d2::point_xy<double> >();
+#endif
+
+ test_empty_input<bg::model::d2::point_xy<int> >();
+
+ test_variant<double>();
+ test_variant<int>();
+
return 0;
}
diff --git a/libs/geometry/test/algorithms/distance.vcproj b/libs/geometry/test/algorithms/distance.vcproj
deleted file mode 100644
index 831fafbaac..0000000000
--- a/libs/geometry/test/algorithms/distance.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="distance"
- ProjectGUID="{347D08A4-22E9-45B1-A55B-AE84AA2EAA53}"
- RootNamespace="distance"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\distance"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\distance"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\distance.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/distance_all.cpp b/libs/geometry/test/algorithms/distance_all.cpp
new file mode 100644
index 0000000000..74a46fffb5
--- /dev/null
+++ b/libs/geometry/test/algorithms/distance_all.cpp
@@ -0,0 +1,20 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_distance_all
+#endif
+
+#include "distance_pointlike_pointlike.cpp"
+#include "distance_pointlike_linear.cpp"
+#include "distance_pointlike_areal.cpp"
+#include "distance_linear_linear.cpp"
+#include "distance_linear_areal.cpp"
+#include "distance_areal_areal.cpp"
diff --git a/libs/geometry/test/algorithms/distance_areal_areal.cpp b/libs/geometry/test/algorithms/distance_areal_areal.cpp
new file mode 100644
index 0000000000..53d01dda09
--- /dev/null
+++ b/libs/geometry/test/algorithms/distance_areal_areal.cpp
@@ -0,0 +1,436 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_distance_areal_areal
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_distance_common.hpp"
+
+
+typedef bg::model::point<int,2,bg::cs::cartesian> int_point_type;
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::polygon<point_type, false> polygon_type;
+typedef bg::model::multi_polygon<polygon_type> multi_polygon_type;
+typedef bg::model::ring<point_type, false> ring_type;
+typedef bg::model::box<int_point_type> int_box_type;
+typedef bg::model::box<point_type> box_type;
+
+namespace services = bg::strategy::distance::services;
+typedef bg::default_distance_result<point_type>::type return_type;
+
+typedef bg::strategy::distance::projected_point<> point_segment_strategy;
+typedef bg::strategy::distance::pythagoras_box_box<> box_box_strategy;
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_polygon_polygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "polygon/polygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<polygon_type, polygon_type> tester;
+
+ tester::apply("polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ "polygon((-5 20,5 20,5 25,-5 25,-5 20))",
+ 10, 100, strategy);
+
+ tester::apply("polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ "polygon((-5 20,-5 5,5 5,5 20,-5 20))",
+ 0, 0, strategy);
+
+ tester::apply("polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ "polygon((-5 20,-5 -20,5 -20,5 20,-5 20))",
+ 0, 0, strategy);
+
+ tester::apply("polygon((-10 -10,10 -10,10 10,-10 10,-10 -10),\
+ (-5 -5,-5 5,5 5,5 -5,-5 -5))",
+ "polygon((-1 -1,0 0,-1 0,-1 -1))",
+ 4, 16, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_polygon_multipolygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "polygon/multipolygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ polygon_type, multi_polygon_type
+ > tester;
+
+ tester::apply("polygon((12 0,14 0,19 0,19.9 -1,12 0))",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 0.1, 0.01, strategy, true);
+
+ tester::apply("polygon((19 0,19.9 -1,12 0,20.5 0.5,19 0))",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 0, 0, strategy, true);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_polygon_ring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "polygon/ring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<polygon_type, ring_type> tester;
+
+ tester::apply("polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ "polygon((-5 20,5 20,5 25,-5 25,-5 20))",
+ 10, 100, strategy);
+
+ tester::apply("polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ "polygon((-5 20,-5 5,5 5,5 20,-5 20))",
+ 0, 0, strategy);
+
+ tester::apply("polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ "polygon((-5 20,-5 -20,5 -20,5 20,-5 20))",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multipolygon_multipolygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multipolygon/multipolygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ multi_polygon_type, multi_polygon_type
+ > tester;
+
+ tester::apply("multipolygon(((12 0,14 0,14 1,12 0)),\
+ ((18 0,19 0,19.9 -1,18 0)))",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 0.1, 0.01, strategy);
+
+ tester::apply("multipolygon(((18 0,19 0,19.9 -1,18 0)),\
+ ((12 0,14 0,20.5 0.5,12 0)))",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multipolygon_ring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multipolygon/ring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ multi_polygon_type, ring_type
+ > tester;
+
+ tester::apply("multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ "polygon((12 0,14 0,19 0,19.9 -1,12 0))",
+ 0.1, 0.01, strategy, true);
+
+ tester::apply("multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ "polygon((19 0,19.9 -1,12 0,20.5 0.5,19 0))",
+ 0, 0, strategy, true);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_ring_ring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "ring/ring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<ring_type, ring_type> tester;
+
+ tester::apply("polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ "polygon((-5 20,5 20,5 25,-5 25,-5 20))",
+ 10, 100, strategy);
+
+ tester::apply("polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ "polygon((-5 20,-5 5,5 5,5 20,-5 20))",
+ 0, 0, strategy);
+
+ tester::apply("polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ "polygon((-5 20,-5 -20,5 -20,5 20,-5 20))",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_box_box(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "box/box distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<int_box_type, int_box_type> int_tester;
+ typedef test_distance_of_geometries<box_type, box_type> tester;
+
+ int_tester::apply("box(5 5,10 10)",
+ "box(0 0,1 1)",
+ sqrt(32.0), 32, strategy);
+
+ tester::apply("box(5 5,10 10)",
+ "box(0 0,1 1)",
+ sqrt(32.0), 32, strategy);
+
+ tester::apply("box(3 8,13 18)",
+ "box(0 0,5 5)",
+ 3, 9, strategy);
+
+ tester::apply("box(5 5,10 10)",
+ "box(0 0,5 5)",
+ 0, 0, strategy);
+
+ tester::apply("box(5 5,10 10)",
+ "box(0 0,6 6)",
+ 0, 0, strategy);
+
+ tester::apply("box(3 5,13 15)",
+ "box(0 0,5 5)",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_polygon_box(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "polygon/box distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<polygon_type, box_type> tester;
+
+ tester::apply("polygon((10 10,10 5,5 5,5 10,10 10))",
+ "box(0 0,1 1)",
+ sqrt(32.0), 32, strategy);
+
+ tester::apply("polygon((10 10,10 5,5 5,5 10,10 10))",
+ "box(0 0,5 5)",
+ 0, 0, strategy);
+
+ tester::apply("polygon((10 10,10 5,5 5,5 10,10 10))",
+ "box(0 0,6 6)",
+ 0, 0, strategy);
+
+ tester::apply("polygon((10 10,15 5,10 0,5 5,10 10))",
+ "box(5 0,7.5 2.5)",
+ 0, 0, strategy);
+
+ tester::apply("polygon((10 10,15 5,10 0,5 5,10 10))",
+ "box(5 0,6 1)",
+ sqrt(4.5), 4.5, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multipolygon_box(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multipolygon/box distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<multi_polygon_type, box_type> tester;
+
+ tester::apply("multipolygon(((-10 -10,-10 -9,-9 -9,-9 -10,-10 -10)),\
+ ((2 2,2 3,3 3,3 2,2 2)))",
+ "box(0 0,1 1)",
+ sqrt(2.0), 2, strategy);
+
+ tester::apply("multipolygon(((-10 -10,-10 -9,-9 -9,-9 -10,-10 -10)),\
+ ((2 2,2 3,3 3,3 2,2 2)))",
+ "box(0 0,2 2)",
+ 0, 0, strategy);
+
+ tester::apply("multipolygon(((-10 -10,-10 -9,-9 -9,-9 -10,-10 -10)),\
+ ((2 2,2 3,3 3,3 2,2 2)))",
+ "box(0 0,2.5 2)",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_ring_box(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "ring/box distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<ring_type, box_type> tester;
+
+ tester::apply("polygon((10 10,10 5,5 5,5 10,10 10))",
+ "box(0 0,1 1)",
+ sqrt(32.0), 32, strategy);
+
+ tester::apply("polygon((10 10,10 5,5 5,5 10,10 10))",
+ "box(0 0,5 5)",
+ 0, 0, strategy);
+
+ tester::apply("polygon((10 10,10 5,5 5,5 10,10 10))",
+ "box(0 0,6 6)",
+ 0, 0, strategy);
+
+ tester::apply("polygon((10 10,15 5,10 0,5 5,10 10))",
+ "box(5 0,7.5 2.5)",
+ 0, 0, strategy);
+
+ tester::apply("polygon((10 10,15 5,10 0,5 5,10 10))",
+ "box(5 0,6 1)",
+ sqrt(4.5), 4.5, strategy);
+}
+
+//===========================================================================
+
+template <typename Point, typename Strategy>
+void test_more_empty_input_areal_areal(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "testing on empty inputs... " << std::flush;
+#endif
+ bg::model::polygon<Point> polygon_empty;
+ bg::model::multi_polygon<bg::model::polygon<Point> > multipolygon_empty;
+ bg::model::ring<Point> ring_empty;
+
+ bg::model::polygon<Point> polygon =
+ from_wkt<bg::model::polygon<Point> >("polygon((0 0,1 0,0 1))");
+
+ bg::model::multi_polygon<bg::model::polygon<Point> > multipolygon =
+ from_wkt
+ <
+ bg::model::multi_polygon<bg::model::polygon<Point> >
+ >("multipolygon(((0 0,1 0,0 1)))");
+
+ bg::model::ring<Point> ring =
+ from_wkt<bg::model::ring<Point> >("polygon((0 0,1 0,0 1))");
+
+ // 1st geometry is empty
+ test_empty_input(polygon_empty, polygon, strategy);
+ test_empty_input(polygon_empty, multipolygon, strategy);
+ test_empty_input(polygon_empty, ring, strategy);
+ test_empty_input(multipolygon_empty, polygon, strategy);
+ test_empty_input(multipolygon_empty, multipolygon, strategy);
+ test_empty_input(multipolygon_empty, ring, strategy);
+ test_empty_input(ring_empty, polygon, strategy);
+ test_empty_input(ring_empty, multipolygon, strategy);
+ test_empty_input(ring_empty, ring, strategy);
+
+ // 2nd geometry is empty
+ test_empty_input(polygon, polygon_empty, strategy);
+ test_empty_input(polygon, multipolygon_empty, strategy);
+ test_empty_input(polygon, ring_empty, strategy);
+ test_empty_input(multipolygon, polygon_empty, strategy);
+ test_empty_input(multipolygon, multipolygon_empty, strategy);
+ test_empty_input(multipolygon, ring_empty, strategy);
+ test_empty_input(ring, polygon_empty, strategy);
+ test_empty_input(ring, multipolygon_empty, strategy);
+ test_empty_input(ring, ring_empty, strategy);
+
+ // both geometries are empty
+ test_empty_input(polygon_empty, polygon_empty, strategy);
+ test_empty_input(polygon_empty, multipolygon_empty, strategy);
+ test_empty_input(polygon_empty, ring_empty, strategy);
+ test_empty_input(multipolygon_empty, polygon_empty, strategy);
+ test_empty_input(multipolygon_empty, multipolygon_empty, strategy);
+ test_empty_input(multipolygon_empty, ring_empty, strategy);
+ test_empty_input(ring_empty, polygon_empty, strategy);
+ test_empty_input(ring_empty, multipolygon_empty, strategy);
+ test_empty_input(ring_empty, ring_empty, strategy);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "done!" << std::endl;
+#endif
+}
+
+//===========================================================================
+
+BOOST_AUTO_TEST_CASE( test_all_polygon_polygon )
+{
+ test_distance_polygon_polygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_polygon_multipolygon )
+{
+ test_distance_polygon_multipolygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_polygon_ring )
+{
+ test_distance_polygon_ring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multipolygon_multipolygon )
+{
+ test_distance_multipolygon_multipolygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multipolygon_ring )
+{
+ test_distance_multipolygon_ring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_ring_ring )
+{
+ test_distance_ring_ring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_box_box )
+{
+ test_distance_box_box(box_box_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_polygon_box )
+{
+ test_distance_polygon_box(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multipolygon_box )
+{
+ test_distance_multipolygon_box(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_ring_box )
+{
+ test_distance_ring_box(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_empty_input_areal_areal )
+{
+ test_more_empty_input_areal_areal<point_type>(point_segment_strategy());
+}
diff --git a/libs/geometry/test/algorithms/distance_linear_areal.cpp b/libs/geometry/test/algorithms/distance_linear_areal.cpp
new file mode 100644
index 0000000000..b50b168538
--- /dev/null
+++ b/libs/geometry/test/algorithms/distance_linear_areal.cpp
@@ -0,0 +1,951 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_distance_linear_areal
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_distance_common.hpp"
+
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::point<int,2,bg::cs::cartesian> int_point_type;
+typedef bg::model::segment<point_type> segment_type;
+typedef bg::model::segment<int_point_type> int_segment_type;
+typedef bg::model::linestring<point_type> linestring_type;
+typedef bg::model::multi_linestring<linestring_type> multi_linestring_type;
+typedef bg::model::polygon<point_type, false> polygon_type;
+typedef bg::model::polygon<point_type, false, false> open_polygon_type;
+typedef bg::model::multi_polygon<polygon_type> multi_polygon_type;
+typedef bg::model::multi_polygon<open_polygon_type> open_multipolygon_type;
+typedef bg::model::ring<point_type, false> ring_type;
+typedef bg::model::box<point_type> box_type;
+typedef bg::model::box<int_point_type> int_box_type;
+
+namespace services = bg::strategy::distance::services;
+typedef bg::default_distance_result<point_type>::type return_type;
+
+typedef bg::strategy::distance::pythagoras<> point_point_strategy;
+typedef bg::strategy::distance::projected_point<> point_segment_strategy;
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_segment_polygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "segment/polygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<segment_type, polygon_type> tester;
+
+ tester::apply("segment(-1 20,1 20)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 10, 100, strategy);
+
+ tester::apply("segment(1 20,2 40)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 10, 100, strategy);
+
+ tester::apply("segment(-1 20,-1 5)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy);
+
+ tester::apply("segment(-1 20,-1 -20)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_linestring_polygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "linestring/polygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<linestring_type, polygon_type> tester;
+
+ tester::apply("linestring(-1 20,1 20,1 30)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 10, 100, strategy, true);
+
+ tester::apply("linestring(-5 1,-2 1)",
+ "polygon((0 0,10 0,10 10,0 10,0 0))",
+ 2, 4, strategy, true);
+
+ tester::apply("linestring(-1 20,1 20,1 5)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy, true);
+
+ tester::apply("linestring(-1 20,1 20,1 -20)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy, true);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_linestring_open_polygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "linestring/open polygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ linestring_type, open_polygon_type
+ > tester;
+
+ tester::apply("linestring(-5 1,-2 1)",
+ "polygon((0 0,10 0,10 10,0 10))",
+ 2, 4, strategy, true);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multilinestring_polygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multilinestring/polygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ multi_linestring_type, polygon_type
+ > tester;
+
+ tester::apply("multilinestring((-100 -100,-90 -90),(-1 20,1 20,1 30))",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 10, 100, strategy, true);
+
+ tester::apply("multilinestring((-1 20,1 20,1 30),(-1 20,1 20,1 5))",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy, true);
+
+ tester::apply("multilinestring((-1 20,1 20,1 30),(-1 20,1 20,1 -20))",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy, true);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_segment_multipolygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "segment/multipolygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ segment_type, multi_polygon_type
+ > tester;
+
+ tester::apply("segment(-1 20,1 20)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((0 22,-1 30, 2 40,0 22)))",
+ 2, 4, strategy);
+
+ tester::apply("segment(12 0,14 0)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 2, 4, strategy);
+
+ tester::apply("segment(12 0,20.5 0.5)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 0, 0, strategy);
+
+ tester::apply("segment(12 0,50 0)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_linestring_multipolygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "linestring/multipolygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ linestring_type, multi_polygon_type
+ > tester;
+
+ tester::apply("linestring(-1 20,1 20)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((0 22,-1 30, 2 40,0 22)))",
+ 2, 4, strategy, true);
+
+ tester::apply("linestring(12 0,14 0)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 2, 4, strategy, true);
+
+ tester::apply("linestring(12 0,20.5 0.5)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 0, 0, strategy, true);
+
+ tester::apply("linestring(12 0,50 0)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 0, 0, strategy, true);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_linestring_open_multipolygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "linestring/open multipolygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ linestring_type, open_multipolygon_type
+ > tester;
+
+ tester::apply("linestring(-5 1,-2 1)",
+ "multipolygon(((0 0,10 0,10 10,0 10)))",
+ 2, 4, strategy, true);
+
+ tester::apply("linestring(-5 1,-3 1)",
+ "multipolygon(((20 20,21 20,21 21,20 21)),((0 0,10 0,10 10,0 10)))",
+ 3, 9, strategy, true);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multilinestring_multipolygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multilinestring/multipolygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ multi_linestring_type, multi_polygon_type
+ > tester;
+
+ tester::apply("multilinestring((12 0,14 0),(19 0,19.9 -1))",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10)))",
+ 0.1, 0.01, strategy, true);
+
+ tester::apply("multilinestring((19 0,19.9 -1),(12 0,20.5 0.5))",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 0, 0, strategy, true);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_segment_ring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "segment/ring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<segment_type, ring_type> tester;
+
+ tester::apply("segment(-1 20,1 20)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 10, 100, strategy);
+
+ tester::apply("segment(1 20,2 40)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 10, 100, strategy);
+
+ tester::apply("segment(-1 20,-1 5)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy);
+
+ tester::apply("segment(-1 20,-1 -20)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_linestring_ring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "linestring/ring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<linestring_type, ring_type> tester;
+
+ tester::apply("linestring(-1 20,1 20,1 30)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 10, 100, strategy, true);
+
+ tester::apply("linestring(-1 20,1 20,1 5)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy, true);
+
+ tester::apply("linestring(-1 20,1 20,1 -20)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy, true);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multilinestring_ring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multilinestring/ring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ multi_linestring_type, ring_type
+ > tester;
+
+ tester::apply("multilinestring((-100 -100,-90 -90),(-1 20,1 20,1 30))",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 10, 100, strategy, true);
+
+ tester::apply("multilinestring((-1 20,1 20,1 30),(-1 20,1 20,1 5))",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy, true);
+
+ tester::apply("multilinestring((-1 20,1 20,1 30),(-1 20,1 20,1 -20))",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy, true);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_segment_box(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "2D segment/box distance tests" << std::endl;
+#endif
+ typedef int_box_type B;
+ typedef segment_type S;
+ typedef int_segment_type IS;
+
+ typedef test_distance_of_geometries<B, S> tester;
+ typedef test_distance_of_geometries<B, IS> itester;
+
+ // 1st example by Adam Wulkiewicz
+ tester::apply("BOX(5 51,42 96)",
+ "SEGMENT(6.6799994 95.260002,35.119999 56.340004)",
+ 0, 0, strategy);
+
+ // 2nd example by Adam Wulkiewicz
+ tester::apply("BOX(51 55,94 100)",
+ "SEGMENT(92.439995 50.130001,59.959999 80.870003)",
+ 0, 0, strategy);
+
+ // segments that intersect the box
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 0.5,0.5 0.75)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 0.5,1.5 0.75)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 -1,0.5 2)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 1,1.5 0.75)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(2 0,0 2)",
+ 0, 0, strategy);
+
+ // segment that has closest point on box boundary
+ tester::apply("box(0 0,1 1)",
+ "segment(4 0.5,5 0.75)",
+ 3, 9, strategy);
+
+ // segment that has closest point on box corner
+ tester::apply("box(0 0,1 1)",
+ "segment(4 0,0 4)",
+ sqrt(2.0), 2, strategy);
+ itester::apply("box(0 0,1 1)",
+ "segment(-4 0,0 -4)",
+ sqrt(8.0), 8, strategy);
+ itester::apply("box(0 0,1 1)",
+ "segment(-8 4,4 -8)",
+ sqrt(8.0), 8, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-4 0,0 4)",
+ 1.5 * sqrt(2.0), 4.5, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-4 0,1 5)",
+ 1.5 * sqrt(2.0), 4.5, strategy);
+ itester::apply("box(0 0,1 1)",
+ "segment(0 -2,3 1)",
+ 0.5 * sqrt(2.0), 0.5, strategy);
+ itester::apply("box(0 0,1 1)",
+ "segment(0 -2,2 2)",
+ 0, 0, strategy);
+
+ // horizontal segments
+ itester::apply("box(0 0,1 1)",
+ "segment(-2 -1,-1 -1)",
+ sqrt(2.0), 2, strategy);
+ itester::apply("box(0 0,1 1)",
+ "segment(-1 -1,0 -1)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-0.5 -1,0.5 -1)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 -1,0.75 -1)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 -1,1.25 -1)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 -1,2 -1)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(2 -1,3 -1)",
+ sqrt(2.0), 2, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -1,2 -1)",
+ 1, 1, strategy);
+
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 0,-1 0)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 0,0 0)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-0.5 0,0.5 0)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 0,0.75 0)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 0,1.25 0)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 0,2 0)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(2 0,3 0)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 0,2 0)",
+ 0, 0, strategy);
+
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 0.5,-1 0.5)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 0.5,0 0.5)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-0.5 0.5,0.5 0.5)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 0.5,0.75 0.5)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 0.5,1.25 0.5)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 0.5,2 0.5)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(2 0.5,3 0.5)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 0.5,2 0.5)",
+ 0, 0, strategy);
+
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 1,-1 1)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 1,0 1)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-0.5 1,0.5 1)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 1,0.75 1)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 1,1.25 1)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 1,2 1)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(2 1,3 1)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 1,2 1)",
+ 0, 0, strategy);
+
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 3,-1 3)",
+ sqrt(5.0), 5, strategy);
+ itester::apply("box(0 0,1 1)",
+ "segment(-1 3,0 3)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-0.5 3,0.5 3)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 3,0.75 3)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 3,1.25 3)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 3,2 3)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(2 3,3 3)",
+ sqrt(5.0), 5, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 3,2 3)",
+ 2, 4, strategy);
+
+ // vertical segments
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 -2,-1 -1)",
+ sqrt(2.0), 2, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 -1,-1 0)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 -0.5,-1 0.5)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 0.5,-1 0.75)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 0.5,-1 1.25)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 1,-1 2)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 2,-1 3)",
+ sqrt(2.0), 2, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 -2,-1 2)",
+ 1, 1, strategy);
+
+ tester::apply("box(0 0,1 1)",
+ "segment(0 -2,0 -1)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0 -1,0 0)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0 -0.5,0 0.5)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0 0.5,0 0.75)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0 0.5,0 1.25)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0 1,0 2)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0 2,0 3)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0 -2,0 2)",
+ 0, 0, strategy);
+
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 -2,0.5 -1)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 -1,0.5 0)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 -0.5,0.5 0.5)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 0.5,0.5 0.75)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 0.5,0.5 1.25)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 1,0.5 2)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 2,0.5 3)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 -2,0.5 2)",
+ 0, 0, strategy);
+
+ tester::apply("box(0 0,1 1)",
+ "segment(1 -2,1 -1)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 -1,1 0)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 -0.5,1 0.5)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 0.5,1 0.75)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 0.5,1 1.25)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 1,1 2)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 2,1 3)",
+ 1, 1, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 -2,1 2)",
+ 0, 0, strategy);
+
+ tester::apply("box(0 0,1 1)",
+ "segment(3 -2,3 -1)",
+ sqrt(5.0), 5, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(3 -1,3 0)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(3 -0.5,3 0.5)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(3 0.5,3 0.75)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(3 0.5,3 1.25)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(3 1,3 2)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(3 2,3 3)",
+ sqrt(5.0), 5, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(3 -2,3 2)",
+ 2, 4, strategy);
+
+ // positive slope
+ itester::apply("box(0 0,1 1)",
+ "segment(-2 -2,-1 -1)",
+ sqrt(2.0), 2, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,0 -0.5)",
+ 0.5, 0.25, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,0.5 -0.5)",
+ 0.5, 0.25, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,1 -0.5)",
+ 0.5, 0.25, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,2 0)",
+ sqrt(0.2), 0.2, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,4 1)",
+ sqrt(0.2), 0.2, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,-1.5 0)",
+ 1.5, 2.25, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,-1.5 0.5)",
+ 1.5, 2.25, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,-1.5 1)",
+ 1.5, 2.25, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,0 2)",
+ sqrt(0.2), 0.2, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,1 4)",
+ sqrt(0.2), 0.2, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,4 2)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,2 4)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,4 3)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,3 4)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,3 3)",
+ 0, 0, strategy);
+
+ // negative slope
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 -2,-1 -3)",
+ sqrt(8.0), 8, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-3 -1,0 -4)",
+ sqrt(8.0), 8, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 0.75,-1.5 0.5)",
+ 1.5, 2.25, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 1.5,-1.5 0.5)",
+ 1.5, 2.25, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 2,0.75 1.5)",
+ 0.5, 0.25, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 2,0.75 1.5)",
+ 0.5, 0.25, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0 2,2 0)",
+ 0, 0, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0 3,3 0)",
+ sqrt(0.5), 0.5, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 4,4 -1)",
+ sqrt(0.5), 0.5, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 4,0 3)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-2 5,-1 4)",
+ sqrt(10.0), 10, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(3 -1,4 -4)",
+ sqrt(5.0), 5, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(1 2,2 1)",
+ sqrt(0.5), 0.5, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 -2,2 -3)",
+ 2, 4, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 -2,0 -3)",
+ sqrt(5.0), 5, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 -2,0.5 -3.5)",
+ sqrt(5.0), 5, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(-1 -2,0.5 -3.5)",
+ sqrt(5.0), 5, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 3,2.5 2)",
+ sqrt(2.45), 2.45, strategy);
+ tester::apply("box(0 0,1 1)",
+ "segment(0.5 1.5,1.5 -1.5)",
+ 0, 0, strategy);
+
+ // test degenerate segment
+ tester::apply("box(0 0,2 2)",
+ "segment(4 1,4 1)",
+ 2, 4, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_linestring_box(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "linestring/box distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<linestring_type, box_type> tester;
+
+ // linestrings that intersect the box
+ tester::apply("linestring(-1 0.5,0.5 0.75)",
+ "box(0 0,1 1)",
+ 0, 0, strategy);
+ tester::apply("linestring(-1 0.5,1.5 0.75)",
+ "box(0 0,1 1)",
+ 0, 0, strategy);
+
+ // linestring that has closest point on box boundary
+ tester::apply("linestring(4 0.5,5 0.75)",
+ "box(0 0,1 1)",
+ 3, 9, strategy);
+
+ // linestring that has closest point on box corner
+ tester::apply("linestring(4 0,0 4)",
+ "box(0 0,1 1)",
+ sqrt(2.0), 2, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multilinestring_box(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multilinestring/box distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<multi_linestring_type, box_type> tester;
+
+ // multilinestring that intersects the box
+ tester::apply("multilinestring((-1 0.5,0.5 0.75),(4 0.5,5 0.75))",
+ "box(0 0,1 1)",
+ 0, 0, strategy);
+
+ // multilinestring that has closest point on box boundary
+ tester::apply("multilinestring((4 0.5,5 0.75))",
+ "box(0 0,1 1)",
+ 3, 9, strategy);
+
+ // multilinestring that has closest point on box corner
+ tester::apply("multilinestring((5 0,0 5),(4 0,0 4))",
+ "box(0 0,1 1)",
+ sqrt(2.0), 2, strategy);
+}
+
+//===========================================================================
+
+template <typename Point, typename Strategy>
+void test_more_empty_input_linear_areal(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "testing on empty inputs... " << std::flush;
+#endif
+ bg::model::linestring<Point> line_empty;
+ bg::model::polygon<Point> polygon_empty;
+ bg::model::multi_linestring<bg::model::linestring<Point> > multiline_empty;
+ bg::model::multi_polygon<bg::model::polygon<Point> > multipolygon_empty;
+ bg::model::ring<Point> ring_empty;
+
+ bg::model::linestring<Point> line =
+ from_wkt<bg::model::linestring<Point> >("linestring(0 0,1 1)");
+
+ bg::model::polygon<Point> polygon =
+ from_wkt<bg::model::polygon<Point> >("polygon((0 0,1 0,0 1))");
+
+ bg::model::ring<Point> ring =
+ from_wkt<bg::model::ring<Point> >("polygon((0 0,1 0,0 1))");
+
+ // 1st geometry is empty
+ test_empty_input(line_empty, polygon, strategy);
+ test_empty_input(line_empty, ring, strategy);
+ test_empty_input(multiline_empty, polygon, strategy);
+ test_empty_input(multiline_empty, ring, strategy);
+
+ // 2nd geometry is empty
+ test_empty_input(line, polygon_empty, strategy);
+ test_empty_input(line, multipolygon_empty, strategy);
+ test_empty_input(line, ring_empty, strategy);
+
+ // both geometries are empty
+ test_empty_input(line_empty, polygon_empty, strategy);
+ test_empty_input(line_empty, multipolygon_empty, strategy);
+ test_empty_input(line_empty, ring_empty, strategy);
+ test_empty_input(multiline_empty, polygon_empty, strategy);
+ test_empty_input(multiline_empty, multipolygon_empty, strategy);
+ test_empty_input(multiline_empty, ring_empty, strategy);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "done!" << std::endl;
+#endif
+}
+
+//===========================================================================
+
+BOOST_AUTO_TEST_CASE( test_all_segment_polygon )
+{
+ test_distance_segment_polygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_linestring_polygon )
+{
+ test_distance_linestring_polygon(point_segment_strategy());
+ test_distance_linestring_open_polygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multilinestring_polygon )
+{
+ test_distance_multilinestring_polygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_segment_multipolygon )
+{
+ test_distance_segment_multipolygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_linestring_multipolygon )
+{
+ test_distance_linestring_multipolygon(point_segment_strategy());
+ test_distance_linestring_open_multipolygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multilinestring_multipolygon )
+{
+ test_distance_multilinestring_multipolygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_segment_ring )
+{
+ test_distance_segment_ring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_linestring_ring )
+{
+ test_distance_linestring_ring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multilinestring_ring )
+{
+ test_distance_multilinestring_ring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_segment_box )
+{
+ test_distance_segment_box(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_linestring_box )
+{
+ test_distance_linestring_box(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multilinestring_box )
+{
+ test_distance_multilinestring_box(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_empty_input_linear_areal )
+{
+ test_more_empty_input_linear_areal<point_type>(point_segment_strategy());
+}
diff --git a/libs/geometry/test/algorithms/distance_linear_linear.cpp b/libs/geometry/test/algorithms/distance_linear_linear.cpp
new file mode 100644
index 0000000000..9c329e429c
--- /dev/null
+++ b/libs/geometry/test/algorithms/distance_linear_linear.cpp
@@ -0,0 +1,280 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_distance_linear_linear
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_distance_common.hpp"
+
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::segment<point_type> segment_type;
+typedef bg::model::linestring<point_type> linestring_type;
+typedef bg::model::multi_linestring<linestring_type> multi_linestring_type;
+
+namespace services = bg::strategy::distance::services;
+typedef bg::default_distance_result<point_type>::type return_type;
+
+typedef bg::strategy::distance::projected_point<> point_segment_strategy;
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_segment_segment(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "segment/segment distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<segment_type, segment_type> tester;
+
+ tester::apply("segment(0 0,10 0)",
+ "segment(4 2,4 0.5)",
+ return_type(0.5), return_type(0.25), strategy);
+
+ tester::apply("segment(0 0,10 0)",
+ "segment(4 2,4 -0.5)",
+ return_type(0), return_type(0), strategy);
+
+ tester::apply("segment(0 0,10 0)",
+ "segment(4 2,0 0)",
+ return_type(0), return_type(0), strategy);
+
+ tester::apply("segment(0 0,10 0)",
+ "segment(-2 3,1 2)",
+ return_type(2), return_type(4), strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_segment_linestring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "segment/linestring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<segment_type, linestring_type> tester;
+
+ tester::apply("segment(-1 -1,-2 -2)",
+ "linestring(2 1,1 2,4 0)",
+ sqrt(12.5), 12.5, strategy);
+
+ tester::apply("segment(1 1,2 2)",
+ "linestring(2 1,1 2,4 0)",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_linestring_linestring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "linestring/linestring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ linestring_type, linestring_type
+ > tester;
+
+ // It is not obvious that linestrings with only one point are valid
+ tester::apply("linestring(1 1)", "linestring(2 1)",
+ 1, 1, strategy);
+
+ tester::apply("linestring(1 1,3 1)", "linestring(2 1)",
+ 0, 0, strategy);
+
+ tester::apply("linestring(1 1)", "linestring(0 0,-2 0,2 -2,2 0)",
+ sqrt(2.0), 2, strategy);
+
+ tester::apply("linestring(1 1,1 1)", "linestring(2 1,2 1)",
+ 1, 1, strategy);
+
+ tester::apply("linestring(1 1,1 1,1 1)", "linestring(2 1,2 1,2 1,2 1)",
+ 1, 1, strategy);
+
+ tester::apply("linestring(1 1,3 1)", "linestring(2 1,2 1)",
+ 0, 0, strategy);
+
+ tester::apply("linestring(1 1,1 1)", "linestring(0 0,-2 0,2 -2,2 0)",
+ sqrt(2.0), 2, strategy);
+
+ tester::apply("linestring(1 1,3 1)", "linestring(2 1, 4 1)",
+ 0, 0, strategy);
+
+ tester::apply("linestring(1 1,2 2,3 3)", "linestring(2 1,1 2,4 0)",
+ 0, 0, strategy);
+
+ tester::apply("linestring(1 1,2 2,3 3)", "linestring(1 0,2 -1,4 0)",
+ 1, 1, strategy);
+
+ tester::apply("linestring(1 1,2 2,3 3)",
+ "linestring(1 -10,2 0,2.1 -10,4 0)",
+ sqrt(2.0), 2, strategy);
+
+ tester::apply("linestring(1 1,2 2,3 3)",
+ "linestring(1 -10,2 1.9,2.1 -10,4 0)",
+ sqrt(0.005), 0.005, strategy);
+
+ tester::apply("linestring(1 1,1 2)", "linestring(0 0,-2 0,2 -2,2 0)",
+ sqrt(2.0), 2, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_segment_multilinestring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "segment/multilinestring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ segment_type, multi_linestring_type
+ > tester;
+
+ tester::apply("segment(-1 -1,-2 -2)",
+ "multilinestring((2 1,1 2),(4 0,4 10))",
+ sqrt(12.5), 12.5, strategy);
+
+ tester::apply("segment(1 1,2 2)",
+ "multilinestring((2 1,1 2),(4 0,4 10))",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_linestring_multilinestring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "linestring/multilinestring distance tests" << std::endl;
+#endif
+
+ typedef test_distance_of_geometries
+ <
+ linestring_type, multi_linestring_type
+ > tester;
+
+ tester::apply("linestring(1 1,2 2,3 3)",
+ "multilinestring((2 1,1 2,4 0),(1 -10,2 1.9,2.1 -10,4 0))",
+ 0, 0, strategy, true);
+
+ tester::apply("linestring(1 1,2 2,3 3)",
+ "multilinestring((1 -10,2 0,2.1 -10,4 0),(1 -10,2 1.9,2.1 -10,4 0))",
+ sqrt(0.005), 0.005, strategy, true);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multilinestring_multilinestring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multilinestring/multilinestring distance tests" << std::endl;
+#endif
+
+ typedef test_distance_of_geometries
+ <
+ multi_linestring_type, multi_linestring_type
+ > tester;
+
+ tester::apply("multilinestring((0 0,0 1,1 1),(10 0,11 1,12 2))",
+ "multilinestring((0.5 0.5,0.75 0.75),(11 0,11 7))",
+ 0, 0, strategy);
+
+ tester::apply("multilinestring((0 0,0 1,1 1),(10 0,11 1,12 2))",
+ "multilinestring((0.5 0.5,0.75 0.75),(11 0,11 0.9))",
+ sqrt(0.005), 0.005, strategy);
+
+ tester::apply("multilinestring((0 0,0 1,1 1),(10 0,11 1,12 2))",
+ "multilinestring((0.5 0.5,0.75 0.75),(11.1 0,11.1 0.9))",
+ sqrt(0.02), 0.02, strategy);
+}
+
+//===========================================================================
+
+template <typename Point, typename Strategy>
+void test_more_empty_input_linear_linear(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "testing on empty inputs... " << std::flush;
+#endif
+ bg::model::linestring<Point> line_empty;
+ bg::model::multi_linestring<bg::model::linestring<Point> > multiline_empty;
+
+ bg::model::linestring<Point> line =
+ from_wkt<bg::model::linestring<Point> >("linestring(0 0,1 1)");
+
+ // 1st geometry is empty
+ test_empty_input(line_empty, line, strategy);
+ test_empty_input(multiline_empty, line, strategy);
+
+ // 2nd geometry is empty
+ test_empty_input(line, line_empty, strategy);
+ test_empty_input(line, multiline_empty, strategy);
+
+ // both geometries are empty
+ test_empty_input(line_empty, line_empty, strategy);
+ test_empty_input(line_empty, multiline_empty, strategy);
+ test_empty_input(multiline_empty, multiline_empty, strategy);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "done!" << std::endl;
+#endif
+}
+
+//===========================================================================
+
+BOOST_AUTO_TEST_CASE( test_all_segment_segment )
+{
+ test_distance_segment_segment(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_segment_linestring )
+{
+ test_distance_segment_linestring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_linestring_linestring )
+{
+ test_distance_linestring_linestring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_segment_multilinestring )
+{
+ test_distance_segment_multilinestring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_linestring_multilinestring )
+{
+ test_distance_linestring_multilinestring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multilinestring_multilinestring )
+{
+ test_distance_multilinestring_multilinestring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_empty_input_linear_linear )
+{
+ test_more_empty_input_linear_linear<point_type>(point_segment_strategy());
+}
diff --git a/libs/geometry/test/algorithms/distance_pointlike_areal.cpp b/libs/geometry/test/algorithms/distance_pointlike_areal.cpp
new file mode 100644
index 0000000000..9e7bd10a4b
--- /dev/null
+++ b/libs/geometry/test/algorithms/distance_pointlike_areal.cpp
@@ -0,0 +1,641 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_distance_pointlike_areal
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_distance_common.hpp"
+
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::multi_point<point_type> multi_point_type;
+typedef bg::model::point<double,3,bg::cs::cartesian> point_type_3d;
+typedef bg::model::multi_point<point_type_3d> multi_point_type_3d;
+typedef bg::model::polygon<point_type, false> polygon_type;
+typedef bg::model::multi_polygon<polygon_type> multi_polygon_type;
+typedef bg::model::ring<point_type, false> ring_type;
+typedef bg::model::box<point_type> box_type;
+typedef bg::model::box<point_type_3d> box_type_3d;
+
+namespace services = bg::strategy::distance::services;
+typedef bg::default_distance_result<point_type>::type return_type;
+
+typedef bg::strategy::distance::pythagoras<> point_point_strategy;
+typedef bg::strategy::distance::projected_point<> point_segment_strategy;
+typedef bg::strategy::distance::pythagoras_point_box<> point_box_strategy;
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_point_polygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "point/polygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<point_type, polygon_type> tester;
+
+ tester::apply("point(0 -20)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 10, 100, strategy);
+
+ tester::apply("point(12 0)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 2, 4, strategy);
+
+ tester::apply("point(0 0)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy);
+
+ tester::apply("point(0 0)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10),\
+ (-5 -5,-5 5,5 5,5 -5,-5 -5))",
+ 5, 25, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_point_ring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "point/ring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<point_type, ring_type> tester;
+
+ tester::apply("point(0 -20)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 10, 100, strategy);
+
+ tester::apply("point(12 0)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 2, 4, strategy);
+
+ tester::apply("point(0 0)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_point_multipolygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "point/multipolygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<point_type, multi_polygon_type> tester;
+
+ tester::apply("point(0 -20)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((0 22,-1 30,2 40,0 22)))",
+ 10, 100, strategy);
+
+ tester::apply("point(12 0)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 2, 4, strategy);
+
+ tester::apply("point(0 0)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 0, 0, strategy);
+
+ tester::apply("point(0 0)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10),\
+ (-5 -5,-5 5,5 5,5 -5,-5 -5)),\
+ ((100 0,101 0,101 1,100 1,100 0)))",
+ 5, 25, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multipoint_polygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multipoint/polygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<multi_point_type, polygon_type> tester;
+
+ tester::apply("multipoint(0 -20,0 -15)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 5, 25, strategy);
+
+ tester::apply("multipoint(16 0,12 0)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 2, 4, strategy);
+
+ tester::apply("multipoint(0 0,5 5,4 4)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy);
+
+ tester::apply("multipoint(0 0,2 0)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10),\
+ (-5 -5,-5 5,5 5,5 -5,-5 -5))",
+ 3, 9, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multipoint_ring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multipoint/ring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<multi_point_type, ring_type> tester;
+
+ tester::apply("multipoint(0 -20,0 -15)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 5, 25, strategy);
+
+ tester::apply("multipoint(16 0,12 0)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 2, 4, strategy);
+
+ tester::apply("multipoint(0 0,5 5,4 4)",
+ "polygon((-10 -10,10 -10,10 10,-10 10,-10 -10))",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multipoint_multipolygon(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multipoint/multipolygon distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ multi_point_type, multi_polygon_type
+ > tester;
+
+ tester::apply("multipoint(0 -20,0 -15)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((0 22,-1 30,2 40,0 22)))",
+ 5, 25, strategy);
+
+ tester::apply("multipoint(16 0,12 0)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 2, 4, strategy);
+
+ tester::apply("multipoint(0 0,4 4,5 5)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10)),\
+ ((20 -1,21 2,30 -10,20 -1)))",
+ 0, 0, strategy);
+
+ tester::apply("multipoint(0 0,2 0)",
+ "multipolygon(((-10 -10,10 -10,10 10,-10 10,-10 -10),\
+ (-5 -5,-5 5,5 5,5 -5,-5 -5)),\
+ ((100 0,101 0,101 1,100 1,100 0)))",
+ 3, 9, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_point_box_2d(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "2D point/box distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<box_type, point_type> tester;
+
+ // point inside box
+ tester::apply("box(-1 -1,1 1)",
+ "point(0 0)", 0, 0, strategy);
+
+ // points on box corners
+ tester::apply("box(-1 -1,1 1)",
+ "point(-1 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(-1 1)", 0, 0, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(1 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(1 1)", 0, 0, strategy);
+
+ // points on box boundary edges
+ tester::apply("box(-1 -1,1 1)",
+ "point(0 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(-1 0)", 0, 0, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(1 0)", 0, 0, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(0 1)", 0, 0, strategy);
+
+ // points outside box
+ tester::apply("box(-1 -1,1 1)",
+ "point(0 4)", 3, 9, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(0.5 4)", 3, 9, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(-0.5 5)", 4, 16, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(3 0.25)", 2, 4, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(-3 -0.25)", 2, 4, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(3 5)", sqrt(20.0), 20, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(-5 -4)", 5, 25, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(2 -2)", sqrt(2.0), 2, strategy);
+ tester::apply("box(-1 -1,1 1)",
+ "point(-3 4)", sqrt(13.0), 13, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_point_box_different_point_types(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "2D point/box distance tests with different points"
+ << std::endl;
+#endif
+ typedef point_type double_point;
+ typedef box_type double_box;
+ typedef bg::model::point<int,2,bg::cs::cartesian> int_point;
+ typedef bg::model::box<int_point> int_box;
+
+ test_distance_of_geometries
+ <
+ int_point, int_box
+ >::apply("point(0 0)",
+ "box(1 1, 2 2)",
+ sqrt(2.0), 2, strategy);
+
+ test_distance_of_geometries
+ <
+ double_point, int_box
+ >::apply("point(0.5 0)",
+ "box(1 -1,2 1)",
+ 0.5, 0.25, strategy);
+
+ test_distance_of_geometries
+ <
+ double_point, double_box
+ >::apply("point(1.5 0)",
+ "box(1 -1,2 1)",
+ 0, 0, strategy);
+
+ test_distance_of_geometries
+ <
+ double_point, int_box
+ >::apply("point(1.5 0)",
+ "box(1 -1,2 1)",
+ 0, 0, strategy);
+
+ test_distance_of_geometries
+ <
+ int_point, double_box
+ >::apply("point(1 0)",
+ "box(0.5 -1,1.5 1)",
+ 0, 0, strategy);
+
+ test_distance_of_geometries
+ <
+ int_point, double_box
+ >::apply("point(0 0)",
+ "box(0.5, -1,1.5, 1)",
+ 0.5, 0.25, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_point_box_3d(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "3D point/box distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<box_type_3d, point_type_3d> tester;
+
+ // point inside box
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 0 0)", 0, 0, strategy);
+
+ // points on box corners
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-1 -1 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-1 -1 1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-1 1 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-1 1 1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(1 -1 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(1 -1 1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(1 1 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(1 1 1)", 0, 0, strategy);
+
+ // points on box boundary edges
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 -1 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 -1 1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 1 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 1 1)", 0, 0, strategy);
+
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-1 0 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-1 0 1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(1 0 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(1 0 1)", 0, 0, strategy);
+
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-1 -1 0)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-1 1 0)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(1 -1 0)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(1 1 0)", 0, 0, strategy);
+
+ // point on box faces
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 0 -1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 0 1)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 -1 0)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 1 0)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-1 0 0)", 0, 0, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(1 0 0)", 0, 0, strategy);
+
+ // points outside box -- closer to box corners
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-2 -3 -4)", sqrt(14.0), 14, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-2 -3 3)", 3, 9, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-2 5 -2)", sqrt(18.0), 18, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-2 5 3)", sqrt(21.0), 21, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(4 -6 -3)", sqrt(38.0), 38, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(4 -6 4)", sqrt(43.0), 43, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(4 7 -2)", sqrt(46.0), 46, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(4 7 8)", sqrt(94.0), 94, strategy);
+
+
+ // points closer to box facets
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 0 10)", 9, 81, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 0 -5)", 4, 16, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 7 0)", 6, 36, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 -6 0)", 5, 25, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(4 0 0)", 3, 9, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-3 0 0)", 2, 4, strategy);
+
+ // points closer to box edges
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 -4 -5)", 5, 25, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 -3 6)", sqrt(29.0), 29, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 2 -7)", sqrt(37.0), 37, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(0 8 7)", sqrt(85.0), 85, strategy);
+
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-4 0 -4)", sqrt(18.0), 18, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-3 0 5)", sqrt(20.0), 20, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(2 0 -6)", sqrt(26.0), 26, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(8 0 6)", sqrt(74.0), 74, strategy);
+
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-5 -5 0)", sqrt(32.0), 32, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(-4 6 0)", sqrt(34.0), 34, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(3 -7 0)", sqrt(40.0), 40, strategy);
+ tester::apply("box(-1 -1 -1,1 1 1)",
+ "point(9 7 0)", 10, 100, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multipoint_box_2d(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "2D multipoint/box distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<box_type, multi_point_type> tester;
+
+ // at least one point inside the box
+ tester::apply("box(0 0,10 10)",
+ "multipoint(0 0,-1 -1,20 20)",
+ 0, 0, strategy);
+
+ tester::apply("box(0 0,10 10)",
+ "multipoint(1 1,-1 -1,20 20)",
+ 0, 0, strategy);
+
+ tester::apply("box(0 0,10 10)",
+ "multipoint(1 1,2 2,3 3)",
+ 0, 0, strategy);
+
+ // all points outside the box
+ tester::apply("box(0 0,10 10)",
+ "multipoint(-1 -1,20 20)",
+ sqrt(2.0), 2, strategy);
+
+ tester::apply("box(0 0,10 10)",
+ "multipoint(5 13, 50 50)",
+ 3, 9, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multipoint_box_3d(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "3D multipoint/box distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ box_type_3d, multi_point_type_3d
+ > tester;
+
+ // at least one point inside the box
+ tester::apply("box(0 0 0,10 10 10)",
+ "multipoint(0 0 0,-1 -1 -1,20 20 20)",
+ 0, 0, strategy);
+
+ tester::apply("box(0 0 0,10 10 10)",
+ "multipoint(1 1 1,-1 -1 -1,20 20 20)",
+ 0, 0, strategy);
+
+ tester::apply("box(0 0 0,10 10 10)",
+ "multipoint(1 1 1,2 2 2,3 3 3)",
+ 0, 0, strategy);
+
+ // all points outside the box
+ tester::apply("box(0 0 0,10 10 10)",
+ "multipoint(-1 -1 -1,20 20 20)",
+ sqrt(3.0), 3, strategy);
+
+ tester::apply("box(0 0 0,10 10 10)",
+ "multipoint(5 5 13,50 50 50)",
+ 3, 9, strategy);
+}
+
+//===========================================================================
+
+template <typename Point, typename Strategy>
+void test_more_empty_input_pointlike_areal(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "testing on empty inputs... " << std::flush;
+#endif
+ bg::model::multi_point<Point> multipoint_empty;
+ bg::model::polygon<Point> polygon_empty;
+ bg::model::multi_polygon<bg::model::polygon<Point> > multipolygon_empty;
+ bg::model::ring<Point> ring_empty;
+
+ Point point = from_wkt<Point>("point(0 0)");
+ bg::model::polygon<Point> polygon =
+ from_wkt<bg::model::polygon<Point> >("polygon((0 0,1 0,0 1))");
+ bg::model::ring<Point> ring =
+ from_wkt<bg::model::ring<Point> >("polygon((0 0,1 0,0 1))");
+
+ // 1st geometry is empty
+ test_empty_input(multipoint_empty, polygon, strategy);
+ test_empty_input(multipoint_empty, ring, strategy);
+
+ // 2nd geometry is empty
+ test_empty_input(point, polygon_empty, strategy);
+ test_empty_input(point, multipolygon_empty, strategy);
+ test_empty_input(point, ring_empty, strategy);
+
+ // both geometries are empty
+ test_empty_input(multipoint_empty, polygon_empty, strategy);
+ test_empty_input(multipoint_empty, multipolygon_empty, strategy);
+ test_empty_input(multipoint_empty, ring_empty, strategy);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "done!" << std::endl;
+#endif
+}
+
+//===========================================================================
+
+BOOST_AUTO_TEST_CASE( test_all_point_polygon )
+{
+ test_distance_point_polygon(point_point_strategy()); // back-compatibility
+ test_distance_point_polygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_point_multipolygon )
+{
+ test_distance_point_multipolygon(point_point_strategy()); // back-compatibility
+ test_distance_point_multipolygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_point_ring )
+{
+ test_distance_point_ring(point_point_strategy()); // back-compatibility
+ test_distance_point_ring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multipoint_polygon )
+{
+ test_distance_multipoint_polygon(point_point_strategy()); // back-compatibility
+ test_distance_multipoint_polygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multipoint_multipolygon )
+{
+ test_distance_multipoint_multipolygon(point_point_strategy()); // back-compatibility
+ test_distance_multipoint_multipolygon(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multipoint_ring )
+{
+ test_distance_multipoint_ring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_point_box_2d )
+{
+ point_box_strategy pb_strategy;
+
+ test_distance_point_box_2d(pb_strategy);
+ test_distance_point_box_different_point_types(pb_strategy);
+}
+
+BOOST_AUTO_TEST_CASE( test_all_point_box_3d )
+{
+ test_distance_point_box_3d(point_box_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multipoint_box_2d )
+{
+ test_distance_multipoint_box_2d(point_box_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multipoint_box_3d )
+{
+ test_distance_multipoint_box_3d(point_box_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_empty_input_pointlike_areal )
+{
+ test_more_empty_input_pointlike_areal
+ <
+ point_type
+ >(point_segment_strategy());
+}
diff --git a/libs/geometry/test/algorithms/distance_pointlike_linear.cpp b/libs/geometry/test/algorithms/distance_pointlike_linear.cpp
new file mode 100644
index 0000000000..cc5fce764f
--- /dev/null
+++ b/libs/geometry/test/algorithms/distance_pointlike_linear.cpp
@@ -0,0 +1,264 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_distance_pointlike_linear
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_distance_common.hpp"
+
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::multi_point<point_type> multi_point_type;
+typedef bg::model::segment<point_type> segment_type;
+typedef bg::model::linestring<point_type> linestring_type;
+typedef bg::model::multi_linestring<linestring_type> multi_linestring_type;
+
+namespace services = bg::strategy::distance::services;
+typedef bg::default_distance_result<point_type>::type return_type;
+
+typedef bg::strategy::distance::pythagoras<> point_point_strategy;
+typedef bg::strategy::distance::projected_point<> point_segment_strategy;
+
+
+//===========================================================================
+
+
+template <typename Strategy>
+void test_distance_point_segment(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "point/segment distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<point_type, segment_type> tester;
+
+ tester::apply("point(0 0)", "segment(2 0,3 0)", 2, 4, strategy);
+ tester::apply("point(2.5 3)", "segment(2 0,3 0)", 3, 9, strategy);
+ tester::apply("point(2 0)", "segment(2 0,3 0)", 0, 0, strategy);
+ tester::apply("point(3 0)", "segment(2 0,3 0)", 0, 0, strategy);
+ tester::apply("point(2.5 0)", "segment(2 0,3 0)", 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_point_linestring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "point/linestring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<point_type, linestring_type> tester;
+
+ tester::apply("point(0 0)", "linestring(2 0)", 2, 4, strategy);
+ tester::apply("point(0 0)", "linestring(2 0,3 0)", 2, 4, strategy);
+ tester::apply("point(2.5 3)", "linestring(2 0,3 0)", 3, 9, strategy);
+ tester::apply("point(2 0)", "linestring(2 0,3 0)", 0, 0, strategy);
+ tester::apply("point(3 0)", "linestring(2 0,3 0)", 0, 0, strategy);
+ tester::apply("point(2.5 0)", "linestring(2 0,3 0)", 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_point_multilinestring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "point/multilinestring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ point_type, multi_linestring_type
+ > tester;
+
+ tester::apply("point(0 0)",
+ "multilinestring((-5 0,-3 0),(2 0,3 0))",
+ 2, 4, strategy);
+ tester::apply("point(2.5 3)",
+ "multilinestring((-5 0,-3 0),(2 0,3 0))",
+ 3, 9, strategy);
+ tester::apply("point(2 0)",
+ "multilinestring((-5 0,-3 0),(2 0,3 0))",
+ 0, 0, strategy);
+ tester::apply("point(3 0)",
+ "multilinestring((-5 0,-3 0),(2 0,3 0))",
+ 0, 0, strategy);
+ tester::apply("point(2.5 0)",
+ "multilinestring((-5 0,-3 0),(2 0,3 0))",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_linestring_multipoint(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "linestring/multipoint distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ linestring_type, multi_point_type
+ > tester;
+
+ tester::apply("linestring(2 0,0 2,100 100)",
+ "multipoint(0 0,1 0,0 1,1 1)",
+ 0, 0, strategy);
+ tester::apply("linestring(4 0,0 4,100 100)",
+ "multipoint(0 0,1 0,0 1,1 1)",
+ sqrt(2.0), 2, strategy);
+ tester::apply("linestring(1 1,2 2,100 100)",
+ "multipoint(0 0,1 0,0 1,1 1)",
+ 0, 0, strategy);
+ tester::apply("linestring(3 3,4 4,100 100)",
+ "multipoint(0 0,1 0,0 1,1 1)",
+ sqrt(8.0), 8, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multipoint_multilinestring(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multipoint/multilinestring distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ multi_point_type, multi_linestring_type
+ > tester;
+
+ tester::apply("multipoint(0 0,1 0,0 1,1 1)",
+ "multilinestring((2 0,0 2),(2 2,3 3))",
+ 0, 0, strategy);
+ tester::apply("multipoint(0 0,1 0,0 1,1 1)",
+ "multilinestring((3 0,0 3),(4 4,5 5))",
+ 0.5 * sqrt(2.0), 0.5, strategy);
+ tester::apply("multipoint(0 0,1 0,0 1,1 1)",
+ "multilinestring((4 4,5 5),(1 1,2 2))",
+ 0, 0, strategy);
+ tester::apply("multipoint(0 0,1 0,0 1,1 1)",
+ "multilinestring((3 3,4 4),(4 4,5 5))",
+ sqrt(8.0), 8, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multipoint_segment(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multipoint/segment distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<multi_point_type, segment_type> tester;
+
+ tester::apply("multipoint(0 0,1 0,0 1,1 1)",
+ "segment(2 0,0 2)",
+ 0, 0, strategy);
+ tester::apply("multipoint(0 0,1 0,0 1,1 1)",
+ "segment(4 0,0 4)",
+ sqrt(2.0), 2, strategy);
+ tester::apply("multipoint(0 0,1 0,0 1,1 1)",
+ "segment(1 1,2 2)",
+ 0, 0, strategy);
+ tester::apply("multipoint(0 0,1 0,0 1,1 1)",
+ "segment(3 3,4 4)",
+ sqrt(8.0), 8, strategy);
+}
+
+//===========================================================================
+
+template <typename Point, typename Strategy>
+void test_more_empty_input_pointlike_linear(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "testing on empty inputs... " << std::flush;
+#endif
+ bg::model::linestring<Point> line_empty;
+ bg::model::multi_point<Point> multipoint_empty;
+ bg::model::multi_linestring<bg::model::linestring<Point> > multiline_empty;
+
+ Point point = from_wkt<Point>("point(0 0)");
+ bg::model::linestring<Point> line =
+ from_wkt<bg::model::linestring<Point> >("linestring(0 0,1 1)");
+
+ // 1st geometry is empty
+ test_empty_input(multipoint_empty, line, strategy);
+
+ // 2nd geometry is empty
+ test_empty_input(point, line_empty, strategy);
+ test_empty_input(point, multiline_empty, strategy);
+
+ // both geometries are empty
+ test_empty_input(multipoint_empty, line_empty, strategy);
+ test_empty_input(multipoint_empty, multiline_empty, strategy);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "done!" << std::endl;
+#endif
+}
+
+
+//===========================================================================
+//===========================================================================
+//===========================================================================
+
+BOOST_AUTO_TEST_CASE( test_all_point_segment )
+{
+ test_distance_point_segment(point_point_strategy()); // back-compatibility
+ test_distance_point_segment(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_point_linestring )
+{
+ test_distance_point_linestring(point_point_strategy()); // back-compatibility
+ test_distance_point_linestring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_point_multilinestring )
+{
+ test_distance_point_multilinestring(point_point_strategy()); // back-compatibility
+ test_distance_point_multilinestring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_linestring_multipoint )
+{
+ test_distance_linestring_multipoint(point_point_strategy()); // back-compatibility
+ test_distance_linestring_multipoint(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multipoint_multilinestring )
+{
+ test_distance_multipoint_multilinestring(point_point_strategy()); // back-compatibility
+ test_distance_multipoint_multilinestring(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multipoint_segment )
+{
+ test_distance_multipoint_segment(point_segment_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_empty_input_pointlike_linear )
+{
+ test_more_empty_input_pointlike_linear
+ <
+ point_type
+ >(point_segment_strategy());
+}
diff --git a/libs/geometry/test/algorithms/distance_pointlike_pointlike.cpp b/libs/geometry/test/algorithms/distance_pointlike_pointlike.cpp
new file mode 100644
index 0000000000..4f267504df
--- /dev/null
+++ b/libs/geometry/test/algorithms/distance_pointlike_pointlike.cpp
@@ -0,0 +1,143 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_distance_pointlike_pointlike
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_distance_common.hpp"
+
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::multi_point<point_type> multi_point_type;
+
+namespace services = bg::strategy::distance::services;
+typedef bg::default_distance_result<point_type>::type return_type;
+
+typedef bg::strategy::distance::pythagoras<> point_point_strategy;
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_point_point(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "point/point distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<point_type, point_type> tester;
+
+ tester::apply("point(1 1)",
+ "point(0 0)",
+ sqrt(2.0), 2, strategy);
+ tester::apply("point(1 1)",
+ "point(1 1)",
+ 0, 0, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_point_multipoint(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "point/multipoint distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries<point_type, multi_point_type> tester;
+
+ tester::apply("point(1 1)",
+ "multipoint(1 1,2 1,2 2,1 2)",
+ 0, 0, strategy);
+ tester::apply("point(1 1)",
+ "multipoint(2 2,2 3,3 2,3 3)",
+ sqrt(2.0), 2, strategy);
+ tester::apply("point(3 0)",
+ "multipoint(2 2,2 4,4 2,4 4)",
+ sqrt(5.0), 5, strategy);
+}
+
+//===========================================================================
+
+template <typename Strategy>
+void test_distance_multipoint_multipoint(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "multipoint/multipoint distance tests" << std::endl;
+#endif
+ typedef test_distance_of_geometries
+ <
+ multi_point_type, multi_point_type
+ > tester;
+
+ tester::apply("multipoint(0 0,1 0,0 1,1 1)",
+ "multipoint(1 1,2 1,2 2,1 2)",
+ 0, 0, strategy);
+ tester::apply("multipoint(0 0,1 0,0 1,1 1)",
+ "multipoint(2 2,2 3,3 2,3 3)",
+ sqrt(2.0), 2, strategy);
+}
+
+//===========================================================================
+
+template <typename Point, typename Strategy>
+void test_more_empty_input_pointlike_pointlike(Strategy const& strategy)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "testing on empty inputs... " << std::flush;
+#endif
+ bg::model::multi_point<Point> multipoint_empty;
+
+ Point point = from_wkt<Point>("point(0 0)");
+
+ // 1st geometry is empty
+ test_empty_input(multipoint_empty, point, strategy);
+
+ // 2nd geometry is empty
+ test_empty_input(point, multipoint_empty, strategy);
+
+ // both geometries are empty
+ test_empty_input(multipoint_empty, multipoint_empty, strategy);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "done!" << std::endl;
+#endif
+}
+
+//===========================================================================
+
+BOOST_AUTO_TEST_CASE( test_all_point_point )
+{
+ test_distance_point_point(point_point_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_point_multipoint )
+{
+ test_distance_point_multipoint(point_point_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_multipoint_multipoint )
+{
+ test_distance_multipoint_multipoint(point_point_strategy());
+}
+
+BOOST_AUTO_TEST_CASE( test_all_empty_input_pointlike_pointlike )
+{
+ test_more_empty_input_pointlike_pointlike
+ <
+ point_type
+ >(point_point_strategy());
+}
diff --git a/libs/geometry/test/algorithms/envelope.vcproj b/libs/geometry/test/algorithms/envelope.vcproj
deleted file mode 100644
index aa26c762b2..0000000000
--- a/libs/geometry/test/algorithms/envelope.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="envelope"
- ProjectGUID="{26EFCAF4-7907-4A47-ACBF-6CAB738CDCEB}"
- RootNamespace="envelope"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\envelope"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\envelope"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\envelope.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/equals.cpp b/libs/geometry/test/algorithms/equals.cpp
index c651b13eea..1ee21ec22f 100644
--- a/libs/geometry/test/algorithms/equals.cpp
+++ b/libs/geometry/test/algorithms/equals.cpp
@@ -1,6 +1,12 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
-//
+
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2013, 2014.
+// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
// 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)
@@ -10,8 +16,91 @@
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/core/topological_dimension.hpp>
+#include <boost/geometry/multi/core/point_order.hpp>
+#include <boost/geometry/multi/core/closure.hpp>
+#include <boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp>
+#include <boost/geometry/multi/algorithms/detail/overlay/get_turns.hpp>
+#include <boost/geometry/multi/algorithms/equals.hpp>
+#include <boost/geometry/multi/io/wkt/read.hpp>
+namespace bgm = bg::model;
+
+template <typename P>
+void test_segment_segment()
+{
+ typedef bgm::segment<P> seg;
+
+ test_geometry<seg, seg>("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(0 0, 3 3)", true);
+ test_geometry<seg, seg>("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(3 3, 0 0)", true);
+
+ test_geometry<seg, seg>("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(0 0, 1 1)", false);
+ test_geometry<seg, seg>("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(3 3, 2 2)", false);
+
+ test_geometry<seg, seg>("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(1 1, 4 4)", false);
+ test_geometry<seg, seg>("seg2d_1", "LINESTRING(0 0, 3 3)", "LINESTRING(1 0, 2 0)", false);
+}
+
+template <typename P>
+void test_linestring_linestring()
+{
+ typedef bgm::linestring<P> ls;
+
+ test_geometry<ls, ls>("ls2d_1", "LINESTRING(1 1, 3 3)", "LINESTRING(3 3, 1 1)", true);
+ test_geometry<ls, ls>("ls2d_2", "LINESTRING(1 1, 3 3, 2 5)", "LINESTRING(1 1, 2 2, 3 3, 2 5)", true);
+ test_geometry<ls, ls>("ls2d_3", "LINESTRING(1 0, 3 3, 2 5)", "LINESTRING(1 1, 2 2, 3 3, 2 5)", false);
+ test_geometry<ls, ls>("ls2d_4", "LINESTRING(1 0, 3 3, 2 5)", "LINESTRING(1 1, 3 3, 2 5)", false);
+ test_geometry<ls, ls>("ls2d_5", "LINESTRING(0 5,5 5,10 5,10 0,5 0,5 5,5 10,10 10,15 10,15 5,10 5,10 10,10 15)",
+ "LINESTRING(0 5,15 5,15 10,5 10,5 0,10 0,10 15)", true);
+ test_geometry<ls, ls>("ls2d_6", "LINESTRING(0 5,5 5,10 5,10 10,5 10,5 5,5 0)", "LINESTRING(0 5,5 5,5 10,10 10,10 5,5 5,5 0)", true);
+ test_geometry<ls, ls>("ls2d_7", "LINESTRING(0 5,10 5,10 10,5 10,5 0)", "LINESTRING(0 5,5 5,5 10,10 10,10 5,5 5,5 0)", true);
+ test_geometry<ls, ls>("ls2d_8", "LINESTRING(0 0,5 0,5 0,6 0)", "LINESTRING(0 0,6 0)", true);
+
+ test_geometry<ls, ls>("ls2d_seg", "LINESTRING(1 1,2 2)", "LINESTRING(1 1,2 2)", true);
+ test_geometry<ls, ls>("ls2d_rev", "LINESTRING(1 1,2 2)", "LINESTRING(2 2,1 1)", true);
+
+ test_geometry<ls, ls>("ls2d_spike", "LINESTRING(0 0,5 0,3 0,6 0)", "LINESTRING(0 0,6 0)", true);
+
+ test_geometry<ls, ls>("ls2d_ring1", "LINESTRING(0 0,5 0,5 5,0 5,0 0)", "LINESTRING(5 5,0 5,0 0,5 0,5 5)", true);
+ test_geometry<ls, ls>("ls2d_ring2", "LINESTRING(0 0,5 0,5 5,0 5,0 0)", "LINESTRING(5 5,5 0,0 0,0 5,5 5)", true);
+ test_geometry<ls, ls>("ls2d_overl_ring1", "LINESTRING(0 0,5 0,5 5,0 5,0 0)", "LINESTRING(5 5,0 5,0 0,5 0,5 5,0 5)", true);
+ test_geometry<ls, ls>("ls2d_overl_ring2", "LINESTRING(0 0,5 0,5 5,0 5,0 0)", "LINESTRING(5 5,5 0,0 0,0 5,5 5,5 0)", true);
+}
+
+template <typename P>
+void test_linestring_multilinestring()
+{
+ typedef bgm::linestring<P> ls;
+ typedef bgm::multi_linestring<ls> mls;
+
+ test_geometry<ls, mls>("ls_mls_1", "LINESTRING(0 0,1 0,2 0)", "MULTILINESTRING((0 0,2 0))", true);
+ test_geometry<ls, mls>("ls_mls_1", "LINESTRING(0 0,1 0,2 0)", "MULTILINESTRING((0 0,1 0),(1 0,2 0))", true);
+ test_geometry<ls, mls>("ls_mls_1", "LINESTRING(0 0,2 0,4 0)", "MULTILINESTRING((0 0,2 0),(2 0,3 0),(3 0,4 0))", true);
+ test_geometry<ls, mls>("ls_mls_1", "LINESTRING(0 0,2 0,4 0)", "MULTILINESTRING((0 0,2 0),(2 0,3 0),(2 0,3 0),(3 0,4 0))", true);
+ test_geometry<ls, mls>("ls_mls_1", "LINESTRING(0 0,2 0,4 0)", "MULTILINESTRING((0 0,2 0),(3 0,4 0))", false);
+
+ test_geometry<ls, mls>("ls_mls_spike", "LINESTRING(0 0,2 0,2 2,2 0,4 0)", "MULTILINESTRING((0 0,4 0),(2 2,2 0))", true);
+ test_geometry<ls, mls>("ls_mls_spike", "LINESTRING(0 0,2 0,2 2,2 0,4 0)", "MULTILINESTRING((0 0,4 0),(2 2,2 -1))", false);
+
+ test_geometry<ls, mls>("ls_mls_ring1", "LINESTRING(0 0,5 0,5 5,0 5,0 0)", "MULTILINESTRING((5 5,0 5,0 0),(0 0,5 0,5 5))", true);
+ test_geometry<ls, mls>("ls_mls_ring2", "LINESTRING(0 0,5 0,5 5,0 5,0 0)", "MULTILINESTRING((5 5,5 0,0 0),(0 0,0 5,5 5))", true);
+ test_geometry<ls, mls>("ls_mls_overl_ring1", "LINESTRING(0 0,5 0,5 5,0 5,0 0)", "MULTILINESTRING((5 5,0 5,0 0),(0 0,5 0,5 5,0 5))", true);
+ test_geometry<ls, mls>("ls_mls_overl_ring2", "LINESTRING(0 0,5 0,5 5,0 5,0 0)", "MULTILINESTRING((5 5,5 0,0 0),(0 0,0 5,5 5,5 0))", true);
+}
+
+template <typename P>
+void test_multilinestring_multilinestring()
+{
+ typedef bgm::linestring<P> ls;
+ typedef bgm::multi_linestring<ls> mls;
+
+ test_geometry<mls, mls>("ls_mls_mls",
+ "MULTILINESTRING((0 5,10 5,10 10,5 10),(5 10,5 0,5 2),(5 2,5 5,0 5))",
+ "MULTILINESTRING((5 5,0 5),(5 5,5 0),(10 10,10 5,5 5,5 10,10 10))",
+ true);
+}
template <typename P>
void test_all()
@@ -19,7 +108,7 @@ void test_all()
typedef bg::model::box<P> box;
typedef bg::model::ring<P> ring;
typedef bg::model::polygon<P> polygon;
- typedef bg::model::linestring<P> linestring;
+ //typedef bg::model::linestring<P> linestring;
std::string case_p1 = "POLYGON((0 0,0 2,2 2,0 0))";
@@ -90,14 +179,14 @@ void test_all()
test_geometry<polygon, box>("boxpoly2", "POLYGON((1 1,1 2,2 2,2 1,1 1))", "BOX(1 1,2 3)", false);
- // linestring/linestring
- // simplex
- test_geometry<linestring, linestring>("ls1", "LINESTRING(1 1,2 2)", "LINESTRING(1 1,2 2)", true);
-
- // REVERSE linestring
- // Is this equal? To be decided.
- //test_geometry<linestring, linestring>("ls1", "LINESTRING(1 1,2 2)", "LINESTRING(2 2,1 1)", true);
+ test_geometry<polygon, polygon>("poly_holes_shifted_points",
+ "POLYGON((0 0,0 3,3 3,3 0,0 0),(1 1,2 1,2 2,1 2,1 1))",
+ "POLYGON((0 0,0 3,3 3,3 0,0 0),(2 2,1 2,1 1,2 1,2 2))", true);
+ test_segment_segment<P>();
+ test_linestring_linestring<P>();
+ test_linestring_multilinestring<P>();
+ test_multilinestring_multilinestring<P>();
}
diff --git a/libs/geometry/test/algorithms/equals.vcproj b/libs/geometry/test/algorithms/equals.vcproj
deleted file mode 100644
index 64697ef876..0000000000
--- a/libs/geometry/test/algorithms/equals.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="equals"
- ProjectGUID="{E54F493F-BF9D-4A6D-AE2F-5F97AC95251A}"
- RootNamespace="equals"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\equals"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\equals"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\equals.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/expand.vcproj b/libs/geometry/test/algorithms/expand.vcproj
deleted file mode 100644
index 7fb588e5d4..0000000000
--- a/libs/geometry/test/algorithms/expand.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="expand"
- ProjectGUID="{5330DAB1-DF27-44FC-971B-3C5094F82FA3}"
- RootNamespace="expand"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\expand"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\expand"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\expand.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/for_each.cpp b/libs/geometry/test/algorithms/for_each.cpp
index f61397eec3..09e94fa04e 100644
--- a/libs/geometry/test/algorithms/for_each.cpp
+++ b/libs/geometry/test/algorithms/for_each.cpp
@@ -54,6 +54,18 @@ void test_all()
, 4 * 3.0
, "POLYGON((10 1,10 4,4 4,4 1,1 1))"
);
+ test_geometry<bg::model::ring<P, true, false> > // open ring
+ (
+ "POLYGON((1 1,1 4,4 4,4 1))"
+
+ , 10
+ , "POLYGON((101 1,101 4,104 4,104 1))"
+ , "POLYGON((101 100,101 400,104 400,104 100))"
+
+ , "((1, 1), (1, 4)) ((1, 4), (4, 4)) ((4, 4), (4, 1)) ((4, 1), (1, 1))"
+ , 4 * 3.0
+ , "POLYGON((10 1,10 4,4 4,4 1))"
+ );
test_geometry<bg::model::polygon<P> >
(
"POLYGON((1 1,1 4,4 4,4 1,1 1),(2 2,3 2,3 3,2 3,2 2))"
@@ -65,7 +77,20 @@ void test_all()
, "((1, 1), (1, 4)) ((1, 4), (4, 4)) ((4, 4), (4, 1)) ((4, 1), (1, 1)) "
"((2, 2), (3, 2)) ((3, 2), (3, 3)) ((3, 3), (2, 3)) ((2, 3), (2, 2))"
, 4 * 3.0 + 4 * 1.0
- , "POLYGON((10 1,10 4,4 4,4 1,1 1),(2 2,3 2,3 3,2 3,2 2))"
+ , "POLYGON((10 1,10 4,4 4,4 1,1 1,10 1),(2 2,3 2,3 3,2 3,2 2))"
+ );
+ test_geometry<bg::model::polygon<P, true, false> > // open polygon
+ (
+ "POLYGON((1 1,1 4,4 4,4 1),(2 2,3 2,3 3,2 3))"
+
+ , 20
+ , "POLYGON((101 1,101 4,104 4,104 1,101 1),(102 2,103 2,103 3,102 3,102 2))"
+ , "POLYGON((101 100,101 400,104 400,104 100,101 100),(102 200,103 200,103 300,102 300,102 200))"
+
+ , "((1, 1), (1, 4)) ((1, 4), (4, 4)) ((4, 4), (4, 1)) ((4, 1), (1, 1)) "
+ "((2, 2), (3, 2)) ((3, 2), (3, 3)) ((3, 3), (2, 3)) ((2, 3), (2, 2))"
+ , 4 * 3.0 + 4 * 1.0
+ , "POLYGON((10 1,10 4,4 4,4 1,10 1),(2 2,3 2,3 3,2 3,2 2))"
);
}
diff --git a/libs/geometry/test/algorithms/for_each.vcproj b/libs/geometry/test/algorithms/for_each.vcproj
deleted file mode 100644
index 453064a3bf..0000000000
--- a/libs/geometry/test/algorithms/for_each.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="for_each"
- ProjectGUID="{774F6471-D8A0-481C-9B0A-4903EAD25B70}"
- RootNamespace="for_each"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\for_each"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\for_each"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\for_each.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/from_wkt.hpp b/libs/geometry/test/algorithms/from_wkt.hpp
new file mode 100644
index 0000000000..a12dc051d9
--- /dev/null
+++ b/libs/geometry/test/algorithms/from_wkt.hpp
@@ -0,0 +1,29 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Tests
+
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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_TEST_FROM_WKT_HPP
+#define BOOST_GEOMETRY_TEST_FROM_WKT_HPP
+
+#include <string>
+
+#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/geometry/multi/io/wkt/read.hpp>
+
+template <typename Geometry>
+inline Geometry from_wkt(std::string const& wkt)
+{
+ Geometry result;
+ boost::geometry::read_wkt(wkt, result);
+ return result;
+}
+
+#endif // BOOST_GEOMETRY_TEST_FROM_WKT_HPP
diff --git a/libs/geometry/test/algorithms/intersection.cpp b/libs/geometry/test/algorithms/intersection.cpp
index 05e0a46a1c..cefdb8ec91 100644
--- a/libs/geometry/test/algorithms/intersection.cpp
+++ b/libs/geometry/test/algorithms/intersection.cpp
@@ -15,16 +15,11 @@
#include <iostream>
#include <string>
-#define BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE
-#define TEST_ISOVIST
-
-//#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
-//#define BOOST_GEOMETRY_DEBUG_INTERSECTION
-//#define BOOST_GEOMETRY_DEBUG_TRAVERSE
-//#define BOOST_GEOMETRY_DEBUG_FOLLOW
-//#define BOOST_GEOMETRY_DEBUG_ASSEMBLE
-//#define BOOST_GEOMETRY_DEBUG_IDENTIFIER
+// If defined, tests are run without rescaling-to-integer or robustness policy
+// Test which would fail then are disabled automatically
+// #define BOOST_GEOMETRY_NO_ROBUSTNESS
+#include <boost/core/ignore_unused.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/register/linestring.hpp>
@@ -43,19 +38,9 @@
BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED(std::vector)
-static std::string pie_2_3_23_0[2] =
-{
- "POLYGON((2500 2500,2855 3828,2500 3875,2500 2500))",
- "POLYGON((2500 2500,2791 3586,2499 3625,2208 3586,2500 2500))"
-};
-
template <typename Polygon>
void test_areal()
{
- test_one<Polygon, Polygon, Polygon>("pie_2_3_23_0",
- pie_2_3_23_0[0], pie_2_3_23_0[1],
- 1, 4, 163292.679042133, 0.1);
-
test_one<Polygon, Polygon, Polygon>("simplex_with_empty_1",
simplex_normal[0], polygon_empty,
0, 0, 0.0);
@@ -165,29 +150,51 @@ void test_areal()
crossed[0], crossed[1],
3, 0, 1.5);
+ test_one<Polygon, Polygon, Polygon>("pie_2_3_23_0",
+ pie_2_3_23_0[0], pie_2_3_23_0[1],
+ 1, 4, 163292.679042133, 0.1);
+
+
typedef typename bg::coordinate_type<Polygon>::type ct;
+ bool const ccw = bg::point_order<Polygon>::value == bg::counterclockwise;
+ bool const open = bg::closure<Polygon>::value == bg::open;
+
-#ifdef TEST_ISOVIST
-#ifdef _MSC_VER
test_one<Polygon, Polygon, Polygon>("isovist",
isovist1[0], isovist1[1],
- 1, 20, 88.19203,
+ 1, 19, 88.19203,
if_typed_tt<ct>(0.01, 0.1));
// SQL Server gives: 88.1920416352664
// PostGIS gives: 88.19203677911
-#endif
-#endif
+ test_one<Polygon, Polygon, Polygon>("geos_1",
+ geos_1[0], geos_1[1],
+ 1, -1, 3461.0214843);
+ test_one<Polygon, Polygon, Polygon>("geos_2",
+ geos_2[0], geos_2[1],
+ 0, 0, 0.0);
+ test_one<Polygon, Polygon, Polygon>("geos_3",
+ geos_3[0], geos_3[1],
+ 0, -0, 0.0);
+ test_one<Polygon, Polygon, Polygon>("geos_4",
+ geos_4[0], geos_4[1],
+ 1, -1, 0.08368849);
- //std::cout << typeid(ct).name() << std::endl;
- test_one<Polygon, Polygon, Polygon>("ggl_list_20110306_javier",
- ggl_list_20110306_javier[0], ggl_list_20110306_javier[1],
- 1, if_typed_tt<ct>(5, 4),
- 0.6649875,
- if_typed<ct, float>(1.0, 0.01));
-
+ if (! ccw && open)
+ {
+ // Pointcount for ttmath/double (both 5) or float (4)
+ // double returns 5 (since method append_no_dups_or_spikes)
+ // but not for ccw/open. Those cases has to be adapted once, anyway,
+ // because for open always one point too much is generated...
+ test_one<Polygon, Polygon, Polygon>("ggl_list_20110306_javier",
+ ggl_list_20110306_javier[0], ggl_list_20110306_javier[1],
+ 1, if_typed<ct, float>(4, 5),
+ 0.6649875,
+ if_typed<ct, float>(1.0, 0.01));
+ }
+
test_one<Polygon, Polygon, Polygon>("ggl_list_20110307_javier",
ggl_list_20110307_javier[0], ggl_list_20110307_javier[1],
1, 4, 0.4, 0.01);
@@ -196,23 +203,71 @@ void test_areal()
ggl_list_20110627_phillip[0], ggl_list_20110627_phillip[1],
1, if_typed_tt<ct>(6, 5), 11151.6618);
-#ifdef _MSC_VER // gcc/linux behaves differently
- if (! boost::is_same<ct, float>::value)
- {
- test_one<Polygon, Polygon, Polygon>("ggl_list_20110716_enrico",
- ggl_list_20110716_enrico[0], ggl_list_20110716_enrico[1],
- 3,
- if_typed<ct, float>(19, if_typed<ct, double>(22, 21)),
- 35723.8506317139);
- }
+ test_one<Polygon, Polygon, Polygon>("ggl_list_20110716_enrico",
+ ggl_list_20110716_enrico[0], ggl_list_20110716_enrico[1],
+ 3, 16, 35723.8506317139);
+
+ test_one<Polygon, Polygon, Polygon>("ggl_list_20131119_james",
+ ggl_list_20131119_james[0], ggl_list_20131119_james[1],
+ 1, 4, 6.6125873045, 0.1);
+
+ test_one<Polygon, Polygon, Polygon>("ggl_list_20140223_shalabuda",
+ ggl_list_20140223_shalabuda[0], ggl_list_20140223_shalabuda[1],
+ 1, 4, 3.77106);
+
+#if 0
+ // TODO: fix this testcase, it should give 0 but instead it gives one of the input polygons
+ // Mailed to the Boost.Geometry list on 2014/03/21 by 7415963@gmail.com
+ test_one<Polygon, Polygon, Polygon>("ggl_list_20140321_7415963",
+ ggl_list_20140321_7415963[0], ggl_list_20140321_7415963[1],
+ 0, 0, 0, 0.1);
#endif
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
test_one<Polygon, Polygon, Polygon>("buffer_rt_f", buffer_rt_f[0], buffer_rt_f[1],
1, 4, 0.00029437899183903937, 0.01);
+#endif
test_one<Polygon, Polygon, Polygon>("buffer_rt_g", buffer_rt_g[0], buffer_rt_g[1],
1, 0, 2.914213562373);
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ test_one<Polygon, Polygon, Polygon>("ticket_8254", ticket_8254[0], ticket_8254[1],
+ 1, 4, 3.6334e-08, 0.01);
+#endif
+
+ test_one<Polygon, Polygon, Polygon>("ticket_6958", ticket_6958[0], ticket_6958[1],
+ 1, 4, 4.34355e-05, 0.01);
+
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ test_one<Polygon, Polygon, Polygon>("ticket_8652", ticket_8652[0], ticket_8652[1],
+ 1, 4, 0.0003);
+#endif
+
+ test_one<Polygon, Polygon, Polygon>("ticket_8310a", ticket_8310a[0], ticket_8310a[1],
+ 1, 5, 0.3843747);
+ test_one<Polygon, Polygon, Polygon>("ticket_8310b", ticket_8310b[0], ticket_8310b[1],
+ 1, 5, 0.3734379);
+ test_one<Polygon, Polygon, Polygon>("ticket_8310c", ticket_8310c[0], ticket_8310c[1],
+ 1, 5, 0.4689541);
+
+ test_one<Polygon, Polygon, Polygon>("ticket_9081_15",
+ ticket_9081_15[0], ticket_9081_15[1],
+ 1, 4, 0.0068895780745301394);
+
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ test_one<Polygon, Polygon, Polygon>("ticket_9563", ticket_9563[0], ticket_9563[1],
+ 1, 8, 129.90381);
+#endif
+
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ test_one<Polygon, Polygon, Polygon>("buffer_mp1", buffer_mp1[0], buffer_mp1[1],
+ 1, 31, 2.271707796);
+#endif
+
+ test_one<Polygon, Polygon, Polygon>("buffer_mp2", buffer_mp2[0], buffer_mp2[1],
+ 1, 29, 0.457126);
+
return;
@@ -282,14 +337,13 @@ void test_boxes(std::string const& wkt1, std::string const& wkt2, double expecte
}
}
-
template <typename P>
void test_point_output()
{
typedef bg::model::linestring<P> linestring;
typedef bg::model::polygon<P> polygon;
typedef bg::model::box<P> box;
- typedef bg::model::segment<P> segment;
+ //typedef bg::model::segment<P> segment;
test_point_output<polygon, polygon>(simplex_normal[0], simplex_normal[1], 6);
test_point_output<box, polygon>("box(1 1,6 4)", simplex_normal[0], 4);
@@ -312,7 +366,7 @@ void test_areal_linear()
test_one_lp<LineString, Polygon, LineString>("case4", "POLYGON((0 0,0 4,2 4,2 0,0 0))", "LINESTRING(1 1,3 2,1 3)", 2, 4, sqrt(5.0));
test_one_lp<LineString, Polygon, LineString>("case5", poly_simplex, "LINESTRING(0 1,3 4)", 1, 2, sqrt(2.0));
- test_one_lp<LineString, Polygon, LineString>("case6", "POLYGON((2 0,2 4,3 4,3 1,4 1,4 3,5 3,5 1,6 1,6 3,7 3,7 1,8 1,8 3,9 3,9 0,2 0))", "LINESTRING(1 1,10 3)", 4, 8,
+ test_one_lp<LineString, Polygon, LineString>("case6", "POLYGON((2 0,2 4,3 4,3 1,4 1,4 3,5 3,5 1,6 1,6 3,7 3,7 1,8 1,8 3,9 3,9 0,2 0))", "LINESTRING(1 1,10 3)", 4, 8,
// Pieces are 1 x 2/9:
4.0 * sqrt(1.0 + 4.0/81.0));
test_one_lp<LineString, Polygon, LineString>("case7", poly_simplex, "LINESTRING(1.5 1.5,2.5 2.5)", 1, 2, sqrt(2.0));
@@ -330,12 +384,14 @@ void test_areal_linear()
test_one_lp<LineString, Polygon, LineString>("case16", poly_9, "LINESTRING(2 2,1 2,1 3,2 3)", 1, 4, 3.0);
std::string const angly = "LINESTRING(2 2,2 1,4 1,4 2,5 2,5 3,4 3,4 4,5 4,3 6,3 5,2 5,2 6,0 4)";
- test_one_lp<LineString, Polygon, LineString>("case17", "POLYGON((1 1,1 5,4 5,4 1,1 1))", angly, 3, 8, 6.0);
+ // PROPERTIES CHANGED BY switch_to_integer
+ // TODO test_one_lp<LineString, Polygon, LineString>("case17", "POLYGON((1 1,1 5,4 5,4 1,1 1))", angly, 3, 8, 6.0);
test_one_lp<LineString, Polygon, LineString>("case18", "POLYGON((1 1,1 5,5 5,5 1,1 1))", angly, 2, 12, 10.0 + sqrt(2.0));
test_one_lp<LineString, Polygon, LineString>("case19", poly_9, "LINESTRING(1 2,1 3,0 3)", 1, 2, 1.0);
test_one_lp<LineString, Polygon, LineString>("case20", poly_9, "LINESTRING(1 2,1 3,2 3)", 1, 3, 2.0);
- test_one_lp<LineString, Polygon, LineString>("case21", poly_9, "LINESTRING(1 2,1 4,4 4,4 1,2 1,2 2)", 1, 6, 11.0);
+ // PROPERTIES CHANGED BY switch_to_integer
+ // TODO test_one_lp<LineString, Polygon, LineString>("case21", poly_9, "LINESTRING(1 2,1 4,4 4,4 1,2 1,2 2)", 1, 6, 11.0);
// Compile test - arguments in any order:
test_one<LineString, Polygon, LineString>("simplex", poly_simplex, "LINESTRING(0 2,4 2)", 1, 2, 2.0);
@@ -346,7 +402,6 @@ void test_areal_linear()
}
-
template <typename P>
void test_all()
{
@@ -358,24 +413,30 @@ void test_all()
typedef bg::model::polygon<P, false> polygon_ccw;
typedef bg::model::polygon<P, true, false> polygon_open;
typedef bg::model::polygon<P, false, false> polygon_ccw_open;
+ boost::ignore_unused<polygon_ccw, polygon_open, polygon_ccw_open>();
std::string clip = "box(2 2,8 8)";
test_areal_linear<polygon, linestring>();
+#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
test_areal_linear<polygon_open, linestring>();
test_areal_linear<polygon_ccw, linestring>();
test_areal_linear<polygon_ccw_open, linestring>();
+#endif
// Test polygons clockwise and counter clockwise
test_areal<polygon>();
+#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
test_areal<polygon_ccw>();
test_areal<polygon_open>();
test_areal<polygon_ccw_open>();
-
+#endif
test_areal_clip<polygon, box>();
+#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
test_areal_clip<polygon_ccw, box>();
+#endif
#if defined(TEST_FAIL_DIFFERENT_ORIENTATIONS)
// Should NOT compile
@@ -503,6 +564,34 @@ void test_rational()
}
+template <typename P>
+void test_boxes_per_d(P const& min1, P const& max1, P const& min2, P const& max2, bool expected_result)
+{
+ typedef bg::model::box<P> box;
+
+ box box_out;
+ bool detected = bg::intersection(box(min1, max1), box(min2, max2), box_out);
+
+ BOOST_CHECK_EQUAL(detected, expected_result);
+ if ( detected && expected_result )
+ {
+ BOOST_CHECK( bg::equals(box_out, box(min2,max1)) );
+ }
+}
+
+template <typename CoordinateType>
+void test_boxes_nd()
+{
+ typedef bg::model::point<CoordinateType, 1, bg::cs::cartesian> p1;
+ typedef bg::model::point<CoordinateType, 2, bg::cs::cartesian> p2;
+ typedef bg::model::point<CoordinateType, 3, bg::cs::cartesian> p3;
+
+ test_boxes_per_d(p1(0), p1(5), p1(3), p1(6), true);
+ test_boxes_per_d(p2(0,0), p2(5,5), p2(3,3), p2(6,6), true);
+ test_boxes_per_d(p3(0,0,0), p3(5,5,5), p3(3,3,3), p3(6,6,6), true);
+}
+
+
int test_main(int, char* [])
{
test_all<bg::model::d2::point_xy<double> >();
@@ -519,7 +608,11 @@ int test_main(int, char* [])
test_exception<bg::model::d2::point_xy<double> >();
test_pointer_version();
+#if ! defined(BOOST_GEOMETRY_RESCALE_TO_ROBUST)
test_rational<bg::model::d2::point_xy<boost::rational<int> > >();
+#endif
+
+ test_boxes_nd<double>();
return 0;
}
diff --git a/libs/geometry/test/algorithms/intersection.vcproj b/libs/geometry/test/algorithms/intersection.vcproj
deleted file mode 100644
index a9bc3a6f3d..0000000000
--- a/libs/geometry/test/algorithms/intersection.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="intersection"
- ProjectGUID="{2FD8EDAB-B3C3-4654-B6C3-B25C12A063D3}"
- RootNamespace="intersection"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\intersection"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/bigobj"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\intersection"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/bigobj"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\intersection.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/intersection_linear_linear.cpp b/libs/geometry/test/algorithms/intersection_linear_linear.cpp
new file mode 100644
index 0000000000..d4cb22a736
--- /dev/null
+++ b/libs/geometry/test/algorithms/intersection_linear_linear.cpp
@@ -0,0 +1,1539 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_intersection_linear_linear
+#endif
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+#define BOOST_GEOMETRY_DEBUG_TURNS
+#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_intersection_linear_linear.hpp"
+
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/algorithms/intersection.hpp>
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::segment<point_type> segment_type;
+typedef bg::model::linestring<point_type> linestring_type;
+typedef bg::model::multi_linestring<linestring_type> multi_linestring_type;
+
+
+
+//===========================================================================
+//===========================================================================
+//===========================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_intersection_linestring_linestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** LINESTRING / LINESTRING INTERSECTION ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_intersection_of_geometries<L, L, ML> tester;
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 1,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(0 2,1 1,2 1,3 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 1))"),
+ "lli00");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,5 0)"),
+ from_wkt<L>("LINESTRING(3 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((3 0,4 0))"),
+ "lli01");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,6 0)"),
+ from_wkt<ML>("MULTILINESTRING((3 0,4 0))"),
+ "lli01-2");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,6 0)"),
+ from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,4 0))"),
+ "lli01-4");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((4 0,5 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0),(2 0),(4 0,5 0),(6.5 0),(8 0))"),
+#endif
+ "lli01-6");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-20 0,20 0)"),
+ from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((4 0,5 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0),(2 0),(4 0,5 0),(6.5 0),(8 0))"),
+#endif
+ "lli01-7");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<L>("LINESTRING(2 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0))"),
+ "lli01-8");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "lli01-10");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(2 0,5 0)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING()"),
+#else
+ from_wkt<ML>("MULTILINESTRING((2 0))"),
+#endif
+ "lli01-11");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((3 0,4 0))"),
+ "lli01-11a");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((3 0,4 0))"),
+ "lli01-11b");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,5 0,10 0)"),
+ from_wkt<L>("LINESTRING(2 0,6 0,8 0)"),
+ from_wkt<ML>("MULTILINESTRING((2 0,5 0,8 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,6 0,8 0))"),
+ "lli01-11c");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,6 0)"),
+ from_wkt<L>("LINESTRING(2 0,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((2 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0,5 0))"),
+ "lli01-12");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0)"),
+ from_wkt<L>("LINESTRING(-1 6,0 5,15 5)"),
+ from_wkt<ML>("MULTILINESTRING((5 5,10 5))"),
+ "lli02");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,20 0))"),
+ "lli03");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0,20 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,20 0))"),
+ "lli04");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,25 1)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0)(15 0,20 0))"),
+ "lli05");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,20 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,30 0))"),
+ "lli05-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,20 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,30 0))"),
+ "lli06");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,25 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,20 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,25 0,30 0))"),
+ "lli07");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,20 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,19 0,30 0))"),
+ "lli08");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,20 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,30 0))"),
+ "lli09");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,20 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(15 0,30 0))"),
+ "lli10");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,\
+ 30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0),(3 0,4 0),\
+ (15 0,20 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0),(3 0,4 0),\
+ (15 0,30 0))"),
+ "lli11");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0),\
+ (3 0,4 0),(15 0,30 0))"),
+ "lli11-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0,3 1))"),
+ "lli12");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<L>("LINESTRING(3 1,2 0,0 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((3 1,2 0,0 0))"),
+ "lli12-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
+ from_wkt<L>("LINESTRING(1 0,2 1,3 5,4 0,5 10)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,2 1,3 5,4 0))"),
+ "lli13");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 0,2.5 0,3 1)"),
+ from_wkt<L>("LINESTRING(0 0,2 0,2.5 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0,2.5 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0,2.5 0,3 1))"),
+ "lli14");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
+ from_wkt<L>("LINESTRING(1 0,2 1,3 5)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,2 1,3 5))"),
+ "lli15");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(0.5 0,1 0,3 2,4 5)"),
+ from_wkt<ML>("MULTILINESTRING((0.5 0,1 0,2 1,3 2))"),
+ from_wkt<ML>("MULTILINESTRING((0.5 0,1 0,3 2))"),
+ "lli16");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(4 5,3 2,1 0,0.5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0.5 0,1 0,2 1,3 2))"),
+ from_wkt<ML>("MULTILINESTRING((0.5 0,1 0,3 2))"),
+ "lli16-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1,30 1)"),
+ from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 1)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((20 1,25 1))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((2 0),(20 1,25 1))"),
+#endif
+ "lli17");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1,21 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 0)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING()"),
+#else
+ from_wkt<ML>("MULTILINESTRING((2 0),(20 1),(25 0))"),
+#endif
+ "lli18");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 1)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0),(4 0))"),
+#endif
+ "lli19");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,4 0,4 1,20 1,5 0,1 0)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0),(4 0))"),
+#endif
+ "lli19-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0),(4 0))"),
+#endif
+ "lli19a");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(4 0,4 1,20 1,5 0,1 0)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0),(4 0))"),
+#endif
+ "lli19a-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0),(4 0,5 0))"),
+ "lli19b");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,6 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0),(4 0,5 0))"),
+ "lli19c");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0),(4 0,3 0))"),
+ "lli19d");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0),(4 0,3 0))"),
+ "lli19e");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,5 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0),(4 0,5 0))"),
+ "lli19f");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,5 0,4 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,4 0),(5 0,1 0))"),
+ "lli19f-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,5 0,5 1)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0),(5 0))"),
+#endif
+ "lli19g");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,5 0,4 1,20 1,5 0,1 0)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0),(5 0))"),
+#endif
+ "lli19g-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
+ from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,35 0)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((20 0,25 0),(10 30,10 0),\
+ (35 0,40 0),(20 0,25 0))"),
+ from_wkt<ML>("MULTILINESTRING((20 0,25 0),(10 0,10 30),\
+ (40 0,35 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((10 0),(20 0,25 0),(10 30,10 0),\
+ (30 20),(35 0,40 0),(20 0,25 0))"),
+ from_wkt<ML>("MULTILINESTRING((10 0),(20 0,25 0),(10 0,10 30),\
+ (30 20),(40 0,35 0))"),
+#endif
+ "lli20");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
+ from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,15 0)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((15 0,30 0),(10 30,10 0),\
+ (15 0,40 0))"),
+ from_wkt<ML>("MULTILINESTRING((10 0,10 30),(20 0,25 0),(40 0,15 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((10 0),(15 0,30 0),(10 30,10 0),\
+ (30 20),(15 0,40 0))"),
+ from_wkt<ML>("MULTILINESTRING((10 0),(10 0,10 30),(20 0,25 0),\
+ (30 20),(40 0,15 0))"),
+#endif
+ "lli20a");
+
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<L>("LINESTRING(2 2,5 -1,15 2,18 0,20 0)"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((18 0,19 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((18 0,20 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((4 0),(8.33333333333333333 0),\
+ (18 0,19 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((4 0),(8.33333333333333333 0),\
+ (18 0,20 0))"),
+#endif
+ "lli21"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0)"),
+ from_wkt<L>("LINESTRING(1 0,4 0,2 1,5 1,4 0,8 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,4 0),(4 0,8 0))"),
+ "lli22"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0)"),
+ from_wkt<L>("LINESTRING(4 0,5 0,5 1,1 1,1 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,4 0),(4 0,5 0))"),
+ "lli23"
+ );
+
+ // the following two tests have been discussed with by Adam
+ tester::apply
+ (from_wkt<L>("LINESTRING(1 0,1 1,2 1)"),
+ from_wkt<L>("LINESTRING(2 1,1 1,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1))"),
+ "lli24"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(1 0,1 1,2 1)"),
+ from_wkt<L>("LINESTRING(1 2,1 1,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1))"),
+ "lli25"
+ );
+}
+
+
+
+
+BOOST_AUTO_TEST_CASE( test_intersection_linestring_multilinestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** LINESTRING / MULTILINESTRING INTERSECTION ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_intersection_of_geometries<L, ML, ML> tester;
+
+ // the inertsection code automatically reverses the order of the
+ // geometries according to the geometry IDs.
+ // all calls below are actually reversed, and internally the
+ // intersection of the linestring with the multi-linestring is
+ // computed.
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "lmli01"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0))"),
+ "lmli02"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,5 0))"),
+ "lmli03"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0))"),
+ "lmli04"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,101 0))"),
+ "lmli07"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ "lmli07a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ "lmli07b"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,101 0))"),
+ "lmli08"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 0.5,3 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((3 0,101 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0),(2 0.5),(3 0,101 0))"),
+#endif
+ "lmli09"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,1.5 0,2 0.5,3 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,1.5 0),(3 0,101 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0),(2 0.5),(1 0,1.5 0),(3 0,101 0))"),
+#endif
+ "lmli10"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
+ (3 1,4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ "lmli12"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\
+ (2 0,18 0,19 1),(3 0,17 0,18 1),\
+ (4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ "lmli13"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ "lmli14"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ "lmli15"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ "lmli15a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,5 0,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ "lmli16"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,5 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ "lmli16a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(25 0))"),
+#endif
+ "lmli17"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0,26 2))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(25 0))"),
+#endif
+ "lmli17a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ "lmli18"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,18 0,19 0))"),
+ "lmli18a"
+ );
+}
+
+
+
+
+
+
+#ifndef BOOST_GEOMETRY_TEST_NO_DEGENERATE
+BOOST_AUTO_TEST_CASE( test_intersection_l_ml_degenerate )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** LINESTRING / MULTILINESTRING INTERSECTION"
+ << " (DEGENERATE) ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_intersection_of_geometries<L, ML, ML> tester;
+
+ // the following test cases concern linestrings with duplicate
+ // points and possibly linestrings with zero length.
+
+ // no unique: (3 0) appears twice
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,0 0,18 0,18 0,19 0,19 0,19 0,30 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,1 1,2 2,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (4 0,4 10,4 10))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((5 0,18 0,19 0,20 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0),(1 0),(2 0),(3 0),(4 0),\
+ (5 0,18 0,19 0,20 0))"),
+#endif
+ "lmli20a"
+ );
+
+ // no unique: (3 0) appears twice
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,0 0,18 0,18 0,19 0,19 0,19 0,30 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,1 1,2 2,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (4 0,4 0,4 10,4 10))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((5 0,18 0,19 0,20 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0),(1 0),(2 0),(3 0),(4 0),\
+ (5 0,18 0,19 0,20 0))"),
+#endif
+ "lmli20b"
+ );
+
+ // no unique: (3 0) appears twice
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,0 0,18 0,18 0,19 0,19 0,19 0,30 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,1 1,2 2,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (30 0,30 0,30 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((5 0,18 0,19 0,20 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0),(1 0),(2 0),(3 0),\
+ (5 0,18 0,19 0,20 0),(30 0))"),
+#endif
+ "lmli20c"
+ );
+
+ // no unique: (3 0) appears twice
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,0 0,18 0,18 0,19 0,19 0,19 0,30 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,1 1,2 2,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (30 0,30 0,31 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((5 0,18 0,19 0,20 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0),(1 0),(2 0),(3 0),\
+ (5 0,18 0,19 0,20 0),(30 0))"),
+#endif
+ "lmli20d"
+ );
+}
+#endif // BOOST_GEOMETRY_TEST_NO_DEGENERATE
+
+
+
+
+BOOST_AUTO_TEST_CASE( test_intersection_multilinestring_linestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / LINESTRING INTERSECTION ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_intersection_of_geometries<ML, L, ML> tester;
+
+ // the intersection code automatically reverses the order of the
+ // geometries according to the geometry IDs.
+ // all calls below are actually reversed, and internally the
+ // intersection of the linestring with the multi-linestring is
+ // computed.
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<L>("LINESTRING(1 1,2 2,4 3)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "mlli01"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<L>("LINESTRING(1 1,2 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0))"),
+ "mlli02"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<L>("LINESTRING(-1 -1,1 0,101 0,200 -1)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,101 0))"),
+ "mlli03"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<L>("LINESTRING(0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(18 0,2 0),\
+ (3 0,17 0),(16 0,4 0))"),
+ "mlli04"
+ );
+}
+
+
+
+
+
+
+BOOST_AUTO_TEST_CASE( test_intersection_multilinestring_multilinestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / MULTILINESTRING INTERSECTION ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef multi_linestring_type ML;
+
+ typedef test_intersection_of_geometries<ML, ML, ML> tester;
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "mlmli01"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0),(2 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0),(3 0,4 0))"),
+ "mlmli02"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,5 0),(2 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0),(3 0,5 0))"),
+ "mlmli03"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0),(2 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0))"),
+ "mlmli04"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (10 10,20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (10 20,15 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0),(2 0,4 0),(15 10,20 10))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0),(15 10,20 10))"),
+ "mlmli05"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
+ (10 10,20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
+ (10 20,15 10,25 10,30 15))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((0 0,9 0),(13 3,15 5),\
+ (1 0,7 0),(11 10,12 10),(15 10,20 10))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0),(0 0,9 0),(13 3,14 4,15 5),\
+ (11 10,12 10),(15 10,20 10))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0,9 0),(13 3,15 5),(20 10),\
+ (1 0,7 0),(11 10,12 10),(15 10,20 10))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0),(0 0,9 0),(13 3,14 4,15 5),\
+ (11 10,12 10),(15 10,20 10))"),
+#endif
+ "mlmli06"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,101 0))"),
+ "mlmli07"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((-1 1,0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,50 0),(20 0,101 0))"),
+ "mlmli07a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,50 0),(20 0,101 0))"),
+ "mlmli07b"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,101 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0),(1 0,101 0))"),
+#endif
+ "mlmli08"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((3 0,101 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0),(2 0.5),(3 0,101 0))"),
+#endif
+ "mlmli09"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,1.5 0),(3 0,101 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,1.5 0),(2 0.5),(3 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0),(1 0,1.5 0),(2 0.5),(3 0,101 0))"),
+#endif
+ "mlmli10"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 1,100 1,101 0),\
+ (0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1,3 0,4 0,5 1,6 1,\
+ 7 0,8 0,9 1,10 1,11 0,12 0,13 1,14 1,15 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 1,2 1),(5 1,6 1),(9 1,10 1),\
+ (13 1,14 1),(1 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 1),(5 1,6 1),(9 1,10 1),\
+ (13 1,14 1),(3 0,4 0),(7 0,8 0),(11 0,12 0),\
+ (1 0,101 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 1,2 1),(5 1,6 1),(9 1,10 1),\
+ (13 1,14 1),(101 0),(1 0),(1 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0),(1 1,2 1),(5 1,6 1),(9 1,10 1),\
+ (13 1,14 1),(3 0,4 0),(7 0,8 0),(11 0,12 0),(15 0),\
+ (1 0,101 0))"),
+#endif
+ "mlmli11"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
+ (3 1,4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(2 0,18 0),(3 0,17 0),\
+ (4 0,16 0))"),
+ "mlmli12"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\
+ (2 0,18 0,19 1),(3 0,17 0,18 1),\
+ (4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(2 0,18 0),(3 0,17 0),\
+ (4 0,16 0))"),
+ "mlmli13"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(18 0,2 0),\
+ (3 0,17 0),(16 0,4 0))"),
+ "mlmli14"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,6 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(6 0))"),
+#endif
+ "mlmli15"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,4 2,2 2))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(6 0))"),
+#endif
+ "mlmli15a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,5 0,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(5 0,6 0))"),
+ "mlmli16"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,5 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(6 0,5 0))"),
+ "mlmli16a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(25 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(4 0),(25 0))"),
+#endif
+ "mlmli17"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0,26 2))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(25 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(4 0),(25 0))"),
+#endif
+ "mlmli17a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(4 0),\
+ (8.3333333333333333333 0),(18 0))"),
+#endif
+ "mlmli18"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,18 0,19 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,18 0,19 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(4 0),\
+ (8.3333333333333333333 0),(18 0))"),
+#endif
+ "mlmli18a"
+ );
+}
+
+
+
+
+
+
+#ifndef BOOST_GEOMETRY_TEST_NO_DEGENERATE
+BOOST_AUTO_TEST_CASE( test_intersection_ml_ml_degenerate )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / MULTILINESTRING INTERSECTION"
+ << " (DEGENERATE) ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef multi_linestring_type ML;
+
+ typedef test_intersection_of_geometries<ML, ML, ML> tester;
+
+ // the following test cases concern linestrings with duplicate
+ // points and possibly linestrings with zero length.
+
+ // no unique: (3 0) appears twice
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((5 5,5 5),(0 0,18 0,18 0,\
+ 19 0,19 0,19 0,30 0),(2 0,2 0),(4 10,4 10))"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 10),\
+ (4 0,4 10),(5 5,5 5))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((5 0,18 0,19 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((5 5),(0 0),(1 0),(2 0),(3 0),\
+ (4 0),(5 0,18 0,19 0,20 0),(2 0),(4 10))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0),(1 0),(2 0),(2 0),(3 0),\
+ (0 0),(4 0),(4 10),(5 5))"),
+#endif
+ "mlmli20a"
+ );
+
+ // no unique: (3 0) appears three times
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((5 5,5 5),(0 0,0 0,18 0,18 0,\
+ 19 0,19 0,19 0,30 0,30 0),(2 0,2 0),(4 10,4 10))"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,1 1,2 2,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (4 0,4 10,4 10),(5 5,5 5))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((5 0,18 0,19 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((5 5),(0 0),(1 0),(2 0),(3 0),(4 0),\
+ (5 0,18 0,19 0,20 0),(2 0),(4 10))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0),(1 0),(2 0),(2 0),\
+ (3 0),(0 0),(4 0),(4 10),(5 5))"),
+#endif
+ "mlmli20aa"
+ );
+
+ // no unique: (3 0) appears twice
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((5 5,5 5),(0 0,0 0,18 0,18 0,\
+ 19 0,19 0,19 0,30 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,1 1,2 2,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (4 0,4 0,4 10,4 10),(0 5,15 5))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((5 0,18 0,19 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((5 5),(0 0),(1 0),(2 0),(3 0),(4 0),\
+ (5 0,18 0,19 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0),(1 0),(2 0),(3 0),\
+ (0 0),(4 0),(5 5))"),
+#endif
+ "mlmli20b"
+ );
+
+ // no unique: (3 0) and (30 0) appear twice
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,0 0,18 0,18 0,\
+ 19 0,19 0,19 0,30 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,1 1,2 2,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (30 0,30 0,30 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((5 0,18 0,19 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0),(1 0),(2 0),(3 0),\
+ (5 0,18 0,19 0,20 0),(30 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0),(1 0),(2 0),(3 0),\
+ (0 0),(30 0))"),
+#endif
+ "mlmli20c"
+ );
+
+ // no unique: (3 0) appears twice
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,0 0,18 0,18 0,\
+ 19 0,19 0,19 0,30 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((-10 0,-9 0),(0 10,5 0,20 0,20 0,30 10),\
+ (1 1,1 1,2 2,2 2),(1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (30 0,30 0,31 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((5 0,18 0,19 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0),(1 0),(2 0),(3 0),\
+ (5 0,18 0,19 0,20 0),(30 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0),(1 0),(2 0),(3 0),\
+ (0 0),(30 0))"),
+#endif
+ "mlmli20d"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,0 0,18 0,18 0,\
+ 19 0,19 0,19 0,30 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 10,5 0,20 0,20 0,30 0),\
+ (1 10,1 10,1 0,1 0,1 -10),\
+ (2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),\
+ (30 0,30 0,31 0,31 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((5 0,18 0,19 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0,30 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0),(1 0),(2 0),(3 0),\
+ (5 0,18 0,19 0,30 0),(30 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 0,20 0,30 0),(1 0),(2 0),(3 0),\
+ (0 0),(30 0))"),
+#endif
+ "mlmli20e"
+ );
+}
+#endif // BOOST_GEOMETRY_TEST_NO_DEGENERATE
+
+
+
+
+BOOST_AUTO_TEST_CASE( test_intersection_ml_ml_spikes )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / MULTILINESTRING INTERSECTION"
+ << " (WITH SPIKES) ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef multi_linestring_type ML;
+
+ typedef test_intersection_of_geometries<ML, ML, ML> tester;
+
+ // the following test cases concern linestrings with spikes
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,9 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,9 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,9 0,5 0))"),
+ "mlmli-spikes-01"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((9 0,1 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,9 0))"),
+ from_wkt<ML>("MULTILINESTRING((9 0,1 0,5 0))"),
+ "mlmli-spikes-02"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,9 0,2 0,8 0,3 0,7 0,4 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,9 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,9 0,2 0,8 0,3 0,7 0,4 0,5 0))"),
+ "mlmli-spikes-03"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,3 0,2 0,4 0,3 0,5 0,4 0,6 0,\
+ 5 0,7 0,6 0,8 0,7 0,9 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,9 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,3 0,2 0,4 0,3 0,5 0,4 0,6 0,\
+ 5 0,7 0,6 0,8 0,7 0,9 0))"),
+ "mlmli-spikes-04"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(7 0,8 0,7 0),\
+ (9 1,9 0,9 2))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0),(7 0,8 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(7 0,8 0,7 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0),(7 0,8 0),(9 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(7 0,8 0,7 0),(9 0))"),
+#endif
+ "mlmli-spikes-05"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(7 0,8 0,7 0),\
+ (9 0,9 2,9 1))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0),(7 0,8 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(7 0,8 0,7 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0),(7 0,8 0),(9 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(7 0,8 0,7 0),(9 0))"),
+#endif
+ "mlmli-spikes-05a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(9 0,6 0,8 0),\
+ (11 0,8 0,12 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0),(6 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(9 0,6 0,8 0),\
+ (10 0,8 0,10 0))"),
+ "mlmli-spikes-06"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,0 0,-2 0),(11 0,10 0,12 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING()"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0),(10 0))"),
+#endif
+ "mlmli-spikes-07"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,-2 -2),(11 1,10 0,12 2))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING()"),
+#else
+ from_wkt<ML>("MULTILINESTRING((0 0),(10 0))"),
+#endif
+ "mlmli-spikes-07a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(11 0,10 0,12 0),\
+ (7 5,7 0,8 0,6.5 0,8.5 0,8.5 5))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0),(6.5 0,8.5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(7 0,8 0,6.5 0,8.5 0))"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0),(6.5 0,8.5 0),(10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,6 0,5 0),(7 0,8 0,6.5 0,8.5 0),(10 0))"),
+#endif
+ "mlmli-spikes-08"
+ );
+
+ // now the first geometry has a spike
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,7 0,4 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,8 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,7 0,4 0,8 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,8 0))"),
+ "mlmli-spikes-09"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,7 0,4 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(9 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(9 0,10 0))"),
+ "mlmli-spikes-09a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,7 0,4 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0),(9 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0),(5 0,4 0,5 0),(9 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0),(9 0,10 0))"),
+ "mlmli-spikes-09b"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,7 0,4 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0),(6 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0),(6 0,7 0,6 0),(5 0,4 0,5 0),\
+ (6 0,10 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0),(6 0,10 0))"),
+ "mlmli-spikes-09c"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,8 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,8 0),(8 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,8 0))"),
+ "mlmli-spikes-10"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,8 0,4 0),(2 0,9 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,9 0),(9 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,8 0,4 0),(2 0,9 0,5 0))"),
+ "mlmli-spikes-11"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((11 1,10 0,12 2))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING()"),
+#else
+ from_wkt<ML>("MULTILINESTRING((10 0))"),
+#endif
+ "mlmli-spikes-12"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((11 -1,10 0,12 -2))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING()"),
+#else
+ from_wkt<ML>("MULTILINESTRING((10 0))"),
+#endif
+ "mlmli-spikes-12a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((11 0,10 0,12 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING()"),
+#else
+ from_wkt<ML>("MULTILINESTRING((10 0))"),
+#endif
+ "mlmli-spikes-13"
+ );
+
+ // the following three tests have been discussed with Adam
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 2,1 1,1 2))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING()"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 1))"),
+#endif
+ "mlmli-spikes-14"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 0,0 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,1 0,2 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING()"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 0))"),
+#endif
+ "mlmli-spikes-15"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,1 1,2 0))"),
+#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS
+ from_wkt<ML>("MULTILINESTRING()"),
+#else
+ from_wkt<ML>("MULTILINESTRING((1 1))"),
+#endif
+ "mlmli-spikes-16"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1))"),
+ from_wkt<ML>("MULTILINESTRING((2 1,1 1,2 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 1))"),
+ from_wkt<ML>("MULTILINESTRING((2 1,1 1,2 1))"),
+ "mlmli-spikes-17"
+ );
+
+ // test cases sent by Adam on the mailing list (equal slikes)
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 1,0 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1,0 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1,0 0))"),
+ "mlmli-spikes-18"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 1,0 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,0 0,1 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1,0 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,0 0,1 1))"),
+ "mlmli-spikes-19"
+ );
+}
diff --git a/libs/geometry/test/algorithms/intersection_pl_pl.cpp b/libs/geometry/test/algorithms/intersection_pl_pl.cpp
new file mode 100644
index 0000000000..da5617b92d
--- /dev/null
+++ b/libs/geometry/test/algorithms/intersection_pl_pl.cpp
@@ -0,0 +1,185 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_intersection_pointlike_pointlike
+#endif
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+#define BOOST_GEOMETRY_DEBUG_TURNS
+#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_set_ops_pl_pl.hpp"
+
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::multi_point<point_type> multi_point_type;
+
+
+
+//===========================================================================
+//===========================================================================
+//===========================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_intersection_point_point )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** POINT / POINT INTERSECTION ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef point_type P;
+ typedef multi_point_type MP;
+
+ typedef test_set_op_of_pointlike_geometries
+ <
+ P, P, MP, bg::overlay_intersection
+ > tester;
+
+ tester::apply
+ (from_wkt<P>("POINT(0 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "ppi01");
+
+ tester::apply
+ (from_wkt<P>("POINT(0 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ "ppi02");
+}
+
+
+BOOST_AUTO_TEST_CASE( test_intersection_multipoint_point )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTIPOINT / POINT INTERSECTION ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef point_type P;
+ typedef multi_point_type MP;
+
+ typedef test_set_op_of_pointlike_geometries
+ <
+ MP, P, MP, bg::overlay_intersection
+ > tester;
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mppi01");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ "mppi02");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mppi03");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ "mppi04");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mppi05");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0)"),
+ from_wkt<P>("POINT(1 0)"),
+ from_wkt<MP>("MULTIPOINT(1 0)"),
+ "mppi06");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ "mppi07");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mppi08");
+}
+
+
+BOOST_AUTO_TEST_CASE( test_intersection_multipoint_multipoint )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTIPOINT / MULTIPOINT INTERSECTION ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef multi_point_type MP;
+
+ typedef test_set_op_of_pointlike_geometries
+ <
+ MP, MP, MP, bg::overlay_intersection
+ > tester;
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(2 2,3 3,0 0,0 0,2 2,1 1,1 1,1 0,1 0)"),
+ from_wkt<MP>("MULTIPOINT(1 0,1 1,1 1,1 1)"),
+ from_wkt<MP>("MULTIPOINT(1 0,1 1,1 1,1 1)"),
+ "mpmpi01");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,1 1,1 0,1 1)"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,1 1,0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0,1 1,1 0,1 1)"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,1 1,0 0)"),
+ "mpmpi02");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,1 1,0 0)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mpmpi03");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,1 1,1 0,1 1)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mpmpi04");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mpmpi05");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,1 0,2 0,3 0,0 0,1 0,2 0)"),
+ from_wkt<MP>("MULTIPOINT(0 1,0 2,1 0,0 0,2 0)"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,2 0)"),
+ "mpmpi06");
+}
+
diff --git a/libs/geometry/test/algorithms/intersects.cpp b/libs/geometry/test/algorithms/intersects.cpp
index ab8a36ae9a..82bd0fe8ec 100644
--- a/libs/geometry/test/algorithms/intersects.cpp
+++ b/libs/geometry/test/algorithms/intersects.cpp
@@ -1,6 +1,11 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
-//
+
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
+// This file was modified by Oracle on 2013.
+// Modifications copyright (c) 2013, Oracle and/or its affiliates.
+
// 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)
@@ -13,17 +18,154 @@
#include <boost/geometry/util/rational.hpp>
+template <typename P>
+void test_intersects_polygon_polygon()
+{
+ typedef bg::model::polygon<P, false, false> poly_ccw_o;
+ test_geometry<poly_ccw_o, poly_ccw_o>("POLYGON((1 1, 3 3, 2 5))", "POLYGON((0 0, 9 0, 9 9, 0 9),(5 5,5 8,8 8,8 5))", true);
+ test_geometry<poly_ccw_o, poly_ccw_o>("POLYGON((6 6, 7 6, 7 7, 6 7))", "POLYGON((0 0, 9 0, 9 9, 0 9),(5 5,5 8,8 8,8 5))", false);
+ test_geometry<poly_ccw_o, poly_ccw_o>("POLYGON((7 7, 9 7, 9 9, 7 9))", "POLYGON((0 0, 9 0, 9 9, 0 9),(5 5,5 8,8 8,8 5))", true);
+}
+
+template <typename P>
+void test_intersects_linestring_segment()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::segment<P> seg;
+
+ test_geometry<ls, seg>("LINESTRING(1 1, 3 3, 2 5)", "SEGMENT(2 0, 2 6)", true);
+ test_geometry<ls, seg>("LINESTRING(1 1, 3 3)", "SEGMENT(1 0, 1 1)", true);
+ test_geometry<ls, seg>("LINESTRING(1 1, 3 3)", "SEGMENT(2 0, 2 2)", true);
+ test_geometry<ls, seg>("LINESTRING(1 1, 3 3)", "SEGMENT(3 0, 4 1)", false);
+}
+
+template <typename P>
+void test_intersects_linestring_linestring()
+{
+ typedef bg::model::linestring<P> ls;
+
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,3 0)", "LINESTRING(0 0,1 1,2 2)", true);
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,3 0)", "LINESTRING(2 2,1 1,0 0)", true);
+ test_geometry<ls, ls>("LINESTRING(3 0,2 0,0 0)", "LINESTRING(0 0,1 1,2 2)", true);
+ test_geometry<ls, ls>("LINESTRING(3 0,2 0,0 0)", "LINESTRING(2 2,1 1,0 0)", true);
+
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,3 0)", "LINESTRING(1 0,4 0,5 0)", true);
+ test_geometry<ls, ls>("LINESTRING(1 0,2 0)", "LINESTRING(1 0,0 0)", true);
+}
+
+template <typename P>
+void test_intersects_linestring_polygon()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+ typedef bg::model::polygon<P> poly_cw_c;
+ typedef bg::model::polygon<P, false> poly_ccw_c;
+ typedef bg::model::polygon<P, false, false> poly_ccw_o;
+ typedef bg::model::multi_polygon<poly_ccw_c> mpoly_ccw_c;
+
+ test_geometry<ls, poly_ccw_c>("LINESTRING(1 1,2 2)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", true);
+ test_geometry<ls, poly_ccw_c>("LINESTRING(1 0,2 2)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", true);
+ test_geometry<ls, poly_ccw_c>("LINESTRING(11 0,12 12)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", false);
+
+ test_geometry<ls, poly_ccw_o>("LINESTRING(1 1, 3 3, 2 5)", "POLYGON((0 0, 9 0, 9 9, 0 9),(5 5,5 8,8 8,8 5))", true);
+ test_geometry<ls, poly_ccw_o>("LINESTRING(6 6, 7 6, 7 7, 6 7)", "POLYGON((0 0, 9 0, 9 9, 0 9),(5 5,5 8,8 8,8 5))", false);
+ test_geometry<ls, poly_ccw_o>("LINESTRING(7 7, 9 7, 9 9, 7 9)", "POLYGON((0 0, 9 0, 9 9, 0 9),(5 5,5 8,8 8,8 5))", true);
+
+ test_geometry<poly_cw_c, ls>("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))", "LINESTRING(-2 -2, 12 7)", true);
+ test_geometry<poly_cw_c, ls>("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))", "LINESTRING(5 5, 15 4)", true);
+ test_geometry<poly_cw_c, ls>("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))", "LINESTRING(7 6, 15 4)", true);
+ test_geometry<poly_cw_c, ls>("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))", "LINESTRING(6 2, 12 1)", true);
+
+ // MULTI
+ test_geometry<ls, mpoly_ccw_c>("LINESTRING(1 1,2 2)", "MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))", true);
+ test_geometry<mls, mpoly_ccw_c>("MULTILINESTRING((1 1,2 2))", "MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))", true);
+}
+
+template <typename P>
+void test_intersects_linestring_ring()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+ typedef bg::model::ring<P, false> ring_ccw_c;
+
+ test_geometry<ls, ring_ccw_c>("LINESTRING(1 1,2 2)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", true);
+ test_geometry<ls, ring_ccw_c>("LINESTRING(1 0,2 2)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", true);
+ test_geometry<ls, ring_ccw_c>("LINESTRING(11 0,12 12)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", false);
+
+ // MULTI
+ test_geometry<mls, ring_ccw_c>("MULTILINESTRING((1 1,2 2))", "POLYGON((0 0,10 0,10 10,0 10,0 0))", true);
+}
+
+template <typename P>
+void test_intersects_ring_polygon()
+{
+ typedef bg::model::ring<P, false, false> ring_ccw_o;
+ typedef bg::model::polygon<P, false, false> poly_ccw_o;
+
+ test_geometry<ring_ccw_o, poly_ccw_o>("POLYGON((1 1, 3 3, 2 5))", "POLYGON((0 0, 9 0, 9 9, 0 9),(5 5,5 8,8 8,8 5))", true);
+ test_geometry<ring_ccw_o, poly_ccw_o>("POLYGON((6 6, 7 6, 7 7, 6 7))", "POLYGON((0 0, 9 0, 9 9, 0 9),(5 5,5 8,8 8,8 5))", false);
+ test_geometry<ring_ccw_o, poly_ccw_o>("POLYGON((7 7, 9 7, 9 9, 7 9))", "POLYGON((0 0, 9 0, 9 9, 0 9),(5 5,5 8,8 8,8 5))", true);
+
+ test_geometry<ring_ccw_o, poly_ccw_o>("POLYGON((6 6,7 6,7 7,6 7))", "POLYGON((0 0, 9 0, 9 9, 0 9),(5 5,5 8,8 8,8 5))", false);
+}
+
+template <typename P>
+void test_intersects_point_linestring()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+
+ test_geometry<P, ls>("POINT(0 0)", "LINESTRING(0 0,2 2,4 0)", true);
+ test_geometry<P, ls>("POINT(1 1)", "LINESTRING(0 0,2 2,4 0)", true);
+ test_geometry<P, ls>("POINT(1 0)", "LINESTRING(0 0,2 2,4 0)", false);
+
+ // MULTI
+ test_geometry<P, mls>("POINT(0 0)", "MULTILINESTRING((0 0,2 2,4 0))", true);
+}
+
+template <typename P>
+void test_intersects_point_segment()
+{
+ typedef bg::model::segment<P> seg;
+
+ test_geometry<P, seg>("POINT(0 0)", "LINESTRING(0 0,2 2)", true);
+ test_geometry<P, seg>("POINT(1 1)", "LINESTRING(0 0,2 2)", true);
+ test_geometry<P, seg>("POINT(1 0)", "LINESTRING(0 0,2 2)", false);
+}
template <typename P>
void test_all()
{
- // intersect <=> ! disjoint
+ typedef bg::model::polygon<P> polygon;
+ typedef bg::model::ring<P> ring;
+
+ // intersect <=> ! disjoint (in most cases)
// so most tests are done in disjoint test.
- // We only test compilation of one case.
+ // We only test compilation of a few cases.
test_geometry<P, bg::model::box<P> >("POINT(1 1)", "BOX(0 0,2 2)", true);
+ test_geometry<polygon, bg::model::box<P> >(
+ "POLYGON((1992 3240,1992 1440,3792 1800,3792 3240,1992 3240))",
+ "BOX(1941 2066, 2055 2166)", true);
+
+ test_geometry<ring, bg::model::box<P> >(
+ "POLYGON((1992 3240,1992 1440,3792 1800,3792 3240,1992 3240))",
+ "BOX(1941 2066, 2055 2166)", true);
+
+ test_geometry<polygon, bg::model::box<P> >(
+ "POLYGON((1941 2066,2055 2066,2055 2166,1941 2166))",
+ "BOX(1941 2066, 2055 2166)", true);
+
+ test_intersects_point_segment<P>();
+ test_intersects_point_linestring<P>();
+ test_intersects_polygon_polygon<P>();
+ test_intersects_linestring_polygon<P>();
+ test_intersects_linestring_ring<P>();
+ test_intersects_linestring_segment<P>();
+ test_intersects_linestring_linestring<P>();
+ test_intersects_ring_polygon<P>();
+
// self-intersecting is not tested in disjoint, so that is done here.
- typedef bg::model::polygon<P> polygon;
// Just a normal polygon
test_self_intersects<polygon>("POLYGON((0 0,0 4,1.5 2.5,2.5 1.5,4 0,0 0))", false);
@@ -111,17 +253,73 @@ void test_all()
"POLYGON((0 0,3 3,3 3,4 1,0 0))", false);
test_self_intersects<bg::model::ring<P, true, false> >(
"POLYGON((0 0,3 3,3 3,4 1))", false);
-}
+ test_geometry<P, bg::model::box<P> >(
+ "POINT(0 0)",
+ "BOX(0 0,4 4)",
+ true);
+ test_geometry<P, bg::model::ring<P> >(
+ "POINT(0 0)",
+ "POLYGON((0 0,3 3,3 3,4 1))",
+ true);
+ test_geometry<P, bg::model::polygon<P> >(
+ "POINT(0 0)",
+ "POLYGON((0 0,3 3,3 3,4 1))",
+ true);
+
+ test_geometry<bg::model::ring<P>, P>(
+ "POLYGON((0 0,3 3,3 3,4 1))",
+ "POINT(0 0)",
+ true);
+ test_geometry<bg::model::polygon<P>, P>(
+ "POLYGON((0 0,3 3,3 3,4 1))",
+ "POINT(0 0)",
+ true);
+}
+// Those tests won't pass for rational<> because numeric_limits<> isn't specialized for this type
+template <typename P>
+void test_additional()
+{
+ test_geometry<bg::model::segment<P>, bg::model::box<P> >(
+ "SEGMENT(0 0,3 3)",
+ "BOX(1 2,3 5)",
+ true);
+ test_geometry<bg::model::segment<P>, bg::model::box<P> >(
+ "SEGMENT(1 1,2 3)",
+ "BOX(0 0,4 4)",
+ true);
+ test_geometry<bg::model::segment<P>, bg::model::box<P> >(
+ "SEGMENT(1 1,1 1)",
+ "BOX(1 0,3 5)",
+ true);
+ test_geometry<bg::model::segment<P>, bg::model::box<P> >(
+ "SEGMENT(0 1,0 1)",
+ "BOX(1 0,3 5)",
+ false);
+ test_geometry<bg::model::segment<P>, bg::model::box<P> >(
+ "SEGMENT(2 1,2 1)",
+ "BOX(1 0,3 5)",
+ true);
+ test_geometry<bg::model::linestring<P>, bg::model::box<P> >(
+ "LINESTRING(0 0,1 0,10 10)",
+ "BOX(1 2,3 5)",
+ true);
+ test_geometry<bg::model::linestring<P>, bg::model::box<P> >(
+ "LINESTRING(1 2)",
+ "BOX(0 0,3 5)",
+ true);
+}
int test_main( int , char* [] )
{
test_all<bg::model::d2::point_xy<double> >();
+ test_additional<bg::model::d2::point_xy<double> >();
+#if ! defined(BOOST_GEOMETRY_RESCALE_TO_ROBUST)
test_all<bg::model::d2::point_xy<boost::rational<int> > >();
-
+#endif
#if defined(HAVE_TTMATH)
test_all<bg::model::d2::point_xy<ttmath_big> >();
diff --git a/libs/geometry/test/algorithms/intersects.vcproj b/libs/geometry/test/algorithms/intersects.vcproj
deleted file mode 100644
index f3f5f64db4..0000000000
--- a/libs/geometry/test/algorithms/intersects.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="intersects"
- ProjectGUID="{B1A97F62-85CD-4239-BB56-619988B08260}"
- RootNamespace="intersects"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\intersects"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\intersects"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\intersects.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/is_simple.cpp b/libs/geometry/test/algorithms/is_simple.cpp
new file mode 100644
index 0000000000..63fac7bfa7
--- /dev/null
+++ b/libs/geometry/test/algorithms/is_simple.cpp
@@ -0,0 +1,311 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_is_simple
+#endif
+
+#include <iostream>
+#include <string>
+
+#include <boost/assert.hpp>
+#include <boost/variant/variant.hpp>
+
+#include <boost/test/included/unit_test.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/segment.hpp>
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+#include <boost/geometry/geometries/box.hpp>
+#include <boost/geometry/geometries/multi_point.hpp>
+#include <boost/geometry/geometries/multi_linestring.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
+
+#include <boost/geometry/strategies/strategies.hpp>
+
+#include <boost/geometry/io/wkt/wkt.hpp>
+
+#include <boost/geometry/algorithms/is_valid.hpp>
+#include <boost/geometry/algorithms/is_simple.hpp>
+
+#include "from_wkt.hpp"
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+#include "pretty_print_geometry.hpp"
+#endif
+
+
+namespace bg = ::boost::geometry;
+
+typedef bg::model::point<double, 2, bg::cs::cartesian> point_type;
+typedef bg::model::segment<point_type> segment_type;
+typedef bg::model::linestring<point_type> linestring_type;
+typedef bg::model::multi_linestring<linestring_type> multi_linestring_type;
+// ccw open and closed polygons
+typedef bg::model::polygon<point_type,false,false> open_ccw_polygon_type;
+typedef bg::model::polygon<point_type,false,true> closed_ccw_polygon_type;
+// multi-geometries
+typedef bg::model::multi_point<point_type> multi_point_type;
+typedef bg::model::multi_polygon<open_ccw_polygon_type> multi_polygon_type;
+// box
+typedef bg::model::box<point_type> box_type;
+
+
+//----------------------------------------------------------------------------
+
+
+template <typename Geometry>
+void test_simple(Geometry const& geometry, bool expected_result)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "=======" << std::endl;
+#endif
+
+ bool simple = bg::is_simple(geometry);
+ BOOST_ASSERT( bg::is_valid(geometry) );
+ BOOST_CHECK_MESSAGE( simple == expected_result,
+ "Expected: " << expected_result
+ << " detected: " << simple
+ << " wkt: " << bg::wkt(geometry) );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Geometry: ";
+ pretty_print_geometry<Geometry>::apply(std::cout, geometry);
+ std::cout << std::endl;
+ std::cout << std::boolalpha;
+ std::cout << "is simple: " << simple << std::endl;
+ std::cout << "expected result: " << expected_result << std::endl;
+ std::cout << "=======" << std::endl;
+ std::cout << std::endl << std::endl;
+ std::cout << std::noboolalpha;
+#endif
+}
+
+
+//----------------------------------------------------------------------------
+
+
+BOOST_AUTO_TEST_CASE( test_is_simple_point )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_simple: POINT " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef point_type G;
+
+ test_simple(from_wkt<G>("POINT(0 0)"), true);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_simple_multipoint )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_simple: MULTIPOINT " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef multi_point_type G;
+
+ test_simple(from_wkt<G>("MULTIPOINT(0 0)"), true);
+ test_simple(from_wkt<G>("MULTIPOINT(0 0,1 0,1 1,0 1)"), true);
+ test_simple(from_wkt<G>("MULTIPOINT(0 0,1 0,1 1,1 0,0 1)"), false);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_simple_segment )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_simple: SEGMENT " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef segment_type G;
+
+ test_simple(from_wkt<G>("SEGMENT(0 0,1 0)"), true);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_simple_linestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_simple: LINESTRING " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef linestring_type G;
+
+ // valid linestrings with multiple points
+ test_simple(from_wkt<G>("LINESTRING(0 0,0 0,1 0)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,0 0,1 0,0 0)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,0 0,1 0,1 0,1 1,0 0)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,1 0,2 0,1 1,1 0,1 -1)"), false);
+
+ // simple open linestrings
+ test_simple(from_wkt<G>("LINESTRING(0 0,1 2)"), true);
+ test_simple(from_wkt<G>("LINESTRING(0 0,1 2,2 3)"), true);
+
+ // simple closed linestrings
+ test_simple(from_wkt<G>("LINESTRING(0 0,1 0,1 1,0 0)"), true);
+ test_simple(from_wkt<G>("LINESTRING(0 0,1 0,1 1,0 1,0 0)"), true);
+
+ // non-simple linestrings
+ test_simple(from_wkt<G>("LINESTRING(0 0,1 0,0 0)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,1 0,2 10,0.5 -1)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,1 0,2 1,1 0)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,1 0,2 1,0.5 0)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,2 0,1 0)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,3 0,5 0,1 0)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,3 0,5 0,4 0)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,3 0,5 0,4 0,2 0)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,3 0,2 0,5 0)"), false);
+ test_simple(from_wkt<G>("LINESTRING(0 0,2 0,2 2,1 0,0 0)"), false);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_simple_multilinestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_simple: MULTILINESTRING " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef multi_linestring_type G;
+
+ // multilinestrings with linestrings with spikes
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 0,0 0),(5 0,6 0,7 0))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 0,0 0),(5 0,1 0,4 1))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 0,0 0),(5 0,1 0,4 0))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 0,0 0),(1 0,2 0))"),
+ false);
+
+ // simple multilinestrings
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 1),(1 1,1 0))"), true);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 1),(1 1,1 0),(0 1,1 1))"),
+ true);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2),(0 0,1 0,2 0,2 2))"), true);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2),(2 2,2 0,1 0,0 0))"), true);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 0),(0 0,-1 0),(1 0,2 0))"),
+ true);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 0),(-1 0,0 0),(2 0,1 0))"),
+ true);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 0),(0 0,0 1),(0 0,-1 0),(0 0,0 -1))"),
+ true);
+
+ // non-simple multilinestrings
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2),(0 0,2 2))"), false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2),(2 2,0 0))"), false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2),(0 0,1 0,1 1,2 0,2 2))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 1,2 2),(0 0,1 0,1 1,2 0,2 2))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 1,2 2),(2 2,0 0))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2,4 4),(0 0,1 1))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2,4 4),(0 0,3 3))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2,4 4),(1 1,3 3))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2,4 4),(1 1,2 2))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2,4 4),(2 2,3 3))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2,4 4),(2 2,4 4))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 2,4 4),(4 4,2 2))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 1),(0 1,1 0))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,2 0),(1 0,0 1))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 1),(1 1,1 0),(1 1,0 1,0.5,0.5))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 0,1 1,0 1,0 0),(1 0,1 -1))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 0,1 1,0 1,0 0),(-1 0,0 0))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 0,1 1,0 1,0 0),(0 0,-1 0,-1 -1,0 -1,0 0))"),
+ false);
+ test_simple(from_wkt<G>("MULTILINESTRING((0 0,1 0,1 1,0 1,0 0),(-1 -1,-1 0,0 0,0 -1,-1 -1))"),
+ false);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_simple_areal )
+{
+ typedef box_type b;
+ typedef open_ccw_polygon_type o_ccw_p;
+ typedef multi_polygon_type mpl;
+
+ // check that is_simple compiles for boxes
+ test_simple(from_wkt<b>("BOX(0 0,1 1)"), true);
+
+ // simple polygons and multi-polygons
+ test_simple(from_wkt<o_ccw_p>("POLYGON((0 0,1 0,1 1))"), true);
+ test_simple(from_wkt<o_ccw_p>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 9,9 9,9 1))"),
+ true);
+ test_simple(from_wkt<mpl>("MULTIPOLYGON(((0 0,1 0,1 1)),((10 0,20 0,20 10,10 10)))"),
+ true);
+
+ // non-simple polygons & multi-polygons (have duplicate points)
+ test_simple(from_wkt<o_ccw_p>("POLYGON((0 0,1 0,1 0,1 1))"), false);
+ test_simple(from_wkt<o_ccw_p>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 9,9 9,9 9,9 1))"),
+ false);
+ test_simple(from_wkt<mpl>("MULTIPOLYGON(((0 0,1 0,1 1,1 1)),((10 0,20 0,20 0,20 10,10 10)))"),
+ false);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_simple_variant )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_simple: variant support" << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef bg::model::polygon<point_type> polygon_type; // cw, closed
+ typedef boost::variant
+ <
+ linestring_type, multi_linestring_type, polygon_type
+ > variant_geometry;
+
+ variant_geometry vg;
+
+ linestring_type simple_linestring =
+ from_wkt<linestring_type>("LINESTRING(0 0,1 0)");
+ multi_linestring_type non_simple_multi_linestring = from_wkt
+ <
+ multi_linestring_type
+ >("MULTILINESTRING((0 0,1 0,1 1,0 0),(10 0,1 1))");
+ polygon_type simple_polygon =
+ from_wkt<polygon_type>("POLYGON((0 0,1 1,1 0,0 0))");
+ polygon_type non_simple_polygon =
+ from_wkt<polygon_type>("POLYGON((0 0,1 1,1 0,1 0,0 0))");
+
+ vg = simple_linestring;
+ test_simple(vg, true);
+ vg = non_simple_multi_linestring;
+ test_simple(vg, false);
+ vg = simple_polygon;
+ test_simple(vg, true);
+ vg = non_simple_polygon;
+ test_simple(vg, false);
+}
diff --git a/libs/geometry/test/algorithms/is_valid.cpp b/libs/geometry/test/algorithms/is_valid.cpp
new file mode 100644
index 0000000000..46c2c6772f
--- /dev/null
+++ b/libs/geometry/test/algorithms/is_valid.cpp
@@ -0,0 +1,767 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_is_valid
+#endif
+
+#include <iostream>
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "from_wkt.hpp"
+#include "test_is_valid.hpp"
+
+
+BOOST_AUTO_TEST_CASE( test_is_valid_point )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: POINT " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef point_type G;
+ typedef default_validity_tester tester;
+ typedef test_valid<tester, G> test;
+
+ test::apply(from_wkt<G>("POINT(0 0)"), true);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_valid_multipoint )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: MULTIPOINT " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef multi_point_type G;
+ typedef default_validity_tester tester;
+ typedef test_valid<tester, G> test;
+
+ test::apply(from_wkt<G>("MULTIPOINT()"), false);
+ test::apply(from_wkt<G>("MULTIPOINT(0 0,0 0)"), true);
+ test::apply(from_wkt<G>("MULTIPOINT(0 0,1 0,1 1,0 1)"), true);
+ test::apply(from_wkt<G>("MULTIPOINT(0 0,1 0,1 1,1 0,0 1)"), true);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_valid_segment )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: SEGMENT " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef segment_type G;
+ typedef default_validity_tester tester;
+ typedef test_valid<tester, G> test;
+
+ test::apply(from_wkt<G>("SEGMENT(0 0,0 0)"), false);
+ test::apply(from_wkt<G>("SEGMENT(0 0,1 0)"), true);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_valid_box )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: BOX " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef box_type G;
+ typedef default_validity_tester tester;
+ typedef test_valid<tester, G> test;
+
+ // boxes where the max corner and below and/or to the left of min corner
+ test::apply(from_wkt<G>("BOX(0 0,-1 0)"), false);
+ test::apply(from_wkt<G>("BOX(0 0,0 -1)"), false);
+ test::apply(from_wkt<G>("BOX(0 0,-1 -1)"), false);
+
+ // boxes of zero area; they are not 2-dimensional, so invalid
+ test::apply(from_wkt<G>("BOX(0, 0, 0, 0)"), false);
+ test::apply(from_wkt<G>("BOX(0 0,1 0)"), false);
+ test::apply(from_wkt<G>("BOX(0 0,0 1)"), false);
+
+ test::apply(from_wkt<G>("BOX(0 0,1 1)"), true);
+}
+
+template <typename G, bool AllowSpikes>
+void test_linestrings()
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "SPIKES ALLOWED? "
+ << std::boolalpha
+ << AllowSpikes
+ << std::noboolalpha
+ << std::endl;
+#endif
+
+ typedef validity_tester_linear<AllowSpikes> tester;
+ typedef test_valid<tester, G> test;
+
+ // empty linestring
+ test::apply(from_wkt<G>("LINESTRING()"), false);
+
+ // 1-point linestrings
+ test::apply(from_wkt<G>("LINESTRING(0 0)"), false);
+ test::apply(from_wkt<G>("LINESTRING(0 0,0 0)"), false);
+ test::apply(from_wkt<G>("LINESTRING(0 0,0 0,0 0)"), false);
+
+ // 2-point linestrings
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 2)"), true);
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 2,1 2)"), true);
+ test::apply(from_wkt<G>("LINESTRING(0 0,0 0,1 2,1 2)"), true);
+ test::apply(from_wkt<G>("LINESTRING(0 0,0 0,0 0,1 2,1 2)"), true);
+
+ // 3-point linestrings
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 0,2 10)"), true);
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 0,2 10,0 0)"), true);
+ test::apply(from_wkt<G>("LINESTRING(0 0,10 0,10 10,5 0)"), true);
+
+ // linestrings with spikes
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 2,0 0)"), AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 2,1 2,0 0)"), AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,0 0,1 2,1 2,0 0)"),
+ AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,0 0,0 0,1 2,1 2,0 0,0 0)"),
+ AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,10 0,5 0)"), AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,10 0,10 10,5 0,0 0)"),
+ AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,10 0,10 10,5 0,4 0,6 0)"),
+ AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 0,1 1,5 5,4 4)"),
+ AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 0,1 1,5 5,4 4,6 6)"),
+ AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 0,1 1,5 5,4 4,4 0)"),
+ AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,0 0,1 0,1 0,1 0,0 0,0 0,2 0)"),
+ AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 0,0 0,2 0,0 0,3 0,0 0,4 0)"),
+ AllowSpikes);
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 0,0 0,2 0,0 0,3 0,0 0,4 0,0 0)"),
+ AllowSpikes);
+
+ // other examples
+ test::apply(from_wkt<G>("LINESTRING(0 0,10 0,10 10,5 0,4 0)"), true);
+ test::apply(from_wkt<G>("LINESTRING(0 0,10 0,10 10,5 0,4 0,3 0)"),
+ true);
+ test::apply(from_wkt<G>("LINESTRING(0 0,10 0,10 10,5 0,4 0,-1 0)"),
+ true);
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 0,1 1,-1 1,-1 0,0 0)"),
+ true);
+
+ test::apply(from_wkt<G>("LINESTRING(0 0,1 0,1 1,-1 1,-1 0,0.5 0)"),
+ true);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_valid_linestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: LINESTRING " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ bool const allow_spikes = true;
+ bool const do_not_allow_spikes = !allow_spikes;
+
+ test_linestrings<linestring_type, allow_spikes>();
+ test_linestrings<linestring_type, do_not_allow_spikes>();
+}
+
+template <typename G, bool AllowSpikes>
+void test_multilinestrings()
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "SPIKES ALLOWED? "
+ << std::boolalpha
+ << AllowSpikes
+ << std::noboolalpha
+ << std::endl;
+#endif
+
+ typedef validity_tester_linear<AllowSpikes> tester;
+ typedef test_valid<tester, G> test;
+
+ // empty multilinestring
+ test::apply(from_wkt<G>("MULTILINESTRING()"), false);
+
+ // multilinestring with empty linestring(s)
+ test::apply(from_wkt<G>("MULTILINESTRING(())"), false);
+ test::apply(from_wkt<G>("MULTILINESTRING((),(),())"), false);
+ test::apply(from_wkt<G>("MULTILINESTRING((),(0 1,1 0))"), false);
+
+ // multilinestring with invalid linestrings
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0),(0 1,1 0))"), false);
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0,0 0),(0 1,1 0))"), false);
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0),(1 0))"), false);
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0,0 0),(1 0,1 0))"), false);
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0),(0 0))"), false);
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0,1 0,0 0),(5 0))"), false);
+
+ // multilinstring that has linestrings with spikes
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0,1 0,0 0),(5 0,1 0,4 1))"),
+ AllowSpikes);
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0,1 0,0 0),(1 0,2 0))"),
+ AllowSpikes);
+
+ // valid multilinestrings
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0,1 0,2 0),(5 0,1 0,4 1))"),
+ true);
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0,1 0,2 0),(1 0,2 0))"),
+ true);
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0,1 1),(0 1,1 0))"), true);
+ test::apply(from_wkt<G>("MULTILINESTRING((0 0,1 1,2 2),(0 1,1 0,2 2))"),
+ true);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_valid_multilinestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: MULTILINESTRING " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ bool const allow_spikes = true;
+ bool const do_not_allow_spikes = !allow_spikes;
+
+ test_multilinestrings<multi_linestring_type, allow_spikes>();
+ test_multilinestrings<multi_linestring_type, do_not_allow_spikes>();
+}
+
+
+template <typename Point, bool AllowDuplicates>
+void test_open_rings()
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: RING (open) " << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << "DUPLICATES ALLOWED? "
+ << std::boolalpha
+ << AllowDuplicates
+ << std::noboolalpha
+ << std::endl;
+#endif
+
+ typedef bg::model::ring<Point, false, false> OG; // ccw, open ring
+ typedef bg::model::ring<Point, false, true> CG; // ccw, closed ring
+ typedef bg::model::ring<Point, true, false> CW_OG; // cw, open ring
+ typedef bg::model::ring<Point, true, true> CW_CG; // cw, closed ring
+
+ typedef validity_tester_areal<AllowDuplicates> tester;
+ typedef test_valid<tester, OG, CG, CW_OG, CW_CG> test;
+
+ // not enough points
+ test::apply(from_wkt<OG>("POLYGON(())"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0))"), false);
+
+ // duplicate points
+ test::apply(from_wkt<OG>("POLYGON((0 0,0 0,0 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,1 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,0 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,1 1,0 0))"),
+ AllowDuplicates);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,1 0,1 1))"),
+ AllowDuplicates);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,1 0,1 1,0 0))"),
+ AllowDuplicates);
+
+ // with spikes
+ test::apply(from_wkt<OG>("POLYGON((0 0,2 0,2 2,0 2,1 2))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,2 0,1 0,2 2))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,2 0,1 0,4 0,4 4))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,2 0,2 2,1 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,2 0,1 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,4 4,5 5,0 5))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,4 4,3 3,5 5,0 5))"), false);
+
+ // with spikes and duplicate points
+ test::apply(from_wkt<OG>("POLYGON((0 0,0 0,2 0,2 0,1 0,1 0))"), false);
+
+ // with self-crossings
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,3 -1,0 5))"), false);
+
+ // with self-crossings and duplicate points
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,5 5,3 -1,0 5,0 5))"),
+ false);
+
+ // with self-intersections
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,3 5,3 0,2 0,2 5,0 5))"),
+ false);
+
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,3 5,3 0,2 5,0 5))"),
+ false);
+
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 1,1 1,1 2,2 2,3 1,4 2,5 2,5 5,0 5))"),
+ false);
+
+ // with self-intersections and duplicate points
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,3 5,3 5,3 0,3 0,2 0,2 0,2 5,2 5,0 5))"),
+ false);
+
+ // next two suggested by Adam Wulkiewicz
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,0 5,4 4,2 2,0 5))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,1 4,4 4,4 1,0 5))"),
+ false);
+
+ // and a few more
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,4 4,1 4,1 1,4 1,4 4,0 5))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,4 4,4 1,1 1,1 4,4 4,0 5))"),
+ false);
+
+ // valid rings
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,1 1))"), true);
+ test::apply(from_wkt<OG>("POLYGON((1 0,1 1,0 0))"), true);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,1 1,0 1))"), true);
+ test::apply(from_wkt<OG>("POLYGON((1 0,1 1,0 1,0 0))"), true);
+}
+
+
+template <typename Point, bool AllowDuplicates>
+void test_closed_rings()
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: RING (closed) " << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << "DUPLICATES ALLOWED? "
+ << std::boolalpha
+ << AllowDuplicates
+ << std::noboolalpha
+ << std::endl;
+#endif
+
+ typedef bg::model::ring<Point, false, true> CG; // ccw, closed ring
+ typedef bg::model::ring<Point, true, true> CW_CG; // cw, closed ring
+
+ typedef validity_tester_areal<AllowDuplicates> tester;
+ typedef test_valid<tester, CG, CG, CW_CG> test;
+
+ // not enough points
+ test::apply(from_wkt<CG>("POLYGON(())"), false);
+ test::apply(from_wkt<CG>("POLYGON((0 0))"), false);
+ test::apply(from_wkt<CG>("POLYGON((0 0,0 0))"), false);
+ test::apply(from_wkt<CG>("POLYGON((0 0,1 0))"), false);
+ test::apply(from_wkt<CG>("POLYGON((0 0,1 0,1 0))"), false);
+ test::apply(from_wkt<CG>("POLYGON((0 0,1 0,2 0))"), false);
+ test::apply(from_wkt<CG>("POLYGON((0 0,1 0,1 0,2 0))"), false);
+ test::apply(from_wkt<CG>("POLYGON((0 0,1 0,2 0,2 0))"), false);
+
+ // boundary not closed
+ test::apply(from_wkt<CG>("POLYGON((0 0,1 0,1 1,1 2))"), false);
+ test::apply(from_wkt<CG>("POLYGON((0 0,1 0,1 0,1 1,1 1,1 2))"),
+ false);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_valid_ring )
+{
+ bool const allow_duplicates = true;
+ bool const do_not_allow_duplicates = !allow_duplicates;
+
+ test_open_rings<point_type, allow_duplicates>();
+ test_open_rings<point_type, do_not_allow_duplicates>();
+
+ test_closed_rings<point_type, allow_duplicates>();
+ test_closed_rings<point_type, do_not_allow_duplicates>();
+}
+
+template <typename Point, bool AllowDuplicates>
+void test_open_polygons()
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: POLYGON (open) " << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << "DUPLICATES ALLOWED? "
+ << std::boolalpha
+ << AllowDuplicates
+ << std::noboolalpha
+ << std::endl;
+#endif
+
+ typedef bg::model::polygon<Point, false, false> OG; // ccw, open
+ typedef bg::model::polygon<Point, false, true> CG; // ccw, closed
+ typedef bg::model::polygon<Point, true, false> CW_OG; // cw, open
+ typedef bg::model::polygon<Point, true, true> CW_CG; // cw, closed
+
+ typedef validity_tester_areal<AllowDuplicates> tester;
+ typedef test_valid<tester, OG, CG, CW_OG, CW_CG> test;
+
+ // not enough points in exterior ring
+ test::apply(from_wkt<OG>("POLYGON(())"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0))"), false);
+
+ // not enough points in interior ring
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),())"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,2 2))"),
+ false);
+
+ // duplicate points in exterior ring
+ test::apply(from_wkt<OG>("POLYGON((0 0,0 0,0 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,1 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,0 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,1 1,0 0))"), AllowDuplicates);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,1 0,1 1))"), AllowDuplicates);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,1 0,1 1,0 0))"),
+ AllowDuplicates);
+
+ // duplicate points in interior ring
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 1,1 1))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,2 1,2 1))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,2 1,1 1))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,2 2,2 1,1 1))"),
+ AllowDuplicates);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,2 2,2 2,2 1))"),
+ AllowDuplicates);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,2 2,2 1,2 1,1 1))"),
+ AllowDuplicates);
+
+ // with spikes in exterior ring
+ test::apply(from_wkt<OG>("POLYGON((0 0,2 0,2 2,0 2,1 2))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,2 0,1 0,2 2))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,2 0,1 0,4 0,4 4))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,2 0,2 2,1 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,2 0,1 0))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,4 4,5 5,0 5))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,4 4,3 3,5 5,0 5))"), false);
+
+ // with spikes in interior ring
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,3 1,3 3,1 3,2 3))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,3 1,2 1,3 3))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,2 1,3 1,2 1,4 1,4 4))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,3 1,3 3,2 1))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,3 1,2 1))"),
+ false);
+
+ // with self-crossings in exterior ring
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,3 -1,0 5))"),
+ false);
+
+ // example from Norvald Ryeng
+ test::apply(from_wkt<OG>("POLYGON((100 1300,140 1300,140 170,100 1700))"),
+ false);
+ // and with point order reversed
+ test::apply(from_wkt<OG>("POLYGON((100 1300,100 1700,140 170,140 1300))"),
+ false);
+
+ // with self-crossings in interior ring
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(3 3,3 7,4 6,2 6))"),
+ false);
+
+ // with self-crossings between rings
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,0 5),(1 1,2 1,1 -1))"),
+ false);
+
+ // with self-intersections in exterior ring
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,3 5,3 0,2 0,2 5,0 5))"),
+ false);
+
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,3 5,3 0,2 5,0 5))"),
+ false);
+
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 1,1 1,1 2,2 2,3 1,4 2,5 2,5 5,0 5))"),
+ false);
+
+ // next two suggested by Adam Wulkiewicz
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,0 5,4 4,2 2,0 5))"), false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,1 4,4 4,4 1,0 5))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,4 4,1 4,1 1,4 1,4 4,0 5))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,5 0,5 5,4 4,4 1,1 1,1 4,4 4,0 5))"),
+ false);
+
+ // with self-intersections in interior ring
+ test::apply(from_wkt<OG>("POLYGON((-10 -10,10 -10,10 10,-10 10),(0 0,5 0,5 5,3 5,3 0,2 0,2 5,0 5))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((-10 -10,10 -10,10 10,-10 10),(0 0,5 0,5 5,3 5,3 0,2 5,0 5))"),
+ false);
+
+ test::apply(from_wkt<OG>("POLYGON((-10 -10,10 -10,10 10,-10 10),(0 0,5 0,5 1,1 1,1 2,2 2,3 1,4 2,5 2,5 5,0 5))"),
+ false);
+
+ // with self-intersections between rings
+ // hole has common segment with exterior ring
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 10,2 10,2 1))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,0 0,10 0,10 10,0 10,0 10),(1 1,1 10,1 10,2 10,2 10,2 1))"),
+ false);
+ // hole touches exterior ring at one point
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 10,2 1))"),
+ true);
+ // "hole" is outside the exterior ring, but touches it
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(5 10,4 11,6 11))"),
+ false);
+ // hole touches exterior ring at vertex
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(0 0,1 4,4 1))"),
+ true);
+ // "hole" is completely outside the exterior ring
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(20 20,20 21,21 21,21 20))"),
+ false);
+ // two "holes" completely outside the exterior ring, that touch
+ // each other
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(20 0,25 10,21 0),(30 0,25 10,31 0))"),
+ false);
+
+ // example from Norvald Ryeng
+ test::apply(from_wkt<OG>("POLYGON((58 31,56.57 30,62 33),(35 9,28 14,31 16),(23 11,29 5,26 4))"),
+ false);
+ // and with points reversed
+ test::apply(from_wkt<OG>("POLYGON((58 31,62 33,56.57 30),(35 9,31 16,28 14),(23 11,26 4,29 5))"),
+ false);
+
+ // "hole" is completely inside another "hole"
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 9,9 9,9 1),(2 2,2 8,8 8,8 2))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 9,9 9,9 1),(2 2,8 2,8 8,2 8))"),
+ false);
+
+ // "hole" is inside another "hole" (touching)
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 9,9 9,9 1),(2 2,2 8,8 8,9 6,8 2))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 9,9 9,9 1),(2 2,8 2,9 6,8 8,2 8))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,9 1,9 9,1 9),(2 2,2 8,8 8,9 6,8 2))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,9 1,9 9,1 9),(2 2,8 2,9 6,8 8,2 8))"),
+ false);
+ // hole touches exterior ring at two points
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(5 0,0 5,5 5))"),
+ false);
+
+ // cases with more holes
+ // two holes, touching the exterior at the same point
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(0 0,1 9,2 9),(0 0,9 2,9 1))"),
+ true);
+ test::apply(from_wkt<OG>("POLYGON((0 0,0 0,10 0,10 10,0 10,0 0),(0 0,0 0,1 9,2 9),(0 0,0 0,9 2,9 1))"),
+ AllowDuplicates);
+ test::apply(from_wkt<OG>("POLYGON((0 10,0 0,0 0,0 0,10 0,10 10),(2 9,0 0,0 0,1 9),(9 1,0 0,0 0,9 2))"),
+ AllowDuplicates);
+ // two holes, one inside the other
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(0 0,1 9,9 1),(0 0,4 5,5 4))"),
+ false);
+ // 1st hole touches has common segment with 2nd hole
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 5,5 5,5 1),(5 4,5 8,8 8,8 4))"),
+ false);
+ // 1st hole touches 2nd hole at two points
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 9,9 9,9 8,2 8,2 1),(2 5,5 8,5 5))"),
+ false);
+ // polygon with many holes, where the last two touch at two points
+ test::apply(from_wkt<OG>("POLYGON((0 0,20 0,20 20,0 20),(1 18,1 19,2 19,2 18),(3 18,3 19,4 19,4 18),(5 18,5 19,6 19,6 18),(7 18,7 19,8 19,8 18),(9 18,9 19,10 19,10 18),(11 18,11 19,12 19,12 18),(13 18,13 19,14 19,14 18),(15 18,15 19,16 19,16 18),(17 18,17 19,18 19,18 18),(1 1,1 9,9 9,9 8,2 8,2 1),(2 5,5 8,5 5))"),
+ false);
+ // two holes completely inside exterior ring but touching each
+ // other at a point
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(1 1,1 9,2 9),(1 1,9 2,9 1))"),
+ true);
+ // four holes, each two touching at different points
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(0 10,2 1,1 1),(0 10,4 1,3 1),(10 10,9 1,8 1),(10 10,7 1,6 1))"),
+ true);
+ // five holes, with two pairs touching each at some point, and
+ // fifth hole creating a disconnected component for the interior
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(0 10,2 1,1 1),(0 10,4 1,3 1),(10 10,9 1,8 1),(10 10,7 1,6 1),(4 1,4 4,6 4,6 1))"),
+ false);
+ // five holes, with two pairs touching each at some point, and
+ // fifth hole creating three disconnected components for the interior
+ test::apply(from_wkt<OG>("POLYGON((0 0,10 0,10 10,0 10),(0 10,2 1,1 1),(0 10,4 1,3 1),(10 10,9 1,8 1),(10 10,7 1,6 1),(4 1,4 4,6 4,6 1,5 0))"),
+ false);
+
+ // both examples: a polygon with one hole, where the hole contains
+ // the exterior ring
+ test::apply(from_wkt<OG>("POLYGON((0 0,1 0,1 1,0 1),(-10 -10,-10 10,10 10,10 -10))"),
+ false);
+ test::apply(from_wkt<OG>("POLYGON((-10 -10,1 0,1 1,0 1),(-10 -10,-10 10,10 10,10 -10))"),
+ false);
+}
+
+template <typename Point>
+inline void test_doc_example_polygon()
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: doc example polygon " << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef bg::model::polygon<Point> CCW_CG;
+
+ CCW_CG poly;
+
+ typedef validity_tester_areal<true> tester;
+ typedef test_valid<tester, CCW_CG> test;
+
+ test::apply(from_wkt<CCW_CG>("POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 2,0 0),(0 0,2 9,1 9,0 0),(2 9,9 2,9 9,2 9))"),
+ false);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_valid_polygon )
+{
+ bool const allow_duplicates = true;
+ bool const do_not_allow_duplicates = !allow_duplicates;
+
+ test_open_polygons<point_type, allow_duplicates>();
+ test_open_polygons<point_type, do_not_allow_duplicates>();
+ test_doc_example_polygon<point_type>();
+}
+
+template <typename Point, bool AllowDuplicates>
+void test_open_multipolygons()
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: MULTIPOLYGON (open) " << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << "DUPLICATES ALLOWED? "
+ << std::boolalpha
+ << AllowDuplicates
+ << std::noboolalpha
+ << std::endl;
+#endif
+
+ // cw, ccw, open and closed polygons
+ typedef bg::model::polygon<point_type,false,false> ccw_open_polygon_type;
+ typedef bg::model::polygon<point_type,false,true> ccw_closed_polygon_type;
+ typedef bg::model::polygon<point_type,true,false> cw_open_polygon_type;
+ typedef bg::model::polygon<point_type,true,true> cw_closed_polygon_type;
+
+ typedef bg::model::multi_polygon<ccw_open_polygon_type> OG;
+ typedef bg::model::multi_polygon<ccw_closed_polygon_type> CG;
+ typedef bg::model::multi_polygon<cw_open_polygon_type> CW_OG;
+ typedef bg::model::multi_polygon<cw_closed_polygon_type> CW_CG;
+
+ typedef validity_tester_areal<AllowDuplicates> tester;
+ typedef test_valid<tester, OG, CG, CW_OG, CW_CG> test;
+
+ // not enough points
+ test::apply(from_wkt<OG>("MULTIPOLYGON((()))"), false);
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0)),(()))"), false);
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,1 0)))"), false);
+
+ // two disjoint polygons
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,1 0,1 1,0 1)),((2 2,3 2,3 3,2 3)))"),
+ true);
+
+ // two disjoint polygons with multiple points
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,1 0,1 0,1 1,0 1)),((2 2,3 2,3 3,3 3,2 3)))"),
+ AllowDuplicates);
+
+ // two polygons touch at a point
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,1 0,1 1,0 1)),((1 1,2 1,2 2,1 2)))"),
+ true);
+
+ // two polygons share a segment at a point
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,1.5 0,1.5 1,0 1)),((1 1,2 1,2 2,1 2)))"),
+ false);
+
+ // one polygon inside another and boundaries touching
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,10 0,10 10,0 10)),((0 0,9 1,9 2)))"),
+ false);
+
+ // one polygon inside another and boundaries not touching
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,10 0,10 10,0 10)),((1 1,9 1,9 2)))"),
+ false);
+
+ // free space is disconnected
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,1 0,1 1,0 1)),((1 1,2 1,2 2,1 2)),((0 1,0 2,-1 2,-1 -1)),((1 2,1 3,0 3,0 2)))"),
+ true);
+
+ // multi-polygon with a polygon inside the hole of another polygon
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,100 0,100 100,0 100),(1 1,1 99,99 99,99 1)),((2 2,98 2,98 98,2 98)))"),
+ true);
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,100 0,100 100,0 100),(1 1,1 99,99 99,99 1)),((1 1,98 2,98 98,2 98)))"),
+ true);
+
+ // test case suggested by Barend Gehrels: take two valid polygons P1 and
+ // P2 with holes H1 and H2, respectively, and consider P2 to be
+ // fully inside H1; now invalidate the multi-polygon by
+ // considering H2 as a hole of P1 and H1 as a hole of P2; this
+ // should be invalid
+ //
+ // first the valid case:
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,100 0,100 100,0 100),(1 1,1 99,99 99,99 1)),((2 2,98 2,98 98,2 98),(3 3,3 97,97 97,97 3)))"),
+ true);
+ // and the invalid case:
+ test::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,100 0,100 100,0 100),(3 3,3 97,97 97,97 3)),((2 2,98 2,98 98,2 98),(1 1,1 99,99 99,99 1)))"),
+ false);
+}
+
+BOOST_AUTO_TEST_CASE( test_is_valid_multipolygon )
+{
+ bool const allow_duplicates = true;
+ bool const do_not_allow_duplicates = !allow_duplicates;
+
+ test_open_multipolygons<point_type, allow_duplicates>();
+ test_open_multipolygons<point_type, do_not_allow_duplicates>();
+}
+
+BOOST_AUTO_TEST_CASE( test_is_valid_variant )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << " is_valid: variant support" << std::endl;
+ std::cout << "************************************" << std::endl;
+#endif
+
+ typedef bg::model::polygon<point_type> polygon_type; // cw, closed
+
+ typedef boost::variant
+ <
+ linestring_type, multi_linestring_type, polygon_type
+ > variant_geometry;
+ typedef test_valid_variant<variant_geometry> test;
+
+ variant_geometry vg;
+
+ linestring_type valid_linestring =
+ from_wkt<linestring_type>("LINESTRING(0 0,1 0)");
+ multi_linestring_type invalid_multi_linestring =
+ from_wkt<multi_linestring_type>("MULTILINESTRING((0 0,1 0),(0 0))");
+ polygon_type valid_polygon =
+ from_wkt<polygon_type>("POLYGON((0 0,1 1,1 0,0 0))");
+ polygon_type invalid_polygon =
+ from_wkt<polygon_type>("POLYGON((0 0,1 1,1 0))");
+
+ vg = valid_linestring;
+ test::apply(vg, true);
+ vg = invalid_multi_linestring;
+ test::apply(vg, false);
+ vg = valid_polygon;
+ test::apply(vg, true);
+ vg = invalid_polygon;
+ test::apply(vg, false);
+}
diff --git a/libs/geometry/test/algorithms/length.vcproj b/libs/geometry/test/algorithms/length.vcproj
deleted file mode 100644
index 17058ddcfe..0000000000
--- a/libs/geometry/test/algorithms/length.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="length"
- ProjectGUID="{C4D75B1E-34D5-4A98-8535-A9535BE949E4}"
- RootNamespace="length"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\length"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\length"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\length.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/make.vcproj b/libs/geometry/test/algorithms/make.vcproj
deleted file mode 100644
index 37ee7ce505..0000000000
--- a/libs/geometry/test/algorithms/make.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="make"
- ProjectGUID="{BCD17F3E-8DF2-4B00-A75E-BF7372D2873B}"
- RootNamespace="make"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\make"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\make"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\make.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/num_geometries.cpp b/libs/geometry/test/algorithms/num_geometries.cpp
new file mode 100644
index 0000000000..7c8589f87e
--- /dev/null
+++ b/libs/geometry/test/algorithms/num_geometries.cpp
@@ -0,0 +1,151 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_num_geometries
+#endif
+
+#include <iostream>
+
+#include <boost/test/included/unit_test.hpp>
+
+#include <boost/variant/variant.hpp>
+
+#include <boost/geometry/algorithms/num_geometries.hpp>
+
+#include <boost/geometry/core/closure.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/geometry/io/dsv/write.hpp>
+
+namespace bg = boost::geometry;
+
+
+typedef bg::model::point<double, 2, bg::cs::cartesian> point;
+typedef bg::model::linestring<point> linestring;
+typedef bg::model::segment<point> segment;
+typedef bg::model::box<point> box;
+typedef bg::model::ring<point> ring;
+typedef bg::model::polygon<point> polygon;
+typedef bg::model::multi_point<point> multi_point;
+typedef bg::model::multi_linestring<linestring> multi_linestring;
+typedef bg::model::multi_polygon<polygon> multi_polygon;
+
+
+template <typename Geometry>
+struct test_num_geometries
+{
+ static inline void apply(Geometry const& geometry,
+ std::size_t expected)
+ {
+ std::size_t detected = bg::num_geometries(geometry);
+ BOOST_CHECK_MESSAGE( detected == expected,
+ "Expected: " << expected
+ << " detected: " << detected
+ << " wkt: " << bg::wkt(geometry) );
+ }
+
+ static inline void apply(std::string const& wkt,
+ std::size_t expected)
+ {
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ apply(geometry, expected);
+ }
+};
+
+BOOST_AUTO_TEST_CASE( test_point )
+{
+ test_num_geometries<point>::apply("POINT(0 0)", 1);
+}
+
+BOOST_AUTO_TEST_CASE( test_segment )
+{
+ test_num_geometries<segment>::apply("SEGMENT(0 0,1 1)", 1);
+}
+
+BOOST_AUTO_TEST_CASE( test_box )
+{
+ test_num_geometries<box>::apply("BOX(0 0,1 1)", 1);
+}
+
+BOOST_AUTO_TEST_CASE( test_linestring )
+{
+ test_num_geometries<linestring>::apply("LINESTRING(0 0,1 1,2 2)", 1);
+}
+
+BOOST_AUTO_TEST_CASE( test_multipoint )
+{
+ typedef test_num_geometries<multi_point> tester;
+
+ tester::apply("MULTIPOINT()", 0);
+ tester::apply("MULTIPOINT(0 0)", 1);
+ tester::apply("MULTIPOINT(0 0,0 0)", 2);
+ tester::apply("MULTIPOINT(0 0,0 0,1 1)", 3);
+}
+
+BOOST_AUTO_TEST_CASE( test_multilinestring )
+{
+ typedef test_num_geometries<multi_linestring> tester;
+
+ tester::apply("MULTILINESTRING()", 0);
+ tester::apply("MULTILINESTRING((0 0,1 0))", 1);
+ tester::apply("MULTILINESTRING((0 0,1 0,0 1),(0 0,1 0,0 1,0 0))", 2);
+ tester::apply("MULTILINESTRING((),(),(0 0,1 0))", 3);
+}
+
+BOOST_AUTO_TEST_CASE( test_ring )
+{
+ test_num_geometries<ring>::apply("POLYGON((0 0,1 0,0 1,0 0))", 1);
+}
+
+BOOST_AUTO_TEST_CASE( test_polygon )
+{
+ typedef test_num_geometries<polygon> tester;
+
+ tester::apply("POLYGON((0 0,10 0,0 10,0 0))", 1);
+ tester::apply("POLYGON((0 0,10 0,0 10,0 0),(1 1,2 1,1 1))", 1);
+ tester::apply("POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,2 2,1 2,1 1),(5 5,6 5,6 6,5 6,5 5))", 1);
+}
+
+BOOST_AUTO_TEST_CASE( test_multipolygon )
+{
+ typedef test_num_geometries<multi_polygon> tester;
+
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,1 2,1 1)))", 1);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,2 2,1 2,1 1),(5 5,6 5,6 6,5 6,5 5)))", 1);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,1 2,1 1)),((100 100,110 100,110 110,100 100),(101 101,102 101,102 102,101 101)))", 2);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,2 2,1 2,1 1),(5 5,6 5,6 6,5 6,5 5)),((100 100,110 100,110 110,100 100),(101 101,102 101,102 102,101 101),(105 105,106 105,106 106,105 106,105 105)))", 2);
+}
+
+BOOST_AUTO_TEST_CASE( test_variant )
+{
+ typedef boost::variant
+ <
+ linestring, multi_linestring
+ > variant_geometry_type;
+
+ typedef test_num_geometries<variant_geometry_type> tester;
+
+ linestring ls;
+ bg::read_wkt("LINESTRING(0 0,1 1,2 2)", ls);
+
+ multi_linestring mls;
+ bg::read_wkt("MULTILINESTRING((0 0,1 1,2 2),(3 3,4 4),(5 5,6 6,7 7,8 8))",
+ mls);
+
+ variant_geometry_type variant_geometry;
+
+ variant_geometry = ls;
+ tester::apply(variant_geometry, 1);
+
+ variant_geometry = mls;
+ tester::apply(variant_geometry, 3);
+}
diff --git a/libs/geometry/test/algorithms/num_interior_rings.cpp b/libs/geometry/test/algorithms/num_interior_rings.cpp
new file mode 100644
index 0000000000..8b78ed7de9
--- /dev/null
+++ b/libs/geometry/test/algorithms/num_interior_rings.cpp
@@ -0,0 +1,153 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_num_interior_rings
+#endif
+
+#include <iostream>
+
+#include <boost/test/included/unit_test.hpp>
+
+#include <boost/variant/variant.hpp>
+
+#include <boost/geometry/algorithms/num_interior_rings.hpp>
+
+#include <boost/geometry/core/closure.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/geometry/io/dsv/write.hpp>
+
+namespace bg = boost::geometry;
+
+
+typedef bg::model::point<double, 2, bg::cs::cartesian> point;
+typedef bg::model::linestring<point> linestring;
+typedef bg::model::segment<point> segment;
+typedef bg::model::box<point> box;
+typedef bg::model::ring<point> ring;
+typedef bg::model::polygon<point> polygon;
+typedef bg::model::multi_point<point> multi_point;
+typedef bg::model::multi_linestring<linestring> multi_linestring;
+typedef bg::model::multi_polygon<polygon> multi_polygon;
+
+
+template <typename Geometry>
+struct test_num_interior_rings
+{
+ static inline void apply(Geometry const& geometry,
+ std::size_t expected)
+ {
+ std::size_t detected = bg::num_interior_rings(geometry);
+ BOOST_CHECK_MESSAGE( detected == expected,
+ "Expected: " << expected
+ << " detected: " << detected
+ << " wkt: " << bg::wkt(geometry) );
+ }
+
+ static inline void apply(std::string const& wkt,
+ std::size_t expected)
+ {
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ apply(geometry, expected);
+ }
+};
+
+BOOST_AUTO_TEST_CASE( test_point )
+{
+ test_num_interior_rings<point>::apply("POINT(0 0)", 0);
+}
+
+BOOST_AUTO_TEST_CASE( test_segment )
+{
+ test_num_interior_rings<segment>::apply("SEGMENT(0 0,1 1)", 0);
+}
+
+BOOST_AUTO_TEST_CASE( test_box )
+{
+ test_num_interior_rings<box>::apply("BOX(0 0,1 1)", 0);
+}
+
+BOOST_AUTO_TEST_CASE( test_linestring )
+{
+ test_num_interior_rings<linestring>::apply("LINESTRING(0 0,1 1)", 0);
+}
+
+BOOST_AUTO_TEST_CASE( test_multipoint )
+{
+ test_num_interior_rings<multi_point>::apply("MULTIPOINT(0 0,1 1)", 0);
+}
+
+BOOST_AUTO_TEST_CASE( test_multilinestring )
+{
+ test_num_interior_rings
+ <
+ multi_linestring
+ >::apply("MULTILINESTRING((0 0,1 0,0 1),(0 0,1 0,0 1,0 0))", 0);
+}
+
+BOOST_AUTO_TEST_CASE( test_ring )
+{
+ typedef test_num_interior_rings<ring> tester;
+
+ tester::apply("POLYGON((0 0,1 0,0 1,0 0))", 0);
+ tester::apply("POLYGON((0 0,1 0,1 0,0 1,0 0))", 0);
+}
+
+BOOST_AUTO_TEST_CASE( test_polygon )
+{
+ typedef test_num_interior_rings<polygon> tester;
+
+ tester::apply("POLYGON((0 0,10 0,0 10,0 0))", 0);
+ tester::apply("POLYGON((0 0,10 0,0 10,0 0),(1 1,2 1,1 2,1 1))", 1);
+ tester::apply("POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,2 2,1 2,1 1),(5 5,6 5,6 6,5 6,5 5))", 2);
+}
+
+BOOST_AUTO_TEST_CASE( test_multipolygon )
+{
+ typedef test_num_interior_rings<multi_polygon> tester;
+
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))", 0);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,1 2,1 1)))", 1);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,2 2,1 2,1 1),(5 5,6 5,6 6,5 6,5 5)))", 2);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,1 2,1 1)),((100 100,110 100,110 110,100 100),(101 101,102 101,102 102,101 101)))", 2);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,2 2,1 2,1 1),(5 5,6 5,6 6,5 6,5 5)),((100 100,110 100,110 110,100 100),(101 101,102 101,102 102,101 101),(105 105,106 105,106 106,105 106,105 105)))", 4);
+}
+
+BOOST_AUTO_TEST_CASE( test_variant )
+{
+ typedef boost::variant
+ <
+ linestring, polygon, multi_polygon
+ > variant_geometry_type;
+
+ typedef test_num_interior_rings<variant_geometry_type> tester;
+
+ linestring ls;
+ bg::read_wkt("LINESTRING(0 0,1 1,2 2)", ls);
+
+ polygon poly;
+ bg::read_wkt("POLYGON((0 0,0 10,10 10,10 0,0 0),(1 1,9 1,9 9,1 9,1 1))", poly);
+
+ multi_polygon mpoly;
+ bg::read_wkt("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(1 1,2 1,1 2,1 1),(5 5,6 5,6 6,5 6,5 5)))", mpoly);
+
+ variant_geometry_type variant_geometry;
+
+ variant_geometry = ls;
+ tester::apply(variant_geometry, 0);
+
+ variant_geometry = poly;
+ tester::apply(variant_geometry, 1);
+
+ variant_geometry = mpoly;
+ tester::apply(variant_geometry, 2);
+}
diff --git a/libs/geometry/test/algorithms/num_points.cpp b/libs/geometry/test/algorithms/num_points.cpp
new file mode 100644
index 0000000000..d1f58b299c
--- /dev/null
+++ b/libs/geometry/test/algorithms/num_points.cpp
@@ -0,0 +1,97 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <iostream>
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/algorithms/num_points.hpp>
+#include <boost/geometry/multi/algorithms/num_points.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/multi/geometries/multi_geometries.hpp>
+
+#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/geometry/multi/io/wkt/read.hpp>
+
+template <std::size_t D, typename T = double>
+struct box_dD
+{
+ typedef boost::geometry::model::box
+ <
+ boost::geometry::model::point<T, D, boost::geometry::cs::cartesian>
+ > type;
+};
+
+template <typename Geometry>
+inline void test_num_points(std::string const& wkt,
+ std::size_t expected,
+ std::size_t expected_add_for_open)
+{
+ namespace bg = boost::geometry;
+ Geometry geometry;
+ boost::geometry::read_wkt(wkt, geometry);
+ std::size_t detected = bg::num_points(geometry);
+ BOOST_CHECK_EQUAL(expected, detected);
+ detected = bg::num_points(geometry, false);
+ BOOST_CHECK_EQUAL(expected, detected);
+ detected = bg::num_points(geometry, true);
+ BOOST_CHECK_EQUAL(expected_add_for_open, detected);
+}
+
+template <typename Geometry>
+inline void test_num_points(std::string const& wkt, std::size_t expected)
+{
+ test_num_points<Geometry>(wkt, expected, expected);
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double,2,bg::cs::cartesian> point;
+ typedef bg::model::linestring<point> linestring;
+ typedef bg::model::segment<point> segment;
+ typedef bg::model::box<point> box;
+ typedef bg::model::ring<point> ring;
+ typedef bg::model::polygon<point> polygon;
+ typedef bg::model::multi_point<point> multi_point;
+ typedef bg::model::multi_linestring<linestring> multi_linestring;
+ typedef bg::model::multi_polygon<polygon> multi_polygon;
+
+ // open geometries
+ typedef bg::model::ring<point, true, false> open_ring;
+ typedef bg::model::polygon<point, true, false> open_polygon;
+ typedef bg::model::multi_polygon<open_polygon> open_multi_polygon;
+
+ test_num_points<point>("POINT(0 0)", 1u);
+ test_num_points<linestring>("LINESTRING(0 0,1 1)", 2u);
+ test_num_points<segment>("LINESTRING(0 0,1 1)", 2u);
+ test_num_points<box>("POLYGON((0 0,10 10))", 4u);
+ test_num_points<box_dD<3>::type>("BOX(0 0 0,1 1 1)", 8u);
+ test_num_points<box_dD<4>::type>("BOX(0 0 0 0,1 1 1 1)", 16u);
+ test_num_points<box_dD<5>::type>("BOX(0 0 0 0 0,1 1 1 1 1)", 32u);
+ test_num_points<ring>("POLYGON((0 0,1 1,0 1,0 0))", 4u);
+ test_num_points<polygon>("POLYGON((0 0,10 10,0 10,0 0))", 4u);
+ test_num_points<polygon>("POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,6 4,6 6,4 6,4 4))", 10u);
+ test_num_points<multi_point>("MULTIPOINT((0 0),(1 1))", 2u);
+ test_num_points<multi_linestring>("MULTILINESTRING((0 0,1 1),(2 2,3 3,4 4))", 5u);
+ test_num_points<multi_polygon>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((0 10,1 10,1 9,0 10)))", 9u);
+
+ // test open geometries
+ test_num_points<open_ring>("POLYGON((0 0,1 1,0 1))", 3u, 4u);
+ test_num_points<open_ring>("POLYGON((0 0,1 1,0 1,0 0))", 4u, 5u);
+ test_num_points<open_polygon>("POLYGON((0 0,10 10,0 10))", 3u, 4u);
+ test_num_points<open_polygon>("POLYGON((0 0,10 10,0 10,0 0))", 4u, 5u);
+ test_num_points<open_multi_polygon>("MULTIPOLYGON(((0 0,0 10,10 10,10 0)),((0 10,1 10,1 9)))", 7u, 9u);
+ test_num_points<open_multi_polygon>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((0 10,1 10,1 9,0 10)))", 9u, 11u);
+
+ return 0;
+}
+
diff --git a/libs/geometry/test/algorithms/num_segments.cpp b/libs/geometry/test/algorithms/num_segments.cpp
new file mode 100644
index 0000000000..f6f0ddbf18
--- /dev/null
+++ b/libs/geometry/test/algorithms/num_segments.cpp
@@ -0,0 +1,291 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_num_segments
+#endif
+
+#include <iostream>
+
+#include <boost/test/included/unit_test.hpp>
+
+#include <boost/variant/variant.hpp>
+
+#include <boost/geometry/algorithms/num_segments.hpp>
+
+#include <boost/geometry/core/closure.hpp>
+#include <boost/geometry/core/tag.hpp>
+#include <boost/geometry/core/tags.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/geometry/io/dsv/write.hpp>
+
+namespace bg = boost::geometry;
+
+
+typedef bg::model::point<double, 2, bg::cs::cartesian> point;
+typedef bg::model::linestring<point> linestring;
+typedef bg::model::segment<point> segment;
+typedef bg::model::box<point> box;
+typedef bg::model::ring<point, true, true> ring_cw_closed;
+typedef bg::model::ring<point, true, false> ring_cw_open;
+typedef bg::model::ring<point, false, true> ring_ccw_closed;
+typedef bg::model::ring<point, false, false> ring_ccw_open;
+typedef bg::model::polygon<point, true, true> polygon_cw_closed;
+typedef bg::model::polygon<point, true, false> polygon_cw_open;
+typedef bg::model::polygon<point, false, true> polygon_ccw_closed;
+typedef bg::model::polygon<point, false, false> polygon_ccw_open;
+typedef bg::model::multi_point<point> multi_point;
+typedef bg::model::multi_linestring<linestring> multi_linestring;
+typedef bg::model::multi_polygon<polygon_cw_closed> multi_polygon_cw_closed;
+typedef bg::model::multi_polygon<polygon_cw_open> multi_polygon_cw_open;
+typedef bg::model::multi_polygon<polygon_ccw_closed> multi_polygon_ccw_closed;
+typedef bg::model::multi_polygon<polygon_ccw_open> multi_polygon_ccw_open;
+
+template <std::size_t D, typename T = double>
+struct box_dD
+{
+ typedef boost::geometry::model::box
+ <
+ boost::geometry::model::point<T, D, boost::geometry::cs::cartesian>
+ > type;
+};
+
+template <typename Geometry, typename Tag = typename bg::tag<Geometry>::type>
+struct test_num_segments
+{
+ static inline void apply(Geometry const& geometry, std::size_t expected)
+ {
+ std::size_t detected = bg::num_segments(geometry);
+ BOOST_CHECK_MESSAGE( detected == expected,
+ "Expected: " << expected
+ << " detected: " << detected
+ << " wkt: " << bg::wkt(geometry) );
+ }
+
+ static inline void apply(std::string const& wkt, std::size_t expected)
+ {
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ apply(geometry, expected);
+ }
+};
+
+template <typename Box>
+struct test_num_segments<Box, bg::box_tag>
+{
+ static inline void apply(Box const& box, std::size_t expected)
+ {
+ std::size_t detected = bg::num_segments(box);
+ BOOST_CHECK_MESSAGE( detected == expected,
+ "Expected: " << expected
+ << " detected: " << detected
+ << " dsv: " << bg::dsv(box) );
+ }
+
+ static inline void apply(std::string const& wkt, std::size_t expected)
+ {
+ Box box;
+ bg::read_wkt(wkt, box);
+ apply(box, expected);
+ }
+};
+
+BOOST_AUTO_TEST_CASE( test_point )
+{
+ test_num_segments<point>::apply("POINT(0 0)", 0);
+}
+
+BOOST_AUTO_TEST_CASE( test_segment )
+{
+ test_num_segments<segment>::apply("SEGMENT(0 0,1 1)", 1);
+}
+
+BOOST_AUTO_TEST_CASE( test_box )
+{
+ test_num_segments<box>::apply("BOX(0 0,1 1)", 4);
+
+ // test higher-dimensional boxes
+ test_num_segments<box_dD<3>::type>::apply("BOX(0 0 0,1 1 1)", 12);
+ test_num_segments<box_dD<4>::type>::apply("BOX(0 0 0 0,1 1 1 1)", 32);
+ test_num_segments<box_dD<5>::type>::apply("BOX(0 0 0 0 0,1 1 1 1 1)", 80);
+}
+
+BOOST_AUTO_TEST_CASE( test_linestring )
+{
+ typedef test_num_segments<linestring> tester;
+
+ tester::apply("LINESTRING()", 0);
+ tester::apply("LINESTRING(0 0)", 0);
+ tester::apply("LINESTRING(0 0,0 0)", 1);
+ tester::apply("LINESTRING(0 0,0 0,1 1)", 2);
+ tester::apply("LINESTRING(0 0,0 0,0 0,1 1)", 3);
+}
+
+BOOST_AUTO_TEST_CASE( test_multipoint )
+{
+ typedef test_num_segments<multi_point> tester;
+
+ tester::apply("MULTIPOINT()", 0);
+ tester::apply("MULTIPOINT(0 0)", 0);
+ tester::apply("MULTIPOINT(0 0,0 0)", 0);
+ tester::apply("MULTIPOINT(0 0,0 0,1 1)", 0);
+}
+
+BOOST_AUTO_TEST_CASE( test_multilinestring )
+{
+ typedef test_num_segments<multi_linestring> tester;
+
+ tester::apply("MULTILINESTRING()", 0);
+ tester::apply("MULTILINESTRING((),(0 0))", 0);
+ tester::apply("MULTILINESTRING((0 0))", 0);
+ tester::apply("MULTILINESTRING((0 0,1 0))", 1);
+ tester::apply("MULTILINESTRING((),(),(0 0,1 0))", 1);
+ tester::apply("MULTILINESTRING((0 0,1 0,0 1),(0 0,1 0,0 1,0 0))", 5);
+}
+
+template <typename OpenRing>
+void test_open_ring()
+{
+ typedef test_num_segments<OpenRing> tester;
+
+ tester::apply("POLYGON(())", 0);
+ tester::apply("POLYGON((0 0))", 0);
+ tester::apply("POLYGON((0 0,1 0))", 2);
+ tester::apply("POLYGON((0 0,1 0,0 1))", 3);
+ tester::apply("POLYGON((0 0,0 0,1 0,0 1))", 4);
+}
+
+template <typename ClosedRing>
+void test_closed_ring()
+{
+ typedef test_num_segments<ClosedRing> tester;
+
+ tester::apply("POLYGON(())", 0);
+ tester::apply("POLYGON((0 0))", 0);
+ tester::apply("POLYGON((0 0,0 0))", 1);
+ tester::apply("POLYGON((0 0,1 0,0 0))", 2);
+ tester::apply("POLYGON((0 0,1 0,0 1,0 0))", 3);
+ tester::apply("POLYGON((0 0,1 0,1 0,0 1,0 0))", 4);
+}
+
+BOOST_AUTO_TEST_CASE( test_ring )
+{
+ test_open_ring<ring_ccw_open>();
+ test_open_ring<ring_cw_open>();
+ test_closed_ring<ring_ccw_closed>();
+ test_closed_ring<ring_cw_closed>();
+}
+
+template <typename OpenPolygon>
+void test_open_polygon()
+{
+ typedef test_num_segments<OpenPolygon> tester;
+
+ tester::apply("POLYGON(())", 0);
+ tester::apply("POLYGON((0 0))", 0);
+ tester::apply("POLYGON((0 0,10 0),(0 0))", 2);
+ tester::apply("POLYGON((0 0,10 0),(1 1,2 1))", 4);
+ tester::apply("POLYGON((0 0,10 0,0 10))", 3);
+ tester::apply("POLYGON((0 0,10 0,0 10),())", 3);
+ tester::apply("POLYGON((0 0,10 0,0 10),(1 1))", 3);
+ tester::apply("POLYGON((0 0,10 0,0 10),(1 1,2 1))", 5);
+ tester::apply("POLYGON((0 0,10 0,0 10),(1 1,2 1,1 2))", 6);
+ tester::apply("POLYGON((0 0,10 0,10 10,0 10),(1 1,2 1,1 2))", 7);
+ tester::apply("POLYGON((0 0,10 0,10 10,0 10),(1 1,2 1,2 2,1 2))", 8);
+ tester::apply("POLYGON((0 0,10 0,10 10,0 10),(1 1,2 1,2 2,1 2),(5 5,6 5,6 6,5 6))", 12);
+}
+
+template <typename ClosedPolygon>
+void test_closed_polygon()
+{
+ typedef test_num_segments<ClosedPolygon> tester;
+
+ tester::apply("POLYGON(())", 0);
+ tester::apply("POLYGON((0 0))", 0);
+ tester::apply("POLYGON((0 0,10 0,0 0),(0 0))", 2);
+ tester::apply("POLYGON((0 0,10 0,0 0),(1 1,2 1,1 1))", 4);
+ tester::apply("POLYGON((0 0,10 0,0 10,0 0))", 3);
+ tester::apply("POLYGON((0 0,10 0,0 10,0 0),())", 3);
+ tester::apply("POLYGON((0 0,10 0,0 10,0 0),(1 1))", 3);
+ tester::apply("POLYGON((0 0,10 0,0 10,0 0),(1 1,2 1,1 1))", 5);
+ tester::apply("POLYGON((0 0,10 0,0 10,0 0),(1 1,2 1,1 2,1 1))", 6);
+ tester::apply("POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,1 2,1 1))", 7);
+ tester::apply("POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,2 2,1 2,1 1))", 8);
+ tester::apply("POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,2 2,1 2,1 1),(5 5,6 5,6 6,5 6,5 5))", 12);
+}
+
+BOOST_AUTO_TEST_CASE( test_polygon )
+{
+ test_open_polygon<polygon_ccw_open>();
+ test_open_polygon<polygon_cw_open>();
+ test_closed_polygon<polygon_ccw_closed>();
+ test_closed_polygon<polygon_cw_closed>();
+}
+
+template <typename OpenMultiPolygon>
+void test_open_multipolygon()
+{
+ typedef test_num_segments<OpenMultiPolygon> tester;
+
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10),(1 1,2 1,1 2)))", 7);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10),(1 1,2 1,2 2,1 2),(5 5,6 5,6 6,5 6)))", 12);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10),(1 1,2 1,1 2)),((100 100,110 100,110 110),(101 101,102 101,102 102)))", 13);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10),(1 1,2 1,2 2,1 2),(5 5,6 5,6 6,5 6)),((100 100,110 100,110 110),(101 101,102 101,102 102),(105 105,106 105,106 106,105 106)))", 22);
+}
+
+template <typename ClosedMultiPolygon>
+void test_closed_multipolygon()
+{
+ typedef test_num_segments<ClosedMultiPolygon> tester;
+
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,1 2,1 1)))", 7);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,2 2,1 2,1 1),(5 5,6 5,6 6,5 6,5 5)))", 12);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,1 2,1 1)),((100 100,110 100,110 110,100 100),(101 101,102 101,102 102,101 101)))", 13);
+ tester::apply("MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(1 1,2 1,2 2,1 2,1 1),(5 5,6 5,6 6,5 6,5 5)),((100 100,110 100,110 110,100 100),(101 101,102 101,102 102,101 101),(105 105,106 105,106 106,105 106,105 105)))", 22);
+}
+
+BOOST_AUTO_TEST_CASE( test_multipolygon )
+{
+ test_open_multipolygon<multi_polygon_ccw_open>();
+ test_open_multipolygon<multi_polygon_cw_open>();
+ test_closed_multipolygon<multi_polygon_ccw_closed>();
+ test_closed_multipolygon<multi_polygon_cw_closed>();
+}
+
+BOOST_AUTO_TEST_CASE( test_variant )
+{
+ typedef boost::variant
+ <
+ linestring, polygon_cw_open, polygon_cw_closed
+ > variant_geometry_type;
+
+ typedef test_num_segments<variant_geometry_type> tester;
+
+ linestring ls;
+ bg::read_wkt("LINESTRING(0 0,1 1,2 2)", ls);
+
+ polygon_cw_open p_open;
+ bg::read_wkt("POLYGON((0 0,0 1,1 0))", p_open);
+
+ polygon_cw_closed p_closed;
+ bg::read_wkt("POLYGON((0 0,0 1,1 1,1 0,0 0))", p_closed);
+
+ variant_geometry_type variant_geometry;
+
+ variant_geometry = ls;
+ tester::apply(variant_geometry, 2);
+
+ variant_geometry = p_open;
+ tester::apply(variant_geometry, 3);
+
+ variant_geometry = p_closed;
+ tester::apply(variant_geometry, 4);
+}
diff --git a/libs/geometry/test/algorithms/overlaps.cpp b/libs/geometry/test/algorithms/overlaps.cpp
index 6226ddd04e..14c615e254 100644
--- a/libs/geometry/test/algorithms/overlaps.cpp
+++ b/libs/geometry/test/algorithms/overlaps.cpp
@@ -1,19 +1,20 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
-//
+
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
// 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)
-#include <algorithms/test_overlaps.hpp>
-
-
-#include <boost/geometry/geometries/geometries.hpp>
-#include <boost/geometry/geometries/point_xy.hpp>
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+#include <algorithms/test_overlaps.hpp>
template <typename P>
-void test_2d()
+void test_box_box_2d()
{
#if defined(BOOST_GEOMETRY_COMPILE_FAIL)
test_geometry<P, P>("POINT(1 1)", "POINT(1 1)", true);
@@ -42,7 +43,56 @@ void test_3d()
test_geometry<bg::model::box<P>, bg::model::box<P> >("BOX(1 1 1, 3 3 3)", "BOX(4 4 4,6 6 6)", false);
}
+template <typename P>
+void test_pp()
+{
+ typedef bg::model::multi_point<P> mpt;
+ test_geometry<mpt, mpt>("MULTIPOINT(0 0,1 1,2 2)", "MULTIPOINT(1 1,3 3,4 4)", true);
+ test_geometry<mpt, mpt>("MULTIPOINT(0 0,1 1,2 2)", "MULTIPOINT(1 1,2 2)", false);
+}
+
+template <typename P>
+void test_ll()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 1)", "LINESTRING(1 1,2 2,4 4)", true);
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,4 0)", "LINESTRING(0 1,2 1,3 2)", false);
+
+ test_geometry<ls, mls>("LINESTRING(0 0,2 2,3 1)", "MULTILINESTRING((1 1,2 2),(2 2,4 4))", true);
+ test_geometry<ls, mls>("LINESTRING(0 0,2 2,3 1)", "MULTILINESTRING((1 1,2 2),(3 3,4 4))", true);
+ test_geometry<ls, mls>("LINESTRING(0 0,3 3,3 1)", "MULTILINESTRING((3 3,2 2),(0 0,1 1))", false);
+}
+
+template <typename P>
+void test_aa()
+{
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::multi_polygon<poly> mpoly;
+
+ test_geometry<poly, poly>("POLYGON((0 0,0 5,5 5,5 0,0 0))", "POLYGON((3 3,3 9,9 9,9 3,3 3))", true);
+ test_geometry<poly, poly>("POLYGON((0 0,0 5,5 5,5 0,0 0))", "POLYGON((5 5,5 9,9 9,9 5,5 5))", false);
+ test_geometry<poly, poly>("POLYGON((0 0,0 5,5 5,5 0,0 0))", "POLYGON((3 3,3 5,5 5,5 3,3 3))", false);
+
+ test_geometry<poly, mpoly>("POLYGON((0 0,0 5,5 5,5 0,0 0))",
+ "MULTIPOLYGON(((3 3,3 5,5 5,5 3,3 3)),((5 5,5 6,6 6,6 5,5 5)))",
+ true);
+ test_geometry<mpoly, mpoly>("MULTIPOLYGON(((3 3,3 5,5 5,5 3,3 3)),((0 0,0 3,3 3,3 0,0,0)))",
+ "MULTIPOLYGON(((3 3,3 5,5 5,5 3,3 3)),((5 5,5 6,6 6,6 5,5 5)))",
+ true);
+}
+
+template <typename P>
+void test_2d()
+{
+ test_pp<P>();
+ test_ll<P>();
+ test_aa<P>();
+
+ test_box_box_2d<P>();
+}
int test_main( int , char* [] )
{
diff --git a/libs/geometry/test/algorithms/overlaps.vcproj b/libs/geometry/test/algorithms/overlaps.vcproj
deleted file mode 100644
index 06a51367f4..0000000000
--- a/libs/geometry/test/algorithms/overlaps.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="overlaps"
- ProjectGUID="{30C37854-9ED6-4C1E-97FB-BF8637BD5811}"
- RootNamespace="overlaps"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\overlaps"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\overlaps"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\overlaps.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/Jamfile.v2 b/libs/geometry/test/algorithms/overlay/Jamfile.v2
index acd298a0c3..9319330e95 100644
--- a/libs/geometry/test/algorithms/overlay/Jamfile.v2
+++ b/libs/geometry/test/algorithms/overlay/Jamfile.v2
@@ -4,18 +4,25 @@
# Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
# Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
#
+# This file was modified by Oracle on 2014.
+# Modifications copyright (c) 2014 Oracle and/or its affiliates.
+#
# 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)
+#
+# Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
test-suite boost-geometry-algorithms-overlay
:
[ run assemble.cpp ]
- [ run ccw_traverse.cpp ]
+ [ run ccw_traverse.cpp : : : <toolset>msvc:<cxxflags>/bigobj ]
[ run get_turn_info.cpp ]
[ run get_turns.cpp ]
+ [ run get_turns_linear_linear.cpp ]
+ [ run get_turns_linear_areal.cpp ]
[ run relative_order.cpp ]
[ run select_rings.cpp ]
[ run self_intersection_points.cpp ]
- [ run traverse.cpp ]
+ [ run traverse.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE ]
;
diff --git a/libs/geometry/test/algorithms/overlay/assemble.cpp b/libs/geometry/test/algorithms/overlay/assemble.cpp
index 667e03d1b4..262f32f982 100644
--- a/libs/geometry/test/algorithms/overlay/assemble.cpp
+++ b/libs/geometry/test/algorithms/overlay/assemble.cpp
@@ -22,6 +22,7 @@
#include <boost/geometry/algorithms/difference.hpp>
#include <boost/geometry/algorithms/intersects.hpp>
#include <boost/geometry/algorithms/within.hpp>
+#include <boost/geometry/policies/robustness/get_rescale_policy.hpp>
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
@@ -34,18 +35,24 @@
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
template <typename Geometry>
inline void test_assemble(std::string const& id, Geometry const& p, Geometry const& q, char operation = 'i')
{
+ typedef typename bg::point_type<Geometry>::type point_type;
+ typedef typename bg::rescale_policy_type<point_type>::type
+ rescale_policy_type;
+ rescale_policy_type rescale_policy
+ = bg::get_rescale_policy<rescale_policy_type>(p, q);
+
std::vector<Geometry> u, i, d1, d2;
bg::detail::union_::union_insert<Geometry>(p, q, std::back_inserter(u));
bg::detail::intersection::intersection_insert<Geometry>(p, q, std::back_inserter(i));
- bg::detail::difference::difference_insert<Geometry>(p, q, std::back_inserter(d1));
- bg::detail::difference::difference_insert<Geometry>(q, p, std::back_inserter(d2));
+ bg::detail::difference::difference_insert<Geometry>(p, q, rescale_policy, std::back_inserter(d1));
+ bg::detail::difference::difference_insert<Geometry>(q, p, rescale_policy, std::back_inserter(d2));
if (operation == 'i')
{
@@ -72,21 +79,13 @@ inline void test_assemble(std::string const& id, Geometry const& p, Geometry con
area_d2 += bg::area(g);
}
-
type diff = (area_p + area_q) - area_u - area_i;
type diff_d1 = (area_u - area_q) - area_d1;
type diff_d2 = (area_u - area_p) - area_d2;
- BOOST_CHECK_CLOSE(diff, 0.0, 0.001);
-
- // Gives small deviations on gcc:
- // difference{0.001%} between diff_d1{1.1102230246251565e-016} and 0.0{0} exceeds 0.001%
- //BOOST_CHECK_CLOSE(diff_d1, 0.0, 0.001);
- //BOOST_CHECK_CLOSE(diff_d2, 0.0, 0.001);
-
bool ok = abs(diff) < 0.001
- || abs(diff_d1) < 0.001
- || abs(diff_d2) < 0.001;
+ && abs(diff_d1) < 0.001
+ && abs(diff_d2) < 0.001;
BOOST_CHECK_MESSAGE(ok,
id << " diff: "
diff --git a/libs/geometry/test/algorithms/overlay/assemble.vcproj b/libs/geometry/test/algorithms/overlay/assemble.vcproj
deleted file mode 100644
index 335b08ab71..0000000000
--- a/libs/geometry/test/algorithms/overlay/assemble.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="assemble"
- ProjectGUID="{306E829F-ACEC-42D5-B1D4-2531B2F56EA3}"
- RootNamespace="assemble"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\assemble"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\assemble"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\assemble.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/ccw_traverse.cpp b/libs/geometry/test/algorithms/overlay/ccw_traverse.cpp
index dc7f734002..944f3937c0 100644
--- a/libs/geometry/test/algorithms/overlay/ccw_traverse.cpp
+++ b/libs/geometry/test/algorithms/overlay/ccw_traverse.cpp
@@ -7,6 +7,8 @@
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
+#define BOOST_GEOMETRY_DEFINE_STREAM_OPERATOR_SEGMENT_RATIO
+
#include <fstream>
#include <iostream>
#include <iomanip>
@@ -21,10 +23,11 @@
#include <boost/geometry/io/wkt/wkt.hpp>
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
#include <boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp>
+#include <boost/geometry/policies/robustness/get_rescale_policy.hpp>
#include <algorithms/overlay/overlay_cases.hpp>
@@ -42,10 +45,19 @@ inline typename bg::coordinate_type<Geometry1>::type intersect(Geometry1 const&
>::type side_strategy_type;
+ typedef typename bg::point_type<Geometry1>::type point_type;
+
+ typedef typename bg::rescale_policy_type<point_type>::type
+ rescale_policy_type;
+
+ rescale_policy_type rescale_policy
+ = bg::get_rescale_policy<rescale_policy_type>(g1, g2);
+
typedef bg::detail::overlay::traversal_turn_info
- <
- typename bg::point_type<Geometry1>::type
- > turn_info;
+ <
+ point_type,
+ typename bg::segment_ratio_type<point_type, rescale_policy_type>::type
+ > turn_info;
std::vector<turn_info> turns;
bg::detail::get_turns::no_interrupt_policy policy;
@@ -53,11 +65,11 @@ inline typename bg::coordinate_type<Geometry1>::type intersect(Geometry1 const&
<
rev<Geometry1>::value,
rev<Geometry2>::value,
- bg::detail::overlay::calculate_distance_policy
- >(g1, g2, turns, policy);
+ bg::detail::overlay::assign_null_policy
+ >(g1, g2, rescale_policy, turns, policy);
bg::enrich_intersection_points<rev<Geometry1>::value, rev<Geometry2>::value >(turns, bg::detail::overlay::operation_intersection,
- g1, g2, side_strategy_type());
+ g1, g2, rescale_policy, side_strategy_type());
typedef bg::model::ring<typename bg::point_type<Geometry1>::type> ring_type;
typedef std::deque<ring_type> out_vector;
@@ -67,7 +79,7 @@ inline typename bg::coordinate_type<Geometry1>::type intersect(Geometry1 const&
<
rev<Geometry1>::value, rev<Geometry2>::value,
Geometry1, Geometry2
- >::apply(g1, g2, op, turns, v);
+ >::apply(g1, g2, op, rescale_policy, turns, v);
typename bg::coordinate_type<Geometry1>::type result = 0.0;
BOOST_FOREACH(ring_type& ring, v)
@@ -160,8 +172,8 @@ inline typename bg::coordinate_type<Geometry1>::type intersect(Geometry1 const&
out
<< std::setprecision(3)
- << "dist: " << turn.operations[0].enriched.distance
- << " / " << turn.operations[1].enriched.distance
+ << "dist: " << turn.operations[0].fraction
+ << " / " << turn.operations[1].fraction
<< std::endl;
offsets[p] += lineheight;
diff --git a/libs/geometry/test/algorithms/overlay/ccw_traverse.vcproj b/libs/geometry/test/algorithms/overlay/ccw_traverse.vcproj
deleted file mode 100644
index fc373c8476..0000000000
--- a/libs/geometry/test/algorithms/overlay/ccw_traverse.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="ccw_traverse"
- ProjectGUID="{BA789719-B2FC-405A-9258-E9E4ABCE1791}"
- RootNamespace="ccw_traverse"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\ccw_traverse"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\ccw_traverse"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\ccw_traverse.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/dissolver.cpp b/libs/geometry/test/algorithms/overlay/dissolver.cpp
index 2a8451e0bf..28bd3e5600 100644
--- a/libs/geometry/test/algorithms/overlay/dissolver.cpp
+++ b/libs/geometry/test/algorithms/overlay/dissolver.cpp
@@ -20,15 +20,14 @@
#include <boost/geometry/multi/multi.hpp>
#include <boost/geometry/multi/geometries/multi_polygon.hpp>
#include <boost/geometry/multi/io/wkt/read.hpp>
-#include <boost/geometry/extensions/io/svg/write_svg_multi.hpp>
#include <test_common/test_point.hpp>
-//#define TEST_WITH_SVG
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/write_svg_multi.hpp>
#endif
// Collection might be a multi-geometry, or std::vector<ring>
diff --git a/libs/geometry/test/algorithms/overlay/dissolver.vcproj b/libs/geometry/test/algorithms/overlay/dissolver.vcproj
deleted file mode 100644
index c3c9d4bf00..0000000000
--- a/libs/geometry/test/algorithms/overlay/dissolver.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="dissolver"
- ProjectGUID="{6CCB145C-C682-4B9F-8672-6D04DB5C76DD}"
- RootNamespace="dissolver"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\dissolver"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\dissolver"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\dissolver.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/enrich_intersection_points.cpp b/libs/geometry/test/algorithms/overlay/enrich_intersection_points.cpp
index 07068ea18d..5c37a4be5d 100644
--- a/libs/geometry/test/algorithms/overlay/enrich_intersection_points.cpp
+++ b/libs/geometry/test/algorithms/overlay/enrich_intersection_points.cpp
@@ -32,7 +32,7 @@
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
struct test_enrich_intersection_points
diff --git a/libs/geometry/test/algorithms/overlay/enrich_intersection_points.vcproj b/libs/geometry/test/algorithms/overlay/enrich_intersection_points.vcproj
deleted file mode 100644
index 8880fb1f30..0000000000
--- a/libs/geometry/test/algorithms/overlay/enrich_intersection_points.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="enrich_intersection_points"
- ProjectGUID="{20FE798A-E4EE-4C87-A988-7317E774D28A}"
- RootNamespace="enrich_intersection_points"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\enrich_intersection_points"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\enrich_intersection_points"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\enrich_intersection_points.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/get_turn_info.cpp b/libs/geometry/test/algorithms/overlay/get_turn_info.cpp
index 476e719e4d..4d52b99331 100644
--- a/libs/geometry/test/algorithms/overlay/get_turn_info.cpp
+++ b/libs/geometry/test/algorithms/overlay/get_turn_info.cpp
@@ -21,7 +21,7 @@
#include <boost/geometry/geometries/point_xy.hpp>
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
@@ -42,17 +42,23 @@ void test_with_point(std::string const& caseid,
P qj = bg::make<P>(qj_x, qj_y);
P qk = bg::make<P>(qk_x, qk_y);
+ typedef typename bg::detail::no_rescale_policy rescale_policy_type;
- typedef bg::detail::overlay::turn_info<P> turn_info;
+ typedef bg::detail::overlay::turn_info
+ <
+ P,
+ typename bg::segment_ratio_type<P, rescale_policy_type>::type
+ > turn_info;
typedef std::vector<turn_info> tp_vector;
turn_info model;
tp_vector info;
+ rescale_policy_type rescale_policy;
bg::detail::overlay::get_turn_info
<
- P, P, turn_info,
bg::detail::overlay::assign_null_policy
>::apply(pi, pj, pk, qi, qj, qk,
- model, std::back_inserter(info));
+ false, false, false, false, // dummy parameters
+ model, rescale_policy, std::back_inserter(info));
if (info.size() == 0)
@@ -72,18 +78,13 @@ void test_with_point(std::string const& caseid,
}
}
+ BOOST_CHECK_MESSAGE(detected == expected,
+ caseid
+ << (caseid.find("_") == std::string::npos ? " " : "")
+ << " method: " << method
+ << " detected: " << detected
+ << " expected: " << expected);
- /*
- std::cout << caseid
- << (caseid.find("_") == std::string::npos ? " " : "")
- << " " << method
- << " " << detected
- << " " << order
- << std::endl;
- */
-
-
- BOOST_CHECK_EQUAL(detected, expected);
if (! info.empty())
{
@@ -327,14 +328,16 @@ void test_all()
5, 3, 5, 5, 6, 6, // q
method_collinear, 5, 5, "ui");
+ // The next two cases are changed (BSG 2013-09-24), they contain turn info (#buffer_rt_g)
+ // In new approach they are changed back (BSG 2013-10-20)
test_both<P, double>("ccx1",
5, 1, 5, 6, 5, 8, // p
5, 5, 5, 7, 3, 8, // q
- method_collinear, 5, 6, "cc");
+ method_collinear, 5, 6, "cc"); // "iu");
test_both<P, double>("cxc1",
5, 1, 5, 6, 7, 8, // p
5, 3, 5, 5, 5, 7, // q
- method_collinear, 5, 5, "cc");
+ method_collinear, 5, 5, "cc"); // "iu");
// Bug in case #54 of "overlay_cases.hpp"
test_both<P, double>("c_bug1",
@@ -807,7 +810,7 @@ void test_all()
4, 3, 2, 3, 0, 3, // q
method_touch, 2, 3, "xx");
- // BSG 2012-05-26 to be decided what's the problem here and what it tests...
+ // BSG 2012-05-26 to be decided what's the problem here and what it tests...
// Anyway, test results are not filled out.
//test_both<P, double>("issue_buffer_mill",
// 5.1983614873206241 , 6.7259025813913107 , 5.0499999999999998 , 6.4291796067500622 , 5.1983614873206241 , 6.7259025813913107, // p
diff --git a/libs/geometry/test/algorithms/overlay/get_turn_info.vcproj b/libs/geometry/test/algorithms/overlay/get_turn_info.vcproj
deleted file mode 100644
index 22bf1d1bd7..0000000000
--- a/libs/geometry/test/algorithms/overlay/get_turn_info.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="get_turn_info"
- ProjectGUID="{8D98821A-5033-4616-9AF4-2AEAA42D8456}"
- RootNamespace="get_turn_info"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\get_turn_info"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\get_turn_info"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\get_turn_info.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/get_turns.cpp b/libs/geometry/test/algorithms/overlay/get_turns.cpp
index cfeb4ca07b..3a3ab36203 100644
--- a/libs/geometry/test/algorithms/overlay/get_turns.cpp
+++ b/libs/geometry/test/algorithms/overlay/get_turns.cpp
@@ -24,6 +24,7 @@
#include <boost/geometry/algorithms/correct.hpp>
#include <boost/geometry/algorithms/detail/overlay/get_turns.hpp>
+#include <boost/geometry/policies/robustness/get_rescale_policy.hpp>
#include <boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp>
@@ -33,7 +34,7 @@
#include <boost/geometry/io/wkt/write.hpp>
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
#include <algorithms/overlay/overlay_cases.hpp>
@@ -42,8 +43,8 @@
// To test that "get_turns" can be called using additional information
-template <typename P>
-struct my_turn_op : public bg::detail::overlay::turn_operation
+template <typename Point, typename SegmentRatio>
+struct my_turn_op : public bg::detail::overlay::turn_operation<SegmentRatio>
{
};
@@ -57,14 +58,23 @@ struct test_get_turns
std::size_t expected_count,
G1 const& g1, G2 const& g2, double precision)
{
- typedef bg::detail::overlay::turn_info
+ typedef typename bg::point_type<G2>::type point_type;
+ typedef typename bg::rescale_policy_type<point_type>::type
+ rescale_policy_type;
+
+ rescale_policy_type rescale_policy
+ = bg::get_rescale_policy<rescale_policy_type>(g1, g2);
+
+ typedef bg::detail::overlay::turn_info
<
- typename bg::point_type<G2>::type
+ point_type,
+ typename bg::segment_ratio_type<point_type, rescale_policy_type>::type
> turn_info;
std::vector<turn_info> turns;
+
bg::detail::get_turns::no_interrupt_policy policy;
- bg::get_turns<false, false, bg::detail::overlay::assign_null_policy>(g1, g2, turns, policy);
+ bg::get_turns<false, false, bg::detail::overlay::assign_null_policy>(g1, g2, rescale_policy, turns, policy);
BOOST_CHECK_MESSAGE(
expected_count == boost::size(turns),
@@ -133,7 +143,7 @@ struct test_get_turns
template<typename G1, typename G2>
struct test_get_turns
{
- inline static void apply(std::string const& id, std::size_t expected_count,
+ inline static void apply(std::string const& id, std::size_t expected_count,
std::string const& wkt1, std::string const& wkt2,
double precision = 0.001)
{
@@ -185,9 +195,6 @@ void test_all()
typedef bg::model::linestring<P> linestring;
typedef bg::model::box<P> box;
- // Expected count, average x, average y
- typedef boost::tuple<int> Tuple;
-
#ifdef BOOST_GEOMETRY_DEBUG_INTERSECTION
std::cout << string_from_type<T>::name() << std::endl;
#endif
@@ -234,7 +241,7 @@ void test_all()
test_get_turns<polygon, polygon>::apply("15", 2, case_15[0], case_15[1]);
test_get_turns<polygon, polygon>::apply("16", 4, case_16[0], case_16[1]);
test_get_turns<polygon, polygon>::apply("17", 2, case_17[0], case_17[1]);
- test_get_turns<polygon, polygon>::apply("18", 4, case_18[0], case_18[1]);
+ ///test_get_turns<polygon, polygon>::apply("18", 4, case_18[0], case_18[1]);
// 19-24
test_get_turns<polygon, polygon>::apply("19", 2, case_19[0], case_19[1]);
@@ -334,8 +341,6 @@ void test_ccw()
{
typedef bg::model::point<T, 2, bg::cs::cartesian> P;
typedef bg::model::polygon<P, false, true> polygon;
- typedef boost::tuple<int> Tuple;
-
test_get_turns<polygon, polygon>::apply("ccw_1",
6,
@@ -352,7 +357,6 @@ void test_open()
{
typedef bg::model::point<T, 2, bg::cs::cartesian> P;
typedef bg::model::polygon<P, true, false> polygon;
- typedef boost::tuple<int> Tuple;
test_get_turns<polygon, polygon>::apply("open_1",
6,
diff --git a/libs/geometry/test/algorithms/overlay/get_turns.vcproj b/libs/geometry/test/algorithms/overlay/get_turns.vcproj
deleted file mode 100644
index 8f1b41c0b3..0000000000
--- a/libs/geometry/test/algorithms/overlay/get_turns.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="get_turns"
- ProjectGUID="{B63116BF-0F0C-4374-A6CE-77061FBC34FF}"
- RootNamespace="get_turns"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\get_turns"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\get_turns"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\get_turns.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/get_turns_linear_areal.cpp b/libs/geometry/test/algorithms/overlay/get_turns_linear_areal.cpp
new file mode 100644
index 0000000000..202eb28ed7
--- /dev/null
+++ b/libs/geometry/test/algorithms/overlay/get_turns_linear_areal.cpp
@@ -0,0 +1,176 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// 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 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#include "test_get_turns.hpp"
+#include <boost/geometry/geometries/geometries.hpp>
+
+//TEST
+//#include "to_svg.hpp"
+
+template <typename T>
+void test_all()
+{
+ typedef bg::model::point<T, 2, bg::cs::cartesian> pt;
+ typedef bg::model::linestring<pt> ls;
+ typedef bg::model::polygon<pt> poly;
+
+ test_geometry<ls, poly>("LINESTRING(15 5,24 5,20 2,19 0,13 -4,1 0,10 0,13 3,15 7,16 10,10 10,8 10,4 6,2 8,1 10)",
+ "POLYGON((0 0,5 5,0 10,20 10,20 2,19 0,0 0)(10 3,15 3,15 7,10 7,10 3))",
+ expected("miu+")("iuu+")("tcc+")("tuu=")("mcu+")("mic=")("muu+")
+ ("tiu+")("mcu+")("mic=")("mcc+")("miu=")("mxu+"));
+
+ test_geometry<ls, poly>("LINESTRING(5 0,5 5,10 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "miu+", "mxu+");
+ test_geometry<ls, poly>("LINESTRING(0 0,5 5,10 0)", "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "tiu+", "txu+");
+ test_geometry<ls, poly>("LINESTRING(0 0,5 0,5 5,10 5,10 0)", "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ expected("tcu+")("mic=")("mcc+")("txu="));
+ test_geometry<ls, poly>("LINESTRING(10 0,5 0,5 5,10 5,10 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ expected("tcc+")("miu=")("mcu+")("txc="));
+
+ test_geometry<ls, poly>("LINESTRING(0 0,10 0,10 10)",
+ "POLYGON((0 0,5 5,0 10,20 10,20 2,19 0,0 0)(10 3,15 3,15 7,10 7,10 3))",
+ expected("tcu+")("mic=")("mcu+")("mic=")("mxu+"));
+
+ test_geometry<ls, poly>("LINESTRING(11 1,10 0,0 0)", "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "tcc+", "txu=");
+ test_geometry<ls, poly>("LINESTRING(0 0,10 0,11 1)", "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "tcu+", "tuc=");
+ test_geometry<ls, poly>("LINESTRING(10 0,0 0,-1 1)", "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "tcc+", "tuu=");
+
+ // true hole
+ test_geometry<ls, poly>("LINESTRING(9 1,10 5,9 9)",
+ "POLYGON((0 0,0 10,10 10,10 5,10 0,0 0)(2 2,10 5,2 8,2 2))",
+ expected("tiu+")("tiu+"));
+ test_geometry<ls, poly>("LINESTRING(10 1,10 5,10 9)",
+ "POLYGON((0 0,0 10,10 10,10 5,10 0,0 0)(2 2,10 5,2 8,2 2))",
+ expected("mcu+")("ecc=")("tiu+")("mxc="));
+
+ // fake hole
+ test_geometry<ls, poly>("LINESTRING(9 1,10 5,9 9)",
+ "POLYGON((0 0,0 10,10 10,10 5,2 8,2 2,10 5,10 0,0 0))",
+ expected("tuu+")("tiu+"));
+ test_geometry<ls, poly>("LINESTRING(10 1,10 5,10 9)",
+ "POLYGON((0 0,0 10,10 10,10 5,2 8,2 2,10 5,10 0,0 0))",
+ expected("mcu+")("tuc=")("tcu+")("mxc="));
+
+ // true hole
+ test_geometry<ls, poly>("LINESTRING(10 1,10 5,2 2)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5))",
+ expected("mcu+")("mic=")("tcu+")("txc="));
+ test_geometry<ls, poly>("LINESTRING(10 1,10 5,2 8)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5))",
+ expected("mcu+")("mic=")("tcc+")("txu="));
+
+ // SPIKE - NON-ENDPOINT - NON-OPPOSITE
+
+ // spike - neq eq
+ test_geometry<ls, poly>("LINESTRING(2 2,4 4,1 1)", "POLYGON((0 0,4 4,6 3,6 0,0 0))",
+ expected("mcc+")("txu=")("tcu=")("mxc="));
+ // spike - eq eq
+ test_geometry<ls, poly>("LINESTRING(0 0,4 4,1 1)", "POLYGON((0 0,4 4,6 3,6 0,0 0))",
+ expected("tcc+")("txu=")("tcu=")("mxc="));
+ // spike - eq neq
+ test_geometry<ls, poly>("LINESTRING(0 0,3 3,1 1)", "POLYGON((0 0,4 4,6 3,6 0,0 0))",
+ expected("tcc+")("mxu=")("mcu=")("mxc="));
+ // spike - neq neq
+ test_geometry<ls, poly>("LINESTRING(1 1,3 3,2 2)", "POLYGON((0 0,4 4,6 3,6 0,0 0))",
+ expected("mcc+")("mxu=")("mcu=")("mxc="));
+ // spike - out neq
+ test_geometry<ls, poly>("LINESTRING(0 0,3 3,2 2)", "POLYGON((1 1,4 4,6 3,6 0,1 1))",
+ expected("mcc+")("mxu=")("mcu=")("mxc="));
+ // spike - out eq
+ test_geometry<ls, poly>("LINESTRING(0 0,4 4,2 2)", "POLYGON((1 1,4 4,6 3,6 0,1 1))",
+ expected("mcc+")("txu=")("tcu=")("mxc="));
+ // spike - out out/eq
+ test_geometry<ls, poly>("LINESTRING(0 0,4 4,2 2)", "POLYGON((1 0,4 4,6 3,1 0))",
+ expected("tuu+"));
+ test_geometry<ls, poly>("LINESTRING(0 0,4 4,2 2)", "POLYGON((0 1,4 4,6 3,6 0,-1 -1,0 1))",
+ expected("tiu+"));
+ // spike - out out/neq
+ test_geometry<ls, poly>("LINESTRING(0 0,4 4,2 2)", "POLYGON((4 0,4 5,6 3,4 0))",
+ expected("muu+"));
+ test_geometry<ls, poly>("LINESTRING(0 0,4 4,2 2)", "POLYGON((0 4,5 4,6 3,6 0,-1 -1,0 4))",
+ expected("miu+"));
+
+ test_geometry<ls, poly>("LINESTRING(0 1,1 1,0 1)", "POLYGON((0 0,3 3,3 0,0 0))",
+ expected("muu+"));
+ test_geometry<ls, poly>("LINESTRING(0 1,3 3,0 1)", "POLYGON((0 0,3 3,3 0,0 0))",
+ expected("tuu+"));
+ test_geometry<ls, poly>("LINESTRING(0 1,0 0,0 1)", "POLYGON((0 0,3 3,3 0,0 0))",
+ expected("tuu+"));
+
+ // SPIKE - NON-ENDPOINT - OPPOSITE
+
+ // opposite - eq eq
+ test_geometry<ls, poly>("LINESTRING(6 6,4 4,0 0,2 2)", "POLYGON((-1 -1,0 0,4 4,6 3,-1 -1))",
+ expected("tcu+")("txc=")("tcc=")("mxu="));
+ // opposite - neq eq
+ test_geometry<ls, poly>("LINESTRING(6 6,4 4,0 0,2 2)", "POLYGON((-1 -1,0 0,5 5,6 3,-1 -1))",
+ expected("mcu+")("txc=")("tcc=")("mxu="));
+ // opposite - eq, neq
+ test_geometry<ls, poly>("LINESTRING(6 6,4 4,0 0,2 2)", "POLYGON((-2 -2,-1 -1,4 4,6 3,-2 -2))",
+ expected("tcu+")("mxc=")("mcc=")("mxu="));
+ // opposite - neq neq
+ test_geometry<ls, poly>("LINESTRING(6 6,4 4,0 0,2 2)", "POLYGON((-2 -2,-1 -1,3 3,6 3,-2 -2))",
+ expected("mcu+")("mxc=")("mcc=")("mxu="));
+ // opposite - neq neq
+ test_geometry<ls, poly>("LINESTRING(6 6,4 4,0 0,2 2)", "POLYGON((-2 -2,-1 -1,3 3,5 5,6 3,-2 -2))",
+ expected("mcu+")("mxc=")("mcc=")("mxu="));
+
+ // spike vs internal
+ test_geometry<ls, poly>("LINESTRING(0 1,1 1,0 1)", // --
+ "POLYGON((1 0,1 1,2 1,1 0))",
+ expected("tuu+"));
+ test_geometry<ls, poly>("LINESTRING(1 2,1 1,1 2)", // |
+ "POLYGON((1 0,1 1,2 1,1 0))",
+ expected("tuu+"));
+ test_geometry<ls, poly>("LINESTRING(0 2,1 1,0 2)",
+ "POLYGON((1 0,1 1,2 1,1 0))",
+ expected("tuu+"));
+ test_geometry<ls, poly>("LINESTRING(2 0,1 1,2 0)",
+ "POLYGON((1 0,1 1,2 1,2 0,1 0))",
+ expected("tiu+")("tiu+")("txu+")); // TODO: should spike point be duplicated?
+ test_geometry<ls, poly>("LINESTRING(0 0,1 1,0 0)", // /
+ "POLYGON((1 0,1 1,2 1,1 0))",
+ expected("tuu+"));
+ test_geometry<ls, poly>("LINESTRING(2 2,1 1,2 2)", // /
+ "POLYGON((1 0,1 1,2 1,1 0))",
+ expected("tuu+"));
+
+ test_geometry<ls, poly>("LINESTRING(2 1,1 1,2 1)",
+ "POLYGON((1 0,1 1,2 1,1 0))",
+ expected("tcu+")("txc=")("tcc=")("txu="));
+}
+
+int test_main(int, char* [])
+{
+ test_all<float>();
+ test_all<double>();
+
+#if ! defined(_MSC_VER)
+ test_all<long double>();
+#endif
+
+#if defined(HAVE_TTMATH)
+ test_all<ttmath_big>();
+#endif
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/overlay/get_turns_linear_linear.cpp b/libs/geometry/test/algorithms/overlay/get_turns_linear_linear.cpp
new file mode 100644
index 0000000000..5bb8c0a0dd
--- /dev/null
+++ b/libs/geometry/test/algorithms/overlay/get_turns_linear_linear.cpp
@@ -0,0 +1,530 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// 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 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#include "test_get_turns.hpp"
+#include <boost/geometry/geometries/geometries.hpp>
+
+//TEST
+//#include <to_svg.hpp>
+
+template <typename T>
+void test_all()
+{
+ typedef bg::model::point<T, 2, bg::cs::cartesian> pt;
+ typedef bg::model::linestring<pt> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+
+ // NOTE: currently for the first endpoint of the Linestring on collinear segment
+ // is_collinear flags are set to FALSE!
+ // E.g. in the first test tii++, NOT tii==
+
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(0 0,2 0)", "tii++", "txx==");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(2 0,0 0)", "tix+=", "txi=+");
+
+ test_geometry<ls, ls>("LINESTRING(1 0,1 1)", "LINESTRING(0 0,1 0,2 0)", "tuu++");
+ test_geometry<ls, ls>("LINESTRING(1 0,0 0)", "LINESTRING(0 0,1 0,2 0)", "txi=+", "tiu+=");
+ test_geometry<ls, ls>("LINESTRING(1 0,2 0)", "LINESTRING(0 0,1 0,2 0)", "tii++", "txx==");
+ test_geometry<ls, ls>("LINESTRING(1 1,1 0)", "LINESTRING(0 0,1 0,2 0)", "txu++");
+ test_geometry<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(0 0,1 0,2 0)", "tii++", "txu==");
+ test_geometry<ls, ls>("LINESTRING(2 0,1 0)", "LINESTRING(0 0,1 0,2 0)", "txi=+", "tix+=");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(1 0,1 1)", "tuu++");
+ test_geometry<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(1 0,0 0)", "tix+=", "tui=+");
+ test_geometry<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(1 0,2 0)", "tii++", "txx==");
+ test_geometry<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(1 1,1 0)", "tux++");
+ test_geometry<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(0 0,1 0)", "tii++", "tux==");
+ test_geometry<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(2 0,1 0)", "tix+=", "txi=+");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(1 1,1 0,3 0,3 1)", "mii++", "ccc==", "muu==");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(1 -1,1 0,3 0,3 -1)", "mii++", "ccc==", "muu==");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(3 1,3 0,1 0,1 1)", "miu+=", "mui=+");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(3 -1,3 0,1 0,1 -1)", "miu+=", "mui=+");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(2 1,2 0,4 0,4 1)", "tii++", "ccc==", "tuu==");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(2 -1,2 0,4 0,4 -1)", "tii++", "ccc==", "tuu==");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(4 1,4 0,2 0,2 1)", "tiu+=", "tui=+");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(4 -1,4 0,2 0,2 -1)", "tiu+=", "tui=+");
+
+ // same as above - TODO: reverse manually or automatically for all tests
+ /*test_geometry<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(1 1,1 0,2 0,3 0,3 1)", "mii", "ecc", "muu");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(1 -1,1 0,2 0,3 0,3 -1)", "mii", "ecc", "muu");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(3 1,3 0,2 0,1 0,1 1)", "miu", "ecc", "mui");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(3 -1,3 0,2 0,1 0,1 -1)", "miu", "ecc", "mui");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(2 1,2 0,3 0,4 0,4 1)", "tii", "ecc", "tuu");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(2 -1,2 0,3 0,4 0,4 -1)", "tii", "ecc", "tuu");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(4 1,4 0,3 0,2 0,2 1)", "tiu", "ecc", "tui");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(4 -1,4 0,3 0,2 0,2 -1)", "tiu", "ecc", "tui");*/
+
+ test_geometry<ls, ls>("LINESTRING(0 0,1 0,2 1,3 5,4 0)", "LINESTRING(1 0,2 1,3 5)", "tii++", "ecc==", "tux==");
+ test_geometry<ls, ls>("LINESTRING(0 0,1 0,2 1,3 5,4 0)", "LINESTRING(3 5,2 1,1 0)", "tix+=", "ecc==", "tui=+");
+ test_geometry<ls, ls>("LINESTRING(1 0,2 1,3 5)", "LINESTRING(0 0,1 0,2 1,3 5,4 0)", "txu==", "ecc==", "tii++");
+ test_geometry<ls, ls>("LINESTRING(3 5,2 1,1 0)", "LINESTRING(0 0,1 0,2 1,3 5,4 0)", "tiu+=", "ecc==", "txi=+");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,10 0)", "LINESTRING(-1 -1,1 0,10 0,20 -1)", "mii++", "txu==");
+ test_geometry<ls, ls>("LINESTRING(0 0,10 0)", "LINESTRING(20 -1,10 0,1 0,-1 -1)", "miu+=", "txi=+");
+ test_geometry<ls, ls>("LINESTRING(-1 -1,1 0,10 0,20 -1)", "LINESTRING(0 0,10 0)", "mii++", "tux==");
+ test_geometry<ls, ls>("LINESTRING(20 -1,10 0,1 0,-1 -1)", "LINESTRING(0 0,10 0)", "mui=+", "tix+=");
+
+ test_geometry<ls, ls>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)",
+ "LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)",
+ expected("tii++")("ecc==")("muu==")("mii++")("muu==")("mii++")("mux=="));
+ test_geometry<ls, ls>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)",
+ "LINESTRING(30 0,3 0,2.5 1,2 0,1 0,0 0,-1 -1)",
+ expected("tiu+=")("ecc==")("mui=+")("miu+=")("mui=+")("miu+=")("mui=+"));
+ test_geometry<ls, ls>("LINESTRING(31 0,15 0,10 5,5 5,4 0,1 0,0 0,-1 1)",
+ "LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)",
+ expected("tui=+")("ecc==")("miu+=")("mui=+")("miu+=")("mui=+")("mix+="));
+ test_geometry<ls, ls>("LINESTRING(31 0,15 0,10 5,5 5,4 0,1 0,0 0,-1 1)",
+ "LINESTRING(30 0,3 0,2.5 1,2 0,1 0,0 0,-1 -1)",
+ expected("tuu==")("ecc==")("mii++")("muu==")("mii++")("muu==")("mii++"));
+
+ test_geometry<ls, ls>("LINESTRING(-1 0,1 0,2 1,3 2)", "LINESTRING(4 5,3 2,1 0,0 0)", "mix+=", "txi=+", "ecc==");
+ test_geometry<ls, ls>("LINESTRING(4 5,3 2,1 0,0 0)", "LINESTRING(-1 0,1 0,2 1,3 2)", "mxi=+", "tix+=", "ecc==");
+
+ test_geometry<ls, ls>("LINESTRING(30 1,20 1,10 0,0 0)", "LINESTRING(1 1,2 0,3 1,20 1,25 1)", "mix+=", "tui=+", "muu++");
+ test_geometry<ls, ls>("LINESTRING(1 1,2 0,3 1,20 1,25 1)", "LINESTRING(30 1,20 1,10 0,0 0)", "mxi=+", "tiu+=", "muu++");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,30 0)", "LINESTRING(4 0,4 1,20 1,5 0,1 0)", "muu++", "mui=+", "mix+=");
+ test_geometry<ls, ls>("LINESTRING(4 0,4 1,20 1,5 0,1 0)", "LINESTRING(0 0,30 0)", "muu++", "miu+=", "mxi=+");
+
+ test_geometry<ls, ls>("LINESTRING(30 0,0 0)", "LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0)",
+ expected("mui=+")("miu+=")("mui=+")("mix+="));
+ test_geometry<ls, ls>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0)", "LINESTRING(30 0,0 0)",
+ expected("miu+=")("mui=+")("miu+=")("mxi=+"));
+
+ test_geometry<ls, ls>("LINESTRING(1 0,7 0,8 1)", "LINESTRING(0 0,10 0,10 10,4 -1)",
+ expected("mii++")("iuu++")("muu=="));
+ test_geometry<ls, ls>("LINESTRING(1 0,7 0,8 1)", "LINESTRING(0 0,10 0,10 10,5 0,4 1)",
+ expected("mii++")("muu++")("muu=="));
+
+ // non-collinear
+ test_geometry<ls, ls>("LINESTRING(0 1,0 0)", "LINESTRING(0 0,1 0,2 0)", "txu++");
+ test_geometry<ls, ls>("LINESTRING(0 1,0 0,1 1)", "LINESTRING(0 0,1 0,2 0)", "tuu++");
+ test_geometry<ls, ls>("LINESTRING(0 1,1 0,2 1)", "LINESTRING(0 0,1 0,2 0)", "tuu++");
+
+ // SPIKE - NON-ENDPOINT - NON-OPPOSITE
+
+ // spike - neq eq
+ test_geometry<ls, ls>("LINESTRING(2 2,4 4,1 1)", "LINESTRING(0 0,4 4,6 3)",
+ expected("mii++")("txu==")("tiu==")("mxi=+"));
+ // spike - eq eq
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,1 1)", "LINESTRING(0 0,4 4,6 3)",
+ expected("tii++")("txu==")("tiu==")("mxi=+"));
+ // spike - eq neq
+ test_geometry<ls, ls>("LINESTRING(0 0,3 3,1 1)", "LINESTRING(0 0,4 4,6 3)",
+ expected("tii++")("mxu==")("miu==")("mxi=+"));
+ // spike - neq neq
+ test_geometry<ls, ls>("LINESTRING(1 1,3 3,2 2)", "LINESTRING(0 0,4 4,6 3)",
+ expected("mii++")("mxu==")("miu==")("mxi=+"));
+ // spike - out neq
+ test_geometry<ls, ls>("LINESTRING(0 0,3 3,2 2)", "LINESTRING(1 1,4 4,6 3)",
+ expected("mii++")("mxu==")("miu==")("mxi=+"));
+ // spike - out eq
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,2 2)", "LINESTRING(1 1,4 4,6 3)",
+ expected("mii++")("txu==")("tiu==")("mxi=+"));
+ // spike - out out/eq
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,2 2)", "LINESTRING(1 0,4 4,6 3)",
+ expected("tuu++"));
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,2 2)", "LINESTRING(0 1,4 4,6 3)",
+ expected("tuu++"));
+ // spike - out out/neq
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,2 2)", "LINESTRING(4 0,4 5,6 3)",
+ expected("muu++"));
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,2 2)", "LINESTRING(0 4,5 4,6 3)",
+ expected("muu++"));
+
+ // SPIKE - NON-ENDPOINT - OPPOSITE
+
+ // opposite - eq eq
+ test_geometry<ls, ls>("LINESTRING(6 6,4 4,0 0,2 2)", "LINESTRING(-1 -1,0 0,4 4,6 3)",
+ expected("tiu+=")("txi=+")("tii=+")("mxu=="));
+ test_geometry<ls, ls>("LINESTRING(-1 -1,0 0,4 4,6 3)", "LINESTRING(6 6,4 4,0 0,2 2)",
+ expected("tui=+")("tix+=")("tii+=")("mux=="));
+ // opposite - neq eq
+ test_geometry<ls, ls>("LINESTRING(6 6,4 4,0 0,2 2)", "LINESTRING(-1 -1,0 0,5 5,6 3)",
+ expected("miu+=")("txi=+")("tii=+")("mxu=="));
+ // opposite - eq neq
+ test_geometry<ls, ls>("LINESTRING(6 6,4 4,0 0,2 2)", "LINESTRING(-2 -2,-1 -1,4 4,6 3)",
+ expected("tiu+=")("mxi=+")("mii=+")("mxu=="));
+ // opposite - neq neq
+ test_geometry<ls, ls>("LINESTRING(6 6,4 4,0 0,2 2)", "LINESTRING(-2 -2,-1 -1,3 3,6 3)",
+ expected("miu+=")("mxi=+")("mii=+")("mxu=="));
+ // opposite - neq neq
+ test_geometry<ls, ls>("LINESTRING(6 6,4 4,0 0,2 2)", "LINESTRING(-2 -2,-1 -1,3 3,5 5,6 3)",
+ expected("miu+=")("mxi=+")("mii=+")("mxu=="));
+ // opposite - neq eq
+ test_geometry<ls, ls>("LINESTRING(6 3,3 3,0 0)", "LINESTRING(0 0,2 2,3 3,1 1)",
+ expected("txi=+")("tix+=")("tii+=")("mux=="));
+
+ // SPIKE - ENDPOINT - NON-OPPOSITE
+
+ // spike - neq eq
+ test_geometry<ls, ls>("LINESTRING(2 2,4 4,1 1)", "LINESTRING(0 0,4 4)",
+ expected("mii++")("txx==")("tix==")("mxi=+"));
+ test_geometry<ls, ls>("LINESTRING(2 2,4 4,1 1)", "LINESTRING(4 4,0 0)",
+ expected("miu+=")("txi=+")("tii=+")("mxu=="));
+ // spike - eq eq
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,1 1)", "LINESTRING(0 0,4 4)",
+ expected("tii++")("txx==")("tix==")("mxi=+"));
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,1 1)", "LINESTRING(4 4,0 0)",
+ expected("tix+=")("txi=+")("tii=+")("mxu=="));
+ // spike - eq neq
+ test_geometry<ls, ls>("LINESTRING(0 0,3 3,1 1)", "LINESTRING(0 0,4 4)",
+ expected("tii++")("mxu==")("miu==")("mxi=+"));
+ test_geometry<ls, ls>("LINESTRING(0 0,3 3,1 1)", "LINESTRING(4 4,0 0)",
+ expected("tix+=")("mxi=+")("mii=+")("mxu=="));
+ // spike - neq neq
+ test_geometry<ls, ls>("LINESTRING(1 1,3 3,2 2)", "LINESTRING(0 0,4 4)",
+ expected("mii++")("mxu==")("miu==")("mxi=+"));
+ test_geometry<ls, ls>("LINESTRING(1 1,3 3,2 2)", "LINESTRING(4 4,0 0)",
+ expected("miu+=")("mxi=+")("mii=+")("mxu=="));
+ // spike - out neq
+ test_geometry<ls, ls>("LINESTRING(0 0,3 3,2 2)", "LINESTRING(1 1,4 4)",
+ expected("mii++")("mxu==")("miu==")("mxi=+"));
+ test_geometry<ls, ls>("LINESTRING(0 0,3 3,2 2)", "LINESTRING(4 4,1 1)",
+ expected("mix+=")("mxi=+")("mii=+")("mxu=="));
+ // spike - out eq
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,2 2)", "LINESTRING(1 1,4 4)",
+ expected("mii++")("txx==")("tix==")("mxi=+"));
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,2 2)", "LINESTRING(4 4,1 1)",
+ expected("mix+=")("txi=+")("tii=+")("mxu=="));
+ // spike - out out/eq
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,2 2)", "LINESTRING(1 0,4 4)",
+ expected("tux++"));
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,2 2)", "LINESTRING(0 1,4 4)",
+ expected("tux++"));
+ // spike - out out/neq
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,2 2)", "LINESTRING(4 0,4 5)",
+ expected("muu++"));
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,2 2)", "LINESTRING(0 4,5 4)",
+ expected("muu++"));
+
+ // TODO:
+ //test_geometry<ls, ls>("LINESTRING(0 0,2 0,1 0)", "LINESTRING(0 1,0 0,2 0)", "1FF00F102");
+ //test_geometry<ls, ls>("LINESTRING(2 0,0 0,1 0)", "LINESTRING(0 1,0 0,2 0)", "1FF00F102");
+
+ //test_geometry<ls, ls>("LINESTRING(0 0,3 3,1 1)", "LINESTRING(3 0,3 3,3 1)", "0F1FF0102");
+ //test_geometry<ls, ls>("LINESTRING(0 0,3 3,1 1)", "LINESTRING(2 0,2 3,2 1)", "0F1FF0102");
+ //test_geometry<ls, ls>("LINESTRING(0 0,3 3,1 1)", "LINESTRING(2 0,2 2,2 1)", "0F1FF0102");
+
+ //test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 3,4 4)", "LINESTRING(0 0,1 1,4 4)", "1FFF0FFF2");
+
+
+ //if ( boost::is_same<T, double>::value )
+ //{
+ // to_svg<ls, ls>("LINESTRING(0 0,1 0,2 0,2.5 0,3 1)", "LINESTRING(0 0,2 0,2.5 0,3 1)", "test11.svg");
+ // to_svg<ls, ls>("LINESTRING(0 0,1 0,2 0,2.5 0,3 1)", "LINESTRING(3 1,2.5 0,2 0,0 0)", "test12.svg");
+ // to_svg<ls, ls>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,30 0,31 1)", "LINESTRING(30 0,3 0,2.5 1,2 0,1 0,0 0,-1 -1)", "test21.svg");
+ // to_svg<ls, ls>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,30 0,31 1)", "LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)", "test22.svg");
+
+ // to_svg<ls, ls>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)", "LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)", "test31.svg");
+ // to_svg<ls, ls>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)", "LINESTRING(30 0,3 0,2.5 1,2 0,1 0,0 0,-1 -1)", "test32.svg");
+ // to_svg<ls, ls>("LINESTRING(31 0,15 0,10 5,5 5,4 0,1 0,0 0,-1 1)", "LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)", "test33.svg");
+ // to_svg<ls, ls>("LINESTRING(31 0,15 0,10 5,5 5,4 0,1 0,0 0,-1 1)", "LINESTRING(30 0,3 0,2.5 1,2 0,1 0,0 0,-1 -1)", "test34.svg");
+ //}
+
+ // duplicated
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,10 0,30 0))",
+ "MULTILINESTRING((0 10,5 0,20 0,20 0,30 0),(2 0,2 0),(3 0,3 0,3 0))",
+ expected("mii++")("ccc==")("ccc==")("txx=="));
+
+ // spike
+ test_geometry<ls, ls>("LINESTRING(2 2,5 -1,15 2,18 0,20 0)",
+ "LINESTRING(30 0,19 0,18 0,0 0)",
+ expected("iuu++")("iuu++")("tiu+=")("mxi=+"));
+ // spike
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,10 0,5 0))",
+ "MULTILINESTRING((1 0,8 0,4 0))",
+ expected("mii++")("mix+=")("mux==")("mui==")("mix+=")("mii+=")("mxu==")("mxi=+"));
+
+ /*test_geometry<mls, mls>("MULTILINESTRING((0 0,10 0,5 0))",
+ "MULTILINESTRING((1 0,8 0,4 0),(2 0,9 0,5 0))",
+ expected("mii")("ccc")("ccc")("txx"));*/
+
+ // spike vs endpoint
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,10 0))",
+ "MULTILINESTRING((-1 0,0 0,-2 0),(11 0,10 0,12 0))",
+ expected("tuu++")("txu++"));
+ // internal turning R vs spike
+ test_geometry<mls, mls>("MULTILINESTRING((1 0,1 1,2 1))",
+ "MULTILINESTRING((0 1,1 1,0 1))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((1 0,1 1,2 1))",
+ "MULTILINESTRING((1 2,1 1,1 2))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,1 0,0 0))",
+ "MULTILINESTRING((2 0,1 0,2 0))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((1 0,1 1,2 1))",
+ "MULTILINESTRING((0 2,1 1,0 2))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((1 0,1 1,2 1))",
+ "MULTILINESTRING((2 0,1 1,2 0))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((1 0,1 1,2 1))",
+ "MULTILINESTRING((2 1,1 1,2 1))",
+ expected("txi=+")("tix+=")("tii+=")("txx=="));
+ // internal turning L vs spike
+ test_geometry<mls, mls>("MULTILINESTRING((1 0,1 1,0 1))",
+ "MULTILINESTRING((2 1,1 1,2 1))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((1 0,1 1,0 1))",
+ "MULTILINESTRING((1 2,1 1,1 2))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((1 0,1 1,0 1))",
+ "MULTILINESTRING((2 2,1 1,2 2))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((1 0,1 1,0 1))",
+ "MULTILINESTRING((0 0,1 1,0 0))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((1 0,1 1,0 1))",
+ "MULTILINESTRING((0 1,1 1,0 1))",
+ expected("txi=+")("tix+=")("tii+=")("txx=="));
+ // spike vs internal turning R
+ test_geometry<mls, mls>("MULTILINESTRING((0 1,1 1,0 1))",
+ "MULTILINESTRING((1 0,1 1,2 1))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((1 2,1 1,1 2))",
+ "MULTILINESTRING((1 0,1 1,2 1))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((2 0,1 0,2 0))",
+ "MULTILINESTRING((0 0,1 0,0 0))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((0 2,1 1,0 2))",
+ "MULTILINESTRING((1 0,1 1,2 1))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((2 0,1 1,2 0))",
+ "MULTILINESTRING((1 0,1 1,2 1))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((2 1,1 1,2 1))",
+ "MULTILINESTRING((1 0,1 1,2 1))",
+ expected("tix+=")("txi=+")("tii=+")("txx=="));
+ // spike vs internal turning L
+ test_geometry<mls, mls>("MULTILINESTRING((2 1,1 1,2 1))",
+ "MULTILINESTRING((1 0,1 1,0 1))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((1 2,1 1,1 2))",
+ "MULTILINESTRING((1 0,1 1,0 1))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((2 2,1 1,2 2))",
+ "MULTILINESTRING((1 0,1 1,0 1))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,1 1,0 0))",
+ "MULTILINESTRING((1 0,1 1,0 1))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((0 1,1 1,0 1))",
+ "MULTILINESTRING((1 0,1 1,0 1))",
+ expected("tix+=")("txi=+")("tii=+")("txx=="));
+ // spike vs internal collinear
+ test_geometry<mls, mls>("MULTILINESTRING((0 1,1 1,0 1))",
+ "MULTILINESTRING((2 1,1 1,0 1))",
+ expected("tix+=")("txi=+")("tii=+")("txx=="));
+ // internal collinear vs spike
+ test_geometry<mls, mls>("MULTILINESTRING((2 1,1 1,0 1))",
+ "MULTILINESTRING((0 1,1 1,0 1))",
+ expected("txi=+")("tix+=")("tii+=")("txx=="));
+ // spike vs spike
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,1 1,0 0))",
+ "MULTILINESTRING((2 2,1 1,2 2))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,1 1,0 0))",
+ "MULTILINESTRING((2 0,1 1,2 0))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,1 1,0 0))",
+ "MULTILINESTRING((2 1,1 1,2 1))",
+ expected("tuu++"));
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,1 1,0 0))",
+ "MULTILINESTRING((0 1,1 1,0 1))",
+ expected("tuu++"));
+ // collinear spikes
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,1 1,0 0))",
+ "MULTILINESTRING((0 0,1 1,0 0))",
+ expected("tii++")("tix+=")("txi=+")("txx==")
+ ("ecc=="));
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,1 1,0 0))",
+ "MULTILINESTRING((1 1,0 0,1 1))",
+ expected("tix+=")("tii+=")("txx==")("txi==")
+ ("txi=+")("tii=+")("txx==")("tix=="));
+ // non-spike similar
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,10 0))",
+ "MULTILINESTRING((-1 0,0 0,2 0))",
+ expected("tii++")("mux=="));
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,10 0))",
+ "MULTILINESTRING((-1 -1,0 0,2 0))",
+ expected("tii++")("mux=="));
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,10 0))",
+ "MULTILINESTRING((2 0,0 0,-1 0))",
+ expected("tiu+=")("mui=+"));
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,10 0))",
+ "MULTILINESTRING((2 0,0 0,-1 -1))",
+ expected("tiu+=")("mui=+"));
+}
+
+int test_main(int, char* [])
+{
+ test_all<float>();
+ test_all<double>();
+
+#if ! defined(_MSC_VER)
+ test_all<long double>();
+#endif
+
+#if defined(HAVE_TTMATH)
+ test_all<ttmath_big>();
+#endif
+ return 0;
+}
+
+/*
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(1 0,3 0)", "lsls0000.svg");
+to_svg<ls, ls>("LINESTRING(1 0,3 0)", "LINESTRING(2 0,0 0)", "lsls0001.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(3 0,1 0)", "lsls0002.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(1 0,2 0)", "lsls0003.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(2 0,1 0)", "lsls0004.svg");
+to_svg<ls, ls>("LINESTRING(1 0,2 0)", "LINESTRING(1 0,0 0)", "lsls0005.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(0 0,2 0)", "lsls0006.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(2 0,0 0)", "lsls0007.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,3 0)", "LINESTRING(1 0,2 0)", "lsls0008.svg");
+to_svg<ls, ls>("LINESTRING(0 0,3 0)", "LINESTRING(2 0,1 0)", "lsls0009.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(1 0,1 1)", "lsls00010.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(1 1,1 0)", "lsls00011.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(0 0,0 1)", "lsls00012.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(0 1,0 0)", "lsls00013.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(1 0,1 1)", "lsls00014.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(1 1,1 0)", "lsls00015.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(1 0,3 1)", "lsls00016.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(2 0,1 0)", "lsls00017.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(0 0,1 0)", "lsls00018.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(1 0,0 0)", "lsls00019.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(1 0,2 0)", "lsls00020.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,2 0)", "LINESTRING(0 0,2 0)", "lsls000.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,2 0,3 0)", "LINESTRING(0 0,2 0)", "lsls001.svg");
+to_svg<ls, ls>("LINESTRING(1 0,1 1)", "LINESTRING(0 0,1 0,2 0)", "lsls0020.svg");
+to_svg<ls, ls>("LINESTRING(1 0,0 0)", "LINESTRING(0 0,1 0,2 0)", "lsls0021.svg");
+to_svg<ls, ls>("LINESTRING(1 0,2 0)", "LINESTRING(0 0,1 0,2 0)", "lsls0022.svg");
+to_svg<ls, ls>("LINESTRING(1 1,1 0)", "LINESTRING(0 0,1 0,2 0)", "lsls0023.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(0 0,1 0,2 0)", "lsls0024.svg");
+to_svg<ls, ls>("LINESTRING(2 0,1 0)", "LINESTRING(0 0,1 0,2 0)", "lsls0025.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(1 0,1 1)", "lsls00200.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(1 0,0 0)", "lsls00211.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(1 0,2 0)", "lsls00222.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(1 1,1 0)", "lsls00233.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(0 0,1 0)", "lsls00244.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0,2 0)", "LINESTRING(2 0,1 0)", "lsls00255.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0,6 0,8 0)", "LINESTRING(1 0,3 0,5 0,6 0,9 0)", "lsls01.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0,4 4)", "LINESTRING(1 0,3 0,4 0,4 2,4 5)", "lsls02.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0,4 4)", "LINESTRING(1 0,4 0,4 4)", "lsls031.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0,4 4)", "LINESTRING(4 0,2 0,0 0)", "lsls032.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0,4 4)", "LINESTRING(4 0,2 2,0 2)", "lsls0321.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0,4 4)", "LINESTRING(4 0,2 0)", "lsls033.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0,4 4)", "LINESTRING(4 0,4 4)", "lsls034.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0,4 4)", "LINESTRING(4 0,3 1)", "lsls035.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0,4 4)", "LINESTRING(4 0,4 -1)", "lsls036.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0,4 4)", "LINESTRING(1 0,4 0,4 3)", "lsls04.svg");
+to_svg<ls, ls>("LINESTRING(1 0,2 0,4 0,6 0,8 0)", "LINESTRING(0 0,3 0,5 0,6 0,9 0)", "lsls05.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10)", "LINESTRING(1 0,10 9)", "lsls061.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10)", "LINESTRING(1 0,10 -9)", "lsls062.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10)", "LINESTRING(1 0,-10 9)", "lsls063.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10)", "LINESTRING(1 0,-10 -9)", "lsls064.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0,10 9,10 10)", "LINESTRING(1 0,10 9)", "lsls065.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10)", "LINESTRING(1 0,9 9)", "lsls071.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10)", "LINESTRING(1 0,9 -9)", "lsls072.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10)", "LINESTRING(1 0,-9 9)", "lsls073.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10)", "LINESTRING(1 0,-9 -9)", "lsls074.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0,10 0,10 10)", "LINESTRING(1 0,9 9)", "lsls081.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0,10 0,10 10)", "LINESTRING(0 0,9 9)", "lsls082.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(1 0,9 9)", "lsls083.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(9 9,1 0)", "lsls084.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(1 0,2 0)", "lsls085.svg");
+to_svg<ls, ls>("LINESTRING(0 0,1 0)", "LINESTRING(2 0,1 0)", "lsls086.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10)", "LINESTRING(1 1,10 5)", "lsls091.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 5,10 10)", "LINESTRING(1 1,10 5)", "lsls092.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10)", "LINESTRING(19 1,10 5)", "lsls093.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 5,10 10)", "LINESTRING(19 1,10 5)", "lsls094.svg");
+
+to_svg<ls, ls>("LINESTRING(5 3,1 1,3 3,2 2,0 0)", "LINESTRING(0 0,3 3,6 3)", "1F100F10T.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(1 1,1 0,3 0,3 1)", "lsls_01.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(1 -1,1 0,3 0,3 -1)", "lsls_02.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(3 1,3 0,1 0,1 1)", "lsls_03.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(3 -1,3 0,1 0,1 -1)", "lsls_04.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(2 1,2 0,4 0,4 1)", "lsls_05.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(2 -1,2 0,4 0,4 -1)", "lsls_06.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(4 1,4 0,2 0,2 1)", "lsls_07.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(4 -1,4 0,2 0,2 -1)", "lsls_08.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(1 1,1 0,2 0,3 0,3 1)", "lsls_11.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(1 -1,1 0,2 0,3 0,3 -1)", "lsls_12.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(3 1,3 0,2 0,1 0,1 1)", "lsls_13.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,4 0)", "LINESTRING(3 -1,3 0,2 0,1 0,1 -1)", "lsls_14.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(2 1,2 0,3 0,4 0,4 1)", "lsls_15.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(2 -1,2 0,3 0,4 0,4 -1)", "lsls_16.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(4 1,4 0,3 0,2 0,2 1)", "lsls_17.svg");
+to_svg<ls, ls>("LINESTRING(0 0,2 0,3 0,4 0,6 0)", "LINESTRING(4 -1,4 0,3 0,2 0,2 -1)", "lsls_18.svg");
+
+to_svg<ls, ls>("LINESTRING(0 5,5 5,10 5,10 10,5 10,5 5,5 0)", "LINESTRING(0 5,5 5,5 10,10 10,10 5,5 5,5 0)", "lsls11.svg");
+to_svg<ls, ls>("LINESTRING(0 5,5 5,10 5,10 10,5 10,5 5,5 0)", "LINESTRING(5 0,5 5,10 5,10 10,5 10,5 5,0 5)", "lsls12.svg");
+to_svg<ls, ls>("LINESTRING(5 0,5 5,5 10,10 10,10 5,5 5,0 5)", "LINESTRING(0 5,5 5,5 10,10 10,10 5,5 5,5 0)", "lsls13.svg");
+to_svg<ls, ls>("LINESTRING(5 0,5 5,5 10,10 10,10 5,5 5,0 5)", "LINESTRING(5 0,5 5,10 5,10 10,5 10,5 5,0 5)", "lsls14.svg");
+
+to_svg<ls, ls>("LINESTRING(0 5,10 5,10 10,5 10,5 0)", "LINESTRING(0 5,5 5,5 10,10 10,10 5,5 5,5 0)", "lsls15.svg");
+to_svg<ls, ls>("LINESTRING(0 5,10 5,10 10,5 10,5 0)", "LINESTRING(5 0,5 10,10 10,10 5,0 5)", "lsls16.svg");
+to_svg<ls, ls>("LINESTRING(0 5,10 5)", "LINESTRING(5 0,5 10,10 10,10 5,0 5)", "lsls161.svg");
+to_svg<ls, ls>("LINESTRING(0 5,8 5,10 5)", "LINESTRING(5 0,5 10,10 10,10 5,0 5)", "lsls162.svg");
+to_svg<ls, ls>("LINESTRING(0 5,8 5)", "LINESTRING(5 0,5 10,10 10,10 5,0 5)", "lsls1631.svg");
+to_svg<ls, ls>("LINESTRING(0 5,1 5,7 5,8 5)", "LINESTRING(5 0,5 10,10 10,10 5,0 5)", "lsls1632.svg");
+to_svg<ls, ls>("LINESTRING(0 5,1 5,7 5,8 5)", "LINESTRING(5 10,10 10,10 5,0 5)", "lsls1633.svg");
+to_svg<ls, ls>("LINESTRING(0 5,8 4)", "LINESTRING(5 0,5 10,10 10,10 5,0 5)", "lsls1641.svg");
+to_svg<ls, ls>("LINESTRING(0 5,8 6)", "LINESTRING(5 0,5 10,10 10,10 5,0 5)", "lsls1642.svg");
+to_svg<ls, ls>("LINESTRING(1 5,8 4)", "LINESTRING(5 0,5 10,10 10,10 5,0 5)", "lsls1643.svg");
+to_svg<ls, ls>("LINESTRING(1 5,8 5)", "LINESTRING(5 0,5 10,10 10,10 5,0 5)", "lsls1644.svg");
+to_svg<ls, ls>("LINESTRING(0 5,5 5,8 4)", "LINESTRING(5 0,5 10,10 10,10 5,0 5)", "lsls165.svg");
+to_svg<ls, ls>("LINESTRING(0 5,5 5,8 5)", "LINESTRING(5 0,5 10,10 10,10 5,0 5)", "lsls166.svg");
+to_svg<ls, ls>("LINESTRING(0 5,5 5,8 5)", "LINESTRING(0 10,10 0,5 0,5 10,10 10,10 5,0 5)", "lsls167.svg");
+to_svg<ls, ls>("LINESTRING(0 5,5 5,8 5)", "LINESTRING(0 10,5 5,10 0,5 0,5 5,5 10,10 10,10 5,0 5)", "lsls168.svg");
+
+to_svg<ls, ls>("LINESTRING(0 0,0 10,10 10,10 0,0 0)", "LINESTRING(0 2,0 0,10 0,10 10,0 10,0 8,0 2)", "lsls1690.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10,0 10,0 0)", "LINESTRING(0 8,0 0,10 0,10 10,0 10,0 8)", "lsls1691.svg");
+to_svg<ls, ls>("LINESTRING(0 0,10 0,10 10,0 10,0 0)", "LINESTRING(0 2,0 0,10 0,10 10,0 10,0 8)", "lsls1692.svg");
+to_svg<ls, ls>("LINESTRING(0 0,0 10,10 10,10 0,0 0)", "LINESTRING(0 2,0 0,10 0,10 10,0 10,0 8)", "lsls1693.svg");
+to_svg<ls, ls>("LINESTRING(0 2,0 0,10 0,10 10,0 10,0 8)", "LINESTRING(0 0,10 0,10 10,0 10,0 0)", "lsls1694.svg");
+to_svg<ls, ls>("LINESTRING(0 2,0 0,10 0,10 10,0 10,0 8)", "LINESTRING(0 0,0 10,10 10,10 0,0 0)", "lsls1695.svg");
+
+to_svg<ls>("LINESTRING(0 8,0 0,10 0,10 10,0 10,0 2)", "ls1.svg");
+to_svg<ls>("LINESTRING(8 8,0 0,10 0,10 10,0 10,8 2)", "ls2.svg");
+
+typedef bg::model::multi_linestring<ls> mls;
+to_svg<ls, mls>("LINESTRING(0 5,10 5,10 10,5 10,5 0)", "MULTILINESTRING((5 0,5 7),(5 8,5 10,10 10,10 5,0 5))", "lsls17.svg");
+to_svg<ls, mls>("LINESTRING(0 5,10 5,10 10,5 10,5 0)", "MULTILINESTRING((5 0,5 4,5 6,5 7),(5 8,5 10,10 10,10 5,0 5))", "lsls18.svg");
+to_svg<ls, mls>("LINESTRING(0 5,10 5,10 10,5 10,5 0)", "MULTILINESTRING((5 0,5 8),(5 7,5 10,10 10,10 5,0 5))", "lsls19.svg");
+to_svg<mls, ls>("MULTILINESTRING((5 0,5 7),(5 8,5 10,10 10,10 5,0 5))", "LINESTRING(0 5,10 5,10 10,5 10,5 0)", "lsls20.svg");
+to_svg<mls, ls>("MULTILINESTRING((5 0,5 8),(5 7,5 10,10 10,10 5,0 5))", "LINESTRING(0 5,10 5,10 10,5 10,5 0)", "lsls21.svg");
+
+to_svg<ls, ls>("LINESTRING(0 5,5 5,10 5,10 10,5 10,5 5,5 0)", "LINESTRING(0 5,5 5,0 10,10 10,10 5,5 5,5 0)", "lsls100.svg");
+
+to_svg<ls, ls>("LINESTRING(5 0,5 5,5 0)", "LINESTRING(0 5,5 5,0 10,2 10,5 5,5 10,10 10,10 5,5 5,10 2,10 0,8 0,5 5,5 0)", "lsls101.svg");
+*/
diff --git a/libs/geometry/test/algorithms/overlay/merge_intersection_points.vcproj b/libs/geometry/test/algorithms/overlay/merge_intersection_points.vcproj
deleted file mode 100644
index 00afc97f98..0000000000
--- a/libs/geometry/test/algorithms/overlay/merge_intersection_points.vcproj
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="merge_intersection_points"
- ProjectGUID="{EB8223BB-6989-4AC8-A72E-4E076FE04547}"
- RootNamespace="merge_intersection_points"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\merge_intersection_points"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\merge_intersection_points"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\merge_intersection_points.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/overlay.sln b/libs/geometry/test/algorithms/overlay/overlay.sln
deleted file mode 100644
index 9bbaff6f2c..0000000000
--- a/libs/geometry/test/algorithms/overlay/overlay.sln
+++ /dev/null
@@ -1,61 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "traverse", "traverse.vcproj", "{6260214E-DB6F-4934-ADF7-DD2B1666171B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "self_intersection_points", "self_intersection_points.vcproj", "{06B6DCBB-AEDA-49FA-81D9-EA8959958EFC}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "get_turn_info", "get_turn_info.vcproj", "{8D98821A-5033-4616-9AF4-2AEAA42D8456}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "get_turns", "get_turns.vcproj", "{B63116BF-0F0C-4374-A6CE-77061FBC34FF}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "relative_order", "relative_order.vcproj", "{4C012342-116A-4E5E-9869-90389D5BBEBD}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "assemble", "assemble.vcproj", "{306E829F-ACEC-42D5-B1D4-2531B2F56EA3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ccw_traverse", "ccw_traverse.vcproj", "{BA789719-B2FC-405A-9258-E9E4ABCE1791}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select_rings", "select_rings.vcproj", "{029117F7-1D6A-4A05-9FB7-93E09751C909}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6260214E-DB6F-4934-ADF7-DD2B1666171B}.Debug|Win32.ActiveCfg = Debug|Win32
- {6260214E-DB6F-4934-ADF7-DD2B1666171B}.Debug|Win32.Build.0 = Debug|Win32
- {6260214E-DB6F-4934-ADF7-DD2B1666171B}.Release|Win32.ActiveCfg = Release|Win32
- {6260214E-DB6F-4934-ADF7-DD2B1666171B}.Release|Win32.Build.0 = Release|Win32
- {06B6DCBB-AEDA-49FA-81D9-EA8959958EFC}.Debug|Win32.ActiveCfg = Debug|Win32
- {06B6DCBB-AEDA-49FA-81D9-EA8959958EFC}.Debug|Win32.Build.0 = Debug|Win32
- {06B6DCBB-AEDA-49FA-81D9-EA8959958EFC}.Release|Win32.ActiveCfg = Release|Win32
- {06B6DCBB-AEDA-49FA-81D9-EA8959958EFC}.Release|Win32.Build.0 = Release|Win32
- {8D98821A-5033-4616-9AF4-2AEAA42D8456}.Debug|Win32.ActiveCfg = Debug|Win32
- {8D98821A-5033-4616-9AF4-2AEAA42D8456}.Debug|Win32.Build.0 = Debug|Win32
- {8D98821A-5033-4616-9AF4-2AEAA42D8456}.Release|Win32.ActiveCfg = Release|Win32
- {8D98821A-5033-4616-9AF4-2AEAA42D8456}.Release|Win32.Build.0 = Release|Win32
- {B63116BF-0F0C-4374-A6CE-77061FBC34FF}.Debug|Win32.ActiveCfg = Debug|Win32
- {B63116BF-0F0C-4374-A6CE-77061FBC34FF}.Debug|Win32.Build.0 = Debug|Win32
- {B63116BF-0F0C-4374-A6CE-77061FBC34FF}.Release|Win32.ActiveCfg = Release|Win32
- {B63116BF-0F0C-4374-A6CE-77061FBC34FF}.Release|Win32.Build.0 = Release|Win32
- {4C012342-116A-4E5E-9869-90389D5BBEBD}.Debug|Win32.ActiveCfg = Debug|Win32
- {4C012342-116A-4E5E-9869-90389D5BBEBD}.Debug|Win32.Build.0 = Debug|Win32
- {4C012342-116A-4E5E-9869-90389D5BBEBD}.Release|Win32.ActiveCfg = Release|Win32
- {4C012342-116A-4E5E-9869-90389D5BBEBD}.Release|Win32.Build.0 = Release|Win32
- {306E829F-ACEC-42D5-B1D4-2531B2F56EA3}.Debug|Win32.ActiveCfg = Debug|Win32
- {306E829F-ACEC-42D5-B1D4-2531B2F56EA3}.Debug|Win32.Build.0 = Debug|Win32
- {306E829F-ACEC-42D5-B1D4-2531B2F56EA3}.Release|Win32.ActiveCfg = Release|Win32
- {306E829F-ACEC-42D5-B1D4-2531B2F56EA3}.Release|Win32.Build.0 = Release|Win32
- {BA789719-B2FC-405A-9258-E9E4ABCE1791}.Debug|Win32.ActiveCfg = Debug|Win32
- {BA789719-B2FC-405A-9258-E9E4ABCE1791}.Debug|Win32.Build.0 = Debug|Win32
- {BA789719-B2FC-405A-9258-E9E4ABCE1791}.Release|Win32.ActiveCfg = Release|Win32
- {BA789719-B2FC-405A-9258-E9E4ABCE1791}.Release|Win32.Build.0 = Release|Win32
- {029117F7-1D6A-4A05-9FB7-93E09751C909}.Debug|Win32.ActiveCfg = Debug|Win32
- {029117F7-1D6A-4A05-9FB7-93E09751C909}.Debug|Win32.Build.0 = Debug|Win32
- {029117F7-1D6A-4A05-9FB7-93E09751C909}.Release|Win32.ActiveCfg = Release|Win32
- {029117F7-1D6A-4A05-9FB7-93E09751C909}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/algorithms/overlay/overlay_cases.hpp b/libs/geometry/test/algorithms/overlay/overlay_cases.hpp
index a4326b07ba..9951f7d701 100644
--- a/libs/geometry/test/algorithms/overlay/overlay_cases.hpp
+++ b/libs/geometry/test/algorithms/overlay/overlay_cases.hpp
@@ -360,6 +360,9 @@ static std::string collinear_overlaps[2] = {
"POLYGON((0 2,0 4,2 4,2 5,0 5,0 7,2 7,2 8,6 8,6 7,8 7,8 5,6 5,6 4,8 4,8 2,6 2,6 1,2 1,2 2,0 2))",
"POLYGON((3 0,3 2,1 2,1 3,3 3,3 4,1 4,1 5,3 5,3 6,1 6,1 7,3 7,3 9,5 9,5 7,7 7,7 6,5 6,5 5,7 5,7 4,5 4,5 3,7 3,7 2,5 2,5 0,3 0))" };
+static std::string simplex_spike[2] = {
+ "POLYGON((0 1,2 5,5 3,0 1))",
+ "POLYGON((4 0,0 3,4 5,4 2,6 5,4 2,4 0))" };
static std::string line_line1[2] = {
"LINESTRING(0 1,2 5,5 3)", "LINESTRING(3 0,0 3,4 5)"};
@@ -387,6 +390,11 @@ static std::string pie_16_2_15_0[2] = {
"POLYGON((2500 2500,1704 1704,1525 1937,2500 2500))"
};
+static std::string pie_2_3_23_0[2] =
+{
+ "POLYGON((2500 2500,2855 3828,2500 3875,2500 2500))",
+ "POLYGON((2500 2500,2791 3586,2499 3625,2208 3586,2500 2500))"
+};
// Shifted pies
static std::string pie_20_20_7_100[2] = {
@@ -492,14 +500,14 @@ static std::string ggl_list_20110306_javier[2] =
"POLYGON((-2 2,2002 2,2002 -2002,-2 -2002,-2 2),(0 -147.00000000000003,0 -2000,2000 -2000,2000 0,104 0,440 -240,400 -280,0 -147.00000000000003))",
"POLYGON((359.99000000000001 -280,0 -182,0 -147,400.00999999999999 -280,359.99000000000001 -280))"
};
-
+
static std::string ggl_list_20110307_javier[2] =
{
"POLYGON((-2 2, 1842 2, 1842 -2362, -2 -2362, -2 2), (0 0, 0 -2360, 1840 -2360, 1840 0, 0 0))",
// "POLYGON((-0.01 -1960, 0 -1960, 0 -1880, 0.01 -1960, -0.01 -1960))"
"POLYGON ((-0.01 -1960, 80.01 -1960, 0 -1880, -0.01 -1960))"
};
-
+
static std::string ggl_list_20110627_phillip[2] =
{
@@ -517,16 +525,34 @@ static std::string ggl_list_20110716_enrico[2] =
// Send on ggl-list by Christoph/Angus at 2011-08-19/20
// This polygon combination fails to union in <float> but do in <double> or <ttmath>
// It had previosly an error which has been fixed at 2011-08-30
-static std::string ggl_list_20110820_christophe[2] =
+static std::string ggl_list_20110820_christophe[2] =
{
"POLYGON((17.763942722600319 32.23605727739968,19.192448808558737 30.807551191441263,16.000000000000000 30.000000000000000,17.763942722600319 32.236057277399681))",
- "POLYGON((0.24806946917841693 26.015444246572663,31.751930530821582 33.984555753427337,32.248069469178418 30.015444246572663,0.24806946917841693 26.015444246572663))"
+ "POLYGON((0.24806946917841693 26.015444246572663,31.751930530821582 33.984555753427337,32.248069469178418 30.015444246572663,0.24806946917841693 26.015444246572663))"
};
+static std::string ggl_list_20131119_james[2] =
+{
+ "POLYGON((7 8,6.42705 6.23664,4.92705 5.14683,3.07295 5.14683,1.57295 6.23664,1 8,1.57295 9.76336,3.07295 10.8532,4.92705 10.8532,6.42705 9.76336,7 8))",
+ "POLYGON((4 4,4 8,12 8,12 4,4 4))"
+};
+
+static std::string ggl_list_20140223_shalabuda[2] =
+{
+ "POLYGON((-7.1621621621621605058294335322 43.228378378378366164724866394, -4.52438675915238786018335304107 30.5670564439314631499655661173, -4.16280147451538873326626344351 27.5407467090450168711868172977, -6.19047619047618891130468909978 36.7666666666666515084216371179, -7.1621621621621605058294335322 43.228378378378366164724866394))",
+ "POLYGON((-8.16216216216216139400785323232 49.8783783783783789544941100758, -3.16280147451538873326626344351 44.228378378378366164724866394, 1 -10.5499999999999971578290569596, -1 2.25, -8.16216216216216139400785323232 49.8783783783783789544941100758))",
+};
+
+
+static std::string ggl_list_20140321_7415963[2] =
+{
+ "POLYGON((-6.0 3.2500000000000013, -9.0 3.2500000000000022, -9.0 6.5, -6.0 6.5, -6.0 3.2500000000000013))",
+ "POLYGON((-3.0 0.0, -6.0 0.0, -6.0 3.2500000000000013, -3.0 3.2500000000000009, -3.0 0.0))",
+};
// GEOS "TestOverlay" test.
// Note that the first one WAS invalid and is made valid using SQL Server 2008 Spatial MakeValid() function
-static std::string geos_1_test_overlay[2] =
+static std::string geos_1[2] =
{
// Original: POLYGON((5417148.108 5658342.603,5417139.016 5658338.009,5417126.791 5658331.833,5417116.292 5658327.518,5417112.871 5658325.598,5417110.25 5658324.127,5417106.071 5658321.781,5417104.226 5658320.745,5417093.266 5658315.008,5417091.265 5658313.961,5417085.335 5658310.857,5417060.44 5658326.26,5417064.68 5658327.52,5417088.83 5658336.46,5417088.52 5658337.31,5417102.92 5658342.65,5417103.26 5658341.83,5417111.76 5658345.51,5417121.662 5658349.583,5417121.878 5658349.672,5417125.217 5658351.119,5417131.761 5658353.388,5417137.589 5658356.276,5417142.166 5658359.67,5417146.599 5658364.988,5417151.395 5658370.641,5417150.853 5658371.392,5417152.59741167 5658373.52811061,5417154.92 5658376.37,5417155.18955743 5658376.89699992,5417154.919 5658376.371,5417155.814 5658378.111,5417157.051 5658380.297,5417158.004 5658382.304,5417159.014 5658384.47,5417159.775 5658386.619,5417160.629 5658389.278,5417161.5 5658399.49,5417160.773 5658404.194,5417159.41 5658413.02,5417158.853 5658414.442,5417153.671 5658427.659,5417153.67051161 5658427.6586943,5417153.67 5658427.66,5417152.73 5658427.07,5417149.993 5658436.599,5417148.81 5658439.42,5417149.233 5658439.67,5417148.36 5658440.81,5417146.41 5658446.6,5417144.321 5658453.127,5417144.32092232 5658453.13043826,5417154.59 5658458.01,5417154.99551047 5658455.8409905,5417155.446 5658453.413,5417157.23981414 5658448.75748237,5417157.22660892 5658448.57861162,5417157.22660849 5658448.57860592,5417157.22660865 5658448.57860812,5417157.128 5658447.265,5417157.64950997 5658446.06368023,5417157.64950961 5658446.06368108,5417158.314 5658444.533,5417172.322 5658417.957,5417174.99 5658418.57,5417175.23 5658417.74,5417176.696 5658412.61,5417177.875 5658408.488,5417178.76 5658405.39,5417178.1 5658393.55,5417178.08 5658393.36,5417177.11 5658384.95,5417178.151 5658384.915,5417178.14836289 5658384.91508866,5417178.12 5658384.83,5417177.91415246 5658383.81114117,5417176.927 5658378.944,5417176.603 5658377.341,5417176.73975922 5658378.01762048,5417176.6 5658377.34,5417176.51210558 5658376.89535766,5417176.428 5658376.483,5417175.235 5658370.602,5417171.577 5658362.886,5417170.762 5658360.107,5417168.522 5658357.989,5417166.042 5658355.047,5417164.137 5658352.264,5417162.642 5658351.593,5417160.702 5658350.843,5417160.05417889 5658350.5823586,5417158.82 5658350.09,5417158.82103105 5658350.0862195,5417159.50373263 5658350.36089455,5417158.818 5658350.085,5417159.055 5658349.214,5417155.754 5658347.679,5417156.78066321 5658348.15640928,5417155.7525011 5658347.6811561,5417155.161 5658348.532,5417149.028 5658343.237,5417152.26877967 5658346.03496647,5417149.03 5658343.24,5417148.78133339 5658343.06701453,5417148.108 5658342.603))
"POLYGON((5417085.33499 5658310.85699,5417060.44 5658326.26001,5417064.67999 5658327.52002,5417088.82999 5658336.46002,5417088.51999 5658337.31,5417102.92001 5658342.65002,5417103.26001 5658341.83002,5417111.76001 5658345.51001,5417121.66199 5658349.58301,5417121.87799 5658349.672,5417125.21701 5658351.11902,5417131.76099 5658353.388,5417137.58899 5658356.276,5417142.16599 5658359.66998,5417146.599 5658364.98798,5417151.39499 5658370.64099,5417150.853 5658371.39203,5417152.59741 5658373.52814,5417154.92001 5658376.37,5417155.18806 5658376.89407,5417155.814 5658378.11102,5417157.05099 5658380.297,5417158.004 5658382.30402,5417159.01401 5658384.46997,5417159.77499 5658386.61902,5417160.629 5658389.27802,5417161.5 5658399.48999,5417160.77301 5658404.19397,5417159.41 5658413.02002,5417158.853 5658414.44202,5417153.67099 5658427.659,5417153.6705 5658427.65869,5417153.67001 5658427.65997,5417152.73001 5658427.07001,5417149.99301 5658436.599,5417148.81 5658439.41998,5417149.233 5658439.66998,5417148.35999 5658440.81,5417146.41 5658446.59998,5417144.32101 5658453.12701,5417144.32092 5658453.13043,5417154.59 5658458.01001,5417154.99551 5658455.841,5417155.44601 5658453.41302,5417157.23981 5658448.75751,5417157.22662 5658448.57861,5417157.12799 5658447.26501,5417157.64951 5658446.06366,5417158.314 5658444.53302,5417172.32199 5658417.95697,5417174.98999 5658418.57001,5417175.23001 5658417.73999,5417176.69601 5658412.60999,5417177.875 5658408.48798,5417178.76001 5658405.39001,5417178.10001 5658393.54999,5417178.07999 5658393.35999,5417177.10999 5658384.95001,5417178.14837 5658384.91507,5417178.12 5658384.83002,5417177.91415 5658383.81116,5417176.927 5658378.94397,5417176.603 5658377.341,5417176.73975 5658378.01764,5417176.60001 5658377.34003,5417176.51212 5658376.89539,5417176.42801 5658376.48297,5417175.23499 5658370.60199,5417171.577 5658362.88599,5417170.76199 5658360.10699,5417168.522 5658357.98901,5417166.04199 5658355.047,5417164.13699 5658352.26398,5417162.642 5658351.59302,5417160.702 5658350.84302,5417160.05417 5658350.58234,5417158.82001 5658350.09003,5417158.82104 5658350.08625,5417158.81799 5658350.08502,5417159.05499 5658349.21399,5417155.754 5658347.67902,5417156.78067 5658348.15643,5417155.7525 5658347.68115,5417155.16101 5658348.53198,5417149.02802 5658343.237,5417152.26877 5658346.03497,5417149.03 5658343.23999,5417148.78134 5658343.06702,5417148.108 5658342.60303,5417139.01599 5658338.00897,5417126.79099 5658331.83301,5417116.29199 5658327.51801,5417112.871 5658325.59802,5417110.25 5658324.12701,5417106.07101 5658321.78101,5417104.22601 5658320.745,5417093.26599 5658315.008,5417091.26501 5658313.961,5417085.33499 5658310.85699))",
@@ -560,6 +586,57 @@ static std::string ticket_5103[2] =
"POLYGON((-95269304 222758,-95260668 419862,-95234760 615696,-95192088 808228,-95132906 996442,-95057214 1178814,-94966028 1354074,-94860110 1520444,-94739968 1676908,-94606618 1822450,-94999048 2214880,-95165164 2033778,-95314770 1838706,-95446850 1631442,-95560388 1413510,-95654368 1186434,-95728282 951992,-95781368 711962,-95813626 468376,-95824294 222758,-95269304 222758))"
};
+static std::string ticket_6958[2] =
+ {
+ "POLYGON((0.63872330997599124913 0.25963790394761232516 , 0.51901482278481125832 0.36860892060212790966 , 0.24443514109589159489 0.62663296470418572426 , 0.41175117865081167778 0.47178476291601745274 , 0.63872330997599124913 0.25963790394761232516))",
+ "POLYGON((0.52364358028948876367 0.36823021165656988352 , 0.7762673462275415659 0.13443113025277850237 , 0.59446187055393329146 0.29992923303868185281 , 0.52364358028948876367 0.36823021165656988352))"
+ };
+
+static std::string ticket_7462[2] =
+ {
+ "POLYGON((0 0 , -0.3681253195 0.9297761917 , 2.421203136 2.034152031 , 2.789328575 1.104375958 , 0 0))",
+ "POLYGON((2.76143527 1.093332171 , 2.076887131 1.822299719 , 4.263789177 3.875944376 , 4.948337555 3.146976948 , 2.76143527 1.093332171))"
+ };
+
+// Ticket 8310 https://svn.boost.org/trac/boost/ticket/8310
+// The problem was in disjoint, "point_on_border" on the smallest polygon
+// is not considered as "within" the other, though there are no further intersection points.
+static std::string ticket_8310a[2] =
+ {
+ "POLYGON(( -2.559375047683716 -0.615625500679016, -2.559375047683716 0.384374797344208, 7.940625190734863 0.384374588727951, 7.940625190734863 -0.615625441074371, -2.559375047683716 -0.615625500679016 ))",
+ "POLYGON(( 1.000000000000000 0.384374707937241, 1.000000000000000 0.000000000000000, 0.000000000000000 0.000000000000000, 0.000000000000000 0.384374737739563, 1.000000000000000 0.384374707937241 ))"
+ };
+static std::string ticket_8310b[2] =
+ {
+ "POLYGON(( -2.592187881469727 -0.626561701297760, -2.592187643051147 0.373438000679016, 7.907812595367432 0.373437851667404, 7.907812595367432 -0.626561224460602, -2.592187881469727 -0.626561701297760 ))",
+ "POLYGON(( 0.000000000000000 0.373437941074371, 1.000000000000000 0.373437792062759, 1.000000000000000 0.000000000000000, 0.000000000000000 0.000000000000000, 0.000000000000000 0.373437941074371 ))"
+ };
+static std::string ticket_8310c[2] =
+ {
+ "POLYGON(( 5.204249382019043 3.531043529510498, 5.204247951507568 2.531045675277710, -5.295750617980957 2.531046152114868, -5.295751094818115 3.531045913696289, 5.204249382019043 3.531043529510498 ))",
+ "POLYGON(( 1.000000000000000 2.531045913696289, 1.000000000000000 3.000000000000000, 2.000000000000000 3.000000000000000, 2.000000000000000 2.531045913696289, 1.000000000000000 2.531045913696289 ))"
+ };
+
+static std::string ticket_8254[2] =
+ {
+ "POLYGON((0 0,-0.27224111308522275232 0.19250353717521062613,-0.27224111308522275232 0.96219700082478931691,0 1.154700537999999943,0 0))",
+ "POLYGON((-0.27224111308522286334 0.57751061210314269534,-0.27201435369399112885 0.57735026899999997152,-0.27224111308522280783 0.57718992589685735872,-0.27224111308522286334 0.57751061210314269534))"
+ };
+
+static std::string ticket_8652[2] =
+ {
+ "POLYGON((0 0, 0.05 0.04, 0.05 0, 0 0))",
+ "POLYGON((0.02 -2.77556e-17, 0.05 0.02, 0.05 -2.77556e-17, 0.02 -2.77556e-17))"
+ };
+
+static std::string ticket_9756[2] =
+{
+ // NOTE: these polygons are not closed. That is the reason the union failed for the library user.
+ // the unit test calls "correct" so this test is not a problem for the library. The ticket is closed as invalid.
+ "POLYGON((440820.110024126 4047009.80267429, 440806.545727707 4046942.39533656, 440797.171880196 4046895.8425726, 440804.202135392 4046888.73092639, 440813.573458131 4046935.27114371, 440827.140279322 4047002.69102807))",
+ "POLYGON((440855.857887967 4046932.1248641, 440813.740724389 4046942.21109839, 440806.376538684 4046935.44583646, 440848.493702262 4046925.35960217))",
+};
+
static std::string ggl_list_20120229_volker[3] =
{
"POLYGON((1716 1554,2076 2250,2436 2352,2796 1248,3156 2484,3516 2688,3516 2688,3156 2484,2796 1248,2436 2352,2076 2250, 1716 1554))",
@@ -567,6 +644,13 @@ static std::string ggl_list_20120229_volker[3] =
"POLYGON((1716 1554,2076 2250,2436 2352,2796 1248,3156 2484,3516 2688,3156 2483,2796 1247,2436 2351,2076 2249, 1716 1554))",
};
+static std::string ggl_list_20120717_volker[2] =
+ {
+ "POLYGON((1031 1056,3232 1056,3232 2856,1031 2856))",
+ "POLYGON((1032 1458,1032 1212,2136 2328,3234 2220,3234 2412,2136 2646))"
+ };
+
+
static std::string buffer_rt_a[2] =
{
"POLYGON((1 7,1 8,1.0012 8.04907,1.00482 8.09802,1.01082 8.14673,1.01921 8.19509,1.02997 8.24298,1.04306 8.29028,1.05846 8.33689,1.07612 8.38268,1.09601 8.42756,1.11808 8.4714,1.14227 8.5141,1.16853 8.55557,1.19679 8.5957,1.22699 8.63439,1.25905 8.67156,1.29289 8.70711,1.32844 8.74095,1.36561 8.77301,1.4043 8.80321,1.44443 8.83147,1.4859 8.85773,1.5286 8.88192,1.57244 8.90399,1.61732 8.92388,1.66311 8.94154,1.70972 8.95694,1.75702 8.97003,1.80491 8.98079,1.85327 8.98918,1.90198 8.99518,1.95093 8.9988,2 9,3 9,3.04907 8.9988,3.09802 8.99518,3.14673 8.98918,3.19509 8.98079,3.24298 8.97003,3.29028 8.95694,3.33689 8.94154,3.38268 8.92388,3.42756 8.90399,3.4714 8.88192,3.5141 8.85773,3.55557 8.83147,3.5957 8.80321,3.63439 8.77301,3.67156 8.74095,3.70711 8.70711,3.74095 8.67156,3.77301 8.63439,3.80321 8.5957,3.83147 8.55557,3.85773 8.5141,3.88192 8.4714,3.90399 8.42756,3.92388 8.38268,3.94154 8.33689,3.95694 8.29028,3.97003 8.24298,3.98079 8.19509,3.98918 8.14673,3.99518 8.09802,3.9988 8.04907,4 8,4 7,3.9988 6.95093,3.99518 6.90198,3.98918 6.85327,3.98079 6.80491,3.97003 6.75702,3.95694 6.70972,3.94154 6.66311,3.92388 6.61732,3.90399 6.57244,3.88192 6.5286,3.85773 6.4859,3.83147 6.44443,3.80321 6.4043,3.77301 6.36561,3.74095 6.32844,3.70711 6.29289,3.67156 6.25905,3.63439 6.22699,3.5957 6.19679,3.55557 6.16853,3.5141 6.14227,3.4714 6.11808,3.42756 6.09601,3.38268 6.07612,3.33689 6.05846,3.29028 6.04306,3.24298 6.02997,3.19509 6.01921,3.14673 6.01082,3.09802 6.00482,3.04907 6.0012,3 6,2 6,1.95093 6.0012,1.90198 6.00482,1.85327 6.01082,1.80491 6.01921,1.75702 6.02997,1.70972 6.04306,1.66311 6.05846,1.61732 6.07612,1.57244 6.09601,1.5286 6.11808,1.4859 6.14227,1.44443 6.16853,1.4043 6.19679,1.36561 6.22699,1.32844 6.25905,1.29289 6.29289,1.25905 6.32844,1.22699 6.36561,1.19679 6.4043,1.16853 6.44443,1.14227 6.4859,1.11808 6.5286,1.09601 6.57244,1.07612 6.61732,1.05846 6.66311,1.04306 6.70972,1.02997 6.75702,1.01921 6.80491,1.01082 6.85327,1.00482 6.90198,1.0012 6.95093,1 7))",
@@ -654,5 +738,63 @@ static std::string buffer_rt_t[2] =
"POLYGON((1.7071067811865475 3.2928932188134525,0.70710678118654746 2.2928932188134525,-1.0 0.58578643762690508,-1.0 3.0,-1.0 4.0,-1.0 4.0,-1.0 5.0,-1.0 7.4142135623730958,0.70710678118654746 5.7071067811865479,1.7071067811865475 4.7071067811865479,2.4142135623730954 4.0,1.7071067811865475 3.2928932188134525))"
};
+// Two circles, causing problems in sectionalize. Fixed by adding small buffer
+static std::string buffer_mp1[2] =
+ {
+ "POLYGON((7 5,6.989043790736547 4.790943073464693,6.956295201467611 4.584176618364482,6.902113032590307 4.381966011250105,6.827090915285202 4.1865267138484,6.732050807568878 4,6.618033988749895 3.824429495415054,6.486289650954788 3.661738787282284,6.338261212717717 3.513710349045212,6.175570504584946 3.381966011250105,6 3.267949192431122,5.8134732861516 3.172909084714799,5.618033988749895 3.097886967409693,5.415823381635519 3.043704798532389,5.209056926535308 3.010956209263453,5.000000000000001 3,4.790943073464693 3.010956209263453,4.584176618364483 3.043704798532389,4.381966011250106 3.097886967409693,4.186526713848401 3.172909084714798,4.00 3.267949192431122,3.824429495415055 3.381966011250104,3.661738787282284 3.513710349045211,3.513710349045212 3.661738787282284,3.381966011250105 3.824429495415053,3.267949192431122 4,3.172909084714798 4.1865267138484,3.097886967409693 4.381966011250106,3.043704798532389 4.584176618364483,3.010956209263453 4.790943073464694,3 5.00,3.010956209263453 5.209056926535308,3.043704798532389 5.415823381635521,3.097886967409694 5.618033988749897,3.172909084714799 5.813473286151603,3.267949192431124 6.00,3.381966011250107 6.175570504584949,3.513710349045214 6.338261212717719,3.661738787282286 6.486289650954791,3.824429495415056 6.618033988749897,4.00 6.732050807568879,4.186526713848402 6.827090915285202,4.381966011250107 6.902113032590307,4.584176618364483 6.956295201467611,4.790943073464693 6.989043790736547,5 7,5.209056926535306 6.989043790736547,5.415823381635518 6.956295201467611,5.618033988749893 6.902113032590307,5.813473286151598 6.827090915285202,6.00 6.732050807568879,6.175570504584943 6.618033988749897,6.338261212717713 6.486289650954792,6.486289650954785 6.33826121271772,6.618033988749891 6.175570504584951,6.732050807568874 6.00,6.827090915285199 5.813473286151607,6.902113032590305 5.618033988749902,6.95629520146761 5.415823381635526,6.989043790736545 5.209056926535316,7 5))",
+ "POLYGON((9 7,8.989043790736547 6.790943073464693,8.956295201467611 6.584176618364482,8.902113032590307 6.381966011250105,8.827090915285202 6.1865267138484,8.732050807568877 6,8.618033988749895 5.824429495415053,8.486289650954788 5.661738787282284,8.338261212717717 5.513710349045212,8.175570504584947 5.381966011250105,8 5.267949192431122,7.8134732861516 5.172909084714799,7.618033988749895 5.097886967409693,7.415823381635519 5.043704798532389,7.209056926535308 5.010956209263453,7.000000000000001 5,6.790943073464693 5.010956209263453,6.584176618364483 5.043704798532389,6.381966011250106 5.097886967409693,6.186526713848401 5.172909084714798,6.00 5.267949192431122,5.824429495415055 5.381966011250104,5.661738787282284 5.513710349045211,5.513710349045212 5.661738787282284,5.381966011250105 5.824429495415053,5.267949192431122 6,5.172909084714798 6.1865267138484,5.097886967409693 6.381966011250106,5.043704798532389 6.584176618364483,5.010956209263453 6.790943073464694,5 7.00,5.010956209263453 7.209056926535308,5.043704798532389 7.415823381635521,5.097886967409694 7.618033988749897,5.172909084714799 7.813473286151603,5.267949192431124 8.00,5.381966011250107 8.175570504584949,5.513710349045214 8.338261212717718,5.661738787282286 8.486289650954792,5.824429495415057 8.618033988749897,6.00 8.732050807568879,6.186526713848402 8.827090915285202,6.381966011250107 8.902113032590307,6.584176618364483 8.956295201467611,6.790943073464693 8.989043790736547,7 9,7.209056926535306 8.989043790736547,7.415823381635518 8.956295201467611,7.618033988749893 8.902113032590307,7.813473286151598 8.827090915285202,8.00 8.732050807568879,8.175570504584943 8.618033988749897,8.338261212717713 8.486289650954792,8.486289650954785 8.33826121271772,8.618033988749891 8.17557050458495,8.732050807568875 8.00,8.827090915285199 7.813473286151607,8.902113032590306 7.618033988749902,8.95629520146761 7.415823381635526,8.989043790736545 7.209056926535316,9 7))"
+ };
+
+// Union of two circles, unioned with third circle, having undetected inner polygon
+// This is a robustness issue in get_turn_info, collinear_opposite, fixed by checking consistency
+static std::string buffer_mp2[2] =
+ {
+ "POLYGON((7 8,6.9949042292205075 7.8573216336015355,6.9796428837618656 7.7153703234534294,6.954293731942319 7.5748694208940464,6.918985947228995 7.4365348863171405,6.8738994499995236 7.301071640801803,6.8192639907090369 7.1691699739962269,6.7553579791345113 7.0415020265598862,6.682507065662362 6.9187183650888047,6.6010824818487208 6.8014446669773063,6.5114991487085163 6.6902785321094296,6.4142135623730949 6.5857864376269051,6.3097214678905704 6.4885008512914837,6.1985553330226946 6.3989175181512792,6.0812816349111953 6.317492934337638,5.9584979734401138 6.2446420208654887,5.8308300260037731 6.180736009290964,5.698928359198197 6.1261005500004764,5.5634651136828603 6.081014052771005,5.4251305791059536 6.045706268057681,5.2846296765465715 6.0203571162381344,5.1426783663984654 6.0050957707794925,5.0000000000000009 6,4.8573216336015363 6.0050957707794925,4.7153703234534312 6.0203571162381344,4.5748694208940481 6.045706268057681,4.4365348863171423 6.081014052771005,4.3010716408018048 6.1261005500004764,4.1691699739962287 6.1807360092909622,4.041502026559888 6.2446420208654878,3.9187183650888064 6.3174929343376363,3.8014446669773077 6.3989175181512783,3.6902785321094314 6.4885008512914819,3.5857864376269064 6.5857864376269033,3.4885008512914846 6.6902785321094278,3.3989175181512805 6.8014446669773045,3.3174929343376389 6.9187183650888029,3.2446420208654896 7.0415020265598844,3.180736009290964 7.1691699739962251,3.1261005500004773 7.3010716408018013,3.0810140527710059 7.4365348863171379,3.0457062680576819 7.5748694208940437,3.0203571162381349 7.7153703234534268,3.0050957707794934 7.8573216336015328,3 7.9999999999999973,3.0050957707794925 8.1426783663984619,3.0203571162381344 8.284629676546567,3.0457062680576801 8.4251305791059501,3.0810140527710042 8.5634651136828559,3.1261005500004755 8.6989283591981934,3.1807360092909618 8.8308300260037704,3.2446420208654869 8.9584979734401102,3.3174929343376358 9.0812816349111927,3.398917518151277 9.198555333022691,3.488500851291481 9.3097214678905669,3.5857864376269024 9.4142135623730923,3.6902785321094269 9.5114991487085145,3.8014446669773028 9.601082481848719,3.918718365088802 9.6825070656623602,4.0415020265598844 9.7553579791345104,4.169169973996226 9.819263990709036,4.301071640801803 9.8738994499995236,4.4365348863171405 9.918985947228995,4.5748694208940472 9.9542937319423199,4.7153703234534312 9.9796428837618656,4.8573216336015381 9.9949042292205075,5.0000000000000036 10,5.142678366398469 9.9949042292205075,5.284629676546575 9.9796428837618656,5.425130579105959 9.9542937319423181,5.5634651136828657 9.9189859472289932,5.6989283591982032 9.8738994499995201,5.8308300260037802 9.8192639907090324,5.9584979734401209 9.7553579791345069,6.0812816349112033 9.6825070656623566,6.1985553330227017 9.6010824818487137,6.3097214678905784 9.5114991487085092,6.4142135623731038 9.4142135623730869,6.5114991487085252 9.3097214678905598,6.6010824818487288 9.1985553330226821,6.68250706566237 9.0812816349111838,6.7553579791345184 8.9584979734400996,6.8192639907090431 8.830830026003758,6.873899449999529 8.698928359198181,6.9189859472290003 8.5634651136828417,6.9542937319423235 8.4251305791059359,6.9796428837618683 8.284629676546551,6.9949042292205084 8.1426783663984441,7 8))",
+ "POLYGON((7.281120925915111 9.019979886500282,7.142678366398465 9.005095770779493,7.000000000000001 9,6.857321633601536 9.005095770779493,6.715370323453431 9.020357116238134,6.574869420894048 9.04570626805768,6.436534886317142 9.081014052771005,6.301071640801805 9.126100550000476,6.169169973996229 9.180736009290962,6.041502026559888 9.244642020865488,5.918718365088806 9.317492934337636,5.801444666977307 9.398917518151277,5.690278532109431 9.488500851291482,5.585786437626906 9.585786437626904,5.488500851291485 9.690278532109428,5.398917518151281 9.801444666977304,5.317492934337639 9.918718365088804,5.24464202086549 10.04150202655988,5.180736009290964 10.16916997399622,5.126100550000477 10.3010716408018,5.081014052771006 10.43653488631714,5.045706268057682 10.57486942089405,5.020357116238134 10.71537032345343,5.005095770779493 10.85732163360153,5 11,5.005095770779493 11.14267836639846,5.020357116238134 11.28462967654657,5.04570626805768 11.42513057910595,5.081014052771004 11.56346511368286,5.126100550000476 11.69892835919819,5.180736009290962 11.83083002600377,5.244642020865487 11.95849797344011,5.317492934337636 12.08128163491119,5.398917518151277 12.19855533302269,5.488500851291481 12.30972146789057,5.585786437626902 12.41421356237309,5.690278532109427 12.51149914870852,5.801444666977303 12.60108248184872,5.918718365088802 12.68250706566236,6.041502026559884 12.75535797913451,6.169169973996226 12.81926399070904,6.301071640801803 12.87389944999952,6.436534886317141 12.918985947229,6.574869420894047 12.95429373194232,6.715370323453431 12.97964288376187,6.857321633601538 12.99490422922051,7.000000000000004 13,7.142678366398469 12.99490422922051,7.284629676546575 12.97964288376187,7.425130579105959 12.95429373194232,7.563465113682866 12.91898594722899,7.698928359198203 12.87389944999952,7.83083002600378 12.81926399070903,7.958497973440121 12.75535797913451,8.081281634911203 12.68250706566236,8.198555333022702 12.60108248184871,8.309721467890579 12.51149914870851,8.414213562373103 12.41421356237309,8.511499148708525 12.30972146789056,8.60108248184873 12.19855533302268,8.682507065662371 12.08128163491118,8.755357979134519 11.9584979734401,8.819263990709043 11.83083002600376,8.873899449999529 11.69892835919818,8.918985947229 11.56346511368284,8.954293731942324 11.42513057910594,8.979642883761869 11.28462967654655,8.994904229220509 11.14267836639844,9 11,8.994904229220508 10.85732163360154,8.979642883761866 10.71537032345343,8.954293731942318 10.57486942089405,8.918985947228995 10.43653488631714,8.873899449999524 10.3010716408018,8.819263990709036 10.16916997399623,8.755357979134512 10.04150202655989,8.718879074084889 9.980020113499718,8.857321633601538 9.994904229220508,9.000000000000004 10,9.142678366398469 9.994904229220508,9.284629676546576 9.979642883761866,9.425130579105959 9.954293731942318,9.563465113682865 9.918985947228993,9.698928359198204 9.87389944999952,9.830830026003779 9.819263990709032,9.958497973440121 9.755357979134507,10.0812816349112 9.682507065662357,10.1985553330227 9.601082481848714,10.30972146789058 9.511499148708509,10.4142135623731 9.414213562373087,10.51149914870853 9.30972146789056,10.60108248184873 9.198555333022682,10.68250706566237 9.081281634911184,10.75535797913452 8.9584979734401,10.81926399070904 8.830830026003758,10.87389944999953 8.698928359198181,10.918985947229 8.563465113682842,10.95429373194232 8.425130579105936,10.97964288376187 8.284629676546551,10.99490422922051 8.142678366398444,11 8,10.99490422922051 7.857321633601536,10.97964288376187 7.715370323453429,10.95429373194232 7.574869420894046,10.918985947229 7.436534886317141,10.87389944999952 7.301071640801803,10.81926399070904 7.169169973996227,10.75535797913451 7.041502026559886,10.68250706566236 6.918718365088805,10.60108248184872 6.801444666977306,10.51149914870852 6.69027853210943,10.4142135623731 6.585786437626905,10.30972146789057 6.488500851291484,10.1985553330227 6.398917518151279,10.0812816349112 6.317492934337638,9.958497973440114 6.244642020865489,9.830830026003774 6.180736009290964,9.698928359198197 6.126100550000476,9.56346511368286 6.081014052771005,9.425130579105954 6.045706268057681,9.284629676546571 6.020357116238134,9.142678366398465 6.005095770779493,9.000000000000002 6,8.857321633601536 6.005095770779493,8.715370323453431 6.020357116238134,8.574869420894048 6.045706268057681,8.436534886317142 6.081014052771005,8.301071640801805 6.126100550000476,8.169169973996228 6.180736009290962,8.041502026559888 6.244642020865488,7.918718365088806 6.317492934337636,7.801444666977307 6.398917518151278,7.690278532109431 6.488500851291482,7.585786437626906 6.585786437626903,7.488500851291485 6.690278532109428,7.398917518151281 6.801444666977305,7.317492934337639 6.918718365088803,7.24464202086549 7.041502026559884,7.180736009290964 7.169169973996225,7.126100550000477 7.301071640801801,7.081014052771006 7.436534886317138,7.045706268057682 7.574869420894044,7.020357116238134 7.715370323453427,7.005095770779493 7.857321633601533,7 7.999999999999997,7.005095770779493 8.142678366398462,7.020357116238134 8.284629676546567,7.04570626805768 8.42513057910595,7.081014052771004 8.563465113682856,7.126100550000476 8.698928359198193,7.180736009290962 8.83083002600377,7.244642020865487 8.95849797344011,7.281120925915111 9.019979886500282))"
+ };
+
+static std::string collinear_opposite_right[2] =
+ {
+ "POLYGON((7 6,7 8,8 9,8 5,7 6))",
+ "POLYGON((5.9 5.9,5.9 10.1,7 9,7 7,5.9 5.9))"
+ };
+
+static std::string collinear_opposite_left[2] =
+ {
+ "POLYGON((7 6,7 8,6 9,8 11,8 5,7 6))",
+ "POLYGON((5 7,7 9,7 7,9 5,8 4,5 7))"
+ };
+
+static std::string collinear_opposite_straight[2] =
+ {
+ "POLYGON((7 6,7 8,7 9,8 8,8 7,7 6))",
+ "POLYGON((6 6,6 9,7 10,7 7,7 5,6 6))"
+ };
+
+static std::string ticket_9081_15[2] =
+ {
+ "POLYGON((0.6733025292237357 0.1677633042748119,0.4903155795903966 0.2232818375071136,0.4271130992272586 0.3070047723327289,0.786116554767879 0.3837165261542967,0.6733025292237357 0.1677633042748119))",
+ "POLYGON((0.6331466887796691 0.351029969741811,0.7496863892358909 0.3759321389935647,0.7688695634785153 0.35070163001261,0.7290398105918782 0.2744578879686089,0.6331466887796691 0.351029969741811))"
+ };
+
+static std::string ticket_9081_314[2] =
+ {
+ "POLYGON((0.4397162028773298 0.5045841729755439,0.8281201612335258 0.8974555101699454,0.7367863490883197 0.2443919592743702,0.4397162028773298 0.5045841729755439))",
+ "POLYGON((0.5414573257656662 0.6074955108670699,0.5789048944501695 0.6005510671998147,0.6254781598681494 0.5392960142449524,0.7838704066548215 0.5810567836448409,0.7367863490883197 0.2443919592743702,0.4522347054548293 0.4936197023297791,0.4539963238827925 0.4940841246816053,0.4402150043376781 0.5050887115944368,0.5414573257656662 0.6074955108670699))"
+ };
+
+static std::string ticket_9081_6690[2] =
+ {
+ "POLYGON((0.5489109414010371 0.5774835110050927,0.4099611282054447 0.4644351568071598,0.4294011278595494 0.4843224236729239,0.4205359995313906 0.5115225580860201,0.4441572412013468 0.5184999851878852,0.5489109414010371 0.5774835110050927))",
+ "POLYGON((0.3984249865018206 0.4526335964808558,0.3621206996557855 0.4602288471829723,0.4183516736935784 0.4730187483833363,0.4099611282054451 0.4644351568071601,0.3984249865018206 0.4526335964808558))"
+ };
+
+static std::string ticket_9563[2] =
+ {
+ "POLYGON((16.4030230586813990 21.4147098480789640, 17.3451877762964380 14.8677773110138890, 11.9421647176150360 6.4530674629349205, 5.5969769413186015 4.5852901519210345, 4.6548122237035621 11.1322226889861170, 10.0578352823849610 19.5469325370650790, 16.4030230586813990 21.4147098480789640, 16.4030230586813990 21.4147098480789640))",
+ "POLYGON((16.4030230586814020 21.414709848078967, 17.7828326880709360 18.936596729241124, 17.3451877762964410 14.867777311013885, 15.2073549240394820 10.298488470659295, 11.9421647176150340 6.4530674629349125, 8.4245222359685457 4.3618917414181650, 5.5969769413185944 4.5852901519210292, 4.2171673119290620 7.0634032707588670, 4.6548122237035567 11.132222688986115, 6.7926450759605128 15.701511529340699, 10.0578352823849570 19.546932537065082, 13.5754777640314510 21.638108258581831, 16.4030230586814020 21.414709848078967))"
+ };
+
+
#endif // BOOST_GEOMETRY_TEST_OVERLAY_CASES_HPP
diff --git a/libs/geometry/test/algorithms/overlay/overlay_common.hpp b/libs/geometry/test/algorithms/overlay/overlay_common.hpp
index 359415d327..01fd109e50 100644
--- a/libs/geometry/test/algorithms/overlay/overlay_common.hpp
+++ b/libs/geometry/test/algorithms/overlay/overlay_common.hpp
@@ -30,7 +30,7 @@
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian);
diff --git a/libs/geometry/test/algorithms/overlay/relative_order.cpp b/libs/geometry/test/algorithms/overlay/relative_order.cpp
index 1c57d97b2d..18c51e2b34 100644
--- a/libs/geometry/test/algorithms/overlay/relative_order.cpp
+++ b/libs/geometry/test/algorithms/overlay/relative_order.cpp
@@ -23,7 +23,7 @@
#include <boost/geometry/geometries/point_xy.hpp>
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
diff --git a/libs/geometry/test/algorithms/overlay/relative_order.vcproj b/libs/geometry/test/algorithms/overlay/relative_order.vcproj
deleted file mode 100644
index eb577fafe3..0000000000
--- a/libs/geometry/test/algorithms/overlay/relative_order.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="relative_order"
- ProjectGUID="{4C012342-116A-4E5E-9869-90389D5BBEBD}"
- RootNamespace="relative_order"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\relative_order"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\relative_order"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\relative_order.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/robustness/interior_triangles.vcproj b/libs/geometry/test/algorithms/overlay/robustness/interior_triangles.vcproj
deleted file mode 100644
index 831514b3e7..0000000000
--- a/libs/geometry/test/algorithms/overlay/robustness/interior_triangles.vcproj
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="interior_triangles"
- ProjectGUID="{7583C2E3-AD74-4C34-8E94-9162F641B215}"
- RootNamespace="interior_triangles"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\interior_triangles"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="2"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\interior_triangles"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="program options"
- >
- <File
- RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\split.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\interior_triangles.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.vcproj b/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.vcproj
deleted file mode 100644
index 1ead5e8e9b..0000000000
--- a/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.vcproj
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="intersection_pies"
- ProjectGUID="{24D92478-7C66-4DD5-A501-30A3D4376E4F}"
- RootNamespace="intersection_pies"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\intersection_pies"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories="&quot;C:\gmp\gmp-dynamic&quot;"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\intersection_pies"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="program options"
- >
- <File
- RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\split.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\intersection_pies.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/robustness/intersection_stars.vcproj b/libs/geometry/test/algorithms/overlay/robustness/intersection_stars.vcproj
deleted file mode 100644
index 5c41db0554..0000000000
--- a/libs/geometry/test/algorithms/overlay/robustness/intersection_stars.vcproj
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="intersection_stars"
- ProjectGUID="{A76B81BF-B5B4-4D09-BB81-F235647891DE}"
- RootNamespace="intersection_stars"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\intersection_stars"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories="&quot;C:\gmp\gmp-dynamic&quot;"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\intersection_stars"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="program options"
- >
- <File
- RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\split.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\intersection_stars.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/robustness/intersects.vcproj b/libs/geometry/test/algorithms/overlay/robustness/intersects.vcproj
deleted file mode 100644
index 8331792e5d..0000000000
--- a/libs/geometry/test/algorithms/overlay/robustness/intersects.vcproj
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="intersects"
- ProjectGUID="{1AC9B120-3ED0-4444-86E5-1916108943C7}"
- RootNamespace="intersects"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\intersects"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="2"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\intersects"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="program options"
- >
- <File
- RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\split.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\intersects.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/robustness/random_ellipses_stars.vcproj b/libs/geometry/test/algorithms/overlay/robustness/random_ellipses_stars.vcproj
deleted file mode 100644
index 6f547c6f7f..0000000000
--- a/libs/geometry/test/algorithms/overlay/robustness/random_ellipses_stars.vcproj
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="random_ellipses_stars"
- ProjectGUID="{C16633DE-83F8-40E3-9915-3B9C872C7B1E}"
- RootNamespace="random_ellipses_stars"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\random_ellipses_stars"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;../../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="0"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\random_ellipses_stars"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;../../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="program options"
- >
- <File
- RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\split.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\random_ellipses_stars.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.vcproj b/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.vcproj
deleted file mode 100644
index b2cc413358..0000000000
--- a/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.vcproj
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="recursive_polygons"
- ProjectGUID="{E1AA569C-858C-4789-A6FF-5CDFB41C59D7}"
- RootNamespace="recursive_polygons"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\recursive_polygons"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="2"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\recursive_polygons"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="program options"
- >
- <File
- RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\split.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\recursive_polygons.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/robustness/robustness.sln b/libs/geometry/test/algorithms/overlay/robustness/robustness.sln
deleted file mode 100644
index dd6ff88215..0000000000
--- a/libs/geometry/test/algorithms/overlay/robustness/robustness.sln
+++ /dev/null
@@ -1,55 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "random_ellipses_stars", "random_ellipses_stars.vcproj", "{C16633DE-83F8-40E3-9915-3B9C872C7B1E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intersection_stars", "intersection_stars.vcproj", "{A76B81BF-B5B4-4D09-BB81-F235647891DE}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intersection_pies", "intersection_pies.vcproj", "{24D92478-7C66-4DD5-A501-30A3D4376E4F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_polygons", "recursive_polygons.vcproj", "{E1AA569C-858C-4789-A6FF-5CDFB41C59D7}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "star_comb", "star_comb.vcproj", "{6D8C81C1-23CD-469E-8094-E0C01B51E944}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "interior_triangles", "interior_triangles.vcproj", "{7583C2E3-AD74-4C34-8E94-9162F641B215}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intersects", "intersects.vcproj", "{1AC9B120-3ED0-4444-86E5-1916108943C7}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C16633DE-83F8-40E3-9915-3B9C872C7B1E}.Debug|Win32.ActiveCfg = Debug|Win32
- {C16633DE-83F8-40E3-9915-3B9C872C7B1E}.Debug|Win32.Build.0 = Debug|Win32
- {C16633DE-83F8-40E3-9915-3B9C872C7B1E}.Release|Win32.ActiveCfg = Release|Win32
- {C16633DE-83F8-40E3-9915-3B9C872C7B1E}.Release|Win32.Build.0 = Release|Win32
- {A76B81BF-B5B4-4D09-BB81-F235647891DE}.Debug|Win32.ActiveCfg = Debug|Win32
- {A76B81BF-B5B4-4D09-BB81-F235647891DE}.Debug|Win32.Build.0 = Debug|Win32
- {A76B81BF-B5B4-4D09-BB81-F235647891DE}.Release|Win32.ActiveCfg = Release|Win32
- {A76B81BF-B5B4-4D09-BB81-F235647891DE}.Release|Win32.Build.0 = Release|Win32
- {24D92478-7C66-4DD5-A501-30A3D4376E4F}.Debug|Win32.ActiveCfg = Debug|Win32
- {24D92478-7C66-4DD5-A501-30A3D4376E4F}.Debug|Win32.Build.0 = Debug|Win32
- {24D92478-7C66-4DD5-A501-30A3D4376E4F}.Release|Win32.ActiveCfg = Release|Win32
- {24D92478-7C66-4DD5-A501-30A3D4376E4F}.Release|Win32.Build.0 = Release|Win32
- {E1AA569C-858C-4789-A6FF-5CDFB41C59D7}.Debug|Win32.ActiveCfg = Debug|Win32
- {E1AA569C-858C-4789-A6FF-5CDFB41C59D7}.Debug|Win32.Build.0 = Debug|Win32
- {E1AA569C-858C-4789-A6FF-5CDFB41C59D7}.Release|Win32.ActiveCfg = Release|Win32
- {E1AA569C-858C-4789-A6FF-5CDFB41C59D7}.Release|Win32.Build.0 = Release|Win32
- {6D8C81C1-23CD-469E-8094-E0C01B51E944}.Debug|Win32.ActiveCfg = Debug|Win32
- {6D8C81C1-23CD-469E-8094-E0C01B51E944}.Debug|Win32.Build.0 = Debug|Win32
- {6D8C81C1-23CD-469E-8094-E0C01B51E944}.Release|Win32.ActiveCfg = Release|Win32
- {6D8C81C1-23CD-469E-8094-E0C01B51E944}.Release|Win32.Build.0 = Release|Win32
- {7583C2E3-AD74-4C34-8E94-9162F641B215}.Debug|Win32.ActiveCfg = Debug|Win32
- {7583C2E3-AD74-4C34-8E94-9162F641B215}.Debug|Win32.Build.0 = Debug|Win32
- {7583C2E3-AD74-4C34-8E94-9162F641B215}.Release|Win32.ActiveCfg = Release|Win32
- {7583C2E3-AD74-4C34-8E94-9162F641B215}.Release|Win32.Build.0 = Release|Win32
- {1AC9B120-3ED0-4444-86E5-1916108943C7}.Debug|Win32.ActiveCfg = Debug|Win32
- {1AC9B120-3ED0-4444-86E5-1916108943C7}.Debug|Win32.Build.0 = Debug|Win32
- {1AC9B120-3ED0-4444-86E5-1916108943C7}.Release|Win32.ActiveCfg = Release|Win32
- {1AC9B120-3ED0-4444-86E5-1916108943C7}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/algorithms/overlay/robustness/star_comb.vcproj b/libs/geometry/test/algorithms/overlay/robustness/star_comb.vcproj
deleted file mode 100644
index 01a30306a8..0000000000
--- a/libs/geometry/test/algorithms/overlay/robustness/star_comb.vcproj
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="star_comb"
- ProjectGUID="{6D8C81C1-23CD-469E-8094-E0C01B51E944}"
- RootNamespace="star_comb"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\star_comb"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="2"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\star_comb"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="program options"
- >
- <File
- RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\split.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\star_comb.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/select_rings.cpp b/libs/geometry/test/algorithms/overlay/select_rings.cpp
index 4d81336c82..acc3e50111 100644
--- a/libs/geometry/test/algorithms/overlay/select_rings.cpp
+++ b/libs/geometry/test/algorithms/overlay/select_rings.cpp
@@ -26,15 +26,15 @@
-template
+template
<
- typename Geometry1,
- typename Geometry2,
- bg::overlay_type OverlayType,
+ typename Geometry1,
+ typename Geometry2,
+ bg::overlay_type OverlayType,
typename RingIdVector,
typename WithinVector
>
-void test_geometry(std::string const& wkt1, std::string const& wkt2,
+void test_geometry(std::string const& wkt1, std::string const& wkt2,
RingIdVector const& expected_ids,
WithinVector const& expected_withins)
{
@@ -80,7 +80,7 @@ void test_all()
typedef bg::ring_identifier rid;
test_geometry<bg::model::polygon<P>, bg::model::polygon<P>, bg::overlay_union>(
- winded[0], winded[1],
+ winded[0], winded[1],
boost::assign::list_of
(rid(0,-1,-1))
(rid(0,-1, 0))
@@ -97,7 +97,7 @@ void test_all()
(-1)
(-1)
);
-
+
//boost::assign::tuple_list_of(0,-1,-1,-1)(0,-1,0,-1)(0,-1,1,-1)(0,-1,3,-1)(1,-1,1,-1)(1,-1,2,-1));
test_geometry<bg::model::polygon<P>, bg::model::polygon<P>, bg::overlay_intersection>(
diff --git a/libs/geometry/test/algorithms/overlay/select_rings.vcproj b/libs/geometry/test/algorithms/overlay/select_rings.vcproj
deleted file mode 100644
index 5706311fc6..0000000000
--- a/libs/geometry/test/algorithms/overlay/select_rings.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="select_rings"
- ProjectGUID="{029117F7-1D6A-4A05-9FB7-93E09751C909}"
- RootNamespace="select_rings"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\select_rings"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../..;../../../../../boost/geometry/extensions/contrib/ttmath"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\select_rings"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../..;../../../../../boost/geometry/extensions/contrib/ttmath"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\select_rings.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/self_intersection_points.cpp b/libs/geometry/test/algorithms/overlay/self_intersection_points.cpp
index e606252660..24c51df577 100644
--- a/libs/geometry/test/algorithms/overlay/self_intersection_points.cpp
+++ b/libs/geometry/test/algorithms/overlay/self_intersection_points.cpp
@@ -19,12 +19,15 @@
#include <geometry_test_common.hpp>
+#include <boost/geometry/algorithms/correct.hpp>
#include <boost/geometry/algorithms/intersection.hpp>
#include <boost/geometry/algorithms/intersects.hpp>
//#include <boost/geometry/algorithms/detail/overlay/self_intersection_points.hpp>
#include <boost/geometry/algorithms/detail/overlay/self_turn_points.hpp>
+#include <boost/geometry/policies/robustness/get_rescale_policy.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/strategies/strategies.hpp>
@@ -36,212 +39,243 @@
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
-
-struct test_self_intersection_points
+template <typename Geometry>
+static void test_self_intersection_points(std::string const& case_id,
+ int expected_count,
+ Geometry const& geometry,
+ bool check_has_intersections,
+ double precision = 0.001)
{
- template <typename Geometry>
- static void apply(std::string const& id,
- boost::tuple<int, double, double> const& expected_count_and_center,
- Geometry const& geometry, double precision)
- {
-
- typedef bg::detail::overlay::turn_info
+ typedef typename bg::point_type<Geometry>::type point_type;
+ //typedef typename bg::rescale_policy_type<point_type>::type rescale_policy_type;
+ typedef bg::detail::no_rescale_policy rescale_policy_type;
+ typedef bg::detail::overlay::turn_info
<
- typename bg::point_type<Geometry>::type
+ point_type,
+ typename bg::segment_ratio_type
+ <
+ point_type, rescale_policy_type
+ >::type
> turn_info;
- std::vector<turn_info> turns;
+ std::vector<turn_info> turns;
- ///bg::get_intersection_points(geometry, turns);
- bg::detail::self_get_turn_points::no_interrupt_policy policy;
- bg::self_turns
- <
- bg::detail::overlay::assign_null_policy
- >(geometry, turns, policy);
+ rescale_policy_type rescale_policy
+ ;
+ // = bg::get_rescale_policy<rescale_policy_type>(geometry);
+ ///bg::get_intersection_points(geometry, turns);
+ bg::detail::self_get_turn_points::no_interrupt_policy policy;
+ bg::self_turns
+ <
+ bg::detail::overlay::assign_null_policy
+ >(geometry, rescale_policy, turns, policy);
- typedef typename bg::coordinate_type<Geometry>::type ct;
- ct zero = ct();
- ct x = zero, y = zero;
- BOOST_FOREACH(turn_info const& turn, turns)
- {
- x += bg::get<0>(turn.point);
- y += bg::get<1>(turn.point);
- }
- int n = boost::size(turns);
- if (n > 0)
- {
- x /= n;
- y /= n;
- }
- /*std::cout << std::setprecision(8) << x << ", " << y << " "
- << expected_count_and_center.get<1>()
- << " " << expected_count_and_center.get<2>()
- << std::endl;
- */
- BOOST_CHECK_EQUAL(expected_count_and_center.get<0>(), n);
- //BOOST_CHECK_CLOSE(expected_count_and_center.get<1>(), x, precision);
- //BOOST_CHECK_CLOSE(expected_count_and_center.get<2>(), y, precision);
+ typedef typename bg::coordinate_type<Geometry>::type ct;
+ ct zero = ct();
+ ct x = zero, y = zero;
+ BOOST_FOREACH(turn_info const& turn, turns)
+ {
+ x += bg::get<0>(turn.point);
+ y += bg::get<1>(turn.point);
+ }
+ int n = boost::size(turns);
+ if (n > 0)
+ {
+ x /= n;
+ y /= n;
+ }
+
+ BOOST_CHECK_EQUAL(expected_count, n);
- if (n > 0)
+ if (expected_count > 0)
+ {
+ BOOST_CHECK_EQUAL(bg::intersects(geometry), true);
+
+ if (check_has_intersections)
+ {
+ try
+ {
+ boost::geometry::detail::overlay::has_self_intersections(geometry);
+ BOOST_CHECK_MESSAGE(false, "Case " << case_id << " there are no self-intersections detected!");
+ }
+ catch(...)
+ {
+ }
+ }
+ }
+ else
+ {
+ if (check_has_intersections)
{
- BOOST_CHECK_EQUAL(bg::intersects(geometry), true);
+ try
+ {
+ boost::geometry::detail::overlay::has_self_intersections(geometry);
+ }
+ catch(...)
+ {
+ BOOST_CHECK_MESSAGE(false, "Case " << case_id << " there are self-intersections detected!");
+ }
}
+ }
#if defined(TEST_WITH_SVG)
- {
- std::ostringstream filename;
- filename << "self_ip" << id << ".svg";
+ {
+ std::ostringstream filename;
+ filename << "self_ip" << case_id << ".svg";
- std::ofstream svg(filename.str().c_str());
+ std::ofstream svg(filename.str().c_str());
- bg::svg_mapper<typename bg::point_type<Geometry>::type> mapper(svg, 500, 500);
- mapper.add(geometry);
+ bg::svg_mapper<typename bg::point_type<Geometry>::type> mapper(svg, 500, 500);
+ mapper.add(geometry);
- mapper.map(geometry, "fill:rgb(255,255,128);stroke:rgb(0,0,0);stroke-width:1");
+ mapper.map(geometry, "fill:rgb(255,255,128);stroke:rgb(0,0,0);stroke-width:1");
- BOOST_FOREACH(turn_info const& turn, turns)
- {
- mapper.map(turn.point, "fill:rgb(255,128,0);stroke:rgb(0,0,100);stroke-width:1");
- }
+ BOOST_FOREACH(turn_info const& turn, turns)
+ {
+ mapper.map(turn.point, "fill:rgb(255,128,0);stroke:rgb(0,0,100);stroke-width:1");
}
-#endif
}
-};
+#endif
+}
template <typename Geometry, typename T>
-void test_self_overlay(std::string const& id, T const& expected,
- std::string const& wkt, double precision = 0.001)
+void test_self_overlay(std::string const& case_id, T const& expected,
+ std::string const& wkt,
+ bool check_has_intersections = true)
{
- if (wkt.empty())
- {
- return;
- }
-
Geometry geometry;
bg::read_wkt(wkt, geometry);
-
- std::string caseid = id;
+ bg::correct(geometry);
#ifdef GEOMETRY_DEBUG_INTERSECTION
- std::cout << std::endl << std::endl << "# " << caseid << std::endl;
+ std::cout << std::endl << std::endl << "# " << case_id << std::endl;
#endif
- test_self_intersection_points::apply(caseid, expected, geometry, precision);
+ test_self_intersection_points(case_id, expected, geometry, check_has_intersections);
}
-#if ! defined(GEOMETRY_TEST_MULTI)
template <typename P>
-void test_self_all()
+void test_self_poly()
{
typedef bg::model::polygon<P> polygon;
// Just a normal polygon
- test_self_overlay<polygon>("1", boost::make_tuple(0, 0, 0),
+ test_self_overlay<polygon>("1", 0,
"POLYGON((0 0,0 4,1.5 2.5,2.5 1.5,4 0,0 0))");
// TODO: clean-up and visualize testcases
-
-
// Self intersecting
- test_self_overlay<polygon>("2", boost::make_tuple(2, 2.40625, 2.125),
+ test_self_overlay<polygon>("2", 2,
"POLYGON((1 2,1 1,2 1,2 2.25,3 2.25,3 0,0 0,0 3,3 3,2.75 2,1 2))");
-
// Self intersecting in last segment
-
- test_self_overlay<polygon>("3", boost::make_tuple(1, 2, 2),
+ test_self_overlay<polygon>("3", 1,
"POLYGON((0 2,2 4,2 0,4 2,0 2))");
-
// Self tangent
-
- test_self_overlay<polygon>("4", boost::make_tuple(1, 2, 4),
- "POLYGON((0 0,0 4,4 4,4 0,2 4,0 0))");
-
+ test_self_overlay<polygon>("4", 1,
+ "POLYGON((0 0,0 4,4 4,4 0,2 4,0 0))", false);
// Self tangent in corner
-
- test_self_overlay<polygon>("5", boost::make_tuple(1, 0, 4),
- "POLYGON((0 0,0 4,4 4,4 0,0 4,2 0,0 0))");
-
+ test_self_overlay<polygon>("5", 1,
+ "POLYGON((0 0,0 4,4 4,4 0,0 4,2 0,0 0))", false);
// With spike
-
- test_self_overlay<polygon>("6", boost::make_tuple(1, 4, 2),
+ test_self_overlay<polygon>("6", 1,
"POLYGON((0 0,0 4,4 4,4 2,6 2,4 2,4 0,0 0))");
-
// Non intersection, but with duplicate
-
- test_self_overlay<polygon>("d1", boost::make_tuple(0, 0, 0),
+ test_self_overlay<polygon>("d1", 0,
"POLYGON((0 0,0 4,4 0,4 0,0 0))");
-
// With many duplicates
-
- test_self_overlay<polygon>("d2", boost::make_tuple(0, 0, 0),
+ test_self_overlay<polygon>("d2", 0,
"POLYGON((0 0,0 1,0 1,0 1,0 2,0 2,0 3,0 3,0 3,0 3,0 4,2 4,2 4,4 4,4 0,4 0,3 0,3 0,3 0,3 0,3 0,0 0))");
-
// Hole: interior tangent to exterior
-
- test_self_overlay<polygon>("h1", boost::make_tuple(1, 2, 4),
- "POLYGON((0 0,0 4,4 4,4 0,0 0),(1 2,2 4,3 2,1 2))");
-
+ test_self_overlay<polygon>("h1", 1,
+ "POLYGON((0 0,0 4,4 4,4 0,0 0),(1 2,2 4,3 2,1 2))", false);
// Hole: interior intersecting exterior
-
- test_self_overlay<polygon>("h2", boost::make_tuple(2, 4, 3.5),
+ test_self_overlay<polygon>("h2", 2,
"POLYGON((0 0,0 4,4 4,4 0,0 0),(1 1,1 3,5 4,1 1))");
-
// Hole: two intersecting holes
- test_self_overlay<polygon>("h3", boost::make_tuple(2, 2.5, 2.5),
+ test_self_overlay<polygon>("h3", 2,
"POLYGON((0 0,0 4,4 4,4 0,0 0),(1 1,1 3,3 3,3 1,1 1),(2 2,2 3.5,3.5 3.5,3.5 2,2 2))");
// Hole: self-intersecting hole
- test_self_overlay<polygon>("h4", boost::make_tuple(2, 2.06060606, 2.96969697),
+ test_self_overlay<polygon>("h4", 2,
"POLYGON((0 0,0 4,4 4,4 0,0 0),(1 1,3 3,3 2.5,1 3.5,1.5 3.5,1 1))");
// Many loops (e.g. as result from buffering)
- test_self_overlay<polygon>("case_1", boost::make_tuple(6, 0, 0),
+ test_self_overlay<polygon>("case_1", 6,
"POLYGON((1 3,0 9,9 5,1 7,9 8,2 5,10 10,9 2,1 3))");
- test_self_overlay<polygon>("buffer_poly_indentation8_d_r", boost::make_tuple(3, 0, 0),
+ test_self_overlay<polygon>("buffer_poly_indentation8_d_r", 3,
"POLYGON((-0.8 5,-0.799036 5.03925,-0.796148 5.07841,-0.791341 5.11738,-0.784628 5.15607,-0.776025 5.19438,-0.765552 5.23223,-0.753235 5.26951,-0.739104 5.30615,-0.723191 5.34204,-0.705537 5.37712,-0.686183 5.41128,-0.665176 5.44446,-0.642566 5.47656,-0.618408 5.50751,-0.592761 5.53725,-0.537247 5.59276,-0.507515 5.61841,-0.476559 5.64257,-0.444456 5.66518,-0.411282 5.68618,-0.377117 5.70554,-0.342044 5.72319,-0.306147 5.7391,-0.269512 5.75324,-0.232228 5.76555,-0.194384 5.77603,-0.156072 5.78463,-0.117384 5.79134,-0.0784137 5.79615,-0.0392541 5.79904,0 5.8,4 5.8,4.03925 5.79904,4.07841 5.79615,4.11738 5.79134,4.15607 5.78463,4.19438 5.77603,4.23223 5.76555,4.26951 5.75324,4.30615 5.7391,4.34204 5.72319,4.37712 5.70554,4.41128 5.68618,4.44446 5.66518,4.47656 5.64257,4.50751 5.61841,4.53725 5.59276,4.59276 5.53725,4.61841 5.50751,4.64257 5.47656,4.66518 5.44446,4.68618 5.41128,4.70554 5.37712,4.72319 5.34204,4.7391 5.30615,4.75324 5.26951,4.76555 5.23223,4.77603 5.19438,4.78463 5.15607,4.79134 5.11738,4.79615 5.07841,4.79904 5.03925,4.8 5,4.8 4,4.79976 3.98037,4.79904 3.96075,4.79783 3.94115,4.79615 3.92159,4.79398 3.90207,4.79134 3.88262,4.78822 3.86323,4.78463 3.84393,4.78056 3.82472,4.77603 3.80562,4.77102 3.78663,4.76555 3.76777,4.75962 3.74905,4.75324 3.73049,4.74639 3.71208,4.73137 3.67581,4.72319 3.65796,4.71458 3.64031,4.70554 3.62288,4.69607 3.60568,4.68618 3.58872,4.67588 3.572,4.66518 3.55554,4.65407 3.53935,4.64257 3.52344,4.63068 3.50781,4.61841 3.49249,4.60577 3.47746,4.59276 3.46275,4.5794 3.44837,4.56569 3.43431,3.56569 2.43431,3.53725 2.40724,3.50751 2.38159,3.47656 2.35743,3.44446 2.33482,3.41128 2.31382,3.37712 2.29446,3.34204 2.27681,3.30615 2.2609,3.26951 2.24676,3.23223 2.23445,3.19438 2.22397,3.15607 2.21537,3.11738 2.20866,3.07841 2.20385,3.03925 2.20096,2.96075 2.20096,2.92159 2.20385,2.88262 2.20866,2.84393 2.21537,2.80562 2.22397,2.76777 2.23445,2.73049 2.24676,2.69385 2.2609,2.65796 2.27681,2.62288 2.29446,2.58872 2.31382,2.55554 2.33482,2.52344 2.35743,2.49249 2.38159,2.46275 2.40724,2.43431 2.43431,2.8 2.06863,2.8 2.93137,2.43431 2.56569,2.46275 2.59276,2.49249 2.61841,2.52344 2.64257,2.55554 2.66518,2.58872 2.68618,2.62288 2.70554,2.65796 2.72319,2.69385 2.7391,2.73049 2.75324,2.76777 2.76555,2.80562 2.77603,2.84393 2.78463,2.88262 2.79134,2.92159 2.79615,2.96075 2.79904,3.03925 2.79904,3.07841 2.79615,3.11738 2.79134,3.15607 2.78463,3.19438 2.77603,3.23223 2.76555,3.26951 2.75324,3.30615 2.7391,3.34204 2.72319,3.37712 2.70554,3.41128 2.68618,3.44446 2.66518,3.47656 2.64257,3.50751 2.61841,3.53725 2.59276,3.56569 2.56569,4.56569 1.56569,4.5794 1.55163,4.59276 1.53725,4.60577 1.52254,4.61841 1.50751,4.63068 1.49219,4.64257 1.47656,4.65407 1.46065,4.66518 1.44446,4.67588 1.428,4.68618 1.41128,4.69607 1.39432,4.70554 1.37712,4.71458 1.35969,4.72319 1.34204,4.73137 1.32419,4.74639 1.28792,4.75324 1.26951,4.75962 1.25095,4.76555 1.23223,4.77102 1.21337,4.77603 1.19438,4.78056 1.17528,4.78463 1.15607,4.78822 1.13677,4.79134 1.11738,4.79398 1.09793,4.79615 1.07841,4.79783 1.05885,4.79904 1.03925,4.79976 1.01963,4.8 1,4.8 0,4.79904 -0.0392541,4.79615 -0.0784137,4.79134 -0.117384,4.78463 -0.156072,4.77603 -0.194384,4.76555 -0.232228,4.75324 -0.269512,4.7391 -0.306147,4.72319 -0.342044,4.70554 -0.377117,4.68618 -0.411282,4.66518 -0.444456,4.64257 -0.476559,4.61841 -0.507515,4.59276 -0.537247,4.53725 -0.592761,4.50751 -0.618408,4.47656 -0.642566,4.44446 -0.665176,4.41128 -0.686183,4.37712 -0.705537,4.34204 -0.723191,4.30615 -0.739104,4.26951 -0.753235,4.23223 -0.765552,4.19438 -0.776025,4.15607 -0.784628,4.11738 -0.791341,4.07841 -0.796148,4.03925 -0.799036,4 -0.8,0 -0.8,-0.0392541 -0.799036,-0.0784137 -0.796148,-0.117384 -0.791341,-0.156072 -0.784628,-0.194384 -0.776025,-0.232228 -0.765552,-0.269512 -0.753235,-0.306147 -0.739104,-0.342044 -0.723191,-0.377117 -0.705537,-0.411282 -0.686183,-0.444456 -0.665176,-0.476559 -0.642566,-0.507515 -0.618408,-0.537247 -0.592761,-0.592761 -0.537247,-0.618408 -0.507515,-0.642566 -0.476559,-0.665176 -0.444456,-0.686183 -0.411282,-0.705537 -0.377117,-0.723191 -0.342044,-0.739104 -0.306147,-0.753235 -0.269512,-0.765552 -0.232228,-0.776025 -0.194384,-0.784628 -0.156072,-0.791341 -0.117384,-0.796148 -0.0784137,-0.799036 -0.0392541,-0.8 0,-0.8 5))");
- test_self_overlay<polygon>("toolkit_2", boost::make_tuple(12, 0, 0),
+ test_self_overlay<polygon>("toolkit_2", 12,
"POLYGON((170718 605997,170718 605997,170776 606016,170773 606015,170786 606020,170778 606016,170787 606021,170781 606017,170795 606028,170795 606028,170829 606055,170939 606140,170933 605968,170933 605968,170932 605908,170929 605834,170920 605866,170961 605803,170739 605684,170699 605749,170691 605766,170693 605762,170686 605775,170688 605771,170673 605794,170676 605790,170668 605800,170672 605796,170651 605818,170653 605816,170639 605829,170568 605899,170662 605943,170633 605875,170603 605961,170718 605997))");
// Real-life
std::string const ticket17 = "POLYGON ((-122.28139163 37.37319149,-122.28100699 37.37273669,-122.28002186 37.37303123,-122.27979681 37.37290072,-122.28007349 37.37240493,-122.27977334 37.37220360,-122.27819720 37.37288580,-122.27714184 37.37275161,-122.27678628 37.37253167,-122.27766437 37.37180973,-122.27804382 37.37121453,-122.27687664 37.37101354,-122.27645829 37.37203386,-122.27604423 37.37249110,-122.27632234 37.37343339,-122.27760980 37.37391082,-122.27812478 37.37800320,-122.26117222 37.39121007,-122.25572289 37.39566631,-122.25547269 37.39564971,-122.25366304 37.39552993,-122.24919976 37.39580268,-122.24417933 37.39366907,-122.24051443 37.39094143,-122.23246277 37.38100418,-122.23606766 37.38141338,-122.24001587 37.37738940,-122.23666848 37.37609347,-122.23057450 37.37882170,-122.22679803 37.37807143,-122.22525727 37.37448817,-122.22523229 37.37443000,-122.23083199 37.37609347,-122.23033486 37.37777891,-122.23169030 37.37732117,-122.23229178 37.37709687,-122.23237761 37.37631249,-122.23297776 37.37438834,-122.23872850 37.37165986,-122.24044511 37.36934068,-122.24671067 37.36865847,-122.24825570 37.36981819,-122.25151719 37.36947713,-122.25357721 37.36756706,-122.26001451 37.36579354,-122.25615213 37.36545239,-122.25486458 37.36245083,-122.25357721 37.36108651,-122.25194642 37.36013139,-122.24885652 37.35958557,-122.24911401 37.35849399,-122.25357721 37.35808470,-122.25675286 37.35897159,-122.25855539 37.35753887,-122.26181687 37.35828939,-122.26713837 37.35897159,-122.26782510 37.36108651,-122.26662339 37.36456559,-122.27288911 37.36722601,-122.27366159 37.36531602,-122.27168740 37.36470213,-122.27391900 37.36374701,-122.27074326 37.36245083,-122.27134408 37.35951742,-122.27426240 37.36135926,-122.27709482 37.36115474,-122.27966974 37.36231438,-122.27958391 37.36463382,-122.27572152 37.36463382,-122.27563569 37.36524779,-122.27700899 37.36593000,-122.27709482 37.36763529,-122.27554978 37.36838573,-122.27667254 37.36931478,-122.27677932 37.36932073,-122.27769362 37.36853987,-122.27942490 37.36830803,-122.28178776 37.36677917,-122.28509559 37.36443500,-122.28845129 37.36413744,-122.29194403 37.36695946,-122.29382577 37.36726817,-122.29600414 37.36898512,-122.29733083 37.36995398,-122.29593239 37.37141436,-122.29416649 37.37075898,-122.29325026 37.37108436,-122.29652910 37.37311697,-122.29584237 37.37374461,-122.29537583 37.37573372,-122.29487677 37.37752502,-122.30923212 37.37593011,-122.31122484 37.38230086,-122.31467994 37.38092472,-122.31715663 37.38252181,-122.32307970 37.38166978,-122.31985618 37.37667694,-122.32210304 37.37580220,-122.32581446 37.37589532,-122.32401730 37.37331839,-122.32960417 37.37189020,-122.33465527 37.37331906,-122.33425328 37.37623680,-122.33620676 37.37726132,-122.33397986 37.37822382,-122.33358918 37.38036590,-122.33202637 37.37986918,-122.33147954 37.38101784,-122.33394080 37.38198017,-122.33545239 37.38587943,-122.33478058 37.38785697,-122.33386050 37.38723721,-122.33350041 37.38571137,-122.33122003 37.38548891,-122.33140008 37.38650606,-122.33366042 37.38817490,-122.33244019 37.39157602,-122.33298157 37.39419201,-122.33164013 37.39477028,-122.33202017 37.39518351,-122.33358038 37.39499282,-122.33376050 37.39597811,-122.33550067 37.39734478,-122.33556069 37.39481797,-122.33344040 37.39292676,-122.33638094 37.38892189,-122.34240644 37.38852719,-122.34906293 37.38726898,-122.35072321 37.39338769,-122.34910291 37.39445252,-122.34796272 37.39410291,-122.34449043 37.39640534,-122.34500223 37.39729709,-122.34936291 37.39670910,-122.35098322 37.39531066,-122.35364623 37.39554510,-122.35434369 37.39612111,-122.35798429 37.39600988,-122.35768430 37.39478621,-122.36334519 37.39206871,-122.36604726 37.39203267,-122.36778592 37.39335592,-122.36518870 37.40022011,-122.36554552 37.40247752,-122.36370519 37.40331974,-122.36270506 37.40530591,-122.36320512 37.40670418,-122.36149849 37.40851392,-122.36730580 37.41054938,-122.37263720 37.41378932,-122.37161871 37.42076600,-122.36566153 37.42006292,-122.36520547 37.42742106,-122.37165953 37.43661157,-122.35943972 37.44459022,-122.35356359 37.44600810,-122.33792254 37.45796329,-122.35228518 37.47478091,-122.35127080 37.48181199,-122.34867342 37.48487322,-122.34359717 37.48801082,-122.33388431 37.48677650,-122.33142321 37.48429747,-122.32929580 37.48473149,-122.32609609 37.48291144,-122.32344850 37.48228229,-122.31924364 37.48410234,-122.31677299 37.48114051,-122.31431751 37.47848973,-122.31259201 37.47682190,-122.31515972 37.47568196,-122.31691389 37.47360309,-122.31292494 37.46960081,-122.31130153 37.46937743,-122.30889894 37.47124987,-122.30612839 37.47011613,-122.30149630 37.46568378,-122.30064277 37.46363784,-122.29283821 37.45922376,-122.28630141 37.45415497,-122.28883099 37.44629920,-122.28316717 37.44197138,-122.27554148 37.42297597,-122.25597410 37.40553692,-122.25196579 37.40129593,-122.25012043 37.40049143,-122.24823207 37.39897758,-122.24754551 37.39740941,-122.24778582 37.39621607,-122.24934787 37.39599102,-122.25005170 37.39871849,-122.25222328 37.39863668,-122.25342491 37.39737529,-122.25520162 37.39667289,-122.25528737 37.39522726,-122.27747460 37.37809616,-122.27977493 37.37858717,-122.28157729 37.37920106,-122.28322534 37.37952846,-122.28416939 37.38092656,-122.28621223 37.37984219,-122.28638389 37.37613857,-122.28382607 37.37843722,-122.27930278 37.37718220,-122.28196361 37.37652740,-122.28295058 37.37568167,-122.28216101 37.37523148,-122.28114822 37.37543608,-122.27934569 37.37528613,-122.27996369 37.37448121,-122.28104521 37.37454944,-122.28185197 37.37422883,-122.28290767 37.37474038,-122.28376597 37.37467224,-122.28428104 37.37399012,-122.28402346 37.37338989,-122.28610922 37.37364914,-122.28651264 37.37327388,-122.28672722 37.37207343,-122.28628398 37.37205448,-122.28574460 37.37166682,-122.28479711 37.37200981,-122.28327731 37.37137228,-122.28285511 37.37100700,-122.28279409 37.37125669,-122.28315527 37.37173756,-122.28321872 37.37220569,-122.28187007 37.37231918,-122.28193109 37.37294908,-122.28139163 37.37319149))";
- test_self_overlay<polygon>("ticket17", boost::make_tuple(2, 0, 0), ticket17);
+ test_self_overlay<polygon>("ticket17", 2, ticket17);
std::string const uscounty_ne = "POLYGON((-72.297814 44.183545,-72.30498 44.183149,-72.306552 44.183668,-72.321587 44.188629,-72.368353 44.204057,-72.362972 44.211115,-72.357354 44.218485,-72.336176 44.246264,-72.333283 44.25006,-72.329737 44.254806,-72.327061 44.258388,-72.316301 44.272583,-72.317394 44.293961,-72.317455 44.295412,-72.317621 44.298382,-72.31757 44.298423,-72.308843 44.30567,-72.308336 44.306161,-72.305947 44.30843,-72.295321 44.31908,-72.292014 44.321754,-72.289771 44.323567,-72.283878 44.32772,-72.282024 44.32927,-72.275139 44.335778,-72.271225 44.339322,-72.269779 44.340275,-72.269584 44.340461,-72.267563 44.343747,-72.255707 44.359532,-72.254273 44.361075,-72.249662 44.367162,-72.249549 44.367339,-72.24832 44.369514,-72.247963 44.369843,-72.245885 44.372717,-72.244210 44.375223,-72.240219 44.380321,-72.24014 44.380422,-72.229086 44.391162,-72.224592 44.39553,-72.224364 44.395751,-72.224549 44.395985,-72.226261 44.398726,-72.225478 44.399979,-72.223603 44.402875,-72.222984 44.403317,-72.222454 44.403753,-72.217109 44.411083,-72.218322 44.411745,-72.218833 44.412134,-72.218904 44.412313,-72.219023 44.412613,-72.219444 44.412803,-72.21963 44.412887,-72.220395 44.413162,-72.220619 44.413527,-72.22215 44.414167,-72.222276 44.414327,-72.222276 44.414784,-72.222565 44.415058,-72.22266 44.415469,-72.222565 44.415583,-72.22282 44.416063,-72.222757 44.416452,-72.222543 44.416596,-72.222247 44.416792,-72.221852 44.416792,-72.221439 44.416564,-72.22084 44.416647,-72.220708 44.416898,-72.221268 44.417736,-72.221378 44.418454,-72.220846 44.418454,-72.220492 44.418406,-72.220095 44.418422,-72.219850 44.418865,-72.220006 44.419292,-72.220514 44.419909,-72.220846 44.420637,-72.220581 44.421159,-72.220824 44.421665,-72.221732 44.42214,-72.222374 44.422757,-72.222971 44.422583,-72.223103 44.422282,-72.223259 44.421981,-72.223923 44.42195,-72.224874 44.421491,-72.22514 44.420827,-72.225557 44.420503,-72.226261 44.420157,-72.226305 44.419869,-72.226807 44.419643,-72.226863 44.419618,-72.227333 44.41927,-72.22776 44.41927,-72.228341 44.419488,-72.22864 44.419675,-72.229199 44.420381,-72.229136 44.421066,-72.228977 44.421181,-72.228945 44.421569,-72.228404 44.421958,-72.228297 44.421996,-72.228021 44.422096,-72.227097 44.422119,-72.226936 44.422302,-72.22649 44.422508,-72.225917 44.422645,-72.224831 44.423217,-72.224068 44.42324,-72.223654 44.423537,-72.223654 44.423717,-72.223654 44.423742,-72.223781 44.42381,-72.223908 44.424587,-72.223924 44.424667,-72.227403 44.426083,-72.228008 44.426329,-72.228662 44.426595,-72.229395 44.426894,-72.230747 44.427231,-72.230971 44.427489,-72.234293 44.428436,-72.236972 44.429199,-72.23719 44.430035,-72.238801 44.430515,-72.24147 44.43131,-72.249962 44.43504,-72.252411 44.436005,-72.255865 44.437305,-72.263358 44.440285,-72.268753 44.442368,-72.277045 44.445563,-72.282573 44.447693,-72.292033 44.451282,-72.299916 44.454331,-72.30082 44.45469,-72.321277 44.462572,-72.325974 44.464436,-72.337127 44.468707,-72.341171 44.470234,-72.348117 44.472931,-72.350859 44.473996,-72.358758 44.477037,-72.371940 44.482113,-72.37455 44.483117,-72.374648 44.483164,-72.374779 44.483225,-72.381115 44.485666,-72.381492 44.485688,-72.392298 44.489866,-72.403342 44.494088,-72.418579 44.499928,-72.418900 44.500046,-72.4255 44.502596,-72.426254 44.502888,-72.434315 44.506098,-72.429847 44.512045,-72.428773 44.513475,-72.421543 44.522929,-72.42088 44.523797,-72.419175 44.524889,-72.416181 44.528756,-72.415673 44.529497,-72.411684 44.534382,-72.403416 44.545482,-72.401901 44.547507,-72.398575 44.553005,-72.396373 44.555888,-72.394723 44.556887,-72.389997 44.563861,-72.38785 44.567083,-72.374786 44.584125,-72.374551 44.584042,-72.374141 44.583887,-72.364296 44.579947,-72.363627 44.579974,-72.362284 44.579484,-72.354192 44.576537,-72.351726 44.575587,-72.346763 44.573679,-72.326173 44.566333,-72.322536 44.56502,-72.312109 44.560996,-72.303198 44.557718,-72.30252 44.557467,-72.299574 44.556334,-72.28218 44.550137,-72.282083 44.550101,-72.280975 44.54965,-72.278823 44.548773,-72.268653 44.544573,-72.268148 44.544564,-72.267242 44.544547,-72.267178 44.544523,-72.266593 44.544303,-72.264975 44.543192,-72.263435 44.542639,-72.263284 44.542541,-72.262964 44.542336,-72.261344 44.544238,-72.259827 44.54559,-72.257865 44.548899,-72.254187 44.554001,-72.249372 44.560675,-72.241644 44.570815,-72.237928 44.576139,-72.237433 44.576818,-72.236396 44.578188,-72.226097 44.591711,-72.224712 44.59373,-72.21978 44.600803,-72.218155 44.602206,-72.210135 44.612594,-72.209324 44.613712,-72.208816 44.614535,-72.207016 44.617438,-72.202901 44.624073,-72.202293 44.625051,-72.199855 44.62841,-72.198157 44.630644,-72.194619 44.635355,-72.193153 44.637354,-72.19052 44.641163,-72.188343 44.644224,-72.184378 44.649871,-72.182172 44.652973,-72.176 44.661598,-72.173651 44.665011,-72.169648 44.67078,-72.165261 44.676857,-72.163971 44.678423,-72.162882 44.679959,-72.158868 44.685588,-72.156736 44.688747,-72.152374 44.694988,-72.150094 44.698355,-72.147612 44.7018,-72.147155 44.702567,-72.146873 44.703032,-72.146226 44.703325,-72.145589 44.702653,-72.141899 44.701438,-72.132779 44.698434,-72.128309 44.696934,-72.124544 44.695638,-72.110654 44.691192,-72.109358 44.690747,-72.088864 44.683714,-72.09305 44.694921,-72.094078 44.697511,-72.094433 44.698327,-72.09461 44.698776,-72.094955 44.699515,-72.095146 44.700011,-72.099952 44.712285,-72.100813 44.714476,-72.101332 44.715715,-72.101783 44.717146,-72.108368 44.733658,-72.114503 44.749624,-72.091369 44.738322,-72.083693 44.734606,-72.061312 44.723479,-72.039137 44.7125,-72.036351 44.711121,-72.02562 44.705812,-72.024818 44.705401,-72.012503 44.698821,-72.010696 44.699614,-72.007273 44.70299,-72.006749 44.703702,-72.005453 44.70441,-72.004999 44.704665,-72.002948 44.706065,-72.002574 44.706344,-71.998947 44.710903,-71.9954 44.715164,-71.995032 44.715247,-71.989775 44.720625,-71.988815 44.721224,-71.981344 44.728822,-71.98093 44.729224,-71.977211 44.732588,-71.976089 44.733763,-71.974770 44.735186,-71.974591 44.73538,-71.973434 44.736503,-71.97039 44.73946,-71.959927 44.749625,-71.958846 44.750086,-71.950606 44.758585,-71.950276 44.758952,-71.943595 44.765337,-71.939936 44.769032,-71.930968 44.765049,-71.928756 44.762738,-71.921857 44.759843,-71.902374 44.750318,-71.882733 44.740608,-71.882573 44.740269,-71.881573 44.739354,-71.876888 44.736935,-71.875148 44.736035,-71.874539 44.735721,-71.858381 44.72766,-71.837294 44.716637,-71.83775 44.716201,-71.852267 44.702366,-71.856071 44.69874,-71.856484 44.698345,-71.87445 44.681027,-71.881231 44.674373,-71.882862 44.67311,-71.883675 44.67175,-71.88436 44.671401,-71.885978 44.669571,-71.888314 44.667829,-71.890624 44.665594,-71.891007 44.664845,-71.898726 44.657917,-71.902653 44.654205,-71.910085 44.64718,-71.910282 44.647038,-71.907401 44.645283,-71.894791 44.638722,-71.89426 44.638626,-71.892962 44.637931,-71.874538 44.628066,-71.86852 44.625053,-71.848306 44.614173,-71.848221 44.614129,-71.842803 44.611203,-71.842732 44.611165,-71.843021 44.610884,-71.856079 44.597255,-71.856286 44.59707,-71.874003 44.580903,-71.874537 44.580409,-71.898111 44.557857,-71.89867 44.557286,-71.908656 44.54708,-71.884835 44.524403,-71.884487 44.524048,-71.874412 44.51323,-71.871838 44.510637,-71.871760 44.51054,-71.861209 44.500056,-71.856636 44.496178,-71.8567 44.496122,-71.874535 44.480282,-71.885627 44.470472,-71.891883 44.464859,-71.893164 44.46383,-71.903342 44.454655,-71.903549 44.454476,-71.912995 44.450245,-71.921348 44.446484,-71.922164 44.44623,-71.925058 44.444914,-71.926307 44.44418,-71.933287 44.441174,-71.91481 44.423081,-71.90842 44.416928,-71.905891 44.414322,-71.898406 44.407105,-71.897962 44.406696,-71.897325 44.406109,-71.886305 44.395364,-71.874506 44.383831,-71.867904 44.377301,-71.865579 44.374962,-71.858643 44.368062,-71.849854 44.359674,-71.847478 44.357361,-71.844776 44.354732,-71.841775 44.351811,-71.840508 44.350578,-71.837656 44.347801,-71.838072 44.347593,-71.83875 44.34721,-71.839767 44.346579,-71.840775 44.345795,-71.84159 44.3453,-71.842483 44.344757,-71.843283 44.34444,-71.844319 44.344204,-71.845288 44.343871,-71.845882 44.343666,-71.846346 44.343506,-71.848005 44.342766,-71.849099 44.342345,-71.849899 44.341978,-71.851118 44.341405,-71.85184 44.341143,-71.852628 44.340873,-71.85355 44.340717,-71.854404 44.340617,-71.855257 44.340589,-71.85619 44.340522,-71.857168 44.340463,-71.858155 44.340363,-71.859166 44.340369,-71.859940 44.340357,-71.860974 44.340282,-71.861941 44.340109,-71.86265 44.33992,-71.863291 44.339778,-71.863719 44.339644,-71.864485 44.339374,-71.865196 44.339071,-71.865895 44.338801,-71.866458 44.338514,-71.866753 44.338322,-71.867509 44.337964,-71.868253 44.337638,-71.869120 44.337288,-71.869616 44.337129,-71.869909 44.336962,-71.870573 44.336804,-71.871203 44.336686,-71.871488 44.336689,-71.871833 44.336641,-71.872472 44.336628,-71.873009 44.336736,-71.873713 44.336973,-71.874326 44.337195,-71.874535 44.337123,-71.874997 44.337226,-71.875514 44.337266,-71.875863 44.33737,-71.876122 44.337482,-71.8762 44.337539,-71.87629 44.337651,-71.876313 44.337732,-71.876324 44.337844,-71.876324 44.337925,-71.876358 44.338054,-71.876403 44.338167,-71.876448 44.338287,-71.876583 44.338424,-71.876685 44.338512,-71.876731 44.338548,-71.876973 44.338572,-71.877493 44.338615,-71.877628 44.338623,-71.877965 44.338719"
",-71.878695 44.338964,-71.879896 44.339367,-71.880546 44.339559,-71.880962 44.33976,-71.881154 44.33988,-71.881895 44.340209,-71.883973 44.341228,-71.884917 44.341717,-71.885044 44.341794,-71.887531 44.3426,-71.888182 44.342807,-71.888483 44.342846,-71.888866 44.342916,-71.88893 44.342938,-71.888994 44.342945,-71.889404 44.343039,-71.889893 44.343174,-71.890324 44.343274,-71.890332 44.343272,-71.890380 44.343255,-71.890408 44.343246,-71.890456 44.343228,-71.890548 44.343209,-71.890644 44.343192,-71.890739 44.343177,-71.890844 44.343173,-71.890926 44.343201,-71.891373 44.343335,-71.892197 44.343693,-71.894326 44.344591,-71.895856 44.345209,-71.898726 44.346251,-71.900162 44.346722,-71.902332 44.347499,-71.903115 44.347694,-71.905036 44.348154,-71.906001 44.348239,-71.906909 44.348284,-71.917008 44.346714,-71.917434 44.346535,-71.918748 44.345555,-71.921314 44.343835,-71.921459 44.343739,-71.924607 44.342252,-71.925088 44.342024,-71.926666 44.340286,-71.928041 44.338516,-71.929109 44.337577,-71.932138 44.336541,-71.935395 44.33577,-71.936773 44.335684,-71.939049 44.335843,-71.942442 44.336805,-71.943365 44.337188,-71.944254 44.337643,-71.945162 44.337744,-71.952593 44.337689,-71.956516 44.337632,-71.958119 44.337544,-71.959965 44.337013,-71.961822 44.336634,-71.963133 44.336556,-71.972572 44.336781,-71.973300 44.336777,-71.977175 44.337518,-71.977971 44.33757,-71.979505 44.337354,-71.980559 44.337486,-71.98112 44.3375,-71.984281 44.336414,-71.984617 44.336243,-71.984729 44.335882,-71.986483 44.331218,-71.987862 44.330081,-71.988305 44.329768,-71.989058 44.329561,-71.992446 44.328548,-71.993662 44.327611,-71.999448 44.325595,-72.000793 44.325295,-72.001221 44.325234,-72.001792 44.325079,-72.002314 44.324871,-72.003547 44.324397,-72.00485 44.324054,-72.005532 44.323829,-72.00676 44.323357,-72.009976 44.321951,-72.012172 44.321408,-72.014543 44.321032,-72.015936 44.320849,-72.01913 44.320383,-72.019577 44.320498,-72.019801 44.32052,-72.019908 44.320683,-72.020149 44.320818,-72.021041 44.320887,-72.021994 44.321184,-72.025782 44.322054,-72.028201 44.322375,-72.029061 44.322398,-72.029698 44.32217,-72.031322 44.320936,-72.031959 44.320662,-72.033136 44.320365,-72.033137 44.319543,-72.033773 44.317989,-72.033806 44.317349,-72.033678 44.316823,-72.03317 44.31632,-72.032341 44.315752,-72.031937 44.315475,-72.031802 44.315383,-72.031739 44.314652,-72.031549 44.313966,-72.031708 44.313007,-72.032218 44.311955,-72.032505 44.310653,-72.032444 44.307134,-72.032316 44.306677,-72.032541 44.303752,-72.032955 44.302701,-72.033464 44.301878,-72.034324 44.300941,-72.03487 44.300512,-72.035660 44.29989,-72.03633 44.298634,-72.03703 44.297834,-72.039003 44.296463,-72.039836 44.296087,-72.040117 44.295962,-72.040543 44.295876,-72.041609 44.295665,-72.041856 44.29565,-72.043202 44.295579,-72.043775 44.295608,-72.044546 44.294969,-72.044926 44.294636,-72.045137 44.29391,-72.045265 44.293198,-72.045745 44.292448,-72.046302 44.291983,-72.047349 44.291581,-72.048216 44.291404,-72.049472 44.291186,-72.051541 44.290889,-72.053355 44.290501,-72.054046 44.289971,-72.055002 44.288945,-72.055964 44.288162,-72.056078 44.287893,-72.056409 44.287618,-72.057273 44.287163,-72.05888 44.28624,-72.059957 44.284767,-72.062298 44.281754,-72.065434 44.277235,-72.066464 44.275093,-72.067774 44.270976,-72.066464 44.268331,-72.065949 44.268666,-72.064544 44.267997,-72.062671 44.269336,-72.060846 44.269972,-72.05874 44.270005,-72.058646 44.269269,-72.059395 44.268365,-72.05888 44.266926,-72.059113 44.265787,-72.058553 44.265285,-72.059021 44.265018,-72.059581 44.264315,-72.059535 44.265687,-72.060378 44.264951,-72.061173 44.263377,-72.061033 44.26244,-72.060333 44.261643,-72.060398 44.261463,-72.060723 44.261313,-72.061173 44.261258,-72.061495 44.260726,-72.06156 44.260621,-72.061542 44.26047,-72.060878 44.260436,-72.060518 44.260284,-72.060307 44.259961,-72.060259 44.259789,-72.060163 44.259766,-72.060194 44.257778,-72.060099 44.257595,-72.059838 44.256295,-72.059782 44.256018,-72.059523 44.255798,-72.059432 44.255721,-72.059018 44.255013,-72.058161 44.253916,-72.058224 44.253823,-72.058033 44.253664,-72.05708 44.252064,-72.056889 44.251859,-72.055694 44.250061,-72.055641 44.249649,-72.055515 44.249615,-72.055483 44.24912,-72.055134 44.248435,-72.054276 44.247703,-72.05399 44.246926,-72.051002 44.244892,-72.050112 44.244046,-72.049604 44.243292,-72.048999 44.242058,-72.04846 44.241212,-72.04792 44.239498,-72.047889 44.238493,-72.048621 44.237145,-72.050209 44.235066,-72.050656 44.233581,-72.052118 44.229856,-72.052469 44.229239,-72.052532 44.228805,-72.053264 44.227114,-72.053581 44.22604,-72.053995 44.224028,-72.0539 44.222703,-72.053614 44.221081,-72.053518 44.221035,-72.053518 44.220852,-72.053423 44.220784,-72.053423 44.220601,-72.053328 44.220487,-72.053328 44.220327,-72.053043 44.219732,-72.052662 44.218841,-72.052966 44.217794,-72.053232 44.216876,-72.05495 44.213677,-72.055903 44.212694,-72.056952 44.212169,-72.058605 44.211803,-72.058954 44.211597,-72.059716 44.210752,-72.060067 44.209998,-72.060067 44.209816,-72.058987 44.208512,-72.058605 44.208215,-72.058542 44.208032,-72.05886 44.207667,-72.058987 44.207164,-72.058906 44.20701,-72.058796 44.206798,-72.058066 44.206067,-72.058194 44.204907,-72.058287 44.204056,-72.058987 44.202114,-72.059564 44.201223,-72.059614 44.201144,-72.059669 44.201061,-72.060067 44.200446,-72.060543 44.200012,-72.062035 44.199074,-72.063560 44.198457,-72.064005 44.198069,-72.064577 44.196949,-72.064608 44.196058,-72.064608 44.195692,-72.06499 44.194801,-72.065213 44.194115,-72.065403 44.192607,-72.066102 44.19039,-72.066166 44.189773,-72.065911 44.189293,-72.065085 44.188631,-72.064285 44.187888,-72.06299 44.186688,-72.061337 44.184951,-72.05956 44.182666,-72.059116 44.181912,-72.058956 44.18182,-72.057496 44.179444,-72.056987 44.178096,-72.056861 44.178027,-72.056862 44.177822,-72.056798 44.17773,-72.056798 44.177433,-72.056575 44.176679,-72.056480 44.176633,-72.05629 44.175742,-72.054734 44.173114,-72.054227 44.172108,-72.054005 44.170646,-72.05391 44.170577,-72.053783 44.169869,-72.053021 44.167903,-72.052196 44.166921,-72.051655 44.166463,-72.050575 44.165961,-72.049179 44.165138,-72.048925 44.164795,-72.048799 44.164498,-72.048672 44.164452,-72.048639 44.164201,-72.048418 44.163926,-72.048355 44.163058,-72.048101 44.162144,-72.047592 44.161801,-72.047022 44.161595,-72.046133 44.161549,-72.043244 44.161869,-72.042830 44.161754,-72.042386 44.161343,-72.042386 44.160817,-72.042672 44.160292,-72.043785 44.158852,-72.044102 44.158121,-72.044039 44.157435,-72.043785 44.157047,-72.0435 44.156841,-72.042801 44.156613,-72.042103 44.15659,-72.041119 44.156864,-72.040167 44.157023,-72.039594 44.156749,-72.039245 44.156703,-72.039150 44.156498,-72.03988 44.155932,-72.039976 44.155858,-72.040082 44.155749,-72.040737 44.155972,-72.041923 44.156312,-72.042043 44.156349,-72.042801 44.156613,-72.044676 44.157097,-72.044884 44.157151,-72.045078 44.157206,-72.045767 44.157401,-72.046234 44.157563,-72.047344 44.157836,-72.048554 44.158134,-72.058602 44.160893,-72.065528 44.162794,-72.066594 44.163099,-72.070984 44.164364,-72.083157 44.167671,-72.083344 44.167722,-72.083451 44.167775,-72.087279 44.168733,-72.091724 44.16998,-72.092625 44.170284,-72.097954 44.171765,-72.100237 44.172391,-72.100809 44.172548,-72.100996 44.172599,-72.101265 44.172673,-72.10189 44.172759,-72.102047 44.172803,-72.105729 44.173842,-72.109921 44.175046,-72.110927 44.175333,-72.116790 44.176949,-72.122705 44.178552,-72.124310 44.179174,-72.133395 44.181725,-72.138984 44.183365,-72.139194 44.183494,-72.139466 44.183503,-72.140796 44.183868,-72.151283 44.186773,-72.166147 44.190938,-72.16836 44.191508,-72.17026 44.192053,-72.171978 44.19207,-72.174381 44.192183,-72.175395 44.192186,-72.187153 44.191379,-72.190945 44.191111,-72.191322 44.191101,-72.192686 44.190957,-72.199012 44.190573,-72.204065 44.190303,-72.209594 44.190003,-72.210965 44.189741,-72.221076 44.189175,-72.229408 44.188625,-72.237321 44.188057,-72.238117 44.188023,-72.24954 44.187528,-72.271323 44.185807,-72.282972 44.184887,-72.297814 44.183545))";
- test_self_overlay<polygon>("uscounty_ne", boost::make_tuple(1, 0, 0), uscounty_ne);
-
+ test_self_overlay<polygon>("uscounty_ne", 1, uscounty_ne, false);
+
+ // First two points are similar but not equal, causing a self-intersection (continuation)
+ // ----s-C------
+ // C=closing point, s=similar point, lying a little south-west. This causes a c/c (continue) intersection point.
+ // Was caused by error in neighbouring (get_turns.cpp)
+ std::string const ticket_9081_20873 =
+ "POLYGON((0.5246796698528305436 0.56288112949742163948,"
+ "0.52467966985283021053 0.56288112949742141744,"
+ "0.51150490059304598578 0.55384245388529118603,0.51053725440836283944 0.56288079068493779289,"
+ "0.55019180962335967333 0.60735187918348676472,0.5445123657939807682 0.58331435417450905323,"
+ "0.5246796698528305436 0.56288112949742163948))";
+ test_self_overlay<polygon>("ticket_9081_20873", 0, ticket_9081_20873);
+
+ // Was caused by error in neighbouring (get_turns.cpp)
+ std::string const ggl_list_2013_11_06_joan = "POLYGON((137.14632454923444 200.61927877947369,50 224, 323 497,255 169,137.14632454923444 200.61927877947369))";
+ test_self_overlay<polygon>("ggl_list_2013_11_06_joan", 0, ggl_list_2013_11_06_joan);
+
+ test_self_overlay<polygon>("ggl_list_20131119_james", 0, ggl_list_20131119_james[0]);
+}
+template <typename P>
+void test_self_ls()
+{
+ //typedef bg::model::linestring<P> linestring;
+ // Same case - but if this is a linestring.
+ // TODO: this does not compile yet, but it should return 1 intersection point at the "closing" point
+ // std::string const ggl_list_2013_11_06_joan_linestring = "LINESTRING(137.14632454923444 200.61927877947369,50 224, 323 497,255 169,137.14632454923444 200.61927877947369)";
+ // test_self_overlay<linestring>("ggl_list_2013_11_06_joan_linestring", 1, ggl_list_2013_11_06_joan_linestring);
}
-#endif
+template <typename P>
+void test_self_all()
+{
+ test_self_poly<P>();
+ test_self_ls<P>();
+}
-#if ! defined(GEOMETRY_TEST_MULTI)
int test_main(int, char* [])
{
test_self_all<bg::model::d2::point_xy<double> >();
return 0;
}
-#endif
diff --git a/libs/geometry/test/algorithms/overlay/self_intersection_points.vcproj b/libs/geometry/test/algorithms/overlay/self_intersection_points.vcproj
deleted file mode 100644
index a4cdb80498..0000000000
--- a/libs/geometry/test/algorithms/overlay/self_intersection_points.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="self_intersection_points"
- ProjectGUID="{06B6DCBB-AEDA-49FA-81D9-EA8959958EFC}"
- RootNamespace="self_intersection_points"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\self_intersection_points"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\self_intersection_points"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\self_intersection_points.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/split_rings.cpp b/libs/geometry/test/algorithms/overlay/split_rings.cpp
index 9a281da16c..00cf9f85b6 100644
--- a/libs/geometry/test/algorithms/overlay/split_rings.cpp
+++ b/libs/geometry/test/algorithms/overlay/split_rings.cpp
@@ -30,7 +30,7 @@
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
diff --git a/libs/geometry/test/algorithms/overlay/split_rings.vcproj b/libs/geometry/test/algorithms/overlay/split_rings.vcproj
deleted file mode 100644
index cb9b6bf78c..0000000000
--- a/libs/geometry/test/algorithms/overlay/split_rings.vcproj
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="split_rings"
- ProjectGUID="{271231F9-F7DA-4218-8538-0E9DCD688D09}"
- RootNamespace="split_rings"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\split_rings"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\split_rings"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\split_rings.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/test_get_turns.hpp b/libs/geometry/test/algorithms/overlay/test_get_turns.hpp
new file mode 100644
index 0000000000..0950ebfe1f
--- /dev/null
+++ b/libs/geometry/test/algorithms/overlay/test_get_turns.hpp
@@ -0,0 +1,217 @@
+// 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 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#ifndef BOOST_GEOMETRY_TEST_ALGORITHMS_OVERLAY_TEST_GET_TURNS_HPP
+#define BOOST_GEOMETRY_TEST_ALGORITHMS_OVERLAY_TEST_GET_TURNS_HPP
+
+#include <iostream>
+#include <iomanip>
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/strategies/strategies.hpp>
+
+#include <boost/geometry/algorithms/detail/overlay/get_turns.hpp>
+
+#include <boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp>
+
+#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/geometry/io/wkt/write.hpp>
+
+template <int Version = 0>
+struct expected_pusher
+{
+ static const int version = Version;
+
+ void push_back(std::string const& ex) { vec.push_back(ex); }
+ expected_pusher & operator()(std::string const& ex)
+ {
+ push_back(ex);
+ return *this;
+ }
+
+ typedef std::vector<std::string>::iterator iterator;
+ typedef std::vector<std::string>::const_iterator const_iterator;
+
+ iterator begin() { return vec.begin(); }
+ iterator end() { return vec.end(); }
+ const_iterator begin() const { return vec.begin(); }
+ const_iterator end() const { return vec.end(); }
+
+ std::vector<std::string> vec;
+};
+
+expected_pusher<1> expected(std::string const& ex)
+{
+ expected_pusher<1> res;
+ return res(ex);
+}
+
+template <int Version>
+struct equal_turn
+{
+ equal_turn(std::string const& s) : turn_ptr(&s) {}
+
+ template <typename T>
+ bool operator()(T const& t) const
+ {
+ BOOST_ASSERT(turn_ptr && turn_ptr->size() == 3);
+ return bg::method_char(t.method) == (*turn_ptr)[0]
+ && bg::operation_char(t.operations[0].operation) == (*turn_ptr)[1]
+ && bg::operation_char(t.operations[1].operation) == (*turn_ptr)[2];
+ }
+
+ const std::string * turn_ptr;
+};
+
+template <>
+struct equal_turn<1>
+{
+ equal_turn(std::string const& s) : turn_ptr(&s) {}
+
+ template <typename T>
+ bool operator()(T const& t) const
+ {
+ unsigned count = turn_ptr->size();
+ BOOST_ASSERT(turn_ptr && count >= 1);
+ return bg::method_char(t.method) == (*turn_ptr)[0]
+ && ( count > 1
+ ? bg::operation_char(t.operations[0].operation) == (*turn_ptr)[1]
+ : true )
+ && ( count > 2
+ ? bg::operation_char(t.operations[1].operation) == (*turn_ptr)[2]
+ : true )
+ && ( count > 3
+ ? is_colinear_char(t.operations[0].is_collinear) == (*turn_ptr)[3]
+ : true )
+ && ( count > 4
+ ? is_colinear_char(t.operations[1].is_collinear) == (*turn_ptr)[4]
+ : true );
+ }
+
+ static inline char is_colinear_char(bool is_collinear)
+ {
+ return is_collinear ? '=' : '+';
+ }
+
+ const std::string * turn_ptr;
+};
+
+template <typename Geometry1, typename Geometry2, typename Expected>
+void check_geometry_range(
+ Geometry1 const& g1,
+ Geometry2 const& g2,
+ std::string const& wkt1,
+ std::string const& wkt2,
+ Expected const& expected)
+{
+ typedef bg::detail::no_rescale_policy robust_policy_type;
+ typedef typename bg::point_type<Geometry2>::type point_type;
+
+ typedef typename bg::segment_ratio_type<point_type, robust_policy_type>::type segment_ratio_type;
+
+ typedef bg::detail::overlay::turn_info
+ <
+ typename bg::point_type<Geometry2>::type,
+ segment_ratio_type,
+ typename bg::detail::get_turns::turn_operation_type
+ <
+ Geometry1,
+ Geometry2,
+ segment_ratio_type
+ >::type
+ > turn_info;
+ typedef bg::detail::overlay::assign_null_policy assign_policy_t;
+ typedef bg::detail::get_turns::no_interrupt_policy interrupt_policy_t;
+
+ std::vector<turn_info> turns;
+ interrupt_policy_t interrupt_policy;
+ robust_policy_type robust_policy;
+
+ // Don't switch the geometries
+ typedef bg::detail::get_turns::get_turn_info_type<Geometry1, Geometry2, assign_policy_t> turn_policy_t;
+ bg::dispatch::get_turns
+ <
+ typename bg::tag<Geometry1>::type, typename bg::tag<Geometry2>::type,
+ Geometry1, Geometry2, false, false,
+ turn_policy_t
+ >::apply(0, g1, 1, g2, robust_policy, turns, interrupt_policy);
+
+ bool ok = boost::size(expected) == turns.size();
+
+ BOOST_CHECK_MESSAGE(ok,
+ "get_turns: " << wkt1 << " and " << wkt2
+ << " -> Expected turns #: " << boost::size(expected) << " detected turns #: " << turns.size());
+
+ for ( typename boost::range_iterator<Expected const>::type sit = boost::begin(expected) ;
+ sit != boost::end(expected) ; ++sit)
+ {
+ typename std::vector<turn_info>::iterator
+ it = std::find_if(turns.begin(), turns.end(), equal_turn<Expected::version>(*sit));
+
+ if ( it != turns.end() )
+ turns.erase(it);
+ else
+ {
+ BOOST_CHECK_MESSAGE(false,
+ "get_turns: " << wkt1 << " and " << wkt2
+ << " -> Expected turn: " << *sit << " not found");
+ }
+ }
+}
+
+template <typename Geometry1, typename Geometry2, typename Expected>
+void test_geometry_range(std::string const& wkt1, std::string const& wkt2,
+ Expected const& expected)
+{
+ Geometry1 geometry1;
+ Geometry2 geometry2;
+ bg::read_wkt(wkt1, geometry1);
+ bg::read_wkt(wkt2, geometry2);
+ check_geometry_range(geometry1, geometry2, wkt1, wkt2, expected);
+}
+
+template <typename G1, typename G2>
+void test_geometry(std::string const& wkt1, std::string const& wkt2,
+ std::string const& ex0)
+{
+ test_geometry_range<G1, G2>(wkt1, wkt2, expected(ex0));
+}
+
+template <typename G1, typename G2>
+void test_geometry(std::string const& wkt1, std::string const& wkt2,
+ std::string const& ex0, std::string const& ex1)
+{
+ test_geometry_range<G1, G2>(wkt1, wkt2, expected(ex0)(ex1));
+}
+
+template <typename G1, typename G2>
+void test_geometry(std::string const& wkt1, std::string const& wkt2,
+ std::string const& ex0, std::string const& ex1, std::string const& ex2)
+{
+ test_geometry_range<G1, G2>(wkt1, wkt2, expected(ex0)(ex1)(ex2));
+}
+
+template <typename G1, typename G2, int Version>
+void test_geometry(std::string const& wkt1, std::string const& wkt2,
+ expected_pusher<Version> const& expected)
+{
+ test_geometry_range<G1, G2>(wkt1, wkt2, expected);
+}
+
+#endif // BOOST_GEOMETRY_TEST_ALGORITHMS_OVERLAY_TEST_GET_TURNS_HPP
diff --git a/libs/geometry/test/algorithms/overlay/traverse.cpp b/libs/geometry/test/algorithms/overlay/traverse.cpp
index cebd8b0009..1fb7123b2c 100644
--- a/libs/geometry/test/algorithms/overlay/traverse.cpp
+++ b/libs/geometry/test/algorithms/overlay/traverse.cpp
@@ -7,9 +7,10 @@
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
-#define BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE
-// #define BOOST_GEOMETRY_OVERLAY_NO_THROW
-// #define TEST_WITH_SVG
+#define BOOST_GEOMETRY_DEFINE_STREAM_OPERATOR_SEGMENT_RATIO
+//#define BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE
+//#define BOOST_GEOMETRY_OVERLAY_NO_THROW
+//#define HAVE_TTMATH
#include <iostream>
#include <iomanip>
@@ -20,7 +21,7 @@
#include <boost/type_traits/is_same.hpp>
#ifdef HAVE_TTMATH
-# include <boost/geometry/extensions/contrib/ttmath_stub.hpp>
+# include <boost/geometry/contrib/ttmath_stub.hpp>
#endif
#include <geometry_test_common.hpp>
@@ -42,7 +43,6 @@
#include <boost/geometry/algorithms/detail/overlay/turn_info.hpp>
#include <boost/geometry/algorithms/detail/overlay/enrichment_info.hpp>
#include <boost/geometry/algorithms/detail/overlay/traversal_info.hpp>
-#include <boost/geometry/algorithms/detail/overlay/calculate_distance_policy.hpp>
#include <boost/geometry/algorithms/detail/overlay/get_turns.hpp>
#include <boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp>
@@ -50,6 +50,7 @@
#include <boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp>
+#include <boost/geometry/policies/robustness/get_rescale_policy.hpp>
#include <boost/geometry/algorithms/area.hpp>
#include <boost/geometry/algorithms/correct.hpp>
@@ -61,7 +62,7 @@
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
#include <boost/geometry/strategies/strategies.hpp>
@@ -73,6 +74,7 @@ static inline std::string operation(int d)
return d == 1 ? "union" : "intersection";
}
+
namespace detail
{
@@ -144,19 +146,26 @@ struct test_traverse
typename bg::cs_tag<G1>::type
>::type side_strategy_type;
+ typedef typename bg::point_type<G2>::type point_type;
+ typedef typename bg::rescale_policy_type<point_type>::type
+ rescale_policy_type;
+
+ rescale_policy_type rescale_policy
+ = bg::get_rescale_policy<rescale_policy_type>(g1, g2);
typedef bg::detail::overlay::traversal_turn_info
- <
- typename bg::point_type<G2>::type
- > turn_info;
+ <
+ point_type,
+ typename bg::segment_ratio_type<point_type, rescale_policy_type>::type
+ > turn_info;
std::vector<turn_info> turns;
bg::detail::get_turns::no_interrupt_policy policy;
- bg::get_turns<Reverse1, Reverse2, bg::detail::overlay::calculate_distance_policy>(g1, g2, turns, policy);
+ bg::get_turns<Reverse1, Reverse2, bg::detail::overlay::assign_null_policy>(g1, g2, rescale_policy, turns, policy);
bg::enrich_intersection_points<Reverse1, Reverse2>(turns,
Direction == 1 ? bg::detail::overlay::operation_union
: bg::detail::overlay::operation_intersection,
- g1, g2, side_strategy_type());
+ g1, g2, rescale_policy, side_strategy_type());
typedef bg::model::ring<typename bg::point_type<G2>::type> ring_type;
typedef std::vector<ring_type> out_vector;
@@ -167,11 +176,12 @@ struct test_traverse
<
Reverse1, Reverse2,
G1, G2
- >::apply(g1, g2, Direction, turns, v);
+ >::apply(g1, g2, Direction, rescale_policy, turns, v);
// Check number of resulting rings
BOOST_CHECK_MESSAGE(expected_count == boost::size(v),
"traverse: " << id
+ << " (" << operation(Direction) << ")"
<< " #shapes expected: " << expected_count
<< " detected: " << boost::size(v)
<< " type: " << string_from_type
@@ -225,7 +235,7 @@ struct test_traverse
BOOST_FOREACH(turn_info const& turn, turns)
{
- int lineheight = 10;
+ int lineheight = 8;
mapper.map(turn.point, "fill:rgb(255,128,0);"
"stroke:rgb(0,0,0);stroke-width:1", 3);
@@ -241,7 +251,7 @@ struct test_traverse
boost::numeric_cast<int>(half
+ ten * bg::get<1>(turn.point))
);
- std::string style = "fill:rgb(0,0,0);font-family:Arial;font-size:10px";
+ std::string style = "fill:rgb(0,0,0);font-family:Arial;font-size:8px";
if (turn.discarded)
{
@@ -261,6 +271,9 @@ struct test_traverse
<< (turn.is_discarded() ? " (discarded) " : turn.blocked() ? " (blocked)" : "")
<< std::endl;
+ out << "r: " << turn.operations[0].fraction
+ << " ; " << turn.operations[1].fraction
+ << std::endl;
if (turn.operations[0].enriched.next_ip_index != -1)
{
out << "ip: " << turn.operations[0].enriched.next_ip_index;
@@ -270,7 +283,7 @@ struct test_traverse
out << "vx: " << turn.operations[0].enriched.travels_to_vertex_index
<< " -> ip: " << turn.operations[0].enriched.travels_to_ip_index;
}
- out << " ";
+ out << " / ";
if (turn.operations[1].enriched.next_ip_index != -1)
{
out << "ip: " << turn.operations[1].enriched.next_ip_index;
@@ -321,9 +334,9 @@ struct test_traverse
<< std::endl
<< std::setprecision(3)
- << "dist: " << turn.operations[0].enriched.distance
- << " / " << turn.operations[1].enriched.distance
- << std::endl
+ << "dist: " << turn.operations[0].fraction
+ << " / " << turn.operations[1].fraction
+ << std::endl;
*/
@@ -410,7 +423,7 @@ void test_all(bool test_self_tangencies = true, bool test_mixed = false)
typedef bg::model::point<T, 2, bg::cs::cartesian> P;
typedef bg::model::polygon<P> polygon;
- typedef bg::model::box<P> box;
+ //typedef bg::model::box<P> box;
// 1-6
test_traverse<polygon, polygon, operation_intersection>::apply("1", 1, 5.4736, case_1[0], case_1[1]);
@@ -633,8 +646,7 @@ void test_all(bool test_self_tangencies = true, bool test_mixed = false)
2, 16, case_53[0], case_53[2]);
if (test_self_tangencies)
{
- // The st_st version might generate one ring with area zero, which is OK
- test_traverse<polygon, polygon, operation_union>::apply("54_st_st", 3, 20, case_54[0], case_54[2]);
+ test_traverse<polygon, polygon, operation_union>::apply("54_st_st", 2, 20, case_54[0], case_54[2]);
test_traverse<polygon, polygon, operation_union>::apply("54_st_iet", 2, 20, case_54[0], case_54[3]);
test_traverse<polygon, polygon, operation_union>::apply("54_iet_st", 2, 20, case_54[1], case_54[2]);
}
@@ -685,9 +697,12 @@ void test_all(bool test_self_tangencies = true, bool test_mixed = false)
test_traverse<polygon, polygon, operation_union>::apply("72",
1, 10.65, case_72[0], case_72[1]);
-
-
// other
+ test_traverse<polygon, polygon, operation_union>::apply("box_poly5",
+ 2, 4.7191,
+ "POLYGON((1.5 1.5, 1.5 2.5, 4.5 2.5, 4.5 1.5, 1.5 1.5))",
+ "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 2.5,4.5 2.5,4.5 2.3,5.0 2.3,5.0 2.1,4.5 2.1,4.5 1.9,4.0 1.9,4.5 1.2,4.9 0.8,2.9 0.7,2 1.3))");
+
test_traverse<polygon, polygon, operation_intersection>::apply("collinear_overlaps",
1, 24,
collinear_overlaps[0], collinear_overlaps[1]);
@@ -729,9 +744,6 @@ void test_all(bool test_self_tangencies = true, bool test_mixed = false)
static const bool is_float
= boost::is_same<T, float>::value;
- static const bool is_double
- = boost::is_same<T, double>::value
- || boost::is_same<T, long double>::value;
static const double float_might_deviate_more = is_float ? 0.1 : 0.001; // In some cases up to 1 promille permitted
@@ -786,19 +798,20 @@ void test_all(bool test_self_tangencies = true, bool test_mixed = false)
// the chance is 50% that the segments are not sorted correctly and the wrong
// decision is taken.
// Solved now (by sorting on sides in those cases)
+ if (! is_float_on_non_msvc)
{
test_traverse<polygon, polygon, operation_intersection>::apply("dz_1",
- 3, 16.887537949472005, dz_1[0], dz_1[1]);
+ 2, 16.887537949472005, dz_1[0], dz_1[1]);
test_traverse<polygon, polygon, operation_union>::apply("dz_1",
3, 1444.2621305732864, dz_1[0], dz_1[1]);
test_traverse<polygon, polygon, operation_intersection>::apply("dz_2",
2, 68.678921274288541, dz_2[0], dz_2[1]);
test_traverse<polygon, polygon, operation_union>::apply("dz_2",
- 2, 1505.4202304878663, dz_2[0], dz_2[1]);
+ 1, 1505.4202304878663, dz_2[0], dz_2[1]);
test_traverse<polygon, polygon, operation_intersection>::apply("dz_3",
- 6, 192.49316937645651, dz_3[0], dz_3[1]);
+ 5, 192.49316937645651, dz_3[0], dz_3[1]);
test_traverse<polygon, polygon, operation_union>::apply("dz_3",
6, 1446.496005965641, dz_3[0], dz_3[1]);
@@ -812,18 +825,15 @@ void test_all(bool test_self_tangencies = true, bool test_mixed = false)
// SNL (Subsidiestelsel Natuur & Landschap - verAANnen)
- if (! is_float_on_non_msvc)
- {
- test_traverse<polygon, polygon, operation_intersection>::apply("snl-1",
- 2, 286.996062095888,
- snl_1[0], snl_1[1],
- float_might_deviate_more);
-
- test_traverse<polygon, polygon, operation_union>::apply("snl-1",
- 2, 51997.5408506132,
- snl_1[0], snl_1[1],
- float_might_deviate_more);
- }
+ test_traverse<polygon, polygon, operation_intersection>::apply("snl-1",
+ 2, 286.996062095888,
+ snl_1[0], snl_1[1],
+ float_might_deviate_more);
+
+ test_traverse<polygon, polygon, operation_union>::apply("snl-1",
+ 2, 51997.5408506132,
+ snl_1[0], snl_1[1],
+ float_might_deviate_more);
{
test_traverse<polygon, polygon, operation_intersection>::apply("isov",
@@ -834,113 +844,94 @@ void test_all(bool test_self_tangencies = true, bool test_mixed = false)
float_might_deviate_more);
}
- // GEOS tests
- if (! is_float)
- {
- test_traverse<polygon, polygon, operation_intersection>::apply("geos_1_test_overlay",
- 1, 3461.02330171138, geos_1_test_overlay[0], geos_1_test_overlay[1]);
- test_traverse<polygon, polygon, operation_union>::apply("geos_1_test_overlay",
- 1, 3461.31592235516, geos_1_test_overlay[0], geos_1_test_overlay[1]);
-
- if (! is_double)
- {
- test_traverse<polygon, polygon, operation_intersection>::apply("geos_2",
- 2, 2.157e-6, // by bg/ttmath; sql server reports: 2.20530228034477E-06
- geos_2[0], geos_2[1]);
- }
- test_traverse<polygon, polygon, operation_union>::apply("geos_2",
- 1, 350.550662845485,
- geos_2[0], geos_2[1]);
- }
-
- if (! is_float && ! is_double)
- {
- test_traverse<polygon, polygon, operation_intersection>::apply("geos_3",
- 1, 2.484885e-7,
- geos_3[0], geos_3[1]);
- }
-
- if (! is_float_on_non_msvc)
- {
- // Sometimes output is reported as 29229056
- test_traverse<polygon, polygon, operation_union>::apply("geos_3",
- 1, 29391548.5,
- geos_3[0], geos_3[1],
- float_might_deviate_more);
-
- // Sometimes output is reported as 0.078125
- test_traverse<polygon, polygon, operation_intersection>::apply("geos_4",
- 1, 0.0836884926070727,
- geos_4[0], geos_4[1],
- float_might_deviate_more);
- }
-
- test_traverse<polygon, polygon, operation_union>::apply("geos_4",
- 1, 2304.41633605957,
- geos_4[0], geos_4[1]);
-
if (! is_float)
{
+/* TODO check this BSG 2013-09-24
#if defined(_MSC_VER)
double const expected = if_typed_tt<T>(3.63794e-17, 0.0);
+ int expected_count = if_typed_tt<T>(1, 0);
#else
double const expected = if_typed<T, long double>(2.77555756156289135106e-17, 0.0);
+ int expected_count = if_typed<T, long double>(1, 0);
#endif
// Calculate intersection/union of two triangles. Robustness case.
- // ttmath can form a very small intersection triangle
+ // ttmath can form a very small intersection triangle
// (which is even not accomplished by SQL Server/PostGIS)
std::string const caseid = "ggl_list_20110820_christophe";
- test_traverse<polygon, polygon, operation_intersection>::apply(caseid,
- 1, expected,
+ test_traverse<polygon, polygon, operation_intersection>::apply(caseid,
+ expected_count, expected,
ggl_list_20110820_christophe[0], ggl_list_20110820_christophe[1]);
- test_traverse<polygon, polygon, operation_union>::apply(caseid,
- 1, 67.3550722317627,
+ test_traverse<polygon, polygon, operation_union>::apply(caseid,
+ 1, 67.3550722317627,
ggl_list_20110820_christophe[0], ggl_list_20110820_christophe[1]);
+*/
}
- test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_f",
- 1, 4.60853,
- buffer_rt_f[0], buffer_rt_f[1]);
- test_traverse<polygon, polygon, operation_intersection>::apply("buffer_rt_f",
- 1, 0.0002943725152286,
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_f",
+ 1, 4.60853,
buffer_rt_f[0], buffer_rt_f[1]);
+ test_traverse<polygon, polygon, operation_intersection>::apply("buffer_rt_f",
+ 1, 0.0002943725152286,
+ buffer_rt_f[0], buffer_rt_f[1], 0.01);
- test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g",
- 1, 16.571,
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g",
+ 1, 16.571,
buffer_rt_g[0], buffer_rt_g[1]);
- test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes1",
- 1, 20,
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes1",
+ 1, 20,
buffer_rt_g_boxes[0], buffer_rt_g_boxes[1]);
- test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes2",
- 1, 24,
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes2",
+ 1, 24,
buffer_rt_g_boxes[0], buffer_rt_g_boxes[2]);
- test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes3",
- 1, 28,
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes3",
+ 1, 28,
buffer_rt_g_boxes[0], buffer_rt_g_boxes[3]);
- test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes43",
- 1, 30,
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_g_boxes43",
+ 1, 30,
buffer_rt_g_boxes[4], buffer_rt_g_boxes[3]);
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_rt_l",
+ 1, 19.3995, buffer_rt_l[0], buffer_rt_l[1]);
+
+ test_traverse<polygon, polygon, operation_union>::apply("buffer_mp2",
+ 1, 36.7535642, buffer_mp2[0], buffer_mp2[1], 0.01);
+ test_traverse<polygon, polygon, operation_union>::apply("collinear_opposite_rr",
+ 1, 6.41, collinear_opposite_right[0], collinear_opposite_right[1]);
+ test_traverse<polygon, polygon, operation_union>::apply("collinear_opposite_ll",
+ 1, 11.75, collinear_opposite_left[0], collinear_opposite_left[1]);
+ test_traverse<polygon, polygon, operation_union>::apply("collinear_opposite_ss",
+ 1, 6, collinear_opposite_straight[0], collinear_opposite_straight[1]);
+ test_traverse<polygon, polygon, operation_union>::apply("collinear_opposite_lr",
+ 1, 8.66, collinear_opposite_left[0], collinear_opposite_right[1]);
+ test_traverse<polygon, polygon, operation_union>::apply("collinear_opposite_rl",
+ 1, 9, collinear_opposite_right[0], collinear_opposite_left[1]);
+
+ test_traverse<polygon, polygon, operation_intersection>::apply("ticket_7462", 1, 0.220582, ticket_7462[0], ticket_7462[1]);
+
+ test_traverse<polygon, polygon, operation_intersection>::apply
+ ("ticket_9081_15", 1, 0.006889578,
+ ticket_9081_15[0], ticket_9081_15[1]);
+
#ifdef BOOST_GEOMETRY_OVERLAY_NO_THROW
{
// NOTE: currently throws (normally)
std::string caseid = "ggl_list_20120229_volker";
- test_traverse<polygon, polygon, operation_union>::apply(caseid,
- 1, 99,
+ test_traverse<polygon, polygon, operation_union>::apply(caseid,
+ 1, 99,
ggl_list_20120229_volker[0], ggl_list_20120229_volker[1]);
- test_traverse<polygon, polygon, operation_intersection>::apply(caseid,
- 1, 99,
+ test_traverse<polygon, polygon, operation_intersection>::apply(caseid,
+ 1, 99,
ggl_list_20120229_volker[0], ggl_list_20120229_volker[1]);
caseid = "ggl_list_20120229_volker_2";
- test_traverse<polygon, polygon, operation_union>::apply(caseid,
- 1, 99,
+ test_traverse<polygon, polygon, operation_union>::apply(caseid,
+ 1, 99,
ggl_list_20120229_volker[2], ggl_list_20120229_volker[1]);
- test_traverse<polygon, polygon, operation_intersection>::apply(caseid,
- 1, 99,
+ test_traverse<polygon, polygon, operation_intersection>::apply(caseid,
+ 1, 99,
ggl_list_20120229_volker[2], ggl_list_20120229_volker[1]);
}
#endif
diff --git a/libs/geometry/test/algorithms/overlay/traverse.vcproj b/libs/geometry/test/algorithms/overlay/traverse.vcproj
deleted file mode 100644
index f5c83a5513..0000000000
--- a/libs/geometry/test/algorithms/overlay/traverse.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="traverse"
- ProjectGUID="{6260214E-DB6F-4934-ADF7-DD2B1666171B}"
- RootNamespace="traverse"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\traverse"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../..;../..;../../../../../boost/geometry/extensions/contrib/ttmath"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\traverse"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../..;../..;../../../../../boost/geometry/extensions/contrib/ttmath"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\traverse.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/overlay/traverse_gmp.cpp b/libs/geometry/test/algorithms/overlay/traverse_gmp.cpp
index b4568e7f46..b3db22cce4 100644
--- a/libs/geometry/test/algorithms/overlay/traverse_gmp.cpp
+++ b/libs/geometry/test/algorithms/overlay/traverse_gmp.cpp
@@ -35,7 +35,6 @@
#include <boost/geometry/algorithms/detail/overlay/turn_info.hpp>
#include <boost/geometry/algorithms/detail/overlay/enrichment_info.hpp>
#include <boost/geometry/algorithms/detail/overlay/traversal_info.hpp>
-#include <boost/geometry/algorithms/detail/overlay/calculate_distance_policy.hpp>
#include <boost/geometry/algorithms/detail/overlay/get_turns.hpp>
#include <boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp>
#include <boost/geometry/algorithms/detail/overlay/traverse.hpp>
@@ -44,11 +43,8 @@
#include <boost/geometry/io/wkt/wkt.hpp>
-#define TEST_WITH_SVG
-
-
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
@@ -75,7 +71,7 @@ void test_traverse(std::string const& caseid, G1 const& g1, G2 const& g2)
typedef typename boost::range_iterator<const std::vector<turn_info> >::type iterator;
std::vector<turn_info> ips;
- bg::get_turns<false, false, bg::detail::overlay::calculate_distance_policy>(g1, g2, ips);
+ bg::get_turns<false, false, bg::detail::overlay::assign_null_policy>(g1, g2, ips);
bg::enrich_intersection_points(ips, g1, g2, strategy_type());
typedef bg::model::ring<typename bg::point_type<G2>::type> ring_type;
diff --git a/libs/geometry/test/algorithms/perimeter.vcproj b/libs/geometry/test/algorithms/perimeter.vcproj
deleted file mode 100644
index a39d1880f1..0000000000
--- a/libs/geometry/test/algorithms/perimeter.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="perimeter"
- ProjectGUID="{EFC23FC0-86D3-4C81-A218-26F0D5A4D50B}"
- RootNamespace="perimeter"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\perimeter"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\perimeter"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\perimeter.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/point_on_surface.cpp b/libs/geometry/test/algorithms/point_on_surface.cpp
new file mode 100644
index 0000000000..00b6f1236c
--- /dev/null
+++ b/libs/geometry/test/algorithms/point_on_surface.cpp
@@ -0,0 +1,364 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2013 Mateusz Loskot, London, UK.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 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)
+
+// Instead of having a separate (and nearly similar) unit test to test multipolygons,
+// we now include them here and compile them by default. Only undefining the next line
+// will avoid testing multi-geometries
+#define BOOST_GEOMETRY_UNIT_TEST_MULTI
+
+#include <geometry_test_common.hpp>
+
+// The include to test
+#include <boost/geometry/algorithms/point_on_surface.hpp>
+
+// Helper includes
+#include <boost/geometry/algorithms/correct.hpp>
+#include <boost/geometry/algorithms/within.hpp>
+#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+
+// Include from unit tests
+#include <algorithms/test_overlay.hpp>
+#include <algorithms/predef_relop.hpp>
+#include <algorithms/overlay/overlay_cases.hpp>
+
+#if defined(BOOST_GEOMETRY_UNIT_TEST_MULTI)
+# include <boost/geometry/multi/algorithms/correct.hpp>
+# include <boost/geometry/multi/algorithms/within.hpp>
+# include <boost/geometry/multi/algorithms/detail/extreme_points.hpp>
+# include <boost/geometry/multi/geometries/multi_polygon.hpp>
+# include <boost/geometry/multi/io/wkt/wkt.hpp>
+#endif
+
+
+#if defined(TEST_WITH_SVG)
+# include <boost/geometry/io/svg/svg_mapper.hpp>
+#endif
+
+template <typename Geometry>
+void test_geometry(std::string const& case_id, Geometry const& geometry, double /*expected_x*/ = 0, double /*expected_y*/ = 0)
+{
+//std::cout << case_id << std::endl;
+ typedef typename bg::point_type<Geometry>::type point_type;
+
+ point_type point;
+ bg::point_on_surface(geometry, point);
+
+ BOOST_CHECK_MESSAGE(bg::within(point, geometry),
+ case_id << " generated point_on_surface (dim 1) is not within geometry");
+
+#ifdef BOOST_GEOMETRY_POINT_ON_SURFACE_COMPLETE
+ // For the algorithm we also check generation in the other dimension
+ point_type right_point;
+ bg::detail::point_on_surface::calculate_point_on_surface<0>(geometry, right_point);
+
+ BOOST_CHECK_MESSAGE(bg::within(right_point, geometry),
+ case_id << " generated point_on_surface (dim 0) is not within geometry");
+
+ point_type returned_point = bg::return_point_on_surface(geometry);
+#endif
+
+#if defined(TEST_WITH_SVG)
+ {
+ std::ostringstream filename;
+ filename << "point_on_surface_" << case_id << "_"
+ << string_from_type<typename bg::coordinate_type<Geometry>::type>::name()
+ << ".svg";
+
+ std::ofstream svg(filename.str().c_str());
+
+ // To map the intermediate products:
+ bg::model::linestring<point_type> top_points;
+ typedef bg::model::linestring<point_type> intruder_type;
+ std::vector<intruder_type> top_intruders;
+ bg::extreme_points<1>(geometry, top_points, top_intruders);
+
+#ifdef BOOST_GEOMETRY_POINT_ON_SURFACE_COMPLETE
+ bg::model::linestring<point_type> right_points;
+ std::vector<bg::model::linestring<point_type> > right_intruders;
+ bg::extreme_points<0>(geometry, right_points, right_intruders);
+#endif
+
+ bg::svg_mapper<point_type> mapper(svg, 500, 500);
+ mapper.add(geometry);
+ mapper.map(geometry, "fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:1");
+
+ // Top (red/magenta)
+ mapper.map(top_points, "stroke:rgb(255,0,0);stroke-width:2");
+ BOOST_FOREACH(intruder_type const& intruder, top_intruders)
+ {
+ mapper.map(intruder, "stroke:rgb(255,0,255);stroke-width:2");
+ }
+ mapper.map(point, "opacity:0.8;fill:rgb(255,128,0);stroke:rgb(0,0,100);stroke-width:1", 3);
+
+#ifdef BOOST_GEOMETRY_POINT_ON_SURFACE_COMPLETE
+ //// Right (blue/cyan)
+ // (mostly commented, makes the picture less clear)
+ //mapper.map(right_points, "stroke:rgb(0,0,255);stroke-width:2");
+ //BOOST_FOREACH(intruder_type const& intruder, right_intruders)
+ //{
+ // mapper.map(intruder, "stroke:rgb(0,255,255);stroke-width:2");
+ //}
+ mapper.map(right_point, "opacity:0.8;fill:rgb(0,128,255);stroke:rgb(0,0,100);stroke-width:1", 3);
+#endif
+ }
+#endif
+
+}
+
+template <typename Geometry>
+void test_geometry(std::string const& case_id, std::string const& wkt, double expected_x = 0, double expected_y = 0)
+{
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ bg::correct(geometry);
+ test_geometry(case_id, geometry, expected_x, expected_y);
+}
+
+template <typename Point>
+void test_point_order_and_type()
+{
+ typedef bg::model::polygon<Point, false, false> ccw_open_polygon;
+ typedef bg::model::polygon<Point, true, false> cw_open_polygon;
+ typedef bg::model::polygon<Point, false, true> ccw_closed_polygon;
+ typedef bg::model::polygon<Point, true, true> cw_closed_polygon;
+
+ test_geometry<ccw_open_polygon>("with_hole_ccw_open", "POLYGON((0 0,9 0,9 9,0 9),(2 2,2 7,7 7,7 2))", 0, 0);
+ test_geometry<cw_open_polygon>("with_hole_cw_open", "POLYGON((0 0,0 9,9 9,9 0),(2 2,7 2,7 7,2 7))", 0, 0);
+ test_geometry<ccw_closed_polygon>("with_hole_ccw_closed", "POLYGON((0 0,9 0,9 9,0 9,0 0),(2 2,2 7,7 7,7 2,2 2))", 0, 0);
+ test_geometry<cw_closed_polygon>("with_hole_cw_closed", "POLYGON((0 0,0 9,9 9,9 0,0 0),(2 2,7 2,7 7,2 7,2 2))", 0, 0);
+}
+
+template <typename Point>
+void test_all()
+{
+ typedef bg::model::polygon<Point> polygon;
+
+ // Specific test-cases for point-on-surface:
+ test_geometry<polygon>("ice", "polygon((5 0,0 5,1 6,2 5,4 8,6 5,7 6,8 5,9 6,10 5,5 0))", 0, 0);
+ test_geometry<polygon>("intruding", "polygon((5 0,0 5,1 6,2 5,4 8,6 5,7 6,8 5,9 6,10 5,7 2,4 7,6 1,5 0))", 0, 0);
+ test_geometry<polygon>("intruding2", "polygon((5 0,3 2,4 6,2 3,0 5,1 6,2 5,4 8,6 5,7 6,8 5,9 6,10 5,7 2,4 7,6 1,5 0))", 0, 0);
+ test_geometry<polygon>("intruding3", "polygon((5 0,3 2,3 6,2 3,0 5,1 6,3 7,2 5,4 8,6 5,5 7,7 6,8 5,9 6,10 5,7 2,5 6,6 1,5 0))", 0, 0);
+ test_geometry<polygon>("intruding4", "polygon((5 0,3 2,3 6,2 3,0 5,1 6,3 7,2 5,4 8,6 5,5 8,7 6,8 5,9 6,10 5,7 2,5 6,6 1,5 0))", 0, 0);
+ test_geometry<polygon>("intruding5", "polygon((5 0,3 2,3 6,2 3,0 5,1 6,3 8,2 5,4 8,6 5,5 8,7 6,8 5,9 6,10 5,7 2,5 6,6 1,5 0))", 0, 0);
+ test_geometry<polygon>("ice_int", "polygon((5 0,0 5,1 6,2 5,4 8,6 5,7 6,8 5,9 6,10 5,5 0),(3 4,4 3,5 4,4 7,3 4))", 0, 0);
+ test_geometry<polygon>("ice_int2", "polygon((5 0,0 5,1 6,2 5,4 8,6 5,7 6,8 5,9 6,10 5,5 0),(4 7,3 4,4 3,5 4,4 7))", 0, 0);
+ test_geometry<polygon>("ice_in3", "polygon((5 0,0 5,1 6,2 5,4 8,6 5,7 6,8 5,9 6,10 5,5 0),(3 4,5 4,5 6,3 6,3 4))", 0, 0);
+ test_geometry<polygon>("simplex_normal", simplex_normal[0], 0, 0);
+ test_geometry<polygon>("sqr", "polygon((0 0,0 5,0 10,5 10,10 10,10 5,10 0,5 0,0 0))", 0, 0);
+ test_geometry<polygon>("self_tangent", "polygon((0 0,5 10,10 0,9 0,7 4,8 0,7 0,5 10,3 0,2 0,3 4,1 0,0 0))", 0, 0);
+ test_geometry<polygon>("self_tangent2", "polygon((5 0,2 3,4 8,1.5 3.5,0 5,1 6,2 5,4 8,6 5,7 6,8 5,9 6,10 5,5 0))", 0, 0);
+ test_geometry<polygon>("self_tangent_int", "polygon((5 0,0 5,1 6,2 5,4 8,6 5,7 6,8 5,9 6,10 5,5 0),(3 4,4 3,5 4,4 8,3 4))", 0, 0);
+ test_geometry<polygon>("self_tangent_int2", "polygon((5 0,2 3,3.5 7,1.5 3.5,0 5,1 6,2 5,4 8,6 5,7 6,8 5,9 6,10 5,5 0),(3 4,4 3,5 4,4 8,3 4))", 0, 0);
+ test_geometry<polygon>("self_tangent_int3", "polygon((5 0,2 3,4 8,1.5 3.5,0 5,1 6,2 5,4 8,6 5,7 6,8 5,9 6,10 5,5 0),(3 4,4 3,5 4,4 8,3 4))", 0, 0);
+
+ test_geometry<polygon>("self_tangent_int3", "polygon((5 0,2 3,4 8,1.5 3.5,0 5,1 6,2 5,4 8,6 5,7 6,8 5,9 6,10 5,5 0),(3 4,4 3,5 4,4 8,3 4))", 0, 0);
+ test_geometry<polygon>("disjoint_simplex0", disjoint_simplex[0], 0, 0);
+ test_geometry<polygon>("disjoint_simplex1", disjoint_simplex[1], 0, 0);
+
+ test_geometry<polygon>("ticket_10643", "POLYGON((1074699.93 703064.65, 1074703.90 703064.58, 1074704.53 703061.40, 1074702.10 703054.62, 1074699.93 703064.65))");
+ test_geometry<polygon>("ticket_10643_2", "POLYGON((699.93 64.65, 703.90 64.58, 704.53 61.40, 702.10 54.62, 699.93 64.65))");
+
+#if defined(BOOST_GEOMETRY_UNIT_TEST_MULTI)
+ {
+ typedef bg::model::multi_polygon<polygon> multi_polygon;
+ test_geometry<multi_polygon>("mp_simplex", "multipolygon(((0 0,0 5,5 0, 0 0)),((7 1,7 6,10 1,7 1)))", 0, 0);
+ // Wrapped polygon in two orders
+ test_geometry<multi_polygon>("mp_wrapped1",
+ "multipolygon("
+ "((4 10,9 11,10 16,11 11,16 10,11 9,10 4,9 9,4 10))"
+ ","
+ "((0 10,10 20,20 10,10 0,0 10),(10 2,18 10,10 18,2 10,10 2))"
+ ")",
+ 0, 0);
+ test_geometry<multi_polygon>("mp_wrapped2",
+ "multipolygon("
+ "((0 10,10 20,20 10,10 0,0 10),(10 2,18 10,10 18,2 10,10 2))"
+ ","
+ "((4 10,9 11,10 16,11 11,16 10,11 9,10 4,9 9,4 10))"
+ ")",
+ 0, 0);
+ }
+#endif
+
+
+ // Overlay testcases
+ test_geometry<polygon>("buffer_mp1", buffer_mp1[0], 0, 0);
+ test_geometry<polygon>("buffer_mp2", buffer_mp2[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_a", buffer_rt_a[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_f", buffer_rt_f[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_g", buffer_rt_g[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_i", buffer_rt_i[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_j", buffer_rt_j[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_l", buffer_rt_l[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_m1", buffer_rt_m1[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_m2", buffer_rt_m2[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_n", buffer_rt_n[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_q", buffer_rt_q[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_r", buffer_rt_r[0], 0, 0);
+ test_geometry<polygon>("buffer_rt_t", buffer_rt_t[0], 0, 0);
+ test_geometry<polygon>("case_10", case_10[0], 0, 0);
+ test_geometry<polygon>("case_11", case_11[0], 0, 0);
+ test_geometry<polygon>("case_12", case_12[0], 0, 0);
+ test_geometry<polygon>("case_13", case_13[0], 0, 0);
+ test_geometry<polygon>("case_14", case_14[0], 0, 0);
+ test_geometry<polygon>("case_15", case_15[0], 0, 0);
+ test_geometry<polygon>("case_16", case_16[0], 0, 0);
+ test_geometry<polygon>("case_17", case_17[0], 0, 0);
+ test_geometry<polygon>("case_18", case_18[0], 0, 0);
+ test_geometry<polygon>("case_19", case_19[0], 0, 0);
+ test_geometry<polygon>("case_1", case_1[0], 0, 0);
+ test_geometry<polygon>("case_20", case_20[0], 0, 0);
+ test_geometry<polygon>("case_21", case_21[0], 0, 0);
+ test_geometry<polygon>("case_22", case_22[0], 0, 0);
+ test_geometry<polygon>("case_23", case_23[0], 0, 0);
+ test_geometry<polygon>("case_24", case_24[0], 0, 0);
+ test_geometry<polygon>("case_25", case_25[0], 0, 0);
+ test_geometry<polygon>("case_26", case_26[0], 0, 0);
+ test_geometry<polygon>("case_27", case_27[0], 0, 0);
+ test_geometry<polygon>("case_28", case_28[0], 0, 0);
+ test_geometry<polygon>("case_29", case_29[0], 0, 0);
+ test_geometry<polygon>("case_2", case_2[0], 0, 0);
+ test_geometry<polygon>("case_30", case_30[0], 0, 0);
+ test_geometry<polygon>("case_31", case_31[0], 0, 0);
+ test_geometry<polygon>("case_32", case_32[0], 0, 0);
+ test_geometry<polygon>("case_33", case_33[0], 0, 0);
+ test_geometry<polygon>("case_34", case_34[0], 0, 0);
+ test_geometry<polygon>("case_35", case_35[0], 0, 0);
+ test_geometry<polygon>("case_36", case_36[0], 0, 0);
+ test_geometry<polygon>("case_37", case_37[0], 0, 0);
+ test_geometry<polygon>("case_38", case_38[0], 0, 0);
+ test_geometry<polygon>("case_39", case_39[0], 0, 0);
+ test_geometry<polygon>("case_3", case_3[0], 0, 0);
+ test_geometry<polygon>("case_40", case_40[0], 0, 0);
+ test_geometry<polygon>("case_41", case_41[0], 0, 0);
+ test_geometry<polygon>("case_42", case_42[0], 0, 0);
+ test_geometry<polygon>("case_43", case_43[0], 0, 0);
+ test_geometry<polygon>("case_44", case_44[0], 0, 0);
+ test_geometry<polygon>("case_45", case_45[0], 0, 0);
+ test_geometry<polygon>("case_46", case_46[0], 0, 0);
+ test_geometry<polygon>("case_47", case_47[0], 0, 0);
+ test_geometry<polygon>("case_49", case_49[0], 0, 0);
+ test_geometry<polygon>("case_4", case_4[0], 0, 0);
+ test_geometry<polygon>("case_50", case_50[0], 0, 0);
+ test_geometry<polygon>("case_51", case_51[0], 0, 0);
+ test_geometry<polygon>("case_52", case_52[0], 0, 0);
+ test_geometry<polygon>("case_53", case_53[0], 0, 0);
+ test_geometry<polygon>("case_54", case_54[0], 0, 0);
+ test_geometry<polygon>("case_55", case_55[0], 0, 0);
+ test_geometry<polygon>("case_56", case_56[0], 0, 0);
+ test_geometry<polygon>("case_57", case_57[0], 0, 0);
+ test_geometry<polygon>("case_58", case_58[0], 0, 0);
+ test_geometry<polygon>("case_59", case_59[0], 0, 0);
+ test_geometry<polygon>("case_5", case_5[0], 0, 0);
+ test_geometry<polygon>("case_60", case_60[0], 0, 0);
+ test_geometry<polygon>("case_61", case_61[0], 0, 0);
+ test_geometry<polygon>("case_6", case_6[0], 0, 0);
+ test_geometry<polygon>("case_70", case_70[0], 0, 0);
+ test_geometry<polygon>("case_71", case_71[0], 0, 0);
+ test_geometry<polygon>("case_72", case_72[0], 0, 0);
+ test_geometry<polygon>("case_79", case_79[0], 0, 0);
+ test_geometry<polygon>("case_7", case_7[0], 0, 0);
+ test_geometry<polygon>("case_8", case_8[0], 0, 0);
+ test_geometry<polygon>("case_9", case_9[0], 0, 0);
+ test_geometry<polygon>("case_many_situations", case_many_situations[0], 0, 0);
+ test_geometry<polygon>("ccw_case_1", ccw_case_1[0], 0, 0);
+ test_geometry<polygon>("ccw_case_9", ccw_case_9[0], 0, 0);
+ test_geometry<polygon>("collinear_opposite_left", collinear_opposite_left[0], 0, 0);
+ test_geometry<polygon>("collinear_opposite_right", collinear_opposite_right[0], 0, 0);
+ test_geometry<polygon>("collinear_opposite_straight", collinear_opposite_straight[0], 0, 0);
+ test_geometry<polygon>("collinear_overlaps", collinear_overlaps[0], 0, 0);
+ test_geometry<polygon>("dz_1", dz_1[0], 0, 0);
+ test_geometry<polygon>("dz_2", dz_2[0], 0, 0);
+ test_geometry<polygon>("dz_3", dz_3[0], 0, 0);
+ test_geometry<polygon>("dz_4", dz_4[0], 0, 0);
+ test_geometry<polygon>("geos_1", geos_1[0], 0, 0);
+ test_geometry<polygon>("geos_2", geos_2[0], 0, 0);
+ test_geometry<polygon>("geos_3", geos_3[0], 0, 0);
+ test_geometry<polygon>("geos_4", geos_4[0], 0, 0);
+ test_geometry<polygon>("ggl_list_20110306_javier", ggl_list_20110306_javier[0], 0, 0);
+ test_geometry<polygon>("ggl_list_20110307_javier", ggl_list_20110307_javier[0], 0, 0);
+ test_geometry<polygon>("ggl_list_20110627_phillip", ggl_list_20110627_phillip[0], 0, 0);
+ test_geometry<polygon>("ggl_list_20110716_enrico", ggl_list_20110716_enrico[0], 0, 0);
+ test_geometry<polygon>("ggl_list_20110820_christophe ", ggl_list_20110820_christophe [0], 0, 0);
+ test_geometry<polygon>("ggl_list_20120717_volker", ggl_list_20120717_volker[0], 0, 0);
+ test_geometry<polygon>("hv_1", hv_1[0], 0, 0);
+ test_geometry<polygon>("hv_2", hv_2[0], 0, 0);
+ test_geometry<polygon>("hv_3", hv_3[0], 0, 0);
+ test_geometry<polygon>("hv_4", hv_4[0], 0, 0);
+ test_geometry<polygon>("hv_5", hv_5[0], 0, 0);
+ test_geometry<polygon>("hv_6", hv_6[0], 0, 0);
+ test_geometry<polygon>("hv_7", hv_7[0], 0, 0);
+ test_geometry<polygon>("isovist", isovist[0], 0, 0);
+ test_geometry<polygon>("open_case_1", open_case_1[0], 0, 0);
+ test_geometry<polygon>("open_case_9", open_case_9[0], 0, 0);
+ test_geometry<polygon>("pie_16_2_15_0", pie_16_2_15_0[0], 0, 0);
+ test_geometry<polygon>("pie_16_4_12", pie_16_4_12[0], 0, 0);
+ test_geometry<polygon>("pie_20_20_7_100", pie_20_20_7_100[0], 0, 0);
+ test_geometry<polygon>("pie_23_16_16", pie_23_16_16[0], 0, 0);
+ test_geometry<polygon>("pie_23_21_12_500", pie_23_21_12_500[0], 0, 0);
+ test_geometry<polygon>("pie_23_23_3_2000", pie_23_23_3_2000[0], 0, 0);
+ test_geometry<polygon>("pie_4_13_15", pie_4_13_15[0], 0, 0);
+ test_geometry<polygon>("pie_5_12_12_0_7s", pie_5_12_12_0_7s[0], 0, 0);
+ test_geometry<polygon>("snl_1", snl_1[0], 0, 0);
+ test_geometry<polygon>("ticket_17", ticket_17[0], 0, 0);
+ test_geometry<polygon>("ticket_5103", ticket_5103[0], 0, 0);
+ test_geometry<polygon>("ticket_7462", ticket_7462[0], 0, 0);
+ test_geometry<polygon>("ticket_8310a", ticket_8310a[0], 0, 0);
+ test_geometry<polygon>("ticket_8310b", ticket_8310b[0], 0, 0);
+ test_geometry<polygon>("ticket_8310c", ticket_8310c[0], 0, 0);
+ test_geometry<polygon>("ticket_8254", ticket_8254[0], 0, 0);
+}
+
+template <typename Point>
+void test_dense(std::string const& case_id, double size)
+{
+ typedef bg::model::polygon<Point> polygon;
+ polygon poly;
+
+ bg::append(poly, Point(-size, 0));
+
+ double thres = 3.14158 / 8;
+ for ( double a = thres ; a > -thres ; a -= 0.01 )
+ {
+ bg::append(poly, Point(size * ::cos(a), size * ::sin(a)));
+ }
+
+ bg::append(poly, Point(-size, 0));
+
+ test_geometry(case_id, poly);
+}
+
+
+int test_main(int, char* [])
+{
+ test_all<bg::model::d2::point_xy<double> >();
+ test_point_order_and_type<bg::model::d2::point_xy<double> >();
+ test_point_order_and_type<bg::model::d2::point_xy<int> >();
+
+ test_dense<bg::model::d2::point_xy<double> >("dense1", 100);
+ test_dense<bg::model::d2::point_xy<double> >("dense2", 1000000);
+
+ return 0;
+}
+
diff --git a/libs/geometry/test/algorithms/predef_relop.hpp b/libs/geometry/test/algorithms/predef_relop.hpp
new file mode 100644
index 0000000000..eda98ac01c
--- /dev/null
+++ b/libs/geometry/test/algorithms/predef_relop.hpp
@@ -0,0 +1,33 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2010-2012 Barend Gehrels, 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_PREDEF_RELOP_HPP
+#define BOOST_GEOMETRY_PREDEF_RELOP_HPP
+
+#include <string>
+
+
+static std::string disjoint_simplex[2] =
+ {"POLYGON((0 0,0 2,2 2,0 0))",
+ "POLYGON((1 0,3 2,3 0,1 0))"};
+
+static std::string touch_simplex[2] =
+ {"POLYGON((0 0,0 2,2 2,0 0))",
+ "POLYGON((2 2,3 2,3 0,2 2))"};
+
+static std::string overlaps_box[2] =
+ {"POLYGON((0 0,0 2,2 2,0 0))",
+ "POLYGON((1 1,3 2,3 0,1 1))"};
+
+static std::string within_simplex[2] =
+ {"POLYGON((0 0,1 4,4 1,0 0))",
+ "POLYGON((1 1,1 3,3 1,1 1))"};
+
+
+
+#endif
diff --git a/libs/geometry/test/algorithms/pretty_print_geometry.hpp b/libs/geometry/test/algorithms/pretty_print_geometry.hpp
new file mode 100644
index 0000000000..2f3275cbaa
--- /dev/null
+++ b/libs/geometry/test/algorithms/pretty_print_geometry.hpp
@@ -0,0 +1,69 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Tests
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_GEOMETRY_TEST_PRETTY_PRINT_GEOMETRY_HPP
+#define BOOST_GEOMETRY_TEST_PRETTY_PRINT_GEOMETRY_HPP
+
+#include <iostream>
+
+#include <boost/geometry/core/tag.hpp>
+#include <boost/geometry/core/tags.hpp>
+
+#include <boost/geometry/io/dsv/write.hpp>
+#include <boost/geometry/io/wkt/write.hpp>
+
+
+template
+<
+ typename Geometry,
+ typename Tag = typename boost::geometry::tag<Geometry>::type
+>
+struct pretty_print_geometry
+{
+ static inline std::ostream&
+ apply(std::ostream& os, Geometry const& geometry)
+ {
+ os << boost::geometry::wkt(geometry);
+ return os;
+ }
+};
+
+template <typename Box>
+struct pretty_print_geometry<Box, boost::geometry::box_tag>
+{
+ static inline std::ostream&
+ apply(std::ostream& os, Box const& box)
+ {
+ return os << "BOX" << boost::geometry::dsv(box);
+ }
+};
+
+template <typename Segment>
+struct pretty_print_geometry<Segment, boost::geometry::segment_tag>
+{
+ static inline std::ostream&
+ apply(std::ostream& os, Segment const& segment)
+ {
+ return os << "SEGMENT" << boost::geometry::dsv(segment);
+ }
+};
+
+template <typename Ring>
+struct pretty_print_geometry<Ring, boost::geometry::ring_tag>
+{
+ static inline std::ostream&
+ apply(std::ostream& os, Ring const& ring)
+ {
+ return os << "RING" << boost::geometry::dsv(ring);
+ }
+};
+
+
+#endif // BOOST_GEOMETRY_TEST_PRETTY_PRINT_GEOMETRY_HPP
diff --git a/libs/geometry/test/algorithms/relate_areal_areal.cpp b/libs/geometry/test/algorithms/relate_areal_areal.cpp
new file mode 100644
index 0000000000..fd9e84c401
--- /dev/null
+++ b/libs/geometry/test/algorithms/relate_areal_areal.cpp
@@ -0,0 +1,323 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2013, 2014.
+// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#include <algorithms/test_relate.hpp>
+
+//TEST
+//#include <to_svg.hpp>
+
+template <typename P>
+void test_polygon_polygon()
+{
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::ring<P> ring;
+
+ // touching
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((10 0,10 10,20 10,20 0,10 0))",
+ "FF2F11212");
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((0 -10,0 0,10 0,10 -10,0 -10))",
+ "FF2F11212");
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((10 0,15 10,20 10,20 0,10 0))",
+ "FF2F01212");
+
+ // containing
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((5 5,5 10,6 10,6 5,5 5))",
+ "212F11FF2");
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((5 5,5 10,6 5,5 5))",
+ "212F01FF2");
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((5 5,5 6,6 6,6 5,5 5))",
+ "212FF1FF2");
+
+ // fully containing
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((5 5,5 9,6 9,6 5,5 5))",
+ "212FF1FF2");
+ // fully containing, with a hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(3 3,7 3,7 7,3 7,3 3))",
+ "POLYGON((1 1,1 9,9 9,9 1,1 1))",
+ "2121F12F2");
+ // fully containing, both with holes
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(3 3,7 3,7 7,3 7,3 3))",
+ "POLYGON((1 1,1 9,9 9,9 1,1 1),(2 2,8 2,8 8,2 8,2 2))",
+ "212FF1FF2");
+ // fully containing, both with holes
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(3 3,7 3,7 7,3 7,3 3))",
+ "POLYGON((1 1,1 9,9 9,9 1,1 1),(4 4,6 4,6 6,4 6,4 4))",
+ "2121F1212");
+
+ // overlapping
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((5 0,5 10,20 10,20 0,5 0))",
+ "212111212");
+ test_geometry<ring, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((5 0,5 10,20 10,20 0,5 0))",
+ "212111212");
+ test_geometry<ring, ring>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((5 0,5 10,20 10,20 0,5 0))",
+ "212111212");
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,15 5,10 0,0 0))",
+ "POLYGON((10 0,5 5,10 10,20 10,20 0,10 0))",
+ "212101212");
+
+ // equal
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((10 10,10 5,10 0,5 0,0 0,0 10,5 10,10 10))",
+ "2FFF1FFF2");
+ // hole-sized
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(5 5,6 5,6 6,5 6,5 5))",
+ "POLYGON((5 5,5 6,6 6,6 5,5 5))",
+ "FF2F112F2");
+
+ // disjoint
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((0 20,0 30,10 30,10 20,0 20))",
+ "FF2FF1212");
+ // disjoint
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(3 3,7 3,7 7,3 7,3 3))",
+ "POLYGON((0 20,0 30,10 30,10 20,0 20))",
+ "FF2FF1212");
+
+ // equal non-simple / non-simple hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(5 5,10 5,5 6,5 5))",
+ "POLYGON((0 0,0 10,10 10,10 5,5 6,5 5,10 5,10 0,0 0))",
+ "2FFF1FFF2");
+
+ // within non-simple / simple
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 5,5 6,5 5,10 5,10 0,0 0))",
+ "POLYGON((0 0,5 5,10 5,10 0,0 0))",
+ "212F11FF2");
+ // within non-simple hole / simple
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(5 5,10 5,5 6,5 5))",
+ "POLYGON((0 0,5 5,10 5,10 0,0 0))",
+ "212F11FF2");
+
+
+ // not within non-simple / simple
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 5,5 6,5 5,10 5,10 0,0 0))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "2FF11F2F2");
+ // not within non-simple hole / simple
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(5 5,10 5,5 6,5 5))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "2FF11F2F2");
+ // not within simple hole / simple
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(5 5,9 5,5 6,5 5))",
+ "POLYGON((0 0,0 10,10 10,9 5,10 0,0 0))",
+ "2121112F2");
+
+ // within non-simple fake hole / simple
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 5,4 7,4 3,10 5,10 0,0 0))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "2FF11F2F2");
+ // within non-simple fake hole / non-simple fake hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 5,4 7,4 3,10 5,10 0,0 0))",
+ "POLYGON((0 0,0 10,10 10,10 5,5 6,5 4,10 5,10 0,0 0))",
+ "2FF11F212");
+ // within non-simple fake hole / non-simple hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 5,4 7,4 3,10 5,10 0,0 0))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,5 6,5 4,10 5))",
+ "2FF11F212");
+ // containing non-simple fake hole / non-simple hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 5,4 7,4 3,10 5,10 0,0 0))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,3 8,3 2,10 5))",
+ "212F11FF2");
+
+ // within non-simple hole / simple
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,4 7,4 3,10 5))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "2FF11F2F2");
+ // within non-simple hole / non-simple fake hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,4 7,4 3,10 5))",
+ "POLYGON((0 0,0 10,10 10,10 5,5 6,5 4,10 5,10 0,0 0))",
+ "2FF11F212");
+ // containing non-simple hole / non-simple fake hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,4 7,4 3,10 5))",
+ "POLYGON((0 0,0 10,10 10,10 5,3 8,3 2,10 5,10 0,0 0))",
+ "212F11FF2");
+ // equal non-simple hole / non-simple fake hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,4 7,4 3,10 5))",
+ "POLYGON((0 0,0 10,10 10,10 5,4 7,4 3,10 5,10 0,0 0))",
+ "2FFF1FFF2");
+ // within non-simple hole / non-simple hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,4 7,4 3,10 5))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,5 6,5 4,10 5))",
+ "2FF11F212");
+ // containing non-simple hole / non-simple hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,4 7,4 3,10 5))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,3 8,3 2,10 5))",
+ "212F11FF2");
+ // equal non-simple hole / non-simple hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,4 7,4 3,10 5))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,4 7,4 3,10 5))",
+ "2FFF1FFF2");
+
+ // intersecting non-simple hole / non-simple hole - touching holes
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(5 5,10 5,5 6,5 5))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(0 5,5 4,5 5,0 5))",
+ "21211F2F2");
+ // intersecting non-simple fake hole / non-simple hole - touching holes
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 5,5 6,5 5,10 5,10 0,0 0))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(0 5,5 4,5 5,0 5))",
+ "21211F2F2");
+ // intersecting non-simple fake hole / non-simple fake hole - touching holes
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 5,5 6,5 5,10 5,10 0,0 0))",
+ "POLYGON((0 0,0 5,5 4,5 5,0 5,0 10,10 10,10 0,0 0))",
+ "21211F2F2");
+
+ // intersecting simple - i/i
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,4 10,6 8,5 5,6 2,4 0,0 0))",
+ "POLYGON((5 5,4 8,6 10,10 10,10 0,6 0,4 2,5 5))",
+ "212101212");
+ // intersecting non-simple hole / non-simple hole - i/i
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,4 10,6 8,5 5,6 2,4 0,0 0),(5 5,2 6,2 4,5 5))",
+ "POLYGON((5 5,4 8,6 10,10 10,10 0,6 0,4 2,5 5),(5 5,8 4,8 6,5 5))",
+ "212101212");
+ // intersecting non-simple hole / simple - i/i
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,4 10,6 8,5 5,6 2,4 0,0 0),(5 5,2 6,2 4,5 5))",
+ "POLYGON((5 5,4 8,6 10,10 10,10 0,6 0,4 2,5 5))",
+ "212101212");
+
+ // no turns - disjoint inside a hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(1 1,9 1,9 9,1 9,1 1))",
+ "POLYGON((3 3,3 7,7 7,7 3,3 3))",
+ "FF2FF1212");
+ // no turns - within
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(1 1,9 1,9 9,1 9,1 1))",
+ "POLYGON((-1 -1,-1 11,11 11,11 -1,-1 -1))",
+ "2FF1FF212");
+ // no-turns - intersects
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2))",
+ "POLYGON((1 1,1 9,9 9,9 1,1 1))",
+ "2121F12F2");
+ // no-turns - intersects, hole in a hole
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2))",
+ "POLYGON((1 1,1 9,9 9,9 1,1 1),(3 3,7 3,7 7,3 7,3 3))",
+ "2121F1212");
+
+ // no-turns ring - for exteriors
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2))",
+ "POLYGON((1 1,1 9,9 9,9 1,1 1),(2 2,8 2,8 8,2 8,2 2))",
+ "212F11FF2");
+ // no-turns ring - for interiors
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0),(3 3,7 3,7 7,3 7,3 3))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2))",
+ "212F11FF2");
+
+ {
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((5 5,5 10,6 10,6 5,5 5))",
+ "212F11FF2");
+
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "POLYGON((10 0,10 10,20 10,20 0,10 0))",
+ "FF2F11212");
+
+ namespace bgdr = bg::detail::relate;
+ poly p1, p2, p3;
+ bg::read_wkt("POLYGON((0 0,0 10,10 10,10 0,0 0))", p1);
+ bg::read_wkt("POLYGON((10 0,10 10,20 10,20 0,10 0))", p2);
+ bg::read_wkt("POLYGON((5 5,5 10,6 10,6 5,5 5))", p3);
+ BOOST_CHECK(bgdr::relate(p1, p2, bgdr::mask9("FT*******")
+ || bgdr::mask9("F**T*****")
+ || bgdr::mask9("F***T****"))); // touches()
+ BOOST_CHECK(bgdr::relate(p1, p3, bgdr::mask9("T*****FF*"))); // contains()
+ BOOST_CHECK(bgdr::relate(p2, p3, bgdr::mask9("FF*FF****"))); // disjoint()
+ }
+
+ // CCW
+ {
+ typedef bg::model::polygon<P, false> poly;
+ // within non-simple hole / simple
+ test_geometry<poly, poly>("POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,5 6,10 5,5 5))",
+ "POLYGON((0 0,10 0,10 5,5 5,0 0))",
+ "212F11FF2");
+ }
+ // OPEN
+ {
+ typedef bg::model::polygon<P, true, false> poly;
+ // within non-simple hole / simple
+ test_geometry<poly, poly>("POLYGON((0 0,0 10,10 10,10 0),(5 5,10 5,5 6))",
+ "POLYGON((0 0,5 5,10 5,10 0))",
+ "212F11FF2");
+ }
+ // CCW, OPEN
+ {
+ typedef bg::model::polygon<P, false, false> poly;
+ // within non-simple hole / simple
+ test_geometry<poly, poly>("POLYGON((0 0,10 0,10 10,0 10),(5 5,5 6,10 5))",
+ "POLYGON((0 0,10 0,10 5,5 5))",
+ "212F11FF2");
+ }
+}
+
+template <typename P>
+void test_polygon_multi_polygon()
+{
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::ring<P> ring;
+ typedef bg::model::multi_polygon<poly> mpoly;
+
+ test_geometry<poly, mpoly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "MULTIPOLYGON(((5 5,5 10,6 10,6 5,5 5)),((0 20,0 30,10 30,10 20,0 20)))",
+ "212F11212");
+ test_geometry<ring, mpoly>("POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "MULTIPOLYGON(((5 5,5 10,6 10,6 5,5 5)),((0 20,0 30,10 30,10 20,0 20)))",
+ "212F11212");
+}
+
+template <typename P>
+void test_multi_polygon_multi_polygon()
+{
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::multi_polygon<poly> mpoly;
+
+ test_geometry<mpoly, mpoly>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ "MULTIPOLYGON(((5 5,5 10,6 10,6 5,5 5)),((0 20,0 30,10 30,10 20,0 20)))",
+ "212F11212");
+ test_geometry<mpoly, mpoly>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((0 20,0 30,10 30,10 20,0 20)))",
+ "MULTIPOLYGON(((5 5,5 10,6 10,6 5,5 5)))",
+ "212F11FF2");
+
+ test_geometry<mpoly, mpoly>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ "MULTIPOLYGON(((5 5,5 6,6 6,6 5,5 5)),((0 20,0 30,10 30,10 20,0 20)))",
+ "212FF1212");
+ test_geometry<mpoly, mpoly>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((0 20,0 30,10 30,10 20,0 20)))",
+ "MULTIPOLYGON(((5 5,5 6,6 6,6 5,5 5)))",
+ "212FF1FF2");
+}
+
+template <typename P>
+void test_all()
+{
+ test_polygon_polygon<P>();
+ test_polygon_multi_polygon<P>();
+ test_multi_polygon_multi_polygon<P>();
+}
+
+int test_main( int , char* [] )
+{
+ test_all<bg::model::d2::point_xy<int> >();
+ test_all<bg::model::d2::point_xy<double> >();
+
+#if defined(HAVE_TTMATH)
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/relate_linear_areal.cpp b/libs/geometry/test/algorithms/relate_linear_areal.cpp
new file mode 100644
index 0000000000..0096a01aae
--- /dev/null
+++ b/libs/geometry/test/algorithms/relate_linear_areal.cpp
@@ -0,0 +1,336 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2013, 2014.
+// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#include <algorithms/test_relate.hpp>
+
+//TEST
+//#include <to_svg.hpp>
+
+template <typename P>
+void test_linestring_polygon()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::ring<P> ring;
+
+ // LS disjoint
+ test_geometry<ls, poly>("LINESTRING(11 0,11 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "FF1FF0212");
+ test_geometry<ls, ring>("LINESTRING(11 0,11 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "FF1FF0212");
+
+ // II BB
+ test_geometry<ls, poly>("LINESTRING(0 0,10 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "1FFF0F212");
+ test_geometry<ls, poly>("LINESTRING(5 0,5 5,10 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "1FFF0F212");
+ test_geometry<ls, poly>("LINESTRING(5 1,5 5,9 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "1FF0FF212");
+
+ // IE
+ test_geometry<ls, poly>("LINESTRING(11 1,11 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "FF1FF0212");
+ // IE IB0
+ test_geometry<ls, poly>("LINESTRING(11 1,10 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "FF1F00212");
+ // IE IB1
+ test_geometry<ls, poly>("LINESTRING(11 1,10 5,10 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "F11F00212");
+ test_geometry<ls, poly>("LINESTRING(11 1,10 10,0 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "F11F00212");
+ test_geometry<ls, poly>("LINESTRING(11 1,10 0,0 0)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "F11F00212");
+ test_geometry<ls, poly>("LINESTRING(0 -1,1 0,2 0)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "F11F00212");
+ // IE IB0 II
+ test_geometry<ls, poly>("LINESTRING(11 1,10 5,5 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "1010F0212");
+ // IE IB0 lring
+ test_geometry<ls, poly>("LINESTRING(11 1,10 5,11 5,11 1)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "F01FFF212");
+ // IE IB1 lring
+ test_geometry<ls, poly>("LINESTRING(11 1,10 5,10 10,11 5,11 1)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "F11FFF212");
+
+ // IB1 II
+ test_geometry<ls, poly>("LINESTRING(0 0,5 0,5 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "11F00F212");
+ // BI0 II IB1
+ test_geometry<ls, poly>("LINESTRING(5 0,5 5,10 5,10 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "11FF0F212");
+
+ // IB1 II IB1
+ test_geometry<ls, poly>("LINESTRING(1 0,2 0,3 1,4 0,5 0)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "11FF0F212");
+ // IB1 IE IB1
+ test_geometry<ls, poly>("LINESTRING(1 0,2 0,3 -1,4 0,5 0)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "F11F0F212");
+
+ // II IB1
+ test_geometry<ls, poly>("LINESTRING(5 5,10 5,10 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "11F00F212");
+ // IB1 II
+ test_geometry<ls, poly>("LINESTRING(10 10,10 5,5 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "11F00F212");
+ // IE IB1
+ test_geometry<ls, poly>("LINESTRING(15 5,10 5,10 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "F11F00212");
+ // IB1 IE
+ test_geometry<ls, poly>("LINESTRING(10 10,10 5,15 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "F11F00212");
+
+ // duplicated points
+ {
+ // II IB0 IE
+ test_geometry<ls, poly>("LINESTRING(5 5,10 5,15 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "1010F0212");
+ test_geometry<ls, poly>("LINESTRING(5 5,5 5,5 5,10 5,10 5,10 5,15 10,15 10,15 10)",
+ "POLYGON((0 0,0 0,0 0,0 10,0 10,0 10,10 10,10 10,10 10,10 0,10 0,10 0,0 0,0 0,0 0))",
+ "1010F0212");
+ test_geometry<ls, poly>("LINESTRING(5 5,5 5,5 5,10 0,10 0,10 0,15 10,15 10,15 10)",
+ "POLYGON((0 0,0 0,0 0,0 10,0 10,0 10,10 10,10 10,10 10,10 0,10 0,10 0,0 0,0 0,0 0))",
+ "1010F0212");
+ // IE IB0 II
+ test_geometry<ls, poly>("LINESTRING(15 10,15 10,15 10,10 5,10 5,10 5,5 5,5 5,5 5)",
+ "POLYGON((0 0,0 0,0 0,0 10,0 10,0 10,10 10,10 10,10 10,10 0,10 0,10 0,0 0,0 0,0 0))",
+ "1010F0212");
+ test_geometry<ls, poly>("LINESTRING(15 10,15 10,15 10,10 0,10 0,10 0,5 5,5 5,5 5)",
+ "POLYGON((0 0,0 0,0 0,0 10,0 10,0 10,10 10,10 10,10 10,10 0,10 0,10 0,0 0,0 0,0 0))",
+ "1010F0212");
+
+ // TEST
+ //test_geometry<ls, poly>("LINESTRING(5 5,5 5,5 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "1010F0212");
+ test_geometry<ls, poly>("LINESTRING(5 5,5 5,5 5,15 5,15 5,15 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", "1010F0212");
+ }
+
+ // non-simple polygon with hole
+ test_geometry<ls, poly>("LINESTRING(9 1,10 5,9 9)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5))",
+ "10F0FF212");
+ test_geometry<ls, poly>("LINESTRING(10 1,10 5,10 9)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5))",
+ "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(2 8,10 5,2 2)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5))",
+ "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(10 1,10 5,2 2)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5))",
+ "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(10 1,10 5,2 8)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5))",
+ "F1FF0F212");
+
+ // non-simple polygon with hole, linear ring
+ test_geometry<ls, poly>("LINESTRING(9 1,10 5,9 9,1 9,1 1,9 1)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5))",
+ "10FFFF212");
+ test_geometry<ls, poly>("LINESTRING(10 5,10 9,11 5,10 1,10 5)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5))",
+ "F11FFF212");
+ test_geometry<ls, poly>("LINESTRING(11 5,10 1,10 5,10 9,11 5)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5))",
+ "F11FFF212");
+
+ // non-simple polygon with self-touching holes
+ test_geometry<ls, poly>("LINESTRING(7 1,8 5,7 9)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(8 1,9 1,9 9,8 9,8 1),(2 2,8 5,2 8,2 2))",
+ "10F0FF212");
+ test_geometry<ls, poly>("LINESTRING(8 2,8 5,8 8)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(8 1,9 1,9 9,8 9,8 1),(2 2,8 5,2 8,2 2))",
+ "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(2 8,8 5,2 2)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(8 1,9 1,9 9,8 9,8 1),(2 2,8 5,2 8,2 2))",
+ "F1FF0F212");
+
+ // non-simple polygon self-touching
+ test_geometry<ls, poly>("LINESTRING(9 1,10 5,9 9)",
+ "POLYGON((0 0,0 10,10 10,10 5,2 8,2 2,10 5,10 0,0 0))",
+ "10F0FF212");
+ test_geometry<ls, poly>("LINESTRING(10 1,10 5,10 9)",
+ "POLYGON((0 0,0 10,10 10,10 5,2 8,2 2,10 5,10 0,0 0))",
+ "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(2 8,10 5,2 2)",
+ "POLYGON((0 0,0 10,10 10,10 5,2 8,2 2,10 5,10 0,0 0))",
+ "F1FF0F212");
+
+ // non-simple polygon self-touching, linear ring
+ test_geometry<ls, poly>("LINESTRING(9 1,10 5,9 9,1 9,1 1,9 1)",
+ "POLYGON((0 0,0 10,10 10,10 5,2 8,2 2,10 5,10 0,0 0))",
+ "10FFFF212");
+ test_geometry<ls, poly>("LINESTRING(10 5,10 9,11 5,10 1,10 5)",
+ "POLYGON((0 0,0 10,10 10,10 5,2 8,2 2,10 5,10 0,0 0))",
+ "F11FFF212");
+ test_geometry<ls, poly>("LINESTRING(11 5,10 1,10 5,10 9,11 5)",
+ "POLYGON((0 0,0 10,10 10,10 5,2 8,2 2,10 5,10 0,0 0))",
+ "F11FFF212");
+
+ // polygons with some ring equal to the linestring
+ test_geometry<ls, poly>("LINESTRING(0 0,10 0,10 10,0 10,0 0)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "F1FFFF2F2");
+ test_geometry<ls, poly>("LINESTRING(0 0,10 0,10 10,0 10,0 0)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,5 5,2 8,2 2))",
+ "F1FFFF212");
+ test_geometry<ls, poly>("LINESTRING(2 2,5 5,2 8,2 2)",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,5 5,2 8,2 2))",
+ "F1FFFF212");
+
+ // self-IP going on the boundary then into the exterior and to the boundary again
+ test_geometry<ls, poly>("LINESTRING(2 10,5 10,5 15,6 15,5 10,8 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "F11F0F212");
+ // self-IP going on the boundary then into the interior and to the boundary again
+ test_geometry<ls, poly>("LINESTRING(2 10,5 10,5 5,6 5,5 10,8 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))",
+ "11FF0F212");
+
+ // self-IP with a hole -> B to I to B to E
+ test_geometry<ls, poly>("LINESTRING(0 0,3 3)", "POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 9,1 9,0 0))",
+ "FF1F00212");
+
+ // ccw
+ {
+ typedef bg::model::polygon<P, false> ccwpoly;
+
+ // IE IB0 II
+ test_geometry<ls, ccwpoly>("LINESTRING(11 1,10 5,5 5)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", "1010F0212");
+ // IE IB1 II
+ test_geometry<ls, ccwpoly>("LINESTRING(11 1,10 1,10 5,5 5)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", "1110F0212");
+ test_geometry<ls, ccwpoly>("LINESTRING(11 1,10 5,10 1,5 5)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", "1110F0212");
+ // II IB0 IE
+ test_geometry<ls, ccwpoly>("LINESTRING(5 1,10 5,11 1)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", "1010F0212");
+ // IE IB1 II
+ test_geometry<ls, ccwpoly>("LINESTRING(5 5,10 1,10 5,11 5)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", "1110F0212");
+ test_geometry<ls, ccwpoly>("LINESTRING(5 5,10 5,10 1,11 5)", "POLYGON((0 0,10 0,10 10,0 10,0 0))", "1110F0212");
+
+ }
+
+ {
+ // SPIKES
+
+ test_geometry<ls, poly>("LINESTRING(0 0,2 2,3 3,1 1)", "POLYGON((0 0,3 3,3 0,0 0))", "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(0 0,3 3,1 1)", "POLYGON((0 0,3 3,3 0,0 0))", "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(0 0,2 2,1 1)", "POLYGON((0 0,3 3,3 0,0 0))", "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(1 1,3 3,2 2)", "POLYGON((0 0,3 3,3 0,0 0))", "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(1 1,2 2,1 1)", "POLYGON((0 0,3 3,3 0,0 0))", "F1FFFF212");
+
+ test_geometry<ls, poly>("LINESTRING(3 3,1 1,0 0,2 2)", "POLYGON((0 0,3 3,3 0,0 0))", "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(3 3,0 0,2 2)", "POLYGON((0 0,3 3,3 0,0 0))", "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(2 2,0 0,1 1)", "POLYGON((0 0,3 3,3 0,0 0))", "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(3 3,1 1,2 2)", "POLYGON((0 0,3 3,3 0,0 0))", "F1FF0F212");
+ test_geometry<ls, poly>("LINESTRING(2 2,1 1,2 2)", "POLYGON((0 0,3 3,3 0,0 0))", "F1FFFF212");
+
+ test_geometry<ls, poly>("LINESTRING(0 0,2 2,4 4,1 1)", "POLYGON((0 0,3 3,3 0,0 0))", "F11F0F212");
+
+ test_geometry<ls, poly>("LINESTRING(0 1,1 1,0 1)", "POLYGON((0 0,3 3,3 0,0 0))", "F01FFF212");
+ test_geometry<ls, poly>("LINESTRING(0 1,3 3,0 1)", "POLYGON((0 0,3 3,3 0,0 0))", "F01FFF212");
+ test_geometry<ls, poly>("LINESTRING(0 1,0 0,0 1)", "POLYGON((0 0,3 3,3 0,0 0))", "F01FFF212");
+
+ test_geometry<ls, poly>("LINESTRING(0 1,1 1,-1 1)", "POLYGON((0 0,3 3,3 0,0 0))", "F01FF0212");
+ }
+}
+
+template <typename P>
+void test_linestring_multi_polygon()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::multi_polygon<poly> mpoly;
+
+ test_geometry<ls, mpoly>("LINESTRING(10 1,10 5,10 9)",
+ "MULTIPOLYGON(((0 20,0 30,10 30,10 20,0 20)),((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5)))",
+ "F1FF0F212");
+ test_geometry<ls, mpoly>("LINESTRING(10 1,10 5,10 9)",
+ "MULTIPOLYGON(((0 20,0 30,10 30,10 20,0 20)),((0 0,0 10,10 10,10 0,0 0)))",
+ "F1FF0F212");
+
+ test_geometry<ls, mpoly>("LINESTRING(10 1,10 5,2 2)",
+ "MULTIPOLYGON(((0 20,0 30,10 30,10 20,0 20)),((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5)))",
+ "F1FF0F212");
+ test_geometry<ls, mpoly>("LINESTRING(10 1,10 5,2 2)",
+ "MULTIPOLYGON(((0 20,0 30,10 30,10 20,0 20)),((0 0,0 10,10 10,10 0,0 0)))",
+ "11F00F212");
+
+ test_geometry<ls, mpoly>("LINESTRING(10 1,10 5,2 2)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5)),((10 5,3 3,3 7,10 5)))",
+ "F1FF0F212");
+ test_geometry<ls, mpoly>("LINESTRING(10 1,10 5,2 8)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5)),((10 5,3 3,3 7,10 5)))",
+ "F1FF0F212");
+ test_geometry<ls, mpoly>("LINESTRING(10 1,10 5,3 3)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5)),((10 5,3 3,3 7,10 5)))",
+ "F1FF0F212");
+ test_geometry<ls, mpoly>("LINESTRING(10 1,10 5,3 7)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5)),((10 5,3 3,3 7,10 5)))",
+ "F1FF0F212");
+ test_geometry<ls, mpoly>("LINESTRING(10 1,10 5,5 5)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(10 5,2 8,2 2,10 5)),((10 5,3 3,3 7,10 5)))",
+ "11F00F212");
+
+ test_geometry<ls, mpoly>("LINESTRING(0 0,10 0,10 10,0 10,0 0)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((20 0,20 10,30 20,20 0)))",
+ "F1FFFF212");
+
+ // degenerated points
+ test_geometry<ls, mpoly>("LINESTRING(5 5,10 10,10 10,10 10,15 15)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((10 10,10 20,20 20,20 10,10 10)))",
+ "10F0FF212");
+
+ // self-IP polygon with a hole and second polygon with a hole -> B to I to B to B to I to B to E
+ test_geometry<ls, mpoly>("LINESTRING(0 0,3 3)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 9,1 9,0 0)),((0 0,2 8,8 8,8 2,0 0),(0 0,7 3,7 7,3 7,0 0)))",
+ "FF1F00212");
+ // self-IP polygon with a hole and second polygon -> B to I to B to B to I
+ test_geometry<ls, mpoly>("LINESTRING(0 0,3 3)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 9,1 9,0 0)),((0 0,2 8,8 8,8 2,0 0)))",
+ "1FF00F212");
+ test_geometry<ls, mpoly>("LINESTRING(0 0,3 3)",
+ "MULTIPOLYGON(((0 0,2 8,8 8,8 2,0 0)),((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 9,1 9,0 0)))",
+ "1FF00F212");
+}
+
+template <typename P>
+void test_multi_linestring_multi_polygon()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::multi_linestring<ls> mls;
+ typedef bg::model::multi_polygon<poly> mpoly;
+
+ // polygons with some ring equal to the linestrings
+ test_geometry<mls, mpoly>("MULTILINESTRING((0 0,10 0,10 10,0 10,0 0),(20 20,50 50,20 80,20 20))",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ "F11FFF2F2");
+
+ test_geometry<mls, mpoly>("MULTILINESTRING((0 0,10 0,10 10,0 10,0 0),(2 2,5 5,2 8,2 2))",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(2 2,5 5,2 8,2 2)))",
+ "F1FFFF2F2");
+
+
+ test_geometry<mls, mpoly>("MULTILINESTRING((0 0,10 0,10 10),(10 10,0 10,0 0))",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ "F1FFFF2F2");
+ test_geometry<mls, mpoly>("MULTILINESTRING((0 0,10 0,10 10),(10 10,0 10,0 0),(20 20,50 50,20 80,20 20))",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ "F11FFF2F2");
+
+ // disjoint
+ test_geometry<mls, mpoly>("MULTILINESTRING((20 20,30 30),(30 30,40 40))",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ "FF1FF0212");
+
+ test_geometry<mls, mpoly>("MULTILINESTRING((5 5,0 5),(5 5,5 0),(10 10,10 5,5 5,5 10,10 10))",
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)),((5 5,10 1,10 0,5 5)))",
+ "F1FF0F212");
+ test_geometry<mls, mpoly>("MULTILINESTRING((5 5,0 5),(5 5,5 0),(0 5,0 0,5 0),(10 10,10 5,5 5,5 10,10 10))",
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)),((5 5,10 1,10 0,5 5)))",
+ "F1FFFF212");
+ test_geometry<mls, mpoly>("MULTILINESTRING((5 5,0 0),(5 5,5 0),(10 10,10 5,5 5,5 10,10 10))",
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)),((5 5,10 1,10 0,5 5)))",
+ "11FF0F212");
+}
+
+template <typename P>
+void test_all()
+{
+ test_linestring_polygon<P>();
+ test_linestring_multi_polygon<P>();
+ test_multi_linestring_multi_polygon<P>();
+}
+
+int test_main( int , char* [] )
+{
+ test_all<bg::model::d2::point_xy<int> >();
+ test_all<bg::model::d2::point_xy<double> >();
+
+#if defined(HAVE_TTMATH)
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/relate_linear_linear.cpp b/libs/geometry/test/algorithms/relate_linear_linear.cpp
new file mode 100644
index 0000000000..f847db6fd4
--- /dev/null
+++ b/libs/geometry/test/algorithms/relate_linear_linear.cpp
@@ -0,0 +1,364 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2013, 2014.
+// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#include <algorithms/test_relate.hpp>
+
+//TEST
+//#include <to_svg.hpp>
+
+template <typename P>
+void test_linestring_linestring()
+{
+ typedef bg::model::linestring<P> ls;
+
+ test_geometry<ls, ls>("LINESTRING(0 0, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 3 2)", "1FFF0FFF2");
+ test_geometry<ls, ls>("LINESTRING(0 0,3 2)", "LINESTRING(0 0, 2 2, 3 2)", "FF1F0F1F2");
+ test_geometry<ls, ls>("LINESTRING(1 0,2 2,2 3)", "LINESTRING(0 0, 2 2, 3 2)", "0F1FF0102");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,5 0)", "LINESTRING(0 0,1 1,2 0,2 -1)", "0F1F00102");
+
+ test_geometry<ls, ls>("LINESTRING(0 0, 1 1, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 3 2)", "1FFF0FFF2");
+ test_geometry<ls, ls>("LINESTRING(3 2, 2 2, 1 1, 0 0)", "LINESTRING(0 0, 2 2, 3 2)", "1FFF0FFF2");
+ test_geometry<ls, ls>("LINESTRING(0 0, 1 1, 2 2, 3 2)", "LINESTRING(3 2, 2 2, 0 0)", "1FFF0FFF2");
+ test_geometry<ls, ls>("LINESTRING(3 2, 2 2, 1 1, 0 0)", "LINESTRING(3 2, 2 2, 0 0)", "1FFF0FFF2");
+
+ test_geometry<ls, ls>("LINESTRING(3 1, 2 2, 1 1, 0 0)", "LINESTRING(0 0, 2 2, 3 2)", "1F1F00102");
+ test_geometry<ls, ls>("LINESTRING(3 3, 2 2, 1 1, 0 0)", "LINESTRING(0 0, 2 2, 3 2)", "1F1F00102");
+
+ test_geometry<ls, ls>("LINESTRING(0 0, 1 1, 2 2, 2 3)", "LINESTRING(0 0, 2 2, 2 3)", "1FFF0FFF2");
+ test_geometry<ls, ls>("LINESTRING(2 3, 2 2, 1 1, 0 0)", "LINESTRING(0 0, 2 2, 2 3)", "1FFF0FFF2");
+ test_geometry<ls, ls>("LINESTRING(0 0, 1 1, 2 2, 2 3)", "LINESTRING(2 3, 2 2, 0 0)", "1FFF0FFF2");
+ test_geometry<ls, ls>("LINESTRING(2 3, 2 2, 1 1, 0 0)", "LINESTRING(2 3, 2 2, 0 0)", "1FFF0FFF2");
+
+ test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 4 2)", "1FF0FF102");
+
+ test_geometry<ls, ls>("LINESTRING(3 2, 2 2, 1 1)", "LINESTRING(0 0, 2 2, 4 2)", "1FF0FF102");
+ test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 2)", "LINESTRING(4 2, 2 2, 0 0)", "1FF0FF102");
+ test_geometry<ls, ls>("LINESTRING(3 2, 2 2, 1 1)", "LINESTRING(4 2, 2 2, 0 0)", "1FF0FF102");
+
+// test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 2 2)", "LINESTRING(0 0, 2 2, 4 2)", true);
+
+// test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 3)", "LINESTRING(0 0, 2 2, 4 2)", false);
+// test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 2, 3 3)", "LINESTRING(0 0, 2 2, 4 2)", false);
+// test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 1)", "LINESTRING(0 0, 2 2, 4 2)", false);
+// test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 2, 3 1)", "LINESTRING(0 0, 2 2, 4 2)", false);
+
+// test_geometry<ls, ls>("LINESTRING(0 1, 1 1, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 4 2)", false);
+// test_geometry<ls, ls>("LINESTRING(0 1, 0 0, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 4 2)", false);
+// test_geometry<ls, ls>("LINESTRING(1 0, 1 1, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 4 2)", false);
+// test_geometry<ls, ls>("LINESTRING(1 0, 0 0, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 4 2)", false);
+
+// test_geometry<ls, ls>("LINESTRING(0 0)", "LINESTRING(0 0)", false);
+// test_geometry<ls, ls>("LINESTRING(1 1)", "LINESTRING(0 0, 2 2)", true);
+// test_geometry<ls, ls>("LINESTRING(0 0)", "LINESTRING(0 0, 2 2)", false);
+// test_geometry<ls, ls>("LINESTRING(0 0, 1 1)", "LINESTRING(0 0)", false);
+
+// test_geometry<ls, ls>("LINESTRING(0 0,5 0,3 0,6 0)", "LINESTRING(0 0,6 0)", true);
+// test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 3,1 1)", "LINESTRING(0 0,3 3,6 3)", true);
+
+ // SPIKES!
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 3,1 1,5 3)", "LINESTRING(0 0,3 3,6 3)", "1F100F102");
+ test_geometry<ls, ls>("LINESTRING(5 3,1 1,3 3,2 2,0 0)", "LINESTRING(0 0,3 3,6 3)", "1F100F102");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 3,1 1,5 3)", "LINESTRING(6 3,3 3,0 0)", "1F100F102");
+ test_geometry<ls, ls>("LINESTRING(5 3,1 1,3 3,2 2,0 0)", "LINESTRING(6 3,3 3,0 0)", "1F100F102");
+
+ test_geometry<ls, ls>("LINESTRING(6 3,3 3,0 0)", "LINESTRING(0 0,2 2,3 3,1 1,5 3)", "101F001F2");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,10 0)", "LINESTRING(1 0,9 0,2 0)", "101FF0FF2");
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 3,1 1)", "LINESTRING(0 0,3 3,6 3)", "1FF00F102");
+ // TODO: REWRITE MATRICES
+ // BEGIN
+ /*test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 3,1 1)", "LINESTRING(0 0,4 4,6 3)", "1FF00F102");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,2 0,1 0)", "LINESTRING(0 1,0 0,2 0)", "1FF00F102");
+ test_geometry<ls, ls>("LINESTRING(2 0,0 0,1 0)", "LINESTRING(0 1,0 0,2 0)", "1FF00F102");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,3 3,1 1)", "LINESTRING(3 0,3 3,3 1)", "0F1FF0102");
+ test_geometry<ls, ls>("LINESTRING(0 0,3 3,1 1)", "LINESTRING(2 0,2 3,2 1)", "0F1FF0102");
+ test_geometry<ls, ls>("LINESTRING(0 0,3 3,1 1)", "LINESTRING(2 0,2 2,2 1)", "0F1FF0102");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 3,4 4)", "LINESTRING(0 0,1 1,4 4)", "1FFF0FFF2");*/
+ // END
+
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 3,4 4)", "LINESTRING(0 0,1 1,4 4)", "1FFF0FFF2");
+
+ // loop i/i i/i u/u u/u
+ test_geometry<ls, ls>("LINESTRING(0 0,10 0)",
+ "LINESTRING(1 1,1 0,6 0,6 1,4 1,4 0,9 0,9 1)", "1F1FF0102");
+
+ // self-intersecting and self-touching equal
+ test_geometry<ls, ls>("LINESTRING(0 5,5 5,10 5,10 10,5 10,5 5,5 0)",
+ "LINESTRING(0 5,5 5,5 10,10 10,10 5,5 5,5 0)", "1FFF0FFF2");
+ // self-intersecting loop and self-touching equal
+ test_geometry<ls, ls>("LINESTRING(0 5,5 5,10 5,10 10,5 10,5 5,10 5,10 10,5 10,5 5,5 0)",
+ "LINESTRING(0 5,5 5,5 10,10 10,10 5,5 5,5 0)", "1FFF0FFF2");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,1 1)", "LINESTRING(0 1,1 0)", "0F1FF0102");
+ test_geometry<ls, ls>("LINESTRING(0 0,1 1)", "LINESTRING(1 1,2 0)", "FF1F00102");
+ test_geometry<ls, ls>("LINESTRING(0 0,1 1)", "LINESTRING(2 0,1 1)", "FF1F00102");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,1 0,2 1,3 5,4 0)", "LINESTRING(1 0,2 1,3 5)", "101FF0FF2");
+ test_geometry<ls, ls>("LINESTRING(0 0,1 0,2 1,3 5,4 0)", "LINESTRING(3 5,2 1,1 0)", "101FF0FF2");
+ test_geometry<ls, ls>("LINESTRING(1 0,2 1,3 5)", "LINESTRING(4 0,3 5,2 1,1 0,0 0)", "1FF0FF102");
+ test_geometry<ls, ls>("LINESTRING(3 5,2 1,1 0)", "LINESTRING(4 0,3 5,2 1,1 0,0 0)", "1FF0FF102");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,10 0)", "LINESTRING(-1 -1,1 0,10 0,20 -1)", "1F10F0102");
+ test_geometry<ls, ls>("LINESTRING(0 0,10 0)", "LINESTRING(20 -1,10 0,1 0,-1 -1)", "1F10F0102");
+
+ test_geometry<ls, ls>("LINESTRING(-1 1,0 0,1 0,5 0,5 5,10 5,15 0,31 0)",
+ "LINESTRING(-1 -1,0 0,1 0,2 0,3 1,4 0,30 0)",
+ "101FF0102");
+ test_geometry<ls, ls>("LINESTRING(-1 1,0 0,1 0,5 0,5 5,10 5,15 0,31 0)",
+ "LINESTRING(30 0,4 0,3 1,2 0,1 0,0 0,-1 -1)",
+ "101FF0102");
+ test_geometry<ls, ls>("LINESTRING(31 0,15 0,10 5,5 5,5 0,1 0,0 0,-1 1)",
+ "LINESTRING(-1 -1,0 0,1 0,2 0,3 1,4 0,30 0)",
+ "101FF0102");
+ test_geometry<ls, ls>("LINESTRING(31 0,15 0,10 5,5 5,5 0,1 0,0 0,-1 1)",
+ "LINESTRING(30 0,4 0,3 1,2 0,1 0,0 0,-1 -1)",
+ "101FF0102");
+
+ // self-IP
+ test_geometry<ls, ls>("LINESTRING(1 0,9 0)",
+ "LINESTRING(0 0,10 0,10 10,5 0,0 10)",
+ "1FF0FF102");
+ test_geometry<ls, ls>("LINESTRING(1 0,5 0,9 0)",
+ "LINESTRING(0 0,10 0,10 10,5 0,0 10)",
+ "1FF0FF102");
+ test_geometry<ls, ls>("LINESTRING(1 0,9 0)",
+ "LINESTRING(0 0,10 0,10 10,5 10,5 -1)",
+ "1FF0FF102");
+ test_geometry<ls, ls>("LINESTRING(1 0,9 0)",
+ "LINESTRING(0 0,10 0,5 0,5 5)",
+ "1FF0FF102");
+ test_geometry<ls, ls>("LINESTRING(1 0,7 0)", "LINESTRING(0 0,10 0,10 10,4 -1)",
+ "1FF0FF102");
+ test_geometry<ls, ls>("LINESTRING(1 0,5 0,7 0)", "LINESTRING(0 0,10 0,10 10,4 -1)",
+ "1FF0FF102");
+ test_geometry<ls, ls>("LINESTRING(1 0,7 0,8 1)", "LINESTRING(0 0,10 0,10 10,4 -1)",
+ "1F10F0102");
+ test_geometry<ls, ls>("LINESTRING(1 0,5 0,7 0,8 1)", "LINESTRING(0 0,10 0,10 10,4 -1)",
+ "1F10F0102");
+
+ // self-IP going out and in on the same point
+ test_geometry<ls, ls>("LINESTRING(2 0,5 0,5 5,6 5,5 0,8 0)", "LINESTRING(1 0,9 0)",
+ "1F10FF102");
+
+ // duplicated points
+ test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 2 2)", "LINESTRING(0 0, 2 2, 4 2)", "1FF0FF102");
+ test_geometry<ls, ls>("LINESTRING(1 1, 1 1, 2 2)", "LINESTRING(0 0, 2 2, 4 2)", "1FF0FF102");
+
+ // linear ring
+ test_geometry<ls, ls>("LINESTRING(0 0,10 0)", "LINESTRING(5 0,9 0,5 5,1 0,5 0)", "1F1FF01F2");
+ test_geometry<ls, ls>("LINESTRING(0 0,5 0,10 0)", "LINESTRING(5 0,9 0,5 5,1 0,5 0)", "1F1FF01F2");
+ test_geometry<ls, ls>("LINESTRING(0 0,5 0,10 0)", "LINESTRING(5 0,10 0,5 5,1 0,5 0)", "1F10F01F2");
+
+ test_geometry<ls, ls>("LINESTRING(0 0,5 0)", "LINESTRING(5 0,10 0,5 5,0 0,5 0)", "1FF0FF1F2");
+ test_geometry<ls, ls>("LINESTRING(0 0,5 0)", "LINESTRING(5 0,10 0,5 5,5 0)", "FF10F01F2");
+
+ test_geometry<ls, ls>("LINESTRING(1 0,1 6)", "LINESTRING(0 0,5 0,5 5,0 5)", "0F10F0102");
+
+ // point-size Linestring
+ test_geometry<ls, ls>("LINESTRING(1 0,1 0)", "LINESTRING(0 0,5 0)", "0FFFFF102");
+ test_geometry<ls, ls>("LINESTRING(1 0,1 0)", "LINESTRING(1 0,5 0)", "F0FFFF102");
+ test_geometry<ls, ls>("LINESTRING(1 0,1 0)", "LINESTRING(0 0,1 0)", "F0FFFF102");
+ test_geometry<ls, ls>("LINESTRING(1 0,1 0)", "LINESTRING(1 0,1 0)", "0FFFFFFF2");
+ test_geometry<ls, ls>("LINESTRING(1 0,1 0)", "LINESTRING(0 0,0 0)", "FF0FFF0F2");
+
+ //to_svg<ls, ls>("LINESTRING(0 0,5 0)", "LINESTRING(5 0,10 0,5 5,5 0)", "test_relate_00.svg");
+
+ // INVALID LINESTRINGS
+ // 1-point LS (a Point) NOT disjoint
+ //test_geometry<ls, ls>("LINESTRING(1 0)", "LINESTRING(0 0,5 0)", "0FFFFF102");
+ //test_geometry<ls, ls>("LINESTRING(0 0,5 0)", "LINESTRING(1 0)", "0F1FF0FF2");
+ //test_geometry<ls, ls>("LINESTRING(0 0,5 0)", "LINESTRING(1 0,1 0,1 0)", "0F1FF0FF2");
+ // Point/Point
+ //test_geometry<ls, ls>("LINESTRING(0 0)", "LINESTRING(0 0)", "0FFFFFFF2");
+
+ // OTHER MASKS
+ {
+ namespace bgdr = bg::detail::relate;
+ ls ls1, ls2, ls3, ls4;
+ bg::read_wkt("LINESTRING(0 0,2 0)", ls1);
+ bg::read_wkt("LINESTRING(2 0,4 0)", ls2);
+ bg::read_wkt("LINESTRING(1 0,1 1)", ls3);
+ bg::read_wkt("LINESTRING(1 0,4 0)", ls4);
+ BOOST_CHECK(bgdr::relate(ls1, ls2, bgdr::mask9("FT*******")
+ || bgdr::mask9("F**T*****")
+ || bgdr::mask9("F***T****")));
+ BOOST_CHECK(bgdr::relate(ls1, ls3, bgdr::mask9("FT*******")
+ || bgdr::mask9("F**T*****")
+ || bgdr::mask9("F***T****")));
+ BOOST_CHECK(bgdr::relate(ls3, ls1, bgdr::mask9("FT*******")
+ || bgdr::mask9("F**T*****")
+ || bgdr::mask9("F***T****")));
+ BOOST_CHECK(bgdr::relate(ls2, ls4, bgdr::mask9("T*F**F***"))); // within
+ }
+}
+
+template <typename P>
+void test_linestring_multi_linestring()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+
+ // LS disjoint
+ test_geometry<ls, mls>("LINESTRING(0 0,10 0)", "MULTILINESTRING((1 0,2 0),(1 1,2 1))", "101FF0102");
+ // linear ring disjoint
+ test_geometry<ls, mls>("LINESTRING(0 0,10 0)", "MULTILINESTRING((1 0,2 0),(1 1,2 1,2 2,1 1))", "101FF01F2");
+ // 2xLS forming non-simple linear ring disjoint
+ test_geometry<ls, mls>("LINESTRING(0 0,10 0)", "MULTILINESTRING((1 0,2 0),(1 1,2 1,2 2),(1 1,2 2))", "101FF01F2");
+
+ test_geometry<ls, mls>("LINESTRING(0 0,10 0)",
+ "MULTILINESTRING((1 0,9 0),(9 0,2 0))",
+ "101FF0FF2");
+
+ // rings
+ test_geometry<ls, mls>("LINESTRING(0 0,5 0,5 5,0 5,0 0)",
+ "MULTILINESTRING((5 5,0 5,0 0),(0 0,5 0,5 5))",
+ "1FFFFFFF2");
+ test_geometry<ls, mls>("LINESTRING(0 0,5 0,5 5,0 5,0 0)",
+ "MULTILINESTRING((5 5,5 0,0 0),(0 0,0 5,5 5))",
+ "1FFFFFFF2");
+ // overlapping rings
+ test_geometry<ls, mls>("LINESTRING(0 0,5 0,5 5,0 5,0 0)",
+ "MULTILINESTRING((5 5,0 5,0 0),(0 0,5 0,5 5,0 5))",
+ "10FFFFFF2");
+ test_geometry<ls, mls>("LINESTRING(0 0,5 0,5 5,0 5,0 0)",
+ "MULTILINESTRING((5 5,5 0,0 0),(0 0,0 5,5 5,5 0))",
+ "10FFFFFF2");
+
+ // INVALID LINESTRINGS
+ // 1-point LS (a Point) disjoint
+ //test_geometry<ls, mls>("LINESTRING(0 0,10 0)", "MULTILINESTRING((1 0,2 0),(1 1))", "101FF00F2");
+ //test_geometry<ls, mls>("LINESTRING(0 0,10 0)", "MULTILINESTRING((1 0,2 0),(1 1,1 1))", "101FF00F2");
+ //test_geometry<ls, mls>("LINESTRING(0 0,10 0)", "MULTILINESTRING((1 0,2 0),(1 1,1 1,1 1))", "101FF00F2");
+ // 1-point LS (a Point) NOT disjoint
+ //test_geometry<ls, mls>("LINESTRING(0 0,10 0)", "MULTILINESTRING((1 0,9 0),(2 0))", "101FF0FF2");
+ //test_geometry<ls, mls>("LINESTRING(0 0,10 0)", "MULTILINESTRING((1 0,9 0),(2 0,2 0))", "101FF0FF2");
+ //test_geometry<ls, mls>("LINESTRING(0 0,10 0)", "MULTILINESTRING((1 0,9 0),(2 0,2 0,2 0))", "101FF0FF2");
+
+ // point-like
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 1 0),(2 0, 2 0))", // |------| *
+ "101F00FF2");
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 1 0),(1 0, 1 0))", // |------*
+ "101F00FF2");
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((5 0, 1 0),(1 0, 1 0))", // *-------|
+ "101F00FF2");
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 1 0),(5 0, 5 0))", // |------| *
+ "10100FFF2");
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 1 0),(0 0, 0 0))", // *------|
+ "101000FF2");
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((4 0, 5 0),(5 0, 5 0))", // |------*
+ "101000FF2");
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((1 0, 2 0),(0 0, 0 0))", // * |------|
+ "1010F0FF2");
+
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((2 0, 2 0),(2 0, 2 2))", // *
+ "001FF0102"); // |
+
+ // for consistency
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 5 0),(0 0, 2 0))", // |--------------|
+ "10F00FFF2"); // |------|
+
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 5 0),(3 0, 5 0))", // |--------------|
+ "10F00FFF2"); // |------|
+
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 5 0),(0 0, 6 0))", // |--------------|
+ "1FF00F102"); // |----------------|
+
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 5 0),(-1 0, 5 0))", // |--------------|
+ "1FF00F102"); // |----------------|
+
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 5 0),(-1 0, 6 0))", // |--------------|
+ "1FF00F102"); // |------------------|
+
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 5 0),(-1 0, 2 0))", // |--------------|
+ "10F00F102"); // |-------|
+
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 5 0),(2 0, 6 0))", // |--------------|
+ "10F00F102"); // |-------|
+
+ test_geometry<ls, mls>("LINESTRING(0 0, 5 0)", // |--------------|
+ "MULTILINESTRING((0 0, 5 0),(2 0, 2 2))", // |--------------|
+ "10FF0F102"); // |
+ // |
+}
+
+template <typename P>
+void test_multi_linestring_multi_linestring()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,0 0,18 0,18 0,19 0,19 0,19 0,30 0,30 0))",
+ "MULTILINESTRING((0 10,5 0,20 0,20 0,30 0))",
+ "1F1F00102");
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,0 0,18 0,18 0,19 0,19 0,19 0,30 0,30 0))",
+ //"MULTILINESTRING((0 10,5 0,20 0,20 0,30 0),(1 10,1 10,1 0,1 0,1 -10),(2 0,2 0),(3 0,3 0,3 0),(0 0,0 0,0 10,0 10),(30 0,30 0,31 0,31 0))",
+ "MULTILINESTRING((0 10,5 0,20 0,20 0,30 0),(1 10,1 10,1 0,1 0,1 -10),(0 0,0 0,0 10,0 10),(30 0,30 0,31 0,31 0))",
+ "1F100F102");
+ test_geometry<mls, mls>("MULTILINESTRING((0 0,0 0,18 0,18 0,19 0,19 0,19 0,30 0,30 0))",
+ "MULTILINESTRING((0 10,5 0,20 0,20 0,30 0),(0 0,0 0,0 10,0 10))",
+ "1F1F0F1F2");
+
+ // point-like
+ test_geometry<mls, mls>("MULTILINESTRING((0 0, 0 0),(1 1, 1 1))",
+ "MULTILINESTRING((0 0, 0 0))",
+ "0F0FFFFF2");
+ test_geometry<mls, mls>("MULTILINESTRING((0 0, 0 0),(1 1, 1 1))",
+ "MULTILINESTRING((0 0, 0 0),(1 1, 1 1))",
+ "0FFFFFFF2");
+ test_geometry<mls, mls>("MULTILINESTRING((0 0, 0 0),(1 1, 1 1))",
+ "MULTILINESTRING((2 2, 2 2),(3 3, 3 3))",
+ "FF0FFF0F2");
+
+ test_geometry<mls, mls>("MULTILINESTRING((0 5,10 5,10 10,5 10),(5 10,5 0,5 2),(5 2,5 5,0 5))",
+ "MULTILINESTRING((5 5,0 5),(5 5,5 0),(10 10,10 5,5 5,5 10,10 10))",
+ "10FFFFFF2");
+}
+
+template <typename P>
+void test_all()
+{
+ test_linestring_linestring<P>();
+ test_linestring_multi_linestring<P>();
+ test_multi_linestring_multi_linestring<P>();
+}
+
+int test_main( int , char* [] )
+{
+ test_all<bg::model::d2::point_xy<int> >();
+ test_all<bg::model::d2::point_xy<double> >();
+
+#if defined(HAVE_TTMATH)
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/relate_pointlike_xxx.cpp b/libs/geometry/test/algorithms/relate_pointlike_xxx.cpp
new file mode 100644
index 0000000000..02d1fd84e1
--- /dev/null
+++ b/libs/geometry/test/algorithms/relate_pointlike_xxx.cpp
@@ -0,0 +1,103 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2013, 2014.
+// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#include <algorithms/test_relate.hpp>
+
+//TEST
+//#include <to_svg.hpp>
+
+template <typename P>
+void test_point_point()
+{
+ test_geometry<P, P>("POINT(0 0)", "POINT(0 0)", "0FFFFFFF2");
+ test_geometry<P, P>("POINT(1 0)", "POINT(0 0)", "FF0FFF0F2");
+}
+
+template <typename P>
+void test_point_multipoint()
+{
+ typedef bg::model::multi_point<P> mpt;
+
+ test_geometry<P, mpt>("POINT(0 0)", "MULTIPOINT(0 0)", "0FFFFFFF2");
+ test_geometry<P, mpt>("POINT(1 0)", "MULTIPOINT(0 0)", "FF0FFF0F2");
+ test_geometry<P, mpt>("POINT(0 0)", "MULTIPOINT(0 0, 1 0)", "0FFFFF0F2");
+}
+
+template <typename P>
+void test_multipoint_multipoint()
+{
+ typedef bg::model::multi_point<P> mpt;
+
+ test_geometry<mpt, mpt>("MULTIPOINT(0 0)", "MULTIPOINT(0 0)", "0FFFFFFF2");
+ test_geometry<mpt, mpt>("MULTIPOINT(1 0)", "MULTIPOINT(0 0)", "FF0FFF0F2");
+ test_geometry<mpt, mpt>("MULTIPOINT(0 0)", "MULTIPOINT(0 0, 1 0)", "0FFFFF0F2");
+ test_geometry<mpt, mpt>("MULTIPOINT(0 0, 1 0)", "MULTIPOINT(0 0)", "0F0FFFFF2");
+ test_geometry<mpt, mpt>("MULTIPOINT(0 0, 1 1)", "MULTIPOINT(0 0, 1 0)", "0F0FFF0F2");
+
+ //typedef bg::model::d2::point_xy<float> ptf;
+ //typedef bg::model::multi_point<ptf> mptf;
+ //test_geometry<mptf, mpt>("MULTIPOINT(0 0)", "MULTIPOINT(0 0)", "0FFFFFFF2");
+}
+
+template <typename P>
+void test_point_linestring()
+{
+ typedef bg::model::linestring<P> ls;
+
+ test_geometry<P, ls>("POINT(0 0)", "LINESTRING(0 0, 2 2, 3 2)", "F0FFFF102");
+ test_geometry<P, ls>("POINT(1 1)", "LINESTRING(0 0, 2 2, 3 2)", "0FFFFF102");
+ test_geometry<P, ls>("POINT(3 2)", "LINESTRING(0 0, 2 2, 3 2)", "F0FFFF102");
+ test_geometry<P, ls>("POINT(1 0)", "LINESTRING(0 0, 2 2, 3 2)", "FF0FFF102");
+
+ test_geometry<P, ls>("POINT(0 0)", "LINESTRING(0 0, 2 2, 3 2, 0 0)", "0FFFFF1F2");
+ test_geometry<P, ls>("POINT(1 1)", "LINESTRING(0 0, 2 2, 3 2, 0 0)", "0FFFFF1F2");
+ test_geometry<P, ls>("POINT(3 2)", "LINESTRING(0 0, 2 2, 3 2, 0 0)", "0FFFFF1F2");
+ test_geometry<P, ls>("POINT(1 0)", "LINESTRING(0 0, 2 2, 3 2, 0 0)", "FF0FFF1F2");
+}
+
+template <typename P>
+void test_point_multilinestring()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+
+ test_geometry<P, mls>("POINT(0 0)", "MULTILINESTRING((0 0, 2 0, 2 2),(0 0, 0 2))", "0FFFFF102");
+ test_geometry<P, mls>("POINT(0 0)", "MULTILINESTRING((0 0, 2 0, 2 2),(0 0, 0 2, 2 2))", "0FFFFF1F2");
+ test_geometry<P, mls>("POINT(0 0)", "MULTILINESTRING((0 0, 2 0, 2 2),(0 0, 0 2, 2 2),(0 0, 1 1))", "F0FFFF102");
+
+ test_geometry<P, mls>("POINT(0 0)", "MULTILINESTRING((0 0,5 0),(0 0,0 5,5 0),(0 0,-5 0),(0 0,0 -5,-5 0))", "0FFFFF1F2");
+ test_geometry<P, mls>("POINT(5 0)", "MULTILINESTRING((0 0,5 0),(0 0,0 5,5 0),(0 0,-5 0),(0 0,0 -5,-5 0))", "0FFFFF1F2");
+ test_geometry<P, mls>("POINT(1 0)", "MULTILINESTRING((0 0,5 0),(0 0,0 5,5 0),(0 0,-5 0),(0 0,0 -5,-5 0))", "0FFFFF1F2");
+}
+
+template <typename P>
+void test_all()
+{
+ test_point_point<P>();
+ test_point_multipoint<P>();
+ test_multipoint_multipoint<P>();
+ test_point_linestring<P>();
+ test_point_multilinestring<P>();
+}
+
+int test_main( int , char* [] )
+{
+ test_all<bg::model::d2::point_xy<int> >();
+ test_all<bg::model::d2::point_xy<double> >();
+
+#if defined(HAVE_TTMATH)
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/remove_spikes.cpp b/libs/geometry/test/algorithms/remove_spikes.cpp
new file mode 100644
index 0000000000..f4c0a21dc7
--- /dev/null
+++ b/libs/geometry/test/algorithms/remove_spikes.cpp
@@ -0,0 +1,193 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2013 Mateusz Loskot, London, UK.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
+// 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)
+
+#include <iostream>
+#include <iomanip>
+#include <string>
+
+// Instead of having a separate (and nearly similar) unit test to test multipolygons,
+// we now include them here and compile them by default. Only undefining the next line
+// will avoid testing multi-geometries
+#define BOOST_GEOMETRY_UNIT_TEST_MULTI
+
+#include <boost/variant/variant.hpp>
+
+#include <geometry_test_common.hpp>
+
+// The include to test
+#include <boost/geometry/algorithms/remove_spikes.hpp>
+
+// Helper includes
+#include <boost/geometry/algorithms/area.hpp>
+#include <boost/geometry/algorithms/correct.hpp>
+#include <boost/geometry/algorithms/perimeter.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
+
+#if defined(BOOST_GEOMETRY_UNIT_TEST_MULTI)
+
+# include <boost/geometry/multi/algorithms/remove_spikes.hpp>
+
+# include <boost/geometry/multi/algorithms/area.hpp>
+# include <boost/geometry/multi/algorithms/correct.hpp>
+# include <boost/geometry/multi/algorithms/perimeter.hpp>
+# include <boost/geometry/multi/geometries/multi_polygon.hpp>
+# include <boost/geometry/multi/io/wkt/wkt.hpp>
+#endif
+
+
+#if defined(TEST_WITH_SVG)
+# include <boost/geometry/io/svg/svg_mapper.hpp>
+#endif
+
+
+template <typename Geometry>
+inline void test_remove_spikes(std::string const& id,
+ Geometry& geometry,
+ double expected_area, double expected_perimeter)
+{
+ bg::remove_spikes(geometry);
+
+ double detected_area = bg::area(geometry);
+ double detected_perimeter = bg::perimeter(geometry);
+
+ BOOST_CHECK_CLOSE(detected_area, expected_area, 0.01);
+ BOOST_CHECK_CLOSE(detected_perimeter, expected_perimeter, 0.01);
+}
+
+template <typename Geometry>
+void test_geometry(std::string const& id, std::string const& wkt,
+ double expected_area, double expected_perimeter)
+{
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ bg::correct(geometry);
+ boost::variant<Geometry> v(geometry);
+
+#if defined(TEST_WITH_SVG)
+ std::ostringstream filename;
+ filename << "remove_spikes_" << id;
+ if (! bg::closure<Geometry>::value)
+ {
+ filename << "_open";
+ }
+ filename << ".svg";
+ std::ofstream svg(filename.str().c_str());
+
+ bg::svg_mapper<typename bg::point_type<Geometry>::type> mapper(svg, 500, 500);
+ mapper.add(geometry);
+ mapper.map(geometry, "fill-opacity:0.3;opacity:0.6;fill:rgb(51,51,153);stroke:rgb(0,0,255);stroke-width:2");
+#endif
+
+ test_remove_spikes(id, geometry, expected_area, expected_perimeter);
+ test_remove_spikes(id, v, expected_area, expected_perimeter);
+
+#if defined(TEST_WITH_SVG)
+ mapper.map(geometry, "opacity:0.6;fill:none;stroke:rgb(255,0,0);stroke-width:3");
+#endif
+}
+
+template <typename P, bool Clockwise, bool Closed>
+void test_polygons()
+{
+ typedef bg::model::ring<P, Clockwise, Closed> ring;
+ typedef bg::model::polygon<P, Clockwise, Closed> polygon;
+
+ test_geometry<ring>("box",
+ "POLYGON((0 0,0 4,4 4,4 0,0 0))",
+ 16, 16);
+ test_geometry<polygon>("box",
+ "POLYGON((0 0,0 4,4 4,4 0,0 0))",
+ 16, 16);
+ test_geometry<polygon>("box2",
+ "POLYGON((0 0,0 2,0 4,2 4,4 4,4 2,4 0,2 0,0 0))",
+ 16, 16);
+ test_geometry<polygon>("spike_right",
+ "POLYGON((0 0,0 4,4 4,4 2,6 2,4 2,4 0,0 0))",
+ 16, 16);
+ test_geometry<polygon>("spike_at_corner",
+ "POLYGON((0 0,0 4,6 4,4 4,4 0,0 0))",
+ 16, 16);
+ test_geometry<polygon>("spike_at_first",
+ "POLYGON((0 0,-1 3,0 0,0 4,4 4,4 0,0 0))",
+ 16, 16);
+ test_geometry<polygon>("spike_at_last",
+ "POLYGON((0 0,0 4,4 4,4 0,6 0,0 0))",
+ 16, 16);
+ test_geometry<polygon>("spike_at_closing",
+ "POLYGON((-1 0,0 0,0 4,4 4,4 0,0 0,-1 0))",
+ 16, 16);
+ test_geometry<polygon>("double_spike",
+ "POLYGON((0 0,0 4,4 4,4 2,6 2,5 2,4 2,4 0,0 0))",
+ 16, 16);
+ test_geometry<polygon>("three_double_spike",
+ "POLYGON((0 0,0 4,4 4,4 2,6 2,5 2,4.5 2,4 2,4 0,0 0))",
+ 16, 16);
+ test_geometry<polygon>("spike_with_corner",
+ "POLYGON((0 0,0 4,4 4,4 2,6 2,6 4,6 2,4 2,4 0,0 0))",
+ 16, 16);
+
+ test_geometry<polygon>("triangle0",
+ "POLYGON((0 0,0 4,2 0,4 0,0 0))",
+ 4, 6 + sqrt(20.0));
+ test_geometry<polygon>("triangle1",
+ "POLYGON((0 4,2 0,4 0,0 0,0 4))",
+ 4, 6 + sqrt(20.0));
+ test_geometry<polygon>("triangle2",
+ "POLYGON((2 0,4 0,0 0,0 4,2 0))",
+ 4, 6 + sqrt(20.0));
+ test_geometry<polygon>("triangle3",
+ "POLYGON((4 0,0 0,0 4,2 0,4 0))",
+ 4, 6 + sqrt(20.0));
+
+ test_geometry<polygon>("only_spike1",
+ "POLYGON((0 0,2 2,0 0))",
+ 0, 0);
+ test_geometry<polygon>("only_spike2",
+ "POLYGON((0 0,2 2,4 4,2 2,0 0))",
+ 0, 0);
+ test_geometry<polygon>("only_spike3",
+ "POLYGON((0 0,2 2,4 4,0 0))",
+ 0, 0);
+ test_geometry<polygon>("only_spike4",
+ "POLYGON((0 0,4 4,2 2,0 0))",
+ 0, 0);
+}
+
+
+template <typename P, bool Clockwise, bool Closed>
+void test_multi_polygons()
+{
+ typedef bg::model::polygon<P, Clockwise, Closed> polygon;
+ typedef bg::model::multi_polygon<polygon> multi_polygon;
+
+ test_geometry<multi_polygon>("multi_spike_with_corner",
+ "MULTIPOLYGON(((0 0,0 4,4 4,4 2,6 2,6 4,6 2,4 2,4 0,0 0)))",
+ 16, 16);
+}
+
+template <typename P, bool Clockwise, bool Closed>
+void test_all()
+{
+ test_polygons<P, Clockwise, Closed>();
+ test_multi_polygons<P, Clockwise, Closed>();
+}
+
+int test_main(int, char* [])
+{
+ test_all<bg::model::d2::point_xy<double>, true, true>();
+ test_all<bg::model::d2::point_xy<double>, true, false>();
+ return 0;
+}
+
diff --git a/libs/geometry/test/algorithms/reverse.vcproj b/libs/geometry/test/algorithms/reverse.vcproj
deleted file mode 100644
index 9f438a8c21..0000000000
--- a/libs/geometry/test/algorithms/reverse.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="reverse"
- ProjectGUID="{14B5DFC5-D511-4D8C-A231-EE90A05687E1}"
- RootNamespace="reverse"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\reverse"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\reverse"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\reverse.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/set_ops_ll.cpp b/libs/geometry/test/algorithms/set_ops_ll.cpp
new file mode 100644
index 0000000000..c3311a054d
--- /dev/null
+++ b/libs/geometry/test/algorithms/set_ops_ll.cpp
@@ -0,0 +1,17 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_set_ops_linear_linear
+#endif
+
+#include "intersection_linear_linear.cpp"
+#include "union_linear_linear.cpp"
+#include "difference_linear_linear.cpp"
+#include "sym_difference_linear_linear.cpp"
diff --git a/libs/geometry/test/algorithms/set_ops_pp.cpp b/libs/geometry/test/algorithms/set_ops_pp.cpp
new file mode 100644
index 0000000000..725737e1bf
--- /dev/null
+++ b/libs/geometry/test/algorithms/set_ops_pp.cpp
@@ -0,0 +1,16 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_set_ops_pointlike_pointlike
+#endif
+
+#include "intersection_pl_pl.cpp"
+#include "union_pl_pl.cpp"
+#include "difference_pl_pl.cpp"
diff --git a/libs/geometry/test/algorithms/simplify.cpp b/libs/geometry/test/algorithms/simplify.cpp
index 66c8599c4e..0655e26468 100644
--- a/libs/geometry/test/algorithms/simplify.cpp
+++ b/libs/geometry/test/algorithms/simplify.cpp
@@ -22,6 +22,48 @@
#include <test_geometries/wrapped_boost_array.hpp>
#include <test_common/test_point.hpp>
+// #define TEST_PULL89
+#ifdef TEST_PULL89
+#include <boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp>
+#endif
+
+
+#ifdef TEST_PULL89
+template <typename Geometry, typename T>
+void test_with_ax(std::string const& wkt,
+ std::string const& expected,
+ T const& adt,
+ T const& xdt)
+{
+ typedef typename bg::point_type<Geometry>::type point_type;
+ typedef bg::strategy::distance::detail::projected_point_ax<> ax_type;
+ typedef typename bg::strategy::distance::services::return_type
+ <
+ bg::strategy::distance::detail::projected_point_ax<>,
+ point_type,
+ point_type
+ >::type return_type;
+
+ typedef bg::strategy::distance::detail::projected_point_ax_less
+ <
+ return_type
+ > comparator_type;
+
+ typedef bg::strategy::simplify::detail::douglas_peucker
+ <
+ point_type,
+ bg::strategy::distance::detail::projected_point_ax<>,
+ comparator_type
+ > dp_ax;
+
+ return_type max_distance(adt, xdt);
+ comparator_type comparator(max_distance);
+ dp_ax strategy(comparator);
+
+ test_geometry<Geometry>(wkt, expected, max_distance, strategy);
+}
+#endif
+
template <typename P>
void test_all()
@@ -38,6 +80,30 @@ void test_all()
"LINESTRING(0 0,5 5,7 5,10 10)",
"LINESTRING(0 0,5 5,7 5,10 10)", 1.0);
+ // Lightning-form which fails for Douglas-Peucker
+ test_geometry<bg::model::linestring<P> >(
+ "LINESTRING(0 0,120 6,80 10,200 0)",
+ "LINESTRING(0 0,120 6,80 10,200 0)", 7);
+ // Same which reordered coordinates
+ test_geometry<bg::model::linestring<P> >(
+ "LINESTRING(0 0,80 10,120 6,200 0)",
+ "LINESTRING(0 0,80 10,200 0)", 7);
+
+ // Mail 2013-10-07, real-life test, piece of River Leine
+ // PostGIS returns exactly the same result
+ test_geometry<bg::model::linestring<P> >(
+ "LINESTRING(4293586 3290439,4293568 3290340,4293566 3290332,4293570 3290244,4293576 3290192"
+ ",4293785 3289660,4293832 3289597,4293879 3289564,4293937 3289545,4294130 3289558"
+ ",4294204 3289553,4294240 3289539,4294301 3289479,4294317 3289420,4294311 3289353"
+ ",4294276 3289302,4293870 3289045,4293795 3288978,4293713 3288879,4293669 3288767"
+ ",4293654 3288652,4293657 3288563,4293690 3288452,4293761 3288360,4293914 3288215"
+ ",4293953 3288142,4293960 3288044,4293951 3287961,4293913 3287875,4293708 3287628"
+ ",4293658 3287542,4293633 3287459,4293630 3287383,4293651 3287323,4293697 3287271"
+ ",4293880 3287128,4293930 3287045,4293938 3286977,4293931 3286901,4293785 3286525"
+ ",4293775 3286426,4293786 3286358,4293821 3286294,4294072 3286076,4294134 3285986)",
+ "LINESTRING(4293586 3290439,4293785 3289660,4294317 3289420,4293654 3288652,4293960 3288044"
+ ",4293633 3287459,4293786 3286358,4294134 3285986)", 250);
+
/* TODO fix this
test_geometry<test::wrapped_boost_array<P, 10> >(
"LINESTRING(0 0,5 5,7 5,10 10)",
@@ -62,20 +128,66 @@ Above can be checked in PostGIS by:
select astext(ST_Simplify(geomfromtext('LINESTRING(0 0, 5 5, 10 10)'),1.0)) as simplified
union all select astext(ST_Simplify(geomfromtext('LINESTRING(0 0, 5 5, 6 5, 10 10)'),1.0))
-union all select astext(ST_Simplify(geomfromtext('LINESTRING(0 0, 5 5, 7 5, 10 10)'),1.0))
-union all select astext(ST_Simplify(geomfromtext('POLYGON((4 0, 8 2, 8 7, 4 9, 0 7, 0 2, 2 1, 4 0))'),1.0))
-union all select astext(ST_Simplify(geomfromtext('POLYGON((4 0, 8 2, 8 7, 4 9, 0 7, 0 2, 2 1, 4 0),(7 3, 7 6, 1 6, 1 3, 4 3, 7 3))'),1.0))
+etc
*/
- // Just check compilation
+ {
+ // Test with explicit strategy
+
+ typedef bg::strategy::simplify::douglas_peucker
+ <
+ P,
+ bg::strategy::distance::projected_point<double>
+ > dp;
+
+ test_geometry<bg::model::linestring<P> >(
+ "LINESTRING(0 0,5 5,10 10)",
+ "LINESTRING(0 0,10 10)", 1.0, dp());
+ }
+
+
+ // POINT: check compilation
test_geometry<P>(
"POINT(0 0)",
"POINT(0 0)", 1.0);
+ // RING: check compilation and behaviour
test_geometry<bg::model::ring<P> >(
"POLYGON((4 0,8 2,8 7,4 9,0 7,0 2,2 1,4 0))",
"POLYGON((4 0,8 2,8 7,4 9,0 7,0 2,4 0))", 1.0);
+
+
+#ifdef TEST_PULL89
+ test_with_ax<bg::model::linestring<P> >(
+ "LINESTRING(0 0,120 6,80 10,200 0)",
+ "LINESTRING(0 0,80 10,200 0)", 10, 7);
+#endif
+}
+
+template <typename P>
+void test_zigzag()
+{
+ static const std::string zigzag = "LINESTRING(0 10,1 7,1 9,2 6,2 7,3 4,3 5,5 3,4 5,6 2,6 3,9 1,7 3,10 1,9 2,12 1,10 2,13 1,11 2,14 1,12 2,16 1,14 2,17 3,15 3,18 4,16 4,19 5,17 5,20 6,18 6,21 8,19 7,21 9,19 8,21 10,19 9,21 11,19 10,20 13,19 11)";
+
+ static const std::string expected100 = "LINESTRING(0 10,3 4,5 3,4 5,6 2,9 1,7 3,10 1,9 2,16 1,14 2,17 3,15 3,18 4,16 4,19 5,17 5,21 8,19 7,21 9,19 8,21 10,19 9,21 11,19 10,20 13,19 11)";
+ static const std::string expected150 = "LINESTRING(0 10,6 2,16 1,14 2,21 8,19 7,21 9,19 8,21 10,19 9,20 13,19 11)";
+ static const std::string expected200 = "LINESTRING(0 10,6 2,16 1,14 2,21 8,19 7,20 13,19 11)";
+ static const std::string expected225 = "LINESTRING(0 10,6 2,16 1,21 8,19 11)";
+ test_geometry<bg::model::linestring<P> >(zigzag, expected100, 1.0001);
+ test_geometry<bg::model::linestring<P> >(zigzag, expected150, 1.5001);
+ test_geometry<bg::model::linestring<P> >(zigzag, expected200, 2.0001);
+ test_geometry<bg::model::linestring<P> >(zigzag, expected225, 2.25); // should be larger than sqrt(5)=2.236
+
+#ifdef TEST_PULL89
+ // This should work (results might vary but should have LESS points then expected above
+ // Small xtd, larger adt,
+ test_with_ax<bg::model::linestring<P> >(zigzag, expected100, 1.0001, 1.0001);
+ test_with_ax<bg::model::linestring<P> >(zigzag, expected150, 1.5001, 1.0001);
+ test_with_ax<bg::model::linestring<P> >(zigzag, expected200, 2.0001, 1.0001);
+ test_with_ax<bg::model::linestring<P> >(zigzag, expected225, 2.25, 1.0001);
+#endif
+
}
@@ -98,10 +210,14 @@ int test_main(int, char* [])
test_spherical<bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> > >();
+ test_zigzag<bg::model::d2::point_xy<double> >();
+
#if defined(HAVE_TTMATH)
test_all<bg::model::d2::point_xy<ttmath_big> >();
test_spherical<bg::model::point<ttmath_big, 2, bg::cs::spherical_equatorial<bg::degree> > >();
#endif
+
+
return 0;
}
diff --git a/libs/geometry/test/algorithms/simplify.vcproj b/libs/geometry/test/algorithms/simplify.vcproj
deleted file mode 100644
index 3193c8abf6..0000000000
--- a/libs/geometry/test/algorithms/simplify.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="simplify"
- ProjectGUID="{B1760CB8-553B-42AB-B54E-3D0320FF252F}"
- RootNamespace="simplify"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\simplify"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\simplify"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\simplify.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/sym_difference_linear_linear.cpp b/libs/geometry/test/algorithms/sym_difference_linear_linear.cpp
new file mode 100644
index 0000000000..fa14fe3072
--- /dev/null
+++ b/libs/geometry/test/algorithms/sym_difference_linear_linear.cpp
@@ -0,0 +1,944 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_sym_difference_linear_linear
+#endif
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+#define BOOST_GEOMETRY_DEBUG_TURNS
+#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_sym_difference_linear_linear.hpp"
+
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/algorithms/sym_difference.hpp>
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::segment<point_type> segment_type;
+typedef bg::model::linestring<point_type> linestring_type;
+typedef bg::model::multi_linestring<linestring_type> multi_linestring_type;
+
+
+
+//===========================================================================
+//===========================================================================
+//===========================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_linestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** LINESTRING / LINESTRING SYMMETRIC DIFFERENCE ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_sym_difference_of_geometries<L, L, ML> tester;
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 1,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(0 2,1 1,2 1,3 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1),(2 1,3 2),\
+ (0 2,1 1),(2 1,3 0))"),
+ "llsdf00");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,5 0)"),
+ from_wkt<L>("LINESTRING(3 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,3 0),(4 0,5 0))"),
+ "llsdf01");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,6 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,3 0),(4 0,6 0))"),
+ "llsdf01-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,6 0)"),
+ from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((4 0,6 0))"),
+ "llsdf01-2");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,4 0),(5 0,20 0),\
+ (0 0,1 1,2 0,3 1,4 0),(5 0,6 1,7 -1,8 0))"),
+ "llsdf01-3");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-20 0,20 0)"),
+ from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
+ from_wkt<ML>("MULTILINESTRING((-20 0,4 0),(5 0,20 0),\
+ (0 0,1 1,2 0,3 1,4 0),(5 0,6 1,7 -1,8 0))"),
+ "llsdf01-4");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<L>("LINESTRING(2 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0))"),
+ "llsdf01-5");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,5 0))"),
+ "llsdf01-6");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(2 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(2 0,5 0))"),
+ "llsdf01-7");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,3 0),(4 0,5 0))"),
+ "llsdf01-8");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,3 0),(4 0,5 0))"),
+ "llsdf01-9");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,6 0)"),
+ from_wkt<L>("LINESTRING(2 0,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,6 0))"),
+ "llsdf01-10");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0)"),
+ from_wkt<L>("LINESTRING(-1 6,0 5,15 5)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,5 5),(10 5,15 0),\
+ (-1 6,0 5,5 5),(10 5,15 5))"),
+ "llsdf02");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
+ "llsdf03");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0,20 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 5,10 5,15 0),\
+ (-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
+ "llsdf04");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,25 1)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (20 0,25 1),(-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
+ "llsdf05");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (-1 0,0 0),(1 0,15 0))"),
+ "llsdf05-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (30 0,31 0),(-1 0,0 0),(1 0,15 0))"),
+ "llsdf06");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,25 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (30 0,31 0),(-1 0,0 0),(1 0,15 0))"),
+ "llsdf07");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (30 0,31 0),(-1 0,0 0),(1 0,15 0))"),
+ "llsdf08");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (30 0,31 1),(-1 0,0 0),(1 0,15 0))"),
+ "llsdf09");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(1 0,5 5,10 5,15 0),\
+ (30 0,31 1),(-1 -1,0 0),(1 0,2 1,3 0,15 0))"),
+ "llsdf10");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,\
+ 30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(2 0,3 0),\
+ (4 0,5 5,10 5,15 0),(30 0,31 1),(-1 -1,0 0),\
+ (2 0,2.5 1,3 0),(4 0,15 0))"),
+ "llsdf11");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(2 0,3 0),\
+ (4 0,5 5,10 5,15 0),(30 0,31 0),(-1 -1,0 0),\
+ (2 0,2.5 1,3 0),(4 0,15 0))"),
+ "llsdf11-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "llsdf12");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<L>("LINESTRING(3 1,2 0,0 0)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "llsdf12-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
+ from_wkt<L>("LINESTRING(1 0,2 1,3 5,4 0,5 10)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(4 0,5 10))"),
+ "llsdf13");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 0,2.5 0,3 1)"),
+ from_wkt<L>("LINESTRING(0 0,2 0,2.5 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING()"),
+ "llsdf14");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
+ from_wkt<L>("LINESTRING(1 0,2 1,3 5)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(3 5,4 0))"),
+ "llsdf15");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(0.5 0,1 0,3 2,4 5)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,0.5 0),(3 2,4 5))"),
+ "llsdf16");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(4 5,3 2,1 0,0.5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,0.5 0),(4 5,3 2))"),
+ "llsdf16-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1,30 1)"),
+ from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(25 1,30 1),\
+ (1 1,2 0,3 1,20 1))"),
+ "llsdf17");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1,21 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1,21 0,30 0),\
+ (1 1,2 0,3 1,20 1,25 0))"),
+ "llsdf18");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (5 0,20 1,4 1,4 0,5 1))"),
+ "llsdf19");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,4 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (5 1,4 0,4 1,20 1,5 0))"),
+ "llsdf19-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (5 0,20 1,4 1,4 0))"),
+ "llsdf19a");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(4 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (4 0,4 1,20 1,5 0))"),
+ "llsdf19a-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (5 0,20 1,4 1,4 0))"),
+ "llsdf19b");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,6 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (5 0,20 1,4 1,4 0),(5 0,6 1))"),
+ "llsdf19c");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (5 0,20 1,4 1,4 0))"),
+ "llsdf19d");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (5 0,20 1,4 1,4 0),(3 0,3 1))"),
+ "llsdf19e");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,5 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (5 0,20 1,4 1,4 0),(5 0,5 1))"),
+ "llsdf19f");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,5 0,4 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (5 1,5 0),(4 0,4 1,20 1,5 0))"),
+ "llsdf19f-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,5 0,5 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (5 0,20 1,4 1,5 0,5 1))"),
+ "llsdf19g");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,5 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(5 0,30 0),\
+ (5 1,5 0,4 1,20 1,5 0))"),
+ "llsdf19g-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
+ from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,35 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(25 0,30 0,30 30,10 30),\
+ (10 0,10 -10,15 0,20 0),(25 0,35 0),\
+ (5 5,10 0),(10 30,20 0),(25 0,25 25,50 0,40 0))"),
+ "llsdf20");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
+ from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,15 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,15 0),(30 0,30 30,10 30),\
+ (10 0,10 -10,15 0),(5 5,10 0),(10 30,20 0),\
+ (25 0,25 25,50 0,40 0))"),
+ "llsdf20a");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<L>("LINESTRING(2 2,5 -1,15 2,18 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,18 0),(20 0,30 0),\
+ (2 2,5 -1,15 2,18 0))"),
+ "llsdf21"
+ );
+}
+
+
+
+BOOST_AUTO_TEST_CASE( test_sym_difference_linestring_multilinestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** LINESTRING / MULTILINESTRING SYMMETRIC DIFFERENCE ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_sym_difference_of_geometries<L, ML, ML> tester;
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),\
+ (1 1,2 2,4 3),(1 1,2 2,5 3))"),
+ "lmlsdf01"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
+ (1 1,2 0),(1 1,3 0))"),
+ "lmlsdf02"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,10 0,20 1),\
+ (1 1,2 0),(1 1,3 0))"),
+ "lmlsdf03"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
+ (1 1,2 0))"),
+ "lmlsdf04"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(-1 -1,1 0),(101 0,200 -1))"),
+ "lmlsdf07"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(-1 -1,0 0),\
+ (19 -1,20 0),(101 0,200 -1))"),
+ "lmlsdf07a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0),(19 -1,20 0),\
+ (101 0,200 -1))"),
+ "lmlsdf07b"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(0 1,1 1,2 0),\
+ (-1 -1,1 0),(101 0,200 -1))"),
+ "lmlsdf08"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 0.5,3 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0),\
+ (0 1,1 1,2 0.5),(-1 -1,1 0,3 0),(101 0,200 -1))"),
+ "lmlsdf09"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,1.5 0,2 0.5,3 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(1.5 0,2 0.5,3 0),\
+ (0 1,1 1,1 0,2 0.5),(-1 -1,1 0),(1.5 0,3 0),\
+ (101 0,200 -1))"),
+ "lmlsdf10"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
+ (3 1,4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1),(1 1,2 0),(18 0,19 1),\
+ (2 1,3 0),(17 0,18 1),(3 1,4 0),(16 0,17 1))"),
+ "lmlsdf12"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\
+ (2 0,18 0,19 1),(3 0,17 0,18 1),\
+ (4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (19 0,20 1),(18 0,19 1),(17 0,18 1),(16 0,17 1))"),
+ "lmlsdf13"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(2 0,18 0),(3 0,17 0),\
+ (4 0,16 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "lmlsdf13a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1,19 1,18 0),(2 0,1 1,2 1,3 0),\
+ (17 0,18 1,17 1,16 0),(4 0,3 1))"),
+ "lmlsdf14"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,4 2,6 0))"),
+ "lmlsdf15"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1),(6 0,4 2,2 2))"),
+ "lmlsdf15a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,5 0,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,4 2,5 0))"),
+ "lmlsdf16"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,5 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1),(5 0,4 2,2 2))"),
+ "lmlsdf16a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,4 0,5 2,20 2,25 0))"),
+ "lmlsdf17"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0,26 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,4 0,5 2,20 2,25 0,26 2))"),
+ "lmlsdf17a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,18 0))"),
+ "lmlsdf18"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,18 0))"),
+ "lmlsdf18a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(20 0,30 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,18 0))"),
+ "lmlsdf18b"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,25 0,26 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,25 0),(26 0,30 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,25 0))"),
+ "lmlsdf18c"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,25 0,21 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,21 0),(25 0,30 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,25 0))"),
+ "lmlsdf18d"
+ );
+}
+
+
+
+
+BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_linestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / LINESTRING SYMMETRIC DIFFERENCE ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_sym_difference_of_geometries<ML, L, ML> tester;
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<L>("LINESTRING(1 1,2 2,4 3)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (1 1,2 2,4 3))"),
+ "mllsdf01"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<L>("LINESTRING(1 1,2 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
+ (1 0,2 0),(4 0,7 0),(1 1,2 0))"),
+ "mllsdf02"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<L>("LINESTRING(-1 -1,1 0,101 0,200 -1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(-1 -1,1 0),(101 0,200 -1))"),
+ "mllsdf03"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<L>("LINESTRING(0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1,19 1,18 0),(2 0,1 1,2 1,3 0),\
+ (17 0,18 1,17 1,16 0),(4 0,3 1))"),
+ "mllsdf04"
+ );
+}
+
+
+
+
+
+
+BOOST_AUTO_TEST_CASE( test_sym_difference_multilinestring_multilinestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / MULTILINESTRING SYMMETRIC DIFFERENCE ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef multi_linestring_type ML;
+
+ typedef test_sym_difference_of_geometries<ML, ML, ML> tester;
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (1 1,2 2,4 3),(1 1,2 2,5 3))"),
+ "mlmlsdf01"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
+ (1 0,2 0),(4 0,7 0),(1 1,2 0),(1 1,3 0))"),
+ "mlmlsdf02"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(5 0,10 0,20 1),\
+ (1 0,2 0),(5 0,7 0),(1 1,2 0),(1 1,3 0))"),
+ "mlmlsdf03"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
+ (1 0,2 0),(4 0,7 0),(1 1,2 0))"),
+ "mlmlsdf04"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (10 10,20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (10 20,15 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,10 0,20 1),\
+ (1 0,2 0),(4 0,7 0),(10 10,15 10),(20 10,30 20),\
+ (1 1,2 0),(10 20,15 10),(20 10,25 10,30 15))"),
+ "mlmlsdf05"
+ );
+
+#ifdef GEOMETRY_TEST_INCLUDE_FAILING_TESTS
+ // the following produces an assertion failure in line 483 of
+ // get_turn_info_ll
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (10 10,20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (-1 -1,0 0,9 0,11 10,12 10,13 0.3,14 0.4,15 0.5),\
+ (10 20,15 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((9 0,10 0,13 0.3),(15 0.5,20 1),\
+ (10 10,11 10),(12 10,15 10),(20 10,30 20),\
+ (1 1,2 0),(-1 -1,0 0),(9 0,11 10),(12 10,13 0.3),\
+ (10 20,15 10),(20 10,25 10,30 15))"),
+ "mlmlsdf06"
+ );
+#endif
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
+ (10 10,20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
+ (10 20,15 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((9 0,10 0,13 3),(15 5,20 10),\
+ (10 10,11 10),(12 10,15 10),(20 10,30 20),\
+ (1 1,2 0),(-1 -1,0 0),(9 0,11 10),(12 10,13 3),\
+ (10 20,15 10),(20 10,25 10,30 15))"),
+ "mlmlsdf06"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(-1 -1,1 0),\
+ (101 0,200 -1))"),
+ "mlmlsdf07"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((-1 1,0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0),(-1 -1,0 0),\
+ (19 -1,20 0),(101 0,200 -1))"),
+ "mlmlsdf07a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0),(19 -1,20 0),\
+ (101 0,200 -1))"),
+ "mlmlsdf07b"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(0 1,1 1,2 0),\
+ (-1 -1,1 0),(101 0,200 -1))"),
+ "mlmlsdf08"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0),(0 1,1 1,2 0.5),\
+ (-1 -1,1 0,3 0),(101 0,200 -1))"),
+ "mlmlsdf09"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(1.5 0,2 0.5,3 0),\
+ (0 1,1 1,1 0,2 0.5),(-1 -1,1 0),(1.5 0,3 0),\
+ (101 0,200 -1))"),
+ "mlmlsdf10"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 1,100 1,101 0),\
+ (0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1,3 0,4 0,5 1,6 1,\
+ 7 0,8 0,9 1,10 1,11 0,12 0,13 1,14 1,15 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1),(2 1,5 1),(6 1,9 1),\
+ (10 1,13 1),(14 1,100 1,101 0),(0 0,1 0),\
+ (1 0,1 1),(2 1,3 0),(4 0,5 1),(6 1,7 0),\
+ (8 0,9 1),(10 1,11 0),(12 0,13 1),(14 1,15 0),\
+ (-1 -1,1 0),(101 0,200 -1))"),
+ "mlmlsdf11"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
+ (3 1,4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1),(1 1,2 0),(18 0,19 1),\
+ (2 1,3 0),(17 0,18 1),(3 1,4 0),(16 0,17 1))"),
+ "mlmlsdf12"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\
+ (2 0,18 0,19 1),(3 0,17 0,18 1),\
+ (4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (19 0,20 1),(18 0,19 1),(17 0,18 1),(16 0,17 1))"),
+ "mlmlsdf13"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0),(2 0,18 0),(3 0,17 0),\
+ (4 0,16 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0))"),
+ "mlmlsdf13a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1,19 1,18 0),(2 0,1 1,2 1,3 0),\
+ (17 0,18 1,17 1,16 0),(4 0,3 1))"),
+ "mlmlsdf14"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,4 2,6 0))"),
+ "mlmlsdf15"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1),(6 0,4 2,2 2))"),
+ "mlmlsdf15a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,5 0,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,4 2,5 0))"),
+ "mlmlsdf16"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,5 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,20 0),\
+ (0 1,1 0),(19 0,20 1),(5 0,4 2,2 2))"),
+ "mlmlsdf16a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,4 0,5 2,20 2,25 0))"),
+ "mlmlsdf17"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0,26 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,4 0,5 2,20 2,25 0,26 2))"),
+ "mlmlsdf17a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,18 0))"),
+ "mlmlsdf18"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0),(19 0,30 0),\
+ (0 1,1 0),(19 0,20 1),(2 2,5 -1,15 2,18 0))"),
+ "mlmlsdf18a"
+ );
+}
diff --git a/libs/geometry/test/algorithms/test_area.hpp b/libs/geometry/test/algorithms/test_area.hpp
index 394fd1099d..51bbfddf8f 100644
--- a/libs/geometry/test/algorithms/test_area.hpp
+++ b/libs/geometry/test/algorithms/test_area.hpp
@@ -26,7 +26,7 @@ void test_area(Geometry const& geometry,
{
typename bg::default_area_result<Geometry>::type area = bg::area(geometry);
-#ifdef GEOMETRY_TEST_DEBUG
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
std::ostringstream out;
out << typeid(typename bg::coordinate_type<Geometry>::type).name()
<< " "
diff --git a/libs/geometry/test/algorithms/test_centroid.hpp b/libs/geometry/test/algorithms/test_centroid.hpp
index 2ab584ef63..14e0ceff18 100644
--- a/libs/geometry/test/algorithms/test_centroid.hpp
+++ b/libs/geometry/test/algorithms/test_centroid.hpp
@@ -11,6 +11,8 @@
// Test-functionality, shared between single and multi tests
+#include <boost/variant/variant.hpp>
+
#include <geometry_test_common.hpp>
#include <boost/geometry/strategies/strategies.hpp>
@@ -63,9 +65,13 @@ void test_centroid(std::string const& wkt, T const& d1, T const& d2, T const& d3
bg::read_wkt(wkt, geometry);
typedef typename bg::point_type<Geometry>::type point_type;
point_type c1;
+
bg::centroid(geometry, c1);
check_result<bg::dimension<Geometry>::type::value>::apply(c1, boost::make_tuple(d1, d2, d3, d4, d5));
+ boost::variant<Geometry> v(geometry);
+ bg::centroid(v, c1);
+
#ifdef REPORT_RESULTS
std::cout << "normal: " << std::setprecision(20) << bg::get<0>(c1) << " " << bg::get<1>(c1) << std::endl;
diff --git a/libs/geometry/test/algorithms/test_convert.hpp b/libs/geometry/test/algorithms/test_convert.hpp
index fed2ef85fa..fe91907da7 100644
--- a/libs/geometry/test/algorithms/test_convert.hpp
+++ b/libs/geometry/test/algorithms/test_convert.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -21,6 +21,7 @@
#include <boost/geometry/geometries/adapted/c_array.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
+#include <boost/variant/variant.hpp>
#include <geometry_test_common.hpp>
@@ -31,12 +32,9 @@ BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
-template <typename Geometry1, typename Geometry2>
-void test_mixed(std::string const& wkt, std::string const& expected)
+template <typename Geometry2, typename Geometry1>
+void check_mixed(Geometry1 const& geometry1, std::string const& expected, int expected_point_count)
{
- Geometry1 geometry1;
- bg::read_wkt(wkt, geometry1);
-
Geometry2 geometry2;
bg::convert(geometry1, geometry2);
@@ -44,21 +42,36 @@ void test_mixed(std::string const& wkt, std::string const& expected)
out << bg::wkt(geometry2);
BOOST_CHECK_EQUAL(out.str(), expected);
- // std::cout << bg::area(geometry1) << " " << bg::area(geometry2) << std::endl;
+ std::size_t n = bg::num_points(geometry2);
+ BOOST_CHECK_MESSAGE(expected_point_count < 0 || int(n) == expected_point_count,
+ "convert: "
+ << " #points expected: " << expected_point_count
+ << " detected: " << n
+ << " expected wkt: " << expected
+ );
+}
+
+template <typename Geometry1, typename Geometry2>
+void test_mixed(std::string const& wkt, std::string const& expected, int expected_point_count)
+{
+ Geometry1 geometry1;
+ bg::read_wkt(wkt, geometry1);
+ check_mixed<Geometry2>(geometry1, expected, expected_point_count);
+ check_mixed<Geometry2>(boost::variant<Geometry1>(geometry1), expected, expected_point_count);
}
template <typename Geometry1, typename Geometry2>
void test_mixed_identical_result(std::string const& wkt)
{
- test_mixed<Geometry1, Geometry2>(wkt, wkt);
- test_mixed<Geometry2, Geometry1>(wkt, wkt);
+ test_mixed<Geometry1, Geometry2>(wkt, wkt, -1);
+ test_mixed<Geometry2, Geometry1>(wkt, wkt, -1);
}
template <typename Geometry1, typename Geometry2>
void test_mixed_reversible_result(std::string const& wkt1, std::string const& wkt2)
{
- test_mixed<Geometry1, Geometry2>(wkt1, wkt2);
- test_mixed<Geometry2, Geometry1>(wkt2, wkt1);
+ test_mixed<Geometry1, Geometry2>(wkt1, wkt2, -1);
+ test_mixed<Geometry2, Geometry1>(wkt2, wkt1, -1);
}
#endif
diff --git a/libs/geometry/test/algorithms/test_convex_hull.hpp b/libs/geometry/test/algorithms/test_convex_hull.hpp
index a6a108a796..d299394c58 100644
--- a/libs/geometry/test/algorithms/test_convex_hull.hpp
+++ b/libs/geometry/test/algorithms/test_convex_hull.hpp
@@ -1,7 +1,13 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
// 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)
@@ -9,6 +15,8 @@
#ifndef BOOST_GEOMETRY_TEST_CONVEX_HULL_HPP
#define BOOST_GEOMETRY_TEST_CONVEX_HULL_HPP
+#include <boost/variant/variant.hpp>
+
#include <geometry_test_common.hpp>
#include <boost/geometry/algorithms/convex_hull.hpp>
@@ -24,11 +32,10 @@
template <typename Geometry, typename Hull>
-void test_convex_hull(Geometry const& geometry, Hull const& hull,
- std::size_t size_original, std::size_t size_hull,
+void check_convex_hull(Geometry const& geometry, Hull const& hull,
+ std::size_t /*size_original*/, std::size_t size_hull,
double expected_area, bool reverse)
{
-
std::size_t n = bg::num_points(hull);
BOOST_CHECK_MESSAGE(n == size_hull,
@@ -49,64 +56,110 @@ void test_convex_hull(Geometry const& geometry, Hull const& hull,
ah = -ah;
}
-//std::cout << "Area: " << bg::area(geometry) << std::endl;
-//std::cout << bg::wkt(hull) << std::endl;
-
BOOST_CHECK_CLOSE(ah, expected_area, 0.001);
}
-template <typename Geometry, bool Clockwise>
-void test_geometry_order(std::string const& wkt,
- std::size_t size_original, std::size_t size_hull,
- double expected_area)
+namespace resolve_variant {
+
+struct closure_visitor : public boost::static_visitor<bg::closure_selector>
{
- Geometry geometry;
- bg::read_wkt(wkt, geometry);
+ template <typename Geometry>
+ bg::closure_selector operator()(Geometry const&) const
+ {
+ return bg::closure<Geometry>::value;
+ }
+};
- bg::model::polygon
- <
- typename bg::point_type<Geometry>::type,
- Clockwise
- > hull;
+template <typename Geometry>
+inline bg::closure_selector get_closure(Geometry const&)
+{
+ return bg::closure<Geometry>::value;
+}
+
+template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
+inline bg::closure_selector get_closure(boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> const& v)
+{
+ return boost::apply_visitor(closure_visitor(), v);
+}
+
+} // namespace resolve_variant
+
+template <typename Hull, typename Strategy, typename Geometry>
+void test_convex_hull(Geometry const& geometry,
+ std::size_t size_original, std::size_t size_hull_closed,
+ double expected_area,
+ bool reverse)
+{
+ bool const is_original_closed = resolve_variant::get_closure(geometry) != bg::open;
+ static bool const is_hull_closed = bg::closure<Hull>::value != bg::open;
+
+ // convex_hull_insert() uses the original Geometry as a source of the info about the order and closure
+ std::size_t const size_hull_from_orig = is_original_closed ? size_hull_closed : size_hull_closed - 1;
+ std::size_t const size_hull = is_hull_closed ? size_hull_closed : size_hull_closed - 1;
+
+ Hull hull;
// Test version with output iterator
bg::detail::convex_hull::convex_hull_insert(geometry, std::back_inserter(hull.outer()));
- test_convex_hull(geometry, hull,
- size_original, size_hull, expected_area, ! Clockwise);
+ check_convex_hull(geometry, hull, size_original, size_hull_from_orig, expected_area, reverse);
// Test version with ring as output
bg::clear(hull);
bg::convex_hull(geometry, hull.outer());
- test_convex_hull(geometry, hull, size_original, size_hull, expected_area, false);
+ check_convex_hull(geometry, hull, size_original, size_hull, expected_area, false);
// Test version with polygon as output
bg::clear(hull);
bg::convex_hull(geometry, hull);
- test_convex_hull(geometry, hull, size_original, size_hull, expected_area, false);
+ check_convex_hull(geometry, hull, size_original, size_hull, expected_area, false);
// Test version with strategy
bg::clear(hull);
- bg::strategy::convex_hull::graham_andrew
+ bg::convex_hull(geometry, hull.outer(), Strategy());
+ check_convex_hull(geometry, hull, size_original, size_hull, expected_area, false);
+
+ // Test version with output iterator and strategy
+ bg::clear(hull);
+ bg::detail::convex_hull::convex_hull_insert(geometry, std::back_inserter(hull.outer()), Strategy());
+ check_convex_hull(geometry, hull, size_original, size_hull_from_orig, expected_area, reverse);
+}
+
+
+template <typename Geometry, bool Clockwise, bool Closed>
+void test_geometry_order(std::string const& wkt,
+ std::size_t size_original, std::size_t size_hull_closed,
+ double expected_area)
+{
+ typedef bg::model::polygon
+ <
+ typename bg::point_type<Geometry>::type,
+ Clockwise,
+ Closed
+ > hull_type;
+
+ typedef bg::strategy::convex_hull::graham_andrew
<
Geometry,
typename bg::point_type<Geometry>::type
- > graham;
- bg::convex_hull(geometry, hull.outer(), graham);
- test_convex_hull(geometry, hull, size_original, size_hull, expected_area, false);
+ > strategy_type;
- // Test version with output iterator and strategy
- bg::clear(hull);
- bg::detail::convex_hull::convex_hull_insert(geometry, std::back_inserter(hull.outer()), graham);
- test_convex_hull(geometry, hull, size_original, size_hull, expected_area, ! Clockwise);
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ boost::variant<Geometry> v(geometry);
+
+ test_convex_hull<hull_type, strategy_type>(geometry, size_original, size_hull_closed, expected_area, !Clockwise);
+ test_convex_hull<hull_type, strategy_type>(v, size_original, size_hull_closed, expected_area, !Clockwise);
}
template <typename Geometry>
void test_geometry(std::string const& wkt,
- std::size_t size_original, std::size_t size_hull,
+ std::size_t size_original, std::size_t size_hull_closed,
double expected_area)
{
- test_geometry_order<Geometry, true>(wkt, size_original, size_hull, expected_area);
- test_geometry_order<Geometry, false>(wkt, size_original, size_hull, expected_area);
+ test_geometry_order<Geometry, true, true>(wkt, size_original, size_hull_closed, expected_area);
+ test_geometry_order<Geometry, false, true>(wkt, size_original, size_hull_closed, expected_area);
+ test_geometry_order<Geometry, true, false>(wkt, size_original, size_hull_closed, expected_area);
+ test_geometry_order<Geometry, false, false>(wkt, size_original, size_hull_closed, expected_area);
}
template <typename Geometry>
diff --git a/libs/geometry/test/algorithms/test_correct.hpp b/libs/geometry/test/algorithms/test_correct.hpp
new file mode 100644
index 0000000000..2d2723cd51
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_correct.hpp
@@ -0,0 +1,55 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// 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.
+
+// 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_TEST_CORRECT_HPP
+#define BOOST_GEOMETRY_TEST_CORRECT_HPP
+
+
+// Test-functionality, shared between single and multi tests
+
+#include <sstream>
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/algorithms/correct.hpp>
+#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/geometry/io/wkt/write.hpp>
+#include <boost/variant/variant.hpp>
+
+
+template <typename Geometry>
+void check_geometry(Geometry const& geometry, std::string const& expected)
+{
+ std::ostringstream out;
+ out << bg::wkt(geometry);
+
+ BOOST_CHECK_EQUAL(out.str(), expected);
+}
+
+template <typename Geometry>
+void test_geometry(std::string const& wkt, std::string const& expected)
+{
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ boost::variant<Geometry> v(geometry);
+
+ bg::correct(geometry);
+ check_geometry(geometry, expected);
+
+ bg::correct(v);
+ check_geometry(v, expected);
+}
+
+
+#endif
diff --git a/libs/geometry/test/algorithms/test_covered_by.hpp b/libs/geometry/test/algorithms/test_covered_by.hpp
index efaa6f7895..b9d8f5853f 100644
--- a/libs/geometry/test/algorithms/test_covered_by.hpp
+++ b/libs/geometry/test/algorithms/test_covered_by.hpp
@@ -1,7 +1,9 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
// 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)
@@ -13,6 +15,8 @@
#include <geometry_test_common.hpp>
+#include <boost/variant/variant.hpp>
+
#include <boost/geometry/core/ring_type.hpp>
#include <boost/geometry/algorithms/covered_by.hpp>
#include <boost/geometry/strategies/strategies.hpp>
@@ -21,17 +25,17 @@
#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/geometry/multi/algorithms/covered_by.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/io/wkt/read.hpp>
template <typename Geometry1, typename Geometry2>
-void test_geometry(std::string const& wkt1,
- std::string const& wkt2, bool expected)
+void check_geometry(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ std::string const& wkt1,
+ std::string const& wkt2,
+ bool expected)
{
- Geometry1 geometry1;
- Geometry2 geometry2;
-
- bg::read_wkt(wkt1, geometry1);
- bg::read_wkt(wkt2, geometry2);
-
bool detected = bg::covered_by(geometry1, geometry2);
BOOST_CHECK_MESSAGE(detected == expected,
@@ -41,6 +45,23 @@ void test_geometry(std::string const& wkt1,
<< " detected: " << detected);
}
+template <typename Geometry1, typename Geometry2>
+void test_geometry(std::string const& wkt1,
+ std::string const& wkt2, bool expected)
+{
+ Geometry1 geometry1;
+ Geometry2 geometry2;
+ bg::read_wkt(wkt1, geometry1);
+ bg::read_wkt(wkt2, geometry2);
+ boost::variant<Geometry1> v1(geometry1);
+ boost::variant<Geometry2> v2(geometry2);
+
+ check_geometry(geometry1, geometry2, wkt1, wkt2, expected);
+ check_geometry(v1, geometry2, wkt1, wkt2, expected);
+ check_geometry(geometry1, v2, wkt1, wkt2, expected);
+ check_geometry(v1, v2, wkt1, wkt2, expected);
+}
+
/*
template <typename Point, bool Clockwise, bool Closed>
diff --git a/libs/geometry/test/algorithms/test_crosses.hpp b/libs/geometry/test/algorithms/test_crosses.hpp
new file mode 100644
index 0000000000..768ed91f6d
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_crosses.hpp
@@ -0,0 +1,83 @@
+// Generic Geometry2 Library
+// Unit Test
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#ifndef BOOST_GEOMETRY_TEST_CROSSES_HPP
+#define BOOST_GEOMETRY_TEST_CROSSES_HPP
+
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/core/ring_type.hpp>
+#include <boost/geometry/algorithms/crosses.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+
+#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/variant/variant.hpp>
+
+
+template <typename Geometry1, typename Geometry2>
+void test_geometry(std::string const& wkt1,
+ std::string const& wkt2, bool expected)
+{
+ Geometry1 geometry1;
+ Geometry2 geometry2;
+
+ bg::read_wkt(wkt1, geometry1);
+ bg::read_wkt(wkt2, geometry2);
+
+ bool detected = bg::crosses(geometry1, geometry2);
+
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "crosses: " << wkt1
+ << " with " << wkt2
+ << " -> Expected: " << expected
+ << " detected: " << detected);
+
+#if !defined(BOOST_GEOMETRY_TEST_DEBUG)
+ detected = bg::crosses(
+ geometry1,
+ boost::variant<Geometry2>(geometry2));
+
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "crosses: " << wkt1
+ << " with " << wkt2
+ << " -> Expected: " << expected
+ << " detected: " << detected);
+
+ detected = bg::crosses(
+ boost::variant<Geometry1>(geometry1),
+ geometry2);
+
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "crosses: " << wkt1
+ << " with " << wkt2
+ << " -> Expected: " << expected
+ << " detected: " << detected);
+
+ detected = bg::crosses(
+ boost::variant<Geometry1>(geometry1),
+ boost::variant<Geometry2>(geometry2));
+
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "crosses: " << wkt1
+ << " with " << wkt2
+ << " -> Expected: " << expected
+ << " detected: " << detected);
+#endif
+}
+
+
+#endif // BOOST_GEOMETRY_TEST_CROSSES_HPP
diff --git a/libs/geometry/test/algorithms/test_difference.hpp b/libs/geometry/test/algorithms/test_difference.hpp
index fab6fe3d27..e3cda5d950 100644
--- a/libs/geometry/test/algorithms/test_difference.hpp
+++ b/libs/geometry/test/algorithms/test_difference.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -12,9 +12,11 @@
#include <fstream>
#include <iomanip>
-#include <boost/foreach.hpp>
#include <geometry_test_common.hpp>
+#include <boost/core/ignore_unused.hpp>
+#include <boost/foreach.hpp>
+
#include <boost/range/algorithm/copy.hpp>
#include <boost/geometry/algorithms/correct.hpp>
@@ -38,13 +40,18 @@
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
+# define BOOST_GEOMETRY_DEBUG_IDENTIFIER
+# include <boost/geometry/io/svg/svg_mapper.hpp>
+# include <boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp>
#endif
template <typename Output, typename G1, typename G2>
void difference_output(std::string const& caseid, G1 const& g1, G2 const& g2, Output const& output)
{
+ boost::ignore_unused(caseid, g1, g2, output);
+
#if defined(TEST_WITH_SVG)
{
typedef typename bg::coordinate_type<G1>::type coordinate_type;
@@ -54,6 +61,9 @@ void difference_output(std::string const& caseid, G1 const& g1, G2 const& g2, Ou
filename << "difference_"
<< caseid << "_"
<< string_from_type<coordinate_type>::name()
+#if defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ << "_no_rob"
+#endif
<< ".svg";
std::ofstream svg(filename.str().c_str());
@@ -79,14 +89,15 @@ void difference_output(std::string const& caseid, G1 const& g1, G2 const& g2, Ou
template <typename OutputType, typename G1, typename G2>
void test_difference(std::string const& caseid, G1 const& g1, G2 const& g2,
- std::size_t expected_count, std::size_t expected_point_count,
+ int expected_count, int expected_point_count,
double expected_area,
double percentage = 0.0001,
bool sym = false)
{
- std::vector<OutputType> clip;
-
typedef typename bg::coordinate_type<G1>::type coordinate_type;
+ boost::ignore_unused<coordinate_type>();
+
+ std::vector<OutputType> clip;
if (sym)
{
@@ -103,7 +114,7 @@ void test_difference(std::string const& caseid, G1 const& g1, G2 const& g2,
it != clip.end();
++it)
{
- if (expected_point_count > 0)
+ if (expected_point_count >= 0)
{
n += bg::num_points(*it);
}
@@ -117,15 +128,26 @@ void test_difference(std::string const& caseid, G1 const& g1, G2 const& g2,
{
// Test inserter functionality
// Test if inserter returns output-iterator (using Boost.Range copy)
+ typedef typename bg::point_type<G1>::type point_type;
+ typedef typename bg::rescale_policy_type<point_type>::type
+ rescale_policy_type;
+
+ rescale_policy_type rescale_policy
+ = bg::get_rescale_policy<rescale_policy_type>(g1, g2);
+
std::vector<OutputType> inserted, array_with_one_empty_geometry;
array_with_one_empty_geometry.push_back(OutputType());
if (sym)
{
- boost::copy(array_with_one_empty_geometry, bg::detail::sym_difference::sym_difference_insert<OutputType>(g1, g2, std::back_inserter(inserted)));
+ boost::copy(array_with_one_empty_geometry,
+ bg::detail::sym_difference::sym_difference_insert<OutputType>
+ (g1, g2, rescale_policy, std::back_inserter(inserted)));
}
else
{
- boost::copy(array_with_one_empty_geometry, bg::detail::difference::difference_insert<OutputType>(g1, g2, std::back_inserter(inserted)));
+ boost::copy(array_with_one_empty_geometry,
+ bg::detail::difference::difference_insert<OutputType>(
+ g1, g2, rescale_policy, std::back_inserter(inserted)));
}
BOOST_CHECK_EQUAL(boost::size(clip), boost::size(inserted) - 1);
@@ -135,23 +157,23 @@ void test_difference(std::string const& caseid, G1 const& g1, G2 const& g2,
#if ! defined(BOOST_GEOMETRY_NO_BOOST_TEST)
- /*if (expected_point_count > 0)
+ if (expected_point_count >= 0)
{
- BOOST_CHECK_MESSAGE(n == expected_point_count,
+ BOOST_CHECK_MESSAGE(bg::math::abs(int(n) - expected_point_count) < 3,
"difference: " << caseid
<< " #points expected: " << expected_point_count
<< " detected: " << n
- << " type: " << string_from_type<coordinate_type>::name()
+ << " type: " << (type_for_assert_message<G1, G2>())
);
- }*/
+ }
- if (expected_count > 0)
+ if (expected_count >= 0)
{
- BOOST_CHECK_MESSAGE(clip.size() == expected_count,
+ BOOST_CHECK_MESSAGE(int(clip.size()) == expected_count,
"difference: " << caseid
<< " #outputs expected: " << expected_count
<< " detected: " << clip.size()
- << " type: " << string_from_type<coordinate_type>::name()
+ << " type: " << (type_for_assert_message<G1, G2>())
);
}
@@ -170,12 +192,12 @@ static int counter = 0;
template <typename OutputType, typename G1, typename G2>
void test_one(std::string const& caseid,
std::string const& wkt1, std::string const& wkt2,
- std::size_t expected_count1,
- std::size_t expected_point_count1,
+ int expected_count1,
+ int expected_point_count1,
double expected_area1,
- std::size_t expected_count2,
- std::size_t expected_point_count2,
+ int expected_count2,
+ int expected_point_count2,
double expected_area2,
double percentage = 0.0001)
@@ -213,7 +235,8 @@ void test_one(std::string const& caseid,
expected_area2, percentage);
test_difference<OutputType>(caseid + "_s", g1, g2,
expected_count1 + expected_count2,
- expected_point_count1 + expected_point_count2,
+ expected_point_count1 >= 0 && expected_point_count2 >= 0
+ ? (expected_point_count1 + expected_point_count2) : -1,
expected_area1 + expected_area2,
percentage, true);
@@ -256,7 +279,7 @@ template <typename OutputType, typename G1, typename G2>
void test_one_lp(std::string const& caseid,
std::string const& wkt1, std::string const& wkt2,
std::size_t expected_count,
- std::size_t expected_point_count,
+ int expected_point_count,
double expected_length)
{
G1 g1;
@@ -272,25 +295,29 @@ void test_one_lp(std::string const& caseid,
typename bg::default_length_result<G1>::type length = 0;
std::size_t n = 0;
+ std::size_t piece_count = 0;
for (typename std::vector<OutputType>::iterator it = pieces.begin();
it != pieces.end();
++it)
{
- if (expected_point_count > 0)
+ if (expected_point_count >= 0)
{
n += bg::num_points(*it);
}
-
+ piece_count++;
length += bg::length(*it);
}
- BOOST_CHECK_MESSAGE(pieces.size() == expected_count,
+ BOOST_CHECK_MESSAGE(piece_count == expected_count,
"difference: " << caseid
<< " #outputs expected: " << expected_count
<< " detected: " << pieces.size()
);
- BOOST_CHECK_EQUAL(n, expected_point_count);
+ if (expected_point_count >= 0)
+ {
+ BOOST_CHECK_EQUAL(n, std::size_t(expected_point_count));
+ }
BOOST_CHECK_CLOSE(length, expected_length, 0.001);
diff --git a/libs/geometry/test/algorithms/test_difference_linear_linear.hpp b/libs/geometry/test/algorithms/test_difference_linear_linear.hpp
new file mode 100644
index 0000000000..cf86124a3f
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_difference_linear_linear.hpp
@@ -0,0 +1,144 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#ifndef BOOST_GEOMETRY_TEST_DIFFERENCE_LINEAR_LINEAR_HPP
+#define BOOST_GEOMETRY_TEST_DIFFERENCE_LINEAR_LINEAR_HPP
+
+#include "from_wkt.hpp"
+#include <boost/geometry/geometry.hpp>
+#include "test_set_ops_linear_linear.hpp"
+#include "to_svg.hpp"
+
+
+//==================================================================
+//==================================================================
+// difference of (linear) geometries
+//==================================================================
+//==================================================================
+
+template
+<
+ typename Geometry1, typename Geometry2,
+ typename MultiLineString
+>
+class test_difference_of_geometries
+{
+private:
+ static inline void base_test(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiLineString const& mls_diff,
+ std::string const& case_id,
+ bool test_vector_and_deque = true,
+ bool reverse_output_for_checking = false)
+ {
+ static bool vector_deque_already_tested = false;
+
+ typedef typename boost::range_value<MultiLineString>::type LineString;
+ typedef std::vector<LineString> linestring_vector;
+ typedef std::deque<LineString> linestring_deque;
+
+ MultiLineString mls_output;
+
+ linestring_vector ls_vector_output;
+ linestring_deque ls_deque_output;
+
+ bg::difference(geometry1, geometry2, mls_output);
+
+ if ( reverse_output_for_checking )
+ {
+ bg::reverse(mls_output);
+ }
+
+ BOOST_CHECK_MESSAGE( equals::apply(mls_diff, mls_output),
+ "difference L/L: " << bg::wkt(geometry1)
+ << " " << bg::wkt(geometry2)
+ << " -> Expected: " << bg::wkt(mls_diff)
+ << " computed: " << bg::wkt(mls_output) );
+
+ set_operation_output("difference", case_id,
+ geometry1, geometry2, mls_output);
+
+ if ( !vector_deque_already_tested && test_vector_and_deque )
+ {
+ vector_deque_already_tested = true;
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "Testing with vector and deque as output container..."
+ << std::endl;
+#endif
+ bg::difference(geometry1, geometry2, ls_vector_output);
+ bg::difference(geometry1, geometry2, ls_deque_output);
+
+ BOOST_CHECK(multilinestring_equals<false>::apply(mls_diff,
+ ls_vector_output));
+
+ BOOST_CHECK(multilinestring_equals<false>::apply(mls_diff,
+ ls_deque_output));
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Done!" << std::endl << std::endl;
+#endif
+ }
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Geometry #1: " << bg::wkt(geometry1) << std::endl;
+ std::cout << "Geometry #2: " << bg::wkt(geometry2) << std::endl;
+ std::cout << "difference : " << bg::wkt(mls_output) << std::endl;
+ std::cout << "expected difference : " << bg::wkt(mls_diff) << std::endl;
+ std::cout << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+
+
+public:
+ static inline void apply(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiLineString const& mls_diff,
+ std::string const& case_id)
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "test case: " << case_id << std::endl;
+ std::stringstream sstr;
+ sstr << "svgs/" << case_id << ".svg";
+#ifdef TEST_WITH_SVG
+ to_svg(geometry1, geometry2, sstr.str());
+#endif
+#endif
+
+ Geometry1 rg1(geometry1);
+ bg::reverse<Geometry1>(rg1);
+
+ Geometry2 rg2(geometry2);
+ bg::reverse<Geometry2>(rg2);
+
+ test_get_turns_ll_invariance<>::apply(geometry1, geometry2);
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl
+ << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
+ << std::endl << std::endl;
+#endif
+ test_get_turns_ll_invariance<>::apply(rg1, geometry2);
+
+ base_test(geometry1, geometry2, mls_diff, case_id);
+ base_test(geometry1, rg2, mls_diff, case_id, false);
+ base_test(rg1, geometry2, mls_diff, case_id, false, true);
+ base_test(rg1, rg2, mls_diff, case_id, false, true);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+};
+
+
+#endif // BOOST_GEOMETRY_TEST_DIFFERENCE_LINEAR_LINEAR_HPP
diff --git a/libs/geometry/test/algorithms/test_disjoint.hpp b/libs/geometry/test/algorithms/test_disjoint.hpp
new file mode 100644
index 0000000000..55a22e9bd6
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_disjoint.hpp
@@ -0,0 +1,63 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// 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.
+
+// 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_TEST_DISJOINT_HPP
+#define BOOST_GEOMETRY_TEST_DISJOINT_HPP
+
+#include <iostream>
+#include <string>
+#include <boost/variant/variant.hpp>
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/algorithms/disjoint.hpp>
+#include <boost/geometry/multi/algorithms/disjoint.hpp>
+#include <boost/geometry/multi/io/wkt/read.hpp>
+
+
+template <typename G1, typename G2>
+void check_disjoint(std::string const& id,
+ G1 const& g1,
+ G2 const& g2,
+ bool expected)
+{
+ bool detected = bg::disjoint(g1, g2);
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "disjoint: " << id
+ << " -> Expected: " << expected
+ << " detected: " << detected);
+}
+
+template <typename G1, typename G2>
+void test_disjoint(std::string const& id,
+ std::string const& wkt1,
+ std::string const& wkt2, bool expected)
+{
+ G1 g1;
+ bg::read_wkt(wkt1, g1);
+
+ G2 g2;
+ bg::read_wkt(wkt2, g2);
+
+ boost::variant<G1> v1(g1);
+ boost::variant<G2> v2(g2);
+
+ check_disjoint(id, g1, g2, expected);
+ check_disjoint(id, v1, g2, expected);
+ check_disjoint(id, g1, v2, expected);
+ check_disjoint(id, v1, v2, expected);
+}
+
+
+#endif // BOOST_GEOMETRY_TEST_DISJOINT_HPP
diff --git a/libs/geometry/test/algorithms/test_distance.hpp b/libs/geometry/test/algorithms/test_distance.hpp
index 271bdab6eb..82154fe237 100644
--- a/libs/geometry/test/algorithms/test_distance.hpp
+++ b/libs/geometry/test/algorithms/test_distance.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -24,9 +24,9 @@
// For a point-segment-distance operation, there is some magic inside
// using another point type and casting if necessary. Therefore,
// two point-types are necessary.
-template <typename P1, typename P2 = P1>
struct taxicab_distance
{
+ template <typename P1, typename P2>
static inline typename bg::coordinate_type<P1>::type apply(
P1 const& p1, P2 const& p2)
{
@@ -42,59 +42,40 @@ struct taxicab_distance
namespace boost { namespace geometry { namespace strategy { namespace distance { namespace services
{
-template <typename P1, typename P2>
-struct tag<taxicab_distance<P1, P2> >
+template <>
+struct tag<taxicab_distance>
{
typedef strategy_tag_distance_point_point type;
};
template <typename P1, typename P2>
-struct return_type<taxicab_distance<P1, P2> >
+struct return_type<taxicab_distance, P1, P2>
{
typedef typename coordinate_type<P1>::type type;
};
-template<typename P1, typename P2, typename PN1, typename PN2>
-struct similar_type<taxicab_distance<P1, P2>, PN1, PN2>
-{
- typedef taxicab_distance<PN1, PN2> type;
-};
-
-
-template<typename P1, typename P2, typename PN1, typename PN2>
-struct get_similar<taxicab_distance<P1, P2>, PN1, PN2>
-{
- static inline typename similar_type
- <
- taxicab_distance<P1, P2>, PN1, PN2
- >::type apply(taxicab_distance<P1, P2> const& )
- {
- return taxicab_distance<PN1, PN2>();
- }
-};
-
-template <typename P1, typename P2>
-struct comparable_type<taxicab_distance<P1, P2> >
+template <>
+struct comparable_type<taxicab_distance>
{
- typedef taxicab_distance<P1, P2> type;
+ typedef taxicab_distance type;
};
-template <typename P1, typename P2>
-struct get_comparable<taxicab_distance<P1, P2> >
+template <>
+struct get_comparable<taxicab_distance>
{
- static inline taxicab_distance<P1, P2> apply(taxicab_distance<P1, P2> const& input)
+ static inline taxicab_distance apply(taxicab_distance const& input)
{
return input;
}
};
template <typename P1, typename P2>
-struct result_from_distance<taxicab_distance<P1, P2> >
+struct result_from_distance<taxicab_distance, P1, P2>
{
template <typename T>
- static inline typename coordinate_type<P1>::type apply(taxicab_distance<P1, P2> const& , T const& value)
+ static inline typename coordinate_type<P1>::type apply(taxicab_distance const& , T const& value)
{
return value;
}
@@ -114,7 +95,7 @@ void test_distance(Geometry1 const& geometry1,
{
typename bg::default_distance_result<Geometry1>::type distance = bg::distance(geometry1, geometry2);
-#ifdef GEOMETRY_TEST_DEBUG
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
std::ostringstream out;
out << typeid(typename bg::coordinate_type<Geometry1>::type).name()
<< std::endl
diff --git a/libs/geometry/test/algorithms/test_distance_common.hpp b/libs/geometry/test/algorithms/test_distance_common.hpp
new file mode 100644
index 0000000000..31159e08be
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_distance_common.hpp
@@ -0,0 +1,600 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_GEOMETRY_TEST_DISTANCE_COMMON_HPP
+#define BOOST_GEOMETRY_TEST_DISTANCE_COMMON_HPP
+
+#include <iostream>
+#include <string>
+
+#include <boost/mpl/assert.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/segment.hpp>
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+#include <boost/geometry/geometries/ring.hpp>
+#include <boost/geometry/geometries/box.hpp>
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+#include <boost/geometry/io/wkt/write.hpp>
+#include <boost/geometry/multi/io/wkt/write.hpp>
+
+#include <boost/geometry/io/dsv/write.hpp>
+#include <boost/geometry/multi/io/dsv/write.hpp>
+
+#include <boost/geometry/algorithms/num_interior_rings.hpp>
+#include <boost/geometry/algorithms/distance.hpp>
+#include <boost/geometry/algorithms/comparable_distance.hpp>
+
+#include "from_wkt.hpp"
+
+#include <string_from_type.hpp>
+
+
+#ifndef BOOST_GEOMETRY_TEST_DISTANCE_HPP
+
+namespace bg = ::boost::geometry;
+
+// function copied from BG's test_distance.hpp
+
+template <typename Geometry1, typename Geometry2>
+void test_empty_input(Geometry1 const& geometry1, Geometry2 const& geometry2)
+{
+ try
+ {
+ bg::distance(geometry1, geometry2);
+ }
+ catch(bg::empty_input_exception const& )
+ {
+ return;
+ }
+ BOOST_CHECK_MESSAGE(false, "A empty_input_exception should have been thrown" );
+}
+#endif // BOOST_GEOMETRY_TEST_DISTANCE_HPP
+
+
+
+//========================================================================
+
+
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+// pretty print geometry -- START
+template <typename Geometry, typename GeometryTag>
+struct pretty_print_geometry_dispatch
+{
+ template <typename Stream>
+ static inline Stream& apply(Geometry const& geometry, Stream& os)
+ {
+ os << bg::wkt(geometry);
+ return os;
+ }
+};
+
+template <typename Geometry>
+struct pretty_print_geometry_dispatch<Geometry, bg::segment_tag>
+{
+ template <typename Stream>
+ static inline Stream& apply(Geometry const& geometry, Stream& os)
+ {
+ os << "SEGMENT" << bg::dsv(geometry);
+ return os;
+ }
+};
+
+template <typename Geometry>
+struct pretty_print_geometry_dispatch<Geometry, bg::box_tag>
+{
+ template <typename Stream>
+ static inline Stream& apply(Geometry const& geometry, Stream& os)
+ {
+ os << "BOX" << bg::dsv(geometry);
+ return os;
+ }
+};
+
+
+template <typename Geometry>
+struct pretty_print_geometry
+{
+ template <typename Stream>
+ static inline Stream& apply(Geometry const& geometry, Stream& os)
+ {
+ return pretty_print_geometry_dispatch
+ <
+ Geometry, typename bg::tag<Geometry>::type
+ >::apply(geometry, os);
+ }
+};
+// pretty print geometry -- END
+#endif // BOOST_GEOMETRY_TEST_DEBUG
+
+
+//========================================================================
+
+
+template <typename T>
+struct check_equal
+{
+ static inline void apply(T const& value1, T const& value2)
+ {
+ BOOST_CHECK( value1 == value2 );
+ }
+};
+
+template <>
+struct check_equal<double>
+{
+ static inline void apply(double value1, double value2)
+ {
+ BOOST_CHECK_CLOSE( value1, value2, 0.0001 );
+ }
+};
+
+
+//========================================================================
+
+template
+<
+ typename Geometry1, typename Geometry2,
+ int id1 = bg::geometry_id<Geometry1>::value,
+ int id2 = bg::geometry_id<Geometry2>::value
+>
+struct test_distance_of_geometries
+ : public test_distance_of_geometries<Geometry1, Geometry2, 0, 0>
+{};
+
+
+template <typename Geometry1, typename Geometry2>
+struct test_distance_of_geometries<Geometry1, Geometry2, 0, 0>
+{
+ template
+ <
+ typename DistanceType,
+ typename ComparableDistanceType,
+ typename Strategy
+ >
+ static inline
+ void apply(std::string const& wkt1,
+ std::string const& wkt2,
+ DistanceType const& expected_distance,
+ ComparableDistanceType const& expected_comparable_distance,
+ Strategy const& strategy,
+ bool test_reversed = true)
+ {
+ Geometry1 geometry1 = from_wkt<Geometry1>(wkt1);
+ Geometry2 geometry2 = from_wkt<Geometry2>(wkt2);
+
+ apply(geometry1, geometry2,
+ expected_distance, expected_comparable_distance,
+ strategy, test_reversed);
+ }
+
+
+ template
+ <
+ typename DistanceType,
+ typename ComparableDistanceType,
+ typename Strategy
+ >
+ static inline
+ void apply(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ DistanceType const& expected_distance,
+ ComparableDistanceType const& expected_comparable_distance,
+ Strategy const& strategy,
+ bool test_reversed = true)
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ typedef pretty_print_geometry<Geometry1> PPG1;
+ typedef pretty_print_geometry<Geometry2> PPG2;
+ PPG1::apply(geometry1, std::cout);
+ std::cout << " - ";
+ PPG2::apply(geometry2, std::cout);
+ std::cout << std::endl;
+#endif
+ typedef typename bg::default_distance_result
+ <
+ Geometry1, Geometry2
+ >::type default_distance_result;
+
+ typedef typename bg::strategy::distance::services::return_type
+ <
+ Strategy, Geometry1, Geometry2
+ >::type distance_result_from_strategy;
+
+ static const bool same_regular = boost::is_same
+ <
+ default_distance_result,
+ distance_result_from_strategy
+ >::type::value;
+
+ BOOST_CHECK( same_regular );
+
+
+ typedef typename bg::default_comparable_distance_result
+ <
+ Geometry1, Geometry2
+ >::type default_comparable_distance_result;
+
+ typedef typename bg::strategy::distance::services::return_type
+ <
+ typename bg::strategy::distance::services::comparable_type
+ <
+ Strategy
+ >::type,
+ Geometry1,
+ Geometry2
+ >::type comparable_distance_result_from_strategy;
+
+ static const bool same_comparable = boost::is_same
+ <
+ default_comparable_distance_result,
+ comparable_distance_result_from_strategy
+ >::type::value;
+
+ BOOST_CHECK( same_comparable );
+
+
+ // check distance with default strategy
+ default_distance_result dist_def = bg::distance(geometry1, geometry2);
+
+ check_equal
+ <
+ default_distance_result
+ >::apply(dist_def, expected_distance);
+
+
+ // check distance with passed strategy
+ distance_result_from_strategy dist =
+ bg::distance(geometry1, geometry2, strategy);
+
+ check_equal
+ <
+ default_distance_result
+ >::apply(dist, expected_distance);
+
+
+ // check comparable distance with default strategy
+ default_comparable_distance_result cdist_def =
+ bg::comparable_distance(geometry1, geometry2);
+
+ check_equal
+ <
+ default_comparable_distance_result
+ >::apply(cdist_def, expected_comparable_distance);
+
+
+ // check comparable distance with passed strategy
+ comparable_distance_result_from_strategy cdist =
+ bg::comparable_distance(geometry1, geometry2, strategy);
+
+ check_equal
+ <
+ default_comparable_distance_result
+ >::apply(cdist, expected_comparable_distance);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << string_from_type<typename bg::coordinate_type<Geometry1>::type>::name()
+ << string_from_type<typename bg::coordinate_type<Geometry2>::type>::name()
+ << " -> "
+ << string_from_type<default_distance_result>::name()
+ << string_from_type<default_comparable_distance_result>::name()
+ << std::endl;
+ std::cout << "distance (default strategy) = " << dist_def << " ; "
+ << "distance (passed strategy) = " << dist << " ; "
+ << "comp. distance (default strategy) = "
+ << cdist_def << " ; "
+ << "comp. distance (passed strategy) = "
+ << cdist << std::endl;
+
+ if ( !test_reversed )
+ {
+ std::cout << std::endl;
+ }
+#endif
+
+ if ( test_reversed )
+ {
+ // check distance with default strategy
+ dist_def = bg::distance(geometry2, geometry1);
+
+ check_equal
+ <
+ default_distance_result
+ >::apply(dist_def, expected_distance);
+
+
+ // check distance with given strategy
+ dist = bg::distance(geometry2, geometry1, strategy);
+
+ check_equal
+ <
+ default_distance_result
+ >::apply(dist, expected_distance);
+
+
+ // check comparable distance with default strategy
+ cdist_def = bg::comparable_distance(geometry2, geometry1);
+
+ check_equal
+ <
+ default_comparable_distance_result
+ >::apply(cdist_def, expected_comparable_distance);
+
+ // check comparable distance with given strategy
+ cdist = bg::comparable_distance(geometry2, geometry1, strategy);
+
+ check_equal
+ <
+ default_comparable_distance_result
+ >::apply(cdist, expected_comparable_distance);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "distance[reversed args] (def. startegy) = "
+ << dist_def << " ; "
+ << "distance[reversed args] (passed startegy) = "
+ << dist << " ; "
+ << "comp. distance[reversed args] (def. strategy) = "
+ << cdist_def << " ; "
+ << "comp. distance[reversed args] (passed strategy) = "
+ << cdist << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+ }
+};
+
+
+//========================================================================
+
+template <typename Segment, typename Polygon>
+struct test_distance_of_geometries
+<
+ Segment, Polygon,
+ 92 /* segment */, 3 /* polygon */
+>
+ : public test_distance_of_geometries<Segment, Polygon, 0, 0>
+{
+ typedef test_distance_of_geometries<Segment, Polygon, 0, 0> base;
+
+ typedef typename bg::ring_type<Polygon>::type ring_type;
+
+ template
+ <
+ typename DistanceType,
+ typename ComparableDistanceType,
+ typename Strategy
+ >
+ static inline
+ void apply(std::string const& wkt_segment,
+ std::string const& wkt_polygon,
+ DistanceType const& expected_distance,
+ ComparableDistanceType const& expected_comparable_distance,
+ Strategy const& strategy)
+ {
+ Segment segment = from_wkt<Segment>(wkt_segment);
+ Polygon polygon = from_wkt<Polygon>(wkt_polygon);
+ apply(segment,
+ polygon,
+ expected_distance,
+ expected_comparable_distance,
+ strategy);
+ }
+
+
+ template
+ <
+ typename DistanceType,
+ typename ComparableDistanceType,
+ typename Strategy
+ >
+ static inline
+ void apply(Segment const& segment,
+ Polygon const& polygon,
+ DistanceType const& expected_distance,
+ ComparableDistanceType const& expected_comparable_distance,
+ Strategy const& strategy)
+ {
+ base::apply(segment, polygon, expected_distance,
+ expected_comparable_distance, strategy);
+ if ( bg::num_interior_rings(polygon) == 0 ) {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "... testing also exterior ring ..." << std::endl;
+#endif
+ test_distance_of_geometries
+ <
+ Segment, ring_type
+ >::apply(segment,
+ bg::exterior_ring(polygon),
+ expected_distance,
+ expected_comparable_distance,
+ strategy);
+ }
+ }
+};
+
+//========================================================================
+
+template <typename Box, typename Segment>
+struct test_distance_of_geometries
+<
+ Box, Segment,
+ 94 /* box */, 92 /* segment */
+>
+{
+ template
+ <
+ typename DistanceType,
+ typename ComparableDistanceType,
+ typename Strategy
+ >
+ static inline
+ void apply(std::string const& wkt_box,
+ std::string const& wkt_segment,
+ DistanceType const& expected_distance,
+ ComparableDistanceType const& expected_comparable_distance,
+ Strategy const& strategy)
+ {
+ test_distance_of_geometries
+ <
+ Segment, Box, 92, 94
+ >::apply(wkt_segment,
+ wkt_box,
+ expected_distance,
+ expected_comparable_distance,
+ strategy);
+ }
+};
+
+
+template <typename Segment, typename Box>
+struct test_distance_of_geometries
+<
+ Segment, Box,
+ 92 /* segment */, 94 /* box */
+>
+ : public test_distance_of_geometries<Segment, Box, 0, 0>
+{
+ typedef test_distance_of_geometries<Segment, Box, 0, 0> base;
+
+ template
+ <
+ typename DistanceType,
+ typename ComparableDistanceType,
+ typename Strategy
+ >
+ static inline
+ void apply(std::string const& wkt_segment,
+ std::string const& wkt_box,
+ DistanceType const& expected_distance,
+ ComparableDistanceType const& expected_comparable_distance,
+ Strategy const& strategy)
+ {
+ Segment segment = from_wkt<Segment>(wkt_segment);
+ Box box = from_wkt<Box>(wkt_box);
+ apply(segment,
+ box,
+ expected_distance,
+ expected_comparable_distance,
+ strategy);
+ }
+
+
+ template
+ <
+ typename DistanceType,
+ typename ComparableDistanceType,
+ typename Strategy
+ >
+ static inline
+ void apply(Segment const& segment,
+ Box const& box,
+ DistanceType const& expected_distance,
+ ComparableDistanceType const& expected_comparable_distance,
+ Strategy const& strategy)
+ {
+ typedef typename bg::strategy::distance::services::return_type
+ <
+ Strategy, Segment, Box
+ >::type distance_result_type;
+
+ typedef typename bg::strategy::distance::services::comparable_type
+ <
+ Strategy
+ >::type comparable_strategy;
+
+ typedef typename bg::strategy::distance::services::return_type
+ <
+ comparable_strategy, Segment, Box
+ >::type comparable_distance_result_type;
+
+
+ base::apply(segment, box, expected_distance,
+ expected_comparable_distance, strategy);
+
+ comparable_strategy cstrategy =
+ bg::strategy::distance::services::get_comparable
+ <
+ Strategy
+ >::apply(strategy);
+
+ distance_result_type distance_generic =
+ bg::detail::distance::segment_to_box_2D_generic
+ <
+ Segment, Box, Strategy
+ >::apply(segment, box, strategy);
+
+ comparable_distance_result_type comparable_distance_generic =
+ bg::detail::distance::segment_to_box_2D_generic
+ <
+ Segment, Box, comparable_strategy
+ >::apply(segment, box, cstrategy);
+
+
+ check_equal
+ <
+ distance_result_type
+ >::apply(distance_generic, expected_distance);
+
+ check_equal
+ <
+ comparable_distance_result_type
+ >::apply(comparable_distance_generic, expected_comparable_distance);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "... testing with naive seg-box distance algorithm..."
+ << std::endl;
+ std::cout << "distance (generic algorithm) = "
+ << distance_generic << " ; "
+ << "comp. distance (generic algorithm) = "
+ << comparable_distance_generic
+ << std::endl;
+ std::cout << std::endl << std::endl;
+#endif
+ }
+};
+
+//========================================================================
+
+
+template <typename Geometry1, typename Geometry2, typename Strategy>
+void test_empty_input(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ Strategy const& strategy)
+{
+ try
+ {
+ bg::distance(geometry1, geometry2, strategy);
+ }
+ catch(bg::empty_input_exception const& )
+ {
+ return;
+ }
+ BOOST_CHECK_MESSAGE(false, "A empty_input_exception should have been thrown" );
+
+ try
+ {
+ bg::distance(geometry2, geometry1, strategy);
+ }
+ catch(bg::empty_input_exception const& )
+ {
+ return;
+ }
+ BOOST_CHECK_MESSAGE(false, "A empty_input_exception should have been thrown" );
+}
+
+#endif // BOOST_GEOMETRY_TEST_DISTANCE_COMMON_HPP
diff --git a/libs/geometry/test/algorithms/test_envelope.hpp b/libs/geometry/test/algorithms/test_envelope.hpp
index 3010ef901b..bf00d1282c 100644
--- a/libs/geometry/test/algorithms/test_envelope.hpp
+++ b/libs/geometry/test/algorithms/test_envelope.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -10,6 +10,8 @@
#define BOOST_GEOMETRY_TEST_ENVELOPE_HPP
+#include <boost/variant/variant.hpp>
+
#include <geometry_test_common.hpp>
#include <boost/geometry/algorithms/envelope.hpp>
@@ -34,8 +36,8 @@ struct check_result<Box, 2>
ctype
>::type type;
- static void apply(Box const& b, const type& x1, const type& y1, const type& z1,
- const type& x2, const type& y2, const type& z2)
+ static void apply(Box const& b, const type& x1, const type& y1, const type& /*z1*/,
+ const type& x2, const type& y2, const type& /*z2*/)
{
BOOST_CHECK_CLOSE((bg::get<bg::min_corner, 0>(b)), x1, 0.001);
BOOST_CHECK_CLOSE((bg::get<bg::min_corner, 1>(b)), y1, 0.001);
@@ -77,31 +79,17 @@ void test_envelope(std::string const& wkt,
const T& z1 = 0, const T& z2 = 0)
{
typedef bg::model::box<typename bg::point_type<Geometry>::type > box_type;
-
- Geometry geometry;
- bg::read_wkt(wkt, geometry);
box_type b;
- bg::envelope(geometry, b);
-
- check_result<box_type, bg::dimension<Geometry>::type::value>::apply(b, x1, y1, z1, x2, y2, z2);
-}
-
-template <typename Geometry, typename T>
-void test_envelope_strategy(std::string const& wkt,
- const T& x1, const T& x2,
- const T& y1, const T& y2,
- const T& z1 = 0, const T& z2 = 0)
-{
- typedef bg::model::box<typename bg::point_type<Geometry>::type > box_type;
Geometry geometry;
bg::read_wkt(wkt, geometry);
- box_type b;
bg::envelope(geometry, b);
+ check_result<box_type, bg::dimension<Geometry>::type::value>::apply(b, x1, y1, z1, x2, y2, z2);
+ boost::variant<Geometry> v(geometry);
+ bg::envelope(v, b);
check_result<box_type, bg::dimension<Geometry>::type::value>::apply(b, x1, y1, z1, x2, y2, z2);
}
-
#endif
diff --git a/libs/geometry/test/algorithms/test_equals.hpp b/libs/geometry/test/algorithms/test_equals.hpp
index c84646e5e5..485dc700c5 100644
--- a/libs/geometry/test/algorithms/test_equals.hpp
+++ b/libs/geometry/test/algorithms/test_equals.hpp
@@ -1,7 +1,9 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
+
// 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)
@@ -15,24 +17,28 @@
#include <boost/geometry/core/ring_type.hpp>
#include <boost/geometry/algorithms/equals.hpp>
#include <boost/geometry/strategies/strategies.hpp>
-
#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/variant/variant.hpp>
template <typename Geometry1, typename Geometry2>
-void test_geometry(std::string const& caseid,
- std::string const& wkt1,
- std::string const& wkt2, bool expected)
+void check_geometry(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ std::string const& caseid,
+ std::string const& wkt1,
+ std::string const& wkt2,
+ bool expected)
{
- //std::cout << caseid << " expected: " << int(expected) << std::endl;
- //std::cout << wkt1 << std::endl;
- Geometry1 geometry1;
- Geometry2 geometry2;
+ bool detected = bg::equals(geometry1, geometry2);
- bg::read_wkt(wkt1, geometry1);
- bg::read_wkt(wkt2, geometry2);
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "case: " << caseid
+ << " equals: " << wkt1
+ << " to " << wkt2
+ << " -> Expected: " << expected
+ << " detected: " << detected);
- bool detected = bg::equals(geometry1, geometry2);
+ detected = bg::equals(geometry2, geometry1);
BOOST_CHECK_MESSAGE(detected == expected,
"case: " << caseid
@@ -42,4 +48,22 @@ void test_geometry(std::string const& caseid,
<< " detected: " << detected);
}
+
+template <typename Geometry1, typename Geometry2>
+void test_geometry(std::string const& caseid,
+ std::string const& wkt1,
+ std::string const& wkt2, bool expected)
+{
+ Geometry1 geometry1;
+ Geometry2 geometry2;
+
+ bg::read_wkt(wkt1, geometry1);
+ bg::read_wkt(wkt2, geometry2);
+
+ check_geometry(geometry1, geometry2, caseid, wkt1, wkt2, expected);
+ check_geometry(boost::variant<Geometry1>(geometry1), geometry2, caseid, wkt1, wkt2, expected);
+ check_geometry(geometry1, boost::variant<Geometry2>(geometry2), caseid, wkt1, wkt2, expected);
+ check_geometry(boost::variant<Geometry1>(geometry1), boost::variant<Geometry2>(geometry2), caseid, wkt1, wkt2, expected);
+}
+
#endif
diff --git a/libs/geometry/test/algorithms/test_expand.hpp b/libs/geometry/test/algorithms/test_expand.hpp
index ebf22e3748..2e42d436d8 100644
--- a/libs/geometry/test/algorithms/test_expand.hpp
+++ b/libs/geometry/test/algorithms/test_expand.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -17,6 +17,16 @@
#include <boost/geometry/io/wkt/read.hpp>
#include <boost/geometry/algorithms/assign.hpp>
#include <boost/geometry/io/dsv/write.hpp>
+#include <boost/variant/variant.hpp>
+
+
+template <typename Box>
+inline std::string to_dsv(const Box& box)
+{
+ std::ostringstream out;
+ out << bg::dsv(box, ",", "(", ")", ",", "", "");
+ return out.str();
+}
template <typename Geometry, typename Box>
@@ -29,10 +39,13 @@ void test_expand(Box& box,
bg::expand(box, geometry);
- std::ostringstream out;
- out << bg::dsv(box, ",", "(", ")", ",", "", "");
+ BOOST_CHECK_EQUAL(to_dsv(box), expected);
- BOOST_CHECK_EQUAL(out.str(), expected);
+#if !defined(BOOST_GEOMETRY_TEST_DEBUG)
+ bg::expand(box, boost::variant<Geometry>(geometry));
+
+ BOOST_CHECK_EQUAL(to_dsv(box), expected);
+#endif
}
template <typename Geometry, typename Box>
@@ -43,13 +56,15 @@ void test_expand_other_strategy(Box& box,
Geometry geometry;
bg::read_wkt(wkt, geometry);
-
bg::expand(box, geometry);
- std::ostringstream out;
- out << bg::dsv(box, ",", "(", ")", ",", "", "");
+ BOOST_CHECK_EQUAL(to_dsv(box), expected);
+
+#if !defined(BOOST_GEOMETRY_TEST_DEBUG)
+ bg::expand(box, boost::variant<Geometry>(geometry));
- BOOST_CHECK_EQUAL(out.str(), expected);
+ BOOST_CHECK_EQUAL(to_dsv(box), expected);
+#endif
}
diff --git a/libs/geometry/test/algorithms/test_for_each.hpp b/libs/geometry/test/algorithms/test_for_each.hpp
index 40c7d1f455..741bd26bb2 100644
--- a/libs/geometry/test/algorithms/test_for_each.hpp
+++ b/libs/geometry/test/algorithms/test_for_each.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -11,6 +11,7 @@
#include <geometry_test_common.hpp>
+#include <boost/config.hpp>
#include <boost/geometry/algorithms/for_each.hpp>
#include <boost/geometry/algorithms/distance.hpp>
@@ -87,9 +88,29 @@ void test_per_point_const(Geometry const& geometry, int expected)
{
typedef typename bg::point_type<Geometry>::type point_type;
+ // Class (functor)
sum_x_functor<point_type> functor;
functor = bg::for_each_point(geometry, functor);
BOOST_CHECK_EQUAL(functor.sum, expected);
+
+
+ // Lambda
+#if !defined(BOOST_NO_CXX11_LAMBDAS)
+
+ typename bg::coordinate_type<point_type>::type sum_x = 0;
+
+ bg::for_each_point
+ (
+ geometry,
+ [&sum_x](point_type const& p)
+ {
+ sum_x += bg::get<0>(p);
+ }
+
+ );
+
+ BOOST_CHECK_EQUAL(sum_x, expected);
+#endif
}
template <typename Geometry>
@@ -97,6 +118,10 @@ void test_per_point_non_const(Geometry& geometry,
std::string const& expected1,
std::string const& expected2)
{
+#if !defined(BOOST_NO_CXX11_LAMBDAS)
+ Geometry copy = geometry;
+#endif
+
typedef typename bg::point_type<Geometry>::type point_type;
// function
@@ -119,6 +144,41 @@ void test_per_point_non_const(Geometry& geometry,
"for_each_point: "
<< " expected " << expected2
<< " got " << bg::wkt(geometry));
+
+#if !defined(BOOST_NO_CXX11_LAMBDAS)
+ // Lambda, both functions above together. Without / with capturing
+
+ geometry = copy;
+ bg::for_each_point
+ (
+ geometry,
+ [](point_type& p)
+ {
+ bg::set<0>(p, bg::get<0>(p) + 100);
+ }
+
+ );
+
+ typename bg::coordinate_type<point_type>::type scale = 100;
+ bg::for_each_point
+ (
+ geometry,
+ [&](point_type& p)
+ {
+ bg::set<1>(p, bg::get<1>(p) * scale);
+ }
+
+ );
+
+ std::ostringstream out3;
+ out3 << bg::wkt(geometry);
+
+ BOOST_CHECK_MESSAGE(out3.str() == expected2,
+ "for_each_point (lambda): "
+ << " expected " << expected2
+ << " got " << bg::wkt(geometry));
+#endif
+
}
diff --git a/libs/geometry/test/algorithms/test_get_turns_ll_invariance.hpp b/libs/geometry/test/algorithms/test_get_turns_ll_invariance.hpp
new file mode 100644
index 0000000000..c0a59c1c46
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_get_turns_ll_invariance.hpp
@@ -0,0 +1,163 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#ifndef BOOST_GEOMETRY_TEST_GET_TURNS_LL_INVARIANCE_HPP
+#define BOOST_GEOMETRY_TEST_GET_TURNS_LL_INVARIANCE_HPP
+
+#include <vector>
+
+#include <boost/geometry/algorithms/reverse.hpp>
+
+#include <boost/geometry/algorithms/detail/relate/turns.hpp>
+
+#include <boost/geometry/algorithms/detail/turns/compare_turns.hpp>
+#include <boost/geometry/algorithms/detail/turns/print_turns.hpp>
+#include <boost/geometry/algorithms/detail/turns/filter_continue_turns.hpp>
+#include <boost/geometry/algorithms/detail/turns/remove_duplicate_turns.hpp>
+
+
+namespace bg_detail = ::boost::geometry::detail;
+namespace bg_turns = bg_detail::turns;
+
+template
+<
+ bool EnableRemoveDuplicateTurns = true,
+ bool EnableDegenerateTurns = true
+>
+class test_get_turns_ll_invariance
+{
+private:
+ struct assign_policy
+ {
+ static bool const include_no_turn = false;
+ static bool const include_degenerate = EnableDegenerateTurns;
+ static bool const include_opposite = false;
+
+ template
+ <
+ typename Info,
+ typename Point1,
+ typename Point2,
+ typename IntersectionInfo,
+ typename DirInfo
+ >
+ static inline void apply(Info& , Point1 const& , Point2 const& ,
+ IntersectionInfo const& , DirInfo const& )
+ {
+ }
+ };
+
+
+
+ template
+ <
+ typename Turns,
+ typename LinearGeometry1,
+ typename LinearGeometry2
+ >
+ static inline void compute_turns(Turns& turns,
+ LinearGeometry1 const& linear1,
+ LinearGeometry2 const& linear2)
+ {
+ turns.clear();
+ bg_detail::relate::turns::get_turns
+ <
+ LinearGeometry1,
+ LinearGeometry2,
+ bg_detail::get_turns::get_turn_info_type
+ <
+ LinearGeometry1,
+ LinearGeometry2,
+ assign_policy
+ >
+ >::apply(turns, linear1, linear2);
+ }
+
+
+
+public:
+ template <typename Linear1, typename Linear2>
+ static inline void apply(Linear1 const& lineargeometry1,
+ Linear2 const& lineargeometry2)
+ {
+ typedef typename bg_detail::relate::turns::get_turns
+ <
+ Linear1, Linear2
+ >::turn_info turn_info;
+
+ typedef std::vector<turn_info> turns_container;
+
+ typedef bg_turns::filter_continue_turns
+ <
+ turns_container, true
+ > filter_continue_turns;
+
+ typedef bg_turns::remove_duplicate_turns
+ <
+ turns_container, EnableRemoveDuplicateTurns
+ > remove_duplicate_turns;
+
+ turns_container turns;
+
+ Linear1 linear1(lineargeometry1);
+ Linear2 linear2(lineargeometry2);
+
+ Linear2 linear2_reverse(linear2);
+ boost::geometry::reverse(linear2_reverse);
+
+ turns_container turns_all, rturns_all;
+ compute_turns(turns_all, linear1, linear2);
+ compute_turns(rturns_all, linear1, linear2_reverse);
+
+ turns_container turns_wo_cont(turns_all);
+ turns_container rturns_wo_cont(rturns_all);
+
+ filter_continue_turns::apply(turns_wo_cont);
+ filter_continue_turns::apply(rturns_wo_cont);
+
+ std::sort(boost::begin(turns_all), boost::end(turns_all),
+ bg_turns::less_seg_fraction_other_op<>());
+
+ std::sort(boost::begin(turns_wo_cont), boost::end(turns_wo_cont),
+ bg_turns::less_seg_fraction_other_op<>());
+
+ std::sort(boost::begin(rturns_all), boost::end(rturns_all),
+ bg_turns::less_seg_fraction_other_op<std::greater<boost::geometry::signed_index_type> >());
+
+ std::sort(boost::begin(rturns_wo_cont), boost::end(rturns_wo_cont),
+ bg_turns::less_seg_fraction_other_op<std::greater<boost::geometry::signed_index_type> >());
+
+ remove_duplicate_turns::apply(turns_all);
+ remove_duplicate_turns::apply(turns_wo_cont);
+ remove_duplicate_turns::apply(rturns_all);
+ remove_duplicate_turns::apply(rturns_wo_cont);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "### ORIGINAL TURNS ###" << std::endl;
+ bg_turns::print_turns(linear1, linear2, turns_all);
+ std::cout << std::endl << std::endl;
+ std::cout << "### ORIGINAL REVERSE TURNS ###" << std::endl;
+ bg_turns::print_turns(linear1, linear2_reverse, rturns_all);
+ std::cout << std::endl << std::endl;
+ std::cout << "### TURNS W/O CONTINUE TURNS ###" << std::endl;
+ bg_turns::print_turns(linear1, linear2, turns_wo_cont);
+ std::cout << std::endl << std::endl;
+ std::cout << "### REVERSE TURNS W/O CONTINUE TURNS ###" << std::endl;
+ bg_turns::print_turns(linear1, linear2_reverse, rturns_wo_cont);
+ std::cout << std::endl << std::endl;
+#endif
+
+ BOOST_ASSERT(boost::size(turns_wo_cont) == boost::size(rturns_wo_cont));
+ }
+};
+
+
+
+#endif // BOOST_GEOMETRY_TEST_GET_TURNS_LL_INVARIANCE_HPP
diff --git a/libs/geometry/test/algorithms/test_intersection.hpp b/libs/geometry/test/algorithms/test_intersection.hpp
index aff527cfda..4a7cc645c5 100644
--- a/libs/geometry/test/algorithms/test_intersection.hpp
+++ b/libs/geometry/test/algorithms/test_intersection.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -13,6 +13,7 @@
#include <iomanip>
#include <boost/foreach.hpp>
+#include <boost/variant/variant.hpp>
#include <boost/geometry/algorithms/intersection.hpp>
#include <boost/geometry/algorithms/area.hpp>
@@ -28,54 +29,27 @@
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
#include <geometry_test_common.hpp>
-
-template <typename OutputType, typename CalculationType, typename G1, typename G2>
-typename bg::default_area_result<G1>::type test_intersection(std::string const& caseid,
- G1 const& g1, G2 const& g2,
- std::size_t expected_count = 0, std::size_t expected_point_count = 0,
- double expected_length_or_area = 0,
- double percentage = 0.0001,
- bool debug = false)
+template <typename G1, typename G2, typename OutputType>
+typename bg::default_area_result<G1>::type
+check_result(
+ std::vector<OutputType> const& intersection_output,
+ std::string const& caseid,
+ std::size_t expected_count = 0, int expected_point_count = 0,
+ double expected_length_or_area = 0,
+ double percentage = 0.0001,
+ bool debug = false)
{
- static const bool is_line = bg::geometry_id<OutputType>::type::value == 2;
-
- if (debug)
- {
- std::cout << std::endl << "case " << caseid << std::endl;
- }
-
-
- typedef typename bg::coordinate_type<G1>::type coordinate_type;
- typedef typename bg::point_type<G1>::type point_type;
-
- typedef bg::strategy_intersection
- <
- typename bg::cs_tag<point_type>::type,
- G1,
- G2,
- point_type,
- CalculationType
- > strategy;
-
- // Check both normal behaviour, and _inserter behaviour
- if (! debug)
- {
- std::vector<OutputType> out;
- bg::intersection(g1, g2, out);
- }
- std::vector<OutputType> clip;
- bg::detail::intersection::intersection_insert<OutputType>(g1, g2, std::back_inserter(clip), strategy());
-
+ bool const is_line = bg::geometry_id<OutputType>::type::value == 2;
typename bg::default_area_result<G1>::type length_or_area = 0;
- std::size_t n = 0;
- for (typename std::vector<OutputType>::iterator it = clip.begin();
- it != clip.end();
+ int n = 0;
+ for (typename std::vector<OutputType>::const_iterator it = intersection_output.begin();
+ it != intersection_output.end();
++it)
{
if (expected_point_count > 0)
@@ -84,7 +58,7 @@ typename bg::default_area_result<G1>::type test_intersection(std::string const&
}
// instead of specialization we check it run-time here
- length_or_area += is_line
+ length_or_area += is_line
? bg::length(*it)
: bg::area(*it);
@@ -94,25 +68,26 @@ typename bg::default_area_result<G1>::type test_intersection(std::string const&
}
}
-
#if ! defined(BOOST_GEOMETRY_NO_BOOST_TEST)
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
if (expected_point_count > 0)
{
- BOOST_CHECK_MESSAGE(n == expected_point_count,
+ BOOST_CHECK_MESSAGE(bg::math::abs(n - expected_point_count) < 3,
"intersection: " << caseid
<< " #points expected: " << expected_point_count
<< " detected: " << n
- << " type: " << string_from_type<coordinate_type>::name()
+ << " type: " << (type_for_assert_message<G1, G2>())
);
}
+#endif
if (expected_count > 0)
{
- BOOST_CHECK_MESSAGE(clip.size() == expected_count,
+ BOOST_CHECK_MESSAGE(intersection_output.size() == expected_count,
"intersection: " << caseid
<< " #outputs expected: " << expected_count
- << " detected: " << clip.size()
- << " type: " << string_from_type<coordinate_type>::name()
+ << " detected: " << intersection_output.size()
+ << " type: " << (type_for_assert_message<G1, G2>())
);
}
@@ -120,9 +95,74 @@ typename bg::default_area_result<G1>::type test_intersection(std::string const&
BOOST_CHECK_CLOSE(detected_length_or_area, expected_length_or_area, percentage);
#endif
+ return length_or_area;
+}
+
+
+template <typename OutputType, typename CalculationType, typename G1, typename G2>
+typename bg::default_area_result<G1>::type test_intersection(std::string const& caseid,
+ G1 const& g1, G2 const& g2,
+ std::size_t expected_count = 0, int expected_point_count = 0,
+ double expected_length_or_area = 0,
+ double percentage = 0.0001,
+ bool debug = false)
+{
+ if (debug)
+ {
+ std::cout << std::endl << "case " << caseid << std::endl;
+ }
+
+ typedef typename bg::point_type<G1>::type point_type;
+
+ if (! debug)
+ {
+ // Check _inserter behaviour with stratey
+ typedef bg::strategy_intersection
+ <
+ typename bg::cs_tag<point_type>::type,
+ G1,
+ G2,
+ point_type,
+ typename bg::rescale_policy_type<point_type>::type,
+ CalculationType
+ > strategy;
+ std::vector<OutputType> clip;
+ bg::detail::intersection::intersection_insert<OutputType>(g1, g2, std::back_inserter(clip), strategy());
+ }
+
+ typename bg::default_area_result<G1>::type length_or_area = 0;
+
+ // Check normal behaviour
+ std::vector<OutputType> intersection_output;
+ bg::intersection(g1, g2, intersection_output);
+
+ check_result<G1, G2>(intersection_output, caseid, expected_count, expected_point_count,
+ expected_length_or_area, percentage, debug);
+
+ // Check variant behaviour
+ intersection_output.clear();
+ bg::intersection(boost::variant<G1>(g1), g2, intersection_output);
+
+ check_result<G1, G2>(intersection_output, caseid, expected_count, expected_point_count,
+ expected_length_or_area, percentage, debug);
+
+ intersection_output.clear();
+ bg::intersection(g1, boost::variant<G2>(g2), intersection_output);
+
+ check_result<G1, G2>(intersection_output, caseid, expected_count, expected_point_count,
+ expected_length_or_area, percentage, debug);
+
+ intersection_output.clear();
+ bg::intersection(boost::variant<G1>(g1), boost::variant<G2>(g2), intersection_output);
+
+ check_result<G1, G2>(intersection_output, caseid, expected_count, expected_point_count,
+ expected_length_or_area, percentage, debug);
#if defined(TEST_WITH_SVG)
{
+ bool const is_line = bg::geometry_id<OutputType>::type::value == 2;
+ typedef typename bg::coordinate_type<G1>::type coordinate_type;
+
bool const ccw =
bg::point_order<G1>::value == bg::counterclockwise
|| bg::point_order<G2>::value == bg::counterclockwise;
@@ -137,6 +177,9 @@ typename bg::default_area_result<G1>::type test_intersection(std::string const&
<< string_from_type<CalculationType>::name()
<< (ccw ? "_ccw" : "")
<< (open ? "_open" : "")
+#if defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ << "_no_rob"
+#endif
<< ".svg";
std::ofstream svg(filename.str().c_str());
@@ -153,8 +196,8 @@ typename bg::default_area_result<G1>::type test_intersection(std::string const&
mapper.map(g2, "fill-opacity:0.3;fill:rgb(51,51,153);"
"stroke:rgb(51,51,153);stroke-width:3");
- for (typename std::vector<OutputType>::const_iterator it = clip.begin();
- it != clip.end(); ++it)
+ for (typename std::vector<OutputType>::const_iterator it = intersection_output.begin();
+ it != intersection_output.end(); ++it)
{
mapper.map(*it, "fill-opacity:0.2;stroke-opacity:0.4;fill:rgb(255,0,0);"
"stroke:rgb(255,0,255);stroke-width:8");
@@ -162,6 +205,7 @@ typename bg::default_area_result<G1>::type test_intersection(std::string const&
}
#endif
+
if (debug)
{
std::cout << "end case " << caseid << std::endl;
@@ -173,7 +217,7 @@ typename bg::default_area_result<G1>::type test_intersection(std::string const&
template <typename OutputType, typename G1, typename G2>
typename bg::default_area_result<G1>::type test_one(std::string const& caseid,
std::string const& wkt1, std::string const& wkt2,
- std::size_t expected_count = 0, std::size_t expected_point_count = 0,
+ std::size_t expected_count = 0, int expected_point_count = 0,
double expected_length_or_area = 0,
double percentage = 0.0001,
bool debug = false)
@@ -197,7 +241,7 @@ typename bg::default_area_result<G1>::type test_one(std::string const& caseid,
template <typename OutputType, typename Areal, typename Linear>
void test_one_lp(std::string const& caseid,
std::string const& wkt_areal, std::string const& wkt_linear,
- std::size_t expected_count = 0, std::size_t expected_point_count = 0,
+ std::size_t expected_count = 0, int expected_point_count = 0,
double expected_length = 0,
double percentage = 0.0001,
bool debug1 = false, bool debug2 = false)
@@ -227,7 +271,7 @@ void test_point_output(std::string const& wkt1, std::string const& wkt2, unsigne
Geometry1 g1;
bg::read_wkt(wkt1, g1);
bg::correct(g1);
-
+
Geometry2 g2;
bg::read_wkt(wkt2, g2);
bg::correct(g2);
diff --git a/libs/geometry/test/algorithms/test_intersection_linear_linear.hpp b/libs/geometry/test/algorithms/test_intersection_linear_linear.hpp
new file mode 100644
index 0000000000..b02aaa35e8
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_intersection_linear_linear.hpp
@@ -0,0 +1,213 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#ifndef BOOST_GEOMETRY_TEST_INTERSECTION_LINEAR_LINEAR_HPP
+#define BOOST_GEOMETRY_TEST_INTERSECTION_LINEAR_LINEAR_HPP
+
+#include "from_wkt.hpp"
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+#include <boost/geometry/geometry.hpp>
+#include "test_set_ops_linear_linear.hpp"
+#include "to_svg.hpp"
+
+
+//==================================================================
+//==================================================================
+// intersection of (linear) geometries
+//==================================================================
+//==================================================================
+
+template
+<
+ typename Geometry1, typename Geometry2,
+ typename MultiLineString
+>
+class test_intersection_of_geometries
+{
+private:
+ static inline void base_test(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiLineString const& mls_int1,
+ MultiLineString const& mls_int2,
+ std::string const& case_id,
+ bool test_vector_and_deque = false)
+ {
+ static bool vector_deque_already_tested = false;
+
+ typedef typename boost::range_value<MultiLineString>::type LineString;
+ typedef std::vector<LineString> linestring_vector;
+ typedef std::deque<LineString> linestring_deque;
+
+ MultiLineString mls_output;
+
+ linestring_vector ls_vector_output;
+ linestring_deque ls_deque_output;
+
+ bg::intersection(geometry1, geometry2, mls_output);
+
+ BOOST_CHECK_MESSAGE( equals::apply(mls_int1, mls_output)
+ || equals::apply(mls_int2, mls_output),
+ "intersection L/L: " << bg::wkt(geometry1)
+ << " " << bg::wkt(geometry2)
+ << " -> Expected: " << bg::wkt(mls_int1)
+ << " or: " << bg::wkt(mls_int2)
+ << " computed: " << bg::wkt(mls_output) );
+
+ set_operation_output("intersection", case_id,
+ geometry1, geometry2, mls_output);
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Geometry #1: " << bg::wkt(geometry1) << std::endl;
+ std::cout << "Geometry #2: " << bg::wkt(geometry2) << std::endl;
+ std::cout << "intersection : " << bg::wkt(mls_output) << std::endl;
+ std::cout << "expected intersection : " << bg::wkt(mls_int1)
+ << std::endl;
+ std::cout << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+
+ if ( !vector_deque_already_tested && test_vector_and_deque )
+ {
+ vector_deque_already_tested = true;
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "Testing with vector and deque as output container..."
+ << std::endl;
+#endif
+ bg::intersection(geometry1, geometry2, ls_vector_output);
+ bg::intersection(geometry1, geometry2, ls_deque_output);
+
+ BOOST_CHECK(multilinestring_equals<false>::apply(mls_int1,
+ ls_vector_output));
+
+ BOOST_CHECK(multilinestring_equals<false>::apply(mls_int1,
+ ls_deque_output));
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Done!" << std::endl << std::endl;
+#endif
+ }
+
+ // check the intersection where the order of the two
+ // geometries is reversed
+ bg::clear(mls_output);
+ bg::intersection(geometry2, geometry1, mls_output);
+
+ BOOST_CHECK_MESSAGE( equals::apply(mls_int1, mls_output)
+ || equals::apply(mls_int2, mls_output),
+ "intersection L/L: " << bg::wkt(geometry1)
+ << " " << bg::wkt(geometry2)
+ << " -> Expected: " << bg::wkt(mls_int1)
+ << " or: " << bg::wkt(mls_int2)
+ << " computed: " << bg::wkt(mls_output) );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Geometry #1: " << bg::wkt(geometry2) << std::endl;
+ std::cout << "Geometry #2: " << bg::wkt(geometry1) << std::endl;
+ std::cout << "intersection : " << bg::wkt(mls_output) << std::endl;
+ std::cout << "expected intersection : " << bg::wkt(mls_int2)
+ << std::endl;
+ std::cout << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+
+ static inline void base_test_all(Geometry1 const& geometry1,
+ Geometry2 const& geometry2)
+ {
+ //typedef typename boost::range_value<MultiLineString>::type LineString;
+ typedef typename bg::point_type<MultiLineString>::type Point;
+ typedef bg::model::multi_point<Point> multi_point;
+
+ MultiLineString mls12_output, mls21_output;
+ multi_point mp12_output, mp21_output;
+
+ bg::intersection(geometry1, geometry2, mls12_output);
+ bg::intersection(geometry1, geometry2, mp12_output);
+ bg::intersection(geometry2, geometry1, mls21_output);
+ bg::intersection(geometry2, geometry1, mp21_output);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "************************************" << std::endl;
+ std::cout << "Geometry #1: " << bg::wkt(geometry1) << std::endl;
+ std::cout << "Geometry #2: " << bg::wkt(geometry2) << std::endl;
+ std::cout << "intersection(1,2) [MLS]: " << bg::wkt(mls12_output)
+ << std::endl;
+ std::cout << "intersection(2,1) [MLS]: " << bg::wkt(mls21_output)
+ << std::endl;
+ std::cout << std::endl;
+ std::cout << "intersection(1,2) [MP]: " << bg::wkt(mp12_output)
+ << std::endl;
+ std::cout << "intersection(2,1) [MP]: " << bg::wkt(mp21_output)
+ << std::endl;
+ std::cout << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+
+
+public:
+ static inline void apply(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiLineString const& mls_int1,
+ MultiLineString const& mls_int2,
+ std::string const& case_id)
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "test case: " << case_id << std::endl;
+ std::stringstream sstr;
+ sstr << "svgs/" << case_id << ".svg";
+#ifdef TEST_WITH_SVG
+ to_svg(geometry1, geometry2, sstr.str());
+#endif
+#endif
+
+ Geometry1 rg1(geometry1);
+ bg::reverse<Geometry1>(rg1);
+
+ Geometry2 rg2(geometry2);
+ bg::reverse<Geometry2>(rg2);
+
+ test_get_turns_ll_invariance<>::apply(geometry1, geometry2);
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl
+ << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
+ << std::endl << std::endl;
+#endif
+ test_get_turns_ll_invariance<>::apply(rg1, geometry2);
+
+
+ base_test(geometry1, geometry2, mls_int1, mls_int2, case_id);
+ // base_test(rg1, rg2, mls_int1, mls_int2);
+ base_test_all(geometry1, geometry2);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+
+
+
+ static inline void apply(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiLineString const& mls_int,
+ std::string const& case_id)
+ {
+ apply(geometry1, geometry2, mls_int, mls_int, case_id);
+ }
+};
+
+
+#endif // BOOST_GEOMETRY_TEST_INTERSECTION_LINEAR_LINEAR_HPP
diff --git a/libs/geometry/test/algorithms/test_intersects.hpp b/libs/geometry/test/algorithms/test_intersects.hpp
index 4f9922a762..7a8af71615 100644
--- a/libs/geometry/test/algorithms/test_intersects.hpp
+++ b/libs/geometry/test/algorithms/test_intersects.hpp
@@ -1,7 +1,9 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
// 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)
@@ -20,6 +22,18 @@
#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/geometry/multi/core/geometry_id.hpp>
+#include <boost/geometry/multi/core/point_order.hpp>
+#include <boost/geometry/multi/core/ring_type.hpp>
+#include <boost/geometry/multi/algorithms/covered_by.hpp>
+#include <boost/geometry/multi/algorithms/detail/point_on_border.hpp>
+#include <boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp>
+#include <boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp>
+#include <boost/geometry/multi/views/detail/range_type.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+#include <boost/geometry/multi/io/wkt/read.hpp>
template <typename Geometry1, typename Geometry2>
void test_geometry(std::string const& wkt1,
@@ -32,12 +46,18 @@ void test_geometry(std::string const& wkt1,
bg::read_wkt(wkt2, geometry2);
bool detected = bg::intersects(geometry1, geometry2);
+ bool detected2 = bg::intersects(geometry2, geometry1);
BOOST_CHECK_MESSAGE(detected == expected,
"intersects: " << wkt1
<< " with " << wkt2
<< " -> Expected: " << expected
<< " detected: " << detected);
+ BOOST_CHECK_MESSAGE(detected2 == expected,
+ "intersects: " << wkt1
+ << " with " << wkt2
+ << " -> Expected: " << expected
+ << " detected: " << detected2);
}
diff --git a/libs/geometry/test/algorithms/test_is_valid.hpp b/libs/geometry/test/algorithms/test_is_valid.hpp
new file mode 100644
index 0000000000..ee750f139a
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_is_valid.hpp
@@ -0,0 +1,407 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_GEOMETRY_TEST_IS_VALID_HPP
+#define BOOST_GEOMETRY_TEST_IS_VALID_HPP
+
+#include <iostream>
+#include <sstream>
+#include <string>
+
+#include <boost/core/ignore_unused.hpp>
+#include <boost/range.hpp>
+#include <boost/variant/variant.hpp>
+
+#include <boost/geometry/core/closure.hpp>
+#include <boost/geometry/core/exterior_ring.hpp>
+#include <boost/geometry/core/interior_rings.hpp>
+#include <boost/geometry/core/point_order.hpp>
+#include <boost/geometry/core/ring_type.hpp>
+#include <boost/geometry/core/tag.hpp>
+#include <boost/geometry/core/tags.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/segment.hpp>
+#include <boost/geometry/geometries/box.hpp>
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/geometries/ring.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+#include <boost/geometry/geometries/multi_point.hpp>
+#include <boost/geometry/geometries/multi_linestring.hpp>
+#include <boost/geometry/geometries/multi_polygon.hpp>
+
+#include <boost/geometry/strategies/strategies.hpp>
+
+#include <boost/geometry/io/wkt/wkt.hpp>
+
+#include <boost/geometry/algorithms/convert.hpp>
+#include <boost/geometry/algorithms/num_points.hpp>
+#include <boost/geometry/algorithms/is_valid.hpp>
+
+#include <boost/geometry/algorithms/detail/check_iterator_range.hpp>
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+#include "pretty_print_geometry.hpp"
+#endif
+
+
+namespace bg = ::boost::geometry;
+
+typedef bg::model::point<double, 2, bg::cs::cartesian> point_type;
+typedef bg::model::segment<point_type> segment_type;
+typedef bg::model::box<point_type> box_type;
+typedef bg::model::linestring<point_type> linestring_type;
+typedef bg::model::multi_linestring<linestring_type> multi_linestring_type;
+typedef bg::model::multi_point<point_type> multi_point_type;
+
+
+//----------------------------------------------------------------------------
+
+
+// returns true if a geometry can be converted to closed
+template
+<
+ typename Geometry,
+ typename Tag = typename bg::tag<Geometry>::type,
+ bg::closure_selector Closure = bg::closure<Geometry>::value
+>
+struct is_convertible_to_closed
+{
+ static inline bool apply(Geometry const&)
+ {
+ return false;
+ }
+};
+
+template <typename Ring>
+struct is_convertible_to_closed<Ring, bg::ring_tag, bg::open>
+{
+ static inline bool apply(Ring const& ring)
+ {
+ return boost::size(ring) > 0;
+ }
+};
+
+template <typename Polygon>
+struct is_convertible_to_closed<Polygon, bg::polygon_tag, bg::open>
+{
+ typedef typename bg::ring_type<Polygon>::type ring_type;
+
+ template <typename InteriorRings>
+ static inline
+ bool apply_to_interior_rings(InteriorRings const& interior_rings)
+ {
+ return bg::detail::check_iterator_range
+ <
+ is_convertible_to_closed<ring_type>
+ >::apply(boost::begin(interior_rings),
+ boost::end(interior_rings));
+ }
+
+ static inline bool apply(Polygon const& polygon)
+ {
+ return boost::size(bg::exterior_ring(polygon)) > 0
+ && apply_to_interior_rings(bg::interior_rings(polygon));
+ }
+};
+
+template <typename MultiPolygon>
+struct is_convertible_to_closed<MultiPolygon, bg::multi_polygon_tag, bg::open>
+{
+ typedef typename boost::range_value<MultiPolygon>::type polygon;
+
+ static inline bool apply(MultiPolygon const& multi_polygon)
+ {
+ return bg::detail::check_iterator_range
+ <
+ is_convertible_to_closed<polygon>,
+ false // do not allow empty multi-polygon
+ >::apply(boost::begin(multi_polygon),
+ boost::end(multi_polygon));
+ }
+};
+
+
+//----------------------------------------------------------------------------
+
+
+// returns true if a geometry can be converted to cw
+template
+<
+ typename Geometry,
+ typename Tag = typename bg::tag<Geometry>::type,
+ bg::order_selector Order = bg::point_order<Geometry>::value
+>
+struct is_convertible_to_cw
+{
+ static inline bool apply(Geometry const&)
+ {
+ return bg::point_order<Geometry>::value == bg::counterclockwise;
+ }
+};
+
+
+//----------------------------------------------------------------------------
+
+
+// returns true if geometry can be converted to polygon
+template
+<
+ typename Geometry,
+ typename Tag = typename bg::tag<Geometry>::type
+>
+struct is_convertible_to_polygon
+{
+ typedef Geometry type;
+ static bool const value = false;
+};
+
+template <typename Ring>
+struct is_convertible_to_polygon<Ring, bg::ring_tag>
+{
+ typedef bg::model::polygon
+ <
+ typename bg::point_type<Ring>::type,
+ bg::point_order<Ring>::value == bg::clockwise,
+ bg::closure<Ring>::value == bg::closed
+ > type;
+
+ static bool const value = true;
+};
+
+
+//----------------------------------------------------------------------------
+
+
+// returns true if geometry can be converted to multi-polygon
+template
+<
+ typename Geometry,
+ typename Tag = typename bg::tag<Geometry>::type
+>
+struct is_convertible_to_multipolygon
+{
+ typedef Geometry type;
+ static bool const value = false;
+};
+
+template <typename Ring>
+struct is_convertible_to_multipolygon<Ring, bg::ring_tag>
+{
+ typedef bg::model::multi_polygon
+ <
+ typename is_convertible_to_polygon<Ring>::type
+ > type;
+
+ static bool const value = true;
+};
+
+template <typename Polygon>
+struct is_convertible_to_multipolygon<Polygon, bg::polygon_tag>
+{
+ typedef bg::model::multi_polygon<Polygon> type;
+ static bool const value = true;
+};
+
+
+//----------------------------------------------------------------------------
+
+
+template <typename ValidityTester>
+struct validity_checker
+{
+ template <typename Geometry>
+ static inline bool apply(Geometry const& geometry,
+ bool expected_result)
+ {
+ bool valid = ValidityTester::apply(geometry);
+ BOOST_CHECK_MESSAGE( valid == expected_result,
+ "Expected: " << expected_result
+ << " detected: " << valid
+ << " wkt: " << bg::wkt(geometry) );
+
+ return valid;
+ }
+};
+
+
+//----------------------------------------------------------------------------
+
+
+struct default_validity_tester
+{
+ template <typename Geometry>
+ static inline bool apply(Geometry const& geometry)
+ {
+ return bg::is_valid(geometry);
+ }
+};
+
+
+template <bool AllowSpikes>
+struct validity_tester_linear
+{
+ template <typename Geometry>
+ static inline bool apply(Geometry const& geometry)
+ {
+ return bg::dispatch::is_valid
+ <
+ Geometry,
+ typename bg::tag<Geometry>::type,
+ AllowSpikes
+ >::apply(geometry);
+ }
+};
+
+
+template <bool AllowDuplicates>
+struct validity_tester_areal
+{
+ template <typename Geometry>
+ static inline bool apply(Geometry const& geometry)
+ {
+ bool const irrelevant = true;
+
+ return bg::dispatch::is_valid
+ <
+ Geometry,
+ typename bg::tag<Geometry>::type,
+ irrelevant,
+ AllowDuplicates
+ >::apply(geometry);
+ }
+};
+
+
+//----------------------------------------------------------------------------
+
+
+template
+<
+ typename ValidityTester,
+ typename Geometry,
+ typename ClosedGeometry = Geometry,
+ typename CWGeometry = Geometry,
+ typename CWClosedGeometry = Geometry,
+ typename Tag = typename bg::tag<Geometry>::type
+>
+struct test_valid
+{
+ template <typename G>
+ static inline void base_test(G const& g, bool expected_result)
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "=======" << std::endl;
+#endif
+
+ bool valid = validity_checker
+ <
+ ValidityTester
+ >::apply(g, expected_result);
+ boost::ignore_unused(valid);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Geometry: ";
+ pretty_print_geometry<G>::apply(std::cout, g);
+ std::cout << std::endl;
+ std::cout << "wkt: " << bg::wkt(g) << std::endl;
+ std::cout << std::boolalpha;
+ std::cout << "is valid? " << valid << std::endl;
+ std::cout << "expected result: " << expected_result << std::endl;
+ std::cout << "=======" << std::endl;
+ std::cout << std::noboolalpha;
+#endif
+ }
+
+ static inline void apply(Geometry const& geometry, bool expected_result)
+ {
+ base_test(geometry, expected_result);
+
+ if ( is_convertible_to_closed<Geometry>::apply(geometry) )
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "...checking closed geometry..."
+ << std::endl;
+#endif
+ ClosedGeometry closed_geometry;
+ bg::convert(geometry, closed_geometry);
+ base_test(closed_geometry, expected_result);
+ }
+ if ( is_convertible_to_cw<Geometry>::apply(geometry) )
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "...checking cw open geometry..."
+ << std::endl;
+#endif
+ CWGeometry cw_geometry;
+ bg::convert(geometry, cw_geometry);
+ base_test(cw_geometry, expected_result);
+ if ( is_convertible_to_closed<CWGeometry>::apply(cw_geometry) )
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "...checking cw closed geometry..."
+ << std::endl;
+#endif
+ CWClosedGeometry cw_closed_geometry;
+ bg::convert(cw_geometry, cw_closed_geometry);
+ base_test(cw_closed_geometry, expected_result);
+ }
+ }
+
+ if ( is_convertible_to_polygon<Geometry>::value )
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "...checking geometry converted to polygon..."
+ << std::endl;
+#endif
+ typename is_convertible_to_polygon<Geometry>::type polygon;
+ bg::convert(geometry, polygon);
+ base_test(polygon, expected_result);
+ }
+
+ if ( is_convertible_to_multipolygon<Geometry>::value )
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "...checking geometry converted to multi-polygon..."
+ << std::endl;
+#endif
+ typename is_convertible_to_multipolygon
+ <
+ Geometry
+ >::type multipolygon;
+
+ bg::convert(geometry, multipolygon);
+ base_test(multipolygon, expected_result);
+ }
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+#endif
+ }
+};
+
+
+//----------------------------------------------------------------------------
+
+
+template <typename VariantGeometry>
+struct test_valid_variant
+{
+ static inline void apply(VariantGeometry const& vg, bool expected_result)
+ {
+ test_valid
+ <
+ default_validity_tester, VariantGeometry
+ >::base_test(vg, expected_result);
+ }
+};
+
+
+#endif // BOOST_GEOMETRY_TEST_IS_VALID_HPP
diff --git a/libs/geometry/test/algorithms/test_length.hpp b/libs/geometry/test/algorithms/test_length.hpp
index 761cbfc054..2cf5404631 100644
--- a/libs/geometry/test/algorithms/test_length.hpp
+++ b/libs/geometry/test/algorithms/test_length.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -14,14 +14,16 @@
#include <boost/geometry/algorithms/length.hpp>
#include <boost/geometry/io/wkt/read.hpp>
#include <boost/geometry/strategies/strategies.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/variant/variant.hpp>
template <typename Geometry>
void test_length(Geometry const& geometry, long double expected_length)
{
- typename bg::default_length_result<Geometry>::type length = bg::length(geometry);
+ BOOST_AUTO(length, bg::length(geometry));
-#ifdef GEOMETRY_TEST_DEBUG
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
std::ostringstream out;
out << typeid(typename bg::coordinate_type<Geometry>::type).name()
<< std::endl
@@ -42,6 +44,9 @@ void test_geometry(std::string const& wkt, double expected_length)
Geometry geometry;
bg::read_wkt(wkt, geometry);
test_length(geometry, expected_length);
+#if !defined(BOOST_GEOMETRY_TEST_DEBUG)
+ test_length(boost::variant<Geometry>(geometry), expected_length);
+#endif
}
template <typename Geometry>
diff --git a/libs/geometry/test/algorithms/test_overlaps.hpp b/libs/geometry/test/algorithms/test_overlaps.hpp
index b4e76a3408..862fe73891 100644
--- a/libs/geometry/test/algorithms/test_overlaps.hpp
+++ b/libs/geometry/test/algorithms/test_overlaps.hpp
@@ -1,4 +1,4 @@
-// Generic Geometry2 Library
+// Generic Geometry2 Library
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -15,8 +15,8 @@
#include <boost/geometry/core/ring_type.hpp>
#include <boost/geometry/algorithms/overlaps.hpp>
#include <boost/geometry/strategies/strategies.hpp>
-#include <boost/geometry/geometries/ring.hpp>
-#include <boost/geometry/geometries/polygon.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/io/wkt/read.hpp>
@@ -38,6 +38,14 @@ void test_geometry(std::string const& wkt1,
<< " with " << wkt2
<< " -> Expected: " << expected
<< " detected: " << detected);
+
+ detected = bg::overlaps(geometry2, geometry1);
+
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "overlaps: " << wkt1
+ << " with " << wkt2
+ << " -> Expected: " << expected
+ << " detected: " << detected);
}
diff --git a/libs/geometry/test/algorithms/test_overlay.hpp b/libs/geometry/test/algorithms/test_overlay.hpp
index 8b7bd0172f..69a0d17a38 100644
--- a/libs/geometry/test/algorithms/test_overlay.hpp
+++ b/libs/geometry/test/algorithms/test_overlay.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
diff --git a/libs/geometry/test/algorithms/test_perimeter.hpp b/libs/geometry/test/algorithms/test_perimeter.hpp
index 0d6a9537aa..2124134e77 100644
--- a/libs/geometry/test/algorithms/test_perimeter.hpp
+++ b/libs/geometry/test/algorithms/test_perimeter.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -10,25 +10,26 @@
#define BOOST_GEOMETRY_TEST_PERIMETER_HPP
+#include <boost/typeof/typeof.hpp>
+#include <boost/variant/variant.hpp>
+
#include <geometry_test_common.hpp>
#include <boost/geometry/algorithms/perimeter.hpp>
#include <boost/geometry/strategies/strategies.hpp>
-
-
#include <boost/geometry/io/wkt/read.hpp>
template <typename Geometry>
void test_perimeter(Geometry const& geometry, long double expected_perimeter)
{
- typename bg::default_distance_result<Geometry>::type perimeter = bg::perimeter(geometry);
+ BOOST_AUTO(perimeter, bg::perimeter(geometry));
-#ifdef GEOMETRY_TEST_DEBUG
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
std::ostringstream out;
out << typeid(typename bg::coordinate_type<Geometry>::type).name()
<< std::endl
- << typeid(typename bg::perimeter_result<Geometry>::type).name()
+ << typeid(typename bg::default_length_result<Geometry>::type).name()
<< std::endl
<< "perimeter : " << bg::perimeter(geometry)
<< std::endl;
@@ -44,7 +45,12 @@ void test_geometry(std::string const& wkt, double expected_perimeter)
{
Geometry geometry;
bg::read_wkt(wkt, geometry);
+ boost::variant<Geometry> v(geometry);
+
test_perimeter(geometry, expected_perimeter);
+#if !defined(BOOST_GEOMETRY_TEST_DEBUG)
+ test_perimeter(v, expected_perimeter);
+#endif
}
template <typename Geometry>
diff --git a/libs/geometry/test/algorithms/test_relate.hpp b/libs/geometry/test/algorithms/test_relate.hpp
index e747a4047f..116d47de9f 100644
--- a/libs/geometry/test/algorithms/test_relate.hpp
+++ b/libs/geometry/test/algorithms/test_relate.hpp
@@ -1,33 +1,121 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
-// Unit Test
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2013, 2014.
+// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates.
-// Copyright (c) 2010-2012 Barend Gehrels, 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)
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
#ifndef BOOST_GEOMETRY_TEST_RELATE_HPP
#define BOOST_GEOMETRY_TEST_RELATE_HPP
-#include <string>
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/core/ring_type.hpp>
+#include <boost/geometry/algorithms/detail/relate/relate.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+
+#include <boost/geometry/io/wkt/read.hpp>
+
+#include <boost/geometry/strategies/cartesian/point_in_box.hpp>
+#include <boost/geometry/strategies/cartesian/box_in_box.hpp>
+#include <boost/geometry/strategies/agnostic/point_in_box_by_side.hpp>
+
+namespace bgdr = bg::detail::relate;
+
+std::string transposed(std::string matrix)
+{
+ std::swap(matrix[1], matrix[3]);
+ std::swap(matrix[2], matrix[6]);
+ std::swap(matrix[5], matrix[7]);
+ return matrix;
+}
+template <typename Geometry1, typename Geometry2>
+void check_geometry(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ std::string const& wkt1,
+ std::string const& wkt2,
+ std::string const& expected)
+{
+ {
+ std::string res_str = bgdr::relate<bgdr::matrix9>(geometry1, geometry2);
+ bool ok = boost::equal(res_str, expected);
+ BOOST_CHECK_MESSAGE(ok,
+ "relate: " << wkt1
+ << " and " << wkt2
+ << " -> Expected: " << expected
+ << " detected: " << res_str);
+ }
-static std::string disjoint_simplex[2] =
- {"POLYGON((0 0,0 2,2 2,0 0))",
- "POLYGON((1 0,3 2,3 0,1 0))"};
+ // changed sequence of geometries - transposed result
+ {
+ std::string res_str = bgdr::relate(geometry2, geometry1, bgdr::matrix9());
+ std::string expected_tr = transposed(expected);
+ bool ok = boost::equal(res_str, expected_tr);
+ BOOST_CHECK_MESSAGE(ok,
+ "relate: " << wkt2
+ << " and " << wkt1
+ << " -> Expected: " << expected_tr
+ << " detected: " << res_str);
+ }
-static std::string touch_simplex[2] =
- {"POLYGON((0 0,0 2,2 2,0 0))",
- "POLYGON((2 2,3 2,3 0,2 2))"};
+ {
+ bool result = bgdr::relate(geometry1, geometry2, bgdr::mask9(expected));
+ // TODO: SHOULD BE !interrupted - CHECK THIS!
+ BOOST_CHECK_MESSAGE(result,
+ "relate: " << wkt1
+ << " and " << wkt2
+ << " -> Expected: " << expected);
+ }
-static std::string overlaps_box[2] =
- {"POLYGON((0 0,0 2,2 2,0 0))",
- "POLYGON((1 1,3 2,3 0,1 1))"};
+ if ( bg::detail::relate::interruption_enabled<Geometry1, Geometry2>::value )
+ {
+ // brake the expected output
+ std::string expected_interrupt = expected;
+ bool changed = false;
+ BOOST_FOREACH(char & c, expected_interrupt)
+ {
+ if ( c >= '0' && c <= '9' )
+ {
+ if ( c == '0' )
+ c = 'F';
+ else
+ --c;
-static std::string within_simplex[2] =
- {"POLYGON((0 0,1 4,4 1,0 0))",
- "POLYGON((1 1,1 3,3 1,1 1))"};
+ changed = true;
+ }
+ }
+ if ( changed )
+ {
+ bool result = bgdr::relate(geometry1, geometry2, bgdr::mask9(expected_interrupt));
+ // TODO: SHOULD BE interrupted - CHECK THIS!
+ BOOST_CHECK_MESSAGE(!result,
+ "relate: " << wkt1
+ << " and " << wkt2
+ << " -> Expected interrupt for:" << expected_interrupt);
+ }
+ }
+}
+template <typename Geometry1, typename Geometry2>
+void test_geometry(std::string const& wkt1,
+ std::string const& wkt2,
+ std::string const& expected)
+{
+ Geometry1 geometry1;
+ Geometry2 geometry2;
+ bg::read_wkt(wkt1, geometry1);
+ bg::read_wkt(wkt2, geometry2);
+ check_geometry(geometry1, geometry2, wkt1, wkt2, expected);
+}
-#endif
+#endif // BOOST_GEOMETRY_TEST_RELATE_HPP
diff --git a/libs/geometry/test/algorithms/test_reverse.hpp b/libs/geometry/test/algorithms/test_reverse.hpp
index 97e537f7b4..1014292510 100644
--- a/libs/geometry/test/algorithms/test_reverse.hpp
+++ b/libs/geometry/test/algorithms/test_reverse.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -13,16 +13,13 @@
#include <geometry_test_common.hpp>
#include <boost/geometry/algorithms/reverse.hpp>
-
#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/variant/variant.hpp>
template <typename Geometry>
-void test_geometry(std::string const& wkt, std::string const& expected)
+void check_geometry(Geometry& geometry, std::string const& wkt, std::string const& expected)
{
- Geometry geometry;
-
- bg::read_wkt(wkt, geometry);
bg::reverse(geometry);
std::ostringstream out;
@@ -34,5 +31,16 @@ void test_geometry(std::string const& wkt, std::string const& expected)
<< " got " << out.str());
}
+template <typename Geometry>
+void test_geometry(std::string const& wkt, std::string const& expected)
+{
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ boost::variant<Geometry> v(geometry);
+
+ check_geometry(geometry, wkt, expected);
+ check_geometry(v, wkt, expected);
+}
+
#endif
diff --git a/libs/geometry/test/algorithms/test_set_ops_linear_linear.hpp b/libs/geometry/test/algorithms/test_set_ops_linear_linear.hpp
new file mode 100644
index 0000000000..c208f1b74d
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_set_ops_linear_linear.hpp
@@ -0,0 +1,310 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#ifndef BOOST_GEOMETRY_TEST_SET_OPS_LINEAR_LINEAR_HPP
+#define BOOST_GEOMETRY_TEST_SET_OPS_LINEAR_LINEAR_HPP
+
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include <algorithm>
+
+#include <boost/core/ignore_unused.hpp>
+#include <boost/range.hpp>
+#include <boost/geometry/policies/compare.hpp>
+#include <boost/geometry/algorithms/equals.hpp>
+#include <boost/geometry/algorithms/reverse.hpp>
+#include <boost/geometry/multi/algorithms/reverse.hpp>
+
+#include "test_get_turns_ll_invariance.hpp"
+
+namespace bg = ::boost::geometry;
+
+
+
+template <typename Linestring1, typename Linestring2>
+struct ls_less
+{
+ typedef typename boost::range_iterator<Linestring1 const>::type Iterator1;
+ typedef typename boost::range_iterator<Linestring2 const>::type Iterator2;
+
+ typedef bg::less<typename bg::point_type<Linestring1>::type> point_less;
+
+ bool operator()(Linestring1 const& linestring1,
+ Linestring2 const& linestring2) const
+ {
+ if ( boost::size(linestring1) != boost::size(linestring2) )
+ return boost::size(linestring1) < boost::size(linestring2);
+
+ Iterator1 it1 = boost::begin(linestring1);
+ Iterator2 it2 = boost::begin(linestring2);
+ point_less less;
+ for (; it1 != boost::end(linestring1); ++it1, ++it2)
+ {
+ if ( less(*it1, *it2) )
+ return true;
+ if ( less(*it2, *it1) )
+ return false;
+ }
+ return false;
+ }
+};
+
+
+template <typename Linestring1, typename Linestring2>
+struct ls_equal
+{
+ bool operator()(Linestring1 const& linestring1,
+ Linestring2 const& linestring2) const
+ {
+ ls_less<Linestring1, Linestring2> less;
+
+ return !less(linestring1, linestring2)
+ && !less(linestring2, linestring1);
+ }
+};
+
+
+template <bool EnableUnique = false>
+struct multilinestring_equals
+{
+ template <typename MultiLinestring, bool Enable>
+ struct unique
+ {
+ typedef typename boost::range_value<MultiLinestring>::type Linestring;
+ typedef ls_equal<Linestring, Linestring> linestring_equal;
+
+ void operator()(MultiLinestring& mls)
+ {
+ mls.erase(std::unique(boost::begin(mls),
+ boost::end(mls),
+ linestring_equal()),
+ boost::end(mls));
+ }
+ };
+
+ template <typename MultiLinestring>
+ struct unique<MultiLinestring, false>
+ {
+ void operator()(MultiLinestring&)
+ {
+ }
+ };
+
+ template <typename MultiLinestring1, typename MultiLinestring2>
+ static inline
+ bool apply(MultiLinestring1 const& multilinestring1,
+ MultiLinestring2 const& multilinestring2)
+ {
+ typedef typename boost::range_iterator
+ <
+ MultiLinestring1 const
+ >::type ls1_iterator;
+
+ typedef typename boost::range_iterator
+ <
+ MultiLinestring2 const
+ >::type ls2_iterator;
+
+ typedef typename boost::range_value<MultiLinestring1>::type Linestring1;
+
+ typedef typename boost::range_value<MultiLinestring2>::type Linestring2;
+
+ typedef typename boost::range_iterator
+ <
+ Linestring1 const
+ >::type point1_iterator;
+
+ typedef typename boost::range_iterator
+ <
+ Linestring2 const
+ >::type point2_iterator;
+
+ typedef ls_less<Linestring1, Linestring2> linestring_less;
+
+ MultiLinestring1 mls1 = multilinestring1;
+ MultiLinestring2 mls2 = multilinestring2;
+
+ std::sort(boost::begin(mls1), boost::end(mls1), linestring_less());
+ std::sort(boost::begin(mls2), boost::end(mls2), linestring_less());
+
+ unique<MultiLinestring1, EnableUnique>()(mls1);
+ unique<MultiLinestring2, EnableUnique>()(mls2);
+
+ if ( boost::size(mls1) != boost::size(mls2) )
+ {
+ return false;
+ }
+
+ ls1_iterator it1 = boost::begin(mls1);
+ ls2_iterator it2 = boost::begin(mls2);
+ for (; it1 != boost::end(mls1); ++it1, ++it2)
+ {
+ if ( boost::size(*it1) != boost::size(*it2) )
+ {
+ return false;
+ }
+ point1_iterator pit1 = boost::begin(*it1);
+ point2_iterator pit2 = boost::begin(*it2);
+ for (; pit1 != boost::end(*it1); ++pit1, ++pit2)
+ {
+ if ( !bg::equals(*pit1, *pit2) )
+ {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+};
+
+
+
+
+class equals
+{
+private:
+ template <typename Linestring, typename OutputIterator>
+ static inline OutputIterator
+ isolated_point_to_segment(Linestring const& linestring, OutputIterator oit)
+ {
+ BOOST_ASSERT( boost::size(linestring) == 1 );
+
+ *oit++ = *boost::begin(linestring);
+ *oit++ = *boost::begin(linestring);
+ return oit;
+ }
+
+
+ template <typename MultiLinestring, typename OutputIterator>
+ static inline OutputIterator
+ convert_isolated_points_to_segments(MultiLinestring const& multilinestring,
+ OutputIterator oit)
+ {
+ BOOST_AUTO_TPL(it, boost::begin(multilinestring));
+
+ for (; it != boost::end(multilinestring); ++it)
+ {
+ if ( boost::size(*it) == 1 )
+ {
+ typename boost::range_value<MultiLinestring>::type linestring;
+ isolated_point_to_segment(*it, std::back_inserter(linestring));
+ *oit++ = linestring;
+ }
+ else
+ {
+ *oit++ = *it;
+ }
+ }
+ return oit;
+ }
+
+
+ template <typename MultiLinestring1, typename MultiLinestring2>
+ static inline bool apply_base(MultiLinestring1 const& multilinestring1,
+ MultiLinestring2 const& multilinestring2)
+ {
+ typedef multilinestring_equals<true> mls_equals;
+
+ if ( mls_equals::apply(multilinestring1, multilinestring2) )
+ {
+ return true;
+ }
+
+ MultiLinestring1 reverse_multilinestring1 = multilinestring1;
+ bg::reverse(reverse_multilinestring1);
+ if ( mls_equals::apply(reverse_multilinestring1, multilinestring2) )
+ {
+ return true;
+ }
+
+ MultiLinestring2 reverse_multilinestring2 = multilinestring2;
+ bg::reverse(reverse_multilinestring2);
+ if ( mls_equals::apply(multilinestring1, reverse_multilinestring2) )
+ {
+ return true;
+ }
+
+ return mls_equals::apply(reverse_multilinestring1,
+ reverse_multilinestring2);
+ }
+
+
+
+public:
+ template <typename MultiLinestring1, typename MultiLinestring2>
+ static inline bool apply(MultiLinestring1 const& multilinestring1,
+ MultiLinestring2 const& multilinestring2)
+ {
+#ifndef BOOST_GEOMETRY_ALLOW_ONE_POINT_LINESTRINGS
+ MultiLinestring1 converted_multilinestring1;
+ convert_isolated_points_to_segments
+ (multilinestring1, std::back_inserter(converted_multilinestring1));
+ MultiLinestring2 converted_multilinestring2;
+ convert_isolated_points_to_segments
+ (multilinestring2, std::back_inserter(converted_multilinestring2));
+ return apply_base(converted_multilinestring1,
+ converted_multilinestring2);
+#else
+ return apply_base(multilinestring1, multilinestring2);
+#endif
+ }
+};
+
+
+
+
+template <typename Output, typename G1, typename G2>
+void set_operation_output(std::string const& set_op_id,
+ std::string const& caseid,
+ G1 const& g1, G2 const& g2,
+ Output const& output)
+{
+ boost::ignore_unused(set_op_id, caseid, g1, g2, output);
+
+#if defined(TEST_WITH_SVG)
+ typedef typename bg::coordinate_type<G1>::type coordinate_type;
+ typedef typename bg::point_type<G1>::type point_type;
+
+ std::ostringstream filename;
+ filename << "svgs/" << set_op_id << "_" << caseid << ".svg";
+
+ std::ofstream svg(filename.str().c_str());
+
+ bg::svg_mapper<point_type> mapper(svg, 500, 500);
+
+ mapper.add(g1);
+ mapper.add(g2);
+
+ mapper.map(g2, "stroke-opacity:1;stroke:rgb(153,204,0);stroke-width:4");
+ mapper.map(g1, "stroke-opacity:1;stroke:rgb(51,51,153);stroke-width:2");
+
+ BOOST_AUTO_TPL(it, output.begin());
+ for (; it != output.end(); ++it)
+ {
+ if ( boost::size(*it) == 2
+ && bg::equals(*boost::begin(*it), *++boost::begin(*it)) )
+ {
+ // draw isolated points (generated by the intersection operation)
+ mapper.map(*boost::begin(*it),
+ "fill:rgb(255,0,255);stroke:rgb(0,0,0);stroke-width:1",
+ 4);
+ }
+ else
+ {
+ mapper.map(*it,
+ "stroke-opacity:0.4;stroke:rgb(255,0,255);stroke-width:8");
+ }
+ }
+#endif
+}
+
+
+#endif // BOOST_GEOMETRY_TEST_SET_OPS_LINEAR_LINEAR_HPP
diff --git a/libs/geometry/test/algorithms/test_set_ops_pl_pl.hpp b/libs/geometry/test/algorithms/test_set_ops_pl_pl.hpp
new file mode 100644
index 0000000000..63f363e520
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_set_ops_pl_pl.hpp
@@ -0,0 +1,257 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#ifndef BOOST_GEOMETRY_TEST_SET_OPS_PL_PL_HPP
+#define BOOST_GEOMETRY_TEST_SET_OPS_PL_PL_HPP
+
+
+#include <boost/geometry/geometry.hpp>
+
+namespace bg = ::boost::geometry;
+
+#include "from_wkt.hpp"
+#include "to_svg.hpp"
+
+#include <algorithm>
+#include <fstream>
+#include <boost/core/ignore_unused.hpp>
+
+#include <boost/geometry/policies/compare.hpp>
+#include <boost/geometry/algorithms/equals.hpp>
+
+#include <boost/geometry/algorithms/union.hpp>
+#include <boost/geometry/algorithms/difference.hpp>
+#include <boost/geometry/algorithms/intersection.hpp>
+#include <boost/geometry/algorithms/sym_difference.hpp>
+
+#include <boost/geometry/algorithms/detail/overlay/overlay_type.hpp>
+
+
+//==================================================================
+//==================================================================
+// svg output
+//==================================================================
+//==================================================================
+
+template <typename Output, typename G1, typename G2>
+void set_operation_output(std::string const& set_op_id,
+ std::string const& caseid,
+ G1 const& g1, G2 const& g2,
+ Output const& output)
+{
+ boost::ignore_unused(set_op_id, caseid, g1, g2, output);
+
+#if defined(TEST_WITH_SVG)
+ typedef typename bg::coordinate_type<G1>::type coordinate_type;
+ typedef typename bg::point_type<G1>::type point_type;
+
+ std::ostringstream filename;
+ filename << "svgs/" << set_op_id << "_" << caseid << ".svg";
+
+ std::ofstream svg(filename.str().c_str());
+
+ bg::svg_mapper<point_type> mapper(svg, 500, 500);
+
+ mapper.add(g1);
+ mapper.add(g2);
+
+ mapper.map(g2, "stroke-opacity:1;stroke:rgb(153,204,0);stroke-width:4");
+ mapper.map(g1, "stroke-opacity:1;stroke:rgb(51,51,153);stroke-width:2");
+
+ BOOST_AUTO_TPL(it, output.begin());
+ for (; it != output.end(); ++it)
+ {
+ mapper.map(*it,
+ "fill:rgb(255,0,255);stroke:rgb(0,0,0);stroke-width:1",
+ 4);
+ }
+#endif
+}
+
+
+//==================================================================
+//==================================================================
+// testing equality of multi-points
+//==================================================================
+//==================================================================
+
+
+struct equals
+{
+ template <typename MultiPoint1, typename MultiPoint2>
+ static inline bool apply(MultiPoint1 const& multipoint1,
+ MultiPoint2 const& multipoint2)
+ {
+ MultiPoint1 mp1(multipoint1);
+ MultiPoint2 mp2(multipoint2);
+
+ std::sort(mp1.begin(), mp1.end(),
+ bg::less<typename bg::point_type<MultiPoint1>::type>());
+ std::sort(mp2.begin(), mp2.end(),
+ bg::less<typename bg::point_type<MultiPoint2>::type>());
+
+ if ( boost::size(mp1) != boost::size(mp2) )
+ {
+ return false;
+ }
+
+ BOOST_AUTO_TPL(it1, boost::begin(mp1));
+ BOOST_AUTO_TPL(it2, boost::begin(mp2));
+ for (; it1 != boost::end(mp1); ++it1, ++it2)
+ {
+ if ( !bg::equals(*it1, *it2) )
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+};
+
+
+
+//==================================================================
+//==================================================================
+// struct for calling the appropriate set op function
+//==================================================================
+//==================================================================
+
+template <bg::overlay_type OverlayType> struct set_op;
+
+
+template<>
+struct set_op<bg::overlay_difference>
+{
+ static inline std::string name() { return "difference"; }
+
+ template <typename Geometry1, typename Geometry2, typename GeometryOut>
+ static inline void apply(Geometry1 const& g1,
+ Geometry2 const& g2,
+ GeometryOut& gout)
+ {
+ bg::difference(g1, g2, gout);
+ }
+};
+
+
+template<>
+struct set_op<bg::overlay_union>
+{
+ static inline std::string name() { return "union"; }
+
+ template <typename Geometry1, typename Geometry2, typename GeometryOut>
+ static inline void apply(Geometry1 const& g1,
+ Geometry2 const& g2,
+ GeometryOut& gout)
+ {
+ bg::union_(g1, g2, gout);
+ }
+};
+
+
+template<>
+struct set_op<bg::overlay_intersection>
+{
+ static inline std::string name() { return "intersection"; }
+
+ template <typename Geometry1, typename Geometry2, typename GeometryOut>
+ static inline void apply(Geometry1 const& g1,
+ Geometry2 const& g2,
+ GeometryOut& gout)
+ {
+ bg::intersection(g1, g2, gout);
+ }
+};
+
+
+
+//==================================================================
+//==================================================================
+// test the set operation of (point-like) geometries
+//==================================================================
+//==================================================================
+
+
+template
+<
+ typename Geometry1,
+ typename Geometry2,
+ typename MultiPoint,
+ bg::overlay_type OverlayType
+>
+class test_set_op_of_pointlike_geometries
+{
+private:
+ template <typename G1, typename G2, typename MP>
+ static inline void base_test(G1 const& geometry1,
+ G2 const& geometry2,
+ MP const& mp_expected,
+ std::string const& case_id)
+ {
+ MultiPoint mp_output;
+
+ set_op<OverlayType>::apply(geometry1, geometry2, mp_output);
+
+ std::string op_name = set_op<OverlayType>::name();
+
+ BOOST_CHECK_MESSAGE( equals::apply(mp_expected, mp_output),
+ op_name << " P/P: " << bg::wkt(geometry1)
+ << " " << bg::wkt(geometry2)
+ << " -> Expected: " << bg::wkt(mp_expected)
+ << " computed: " << bg::wkt(mp_output) );
+
+ set_operation_output(op_name, case_id,
+ geometry1, geometry2, mp_output);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Geometry #1: " << bg::wkt(geometry1) << std::endl;
+ std::cout << "Geometry #2: " << bg::wkt(geometry2) << std::endl;
+ std::cout << "expected " << op_name << " : "
+ << bg::wkt(mp_expected) << std::endl;
+ std::cout << op_name << " : " << bg::wkt(mp_output) << std::endl;
+ std::cout << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+
+
+public:
+ static inline void apply(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiPoint const& mp_expected12,
+ MultiPoint const& mp_expected21,
+ std::string const& case_id)
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "test case: " << case_id << std::endl;
+#endif
+
+ base_test(geometry1, geometry2, mp_expected12, case_id);
+ base_test(geometry2, geometry1, mp_expected21, case_id);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+
+
+ static inline void apply(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiPoint const& mp_expected,
+ std::string const& case_id)
+ {
+ apply(geometry1, geometry2, mp_expected, mp_expected, case_id);
+ }
+};
+
+
+#endif // BOOST_GEOMETRY_TEST_SET_OPS_PL_PL_HPP
diff --git a/libs/geometry/test/algorithms/test_simplify.hpp b/libs/geometry/test/algorithms/test_simplify.hpp
index 30f0998f76..a7b9ce6afc 100644
--- a/libs/geometry/test/algorithms/test_simplify.hpp
+++ b/libs/geometry/test/algorithms/test_simplify.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -11,12 +11,14 @@
// Test-functionality, shared between single and multi tests
+#include <iomanip>
+#include <sstream>
#include <geometry_test_common.hpp>
#include <boost/geometry/algorithms/simplify.hpp>
#include <boost/geometry/algorithms/distance.hpp>
#include <boost/geometry/strategies/strategies.hpp>
-
#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/variant/variant.hpp>
template <typename Tag, typename Geometry>
struct test_inserter
@@ -28,61 +30,108 @@ struct test_inserter
template <typename Geometry>
struct test_inserter<bg::linestring_tag, Geometry>
{
- static void apply(Geometry& geometry, std::string const& expected, double distance)
+ template <typename DistanceMeasure>
+ static void apply(Geometry& geometry,
+ std::string const& expected,
+ DistanceMeasure const& distance)
{
- Geometry simplified;
- bg::detail::simplify::simplify_insert(geometry,
- std::back_inserter(simplified), distance);
-
- std::ostringstream out;
- out << bg::wkt(simplified);
- BOOST_CHECK_EQUAL(out.str(), expected);
+ {
+ Geometry simplified;
+ bg::detail::simplify::simplify_insert(geometry,
+ std::back_inserter(simplified), distance);
+
+ std::ostringstream out;
+ // TODO: instead of comparing the full string (with more or less decimal digits),
+ // we should call something more robust to check the test for example geometry::equals
+ out << std::setprecision(12) << bg::wkt(simplified);
+ BOOST_CHECK_EQUAL(out.str(), expected);
+ }
+
+#ifdef TEST_PULL89
+ {
+ typedef typename bg::point_type<Geometry>::type point_type;
+ typedef typename bg::strategy::distance::detail::projected_point_ax<>::template result_type<point_type, point_type>::type distance_type;
+ typedef bg::strategy::distance::detail::projected_point_ax_less<distance_type> less_comparator;
+
+ distance_type max_distance(distance);
+ less_comparator less(max_distance);
+
+ bg::strategy::simplify::detail::douglas_peucker
+ <
+ point_type,
+ bg::strategy::distance::detail::projected_point_ax<>,
+ less_comparator
+ > strategy(less);
+
+ Geometry simplified;
+ bg::detail::simplify::simplify_insert(geometry,
+ std::back_inserter(simplified), max_distance, strategy);
+
+ std::ostringstream out;
+ // TODO: instead of comparing the full string (with more or less decimal digits),
+ // we should call something more robust to check the test for example geometry::equals
+ out << std::setprecision(12) << bg::wkt(simplified);
+ BOOST_CHECK_EQUAL(out.str(), expected);
+ }
+#endif
}
};
-template <typename Geometry>
-void test_geometry(std::string const& wkt, std::string const& expected, double distance)
+template <typename Geometry, typename DistanceMeasure>
+void check_geometry(Geometry const& geometry,
+ std::string const& expected,
+ DistanceMeasure const& distance)
{
- Geometry geometry, simplified;
-
- // Generate polygon using only integer coordinates and obvious results
- // Polygon is a hexagon, having one extra point (2,1) on a line which should be filtered out.
- bg::read_wkt(wkt, geometry);
+ Geometry simplified;
bg::simplify(geometry, simplified, distance);
- {
- std::ostringstream out;
- out << bg::wkt(simplified);
+ std::ostringstream out;
+ out << std::setprecision(12) << bg::wkt(simplified);
+ BOOST_CHECK_EQUAL(out.str(), expected);
+}
- BOOST_CHECK_MESSAGE(out.str() == expected,
- "simplify: " << bg::wkt(geometry)
- << " expected " << expected
- << " got " << bg::wkt(simplified));
- }
+template <typename Geometry, typename Strategy, typename DistanceMeasure>
+void check_geometry(Geometry const& geometry,
+ std::string const& expected,
+ DistanceMeasure const& distance,
+ Strategy const& strategy)
+{
+ Geometry simplified;
+ bg::simplify(geometry, simplified, distance, strategy);
- // Check using user-specified strategy
+ std::ostringstream out;
+ out << std::setprecision(12) << bg::wkt(simplified);
+ BOOST_CHECK_EQUAL(out.str(), expected);
+}
+
+
+template <typename Geometry, typename DistanceMeasure>
+void test_geometry(std::string const& wkt,
+ std::string const& expected,
+ DistanceMeasure distance)
+{
typedef typename bg::point_type<Geometry>::type point_type;
- typedef typename bg::cs_tag<point_type>::type tag;
- typedef bg::strategy::distance::projected_point
- <
- point_type,
- point_type
- > strategy;
+
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ boost::variant<Geometry> v(geometry);
+
+ // Define default strategy for testing
typedef bg::strategy::simplify::douglas_peucker
<
- point_type,
- strategy
- > simplify_strategy_type;
+ typename bg::point_type<Geometry>::type,
+ bg::strategy::distance::projected_point<double>
+ > dp;
- BOOST_CONCEPT_ASSERT( (bg::concept::SimplifyStrategy<simplify_strategy_type>) );
- bg::simplify(geometry, simplified, distance, simplify_strategy_type());
+ check_geometry(geometry, expected, distance);
+ check_geometry(v, expected, distance);
- {
- std::ostringstream out;
- out << bg::wkt(simplified);
- BOOST_CHECK_EQUAL(out.str(), expected);
- }
+
+ BOOST_CONCEPT_ASSERT( (bg::concept::SimplifyStrategy<dp, point_type>) );
+
+ check_geometry(geometry, expected, distance, dp());
+ check_geometry(v, expected, distance, dp());
// Check inserter (if applicable)
test_inserter
@@ -90,7 +139,44 @@ void test_geometry(std::string const& wkt, std::string const& expected, double d
typename bg::tag<Geometry>::type,
Geometry
>::apply(geometry, expected, distance);
+
+#ifdef TEST_PULL89
+ // Check using non-default less comparator in douglass_peucker
+ typedef typename bg::strategy::distance::detail::projected_point_ax<>::template result_type<point_type, point_type>::type distance_type;
+ typedef bg::strategy::distance::detail::projected_point_ax_less<distance_type> less_comparator;
+
+ distance_type const max_distance(distance);
+ less_comparator const less(max_distance);
+
+ typedef bg::strategy::simplify::detail::douglas_peucker
+ <
+ point_type,
+ bg::strategy::distance::detail::projected_point_ax<>,
+ less_comparator
+ > douglass_peucker_with_less;
+
+ BOOST_CONCEPT_ASSERT( (bg::concept::SimplifyStrategy<douglass_peucker_with_less, point_type>) );
+
+ check_geometry(geometry, expected, distance, douglass_peucker_with_less(less));
+ check_geometry(v, expected, distance, douglass_peucker_with_less(less));
+#endif
}
+template <typename Geometry, typename Strategy, typename DistanceMeasure>
+void test_geometry(std::string const& wkt,
+ std::string const& expected,
+ DistanceMeasure const& distance,
+ Strategy const& strategy)
+{
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ boost::variant<Geometry> v(geometry);
+
+ BOOST_CONCEPT_ASSERT( (bg::concept::SimplifyStrategy<Strategy,
+ typename bg::point_type<Geometry>::type>) );
+
+ check_geometry(geometry, expected, distance, strategy);
+ check_geometry(v, expected, distance, strategy);
+}
#endif
diff --git a/libs/geometry/test/algorithms/test_sym_difference_linear_linear.hpp b/libs/geometry/test/algorithms/test_sym_difference_linear_linear.hpp
new file mode 100644
index 0000000000..001c82bd85
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_sym_difference_linear_linear.hpp
@@ -0,0 +1,163 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#ifndef BOOST_GEOMETRY_TEST_SYM_DIFFERENCE_LINEAR_LINEAR_HPP
+#define BOOST_GEOMETRY_TEST_SYM_DIFFERENCE_LINEAR_LINEAR_HPP
+
+#include "from_wkt.hpp"
+#include <boost/geometry/geometry.hpp>
+#include "test_set_ops_linear_linear.hpp"
+#include "to_svg.hpp"
+
+
+//==================================================================
+//==================================================================
+// symmetric difference of (linear) geometries
+//==================================================================
+//==================================================================
+
+template
+<
+ typename Geometry1, typename Geometry2,
+ typename MultiLineString
+>
+class test_sym_difference_of_geometries
+{
+private:
+ static inline void base_test(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiLineString const& mls_sym_diff,
+ std::string const& case_id,
+ bool test_vector_and_deque = false)
+ {
+ static bool vector_deque_already_tested = false;
+
+ typedef typename boost::range_value<MultiLineString>::type LineString;
+ typedef std::vector<LineString> linestring_vector;
+ typedef std::deque<LineString> linestring_deque;
+
+ MultiLineString mls_output;
+
+ linestring_vector ls_vector_output;
+ linestring_deque ls_deque_output;
+
+ bg::sym_difference(geometry1, geometry2, mls_output);
+
+ BOOST_CHECK_MESSAGE( equals::apply(mls_sym_diff, mls_output),
+ "sym diff L/L: " << bg::wkt(geometry1)
+ << " " << bg::wkt(geometry2)
+ << " -> Expected: " << bg::wkt(mls_sym_diff)
+ << " computed: " << bg::wkt(mls_output) );
+
+
+ set_operation_output("sym_difference", case_id,
+ geometry1, geometry2, mls_output);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Geometry #1: " << bg::wkt(geometry1) << std::endl;
+ std::cout << "Geometry #2: " << bg::wkt(geometry2) << std::endl;
+ std::cout << "sym_difference : " << bg::wkt(mls_output) << std::endl;
+ std::cout << "expected sym_difference : " << bg::wkt(mls_sym_diff)
+ << std::endl;
+ std::cout << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+
+ if ( !vector_deque_already_tested && test_vector_and_deque )
+ {
+ vector_deque_already_tested = true;
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "Testing with vector and deque as output container..."
+ << std::endl;
+#endif
+ bg::sym_difference(geometry1, geometry2, ls_vector_output);
+ bg::sym_difference(geometry1, geometry2, ls_deque_output);
+
+ BOOST_CHECK(multilinestring_equals<false>::apply(mls_sym_diff,
+ ls_vector_output));
+
+ BOOST_CHECK(multilinestring_equals<false>::apply(mls_sym_diff,
+ ls_deque_output));
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Done!" << std::endl << std::endl;
+#endif
+ }
+
+ // check the symmetric difference where the order of the two
+ // geometries is reversed
+ bg::clear(mls_output);
+ bg::sym_difference(geometry2, geometry1, mls_output);
+
+ BOOST_CHECK_MESSAGE( equals::apply(mls_sym_diff, mls_output),
+ "sym diff L/L: " << bg::wkt(geometry2)
+ << " " << bg::wkt(geometry1)
+ << " -> Expected: " << bg::wkt(mls_sym_diff)
+ << " computed: " << bg::wkt(mls_output) );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Geometry #1: " << bg::wkt(geometry2) << std::endl;
+ std::cout << "Geometry #2: " << bg::wkt(geometry1) << std::endl;
+ std::cout << "sym_difference : " << bg::wkt(mls_output) << std::endl;
+ std::cout << "expected sym_difference : " << bg::wkt(mls_sym_diff)
+ << std::endl;
+ std::cout << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+
+
+public:
+ static inline void apply(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiLineString const& mls_sym_diff,
+ std::string const& case_id)
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "test case: " << case_id << std::endl;
+ std::stringstream sstr;
+ sstr << "svgs/" << case_id << ".svg";
+#ifdef TEST_WITH_SVG
+ to_svg(geometry1, geometry2, sstr.str());
+#endif
+#endif
+
+ Geometry1 rg1(geometry1);
+ bg::reverse<Geometry1>(rg1);
+
+ Geometry2 rg2(geometry2);
+ bg::reverse<Geometry2>(rg2);
+
+ test_get_turns_ll_invariance<>::apply(geometry1, geometry2);
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl
+ << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
+ << std::endl << std::endl;
+#endif
+ test_get_turns_ll_invariance<>::apply(rg1, geometry2);
+
+ base_test(geometry1, geometry2, mls_sym_diff, case_id, true);
+ // base_test(geometry1, rg2, mls_sym_diff);
+ // base_test(rg1, geometry2, mls_sym_diff);
+ base_test(rg1, rg2, mls_sym_diff, case_id);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+};
+
+
+#endif // BOOST_GEOMETRY_TEST_SYM_DIFFERENCE_LINEAR_LINEAR_HPP
diff --git a/libs/geometry/test/algorithms/test_touches.hpp b/libs/geometry/test/algorithms/test_touches.hpp
index aa88ea96d0..60df672c5a 100644
--- a/libs/geometry/test/algorithms/test_touches.hpp
+++ b/libs/geometry/test/algorithms/test_touches.hpp
@@ -1,7 +1,11 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2013.
+// Modifications copyright (c) 2013, Oracle and/or its affiliates.
+
// 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)
@@ -15,11 +19,35 @@
#include <boost/geometry/core/ring_type.hpp>
#include <boost/geometry/algorithms/touches.hpp>
#include <boost/geometry/strategies/strategies.hpp>
-#include <boost/geometry/geometries/ring.hpp>
-#include <boost/geometry/geometries/polygon.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/variant/variant.hpp>
+
+template <typename Geometry1, typename Geometry2>
+void check_touches(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ std::string const& wkt1,
+ std::string const& wkt2,
+ bool expected)
+{
+ bool detected = bg::touches(geometry1, geometry2);
+
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "touches: " << wkt1
+ << " with " << wkt2
+ << " -> Expected: " << expected
+ << " detected: " << detected);
+ detected = bg::touches(geometry2, geometry1);
+
+ BOOST_CHECK_MESSAGE(detected == expected,
+ "touches: " << wkt2
+ << " with " << wkt1
+ << " -> Expected: " << expected
+ << " detected: " << detected);
+}
template <typename Geometry1, typename Geometry2>
void test_touches(std::string const& wkt1,
@@ -31,23 +59,21 @@ void test_touches(std::string const& wkt1,
bg::read_wkt(wkt1, geometry1);
bg::read_wkt(wkt2, geometry2);
- bool detected = bg::touches(geometry1, geometry2);
+ boost::variant<Geometry1> v1(geometry1);
+ boost::variant<Geometry2> v2(geometry2);
- BOOST_CHECK_MESSAGE(detected == expected,
- "touches: " << wkt1
- << " with " << wkt2
- << " -> Expected: " << expected
- << " detected: " << detected);
+ check_touches(geometry1, geometry2, wkt1, wkt2, expected);
+ check_touches(v1, geometry2, wkt1, wkt2, expected);
+ check_touches(geometry1, v2, wkt1, wkt2, expected);
+ check_touches(v1, v2, wkt1, wkt2, expected);
}
template <typename Geometry>
-void test_self_touches(std::string const& wkt, bool expected)
+void check_self_touches(Geometry const& geometry,
+ std::string const& wkt,
+ bool expected)
{
- Geometry geometry;
-
- bg::read_wkt(wkt, geometry);
-
bool detected = bg::touches(geometry);
BOOST_CHECK_MESSAGE(detected == expected,
@@ -56,6 +82,17 @@ void test_self_touches(std::string const& wkt, bool expected)
<< " detected: " << detected);
}
+template <typename Geometry>
+void test_self_touches(std::string const& wkt, bool expected)
+{
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ boost::variant<Geometry> v(geometry);
+
+ check_self_touches(geometry, wkt, expected);
+ check_self_touches(v, wkt, expected);
+}
+
#endif
diff --git a/libs/geometry/test/algorithms/test_union.hpp b/libs/geometry/test/algorithms/test_union.hpp
index ec4b0d10cb..2c1868ef2f 100644
--- a/libs/geometry/test/algorithms/test_union.hpp
+++ b/libs/geometry/test/algorithms/test_union.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -13,6 +13,7 @@
#include <geometry_test_common.hpp>
+#include <boost/core/ignore_unused.hpp>
#include <boost/range/algorithm/copy.hpp>
#include <boost/geometry/algorithms/union.hpp>
@@ -30,22 +31,29 @@
#if defined(TEST_WITH_SVG)
-# include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+# include <boost/geometry/io/svg/svg_mapper.hpp>
#endif
template <typename OutputType, typename G1, typename G2>
void test_union(std::string const& caseid, G1 const& g1, G2 const& g2,
- std::size_t expected_count, std::size_t expected_hole_count,
+ int expected_count, int expected_hole_count,
int expected_point_count, double expected_area,
double percentage)
{
typedef typename bg::coordinate_type<G1>::type coordinate_type;
+ boost::ignore_unused<coordinate_type>();
+
std::vector<OutputType> clip;
+
+#if defined(BOOST_GEOMETRY_DEBUG_ROBUSTNESS)
+ std::cout << "*** UNION " << caseid << std::endl;
+#endif
+
bg::union_(g1, g2, clip);
- typename bg::default_area_result<G1>::type area = 0;
+ typename bg::default_area_result<OutputType>::type area = 0;
std::size_t n = 0;
std::size_t holes = 0;
for (typename std::vector<OutputType>::iterator it = clip.begin();
@@ -56,6 +64,7 @@ void test_union(std::string const& caseid, G1 const& g1, G2 const& g2,
n += bg::num_points(*it, true);
}
+#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
{
// Test inserter functionality
// Test if inserter returns output-iterator (using Boost.Range copy)
@@ -63,7 +72,7 @@ void test_union(std::string const& caseid, G1 const& g1, G2 const& g2,
array_with_one_empty_geometry.push_back(OutputType());
boost::copy(array_with_one_empty_geometry, bg::detail::union_::union_insert<OutputType>(g1, g2, std::back_inserter(inserted)));
- typename bg::default_area_result<G1>::type area_inserted = 0;
+ typename bg::default_area_result<OutputType>::type area_inserted = 0;
int index = 0;
for (typename std::vector<OutputType>::iterator it = inserted.begin();
it != inserted.end();
@@ -78,30 +87,42 @@ void test_union(std::string const& caseid, G1 const& g1, G2 const& g2,
BOOST_CHECK_EQUAL(boost::size(clip), boost::size(inserted) - 1);
BOOST_CHECK_CLOSE(area_inserted, expected_area, percentage);
}
+#endif
- /***
- std::cout << "case: " << caseid
- << " n: " << n
+#if defined(BOOST_GEOMETRY_DEBUG_ROBUSTNESS)
+ std::cout << "*** case: " << caseid
<< " area: " << area
+ << " points: " << n
<< " polygons: " << boost::size(clip)
<< " holes: " << holes
<< std::endl;
- ***/
+#endif
- if (expected_point_count >= 0)
- {
- BOOST_CHECK_MESSAGE(n == std::size_t(expected_point_count),
- "union: " << caseid
- << " #points expected: " << expected_point_count
- << " detected: " << n
- << " type: " << string_from_type<coordinate_type>::name()
- );
- }
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ BOOST_CHECK_MESSAGE(expected_point_count < 0 || std::abs(int(n) - expected_point_count) < 3,
+ "union: " << caseid
+ << " #points expected: " << expected_point_count
+ << " detected: " << n
+ << " type: " << (type_for_assert_message<G1, G2>())
+ );
+#endif
+
+ BOOST_CHECK_MESSAGE(expected_count < 0 || int(clip.size()) == expected_count,
+ "union: " << caseid
+ << " #clips expected: " << expected_count
+ << " detected: " << clip.size()
+ << " type: " << (type_for_assert_message<G1, G2>())
+ );
+
+ BOOST_CHECK_MESSAGE(expected_hole_count < 0 || int(holes) == expected_hole_count,
+ "union: " << caseid
+ << " #holes expected: " << expected_hole_count
+ << " detected: " << holes
+ << " type: " << (type_for_assert_message<G1, G2>())
+ );
- BOOST_CHECK_EQUAL(clip.size(), expected_count);
- BOOST_CHECK_EQUAL(holes, expected_hole_count);
BOOST_CHECK_CLOSE(area, expected_area, percentage);
#if defined(TEST_WITH_SVG)
@@ -119,6 +140,9 @@ void test_union(std::string const& caseid, G1 const& g1, G2 const& g2,
<< string_from_type<coordinate_type>::name()
<< (ccw ? "_ccw" : "")
<< (open ? "_open" : "")
+#if defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ << "_no_rob"
+#endif
<< ".svg";
std::ofstream svg(filename.str().c_str());
@@ -150,7 +174,7 @@ void test_union(std::string const& caseid, G1 const& g1, G2 const& g2,
template <typename OutputType, typename G1, typename G2>
void test_one(std::string const& caseid, std::string const& wkt1, std::string const& wkt2,
- std::size_t expected_count, std::size_t expected_hole_count,
+ int expected_count, int expected_hole_count,
int expected_point_count, double expected_area,
double percentage = 0.001)
{
diff --git a/libs/geometry/test/algorithms/test_union_linear_linear.hpp b/libs/geometry/test/algorithms/test_union_linear_linear.hpp
new file mode 100644
index 0000000000..c106a51c84
--- /dev/null
+++ b/libs/geometry/test/algorithms/test_union_linear_linear.hpp
@@ -0,0 +1,171 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#ifndef BOOST_GEOMETRY_TEST_UNION_LINEAR_LINEAR_HPP
+#define BOOST_GEOMETRY_TEST_UNION_LINEAR_LINEAR_HPP
+
+#include "from_wkt.hpp"
+#include <boost/geometry/geometry.hpp>
+#include "test_set_ops_linear_linear.hpp"
+#include "to_svg.hpp"
+
+
+//==================================================================
+//==================================================================
+// union of (linear) geometries
+//==================================================================
+//==================================================================
+
+template
+<
+ typename Geometry1, typename Geometry2,
+ typename MultiLineString
+>
+class test_union_of_geometries
+{
+private:
+ static inline void base_test(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiLineString const& mls_union1,
+ MultiLineString const& mls_union2,
+ std::string const& case_id,
+ bool test_vector_and_deque = false)
+ {
+ static bool vector_deque_already_tested = false;
+
+ typedef typename boost::range_value<MultiLineString>::type LineString;
+ typedef std::vector<LineString> linestring_vector;
+ typedef std::deque<LineString> linestring_deque;
+
+ MultiLineString mls_output;
+
+ linestring_vector ls_vector_output;
+ linestring_deque ls_deque_output;
+
+ bg::union_(geometry1, geometry2, mls_output);
+
+ BOOST_CHECK_MESSAGE( equals::apply(mls_union1, mls_output),
+ "union L/L: " << bg::wkt(geometry1)
+ << " " << bg::wkt(geometry2)
+ << " -> Expected: " << bg::wkt(mls_union1)
+ << " computed: " << bg::wkt(mls_output) );
+
+ set_operation_output("union", case_id,
+ geometry1, geometry2, mls_output);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Geometry #1: " << bg::wkt(geometry1) << std::endl;
+ std::cout << "Geometry #2: " << bg::wkt(geometry2) << std::endl;
+ std::cout << "union : " << bg::wkt(mls_output) << std::endl;
+ std::cout << "expected union : " << bg::wkt(mls_union1)
+ << std::endl;
+ std::cout << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+
+ if ( !vector_deque_already_tested && test_vector_and_deque )
+ {
+ vector_deque_already_tested = true;
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "Testing with vector and deque as output container..."
+ << std::endl;
+#endif
+ bg::union_(geometry1, geometry2, ls_vector_output);
+ bg::union_(geometry1, geometry2, ls_deque_output);
+
+ BOOST_CHECK(multilinestring_equals<false>::apply(mls_union1,
+ ls_vector_output));
+
+ BOOST_CHECK(multilinestring_equals<false>::apply(mls_union1,
+ ls_deque_output));
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Done!" << std::endl << std::endl;
+#endif
+ }
+
+ // check the symmetric difference where the order of the two
+ // geometries is reversed
+ bg::clear(mls_output);
+ bg::union_(geometry2, geometry1, mls_output);
+
+ BOOST_CHECK_MESSAGE( equals::apply(mls_union2, mls_output),
+ "union L/L: " << bg::wkt(geometry2)
+ << " " << bg::wkt(geometry1)
+ << " -> Expected: " << bg::wkt(mls_union2)
+ << " computed: " << bg::wkt(mls_output) );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "Geometry #1: " << bg::wkt(geometry2) << std::endl;
+ std::cout << "Geometry #2: " << bg::wkt(geometry1) << std::endl;
+ std::cout << "union : " << bg::wkt(mls_output) << std::endl;
+ std::cout << "expected union : " << bg::wkt(mls_union2)
+ << std::endl;
+ std::cout << std::endl;
+ std::cout << "************************************" << std::endl;
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+
+
+public:
+ static inline void apply(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiLineString const& mls_union1,
+ MultiLineString const& mls_union2,
+ std::string const& case_id)
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "test case: " << case_id << std::endl;
+ std::stringstream sstr;
+ sstr << "svgs/" << case_id << ".svg";
+ to_svg(geometry1, geometry2, sstr.str());
+#endif
+
+ Geometry1 rg1(geometry1);
+ bg::reverse<Geometry1>(rg1);
+
+ Geometry2 rg2(geometry2);
+ bg::reverse<Geometry2>(rg2);
+
+ test_get_turns_ll_invariance<>::apply(geometry1, geometry2);
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl
+ << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
+ << std::endl << std::endl;
+#endif
+ test_get_turns_ll_invariance<>::apply(rg1, geometry2);
+
+ base_test(geometry1, geometry2, mls_union1, mls_union2, case_id, true);
+ // base_test(geometry1, rg2, mls_sym_diff);
+ // base_test(rg1, geometry2, mls_sym_diff);
+ base_test(rg1, rg2, mls_union1, mls_union2, case_id);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+
+
+ static inline void apply(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ MultiLineString const& mls_union,
+ std::string const& case_id)
+ {
+ apply(geometry1, geometry2, mls_union, mls_union, case_id);
+ }
+};
+
+
+#endif // BOOST_GEOMETRY_TEST_UNION1_HPP
diff --git a/libs/geometry/test/algorithms/test_unique.hpp b/libs/geometry/test/algorithms/test_unique.hpp
index 09d4981afa..be9d235652 100644
--- a/libs/geometry/test/algorithms/test_unique.hpp
+++ b/libs/geometry/test/algorithms/test_unique.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
diff --git a/libs/geometry/test/algorithms/test_within.hpp b/libs/geometry/test/algorithms/test_within.hpp
index bc3f9958dd..da402a07c8 100644
--- a/libs/geometry/test/algorithms/test_within.hpp
+++ b/libs/geometry/test/algorithms/test_within.hpp
@@ -1,20 +1,28 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
// 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)
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
#ifndef BOOST_GEOMETRY_TEST_WITHIN_HPP
#define BOOST_GEOMETRY_TEST_WITHIN_HPP
+#include <boost/variant/variant.hpp>
+
#include <geometry_test_common.hpp>
#include <boost/geometry/core/ring_type.hpp>
-#include <boost/geometry/algorithms/within.hpp>
+
#include <boost/geometry/strategies/strategies.hpp>
#include <boost/geometry/geometries/ring.hpp>
#include <boost/geometry/geometries/polygon.hpp>
@@ -23,19 +31,24 @@
#include <boost/geometry/strategies/cartesian/point_in_box.hpp>
#include <boost/geometry/strategies/cartesian/box_in_box.hpp>
+#include <boost/geometry/strategies/agnostic/point_in_point.hpp>
#include <boost/geometry/strategies/agnostic/point_in_box_by_side.hpp>
+#include <boost/geometry/strategies/agnostic/point_in_poly_winding.hpp>
+#include <boost/geometry/strategies/agnostic/relate.hpp>
+
+#include <boost/geometry/algorithms/within.hpp>
+#include <boost/geometry/multi/algorithms/covered_by.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/io/wkt/read.hpp>
template <typename Geometry1, typename Geometry2>
-void test_geometry(std::string const& wkt1,
- std::string const& wkt2, bool expected)
+void check_geometry(Geometry1 const& geometry1,
+ Geometry2 const& geometry2,
+ std::string const& wkt1,
+ std::string const& wkt2,
+ bool expected)
{
- Geometry1 geometry1;
- Geometry2 geometry2;
-
- bg::read_wkt(wkt1, geometry1);
- bg::read_wkt(wkt2, geometry2);
-
bool detected = bg::within(geometry1, geometry2);
BOOST_CHECK_MESSAGE(detected == expected,
@@ -45,7 +58,22 @@ void test_geometry(std::string const& wkt1,
<< " detected: " << detected);
}
+template <typename Geometry1, typename Geometry2>
+void test_geometry(std::string const& wkt1,
+ std::string const& wkt2, bool expected)
+{
+ Geometry1 geometry1;
+ Geometry2 geometry2;
+ bg::read_wkt(wkt1, geometry1);
+ bg::read_wkt(wkt2, geometry2);
+ boost::variant<Geometry1> v1(geometry1);
+ boost::variant<Geometry2> v2(geometry2);
+ check_geometry(geometry1, geometry2, wkt1, wkt2, expected);
+ check_geometry(v1, geometry2, wkt1, wkt2, expected);
+ check_geometry(geometry1, v2, wkt1, wkt2, expected);
+ check_geometry(v1, v2, wkt1, wkt2, expected);
+}
template <typename Point, bool Clockwise, bool Closed>
void test_ordered_ring(std::string const& wkt_point,
diff --git a/libs/geometry/test/algorithms/touches.cpp b/libs/geometry/test/algorithms/touches.cpp
index 84430d527e..451233ef3d 100644
--- a/libs/geometry/test/algorithms/touches.cpp
+++ b/libs/geometry/test/algorithms/touches.cpp
@@ -1,22 +1,27 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
//
// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2013, 2014.
+// Modifications copyright (c) 2013, 2014, Oracle and/or its affiliates.
+
// 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)
-#include <algorithms/test_touches.hpp>
-
-
-#include <boost/geometry/geometries/geometries.hpp>
-#include <boost/geometry/geometries/point_xy.hpp>
-
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+#include <algorithms/test_touches.hpp>
template <typename P>
void test_all()
{
+ typedef bg::model::box<P> box;
+ typedef bg::model::ring<P> ring;
typedef bg::model::polygon<P> polygon;
+ typedef bg::model::linestring<P> linestring;
+ typedef bg::model::multi_polygon<polygon> mpolygon;
+ typedef bg::model::multi_linestring<linestring> mlinestring;
// Just a normal polygon
test_self_touches<polygon>("POLYGON((0 0,0 4,1.5 2.5,2.5 1.5,4 0,0 0))", false);
@@ -33,7 +38,7 @@ void test_all()
// Touching at corner
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
"POLYGON((100 100,100 200,200 200, 200 100,100 100))",
true
);
@@ -41,7 +46,7 @@ void test_all()
// Intersecting at corner
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,101 101,100 0,0 0))",
+ "POLYGON((0 0,0 100,101 101,100 0,0 0))",
"POLYGON((100 100,100 200,200 200, 200 100,100 100))",
false
);
@@ -49,7 +54,7 @@ void test_all()
// Touching at side (interior of a segment)
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
"POLYGON((200 0,100 50,200 100,200 0))",
true
);
@@ -57,7 +62,7 @@ void test_all()
// Touching at side (partly collinear)
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
"POLYGON((200 20,100 20,100 80,200 80,200 20))",
true
);
@@ -65,7 +70,7 @@ void test_all()
// Completely equal
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
"POLYGON((0 0,0 100,100 100,100 0,0 0))",
false
);
@@ -73,7 +78,7 @@ void test_all()
// Spatially equal
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
"POLYGON((0 0,0 100,100 100,100 80,100 20,100 0,0 0))",
false
);
@@ -81,16 +86,16 @@ void test_all()
// Spatially equal (without equal segments)
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
"POLYGON((0 0,0 50,0 100,50 100,100 100,100 50,100 0,50 0,0 0))",
false
);
-
+
// Touching at side (opposite equal)
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
"POLYGON((200 0,100 0,100 100,200 100,200 0))",
true
);
@@ -98,14 +103,14 @@ void test_all()
// Touching at side (opposite equal - but with real "equal" turning point)
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,100 100,100 80,100 20,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 80,100 20,100 0,0 0))",
"POLYGON((200 0,100 0,100 20,100 80,100 100,200 100,200 0))",
true
);
// First partly collinear to side, than overlapping
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
"POLYGON((200 20,100 20,100 50,50 50,50 80,100 80,200 80,200 20))",
false
);
@@ -113,7 +118,7 @@ void test_all()
// Touching interior (= no touch)
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+ "POLYGON((0 0,0 100,100 100,100 0,0 0))",
"POLYGON((20 20,20 80,100 50,20 20))",
false
);
@@ -121,20 +126,105 @@ void test_all()
// Fitting in hole
test_touches<polygon, polygon>
(
- "POLYGON((0 0,0 100,100 100,100 0,0 0),(40 40,60 40,60 60,40 60,40 40))",
+ "POLYGON((0 0,0 100,100 100,100 0,0 0),(40 40,60 40,60 60,40 60,40 40))",
"POLYGON((40 40,40 60,60 60,60 40,40 40))",
true
);
+ // Point-Polygon
+ test_touches<P, ring>("POINT(40 50)", "POLYGON((40 40,40 60,60 60,60 40,40 40))", true);
+ test_touches<P, polygon>("POINT(40 50)", "POLYGON((40 40,40 60,60 60,60 40,40 40))", true);
+ test_touches<P, polygon>("POINT(60 60)", "POLYGON((40 40,40 60,60 60,60 40,40 40))", true);
+ test_touches<P, polygon>("POINT(50 50)", "POLYGON((40 40,40 60,60 60,60 40,40 40))", false);
+ test_touches<P, polygon>("POINT(30 50)", "POLYGON((40 40,40 60,60 60,60 40,40 40))", false);
+
+ // Point-MultiPolygon
+ test_touches<P, mpolygon>("POINT(40 50)", "MULTIPOLYGON(((40 40,40 60,60 60,60 40,40 40)),((0 0,0 10,10 10,10 0)))", true);
+
+ // Point-Linestring
+ test_touches<P, linestring>("POINT(0 0)", "LINESTRING(0 0, 2 2, 10 2)", true);
+ test_touches<P, linestring>("POINT(2 2)", "LINESTRING(0 0, 2 2, 10 2)", false);
+ test_touches<P, linestring>("POINT(1 1)", "LINESTRING(0 0, 2 2, 10 2)", false);
+ test_touches<P, linestring>("POINT(5 5)", "LINESTRING(0 0, 2 2, 10 2)", false);
+
+ // Point-MultiLinestring
+ test_touches<P, mlinestring>("POINT(0 0)", "MULTILINESTRING((0 0, 2 2, 10 2),(5 5, 6 6))", true);
+ test_touches<P, mlinestring>("POINT(0 0)", "MULTILINESTRING((0 0, 2 2, 10 2),(0 0, 6 6))", false);
+
+ // Linestring-Linestring
+ test_touches<linestring, linestring>("LINESTRING(0 0,2 0)", "LINESTRING(0 0,0 2)", true);
+ test_touches<linestring, linestring>("LINESTRING(0 0,2 0)", "LINESTRING(2 0,2 2)", true);
+ test_touches<linestring, linestring>("LINESTRING(0 0,2 0)", "LINESTRING(0 2,0 0)", true);
+ test_touches<linestring, linestring>("LINESTRING(0 0,2 0)", "LINESTRING(2 2,2 0)", true);
+ test_touches<linestring, linestring>("LINESTRING(2 0,0 0)", "LINESTRING(0 0,0 2)", true);
+ test_touches<linestring, linestring>("LINESTRING(2 0,0 0)", "LINESTRING(2 0,2 2)", true);
+ test_touches<linestring, linestring>("LINESTRING(2 0,0 0)", "LINESTRING(0 2,0 0)", true);
+ test_touches<linestring, linestring>("LINESTRING(2 0,0 0)", "LINESTRING(2 2,2 0)", true);
+ test_touches<linestring, linestring>("LINESTRING(0 0,2 0)", "LINESTRING(1 0,1 1)", true);
+ test_touches<linestring, linestring>("LINESTRING(0 0,2 0)", "LINESTRING(1 1,1 0)", true);
+ test_touches<linestring, linestring>("LINESTRING(2 0,0 0)", "LINESTRING(1 0,1 1)", true);
+ test_touches<linestring, linestring>("LINESTRING(2 0,0 0)", "LINESTRING(1 1,1 0)", true);
+
+ test_touches<linestring, linestring>("LINESTRING(0 0,10 0)", "LINESTRING(0 0,5 5,10 0)", true);
+ test_touches<linestring, linestring>("LINESTRING(0 0,10 10)", "LINESTRING(0 0,0 5,10 5)", false);
+
+ test_touches<linestring, linestring>("LINESTRING(0 5,5 6,10 5)", "LINESTRING(0 7,5 6,10 7)", false);
+ test_touches<linestring, linestring>("LINESTRING(0 5,5 6,10 5)", "LINESTRING(10 7,5 6,0 7)", false);
+ test_touches<linestring, linestring>("LINESTRING(10 5,5 6,0 5)", "LINESTRING(0 7,5 6,10 7)", false);
+ test_touches<linestring, linestring>("LINESTRING(10 5,5 6,0 5)", "LINESTRING(10 7,5 6,0 7)", false);
+
+ test_touches<linestring, linestring>("LINESTRING(0 0,1 1,2 2)", "LINESTRING(2 0,2 2,1 2,1 1)", true);
+ test_touches<linestring, linestring>("LINESTRING(2 2,1 1,0 0)", "LINESTRING(2 0,2 2,1 2,1 1)", true);
+ test_touches<linestring, linestring>("LINESTRING(0 0,1 1,2 2)", "LINESTRING(1 1,1 2,2 2,2 0)", true);
+ test_touches<linestring, linestring>("LINESTRING(2 2,1 1,0 0)", "LINESTRING(1 1,1 2,2 2,2 0)", true);
+
+ test_touches<linestring, linestring>("LINESTRING(0 0,1 1,0 1)", "LINESTRING(1 1,2 2,1 2,1 1)", false);
+
+ test_touches<linestring, mlinestring>("LINESTRING(0 0,1 1,0 1)", "MULTILINESTRING((1 1,2 2),(1 2,1 1))", false);
+
+ //Linestring-Polygon
+ test_touches<linestring, polygon>("LINESTRING(10 0,15 5,10 10,5 15,5 10,0 10,5 15,5 10)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", true);
+ test_touches<linestring, polygon>("LINESTRING(5 10,5 15,0 10,5 10,5 15,10 10,15 5,10 0)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", true);
+ test_touches<linestring, polygon>("LINESTRING(5 10,5 15,0 10,5 10,5 15,10 10,5 5,10 0)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", false);
+ test_touches<linestring, ring>("LINESTRING(0 15,5 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", false);
+ test_touches<linestring, polygon>("LINESTRING(0 15,5 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", false);
+ test_touches<linestring, polygon>("LINESTRING(0 15,5 10,5 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", false);
+ test_touches<linestring, polygon>("LINESTRING(10 15,5 10,0 5)", "POLYGON((0 0,0 10,10 10,10 0,0 0))", false);
+
+ test_touches<linestring, polygon>("LINESTRING(0 0,3 3)", "POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 9,1 9,0 0))", true);
+
+ test_touches<linestring, mpolygon>("LINESTRING(-1 -1,3 3)", "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 9,1 9,0 0)))", true);
+
+ test_touches<mlinestring, mpolygon>("MULTILINESTRING((0 0,11 11))", "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 9,1 9,0 0)))", false);
+
+ test_touches<box, box>("POLYGON((0 0,0 5,5 5,5 0,0 0))", "POLYGON((5 1,5 2,6 2,6 1,5 1))", true);
+ test_touches<box, box>("POLYGON((0 0,0 5,5 5,5 0,0 0))", "POLYGON((4 1,4 2,5 2,5 1,4 1))", false);
+ test_touches<box, box>("POLYGON((0 0,0 5,5 5,5 0,0 0))", "POLYGON((4 1,4 2,6 2,6 1,4 1))", false);
+
+ // Point-size
+ test_touches<box, box>("POLYGON((0 0,0 5,5 5,5 0,0 0))", "POLYGON((5 5,5 5,5 5,5 5,5 5))", true);
+ // TODO: should it be TRUE?
+ test_touches<box, box>("POLYGON((5 5,5 5,5 5,5 5,5 5))", "POLYGON((5 5,5 5,5 5,5 5,5 5))", true);
}
+template <typename P>
+void test_box_3d()
+{
+ typedef bg::model::box<P> box;
+ check_touches<box, box>(box(P(0,0,0),P(5,5,5)), box(P(5,1,2),P(6,6,6)),
+ "box(P(0,0,0),P(5,5,5))", "box(P(5,1,2),P(6,6,6))",
+ true);
+ check_touches<box, box>(box(P(0,0,0),P(5,5,5)), box(P(5,5,5),P(6,6,6)),
+ "box(P(0,0,0),P(5,5,5))", "box(P(5,5,5),P(6,6,6))",
+ true);
+}
int test_main( int , char* [] )
{
test_all<bg::model::d2::point_xy<double> >();
-
+ test_box_3d<bg::model::point<double, 3, bg::cs::cartesian> >();
#if defined(HAVE_TTMATH)
test_all<bg::model::d2::point_xy<ttmath_big> >();
@@ -147,8 +237,8 @@ int test_main( int , char* [] )
with viewy as
(
select geometry::STGeomFromText('POLYGON((0 0,0 100,100 100,100 0,0 0))',0) as p
- , geometry::STGeomFromText('POLYGON((200 0,100 50,200 100,200 0))',0) as q
+ , geometry::STGeomFromText('POLYGON((200 0,100 50,200 100,200 0))',0) as q
)
-- select p from viewy union all select q from viewy
select p.STTouches(q) from viewy
-*/ \ No newline at end of file
+*/
diff --git a/libs/geometry/test/algorithms/touches.vcproj b/libs/geometry/test/algorithms/touches.vcproj
deleted file mode 100644
index 79cc17048a..0000000000
--- a/libs/geometry/test/algorithms/touches.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="touches"
- ProjectGUID="{8359726E-9F03-4300-8F63-1FEAC84251D0}"
- RootNamespace="touches"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\touches"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\touches"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\touches.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/transform.cpp b/libs/geometry/test/algorithms/transform.cpp
index 7a9c1c32ab..1746c7d236 100644
--- a/libs/geometry/test/algorithms/transform.cpp
+++ b/libs/geometry/test/algorithms/transform.cpp
@@ -18,57 +18,76 @@
#include <geometry_test_common.hpp>
+#include <boost/geometry/algorithms/equals.hpp>
#include <boost/geometry/algorithms/make.hpp>
#include <boost/geometry/algorithms/transform.hpp>
-#include <boost/geometry/strategies/strategies.hpp>
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
-
-#include <boost/geometry/io/dsv/write.hpp>
#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
+#include <boost/variant/variant.hpp>
#include <test_common/test_point.hpp>
-template <typename P1, typename P2>
-void test_transform_point(
- typename bg::select_most_precise
- <
- typename bg::coordinate_type<P1>::type,
- double
- >::type value)
+template <typename Geometry1, typename Geometry2>
+void check_transform(Geometry1 const& geometry1,
+ Geometry2 const& expected)
+{
+ Geometry2 geometry2;
+ BOOST_CHECK(bg::transform(geometry1, geometry2));
+
+ std::ostringstream result_wkt, expected_wkt;
+ result_wkt << bg::wkt(geometry2);
+ expected_wkt << bg::wkt(expected);
+ BOOST_CHECK_EQUAL(result_wkt.str(), expected_wkt.str());
+}
+
+template <typename P1, typename P2, typename Value>
+void test_transform_point(Value value)
{
P1 p1;
bg::set<0>(p1, 1);
bg::set<1>(p1, 2);
- P2 p2;
- BOOST_CHECK(bg::transform(p1, p2));
+ boost::variant<P1> v(p1);
+
+ P2 expected;
+ bg::assign(expected, p1);
+ bg::multiply_value(expected, value);
- BOOST_CHECK_CLOSE(value * bg::get<0>(p1), bg::get<0>(p2), 0.001);
- BOOST_CHECK_CLOSE(value * bg::get<1>(p1), bg::get<1>(p2), 0.001);
+ check_transform(p1, expected);
+ check_transform(v, expected);
}
-template <typename P1, typename P2>
-void test_transform_linestring()
+template <typename P1, typename P2, typename Value>
+void test_transform_linestring(Value value)
{
- bg::model::linestring<P1> line1;
+ typedef bg::model::linestring<P1> line1_type;
+ typedef bg::model::linestring<P2> line2_type;
+
+ line1_type line1;
line1.push_back(bg::make<P1>(1, 1));
line1.push_back(bg::make<P1>(2, 2));
- bg::model::linestring<P2> line2;
- BOOST_CHECK(bg::transform(line1, line2));
- BOOST_CHECK_EQUAL(line1.size(), line2.size());
-
- std::ostringstream out1, out2;
- out1 << bg::wkt(line1);
- out2 << bg::wkt(line2);
- BOOST_CHECK_EQUAL(out1.str(), out1.str());
+ boost::variant<line1_type> v(line1);
+
+ line2_type expected;
+ for (BOOST_AUTO(p, line1.begin()); p != line1.end(); ++p)
+ {
+ P2 new_point;
+ bg::assign(new_point, *p);
+ bg::multiply_value(new_point, value);
+ expected.push_back(new_point);
+ }
+
+ check_transform(line1, expected);
+ check_transform(v, expected);
}
-template <typename P1, typename P2>
-void test_all(double value = 1.0)
+template <typename P1, typename P2, typename Value>
+void test_all(Value value)
{
test_transform_point<P1, P2>(value);
- test_transform_linestring<P1, P2>();
+ test_transform_linestring<P1, P2>(value);
}
template <typename T, typename DegreeOrRadian>
@@ -89,9 +108,6 @@ void test_transformations(double phi, double theta, double r)
BOOST_CHECK_CLOSE(bg::get<0>(sph1), bg::get<0>(sph2), 0.001);
BOOST_CHECK_CLOSE(bg::get<1>(sph1), bg::get<1>(sph2), 0.001);
-
- //std::cout << dsv(p) << std::endl;
- //std::cout << dsv(sph2) << std::endl;
}
// 2: using spherical coordinates on unit sphere
@@ -104,16 +120,14 @@ void test_transformations(double phi, double theta, double r)
BOOST_CHECK_CLOSE(bg::get<0>(sph1), bg::get<0>(sph2), 0.001);
BOOST_CHECK_CLOSE(bg::get<1>(sph1), bg::get<1>(sph2), 0.001);
-
- //std::cout << dsv(sph1) << " " << dsv(p) << " " << dsv(sph2) << std::endl;
}
}
int test_main(int, char* [])
{
typedef bg::model::d2::point_xy<double > P;
- test_all<P, P>();
- test_all<bg::model::d2::point_xy<int>, bg::model::d2::point_xy<float> >();
+ test_all<P, P>(1.0);
+ test_all<bg::model::d2::point_xy<int>, bg::model::d2::point_xy<float> >(1.0);
test_all<bg::model::point<double, 2, bg::cs::spherical<bg::degree> >,
bg::model::point<double, 2, bg::cs::spherical<bg::radian> > >(bg::math::d2r);
diff --git a/libs/geometry/test/algorithms/transform.vcproj b/libs/geometry/test/algorithms/transform.vcproj
deleted file mode 100644
index fcf3c902d6..0000000000
--- a/libs/geometry/test/algorithms/transform.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="transform"
- ProjectGUID="{41413E56-08DA-4592-94D2-5311FE90C62B}"
- RootNamespace="transform"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\transform"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\transform"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\transform.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/union.cpp b/libs/geometry/test/algorithms/union.cpp
index 7a2083f3bd..b5dfbf237f 100644
--- a/libs/geometry/test/algorithms/union.cpp
+++ b/libs/geometry/test/algorithms/union.cpp
@@ -15,12 +15,9 @@
#include <iostream>
#include <string>
-#define BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE
-#define TEST_ISOVIST
-
-//#define BOOST_GEOMETRY_DEBUG_ASSEMBLE
-//#define BOOST_GEOMETRY_DEBUG_IDENTIFIER
-
+// If defined, tests are run without rescaling-to-integer or robustness policy
+// Test which would fail then are disabled automatically
+// #define BOOST_GEOMETRY_NO_ROBUSTNESS
#include <algorithms/test_union.hpp>
#include <algorithms/test_overlay.hpp>
@@ -148,7 +145,7 @@ void test_areal()
test_one<Polygon, Polygon, Polygon>("distance_zero",
distance_zero[0], distance_zero[1],
- 1, 0, 11, 9.0098387);
+ 1, 0, if_typed<ct, float>(9, 11), 9.0098387);
test_one<Polygon, Polygon, Polygon>("wrapped_a",
wrapped[0], wrapped[1],
@@ -221,46 +218,37 @@ void test_areal()
test_one<Polygon, Polygon, Polygon>("ggl_list_20110306_javier",
ggl_list_20110306_javier[0], ggl_list_20110306_javier[1],
1, 1, 16, 80456.4904910401);
-
+
test_one<Polygon, Polygon, Polygon>("ggl_list_20110307_javier",
ggl_list_20110307_javier[0], ggl_list_20110307_javier[1],
1, 1, 13, 20016.4);
test_one<Polygon, Polygon, Polygon>("ggl_list_20110627_phillip",
ggl_list_20110627_phillip[0], ggl_list_20110627_phillip[1],
- 1, 0,
- if_typed<ct, double>(5, if_typed_tt<ct>(8, 7)),
- 14729.07145);
-
+ 1, 0, 8, 14729.07145);
+
test_one<Polygon, Polygon, Polygon>("ggl_list_20110716_enrico",
ggl_list_20110716_enrico[0], ggl_list_20110716_enrico[1],
- 1, 1,
- if_typed<ct, double>(18, if_typed<ct, float>(15, 17)),
- 129904.197692871);
+ 1, 1, 15, 129904.197692871);
- test_one<Polygon, Polygon, Polygon>("ggl_list_20110820_christophe",
+ test_one<Polygon, Polygon, Polygon>("ggl_list_20110820_christophe",
ggl_list_20110820_christophe[0], ggl_list_20110820_christophe[1],
- if_typed<ct, float>(2, 1),
- 0,
- if_typed_tt<ct>(9, 8),
+ -1, // Either 1 or 2, depending if the intersection/turn point (eps.region) is missed
+ 0,
+ if_typed_tt<ct>(9, 8),
67.3550722317627);
-#ifdef TEST_ISOVIST
-#ifdef _MSC_VER
test_one<Polygon, Polygon, Polygon>("isovist",
isovist1[0], isovist1[1],
1,
0,
- if_typed<ct, float>(71, if_typed<ct, double>(70, 73)),
- 313.36036462, 0.1);
+ -1,
+ 313.36036462, 0.01);
// SQL Server gives: 313.360374193241
// PostGIS gives: 313.360364623393
-#endif
-#endif
-
// Ticket 5103 https://svn.boost.org/trac/boost/ticket/5103
// This ticket was actually reported for Boost.Polygon
// We check it for Boost.Geometry as well.
@@ -268,41 +256,73 @@ void test_areal()
// PostGIS gives: 2515271327070.52
// Boost.Geometry gives: 2515271327070.5237746891 (ttmath)
// 2515271327070.5156 (double)
- // 2515271320603.0000 (int)
+ // 2515271320603.0000 (int)
// Note the int-test was tested outside of this unit test. It is in two points 0.37 off (logical for an int).
// Because of the width of the polygon (400000 meter) this causes a substantial difference.
test_one<Polygon, Polygon, Polygon>("ticket_5103", ticket_5103[0], ticket_5103[1],
1, 0, 25, 2515271327070.5);
+ test_one<Polygon, Polygon, Polygon>("ticket_8310a", ticket_8310a[0], ticket_8310a[1],
+ 1, 0, 5, 10.5000019595);
+ test_one<Polygon, Polygon, Polygon>("ticket_8310b", ticket_8310b[0], ticket_8310b[1],
+ 1, 0, 5, 10.5000019595);
+ test_one<Polygon, Polygon, Polygon>("ticket_8310c", ticket_8310c[0], ticket_8310c[1],
+ 1, 0, 5, 10.5000019595);
+
+ test_one<Polygon, Polygon, Polygon>("ticket_9081_15",
+ ticket_9081_15[0], ticket_9081_15[1],
+ 1, 0, 7, 0.0403425433);
+
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ test_one<Polygon, Polygon, Polygon>("ticket_9563", ticket_9563[0], ticket_9563[1],
+ 1, 0, 13, 150.0);
+#endif
+
+ test_one<Polygon, Polygon, Polygon>("ticket_9756", ticket_9756[0], ticket_9756[1],
+ 1, 0, 10, 1289.08374);
+
+ test_one<Polygon, Polygon, Polygon>("geos_1", geos_1[0], geos_1[1],
+ 1, 0, -1, 3461.3203125);
+ test_one<Polygon, Polygon, Polygon>("geos_2", geos_2[0], geos_2[1],
+ 1, 0, -1, 350.55102539);
+ test_one<Polygon, Polygon, Polygon>("geos_3", geos_3[0], geos_3[1],
+ 1, 0, -1, 29391548.4998779);
+ test_one<Polygon, Polygon, Polygon>("geos_4", geos_4[0], geos_4[1],
+ 1, 0, -1, 2304.4163115);
+
test_one<Polygon, Polygon, Polygon>("buffer_rt_a", buffer_rt_a[0], buffer_rt_a[1],
1, 0, 265, 19.280667);
// Robustness issues, followed out buffer-robustness-tests, test them also reverse
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
test_one<Polygon, Polygon, Polygon>("buffer_rt_f", buffer_rt_f[0], buffer_rt_f[1],
- 1, 0, if_typed<ct, double>(22, 23), 4.60853);
+ 1, 0, if_typed<ct, double>(21, 23), 4.60853);
test_one<Polygon, Polygon, Polygon>("buffer_rt_f_rev", buffer_rt_f[1], buffer_rt_f[0],
- 1, 0, if_typed<ct, double>(22, 23), 4.60853);
+ 1, 0, if_typed<ct, double>(21, 23), 4.60853);
+#endif
test_one<Polygon, Polygon, Polygon>("buffer_rt_g", buffer_rt_g[0], buffer_rt_g[1],
- 1, 0, 17, 16.571);
+ 1, 0, if_typed<ct, float>(18, 17), 16.571);
test_one<Polygon, Polygon, Polygon>("buffer_rt_g_rev", buffer_rt_g[1], buffer_rt_g[0],
- 1, 0, 17, 16.571);
+ 1, 0, if_typed<ct, float>(18, 17), 16.571);
test_one<Polygon, Polygon, Polygon>("buffer_rt_i", buffer_rt_i[0], buffer_rt_i[1],
- 1, 0, 13, 13.6569);
+ 1, 0, if_typed<ct, float>(14, 13), 13.6569);
test_one<Polygon, Polygon, Polygon>("buffer_rt_i_rev", buffer_rt_i[1], buffer_rt_i[0],
- 1, 0, 13, 13.6569);
+ 1, 0, 13, 13.6569);
test_one<Polygon, Polygon, Polygon>("buffer_rt_j", buffer_rt_j[0], buffer_rt_j[1],
1, 0, -1, 16.5711);
test_one<Polygon, Polygon, Polygon>("buffer_rt_j_rev", buffer_rt_j[1], buffer_rt_j[0],
1, 0, -1, 16.5711);
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
test_one<Polygon, Polygon, Polygon>("buffer_rt_l", buffer_rt_l[0], buffer_rt_l[1],
1, 0, -1, 19.3995);
test_one<Polygon, Polygon, Polygon>("buffer_rt_l_rev", buffer_rt_l[1], buffer_rt_l[0],
1, 0, -1, 19.3995);
+#endif
test_one<Polygon, Polygon, Polygon>("buffer_rt_m1", buffer_rt_m1[0], buffer_rt_m1[1],
1, 0, if_typed_tt<ct>(14, 13), 19.4852);
@@ -315,19 +335,31 @@ void test_areal()
1, 0, if_typed_tt<ct>(20, 19), 21.4853);
test_one<Polygon, Polygon, Polygon>("buffer_rt_q", buffer_rt_q[0], buffer_rt_q[1],
- 1, 0, if_typed<ct, float>(18, 17), 18.5710);
+ 1, 0, 18, 18.5710);
test_one<Polygon, Polygon, Polygon>("buffer_rt_q_rev", buffer_rt_q[1], buffer_rt_q[0],
- 1, 0, if_typed<ct, float>(18, 17), 18.5710);
+ 1, 0, 18, 18.5710);
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
test_one<Polygon, Polygon, Polygon>("buffer_rt_r", buffer_rt_r[0], buffer_rt_r[1],
- 1, 0, if_typed<ct, float>(19, 20), 21.07612);
+ 1, 0, 19, 21.07612);
test_one<Polygon, Polygon, Polygon>("buffer_rt_r_rev", buffer_rt_r[1], buffer_rt_r[0],
1, 0, if_typed_tt<ct>(20, 19), 21.07612);
+#endif
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
test_one<Polygon, Polygon, Polygon>("buffer_rt_t", buffer_rt_t[0], buffer_rt_t[1],
1, 0, if_typed_tt<ct>(16, 14), 15.6569);
+#endif
test_one<Polygon, Polygon, Polygon>("buffer_rt_t_ref", buffer_rt_t[1], buffer_rt_t[0],
- 1, 0, if_typed_tt<ct>(16, 14), 15.6569);
+ 1, 0, if_typed_tt<ct>(16, if_typed<ct, float>(15, 14)), 15.6569);
+
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
+ test_one<Polygon, Polygon, Polygon>("buffer_mp1", buffer_mp1[0], buffer_mp1[1],
+ 1, 0, if_typed_tt<ct>(93, 91), 22.815);
+#endif
+
+ test_one<Polygon, Polygon, Polygon>("buffer_mp2", buffer_mp2[0], buffer_mp2[1],
+ 1, 0, 217, 36.752837);
}
template <typename P>
@@ -391,13 +423,12 @@ void test_all()
int test_main(int, char* [])
{
test_all<bg::model::d2::point_xy<double> >();
-#if defined(HAVE_TTMATH)
- std::cout << "Testing TTMATH" << std::endl;
- test_all<bg::model::d2::point_xy<ttmath_big> >();
-#endif
#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
+
+#if ! defined(BOOST_GEOMETRY_NO_ROBUSTNESS)
test_all<bg::model::d2::point_xy<float> >();
+#endif
//test_all<bg::model::d2::point_xy<long double> >();
#if defined(HAVE_TTMATH)
diff --git a/libs/geometry/test/algorithms/union.vcproj b/libs/geometry/test/algorithms/union.vcproj
deleted file mode 100644
index a3399b777a..0000000000
--- a/libs/geometry/test/algorithms/union.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="union"
- ProjectGUID="{CA5EE1D6-CB4B-4A15-85C5-31D5C00289C4}"
- RootNamespace="union"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\union"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/bigobj"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\union"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;NONDLL;_CRT_SECURE_NO_WARNINGS"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\union.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/union_linear_linear.cpp b/libs/geometry/test/algorithms/union_linear_linear.cpp
new file mode 100644
index 0000000000..461653d0b3
--- /dev/null
+++ b/libs/geometry/test/algorithms/union_linear_linear.cpp
@@ -0,0 +1,1062 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_union_linear_linear
+#endif
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+#define BOOST_GEOMETRY_DEBUG_TURNS
+#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_union_linear_linear.hpp"
+
+#include <boost/geometry/geometries/linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/algorithms/union.hpp>
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::segment<point_type> segment_type;
+typedef bg::model::linestring<point_type> linestring_type;
+typedef bg::model::multi_linestring<linestring_type> multi_linestring_type;
+
+
+
+//===========================================================================
+//===========================================================================
+//===========================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_union_linestring_linestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** LINESTRING / LINESTRING UNION ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_union_of_geometries<L, L, ML> tester;
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 1,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(0 2,1 1,2 1,3 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1,2 1,3 2),\
+ (0 2,1 1),(2 1,3 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 2,1 1,2 1,3 0),\
+ (0 0,1 1),(2 1,3 2))"),
+ "llu00");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,5 0)"),
+ from_wkt<L>("LINESTRING(3 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((3 0,4 0),(0 0,3 0),(4 0,5 0))"),
+ "llu01");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(3 0,4 0)"),
+ from_wkt<L>("LINESTRING(0 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((3 0,4 0),(0 0,3 0),(4 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,5 0))"),
+ "llu01-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,6 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,4 0),(4 0,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((3 0,6 0),(0 0,3 0))"),
+ "llu01-2");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(3 0,6 0)"),
+ from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((3 0,6 0),(0 0,3 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,4 0),(4 0,6 0))"),
+ "llu01-3");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,6 0)"),
+ from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,4 0),(4 0,6 0))"),
+ "llu01-4");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),\
+ (0 0,1 1,2 0,3 1,4 0),\
+ (5 0,6 1,7 -1,8 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0),\
+ (0 0,4 0),(5 0,20 0))"),
+ "llu01-6");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-20 0,20 0)"),
+ from_wkt<L>("LINESTRING(0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0)"),
+ from_wkt<ML>("MULTILINESTRING((-20 0,20 0),\
+ (0 0,1 1,2 0,3 1,4 0),\
+ (5 0,6 1,7 -1,8 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1,2 0,3 1,4 0,5 0,6 1,7 -1,8 0),\
+ (-20 0,4 0),(5 0,20 0))"),
+ "llu01-7");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,4 0)"),
+ from_wkt<L>("LINESTRING(2 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0),(0 0,2 0))"),
+ "llu01-8");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(4 0,5 0))"),
+ "llu01-10");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0)"),
+ from_wkt<L>("LINESTRING(2 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0),(2 0,5 0))"),
+ "llu01-11");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,4 0),(4 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((3 0,5 0),(0 0,1 0,3 0))"),
+ "llu01-11a");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,4 0)"),
+ from_wkt<L>("LINESTRING(3 0,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,4 0),(4 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((3 0,4 0,5 0),(0 0,1 0,3 0))"),
+ "llu01-11b");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,6 0)"),
+ from_wkt<L>("LINESTRING(2 0,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 0,4 0,5 0),(0 0,2 0),(5 0,6 0))"),
+ "llu01-12");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0)"),
+ from_wkt<L>("LINESTRING(-1 6,0 5,15 5)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,5 5,10 5,15 0),\
+ (-1 6,0 5,5 5),(10 5,15 5))"),
+ from_wkt<ML>("MULTILINESTRING((-1 6,0 5,15 5),\
+ (0 0,1 0,5 5),(10 5,15 0))"),
+ "llu02");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0),\
+ (-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,30 0),(-1 1,0 0),\
+ (1 0,5 5,10 5,15 0))"),
+ "llu03");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,5 5,10 5,15 0,20 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,5 5,10 5,15 0,20 0),\
+ (-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,30 0),(1 0,5 5,10 5,15 0))"),
+ "llu04");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,25 1)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,25 1),\
+ (-1 0,0 0),(1 0,15 0),(20 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,30 0),(-1 1,0 0),\
+ (1 0,5 5,10 5,15 0),(20 0,25 1))"),
+ "llu05");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0),\
+ (-1 0,0 0),(1 0,15 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,30 0),(-1 1,0 0),\
+ (1 0,5 5,10 5,15 0))"),
+ "llu05-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0),\
+ (-1 0,0 0),(1 0,15 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,30 0),(-1 1,0 0),\
+ (1 0,5 5,10 5,15 0),(30 0,31 0))"),
+ "llu06");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,25 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0),\
+ (-1 0,0 0),(1 0,15 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,25 0,30 0),(-1 1,0 0),\
+ (1 0,5 5,10 5,15 0),(30 0,31 0))"),
+ "llu07");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,31 0),\
+ (-1 0,0 0),(1 0,15 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,19 0,30 0),(-1 1,0 0),\
+ (1 0,5 5,10 5,15 0),(30 0,31 0))"),
+ "llu08");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,\
+ 30 0,31 1),(-1 0,0 0),(1 0,15 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 0,30 0),(-1 1,0 0),\
+ (1 0,5 5,10 5,15 0),(30 0,31 1))"),
+ "llu09");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,5 5,10 5,15 0,20 0,30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,1 0,5 5,10 5,15 0,20 0,\
+ 30 0,31 1),(-1 -1,0 0),(1 0,2 1,3 0,15 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,1 0,2 1,3 0,30 0),\
+ (-1 1,0 0),(1 0,5 5,10 5,15 0),(30 0,31 1))"),
+ "llu10");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,\
+ 30 0,31 1)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,1 0,4 0,5 5,10 5,15 0,20 0,\
+ 30 0,31 1),(-1 -1,0 0),(2 0,2.5 1,3 0),(4 0,15 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0),\
+ (-1 1,0 0),(2 0,3 0),(4 0,5 5,10 5,15 0),(30 0,31 1))"),
+ "llu11");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0)"),
+ from_wkt<L>("LINESTRING(-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,1 0,4 0,5 5,10 5,15 0,31 0),\
+ (-1 -1,0 0),(2 0,2.5 1,3 0),(4 0,15 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,1 0,2 0,2.5 1,3 0,30 0),\
+ (-1 1,0 0),(2 0,3 0),(4 0,5 5,10 5,15 0),(30 0,31 0))"),
+ "llu11-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0,3 1))"),
+ "llu12");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,2 0,3 1)"),
+ from_wkt<L>("LINESTRING(3 1,2 0,0 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((3 1,2 0,0 0))"),
+ "llu12-1");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
+ from_wkt<L>("LINESTRING(1 0,2 1,3 5,4 0,5 10)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 1,3 5,4 0),(4 0,5 10))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,2 1,3 5,4 0,5 10),(0 0,1 0))"),
+ "llu13");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 0,2.5 0,3 1)"),
+ from_wkt<L>("LINESTRING(0 0,2 0,2.5 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0,2.5 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,2 0,2.5 0,3 1))"),
+ "llu14");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 5,4 0)"),
+ from_wkt<L>("LINESTRING(1 0,2 1,3 5)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 1,3 5,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,2 1,3 5),(0 0,1 0),(3 5,4 0))"),
+ "llu15");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(0.5 0,1 0,3 2,4 5)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 1,3 2),(3 2,4 5))"),
+ from_wkt<ML>("MULTILINESTRING((0.5 0,1 0,3 2,4 5),(0 0,0.5 0))"),
+ "llu16");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 1,3 2)"),
+ from_wkt<L>("LINESTRING(4 5,3 2,1 0,0.5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 1,3 2),(4 5,3 2))"),
+ from_wkt<ML>("MULTILINESTRING((4 5,3 2,1 0,0.5 0),(0 0,0.5 0))"),
+ "llu16-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1,30 1)"),
+ from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1,30 1),(1 1,2 0,3 1,20 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,3 1,20 1,25 1),\
+ (0 0,10 0,20 1),(25 1,30 1))"),
+ "llu17");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1,21 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 1,2 0,3 1,20 1,25 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1,21 0,30 0),\
+ (1 1,2 0,3 1,20 1,25 0))"),
+ "llu18");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0,5 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,5 1),\
+ (0 0,1 0),(5 0,30 0))"),
+ "llu19");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,4 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(5 1,4 0,4 1,20 1,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 1,4 0,4 1,20 1,5 0,1 0),\
+ (0 0,1 0),(5 0,30 0))"),
+ "llu19-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0),(0 0,1 0),\
+ (5 0,30 0))"),
+ "llu19a");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(4 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(4 0,4 1,20 1,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((4 0,4 1,20 1,5 0,1 0),(0 0,1 0),\
+ (5 0,30 0))"),
+ "llu19a-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,5 0),\
+ (0 0,1 0),(5 0,30 0))"),
+ "llu19b");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,6 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0),(5 0,6 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,5 0,6 1),\
+ (0 0,1 0),(5 0,30 0))"),
+ "llu19c");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,3 0),\
+ (0 0,1 0),(5 0,30 0))"),
+ "llu19d");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,3 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0),(3 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,3 0,3 1),\
+ (0 0,1 0),(5 0,30 0))"),
+ "llu19e");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,4 0,5 0,5 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,4 0),(5 0,5 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0,20 1,4 1,4 0,5 0,5 1),\
+ (0 0,1 0),(5 0,30 0))"),
+ "llu19f");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,5 0,4 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(5 1,5 0),\
+ (4 0,4 1,20 1,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 1,5 0,4 0,4 1,20 1,5 0,1 0),\
+ (0 0,1 0),(5 0,30 0))"),
+ "llu19f-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(1 0,5 0,20 1,4 1,5 0,5 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(5 0,20 1,4 1,5 0,5 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,5 0,20 1,4 1,5 0,5 1),\
+ (0 0,1 0),(5 0,30 0))"),
+ "llu19g");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<L>("LINESTRING(5 1,5 0,4 1,20 1,5 0,1 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(5 1,5 0,4 1,20 1,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 1,5 0,4 1,20 1,5 0,1 0),\
+ (0 0,1 0),(5 0,30 0))"),
+ "llu19g-r");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
+ from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,35 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0,30 30,10 30,10 -10,15 0,40 0),\
+ (5 5,10 0),(10 30,20 0),(25 0,25 25,50 0,40 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 5,10 0,10 30,20 0,25 0,25 25,50 0,35 0),\
+ (0 0,20 0),(25 0,30 0,30 30,10 30),\
+ (10 0,10 -10,15 0,20 0),(25 0,35 0))"),
+ "llu20");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0,30 30,10 30,10 -10,15 0,40 0)"),
+ from_wkt<L>("LINESTRING(5 5,10 0,10 30,20 0,25 0,25 25,50 0,15 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0,30 30,10 30,10 -10,15 0,40 0),\
+ (5 5,10 0),(10 30,20 0),(25 0,25 25,50 0,40 0))"),
+ from_wkt<ML>("MULTILINESTRING((5 5,10 0,10 30,20 0,25 0,25 25,50 0,15 0),\
+ (0 0,15 0),(30 0,30 30,10 30),(10 0,10 -10,15 0))"),
+ "llu20a");
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<L>("LINESTRING(2 2,5 -1,15 2,18 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((2 2,5 -1,15 2,18 0,20 0),\
+ (0 0,18 0),(20 0,30 0))"),
+ "llu21"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(2 2,5 -1,15 2,18 0,20 0)"),
+ from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((2 2,5 -1,15 2,18 0,20 0),\
+ (0 0,18 0),(20 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0),\
+ (2 2,5 -1,15 2,18 0))"),
+ "llu21a"
+ );
+}
+
+
+
+BOOST_AUTO_TEST_CASE( test_union_linestring_multilinestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** LINESTRING / MULTILINESTRING UNION ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_union_of_geometries<L, ML, ML> tester;
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 1,2 2,4 3),\
+ (1 1,2 2,5 3))"),
+ "lmlu01"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 1,2 0),(1 1,3 0))"),
+ "lmlu02"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 1,2 0),(1 1,3 0))"),
+ "lmlu03"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,10 0,20 1)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 1,2 0))"),
+ "lmlu04"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,101 0),(-1 -1,1 0),(101 0,200 -1))"),
+ "lmlu07"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(-1 1,0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,101 0),(-1 -1,0 0),\
+ (19 -1,20 0),(101 0,200 -1))"),
+ "lmlu07a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,101 0),(-1 -1,0 0),\
+ (19 -1,20 0),(101 0,200 -1))"),
+ "lmlu07b"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,101 0),(0 1,1 1,2 0),\
+ (-1 -1,1 0),(101 0,200 -1))"),
+ "lmlu08"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,2 0.5,3 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0),\
+ (0 1,1 1,2 0.5),(-1 -1,1 0,3 0),(101 0,200 -1))"),
+ "lmlu09"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,1 0,1.5 0,2 0.5,3 0,101 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0),\
+ (0 1,1 1,1 0,2 0.5),(-1 -1,1 0),(1.5 0,3 0),\
+ (101 0,200 -1))"),
+ "lmlu10"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
+ (3 1,4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
+ (1 1,2 0),(18 0,19 1),(2 1,3 0),(17 0,18 1),\
+ (3 1,4 0),(16 0,17 1))"),
+ "lmlu12"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\
+ (2 0,18 0,19 1),(3 0,17 0,18 1),\
+ (4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(19 0,20 1),(18 0,19 1),\
+ (17 0,18 1),(16 0,17 1))"),
+ "lmlu13"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),\
+ (19 0,20 1,19 1,18 0),(2 0,1 1,2 1,3 0),\
+ (17 0,18 1,17 1,16 0),(4 0,3 1))"),
+ "lmlu14"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
+ (2 2,4 2,6 0))"),
+ "lmlu15"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
+ (6 0,4 2,2 2))"),
+ "lmlu15a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,5 0,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
+ (2 2,4 2,5 0))"),
+ "lmlu16"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,20 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,5 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
+ (5 0,4 2,2 2))"),
+ "lmlu16a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0))"),
+ "lmlu17"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0,26 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0,26 2))"),
+ "lmlu17a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ "lmlu18"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0),(0 1,1 0),\
+ (19 0,20 1),(2 2,5 -1,15 2,18 0))"),
+ "lmlu18a"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0),(0 1,1 0),\
+ (19 0,20 1),(2 2,5 -1,15 2,18 0))"),
+ "lmlu18b"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,25 0,26 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0),(0 1,1 0),\
+ (19 0,20 1),(2 2,5 -1,15 2,25 0))"),
+ "lmlu18c"
+ );
+
+ tester::apply
+ (from_wkt<L>("LINESTRING(0 0,18 0,19 0,30 0)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,25 0,21 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0),(0 1,1 0),\
+ (19 0,20 1),(2 2,5 -1,15 2,25 0))"),
+ "lmlu18d"
+ );
+}
+
+
+
+BOOST_AUTO_TEST_CASE( test_union_multilinestring_linestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / LINESTRING UNION ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef linestring_type L;
+ typedef multi_linestring_type ML;
+
+ typedef test_union_of_geometries<ML, L, ML> tester;
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<L>("LINESTRING(1 1,2 2,4 3)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(0 0,10 0,20 1),(1 0,7 0))"),
+ "mllu01"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<L>("LINESTRING(1 1,2 0,4 0)"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(0 0,2 0),(4 0,10 0,20 1),\
+ (1 0,2 0),(4 0,7 0))"),
+ "mllu02"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<L>("LINESTRING(-1 -1,1 0,101 0,200 -1)"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1),(0 0,1 0))"),
+ "mllu03"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<L>("LINESTRING(0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1)"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1),\
+ (0 0,1 0),(19 0,20 0))"),
+ "mllu04"
+ );
+}
+
+
+
+
+
+
+
+BOOST_AUTO_TEST_CASE( test_union_multilinestring_multilinestring )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTILINESTRING / MULTILINESTRING UNION ***"
+ << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef multi_linestring_type ML;
+
+ typedef test_union_of_geometries<ML, ML, ML> tester;
+
+ // disjoint linestrings
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 2,4 3),(1 1,2 2,5 3))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (1 1,2 2,4 3),(1 1,2 2,5 3))"),
+ "mlmlu01"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (1 1,2 0),(1 1,3 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,4 0),\
+ (0 0,2 0),(4 0,10 0,20 1),(1 0,2 0),(4 0,7 0))"),
+ "mlmlu02"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (1 1,2 0),(1 1,3 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(1 1,3 0,5 0),\
+ (0 0,2 0),(5 0,10 0,20 1),(1 0,2 0),(5 0,7 0))"),
+ "mlmlu03"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (1 1,2 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),(0 0,2 0),\
+ (4 0,10 0,20 1),(1 0,2 0),(4 0,7 0))"),
+ "mlmlu04"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (10 10,20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (10 20,15 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 1),(1 0,7 0),\
+ (10 10,20 10,30 20),(1 1,2 0),(10 20,15 10),\
+ (20 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (10 20,15 10,25 10,30 15),(0 0,2 0),(4 0,10 0,20 1),\
+ (1 0,2 0),(4 0,7 0),(10 10,15 10),(20 10,30 20))"),
+ "mlmlu05"
+ );
+
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
+ (10 10,20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
+ (10 20,15 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
+ (10 10,20 10,30 20),(1 1,2 0),\
+ (-1 -1,0 0),(9 0,11 10),(12 10,13 3),(10 20,15 10),\
+ (20 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
+ (10 20,15 10,25 10,30 15),(9 0,10 0,13 3),\
+ (15 5,20 10),(10 10,11 10),(12 10,15 10),(20 10,30 20))"),
+ "mlmlu06"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
+ (10 20,15 10,25 10,30 15))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
+ (10 10,20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((1 1,2 0,4 0),\
+ (-1 -1,0 0,9 0,11 10,12 10,13 3,14 4,15 5),\
+ (10 20,15 10,25 10,30 15),(9 0,10 0,13 3),\
+ (15 5,20 10),(10 10,11 10),(12 10,15 10),\
+ (20 10,30 20))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,10 0,20 10),(1 0,7 0),\
+ (10 10,20 10,30 20),(1 1,2 0),(-1 -1,0 0), \
+ (9 0,11 10),(12 10,13 3),(10 20,15 10),\
+ (20 10,25 10,30 15))"),
+ "mlmlu06a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,101 0),(-1 -1,1 0),(101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,1 0,101 0,200 -1),(0 0,1 0))"),
+ "mlmlu07"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((-1 1,0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((-1 1,0 0,101 0),(-1 -1,0 0),\
+ (19 -1,20 0),(101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1),(-1 1,0 0))"),
+ "mlmlu07a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,101 0),(-1 -1,0 0),\
+ (19 -1,20 0),(101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((-1 -1,0 0,50 0),\
+ (19 -1,20 0,101 0,200 -1))"),
+ "mlmlu07b"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,101 0),(0 1,1 1,2 0),\
+ (-1 -1,1 0),(101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0),\
+ (-1 -1,1 0,101 0,200 -1),(0 0,1 0))"),
+ "mlmlu08"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,2 0.5,3 0,101 0),\
+ (0 1,1 1,2 0.5),(-1 -1,1 0,3 0),(101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1),(0 0,1 0,2 0.5,3 0))"),
+ "mlmlu09"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 0,1.5 0,2 0.5,3 0,101 0),\
+ (0 1,1 1,1 0,2 0.5),(-1 -1,1 0),(1.5 0,3 0),\
+ (101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 1,1 0,2 0.5),\
+ (-1 -1,1 0,101 0,200 -1),(0 0,1 0),(1.5 0,2 0.5,3 0))"),
+ "mlmlu10"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,1 1,100 1,101 0),\
+ (0 0,101 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1,3 0,4 0,5 1,6 1,\
+ 7 0,8 0,9 1,10 1,11 0,12 0,13 1,14 1,15 0),\
+ (-1 -1,1 0,101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,1 1,100 1,101 0),\
+ (0 0,101 0),(1 0,1 1),(2 1,3 0),(4 0,5 1),(6 1,7 0),\
+ (8 0,9 1),(10 1,11 0),(12 0,13 1),(14 1,15 0),\
+ (-1 -1,1 0),(101 0,200 -1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,1 1,2 1,3 0,4 0,5 1,6 1,\
+ 7 0,8 0,9 1,10 1,11 0,12 0,13 1,14 1,15 0),\
+ (-1 -1,1 0,101 0,200 -1),(0 0,1 1),(2 1,5 1),\
+ (6 1,9 1),(10 1,13 1),(14 1,100 1,101 0),(0 0,1 0))"),
+ "mlmlu11"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
+ (3 1,4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
+ (1 1,2 0),(18 0,19 1),(2 1,3 0),(17 0,18 1),\
+ (3 1,4 0),(16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (1 1,2 0,18 0,19 1),(2 1,3 0,17 0,18 1),\
+ (3 1,4 0,16 0,17 1),(0 0,1 0),(19 0,20 0))"),
+ "mlmlu12"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\
+ (2 0,18 0,19 1),(3 0,17 0,18 1),\
+ (4 0,16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(19 0,20 1),(18 0,19 1),\
+ (17 0,18 1),(16 0,17 1))"),
+ from_wkt<ML>("MULTILINESTRING((1 0,19 0,20 1),\
+ (2 0,18 0,19 1),(3 0,17 0,18 1),\
+ (4 0,16 0,17 1),(0 0,1 0),(19 0,20 0))"),
+ "mlmlu13"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),\
+ (19 0,20 1,19 1,18 0),(2 0,1 1,2 1,3 0),\
+ (17 0,18 1,17 1,16 0),(4 0,3 1))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1,19 1,18 0,2 0,\
+ 1 1,2 1,3 0,17 0,18 1,17 1,16 0,4 0,3 1),\
+ (0 0,1 0),(19 0,20 0))"),
+ "mlmlu14"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
+ (2 2,4 2,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,6 0),(0 0,1 0),(19 0,20 0))"),
+ "mlmlu15"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
+ (6 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,4 2,2 2),(0 0,1 0),(19 0,20 0))"),
+ "mlmlu15a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,5 0,6 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
+ (2 2,4 2,5 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 2,5 0,6 0),(0 0,1 0),(19 0,20 0))"),
+ "mlmlu16"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,20 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,5 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,20 0),(0 1,1 0),(19 0,20 1),\
+ (5 0,4 2,2 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (6 0,5 0,4 2,2 2),(0 0,1 0),(19 0,20 0))"),
+ "mlmlu16a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0),(0 0,1 0),(19 0,30 0))"),
+ "mlmlu17"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0,26 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0,26 2))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,4 0,5 2,20 2,25 0,26 2),(0 0,1 0),(19 0,30 0))"),
+ "mlmlu17a"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,30 0),(0 1,1 0),(19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0),(0 0,1 0),(19 0,30 0))"),
+ "mlmlu18"
+ );
+
+ tester::apply
+ (from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 0,18 0,19 0,30 0),(0 1,1 0),\
+ (19 0,20 1),(2 2,5 -1,15 2,18 0))"),
+ from_wkt<ML>("MULTILINESTRING((0 1,1 0,19 0,20 1),\
+ (2 2,5 -1,15 2,18 0),(0 0,1 0),(19 0,30 0))"),
+ "mlmlu18a"
+ );
+}
diff --git a/libs/geometry/test/algorithms/union_pl_pl.cpp b/libs/geometry/test/algorithms/union_pl_pl.cpp
new file mode 100644
index 0000000000..160d866464
--- /dev/null
+++ b/libs/geometry/test/algorithms/union_pl_pl.cpp
@@ -0,0 +1,187 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+#include <iostream>
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_union_pointlike_pointlike
+#endif
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+#define BOOST_GEOMETRY_DEBUG_TURNS
+#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include "test_set_ops_pl_pl.hpp"
+
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+
+typedef bg::model::point<double,2,bg::cs::cartesian> point_type;
+typedef bg::model::multi_point<point_type> multi_point_type;
+
+
+
+//===========================================================================
+//===========================================================================
+//===========================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_union_point_point )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** POINT / POINT UNION ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef point_type P;
+ typedef multi_point_type MP;
+
+ typedef test_set_op_of_pointlike_geometries
+ <
+ P, P, MP, bg::overlay_union
+ > tester;
+
+ tester::apply
+ (from_wkt<P>("POINT(0 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT(0 0,1 1)"),
+ "ppu01");
+
+ tester::apply
+ (from_wkt<P>("POINT(0 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ "ppu02");
+}
+
+
+BOOST_AUTO_TEST_CASE( test_union_multipoint_point )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTIPOINT / POINT UNION ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef point_type P;
+ typedef multi_point_type MP;
+
+ typedef test_set_op_of_pointlike_geometries
+ <
+ MP, P, MP, bg::overlay_union
+ > tester;
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT(0 0,1 1)"),
+ "mppu01");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ "mppu02");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT(0 0,0 0,1 1)"),
+ "mppu03");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ "mppu04");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0)"),
+ from_wkt<P>("POINT(1 1)"),
+ from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0,1 1)"),
+ "mppu05");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0)"),
+ from_wkt<P>("POINT(1 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0)"),
+ "mppu06");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,0 0,1 0)"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0,1 0)"),
+ "mppu07");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<P>("POINT(0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0)"),
+ "mppu08");
+}
+
+
+BOOST_AUTO_TEST_CASE( test_union_multipoint_multipoint )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+ std::cout << "*** MULTIPOINT / MULTIPOINT UNION ***" << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef multi_point_type MP;
+
+ typedef test_set_op_of_pointlike_geometries
+ <
+ MP, MP, MP, bg::overlay_union
+ > tester;
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(2 2,3 3,0 0,0 0,2 2,1 1,1 1,1 0,1 0)"),
+ from_wkt<MP>("MULTIPOINT(1 0,1 1,1 1,1 1)"),
+ from_wkt<MP>("MULTIPOINT(2 2,3 3,0 0,0 0,2 2,1 1,1 1,1 0,1 0)"),
+ from_wkt<MP>("MULTIPOINT(1 0,1 1,1 1,1 1,2 2,3 3,0 0,0 0,2 2)"),
+ "mpmpu01");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,1 1,1 0,1 1)"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,1 1,0 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0,1 1,1 0,1 1)"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,1 1,0 0)"),
+ "mpmpu02");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,1 1,0 0)"),
+ from_wkt<MP>("MULTIPOINT(1 0,0 0,1 1,0 0)"),
+ "mpmpu03");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,1 1,1 0,1 1)"),
+ from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT(0 0,1 1,1 0,1 1)"),
+ "mpmpu04");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT()"),
+ from_wkt<MP>("MULTIPOINT()"),
+ "mpmpu05");
+
+ tester::apply
+ (from_wkt<MP>("MULTIPOINT(0 0,1 0,2 0,3 0,0 0,1 0,2 0)"),
+ from_wkt<MP>("MULTIPOINT(0 1,0 2,1 0,0 0,2 0)"),
+ from_wkt<MP>("MULTIPOINT(0 0,1 0,2 0,3 0,0 0,1 0,2 0,0 1,0 2)"),
+ from_wkt<MP>("MULTIPOINT(0 1,0 2,1 0,0 0,2 0,3 0)"),
+ "mpmpu06");
+}
+
diff --git a/libs/geometry/test/algorithms/unique.vcproj b/libs/geometry/test/algorithms/unique.vcproj
deleted file mode 100644
index e4a67084e3..0000000000
--- a/libs/geometry/test/algorithms/unique.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="unique"
- ProjectGUID="{104D31F9-49BA-4A1A-B84F-0A3AEE3C4DB2}"
- RootNamespace="unique"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\unique"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\unique"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\unique.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/within.cpp b/libs/geometry/test/algorithms/within.cpp
index 15fee71f09..6abdce19be 100644
--- a/libs/geometry/test/algorithms/within.cpp
+++ b/libs/geometry/test/algorithms/within.cpp
@@ -1,39 +1,30 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
-//
+
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
// 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)
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
#include <algorithms/test_within.hpp>
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
-
+#include <boost/geometry/multi/multi.hpp>
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
template <typename P>
void test_all()
{
- // trivial case
- test_ring<P>("POINT(1 1)", "POLYGON((0 0,0 2,2 2,2 0,0 0))", true, false);
-
- // on border/corner
- test_ring<P>("POINT(0 0)", "POLYGON((0 0,0 2,2 2,2 0,0 0))", false, true);
- test_ring<P>("POINT(0 1)", "POLYGON((0 0,0 2,2 2,2 0,0 0))", false, true);
-
- // aligned to segment/vertex
- test_ring<P>("POINT(1 1)", "POLYGON((0 0,0 3,3 3,3 1,2 1,2 0,0 0))", true, false);
- test_ring<P>("POINT(1 1)", "POLYGON((0 0,0 3,4 3,3 1,2 2,2 0,0 0))", true, false);
-
- // same polygon, but point on border
- test_ring<P>("POINT(3 3)", "POLYGON((0 0,0 3,3 3,3 1,2 1,2 0,0 0))", false, true);
- test_ring<P>("POINT(3 3)", "POLYGON((0 0,0 3,4 3,3 1,2 2,2 0,0 0))", false, true);
-
- // holes
- test_geometry<P, bg::model::polygon<P> >("POINT(2 2)",
- "POLYGON((0 0,0 4,4 4,4 0,0 0),(1 1,3 1,3 3,1 3,1 1))", false);
-
typedef bg::model::box<P> box_type;
test_geometry<P, box_type>("POINT(1 1)", "BOX(0 0,2 2)", true);
@@ -45,6 +36,9 @@ void test_all()
test_geometry<box_type, box_type>("BOX(1 1,2 2)", "BOX(0 0,3 3)", true);
test_geometry<box_type, box_type>("BOX(0 0,3 3)", "BOX(1 1,2 2)", false);
+ test_geometry<box_type, box_type>("BOX(1 1,3 3)", "BOX(0 0,3 3)", true);
+ test_geometry<box_type, box_type>("BOX(3 1,3 3)", "BOX(0 0,3 3)", false);
+
/*
test_within_code<P, box_type>("POINT(1 1)", "BOX(0 0,2 2)", 1);
test_within_code<P, box_type>("POINT(1 0)", "BOX(0 0,2 2)", 0);
@@ -59,64 +53,11 @@ void test_all()
test_within_code<box_type, box_type>("BOX(1 1,3 2)", "BOX(0 0,3 3)", 0);
test_within_code<box_type, box_type>("BOX(1 1,3 4)", "BOX(0 0,3 3)", -1);
*/
-
- // Real-life problem (solved now), point is in the middle, 409623 is also a coordinate
- // on the border, has been wrong in the past (2009)
- test_ring<P>("POINT(146383 409623)",
- "POLYGON((146351 410597,146521 410659,147906 410363,148088 410420"
- ",148175 410296,148281 409750,148215 409623,148154 409666,148154 409666"
- ",148130 409625,148035 409626,148035 409626,148008 409544,147963 409510"
- ",147993 409457,147961 409352,147261 408687,147008 408586,145714 408840"
- ",145001 409033,144486 409066,144616 409308,145023 410286,145254 410488"
- ",145618 410612,145618 410612,146015 410565,146190 410545,146351 410597))",
- true, false);
}
template <typename Point>
void test_spherical()
{
- typedef typename bg::coordinate_type<Point>::type ct;
- bg::model::polygon<Point> wrangel;
-
- // SQL Server check (no geography::STWithin, so check with intersection trick)
- /*
-
- with q as (
- select geography::STGeomFromText('POLYGON((-178.569 71.5641,-179.034 71.5977,-179.305 71.5514,-179.629 71.5772,-180 71.5358,179.53 71.4383,178.872 71.2175,178.618 71.0355,178.791 70.7964,179.273 70.8886,179.678 70.8955,-180 70.9972,-179.274 70.9078,-178.819 70.98,-177.939 71.0375,-177.62 71.1166,-177.439 71.2269,-177.503 71.2775,-177.833 71.3461,-178.018 71.4497,-178.569 71.5641))',4326) as wrangel
- )
-
- select wrangel.STArea()/1000000.0
- ,geography::STGeomFromText('POINT(-179.3 71.27)',4326).STIntersection(wrangel).STAsText() as workaround_within_1
- ,geography::STGeomFromText('POINT(-179.9 70.95)',4326).STIntersection(wrangel).STAsText() as workaround_within_2
- ,geography::STGeomFromText('POINT(179.9 70.95)',4326).STIntersection(wrangel).STAsText() as workaround_within_3
- from q
-
- -> 7669.10402181435 POINT (-179.3 71.27) GEOMETRYCOLLECTION EMPTY GEOMETRYCOLLECTION EMPTY
-
- PostGIS knows Within for Geography neither, and the intersection trick gives the same result
-
- */
-
- bg::read_wkt("POLYGON((-178.568604 71.564148,-178.017548 71.449692,-177.833313 71.3461,-177.502838 71.277466 ,-177.439453 71.226929,-177.620026 71.116638,-177.9389 71.037491,-178.8186 70.979965,-179.274445 70.907761,-180 70.9972,179.678314 70.895538,179.272766 70.888596,178.791016 70.7964,178.617737 71.035538,178.872192 71.217484,179.530273 71.4383 ,-180 71.535843 ,-179.628601 71.577194,-179.305298 71.551361,-179.03421 71.597748,-178.568604 71.564148))", wrangel);
-
- bool within = bg::within(Point(-179.3, 71.27), wrangel);
- BOOST_CHECK_EQUAL(within, true);
-
- within = bg::within(Point(-179.9, 70.95), wrangel);
- BOOST_CHECK_EQUAL(within, false);
-
- within = bg::within(Point(179.9, 70.95), wrangel);
- BOOST_CHECK_EQUAL(within, false);
-
- // Test using great circle mapper
- // http://www.gcmap.com/mapui?P=5E52N-9E53N-7E50N-5E52N,7E52.5N,8E51.5N,6E51N
-
- bg::model::polygon<Point> triangle;
- bg::read_wkt("POLYGON((5 52,9 53,7 50,5 52))", triangle);
- BOOST_CHECK_EQUAL(bg::within(Point(7, 52.5), triangle), true);
- BOOST_CHECK_EQUAL(bg::within(Point(8.0, 51.5), triangle), false);
- BOOST_CHECK_EQUAL(bg::within(Point(6.0, 51.0), triangle), false);
-
// Test spherical boxes
// See also http://www.gcmap.com/mapui?P=1E45N-19E45N-19E55N-1E55N-1E45N,10E55.1N,10E45.1N
bg::model::box<Point> box;
@@ -151,6 +92,10 @@ void test_3d()
BOOST_CHECK_EQUAL(bg::within(point_type(2, 4, 2), box), false);
BOOST_CHECK_EQUAL(bg::within(point_type(2, 2, 4), box), false);
BOOST_CHECK_EQUAL(bg::within(point_type(2, 2, 5), box), false);
+
+ box_type box2(point_type(2, 2, 2), point_type(3, 3, 3));
+ BOOST_CHECK_EQUAL(bg::within(box2, box), true);
+
}
template <typename P1, typename P2>
@@ -161,7 +106,8 @@ void test_mixed_of()
typedef boost::geometry::model::box<P1> box_type1;
typedef boost::geometry::model::box<P2> box_type2;
- polygon_type1 poly1, poly2;
+ polygon_type1 poly1;
+ polygon_type2 poly2;
boost::geometry::read_wkt("POLYGON((0 0,0 5,5 5,5 0,0 0))", poly1);
boost::geometry::read_wkt("POLYGON((0 0,0 5,5 5,5 0,0 0))", poly2);
@@ -206,45 +152,28 @@ void test_strategy()
typedef bg::model::box<point_type> box_type;
point_type p(3, 3);
box_type b(point_type(0, 0), point_type(5, 5));
+ box_type b0(point_type(0, 0), point_type(5, 0));
- bool r = bg::within(p, b,
+ bool r = bg::within(p, b,
bg::strategy::within::point_in_box<point_type, box_type>());
+ BOOST_CHECK_EQUAL(r, true);
- r = bg::within(b, b,
+ r = bg::within(b, b,
bg::strategy::within::box_in_box<box_type, box_type>());
+ BOOST_CHECK_EQUAL(r, true);
- r = bg::within(p, b,
+ r = bg::within(b0, b0,
+ bg::strategy::within::box_in_box<box_type, box_type>());
+ BOOST_CHECK_EQUAL(r, false);
+
+ r = bg::within(p, b,
bg::strategy::within::point_in_box_by_side<point_type, box_type>());
+ BOOST_CHECK_EQUAL(r, true);
}
-void test_large_integers()
-{
- typedef bg::model::point<int, 2, bg::cs::cartesian> int_point_type;
- typedef bg::model::point<double, 2, bg::cs::cartesian> double_point_type;
-
- std::string const polygon_li = "POLYGON((1872000 528000,1872000 192000,1536119 192000,1536000 528000,1200000 528000,1200000 863880,1536000 863880,1872000 863880,1872000 528000))";
- bg::model::polygon<int_point_type> int_poly;
- bg::model::polygon<double_point_type> double_poly;
- bg::read_wkt(polygon_li, int_poly);
- bg::read_wkt(polygon_li, double_poly);
-
- std::string const point_li = "POINT(1592000 583950)";
- int_point_type int_point;
- double_point_type double_point;
- bg::read_wkt(point_li, int_point);
- bg::read_wkt(point_li, double_point);
-
- bool wi = bg::within(int_point, int_poly);
- bool wd = bg::within(double_point, double_poly);
-
- BOOST_CHECK_MESSAGE(wi == wd, "within<a double> different from within<an int>");
-}
-
int test_main( int , char* [] )
{
- test_large_integers();
-
test_all<bg::model::d2::point_xy<int> >();
test_all<bg::model::d2::point_xy<double> >();
diff --git a/libs/geometry/test/algorithms/within.vcproj b/libs/geometry/test/algorithms/within.vcproj
deleted file mode 100644
index 89d03ef723..0000000000
--- a/libs/geometry/test/algorithms/within.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="within"
- ProjectGUID="{C7BCD670-543D-4B29-B2D6-F3169949F79D}"
- RootNamespace="within"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\within"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\within"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\within.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/algorithms/within_areal_areal.cpp b/libs/geometry/test/algorithms/within_areal_areal.cpp
new file mode 100644
index 0000000000..57f417d959
--- /dev/null
+++ b/libs/geometry/test/algorithms/within_areal_areal.cpp
@@ -0,0 +1,80 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#include <algorithms/test_within.hpp>
+
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/multi.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+template <typename P>
+void test_a_a()
+{
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::ring<P> ring;
+ typedef bg::model::multi_polygon<poly> mpoly;
+
+ test_geometry<ring, ring>("POLYGON((0 0,0 2,2 2,2 0,0 0))", "POLYGON((0 0,0 5,5 5,5 0,0 0))", true);
+ test_geometry<ring, poly>("POLYGON((0 0,0 5,5 5,5 0,0 0))", "POLYGON((0 0,0 5,5 5,5 0,0 0))", true);
+ test_geometry<poly, ring>("POLYGON((0 0,0 6,6 6,6 0,0 0))", "POLYGON((0 0,0 5,5 5,5 0,0 0))", false);
+
+ test_geometry<poly, poly>("POLYGON((0 0,0 9,9 9,9 0,0 0),(3 3,6 3,6 6,3 6,3 3))",
+ "POLYGON((0 0,0 9,9 9,9 0,0 0),(3 3,6 3,6 6,3 6,3 3))", true);
+ test_geometry<poly, poly>("POLYGON((0 0,0 9,9 9,9 0,0 0),(3 3,6 3,6 6,3 6,3 3))",
+ "POLYGON((0 0,0 9,9 9,9 0,0 0),(4 4,5 4,5 5,4 5,4 4))", true);
+ test_geometry<poly, poly>("POLYGON((1 1,1 8,8 8,8 1,1 1),(3 3,6 3,6 6,3 6,3 3))",
+ "POLYGON((0 0,0 9,9 9,9 0,0 0),(3 3,6 3,6 6,3 6,3 3))", true);
+ test_geometry<poly, poly>("POLYGON((1 1,1 8,8 8,8 1,1 1),(3 3,6 3,6 6,3 6,3 3))",
+ "POLYGON((0 0,0 9,9 9,9 0,0 0),(4 4,5 4,5 5,4 5,4 4))", true);
+
+ test_geometry<ring, mpoly>("POLYGON((0 0,0 2,2 2,2 0,0 0))",
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))", true);
+ test_geometry<poly, mpoly>("POLYGON((0 0,0 2,2 2,2 0,0 0))",
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))", true);
+
+ test_geometry<mpoly, ring>("MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0))", true);
+ test_geometry<mpoly, poly>("MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((15 15,15 110,110 110,110 15,15 15)))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0))", false);
+
+ test_geometry<mpoly, poly>("MULTIPOLYGON(((0 0,0 1,1 0,0 0)),((3 3,3 4,4 3,3 3)))",
+ "POLYGON((0 0,0 10,10 10,10 0,0 0),(3 3,4 3,4 4,3 4,3 3))", false);
+
+ test_geometry<mpoly, mpoly>("MULTIPOLYGON(((0 0,0 1,1 0,0 0)),((3 3,3 4,4 3,3 3)))",
+ "MULTIPOLYGON(((0 0,0 1,1 0,0 0)),((3 3,3 4,4 3,3 3)))", true);
+ test_geometry<mpoly, mpoly>("MULTIPOLYGON(((0 0,0 1,1 0,0 0)),((3 3,3 4,4 3,3 3)))",
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))", true);
+ test_geometry<mpoly, mpoly>("MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))",
+ "MULTIPOLYGON(((0 0,0 1,1 0,0 0)),((3 3,3 4,4 3,3 3)))", false);
+}
+
+template <typename P>
+void test_all()
+{
+ test_a_a<P>();
+}
+
+int test_main( int , char* [] )
+{
+ test_all<bg::model::d2::point_xy<int> >();
+ test_all<bg::model::d2::point_xy<double> >();
+
+#if defined(HAVE_TTMATH)
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/within_linear_areal.cpp b/libs/geometry/test/algorithms/within_linear_areal.cpp
new file mode 100644
index 0000000000..68f9ce396a
--- /dev/null
+++ b/libs/geometry/test/algorithms/within_linear_areal.cpp
@@ -0,0 +1,85 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#include <algorithms/test_within.hpp>
+
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/multi.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+template <typename P>
+void test_l_a()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::ring<P> ring;
+ typedef bg::model::multi_polygon<poly> mpoly;
+
+ // B,I
+ test_geometry<ls, ring>("LINESTRING(0 0, 2 2)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", true);
+
+ // B,I
+ test_geometry<ls, poly>("LINESTRING(0 0, 2 2)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", true);
+ // I
+ test_geometry<ls, poly>("LINESTRING(1 1, 2 2)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", true);
+ // I,E
+ test_geometry<ls, poly>("LINESTRING(1 1, 6 6)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", false);
+ // B
+ test_geometry<ls, poly>("LINESTRING(0 0, 5 0)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", false);
+ test_geometry<ls, poly>("LINESTRING(0 0, 0 5)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", false);
+ // E
+ test_geometry<ls, poly>("LINESTRING(6 0, 6 5)", "POLYGON((0 0,0 5,5 5,5 0,0 0))", false);
+
+ // BIBIB
+ test_geometry<ls, mpoly>("LINESTRING(0 0, 10 10)", "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))", true);
+ // BIBEBIB
+ test_geometry<ls, mpoly>("LINESTRING(0 0, 10 10)", "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((6 6,5 10,10 10,10 5,6 6)))", false);
+
+ // BI
+ test_geometry<mls, poly>("MULTILINESTRING((0 0,2 2),(2 2,3 3))", "POLYGON((0 0,0 5,5 5,5 0,0 0))", true);
+ // I E
+ test_geometry<mls, poly>("MULTILINESTRING((1 1,2 2),(6 6,7 7))", "POLYGON((0 0,0 5,5 5,5 0,0 0))", false);
+
+ // I I
+ test_geometry<mls, mpoly>("MULTILINESTRING((1 1,5 5),(6 6,7 7))",
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))",
+ true);
+ // I E
+ test_geometry<mls, mpoly>("MULTILINESTRING((1 1,5 5),(11 11,12 12))",
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))",
+ false);
+}
+
+template <typename P>
+void test_all()
+{
+ test_l_a<P>();
+}
+
+int test_main( int , char* [] )
+{
+ test_all<bg::model::d2::point_xy<int> >();
+ test_all<bg::model::d2::point_xy<double> >();
+
+
+#if defined(HAVE_TTMATH)
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/within_linear_linear.cpp b/libs/geometry/test/algorithms/within_linear_linear.cpp
new file mode 100644
index 0000000000..bf77d4cb84
--- /dev/null
+++ b/libs/geometry/test/algorithms/within_linear_linear.cpp
@@ -0,0 +1,99 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#include <algorithms/test_within.hpp>
+
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/multi.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+
+template <typename P>
+void test_l_l()
+{
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+
+ test_geometry<ls, ls>("LINESTRING(0 0, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 3 2)", true);
+
+ test_geometry<ls, ls>("LINESTRING(0 0, 1 1, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 3 2)", true);
+ test_geometry<ls, ls>("LINESTRING(3 2, 2 2, 1 1, 0 0)", "LINESTRING(0 0, 2 2, 3 2)", true);
+ test_geometry<ls, ls>("LINESTRING(0 0, 1 1, 2 2, 3 2)", "LINESTRING(3 2, 2 2, 0 0)", true);
+ test_geometry<ls, ls>("LINESTRING(3 2, 2 2, 1 1, 0 0)", "LINESTRING(3 2, 2 2, 0 0)", true);
+
+ test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 4 2)", true);
+ test_geometry<ls, ls>("LINESTRING(3 2, 2 2, 1 1)", "LINESTRING(0 0, 2 2, 4 2)", true);
+ test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 2)", "LINESTRING(4 2, 2 2, 0 0)", true);
+ test_geometry<ls, ls>("LINESTRING(3 2, 2 2, 1 1)", "LINESTRING(4 2, 2 2, 0 0)", true);
+
+ test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 3)", "LINESTRING(0 0, 2 2, 4 2)", false);
+ test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 2, 3 3)", "LINESTRING(0 0, 2 2, 4 2)", false);
+ test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 1)", "LINESTRING(0 0, 2 2, 4 2)", false);
+ test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 3 2, 3 1)", "LINESTRING(0 0, 2 2, 4 2)", false);
+
+ test_geometry<ls, ls>("LINESTRING(0 1, 1 1, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 4 2)", false);
+ test_geometry<ls, ls>("LINESTRING(0 1, 0 0, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 4 2)", false);
+ test_geometry<ls, ls>("LINESTRING(1 0, 1 1, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 4 2)", false);
+ test_geometry<ls, ls>("LINESTRING(1 0, 0 0, 2 2, 3 2)", "LINESTRING(0 0, 2 2, 4 2)", false);
+
+ // duplicated points
+ test_geometry<ls, ls>("LINESTRING(1 1, 2 2, 2 2)", "LINESTRING(0 0, 2 2, 4 2)", true);
+ test_geometry<ls, ls>("LINESTRING(1 1, 1 1, 2 2)", "LINESTRING(0 0, 2 2, 4 2)", true);
+
+ test_geometry<ls, ls>("LINESTRING(0 0, 0 0, 0 0, 1 1, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 2 2, 3 3)",
+ "LINESTRING(0 0, 2 2, 4 4)", true);
+
+ // invalid linestrings
+// test_geometry<ls, ls>("LINESTRING(0 0)", "LINESTRING(0 0)", false);
+// test_geometry<ls, ls>("LINESTRING(1 1)", "LINESTRING(0 0, 2 2)", true);
+// test_geometry<ls, ls>("LINESTRING(0 0)", "LINESTRING(0 0, 2 2)", false);
+// test_geometry<ls, ls>("LINESTRING(0 0, 1 1)", "LINESTRING(0 0)", false);
+
+ // spikes
+ // FOR NOW DISABLED
+
+ /*test_geometry<ls, ls>("LINESTRING(0 0,5 0,3 0,6 0)", "LINESTRING(0 0,6 0)", true);
+
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 3,1 1)", "LINESTRING(0 0,3 3,6 3)", true);
+ test_geometry<ls, ls>("LINESTRING(0 0,3 3,6 3)", "LINESTRING(0 0,2 2,3 3,1 1)", false);
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 3,1 1)", "LINESTRING(0 0,4 4,6 3)", true);
+ test_geometry<ls, ls>("LINESTRING(0 0,4 4,6 3)", "LINESTRING(0 0,2 2,3 3,1 1)", false);
+
+ test_geometry<ls, ls>("LINESTRING(0 0,2 2,3 3,1 1,5 3)", "LINESTRING(0 0,3 3,6 3)", false);*/
+
+ test_geometry<ls, mls>("LINESTRING(1 1, 2 2)", "MULTILINESTRING((0 0, 2 2),(3 3, 4 4))", true);
+
+ test_geometry<mls, ls>("MULTILINESTRING((0 0, 2 2),(3 3, 4 4))", "LINESTRING(0 0, 5 5)", true);
+
+ test_geometry<mls, mls>("MULTILINESTRING((1 1, 2 2),(3 3, 4 4))", "MULTILINESTRING((1 1, 2 2),(2 2, 5 5))", true);
+}
+
+template <typename P>
+void test_all()
+{
+ test_l_l<P>();
+}
+
+int test_main( int , char* [] )
+{
+ test_all<bg::model::d2::point_xy<int> >();
+ test_all<bg::model::d2::point_xy<double> >();
+
+#if defined(HAVE_TTMATH)
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/algorithms/within_pointlike_xxx.cpp b/libs/geometry/test/algorithms/within_pointlike_xxx.cpp
new file mode 100644
index 0000000000..392ee5f78d
--- /dev/null
+++ b/libs/geometry/test/algorithms/within_pointlike_xxx.cpp
@@ -0,0 +1,253 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#include <algorithms/test_within.hpp>
+
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/multi.hpp>
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+template <typename P>
+void test_p_p()
+{
+ typedef bg::model::multi_point<P> mpt;
+
+ test_geometry<P, P>("POINT(0 0)", "POINT(0 0)", true);
+ test_geometry<P, P>("POINT(0 0)", "POINT(1 1)", false);
+
+ test_geometry<P, mpt>("POINT(0 0)", "MULTIPOINT(0 0, 1 1)", true);
+ test_geometry<P, mpt>("POINT(0 0)", "MULTIPOINT(1 1, 2 2)", false);
+}
+
+template <typename P>
+void test_p_l()
+{
+ typedef bg::model::segment<P> seg;
+ typedef bg::model::linestring<P> ls;
+ typedef bg::model::multi_linestring<ls> mls;
+
+ test_geometry<P, seg>("POINT(1 1)", "LINESTRING(0 0, 2 2)", true);
+ test_geometry<P, seg>("POINT(0 0)", "LINESTRING(0 0, 1 1)", false);
+ test_geometry<P, seg>("POINT(1 0)", "LINESTRING(0 0, 1 1)", false);
+
+ test_geometry<P, ls>("POINT(0 0)", "LINESTRING(0 0,1 1,2 2)", false);
+ test_geometry<P, ls>("POINT(3 3)", "LINESTRING(0 0,1 1,2 2)", false);
+ test_geometry<P, ls>("POINT(1 1)", "LINESTRING(0 0,2 2,3 3)", true);
+
+ test_geometry<P, ls>("POINT(1 1)", "LINESTRING(0 0, 2 2)", true);
+ test_geometry<P, ls>("POINT(0 0)", "LINESTRING(0 0, 1 1)", false);
+
+ test_geometry<P, mls>("POINT(0 0)", "MULTILINESTRING((0 0,1 1,2 2),(0 0,0 1))", true);
+ test_geometry<P, mls>("POINT(0 0)", "MULTILINESTRING((0 0,1 1,2 2),(0 0,0 1),(0 0,1 0))", false);
+
+ test_geometry<P, mls>("POINT(1 1)", "MULTILINESTRING((0 0, 1 1),(1 1, 2 2))", true);
+ test_geometry<P, mls>("POINT(1 1)", "MULTILINESTRING((0 0, 1 1),(2 2, 3 3))", false);
+}
+
+template <typename P>
+void test_p_a()
+{
+ typedef bg::model::polygon<P> poly;
+ typedef bg::model::multi_polygon<poly> mpoly;
+
+ // trivial case
+ test_ring<P>("POINT(1 1)", "POLYGON((0 0,0 2,2 2,2 0,0 0))", true, false);
+
+ // on border/corner
+ test_ring<P>("POINT(0 0)", "POLYGON((0 0,0 2,2 2,2 0,0 0))", false, true);
+ test_ring<P>("POINT(0 1)", "POLYGON((0 0,0 2,2 2,2 0,0 0))", false, true);
+
+ // aligned to segment/vertex
+ test_ring<P>("POINT(1 1)", "POLYGON((0 0,0 3,3 3,3 1,2 1,2 0,0 0))", true, false);
+ test_ring<P>("POINT(1 1)", "POLYGON((0 0,0 3,4 3,3 1,2 2,2 0,0 0))", true, false);
+
+ // same polygon, but point on border
+ test_ring<P>("POINT(3 3)", "POLYGON((0 0,0 3,3 3,3 1,2 1,2 0,0 0))", false, true);
+ test_ring<P>("POINT(3 3)", "POLYGON((0 0,0 3,4 3,3 1,2 2,2 0,0 0))", false, true);
+
+ // holes
+ test_geometry<P, poly>("POINT(2 2)",
+ "POLYGON((0 0,0 4,4 4,4 0,0 0),(1 1,3 1,3 3,1 3,1 1))", false);
+
+ // Real-life problem (solved now), point is in the middle, 409623 is also a coordinate
+ // on the border, has been wrong in the past (2009)
+ test_ring<P>("POINT(146383 409623)",
+ "POLYGON((146351 410597,146521 410659,147906 410363,148088 410420"
+ ",148175 410296,148281 409750,148215 409623,148154 409666,148154 409666"
+ ",148130 409625,148035 409626,148035 409626,148008 409544,147963 409510"
+ ",147993 409457,147961 409352,147261 408687,147008 408586,145714 408840"
+ ",145001 409033,144486 409066,144616 409308,145023 410286,145254 410488"
+ ",145618 410612,145618 410612,146015 410565,146190 410545,146351 410597))",
+ true, false);
+
+ test_geometry<P, mpoly>("POINT(2 2)",
+ "MULTIPOLYGON(((0 0,0 4,4 4,4 0,0 0),(1 1,3 1,3 3,1 3,1 1)),((5 5,5 9,9 9,9 5,5 5)))", false);
+ test_geometry<P, mpoly>("POINT(1 1)",
+ "MULTIPOLYGON(((0 0,0 4,4 4,4 0,0 0),(1 1,3 1,3 3,1 3,1 1)),((5 5,5 9,9 9,9 5,5 5)))", false);
+ test_geometry<P, mpoly>("POINT(1 1)",
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0),(2 2,4 2,4 4,2 4,2 2)),((5 5,5 9,9 9,9 5,5 5)))", true);
+ test_geometry<P, mpoly>("POINT(6 6)",
+ "MULTIPOLYGON(((0 0,0 4,4 4,4 0,0 0),(1 1,3 1,3 3,1 3,1 1)),((5 5,5 9,9 9,9 5,5 5)))", true);
+}
+
+template <typename P>
+void test_all()
+{
+ test_p_p<P>();
+ test_p_l<P>();
+ test_p_a<P>();
+}
+
+template <typename Point>
+void test_spherical()
+{
+ bg::model::polygon<Point> wrangel;
+
+ // SQL Server check (no geography::STWithin, so check with intersection trick)
+ /*
+
+ with q as (
+ select geography::STGeomFromText('POLYGON((-178.569 71.5641,-179.034 71.5977,-179.305 71.5514,-179.629 71.5772,-180 71.5358,179.53 71.4383,178.872 71.2175,178.618 71.0355,178.791 70.7964,179.273 70.8886,179.678 70.8955,-180 70.9972,-179.274 70.9078,-178.819 70.98,-177.939 71.0375,-177.62 71.1166,-177.439 71.2269,-177.503 71.2775,-177.833 71.3461,-178.018 71.4497,-178.569 71.5641))',4326) as wrangel
+ )
+
+ select wrangel.STArea()/1000000.0
+ ,geography::STGeomFromText('POINT(-179.3 71.27)',4326).STIntersection(wrangel).STAsText() as workaround_within_1
+ ,geography::STGeomFromText('POINT(-179.9 70.95)',4326).STIntersection(wrangel).STAsText() as workaround_within_2
+ ,geography::STGeomFromText('POINT(179.9 70.95)',4326).STIntersection(wrangel).STAsText() as workaround_within_3
+ from q
+
+ -> 7669.10402181435 POINT (-179.3 71.27) GEOMETRYCOLLECTION EMPTY GEOMETRYCOLLECTION EMPTY
+
+ PostGIS knows Within for Geography neither, and the intersection trick gives the same result
+
+ */
+
+ bg::read_wkt("POLYGON((-178.568604 71.564148,-178.017548 71.449692,-177.833313 71.3461,-177.502838 71.277466 ,-177.439453 71.226929,-177.620026 71.116638,-177.9389 71.037491,-178.8186 70.979965,-179.274445 70.907761,-180 70.9972,179.678314 70.895538,179.272766 70.888596,178.791016 70.7964,178.617737 71.035538,178.872192 71.217484,179.530273 71.4383 ,-180 71.535843 ,-179.628601 71.577194,-179.305298 71.551361,-179.03421 71.597748,-178.568604 71.564148))", wrangel);
+
+ bool within = bg::within(Point(-179.3, 71.27), wrangel);
+ BOOST_CHECK_EQUAL(within, true);
+
+ within = bg::within(Point(-179.9, 70.95), wrangel);
+ BOOST_CHECK_EQUAL(within, false);
+
+ within = bg::within(Point(179.9, 70.95), wrangel);
+ BOOST_CHECK_EQUAL(within, false);
+
+ // Test using great circle mapper
+ // http://www.gcmap.com/mapui?P=5E52N-9E53N-7E50N-5E52N,7E52.5N,8E51.5N,6E51N
+
+ bg::model::polygon<Point> triangle;
+ bg::read_wkt("POLYGON((5 52,9 53,7 50,5 52))", triangle);
+ BOOST_CHECK_EQUAL(bg::within(Point(7, 52.5), triangle), true);
+ BOOST_CHECK_EQUAL(bg::within(Point(8.0, 51.5), triangle), false);
+ BOOST_CHECK_EQUAL(bg::within(Point(6.0, 51.0), triangle), false);
+}
+
+void test_large_integers()
+{
+ typedef bg::model::point<int, 2, bg::cs::cartesian> int_point_type;
+ typedef bg::model::point<double, 2, bg::cs::cartesian> double_point_type;
+
+ std::string const polygon_li = "POLYGON((1872000 528000,1872000 192000,1536119 192000,1536000 528000,1200000 528000,1200000 863880,1536000 863880,1872000 863880,1872000 528000))";
+ bg::model::polygon<int_point_type> int_poly;
+ bg::model::polygon<double_point_type> double_poly;
+ bg::read_wkt(polygon_li, int_poly);
+ bg::read_wkt(polygon_li, double_poly);
+
+ std::string const point_li = "POINT(1592000 583950)";
+ int_point_type int_point;
+ double_point_type double_point;
+ bg::read_wkt(point_li, int_point);
+ bg::read_wkt(point_li, double_point);
+
+ bool wi = bg::within(int_point, int_poly);
+ bool wd = bg::within(double_point, double_poly);
+
+ BOOST_CHECK_MESSAGE(wi == wd, "within<a double> different from within<an int>");
+}
+
+void test_tickets()
+{
+ typedef boost::geometry::model::d2::point_xy<double> pt;
+ typedef boost::geometry::model::ring<pt> ring;
+
+ // https://svn.boost.org/trac/boost/ticket/9628
+ {
+ ring r;
+ r.push_back(pt(-19155.669324773193,54820.312032458620));
+ r.push_back(pt(-13826.169324773080,54820.312032458627));
+ r.push_back(pt(-13826.169324773078,52720.312032458663));
+ r.push_back(pt(-12755.169324773129,52720.312032458663));
+ r.push_back(pt(-12755.169324773129,51087.312032458671));
+ r.push_back(pt(-12760.669324773080,51087.312032458671));
+ r.push_back(pt(-12760.669324773082,51070.312032458627));
+ r.push_back(pt(-19155.669324779392,51070.312032458620));
+ r.push_back(pt(-19155.669324773193,54820.312032458620));
+
+ pt p( -12260.669324773118, 54820.312032458634 );
+
+ //boost::geometry::correct(r);
+
+ bool within = boost::geometry::within(p, r);
+ BOOST_CHECK_EQUAL(within, false);
+ }
+ // similar
+ {
+ ring r;
+ r.push_back(pt(-14155.6,54820.312032458620));
+ r.push_back(pt(-13826.1,54820.312032458625));
+ r.push_back(pt(-12155.6,53720.3));
+ r.push_back(pt(-14155.6,54820.312032458620));
+
+ pt p( -13826.0, 54820.312032458634 );
+
+ bool within = boost::geometry::within(p, r);
+ BOOST_CHECK_EQUAL(within, false);
+ }
+
+ // https://svn.boost.org/trac/boost/ticket/10234
+ {
+ pt p;
+ ring r;
+ bg::read_wkt("POINT(0.1377 5.00)", p);
+ bg::read_wkt("POLYGON((0.1277 4.97, 0.1277 5.00, 0.1278 4.9999999999999982, 0.1278 4.97, 0.1277 4.97))", r);
+ bool within = boost::geometry::within(p, r);
+ BOOST_CHECK_EQUAL(within, false);
+ bool covered_by = boost::geometry::covered_by(p, r);
+ BOOST_CHECK_EQUAL(covered_by, false);
+ }
+}
+
+int test_main( int , char* [] )
+{
+ test_large_integers();
+
+ test_all<bg::model::d2::point_xy<int> >();
+ test_all<bg::model::d2::point_xy<double> >();
+
+ test_spherical<bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> > >();
+
+#if defined(HAVE_TTMATH)
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+ test_spherical<bg::model::point<ttmath_big, 2, bg::cs::spherical_equatorial<bg::degree> > >();
+#endif
+
+ test_tickets();
+
+ return 0;
+}
diff --git a/libs/geometry/test/arithmetic/arithmetic.cpp b/libs/geometry/test/arithmetic/arithmetic.cpp
index f7d2e34277..a329a6e524 100644
--- a/libs/geometry/test/arithmetic/arithmetic.cpp
+++ b/libs/geometry/test/arithmetic/arithmetic.cpp
@@ -29,7 +29,7 @@ BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian)
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
-template <typename P>
+template <typename P, typename P2>
void test_addition()
{
P p1;
@@ -39,15 +39,14 @@ void test_addition()
BOOST_CHECK(bg::get<1>(p1) == 12);
BOOST_CHECK(bg::get<2>(p1) == 13);
- P p2;
- bg::assign_values(p2, 4, 5, 6);
+ P2 p2(4, 5, 6);
bg::add_point(p1, p2);
BOOST_CHECK(bg::get<0>(p1) == 15);
BOOST_CHECK(bg::get<1>(p1) == 17);
BOOST_CHECK(bg::get<2>(p1) == 19);
}
-template <typename P>
+template <typename P, typename P2>
void test_subtraction()
{
P p1;
@@ -57,15 +56,14 @@ void test_subtraction()
BOOST_CHECK(bg::get<1>(p1) == -8);
BOOST_CHECK(bg::get<2>(p1) == -7);
- P p2;
- bg::assign_values(p2, 4, 6, 8);
+ P2 p2(4, 6, 8);
bg::subtract_point(p1, p2);
BOOST_CHECK(bg::get<0>(p1) == -13);
BOOST_CHECK(bg::get<1>(p1) == -14);
BOOST_CHECK(bg::get<2>(p1) == -15);
}
-template <typename P>
+template <typename P, typename P2>
void test_multiplication()
{
P p1;
@@ -75,15 +73,14 @@ void test_multiplication()
BOOST_CHECK(bg::get<1>(p1) == 10);
BOOST_CHECK(bg::get<2>(p1) == 15);
- P p2;
- bg::assign_values(p2, 4, 5, 6);
+ P2 p2(4, 5, 6);
bg::multiply_point(p1, p2);
BOOST_CHECK(bg::get<0>(p1) == 20);
BOOST_CHECK(bg::get<1>(p1) == 50);
BOOST_CHECK(bg::get<2>(p1) == 90);
}
-template <typename P>
+template <typename P, typename P2>
void test_division()
{
P p1;
@@ -93,40 +90,41 @@ void test_division()
BOOST_CHECK(bg::get<1>(p1) == 20);
BOOST_CHECK(bg::get<2>(p1) == 30);
- P p2;
- bg::assign_values(p2, 2, 4, 6);
+ P2 p2(2, 4, 6);
bg::divide_point(p1, p2);
BOOST_CHECK(bg::get<0>(p1) == 5);
BOOST_CHECK(bg::get<1>(p1) == 5);
BOOST_CHECK(bg::get<2>(p1) == 5);
}
-template <typename P>
+template <typename P, typename P2>
void test_assign()
{
P p1;
- P p2;
+ P2 p2(12, 34, 56);
bg::assign_values(p1, 12, 34, 56);
- bg::assign_point(p2, p1);
- BOOST_CHECK(bg::get<0>(p2) == 12);
- BOOST_CHECK(bg::get<1>(p2) == 34);
- BOOST_CHECK(bg::get<2>(p2) == 56);
-
- bg::assign_value(p2, 78);
- BOOST_CHECK(bg::get<0>(p2) == 78);
- BOOST_CHECK(bg::get<1>(p2) == 78);
- BOOST_CHECK(bg::get<2>(p2) == 78);
+ bg::assign_point(p1, p2);
+ BOOST_CHECK(bg::get<0>(p1) == 12);
+ BOOST_CHECK(bg::get<1>(p1) == 34);
+ BOOST_CHECK(bg::get<2>(p1) == 56);
+
+ bg::assign_value(p1, 78);
+ BOOST_CHECK(bg::get<0>(p1) == 78);
+ BOOST_CHECK(bg::get<1>(p1) == 78);
+ BOOST_CHECK(bg::get<2>(p1) == 78);
}
template <typename P>
void test_all()
{
- test_addition<P>();
- test_subtraction<P>();
- test_multiplication<P>();
- test_division<P>();
- test_assign<P>();
+ typedef test::test_const_point P2;
+
+ test_addition<P, P2>();
+ test_subtraction<P, P2>();
+ test_multiplication<P, P2>();
+ test_division<P, P2>();
+ test_assign<P, P2>();
}
diff --git a/libs/geometry/test/arithmetic/arithmetic.vcproj b/libs/geometry/test/arithmetic/arithmetic.vcproj
deleted file mode 100644
index f2d448a33a..0000000000
--- a/libs/geometry/test/arithmetic/arithmetic.vcproj
+++ /dev/null
@@ -1,169 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="arithmetic"
- ProjectGUID="{4D447233-54DC-4C1B-B8DF-4689590ACF56}"
- RootNamespace="arithmetic"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\arithmetic"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- RuntimeLibrary="1"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\arithmetic"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\arithmetic.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/arithmetic/arithmetic_tests.sln b/libs/geometry/test/arithmetic/arithmetic_tests.sln
deleted file mode 100644
index 37a636a0e6..0000000000
--- a/libs/geometry/test/arithmetic/arithmetic_tests.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "arithmetic", "arithmetic.vcproj", "{4D447233-54DC-4C1B-B8DF-4689590ACF56}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dot_product", "dot_product.vcproj", "{C9CD2A98-3327-4560-A979-4BF506F777A8}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {4D447233-54DC-4C1B-B8DF-4689590ACF56}.Debug|Win32.ActiveCfg = Debug|Win32
- {4D447233-54DC-4C1B-B8DF-4689590ACF56}.Debug|Win32.Build.0 = Debug|Win32
- {4D447233-54DC-4C1B-B8DF-4689590ACF56}.Release|Win32.ActiveCfg = Release|Win32
- {4D447233-54DC-4C1B-B8DF-4689590ACF56}.Release|Win32.Build.0 = Release|Win32
- {C9CD2A98-3327-4560-A979-4BF506F777A8}.Debug|Win32.ActiveCfg = Debug|Win32
- {C9CD2A98-3327-4560-A979-4BF506F777A8}.Debug|Win32.Build.0 = Debug|Win32
- {C9CD2A98-3327-4560-A979-4BF506F777A8}.Release|Win32.ActiveCfg = Release|Win32
- {C9CD2A98-3327-4560-A979-4BF506F777A8}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/arithmetic/dot_product.vcproj b/libs/geometry/test/arithmetic/dot_product.vcproj
deleted file mode 100644
index 879b92154d..0000000000
--- a/libs/geometry/test/arithmetic/dot_product.vcproj
+++ /dev/null
@@ -1,169 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="dot_product"
- ProjectGUID="{C9CD2A98-3327-4560-A979-4BF506F777A8}"
- RootNamespace="dot_product"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\dot_product"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- RuntimeLibrary="1"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\dot_product"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\dot_product.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/boost.vsprops b/libs/geometry/test/boost.vsprops
deleted file mode 100644
index c527810d4f..0000000000
--- a/libs/geometry/test/boost.vsprops
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="boost"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(BOOST_ROOT)&quot;;../../.."
- PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE"
- WarningLevel="3"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories="$(BOOST_ROOT)\lib"
- />
- <UserMacro
- Name="BOOST_ROOT"
- Value="../../.."
- />
-</VisualStudioPropertySheet>
diff --git a/libs/geometry/test/concepts/concepts_tests.sln b/libs/geometry/test/concepts/concepts_tests.sln
deleted file mode 100644
index 1430bdcc01..0000000000
--- a/libs/geometry/test/concepts/concepts_tests.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "linestring_concept", "linestring_concept.vcproj", "{CA8D5E44-7D8F-44A1-900C-35C28890299B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "polygon_concept", "polygon_concept.vcproj", "{306B99D1-576A-4EB6-BF7E-B111CA3807FE}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Debug|Win32.ActiveCfg = Debug|Win32
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Debug|Win32.Build.0 = Debug|Win32
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Release|Win32.ActiveCfg = Release|Win32
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Release|Win32.Build.0 = Release|Win32
- {306B99D1-576A-4EB6-BF7E-B111CA3807FE}.Debug|Win32.ActiveCfg = Debug|Win32
- {306B99D1-576A-4EB6-BF7E-B111CA3807FE}.Debug|Win32.Build.0 = Debug|Win32
- {306B99D1-576A-4EB6-BF7E-B111CA3807FE}.Release|Win32.ActiveCfg = Release|Win32
- {306B99D1-576A-4EB6-BF7E-B111CA3807FE}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/concepts/linestring_concept.vcproj b/libs/geometry/test/concepts/linestring_concept.vcproj
deleted file mode 100644
index c40b03bf13..0000000000
--- a/libs/geometry/test/concepts/linestring_concept.vcproj
+++ /dev/null
@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="linestring_concept"
- ProjectGUID="{CA8D5E44-7D8F-44A1-900C-35C28890299B}"
- RootNamespace="linestring_concept"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\linestring_concept"
- ConfigurationType="1"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\linestring_concept"
- ConfigurationType="1"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\linestring_concept.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/core/access.vcproj b/libs/geometry/test/core/access.vcproj
deleted file mode 100644
index 845fa4efe0..0000000000
--- a/libs/geometry/test/core/access.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="access"
- ProjectGUID="{5542B963-D229-4393-968F-E62DDCE4B87B}"
- RootNamespace="access"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\access"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\access"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\access.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/core/core.sln b/libs/geometry/test/core/core.sln
deleted file mode 100644
index 9f368dbc03..0000000000
--- a/libs/geometry/test/core/core.sln
+++ /dev/null
@@ -1,37 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "access", "access.vcproj", "{5542B963-D229-4393-968F-E62DDCE4B87B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reverse_dispatch", "reverse_dispatch.vcproj", "{EA65AF97-67BC-49C8-9CAF-4136514A41EE}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radian_access", "radian_access.vcproj", "{DE2968B5-DCA6-4D85-A620-7DA111FC0E06}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ring", "ring.vcproj", "{1EE3F112-638F-4447-8F9D-4C5BB3304C3B}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {5542B963-D229-4393-968F-E62DDCE4B87B}.Debug|Win32.ActiveCfg = Debug|Win32
- {5542B963-D229-4393-968F-E62DDCE4B87B}.Debug|Win32.Build.0 = Debug|Win32
- {5542B963-D229-4393-968F-E62DDCE4B87B}.Release|Win32.ActiveCfg = Release|Win32
- {5542B963-D229-4393-968F-E62DDCE4B87B}.Release|Win32.Build.0 = Release|Win32
- {EA65AF97-67BC-49C8-9CAF-4136514A41EE}.Debug|Win32.ActiveCfg = Debug|Win32
- {EA65AF97-67BC-49C8-9CAF-4136514A41EE}.Debug|Win32.Build.0 = Debug|Win32
- {EA65AF97-67BC-49C8-9CAF-4136514A41EE}.Release|Win32.ActiveCfg = Release|Win32
- {EA65AF97-67BC-49C8-9CAF-4136514A41EE}.Release|Win32.Build.0 = Release|Win32
- {DE2968B5-DCA6-4D85-A620-7DA111FC0E06}.Debug|Win32.ActiveCfg = Debug|Win32
- {DE2968B5-DCA6-4D85-A620-7DA111FC0E06}.Debug|Win32.Build.0 = Debug|Win32
- {DE2968B5-DCA6-4D85-A620-7DA111FC0E06}.Release|Win32.ActiveCfg = Release|Win32
- {DE2968B5-DCA6-4D85-A620-7DA111FC0E06}.Release|Win32.Build.0 = Release|Win32
- {1EE3F112-638F-4447-8F9D-4C5BB3304C3B}.Debug|Win32.ActiveCfg = Debug|Win32
- {1EE3F112-638F-4447-8F9D-4C5BB3304C3B}.Debug|Win32.Build.0 = Debug|Win32
- {1EE3F112-638F-4447-8F9D-4C5BB3304C3B}.Release|Win32.ActiveCfg = Release|Win32
- {1EE3F112-638F-4447-8F9D-4C5BB3304C3B}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/core/point_type.cpp b/libs/geometry/test/core/point_type.cpp
index a1154295e0..1d6446dc6a 100644
--- a/libs/geometry/test/core/point_type.cpp
+++ b/libs/geometry/test/core/point_type.cpp
@@ -3,6 +3,11 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
// 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)
@@ -10,16 +15,20 @@
#include <geometry_test_common.hpp>
+#include <boost/type_traits/is_same.hpp>
#include <boost/geometry/core/tag.hpp>
#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/variant.hpp>
#include <boost/geometry/geometries/adapted/c_array.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
#include <boost/geometry/geometries/register/linestring.hpp>
+#include <boost/variant/variant.hpp>
+
#include <vector>
#include <deque>
@@ -35,6 +44,9 @@ void test_geometry()
{
BOOST_CHECK_EQUAL(typeid(typename bg::point_type<G>::type).name(),
typeid(Expected).name());
+
+ static const bool is_same = boost::is_same<typename bg::point_type<G>::type, Expected>::value;
+ BOOST_CHECK(is_same);
}
template <typename P>
@@ -42,7 +54,12 @@ void test_all()
{
test_geometry<P, P>();
test_geometry<P const, P>();
+ test_geometry<P*, P>();
+ test_geometry<P&, P>();
+ test_geometry<P*&, P>();
+ test_geometry<const P *, P>();
test_geometry<bg::model::linestring<P> , P>();
+ test_geometry<bg::model::linestring<P> *&, P>();
test_geometry<bg::model::ring<P> , P>();
test_geometry<bg::model::polygon<P> , P>();
test_geometry<bg::model::box<P> , P>();
@@ -64,9 +81,12 @@ int test_main(int, char* [])
test_geometry<double[3], double[3]>();
test_geometry<boost::tuple<double, double>,
- boost::tuple<double, double> >();
+ boost::tuple<double, double> >();
test_geometry<boost::tuple<double, double, double>,
- boost::tuple<double, double, double> >();
+ boost::tuple<double, double, double> >();
+
+ test_geometry<boost::variant<bg::model::box<boost::tuple<double, double> > >,
+ boost::tuple<double, double> >();
test_all<bg::model::point<int, 2, bg::cs::cartesian> >();
test_all<bg::model::point<float, 2, bg::cs::cartesian> >();
diff --git a/libs/geometry/test/core/radian_access.vcproj b/libs/geometry/test/core/radian_access.vcproj
deleted file mode 100644
index 5e5613ca08..0000000000
--- a/libs/geometry/test/core/radian_access.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="radian_access"
- ProjectGUID="{DE2968B5-DCA6-4D85-A620-7DA111FC0E06}"
- RootNamespace="radian_access"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\radian_access"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\radian_access"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\radian_access.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/core/reverse_dispatch.vcproj b/libs/geometry/test/core/reverse_dispatch.vcproj
deleted file mode 100644
index 2966d9db47..0000000000
--- a/libs/geometry/test/core/reverse_dispatch.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="reverse_dispatch"
- ProjectGUID="{EA65AF97-67BC-49C8-9CAF-4136514A41EE}"
- RootNamespace="reverse_dispatch"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\reverse_dispatch"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\reverse_dispatch"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\reverse_dispatch.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/core/ring.cpp b/libs/geometry/test/core/ring.cpp
index f2c3ac4cba..cf7ee5d7ed 100644
--- a/libs/geometry/test/core/ring.cpp
+++ b/libs/geometry/test/core/ring.cpp
@@ -5,6 +5,11 @@
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 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.
@@ -30,6 +35,15 @@
#include <boost/geometry/io/wkt/read.hpp>
+template <typename Poly>
+void test_order_closure(bg::order_selector expected_order, bg::closure_selector exptected_closure)
+{
+ bg::order_selector order = bg::point_order<Poly>::value;
+ bg::closure_selector closure = bg::closure<Poly>::value;
+
+ BOOST_CHECK_EQUAL(order, expected_order);
+ BOOST_CHECK_EQUAL(closure, exptected_closure);
+}
template <typename P>
@@ -64,6 +78,17 @@ void test_all()
test_ring<P>("POLYGON((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))", 5, 1, 5);
test_ring<P>("POLYGON((0 0,0 3,3 3,3 0,0 0),(1 1,2 2,2 1,1 1),(1 1,1 2,2 2,1 1))", 5, 2, 4);
test_ring<P>("POLYGON((0 0,0 3,3 3,3 0,0 0))", 5, 0, 0);
+
+ test_order_closure< bg::model::polygon<P, true, true> >(bg::clockwise, bg::closed);
+ test_order_closure< bg::model::polygon<P, true, false> >(bg::clockwise, bg::open);
+ test_order_closure< bg::model::polygon<P, false, true> >(bg::counterclockwise, bg::closed);
+ test_order_closure< bg::model::polygon<P, false, false> >(bg::counterclockwise, bg::open);
+
+ test_order_closure< bg::model::polygon<P> *>(bg::clockwise, bg::closed);
+ test_order_closure< bg::model::polygon<P> &>(bg::clockwise, bg::closed);
+ test_order_closure< bg::model::polygon<P> const>(bg::clockwise, bg::closed);
+ test_order_closure< bg::model::polygon<P> *&>(bg::clockwise, bg::closed);
+ test_order_closure< const bg::model::polygon<P> *>(bg::clockwise, bg::closed);
}
diff --git a/libs/geometry/test/core/ring.vcproj b/libs/geometry/test/core/ring.vcproj
deleted file mode 100644
index e5e1a90fb0..0000000000
--- a/libs/geometry/test/core/ring.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="ring"
- ProjectGUID="{1EE3F112-638F-4447-8F9D-4C5BB3304C3B}"
- RootNamespace="ring"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\ring"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\ring"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\ring.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/core/tag.cpp b/libs/geometry/test/core/tag.cpp
index d3bbc4bc35..f67c58d4b3 100644
--- a/libs/geometry/test/core/tag.cpp
+++ b/libs/geometry/test/core/tag.cpp
@@ -3,6 +3,11 @@
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
// 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)
@@ -10,6 +15,8 @@
#include <geometry_test_common.hpp>
+#include <boost/type_traits/is_same.hpp>
+
#include <boost/geometry/core/tag.hpp>
#include <boost/geometry/geometries/geometries.hpp>
@@ -34,6 +41,9 @@ void test_geometry()
{
BOOST_CHECK_EQUAL(typeid(typename bg::tag<G>::type).name(),
typeid(Expected).name());
+
+ static const bool is_same = boost::is_same<typename bg::tag<G>::type, Expected>::value;
+ BOOST_CHECK(is_same);
}
template <typename P, size_t D>
@@ -41,7 +51,12 @@ void test_all()
{
test_geometry<P, bg::point_tag>();
test_geometry<P const, bg::point_tag>();
+ test_geometry<P*, bg::point_tag>();
+ test_geometry<P&, bg::point_tag>();
+ test_geometry<P*&, bg::point_tag>();
+ test_geometry<const P *, bg::point_tag>();
test_geometry<bg::model::linestring<P> , bg::linestring_tag>();
+ test_geometry<bg::model::linestring<P> *&, bg::linestring_tag>();
test_geometry<bg::model::ring<P> , bg::ring_tag>();
test_geometry<bg::model::polygon<P> , bg::polygon_tag>();
test_geometry<bg::model::box<P> , bg::box_tag>();
diff --git a/libs/geometry/test/geometries/adapted.cpp b/libs/geometry/test/geometries/adapted.cpp
index 3ba47ef728..fd3bb64196 100644
--- a/libs/geometry/test/geometries/adapted.cpp
+++ b/libs/geometry/test/geometries/adapted.cpp
@@ -11,6 +11,7 @@
#include <vector>
#include <geometry_test_common.hpp>
+#include <boost/core/ignore_unused.hpp>
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/multi/multi.hpp>
@@ -31,7 +32,7 @@
BOOST_GEOMETRY_REGISTER_RING_TEMPLATED(std::vector)
BOOST_GEOMETRY_REGISTER_RING_TEMPLATED(std::deque)
-
+
#elif defined(BOOST_GEOMETRY_TEST_MULTI_POINT)
#include <boost/geometry/multi/geometries/register/multi_point.hpp>
@@ -39,7 +40,7 @@
BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED(std::vector)
BOOST_GEOMETRY_REGISTER_MULTI_POINT_TEMPLATED(std::deque)
-
+
#else
#include <boost/geometry/geometries/register/linestring.hpp>
@@ -47,7 +48,7 @@
BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED(std::vector)
BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED(std::deque)
-
+
#endif
@@ -70,10 +71,10 @@ void test_geometry(G const& geometry, std::size_t expected_size = 0)
typedef typename bg::point_type<G>::type P;
typedef typename bg::coordinate_type<P>::type C;
+ boost::ignore_unused<P, C>();
// Check range-like behaviour
BOOST_CHECK_EQUAL(boost::size(geometry), expected_size);
-
}
template <typename P>
diff --git a/libs/geometry/test/geometries/boost_array_as_point.cpp b/libs/geometry/test/geometries/boost_array_as_point.cpp
index c1ffe0bf54..6fc7cac73d 100644
--- a/libs/geometry/test/geometries/boost_array_as_point.cpp
+++ b/libs/geometry/test/geometries/boost_array_as_point.cpp
@@ -1,7 +1,7 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
-// Copyright (c) 2010 Alfredo Correa
+// Copyright (c) 2010 Alfredo Correa
// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
// Use, modification and distribution is subject to the Boost Software License,
diff --git a/libs/geometry/test/geometries/boost_array_as_point.vcproj b/libs/geometry/test/geometries/boost_array_as_point.vcproj
deleted file mode 100644
index 75008a5822..0000000000
--- a/libs/geometry/test/geometries/boost_array_as_point.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="boost_array_as_point"
- ProjectGUID="{77F84000-D088-46AD-A023-08552101B1C5}"
- RootNamespace="boost_array_as_point"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\boost_array_as_point"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\boost_array_as_point"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\boost_array_as_point.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/geometries/boost_fusion.vcproj b/libs/geometry/test/geometries/boost_fusion.vcproj
deleted file mode 100644
index 95d2b6015f..0000000000
--- a/libs/geometry/test/geometries/boost_fusion.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="boost_fusion"
- ProjectGUID="{C218C979-890F-4690-84E0-837DC661CE57}"
- RootNamespace="boost_fusion"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\boost_fusion"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\boost_fusion"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\boost_fusion.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/geometries/boost_polygon.vcproj b/libs/geometry/test/geometries/boost_polygon.vcproj
deleted file mode 100644
index f346bb667c..0000000000
--- a/libs/geometry/test/geometries/boost_polygon.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="boost_polygon"
- ProjectGUID="{6809180F-1E31-42B0-8481-67AC8E9B180B}"
- RootNamespace="boost_polygon"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\boost_polygon"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\boost_polygon"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\boost_polygon.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/geometries/boost_polygon_overlay.vcproj b/libs/geometry/test/geometries/boost_polygon_overlay.vcproj
deleted file mode 100644
index 8f662b36e5..0000000000
--- a/libs/geometry/test/geometries/boost_polygon_overlay.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="boost_polygon_overlay"
- ProjectGUID="{93C4EB19-8A0C-437E-9F82-A0DB4A4A5C32}"
- RootNamespace="boost_polygon_overlay"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\boost_polygon_overlay"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\boost_polygon_overlay"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\boost_polygon_overlay.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/geometries/boost_range.cpp b/libs/geometry/test/geometries/boost_range.cpp
index d80ca33c8b..d2a2ff5d99 100644
--- a/libs/geometry/test/geometries/boost_range.cpp
+++ b/libs/geometry/test/geometries/boost_range.cpp
@@ -25,6 +25,7 @@
#include <sstream>
+#ifdef BOOST_GEOMETRY_TEST_QUARANTINED
struct not_two
{
template <typename P>
@@ -42,6 +43,7 @@ struct sum_not_five
return boost::geometry::get<0>(p1) + boost::geometry::get<0>(p2) != 5.0;
}
};
+#endif
template <typename P>
@@ -74,6 +76,10 @@ void test_range_adaptor()
BOOST_CHECK_EQUAL(out.str(), "LINESTRING(2 2,3 3)");
}
+#ifdef BOOST_GEOMETRY_TEST_QUARANTINED
+// range filter adaptor does not support boost::size()
+// This makes it in practice not applicable, boost::geometry calls boost::size
+// in most if not all algorithms
{
std::ostringstream out;
out << bg::wkt(ls | boost::adaptors::filtered(not_two()));
@@ -96,6 +102,7 @@ void test_range_adaptor()
//out << bg::wkt(ls | boost::adaptors::uniqued);
//BOOST_CHECK_EQUAL(out.str(), "LINESTRING(1 1,2 2,3 3,4 4)");
}
+#endif
}
template <typename P>
diff --git a/libs/geometry/test/geometries/boost_range.vcproj b/libs/geometry/test/geometries/boost_range.vcproj
deleted file mode 100644
index e6f7455e9c..0000000000
--- a/libs/geometry/test/geometries/boost_range.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="boost_range"
- ProjectGUID="{8E719071-B525-4F58-832A-AB75FCA8BEA0}"
- RootNamespace="boost_range"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\boost_range"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\boost_range"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\boost_range.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/geometries/box.vcproj b/libs/geometry/test/geometries/box.vcproj
deleted file mode 100644
index 08bf875851..0000000000
--- a/libs/geometry/test/geometries/box.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="box"
- ProjectGUID="{EB7B69C6-2D62-43BC-BA18-D15BEB998665}"
- RootNamespace="box"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\box"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\box"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\box.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/geometries/concepts/check.sln b/libs/geometry/test/geometries/concepts/check.sln
deleted file mode 100644
index 98293a6697..0000000000
--- a/libs/geometry/test/geometries/concepts/check.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "check", "check.vcproj", "{6260214E-DB6F-4934-ADF7-DD2B1666171B}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6260214E-DB6F-4934-ADF7-DD2B1666171B}.Debug|Win32.ActiveCfg = Debug|Win32
- {6260214E-DB6F-4934-ADF7-DD2B1666171B}.Debug|Win32.Build.0 = Debug|Win32
- {6260214E-DB6F-4934-ADF7-DD2B1666171B}.Release|Win32.ActiveCfg = Release|Win32
- {6260214E-DB6F-4934-ADF7-DD2B1666171B}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/geometries/concepts/check.vcproj b/libs/geometry/test/geometries/concepts/check.vcproj
deleted file mode 100644
index 480b4145bf..0000000000
--- a/libs/geometry/test/geometries/concepts/check.vcproj
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="check"
- ProjectGUID="{6260214E-DB6F-4934-ADF7-DD2B1666171B}"
- RootNamespace="check"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\check"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../../../../boost;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\check"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../../../../boost;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\check.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/geometries/custom_linestring.cpp b/libs/geometry/test/geometries/custom_linestring.cpp
index ef2bad43ad..35315503ad 100644
--- a/libs/geometry/test/geometries/custom_linestring.cpp
+++ b/libs/geometry/test/geometries/custom_linestring.cpp
@@ -56,7 +56,7 @@ namespace boost { namespace geometry { namespace traits {
// by specializing the "use_std" traits to false.
// It should therefore implement the traits:: clear / append_point
template <typename P>
-struct custom_linestring2 : std::deque<P> // std::pair<typename std::vector<P>::const_iterator, typename std::vector<P>::const_iterator>
+struct custom_linestring2 : std::deque<P> // std::pair<typename std::vector<P>::const_iterator, typename std::vector<P>::const_iterator>
{
};
diff --git a/libs/geometry/test/geometries/custom_linestring.vcproj b/libs/geometry/test/geometries/custom_linestring.vcproj
deleted file mode 100644
index 8dfe0c7ebb..0000000000
--- a/libs/geometry/test/geometries/custom_linestring.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="custom_linestring"
- ProjectGUID="{CA8D5E44-7D8F-44A1-900C-35C28890299B}"
- RootNamespace="custom_linestring"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\custom_linestring"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\custom_linestring"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\custom_linestring.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/geometries/geometries_tests.sln b/libs/geometry/test/geometries/geometries_tests.sln
deleted file mode 100644
index 56097d0125..0000000000
--- a/libs/geometry/test/geometries/geometries_tests.sln
+++ /dev/null
@@ -1,61 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "box", "box.vcproj", "{EB7B69C6-2D62-43BC-BA18-D15BEB998665}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_linestring", "custom_linestring.vcproj", "{CA8D5E44-7D8F-44A1-900C-35C28890299B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "segment", "segment.vcproj", "{F995B070-62A2-46FE-A676-79AADB71DBD8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boost_array_as_point", "boost_array_as_point.vcproj", "{77F84000-D088-46AD-A023-08552101B1C5}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boost_polygon", "boost_polygon.vcproj", "{6809180F-1E31-42B0-8481-67AC8E9B180B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boost_range", "boost_range.vcproj", "{8E719071-B525-4F58-832A-AB75FCA8BEA0}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boost_fusion", "boost_fusion.vcproj", "{C218C979-890F-4690-84E0-837DC661CE57}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boost_polygon_overlay", "boost_polygon_overlay.vcproj", "{93C4EB19-8A0C-437E-9F82-A0DB4A4A5C32}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {EB7B69C6-2D62-43BC-BA18-D15BEB998665}.Debug|Win32.ActiveCfg = Debug|Win32
- {EB7B69C6-2D62-43BC-BA18-D15BEB998665}.Debug|Win32.Build.0 = Debug|Win32
- {EB7B69C6-2D62-43BC-BA18-D15BEB998665}.Release|Win32.ActiveCfg = Release|Win32
- {EB7B69C6-2D62-43BC-BA18-D15BEB998665}.Release|Win32.Build.0 = Release|Win32
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Debug|Win32.ActiveCfg = Debug|Win32
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Debug|Win32.Build.0 = Debug|Win32
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Release|Win32.ActiveCfg = Release|Win32
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Release|Win32.Build.0 = Release|Win32
- {F995B070-62A2-46FE-A676-79AADB71DBD8}.Debug|Win32.ActiveCfg = Debug|Win32
- {F995B070-62A2-46FE-A676-79AADB71DBD8}.Debug|Win32.Build.0 = Debug|Win32
- {F995B070-62A2-46FE-A676-79AADB71DBD8}.Release|Win32.ActiveCfg = Release|Win32
- {F995B070-62A2-46FE-A676-79AADB71DBD8}.Release|Win32.Build.0 = Release|Win32
- {77F84000-D088-46AD-A023-08552101B1C5}.Debug|Win32.ActiveCfg = Debug|Win32
- {77F84000-D088-46AD-A023-08552101B1C5}.Debug|Win32.Build.0 = Debug|Win32
- {77F84000-D088-46AD-A023-08552101B1C5}.Release|Win32.ActiveCfg = Release|Win32
- {77F84000-D088-46AD-A023-08552101B1C5}.Release|Win32.Build.0 = Release|Win32
- {6809180F-1E31-42B0-8481-67AC8E9B180B}.Debug|Win32.ActiveCfg = Debug|Win32
- {6809180F-1E31-42B0-8481-67AC8E9B180B}.Debug|Win32.Build.0 = Debug|Win32
- {6809180F-1E31-42B0-8481-67AC8E9B180B}.Release|Win32.ActiveCfg = Release|Win32
- {6809180F-1E31-42B0-8481-67AC8E9B180B}.Release|Win32.Build.0 = Release|Win32
- {8E719071-B525-4F58-832A-AB75FCA8BEA0}.Debug|Win32.ActiveCfg = Debug|Win32
- {8E719071-B525-4F58-832A-AB75FCA8BEA0}.Debug|Win32.Build.0 = Debug|Win32
- {8E719071-B525-4F58-832A-AB75FCA8BEA0}.Release|Win32.ActiveCfg = Release|Win32
- {8E719071-B525-4F58-832A-AB75FCA8BEA0}.Release|Win32.Build.0 = Release|Win32
- {C218C979-890F-4690-84E0-837DC661CE57}.Debug|Win32.ActiveCfg = Debug|Win32
- {C218C979-890F-4690-84E0-837DC661CE57}.Debug|Win32.Build.0 = Debug|Win32
- {C218C979-890F-4690-84E0-837DC661CE57}.Release|Win32.ActiveCfg = Release|Win32
- {C218C979-890F-4690-84E0-837DC661CE57}.Release|Win32.Build.0 = Release|Win32
- {93C4EB19-8A0C-437E-9F82-A0DB4A4A5C32}.Debug|Win32.ActiveCfg = Debug|Win32
- {93C4EB19-8A0C-437E-9F82-A0DB4A4A5C32}.Debug|Win32.Build.0 = Debug|Win32
- {93C4EB19-8A0C-437E-9F82-A0DB4A4A5C32}.Release|Win32.ActiveCfg = Release|Win32
- {93C4EB19-8A0C-437E-9F82-A0DB4A4A5C32}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/geometries/segment.cpp b/libs/geometry/test/geometries/segment.cpp
index 49d68d9f6b..25165b6b71 100644
--- a/libs/geometry/test/geometries/segment.cpp
+++ b/libs/geometry/test/geometries/segment.cpp
@@ -16,6 +16,8 @@
#include <geometry_test_common.hpp>
+#include <boost/core/ignore_unused.hpp>
+
#include <boost/geometry/geometries/concepts/segment_concept.hpp>
#include <boost/geometry/geometries/point.hpp>
@@ -52,7 +54,7 @@ void test_all()
typedef typename bg::coordinate_type<S>::type T;
typedef typename bg::point_type<S>::type SP;
-
+ boost::ignore_unused<T, SP>();
//std::cout << sizeof(typename coordinate_type<S>::type) << std::endl;
@@ -63,6 +65,7 @@ void test_all()
typedef typename bg::coordinate_type<CS>::type CT;
typedef typename bg::point_type<CS>::type CSP;
+ boost::ignore_unused<CT, CSP>();
}
diff --git a/libs/geometry/test/geometries/segment.vcproj b/libs/geometry/test/geometries/segment.vcproj
deleted file mode 100644
index a25abee4e4..0000000000
--- a/libs/geometry/test/geometries/segment.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="segment"
- ProjectGUID="{F995B070-62A2-46FE-A676-79AADB71DBD8}"
- RootNamespace="segment"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\segment"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\segment"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\segment.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/geometry_test_common.hpp b/libs/geometry/test/geometry_test_common.hpp
index 4777a0ab7e..7bff837994 100644
--- a/libs/geometry/test/geometry_test_common.hpp
+++ b/libs/geometry/test/geometry_test_common.hpp
@@ -25,6 +25,7 @@
#endif // defined(_MSC_VER)
#include <boost/config.hpp>
+#include <boost/concept_check.hpp>
#if defined(BOOST_INTEL_CXX_VERSION)
@@ -34,11 +35,12 @@
#include <boost/foreach.hpp>
+#include <string_from_type.hpp>
// Include some always-included-for-testing files
#if ! defined(BOOST_GEOMETRY_NO_BOOST_TEST)
-// Until Boost fixes it, silence warning issued by clang:
+// Until Boost.Test fixes it, silence warning issued by clang:
// warning: unused variable 'check_is_close' [-Wunused-variable]
#ifdef __clang__
# pragma clang diagnostic push
@@ -73,42 +75,14 @@
# include <boost/numeric_adaptor/cln_value_type.hpp>
#endif
-
-template <typename T>
-struct string_from_type {};
-
-template <> struct string_from_type<void>
-{ static std::string name() { return "v"; } };
-
-template <> struct string_from_type<float>
-{ static std::string name() { return "f"; } };
-
-template <> struct string_from_type<double>
-{ static std::string name() { return "d"; } };
-
-template <> struct string_from_type<long double>
-{ static std::string name() { return "e"; } };
-
-#if defined(HAVE_TTMATH)
- template <> struct string_from_type<ttmath_big>
- { static std::string name() { return "t"; } };
-#endif
-
-#if defined(BOOST_RATIONAL_HPP)
-template <typename T> struct string_from_type<boost::rational<T> >
-{ static std::string name() { return "r"; } };
-#endif
-
-
-#if defined(HAVE_GMP)
- template <> struct string_from_type<boost::numeric_adaptor::gmp_value_type>
- { static std::string name() { return "g"; } };
-#endif
-
-#if defined(HAVE_CLN)
- template <> struct string_from_type<boost::numeric_adaptor::cln_value_type>
- { static std::string name() { return "c"; } };
-#endif
+// For all tests:
+// - do NOT use "using namespace boost::geometry" to make clear what is Boost.Geometry
+// - use bg:: as short alias
+#include <boost/geometry/core/coordinate_type.hpp>
+#include <boost/geometry/core/closure.hpp>
+#include <boost/geometry/core/point_order.hpp>
+#include <boost/geometry/core/tag.hpp>
+namespace bg = boost::geometry;
template <typename CoordinateType, typename T1, typename T2>
@@ -117,6 +91,7 @@ inline T1 if_typed_tt(T1 value_tt, T2 value)
#if defined(HAVE_TTMATH)
return boost::is_same<CoordinateType, ttmath_big>::type::value ? value_tt : value;
#else
+ boost::ignore_unused_variable_warning(value_tt);
return value;
#endif
}
@@ -127,8 +102,22 @@ inline T if_typed(T value_typed, T value)
return boost::is_same<CoordinateType, Specified>::value ? value_typed : value;
}
-
-
+template <typename Geometry1, typename Geometry2>
+inline std::string type_for_assert_message()
+{
+ bool const ccw =
+ bg::point_order<Geometry1>::value == bg::counterclockwise
+ || bg::point_order<Geometry2>::value == bg::counterclockwise;
+ bool const open =
+ bg::closure<Geometry1>::value == bg::open
+ || bg::closure<Geometry2>::value == bg::open;
+
+ std::ostringstream out;
+ out << string_from_type<typename bg::coordinate_type<Geometry1>::type>::name()
+ << (ccw ? " ccw" : "")
+ << (open ? " open" : "");
+ return out.str();
+}
struct geographic_policy
{
@@ -146,17 +135,9 @@ struct mathematical_policy
{
return 90 - value;
}
-
-};
-
-
+};
-// For all tests:
-// - do NOT use "using namespace boost::geometry" to make clear what is Boost.Geometry
-// - use bg:: as short alias
-#include <boost/geometry/core/tag.hpp>
-namespace bg = boost::geometry;
#endif // GEOMETRY_TEST_GEOMETRY_TEST_COMMON_HPP
diff --git a/libs/geometry/test/io/wkt/io_wkt_tests.sln b/libs/geometry/test/io/wkt/io_wkt_tests.sln
deleted file mode 100644
index 626c327bca..0000000000
--- a/libs/geometry/test/io/wkt/io_wkt_tests.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wkt", "wkt.vcproj", "{1FA2ADE2-F649-4245-951E-A8F5935E7127}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {1FA2ADE2-F649-4245-951E-A8F5935E7127}.Debug|Win32.ActiveCfg = Debug|Win32
- {1FA2ADE2-F649-4245-951E-A8F5935E7127}.Debug|Win32.Build.0 = Debug|Win32
- {1FA2ADE2-F649-4245-951E-A8F5935E7127}.Release|Win32.ActiveCfg = Release|Win32
- {1FA2ADE2-F649-4245-951E-A8F5935E7127}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/io/wkt/wkt.cpp b/libs/geometry/test/io/wkt/wkt.cpp
index 9da9fc8dff..72badd3835 100644
--- a/libs/geometry/test/io/wkt/wkt.cpp
+++ b/libs/geometry/test/io/wkt/wkt.cpp
@@ -30,6 +30,16 @@
#include <boost/geometry/core/topological_dimension.hpp>
#include <boost/geometry/io/wkt/read.hpp>
#include <boost/geometry/io/wkt/write.hpp>
+#include <boost/variant/variant.hpp>
+
+template <typename G>
+void check_wkt(G const& geometry, std::string const& expected)
+{
+ std::ostringstream out;
+ out << bg::wkt(geometry);
+ BOOST_CHECK_EQUAL(boost::to_upper_copy(out.str()),
+ boost::to_upper_copy(expected));
+}
template <typename G>
void test_wkt(std::string const& wkt, std::size_t n, double len = 0,
@@ -57,10 +67,8 @@ void test_wkt(std::string const& wkt, std::size_t n, double len = 0,
BOOST_CHECK_CLOSE(double(bg::perimeter(geometry)), peri, 0.0001);
}
- std::ostringstream out;
- out << bg::wkt(geometry);
- BOOST_CHECK_EQUAL(boost::to_upper_copy(out.str()),
- boost::to_upper_copy(wkt));
+ check_wkt(geometry, wkt);
+ check_wkt(boost::variant<G>(geometry), wkt);
}
template <typename G>
diff --git a/libs/geometry/test/io/wkt/wkt.vcproj b/libs/geometry/test/io/wkt/wkt.vcproj
deleted file mode 100644
index 988ee6af77..0000000000
--- a/libs/geometry/test/io/wkt/wkt.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="wkt"
- ProjectGUID="{1FA2ADE2-F649-4245-951E-A8F5935E7127}"
- RootNamespace="wkt"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\wkt"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\wkt"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\wkt.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/iterators/Jamfile.v2 b/libs/geometry/test/iterators/Jamfile.v2
index 72091f21fb..1f760858cd 100644
--- a/libs/geometry/test/iterators/Jamfile.v2
+++ b/libs/geometry/test/iterators/Jamfile.v2
@@ -1,8 +1,13 @@
# 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.
+# Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+# Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+# Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+#
+# This file was modified by Oracle on 2014.
+# Modifications copyright (c) 2014, Oracle and/or its affiliates.
+#
+# Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
#
# Use, modification and distribution is subject to the Boost Software License,
# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -11,5 +16,9 @@
test-suite boost-geometry-iterators
:
[ run closing_iterator.cpp ]
+ [ run concatenate_iterator.cpp ]
[ run ever_circling_iterator.cpp ]
+ [ run flatten_iterator.cpp ]
+ [ run point_iterator.cpp ]
+ [ run segment_iterator.cpp ]
;
diff --git a/libs/geometry/test/iterators/closing_iterator.vcproj b/libs/geometry/test/iterators/closing_iterator.vcproj
deleted file mode 100644
index e11dc14ef4..0000000000
--- a/libs/geometry/test/iterators/closing_iterator.vcproj
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="closing_iterator"
- ProjectGUID="{04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}"
- RootNamespace="closing_iterator"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\closing_iterator"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- EmbedManifest="false"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\closing_iterator"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- EmbedManifest="false"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\closing_iterator.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/iterators/concatenate_iterator.cpp b/libs/geometry/test/iterators/concatenate_iterator.cpp
new file mode 100644
index 0000000000..15de3082a8
--- /dev/null
+++ b/libs/geometry/test/iterators/concatenate_iterator.cpp
@@ -0,0 +1,259 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_concatenate_iterator
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include <cstddef>
+#include <iostream>
+#include <sstream>
+#include <string>
+#include <algorithm>
+#include <iterator>
+
+#include <vector>
+#include <list>
+
+#include <boost/assign/std/vector.hpp>
+#include <boost/assign/std/list.hpp>
+
+#include <boost/core/ignore_unused.hpp>
+
+#include "test_iterator_common.hpp"
+
+#include <boost/geometry/iterators/concatenate_iterator.hpp>
+
+using namespace boost::assign;
+
+
+struct test_concatenate_iterator
+{
+ template
+ <
+ typename ConcatenateIterator,
+ typename ConstConcatenateIterator,
+ typename Container
+ >
+ static inline
+ void test_using_max_element(ConcatenateIterator first,
+ ConcatenateIterator beyond,
+ ConstConcatenateIterator const_first,
+ ConstConcatenateIterator const_beyond,
+ Container const& c,
+ std::size_t other_size,
+ bool second_container)
+ {
+ typedef typename std::iterator_traits
+ <
+ ConcatenateIterator
+ >::value_type value_type;
+
+ if ( c.size() == 0 )
+ {
+ return;
+ }
+
+ ConcatenateIterator c_first = first;
+ if ( second_container )
+ {
+ std::size_t counter(0);
+ while ( counter != other_size )
+ {
+ ++counter;
+ c_first++;
+ }
+ }
+
+ ConcatenateIterator it_max = std::max_element(first, beyond);
+ ConstConcatenateIterator const_it_max =
+ std::max_element(const_first, const_beyond);
+
+ BOOST_CHECK( it_max == const_it_max );
+ BOOST_CHECK( *it_max == *const_it_max );
+
+ value_type old_value = *c_first;
+ value_type new_value = *it_max + 1;
+
+ *c_first = *it_max + 1;
+ BOOST_CHECK( *c.begin() == new_value );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "modified element of ";
+ std::cout << (second_container ? "2nd" : "1st");
+ std::cout << " container:" << std::endl;
+ print_container(std::cout, c.begin(), c.end(),
+ (second_container ? "second :" : "first :"))
+ << std::endl;
+ print_container(std::cout, first, beyond, "combined:") << std::endl;
+#endif
+
+ *c_first = old_value;
+ BOOST_CHECK( *c.begin() == old_value );
+ }
+
+
+ template <typename Container1, typename Container2>
+ static inline void apply(Container1& c1, Container2& c2,
+ std::string const& case_id,
+ std::string const& containers_id)
+ {
+ boost::ignore_unused(case_id, containers_id);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::stringstream sstream;
+ sstream << case_id << " [" << containers_id << "]";
+
+ std::cout << "case id: " << sstream.str() << std::endl;
+#endif
+ typedef typename Container1::const_iterator const_iterator1;
+ typedef typename Container2::const_iterator const_iterator2;
+ typedef typename Container1::iterator iterator1;
+ typedef typename Container2::iterator iterator2;
+
+ typedef boost::geometry::concatenate_iterator
+ <
+ const_iterator1, const_iterator2,
+ typename Container1::value_type const
+ > const_concat_iterator;
+
+ typedef boost::geometry::concatenate_iterator
+ <
+ iterator1, iterator2, typename Container1::value_type
+ > concat_iterator;
+
+ typedef typename std::iterator_traits
+ <
+ concat_iterator
+ >::value_type value_type;
+
+ // test constructors/assignment operators
+ concat_iterator begin(c1.begin(), c1.end(), c2.begin(), c2.begin());
+ concat_iterator end(c1.end(), c2.begin(), c2.end());
+ const_concat_iterator const_begin(begin);
+ const_concat_iterator const_end(end);
+ const_begin = begin;
+ const_end = end;
+
+ concat_iterator begin2(c1.end(), c1.end(), c2.begin(), c2.begin());
+ const_concat_iterator const_begin2(c1.end(), c1.end(),
+ c2.begin(), c2.begin());
+
+ BOOST_CHECK( c1.empty() || *begin == *c1.begin() );
+ BOOST_CHECK( c1.empty() || *const_begin == *c1.begin() );
+
+ BOOST_CHECK( c2.empty() || *begin2 == *c2.begin() );
+ BOOST_CHECK( c2.empty() || *const_begin2 == *c2.begin() );
+
+
+ // test copying, dereferencing and element equality
+ std::vector<value_type> combined;
+ std::copy(c1.begin(), c1.end(), std::back_inserter(combined));
+ std::copy(c2.begin(), c2.end(), std::back_inserter(combined));
+ test_equality(begin, end, combined);
+
+ combined.clear();
+ std::copy(begin, end, std::back_inserter(combined));
+ test_equality(begin, end, combined);
+ test_equality(const_begin, const_end, combined);
+
+ combined.clear();
+ std::copy(const_begin, const_end, std::back_inserter(combined));
+ test_equality(begin, end, combined);
+ test_equality(const_begin, const_end, combined);
+
+ // test sizes (and std::distance)
+ test_size(begin, end, combined);
+ test_size(const_begin, const_end, combined);
+
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ print_container(std::cout, c1.begin(), c1.end(), "first :")
+ << std::endl;
+ print_container(std::cout, c2.begin(), c2.end(), "second :")
+ << std::endl;
+ print_container(std::cout, begin, end, "combined:")
+ << std::endl;
+
+ if ( begin != end )
+ {
+ std::cout << "min element: "
+ << *std::min_element(begin, end)
+ << std::endl;
+ std::cout << "max element: "
+ << *std::max_element(const_begin, const_end)
+ << std::endl;
+ }
+#endif
+
+ // perform reversals (std::reverse)
+ test_using_reverse(begin, end, combined);
+
+ // test std::max_element, dereferencing and value assigment
+ test_using_max_element(begin, end, const_begin, const_end,
+ c1, c2.size(), false);
+ test_using_max_element(begin, end, const_begin, const_end,
+ c2, c1.size(), true);
+
+ // test std::count_if / std::remove_if
+ test_using_remove_if(begin, end, combined);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "====================" << std::endl << std::endl;
+#endif
+ }
+};
+
+
+template <typename Container1, typename Container2>
+inline void test_concatenation_of_containers(Container1& c1, Container2& c2,
+ std::string const& containers_id)
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+ std::cout << "************************************" << std::endl
+ << " TESTING CONTAINERS COMBINATION: "
+ << containers_id << std::endl
+ << "************************************" << std::endl
+ << std::endl;
+#endif
+
+ c1.clear();
+ c2.clear();
+ test_concatenate_iterator::apply(c1, c2, "empty_both", containers_id);
+
+ c2 += 10,11,12,13,14,15,16,17,18,19,20;
+ test_concatenate_iterator::apply(c1, c2, "empty_first", containers_id);
+
+ c2.clear();
+ c1 += 0,1,2,3,4,5,6;
+ test_concatenate_iterator::apply(c1, c2, "empty_second", containers_id);
+
+ c1.clear();
+ c2.clear();
+ c1 += 0,1,2,3,4,5,6;
+ c2 += 10,11,12,13,14,15,16,17,18,19,20;
+ test_concatenate_iterator::apply(c1, c2, "non_empty", containers_id);
+}
+
+
+BOOST_AUTO_TEST_CASE( test_concatenate_iterator_all )
+{
+ std::vector<int> v, vv;
+ std::list<int> l, ll;
+
+ test_concatenation_of_containers(v, vv, "VV");
+ test_concatenation_of_containers(v, l, "VL");
+ test_concatenation_of_containers(l, v, "LV");
+ test_concatenation_of_containers(l, ll, "LL");
+}
diff --git a/libs/geometry/test/iterators/ever_circling_iterator.vcproj b/libs/geometry/test/iterators/ever_circling_iterator.vcproj
deleted file mode 100644
index ebeddee291..0000000000
--- a/libs/geometry/test/iterators/ever_circling_iterator.vcproj
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="ever_circling_iterator"
- ProjectGUID="{73F8C969-FA1E-4D9D-81F9-35B1206F0C14}"
- RootNamespace="ever_circling_iterator"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\ever_circling_iterator"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- EmbedManifest="false"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\ever_circling_iterator"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- EmbedManifest="false"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\ever_circling_iterator.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/iterators/flatten_iterator.cpp b/libs/geometry/test/iterators/flatten_iterator.cpp
new file mode 100644
index 0000000000..9f989594e0
--- /dev/null
+++ b/libs/geometry/test/iterators/flatten_iterator.cpp
@@ -0,0 +1,368 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_flatten_iterator
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#include <cstddef>
+#include <iostream>
+#include <string>
+#include <sstream>
+#include <algorithm>
+#include <iterator>
+
+#include <vector>
+#include <list>
+
+#include <boost/core/ignore_unused.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/assign/std/vector.hpp>
+#include <boost/assign/std/list.hpp>
+#include <boost/assign/std/set.hpp>
+
+#include "test_iterator_common.hpp"
+
+#include <boost/geometry/iterators/flatten_iterator.hpp>
+
+using namespace boost::assign;
+
+
+template <typename InnerContainer>
+struct access_begin
+{
+ typedef typename boost::mpl::if_
+ <
+ typename boost::is_const<InnerContainer>::type,
+ typename InnerContainer::const_iterator,
+ typename InnerContainer::iterator
+ >::type return_type;
+
+ static inline return_type apply(InnerContainer& inner)
+ {
+ return inner.begin();
+ }
+};
+
+
+template <typename InnerContainer>
+struct access_end
+{
+ typedef typename boost::mpl::if_
+ <
+ typename boost::is_const<InnerContainer>::type,
+ typename InnerContainer::const_iterator,
+ typename InnerContainer::iterator
+ >::type return_type;
+
+ static inline return_type apply(InnerContainer& inner)
+ {
+ return inner.end();
+ }
+};
+
+
+template <typename NestedContainer>
+inline std::size_t number_of_elements(NestedContainer const& c)
+{
+ std::size_t num_elements(0);
+ for (typename NestedContainer::const_iterator outer = c.begin();
+ outer != c.end(); ++outer)
+ {
+ num_elements += outer->size();
+ }
+ return num_elements;
+}
+
+
+struct test_flatten_iterator
+{
+ template
+ <
+ typename FlattenIterator,
+ typename ConstFlattenIterator,
+ typename NestedContainer
+ >
+ static inline
+ void test_using_max_element(FlattenIterator first,
+ FlattenIterator beyond,
+ ConstFlattenIterator const_first,
+ ConstFlattenIterator const_beyond,
+ NestedContainer const& c)
+ {
+ typedef typename std::iterator_traits
+ <
+ FlattenIterator
+ >::value_type value_type;
+
+ typedef typename NestedContainer::const_iterator const_outer_iterator;
+ typedef typename NestedContainer::value_type inner_container;
+ typedef typename inner_container::const_iterator const_inner_iterator;
+
+ if ( first == beyond )
+ {
+ return;
+ }
+
+ FlattenIterator it_max = std::max_element(first, beyond);
+ ConstFlattenIterator const_it_max =
+ std::max_element(const_first, const_beyond);
+
+ BOOST_CHECK( it_max == const_it_max );
+ BOOST_CHECK( *it_max == *const_it_max );
+
+ value_type old_value = *const_first;
+ value_type new_value = *it_max + 1;
+
+ *first = *it_max + 1;
+ const_outer_iterator outer = c.begin();
+ while ( outer->begin() == outer->end() )
+ {
+ ++outer;
+ }
+ const_inner_iterator inner = outer->begin();
+
+ BOOST_CHECK( *inner == new_value );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "modified 1st element of 1st non-empty "
+ << "inner container:" << std::endl;
+ print_nested_container(std::cout, c.begin(), c.end(), "nested :")
+ << std::endl;
+ print_container(std::cout, first, beyond, "flattened:") << std::endl;
+#endif
+
+ *first = old_value;
+ BOOST_CHECK( *inner == old_value );
+ }
+
+ template <typename NestedContainer>
+ static inline void apply(NestedContainer& c,
+ std::string const& case_id,
+ std::string const& container_id)
+ {
+ boost::ignore_unused(case_id, container_id);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::stringstream sstream;
+ sstream << case_id << " [" << container_id << "]";
+
+ std::cout << "case id: " << sstream.str() << std::endl;
+#endif
+ typedef typename NestedContainer::const_iterator const_outer_iterator;
+ typedef typename NestedContainer::iterator outer_iterator;
+ typedef typename NestedContainer::value_type inner_container;
+
+ typedef typename inner_container::const_iterator const_inner_iterator;
+ typedef typename inner_container::iterator inner_iterator;
+
+ typedef boost::geometry::flatten_iterator
+ <
+ const_outer_iterator,
+ const_inner_iterator,
+ typename inner_container::value_type const,
+ access_begin<inner_container const>,
+ access_end<inner_container const>
+ > const_flatten_iterator;
+
+ typedef boost::geometry::flatten_iterator
+ <
+ outer_iterator,
+ inner_iterator,
+ typename inner_container::value_type,
+ access_begin<inner_container>,
+ access_end<inner_container>
+ > flatten_iterator;
+
+ typedef typename std::iterator_traits
+ <
+ flatten_iterator
+ >::value_type value_type;
+
+ flatten_iterator begin(c.begin(), c.end());
+ flatten_iterator end(c.end());
+ const_flatten_iterator const_begin(begin);
+ const_flatten_iterator const_end(end);
+ const_begin = begin;
+ const_end = end;
+
+ // test copying, dereferencing and element equality
+ std::vector<value_type> combined;
+ for (const_outer_iterator outer = c.begin();
+ outer != c.end(); ++outer)
+ {
+ std::copy(outer->begin(), outer->end(),
+ std::back_inserter(combined));
+ }
+ test_equality(begin, end, combined);
+ test_equality(const_begin, const_end, combined);
+
+ combined.clear();
+ std::copy(begin, end, std::back_inserter(combined));
+ test_equality(begin, end, combined);
+ test_equality(const_begin, const_end, combined);
+
+ combined.clear();
+ std::copy(const_begin, const_end, std::back_inserter(combined));
+ test_equality(begin, end, combined);
+ test_equality(const_begin, const_end, combined);
+
+ // test sizes (and std::distance)
+ test_size(begin, end, combined);
+ test_size(const_begin, const_end, combined);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ print_nested_container(std::cout, c.begin(), c.end(), "nested :")
+ << std::endl;
+ print_container(std::cout, begin, end, "flattened :")
+ << std::endl;
+
+ if ( begin != end )
+ {
+ std::cout << "min element: "
+ << *std::min_element(begin, end)
+ << std::endl;
+ std::cout << "max element: "
+ << *std::max_element(const_begin, const_end)
+ << std::endl;
+ }
+#endif
+
+ // perform reversals (std::reverse)
+ test_using_reverse(begin, end, combined);
+
+ // test std::max_element, dereferencing and value assigment
+ test_using_max_element(begin, end, const_begin, const_end, c);
+
+ // test std::count_if / std::remove_if
+ test_using_remove_if(begin, end, combined);
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "====================" << std::endl << std::endl;
+#endif
+ }
+};
+
+
+
+// the actual test cases -- START
+template <int CaseNumber>
+struct test_case_per_container;
+
+template<>
+struct test_case_per_container<0>
+{
+ template <typename NestedContainer>
+ static inline void apply(std::string const& case_id,
+ std::string const& container_id)
+ {
+ NestedContainer c;
+ test_flatten_iterator::apply(c, case_id, container_id);
+ }
+};
+
+template<>
+struct test_case_per_container<1>
+{
+ template <typename NestedContainer>
+ static inline void apply(std::string const& case_id,
+ std::string const& container_id)
+ {
+ NestedContainer c;
+ for (int i = 0; i < 5; ++i)
+ {
+ c += typename NestedContainer::value_type();
+ }
+ test_flatten_iterator::apply(c, case_id, container_id);
+ }
+};
+
+template<>
+struct test_case_per_container<2>
+{
+ template <typename NestedContainer>
+ static inline void apply(std::string const& case_id,
+ std::string const& container_id)
+ {
+ NestedContainer c;
+ typename NestedContainer::value_type ic[4];
+
+ ic[0] += 5,4,3,2,1;
+ ic[1] += 6,7,8;
+ ic[2] += 9;
+ ic[3] += 9,8,7,6,5;
+ c += ic[0],ic[1],ic[2],ic[3];
+
+ test_flatten_iterator::apply(c, case_id, container_id);
+ }
+};
+
+template<>
+struct test_case_per_container<3>
+{
+ template <typename NestedContainer>
+ static inline void apply(std::string const& case_id,
+ std::string const& container_id)
+ {
+ NestedContainer c;
+ typename NestedContainer::value_type ic[20];
+
+ ic[2] += 5,4,3,2,1;
+ ic[3] += 6,7,8;
+ ic[8] += 9;
+ ic[9] += 9,8,7,6,5;
+ ic[14] += 4,3,2,1;
+ for (std::size_t i = 0; i < 20; ++i)
+ {
+ c += ic[i];
+ }
+
+ test_flatten_iterator::apply(c, case_id, container_id);
+ }
+};
+// the actual test cases -- END
+
+
+
+template <int CaseNumber>
+inline void test_case_all_containers(std::string const& case_id)
+{
+ typedef typename std::vector<std::vector<int> > VV;
+ typedef typename std::vector<std::list<int> > VL;
+ typedef typename std::list<std::vector<int> > LV;
+ typedef typename std::list<std::list<int> > LL;
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+#endif
+ test_case_per_container<CaseNumber>::template apply<VV>(case_id, "VV");
+ test_case_per_container<CaseNumber>::template apply<VL>(case_id, "VL");
+ test_case_per_container<CaseNumber>::template apply<LV>(case_id, "LV");
+ test_case_per_container<CaseNumber>::template apply<LL>(case_id, "LL");
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "********************************************************"
+ << std::endl << std::endl;
+#endif
+}
+
+
+
+BOOST_AUTO_TEST_CASE( test_flatten_iterator_all )
+{
+ test_case_all_containers<0>("empty");
+ test_case_all_containers<1>("case1");
+ test_case_all_containers<2>("case2");
+ test_case_all_containers<3>("case3");
+}
diff --git a/libs/geometry/test/iterators/iterators.sln b/libs/geometry/test/iterators/iterators.sln
deleted file mode 100644
index 8b1e55c7e0..0000000000
--- a/libs/geometry/test/iterators/iterators.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ever_circling_iterator", "ever_circling_iterator.vcproj", "{73F8C969-FA1E-4D9D-81F9-35B1206F0C14}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "closing_iterator", "closing_iterator.vcproj", "{04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {73F8C969-FA1E-4D9D-81F9-35B1206F0C14}.Debug|Win32.ActiveCfg = Debug|Win32
- {73F8C969-FA1E-4D9D-81F9-35B1206F0C14}.Debug|Win32.Build.0 = Debug|Win32
- {73F8C969-FA1E-4D9D-81F9-35B1206F0C14}.Release|Win32.ActiveCfg = Release|Win32
- {73F8C969-FA1E-4D9D-81F9-35B1206F0C14}.Release|Win32.Build.0 = Release|Win32
- {04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}.Debug|Win32.ActiveCfg = Debug|Win32
- {04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}.Debug|Win32.Build.0 = Debug|Win32
- {04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}.Release|Win32.ActiveCfg = Release|Win32
- {04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/iterators/point_iterator.cpp b/libs/geometry/test/iterators/point_iterator.cpp
new file mode 100644
index 0000000000..2b5af3b3a1
--- /dev/null
+++ b/libs/geometry/test/iterators/point_iterator.cpp
@@ -0,0 +1,595 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_point_iterator
+#endif
+
+#include <cstddef>
+#include <iostream>
+#include <string>
+#include <iterator>
+#include <algorithm>
+
+#include <boost/test/included/unit_test.hpp>
+
+#include <boost/assign/list_of.hpp>
+#include <boost/core/ignore_unused.hpp>
+#include <boost/tuple/tuple.hpp>
+
+#include <boost/geometry/core/point_type.hpp>
+#include <boost/geometry/multi/core/point_type.hpp>
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
+#include <boost/geometry/multi/geometries/multi_geometries.hpp>
+#include <boost/geometry/multi/geometries/register/multi_point.hpp>
+
+#include <boost/geometry/algorithms/equals.hpp>
+#include <boost/geometry/algorithms/num_points.hpp>
+#include <boost/geometry/multi/algorithms/num_points.hpp>
+
+#include <boost/geometry/policies/compare.hpp>
+
+#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/geometry/io/dsv/write.hpp>
+
+#include <boost/geometry/iterators/point_iterator.hpp>
+#include <boost/geometry/iterators/point_reverse_iterator.hpp>
+
+namespace bg = ::boost::geometry;
+namespace ba = ::boost::assign;
+
+typedef bg::model::point<double, 2, bg::cs::cartesian> point_type;
+typedef bg::model::point<double, 3, bg::cs::cartesian> point_type_3d;
+typedef bg::model::linestring<point_type> linestring_type;
+typedef bg::model::polygon<point_type, false, false> polygon_type; //ccw, open
+
+// multi geometries
+typedef bg::model::multi_point<point_type> multi_point_type;
+typedef bg::model::multi_point<point_type_3d> multi_point_type_3d;
+typedef bg::model::multi_linestring<linestring_type> multi_linestring_type;
+typedef bg::model::multi_polygon<polygon_type> multi_polygon_type;
+
+typedef boost::tuple<double, double> tuple_point_type;
+typedef boost::tuple<double, double, double> tuple_point_type_3d;
+typedef std::vector<tuple_point_type> tuple_multi_point_type;
+typedef std::vector<tuple_point_type_3d> tuple_multi_point_type_3d;
+
+BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
+BOOST_GEOMETRY_REGISTER_MULTI_POINT(tuple_multi_point_type)
+BOOST_GEOMETRY_REGISTER_MULTI_POINT(tuple_multi_point_type_3d)
+
+
+template <typename Geometry>
+inline Geometry from_wkt(std::string const& wkt)
+{
+ Geometry geometry;
+ boost::geometry::read_wkt(wkt, geometry);
+ return geometry;
+}
+
+
+template <typename Iterator>
+inline std::ostream& print_point_range(std::ostream& os,
+ Iterator first,
+ Iterator beyond,
+ std::string const& header)
+{
+ os << header << "(";
+ for (Iterator it = first; it != beyond; ++it)
+ {
+ os << " " << bg::dsv(*it);
+ }
+ os << " )";
+ return os;
+}
+
+struct equals
+{
+ template <typename Iterator>
+ static inline std::size_t number_of_elements(Iterator begin,
+ Iterator end)
+ {
+ std::size_t size = std::distance(begin, end);
+
+ std::size_t num_elems(0);
+ for (Iterator it = begin; it != end; ++it)
+ {
+ ++num_elems;
+ }
+ BOOST_CHECK( size == num_elems );
+
+ num_elems = 0;
+ for (Iterator it = end; it != begin; --it)
+ {
+ ++num_elems;
+ }
+ BOOST_CHECK( size == num_elems );
+
+ return num_elems;
+ }
+
+ template <typename Iterator1, typename Iterator2>
+ static inline bool apply(Iterator1 begin1, Iterator1 end1,
+ Iterator2 begin2, Iterator2 end2)
+ {
+ std::size_t num_points1 = number_of_elements(begin1, end1);
+ std::size_t num_points2 = number_of_elements(begin2, end2);
+
+ if ( num_points1 != num_points2 )
+ {
+ return false;
+ }
+
+ Iterator1 it1 = begin1;
+ Iterator2 it2 = begin2;
+ for (; it1 != end1; ++it1, ++it2)
+ {
+ if ( !bg::equals(*it1, *it2) )
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+};
+
+
+struct test_assignment
+{
+ template <typename Iterator, typename ConstIterator, typename Value>
+ static inline void apply(Iterator it, ConstIterator cit,
+ Value const& value1, Value const& value2)
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "== before assignment ==" << std::endl;
+ std::cout << "value1: " << bg::wkt(value1) << std::endl;
+ std::cout << "value2: " << bg::wkt(value2) << std::endl;
+ std::cout << "*it : " << bg::wkt(*it) << std::endl;
+ std::cout << "*cit : " << bg::wkt(*cit) << std::endl;
+#endif
+
+ BOOST_CHECK( bg::equals(*it, value1) );
+ BOOST_CHECK( !bg::equals(*it, value2) );
+ BOOST_CHECK( bg::equals(*cit, value1) );
+ BOOST_CHECK( !bg::equals(*cit, value2) );
+
+ *it = value2;
+ BOOST_CHECK( bg::equals(*it, value2) );
+ BOOST_CHECK( !bg::equals(*it, value1) );
+ BOOST_CHECK( bg::equals(*cit, value2) );
+ BOOST_CHECK( !bg::equals(*cit, value1) );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "== after 1st assignment ==" << std::endl;
+ std::cout << "value1: " << bg::wkt(value1) << std::endl;
+ std::cout << "value2: " << bg::wkt(value2) << std::endl;
+ std::cout << "*it : " << bg::wkt(*it) << std::endl;
+ std::cout << "*cit : " << bg::wkt(*cit) << std::endl;
+#endif
+
+ *it = value1;
+ BOOST_CHECK( bg::equals(*it, value1) );
+ BOOST_CHECK( !bg::equals(*it, value2) );
+ BOOST_CHECK( bg::equals(*cit, value1) );
+ BOOST_CHECK( !bg::equals(*cit, value2) );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "== after 2nd assignment ==" << std::endl;
+ std::cout << "value1: " << bg::wkt(value1) << std::endl;
+ std::cout << "value2: " << bg::wkt(value2) << std::endl;
+ std::cout << "*it : " << bg::wkt(*it) << std::endl;
+ std::cout << "*cit : " << bg::wkt(*cit) << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+};
+
+
+template <typename Geometry, typename PointRange>
+struct test_point_iterator_of_geometry
+{
+ template <typename G>
+ static inline void base_test(G& geometry,
+ PointRange const& point_range,
+ std::string const& header)
+ {
+ typedef bg::point_iterator<G> point_iterator;
+
+ point_iterator begin = bg::points_begin(geometry);
+ point_iterator end = bg::points_end(geometry);
+
+ BOOST_CHECK( std::size_t(std::distance(begin, end))
+ ==
+ bg::num_points(geometry) );
+
+ BOOST_CHECK( equals::apply(begin, end,
+ bg::points_begin(point_range),
+ bg::points_end(point_range))
+ );
+
+ boost::ignore_unused(header);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << header << " geometry: " << bg::wkt(geometry) << std::endl;
+ print_point_range(std::cout, begin, end, "point range: ");
+ std::cout << std::endl;
+
+ typedef bg::point_iterator<PointRange const> point_range_iterator;
+
+ print_point_range(std::cout,
+ bg::points_begin(point_range),
+ bg::points_end(point_range),
+ "expected point range: ");
+ std::cout << std::endl;
+#endif
+ }
+
+ static inline void apply(Geometry geometry, PointRange const& point_range)
+ {
+ base_test<Geometry>(geometry, point_range, "non-const");
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+#endif
+
+ base_test<Geometry const>(geometry, point_range, "const");
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+#endif
+
+ // testing construction of const and non-const iterator
+ typedef bg::point_iterator<Geometry> point_iterator;
+ typedef bg::point_iterator<Geometry const> const_point_iterator;
+
+ point_iterator begin = bg::points_begin(geometry);
+ point_iterator end = bg::points_end(geometry);
+
+ const_point_iterator const_begin = bg::points_begin(geometry);
+ const_point_iterator const_end = bg::points_end(geometry);
+
+ // same for reverse iterator
+ typedef bg::point_reverse_iterator<Geometry> point_reverse_iterator;
+ typedef bg::point_reverse_iterator
+ <
+ Geometry const
+ > const_point_reverse_iterator;
+
+ point_reverse_iterator rbegin = bg::points_rbegin(geometry);
+ point_reverse_iterator rend = bg::points_rend(geometry);
+
+ const_point_reverse_iterator const_rbegin = bg::points_rbegin(geometry);
+ const_point_reverse_iterator const_rend = bg::points_rend(geometry);
+
+ // testing assignment of non-const to const iterator
+ const_begin = begin;
+ const_end = end;
+
+ // testing assignment of non-const to const reverse_iterator
+ const_rbegin = rbegin;
+ const_rend = rend;
+
+ // testing equality/inequality comparison
+ BOOST_CHECK ( begin == const_begin );
+ BOOST_CHECK ( end == const_end );
+ if ( begin != end )
+ {
+ BOOST_CHECK ( begin != const_end );
+ BOOST_CHECK ( const_begin != end );
+ }
+
+ // testing equality/inequality comparison for reverse_iterator
+ BOOST_CHECK ( rbegin == const_rbegin );
+ BOOST_CHECK ( rend == const_rend );
+ if ( rbegin != rend )
+ {
+ BOOST_CHECK ( rbegin != const_rend );
+ BOOST_CHECK ( const_rbegin != rend );
+ }
+
+ if ( begin != end )
+ {
+ BOOST_CHECK( rbegin != rend );
+
+ point_reverse_iterator rlast(rend);
+ --rlast;
+ BOOST_CHECK( bg::equals(*begin, *rlast) );
+
+ point_iterator last(end);
+ --last;
+ BOOST_CHECK( bg::equals(*rbegin, *last) );
+ }
+
+ // testing dereferencing/assignment
+ if ( begin != end )
+ {
+ typedef typename bg::point_type<Geometry>::type point;
+
+ point p = *begin;
+ point q = bg::make_zero<point>();
+
+ test_assignment::apply(begin, const_begin, p, q);
+
+ *begin = q;
+ test_assignment::apply(begin, const_begin, q, p);
+
+ *begin = p;
+ }
+
+ // test with algorithms
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ print_point_range(std::cout, begin, end, "original:\n") << std::endl;
+ print_point_range(std::cout, rbegin, rend, "reverse traversal:\n")
+ << std::endl;
+ std::cout << bg::wkt(geometry) << std::endl;
+ std::cout << std::endl;
+#endif
+
+ std::reverse(begin, end);
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ print_point_range(std::cout, begin, end, "reversed:\n") << std::endl;
+ std::cout << bg::wkt(geometry) << std::endl;
+ std::cout << std::endl;
+#endif
+
+ std::reverse(begin, end);
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ print_point_range(std::cout, begin, end, "re-reversed:\n") << std::endl;
+ std::cout << bg::wkt(geometry) << std::endl;
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+
+ typedef typename std::iterator_traits
+ <
+ point_iterator
+ >::value_type point;
+ if ( const_begin != const_end )
+ {
+ const_point_iterator pit_max = std::max_element(const_begin,
+ const_end,
+ bg::less<point>());
+
+ BOOST_CHECK( pit_max != const_end ); // to avoid warnings
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "max point: " << bg::dsv(*pit_max) << std::endl;
+#endif
+ }
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << std::endl;
+ std::cout << std::endl;
+#endif
+ }
+};
+
+
+//======================================================================
+//======================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_linestring_point_iterator )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "*** LINESTRING ***" << std::endl;
+#endif
+
+ typedef tuple_multi_point_type TMP;
+ typedef linestring_type L;
+
+ typedef test_point_iterator_of_geometry<L, TMP> tester;
+
+ tester::apply(from_wkt<L>("LINESTRING()"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<L>("LINESTRING(3 3,4 4,5 5)"),
+ ba::tuple_list_of(3,3)(4,4)(5,5)
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+#endif
+}
+
+
+//======================================================================
+//======================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_polygon_point_iterator )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "*** POLYGON ***" << std::endl;
+#endif
+
+ typedef tuple_multi_point_type TMP;
+ typedef polygon_type P;
+
+ typedef test_point_iterator_of_geometry<P, TMP> tester;
+
+ tester::apply(from_wkt<P>("POLYGON()"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<P>("POLYGON(())"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<P>("POLYGON((1 1,9 1,9 9,1 9),(5 5,6 5,6 6,5 6))"),
+ ba::tuple_list_of(1,1)(9,1)(9,9)(1,9)(5,5)(6,5)(6,6)(5,6)
+ );
+
+ tester::apply(from_wkt<P>("POLYGON((3 3,4 4,5 5),(),(),(),(6 6,7 7,8 8),(),(),(9 9),())"),
+ ba::tuple_list_of(3,3)(4,4)(5,5)(6,6)(7,7)(8,8)(9,9)
+ );
+
+ tester::apply(from_wkt<P>("POLYGON((),(3 3,4 4,5 5),(),(),(6 6,7 7,8 8),(),(),(9 9),())"),
+ ba::tuple_list_of(3,3)(4,4)(5,5)(6,6)(7,7)(8,8)(9,9)
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+#endif
+}
+
+
+//======================================================================
+//======================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_multipoint_point_iterator )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "*** MULTIPOINT ***" << std::endl;
+#endif
+
+ typedef tuple_multi_point_type TMP;
+ typedef multi_point_type MP;
+
+ typedef test_point_iterator_of_geometry<MP, TMP> tester;
+
+ tester::apply(from_wkt<MP>("MULTIPOINT()"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(3 3,4 4,5 5)"),
+ ba::tuple_list_of(3,3)(4,4)(5,5)
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+#endif
+}
+
+
+//======================================================================
+//======================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_multipoint_3d_point_iterator )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "*** MULTIPOINT 3D ***" << std::endl;
+#endif
+
+ typedef tuple_multi_point_type_3d TMP;
+ typedef multi_point_type_3d MP;
+
+ typedef test_point_iterator_of_geometry<MP, TMP> tester;
+
+ tester::apply(from_wkt<MP>("MULTIPOINT()"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<MP>("MULTIPOINT(3 3 3,4 4 4,5 5 5)"),
+ ba::tuple_list_of(3,3,3)(4,4,4)(5,5,5)
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+#endif
+}
+
+
+//======================================================================
+//======================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_multilinestring_point_iterator )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "*** MULTILINESTRING ***" << std::endl;
+#endif
+
+ typedef tuple_multi_point_type TMP;
+ typedef multi_linestring_type ML;
+
+ typedef test_point_iterator_of_geometry<ML, TMP> tester;
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING()"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING(())"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((),(),())"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((1 1,2 2,3 3),(3 3,4 4,5 5),(6 6))"),
+ ba::tuple_list_of(1,1)(2,2)(3,3)(3,3)(4,4)(5,5)(6,6)
+ );
+
+ tester::apply(from_wkt<ML>("MULTILINESTRING((),(),(1 1,2 2,3 3),(),(),(3 3,4 4,5 5),(),(6 6),(),(),())"),
+ ba::tuple_list_of(1,1)(2,2)(3,3)(3,3)(4,4)(5,5)(6,6)
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+#endif
+}
+
+
+//======================================================================
+//======================================================================
+
+
+BOOST_AUTO_TEST_CASE( test_multipolygon_point_iterator )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "*** MULTIPOLYGON ***" << std::endl;
+#endif
+
+ typedef tuple_multi_point_type TMP;
+ typedef multi_polygon_type MPL;
+
+ typedef test_point_iterator_of_geometry<MPL, TMP> tester;
+
+ tester::apply(from_wkt<MPL>("MULTIPOLYGON()"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<MPL>("MULTIPOLYGON( () )"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<MPL>("MULTIPOLYGON( (()) )"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<MPL>("MULTIPOLYGON( ((),()) )"),
+ TMP()
+ );
+
+ tester::apply(from_wkt<MPL>("MULTIPOLYGON(((3 3,4 4,5 5),(6 6,7 7,8 8),(9 9)),((1 1,2 2,10 10),(11 11,12 12)))"),
+ ba::tuple_list_of(3,3)(4,4)(5,5)(6,6)(7,7)(8,8)(9,9)\
+ (1,1)(2,2)(10,10)(11,11)(12,12)
+ );
+
+ tester::apply(from_wkt<MPL>("MULTIPOLYGON(((3 3,4 4,5 5),(),(),(),(6 6,7 7,8 8),(),(),(9 9),()),((),(1 1,2 2,10 10),(),(),(),(11 11,12 12),(),(),(13 13),()))"),
+ ba::tuple_list_of(3,3)(4,4)(5,5)(6,6)(7,7)(8,8)(9,9)\
+ (1,1)(2,2)(10,10)(11,11)(12,12)(13,13)
+ );
+
+ tester::apply(from_wkt<MPL>("MULTIPOLYGON(((3 3,4 4,5 5),(),(),(),(6 6,7 7,8 8),(),(),(9 9),()),((),(1 1,2 2,10 10),(),(),(),(11 11,12 12),(),(),(13 13),()),((),(),()))"),
+ ba::tuple_list_of(3,3)(4,4)(5,5)(6,6)(7,7)(8,8)(9,9)\
+ (1,1)(2,2)(10,10)(11,11)(12,12)(13,13)
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+#endif
+}
diff --git a/libs/geometry/test/iterators/segment_iterator.cpp b/libs/geometry/test/iterators/segment_iterator.cpp
new file mode 100644
index 0000000000..167ff93261
--- /dev/null
+++ b/libs/geometry/test/iterators/segment_iterator.cpp
@@ -0,0 +1,421 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_segment_iterator
+#endif
+
+#include <algorithm>
+#include <iostream>
+#include <iterator>
+#include <string>
+#include <vector>
+
+#include <boost/test/included/unit_test.hpp>
+
+#include <boost/assign/list_of.hpp>
+
+#include <boost/core/ignore_unused.hpp>
+
+#include <boost/tuple/tuple.hpp>
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
+#include <boost/geometry/geometries/register/linestring.hpp>
+#include <boost/geometry/geometries/register/multi_linestring.hpp>
+
+#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/geometry/io/dsv/write.hpp>
+
+#include <boost/geometry/core/closure.hpp>
+
+#include <boost/geometry/algorithms/convert.hpp>
+#include <boost/geometry/algorithms/equals.hpp>
+#include <boost/geometry/algorithms/num_segments.hpp>
+
+#include <boost/geometry/policies/compare.hpp>
+
+#include <boost/geometry/iterators/segment_iterator.hpp>
+
+
+namespace ba = ::boost::assign;
+namespace bg = ::boost::geometry;
+namespace bgm = bg::model;
+
+typedef bgm::point<double, 2, bg::cs::cartesian> point_type;
+typedef bgm::linestring<point_type> linestring_type;
+typedef bgm::ring<point_type, true, true> ring_cw_closed_type;
+typedef bgm::ring<point_type, true, false> ring_cw_open_type;
+typedef bgm::polygon<point_type, true, true> polygon_cw_closed_type;
+typedef bgm::polygon<point_type, true, false> polygon_cw_open_type;
+
+// multi-geometries
+typedef bgm::multi_linestring<linestring_type> multi_linestring_type;
+typedef bgm::multi_polygon<polygon_cw_closed_type> multi_polygon_cw_closed_type;
+typedef bgm::multi_polygon<polygon_cw_open_type> multi_polygon_cw_open_type;
+
+// tuple-based geometries
+typedef boost::tuple<double, double> tuple_point_type;
+typedef std::vector<tuple_point_type> tuple_linestring_type;
+typedef std::vector<tuple_linestring_type> tuple_multi_linestring_type;
+
+BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
+BOOST_GEOMETRY_REGISTER_LINESTRING(tuple_linestring_type)
+BOOST_GEOMETRY_REGISTER_MULTI_LINESTRING(tuple_multi_linestring_type)
+
+template <typename Geometry>
+inline Geometry from_wkt(std::string const& wkt)
+{
+ Geometry geometry;
+ boost::geometry::read_wkt(wkt, geometry);
+ return geometry;
+}
+
+template <typename Iterator>
+inline std::ostream& print_geometry_range(std::ostream& os,
+ Iterator first,
+ Iterator beyond,
+ std::string const& header)
+{
+ os << header << "(";
+ for (Iterator it = first; it != beyond; ++it)
+ {
+ os << " " << bg::dsv(*it);
+ }
+ os << " )";
+ return os;
+}
+
+struct equals
+{
+ template <typename Iterator>
+ static inline std::size_t number_of_elements(Iterator begin,
+ Iterator end)
+ {
+ std::size_t size = std::distance(begin, end);
+
+ std::size_t num_elems(0);
+ for (Iterator it = begin; it != end; ++it)
+ {
+ ++num_elems;
+ }
+ BOOST_CHECK( size == num_elems );
+
+ num_elems = 0;
+ for (Iterator it = end; it != begin; --it)
+ {
+ ++num_elems;
+ }
+ BOOST_CHECK( size == num_elems );
+
+ return num_elems;
+ }
+
+ template <typename Iterator1, typename Iterator2>
+ static inline bool apply(Iterator1 begin1, Iterator1 end1,
+ Iterator2 begin2, Iterator2 end2)
+ {
+ std::size_t num_points1 = number_of_elements(begin1, end1);
+ std::size_t num_points2 = number_of_elements(begin2, end2);
+
+ if ( num_points1 != num_points2 )
+ {
+ return false;
+ }
+
+ Iterator1 it1 = begin1;
+ Iterator2 it2 = begin2;
+ for (; it1 != end1; ++it1, ++it2)
+ {
+ if ( !bg::equals(*it1, *it2) )
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+};
+
+
+template <typename Geometry, typename SegmentRange>
+struct test_segment_iterator_of_geometry
+{
+ template <typename G>
+ static inline void base_test(G const& geometry,
+ SegmentRange const& segment_range,
+ std::string const& header)
+ {
+ typedef bg::segment_iterator<G const> segment_iterator;
+
+ segment_iterator begin = bg::segments_begin(geometry);
+ segment_iterator end = bg::segments_end(geometry);
+
+ BOOST_CHECK( std::size_t(std::distance(begin, end))
+ ==
+ bg::num_segments(geometry) );
+
+ BOOST_CHECK( equals::apply(begin, end,
+ bg::segments_begin(segment_range),
+ bg::segments_end(segment_range))
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::string closure
+ = (
+ (bg::closure<Geometry>::value == bg::closed)
+ ? "closed"
+ : "open"
+ );
+
+ std::cout << header << " geometry (WKT): "
+ << bg::wkt(geometry) << std::endl;
+ std::cout << header << " geometry (DSV): "
+ << bg::dsv(geometry) << std::endl;
+ std::cout << "geometry's closure: " << closure << std::endl;
+ print_geometry_range(std::cout, begin, end, "segment range: ");
+
+ std::cout << std::endl;
+
+ print_geometry_range(std::cout,
+ bg::segments_begin(segment_range),
+ bg::segments_end(segment_range),
+ "expected segment range: ");
+ std::cout << std::endl;
+#endif
+
+ // testing dereferencing
+ typedef typename std::iterator_traits
+ <
+ segment_iterator
+ >::value_type value_type;
+
+ value_type first_segment = *bg::segments_begin(geometry);
+
+ boost::ignore_unused(first_segment);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "first segment in geometry: "
+ << bg::wkt(first_segment)
+ << std::endl;
+
+ std::cout << std::endl << std::endl;
+#endif
+
+ // test copying all segments to a vector
+ std::vector<value_type> segments;
+ std::copy(bg::segments_begin(geometry),
+ bg::segments_end(geometry),
+ std::back_inserter(segments));
+
+ BOOST_CHECK( std::size_t( std::distance(bg::segments_begin(geometry),
+ bg::segments_end(geometry)) )
+ ==
+ segments.size() );
+ }
+
+ static inline void apply(Geometry geometry,
+ SegmentRange const& segment_range)
+ {
+ base_test<Geometry>(geometry, segment_range, "const");
+ }
+};
+
+//======================================================================
+//======================================================================
+
+template <typename ClosedGeometry, typename ExpectedResult>
+struct dual_tester
+{
+ template <typename OpenGeometry>
+ static inline void apply(OpenGeometry const& open_g,
+ ExpectedResult expected)
+ {
+ typedef test_segment_iterator_of_geometry
+ <
+ OpenGeometry, ExpectedResult
+ > otester;
+
+ typedef test_segment_iterator_of_geometry
+ <
+ ClosedGeometry, ExpectedResult
+ > ctester;
+
+ otester::apply(open_g, expected);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl;
+#endif
+
+ ClosedGeometry closed_g;
+
+ bg::convert(open_g, closed_g);
+
+ ctester::apply(closed_g, expected);
+ }
+};
+
+//======================================================================
+//======================================================================
+
+BOOST_AUTO_TEST_CASE( test_linestring_segment_iterator )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "*** LINESTRING ***" << std::endl;
+#endif
+
+ typedef tuple_multi_linestring_type TML;
+ typedef linestring_type G;
+
+ typedef test_segment_iterator_of_geometry<G, TML> tester;
+
+ tester::apply(from_wkt<G>("LINESTRING(0 0,1 1,2 2,3 3,4 4)"),
+ ba::list_of<tuple_linestring_type>
+ ( ba::tuple_list_of(0,0)(1,1) )
+ ( ba::tuple_list_of(1,1)(2,2) )
+ ( ba::tuple_list_of(2,2)(3,3) )
+ ( ba::tuple_list_of(3,3)(4,4) )
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+#endif
+}
+
+//======================================================================
+//======================================================================
+
+BOOST_AUTO_TEST_CASE( test_ring_segment_iterator )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "*** RING ***" << std::endl;
+#endif
+
+ typedef tuple_multi_linestring_type TML;
+ typedef ring_cw_open_type OG;
+ typedef ring_cw_closed_type CG;
+
+ typedef dual_tester<CG, TML> tester;
+
+ tester::apply(from_wkt<OG>("POLYGON((0 0,0 10,10 10,10 0))"),
+ ba::list_of<tuple_linestring_type>
+ ( ba::tuple_list_of(0,0)(0,10) )
+ ( ba::tuple_list_of(0,10)(10,10) )
+ ( ba::tuple_list_of(10,10)(10,0) )
+ ( ba::tuple_list_of(10,0)(0,0) )
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+#endif
+}
+
+//======================================================================
+//======================================================================
+
+BOOST_AUTO_TEST_CASE( test_polygon_segment_iterator )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "*** POLYGON ***" << std::endl;
+#endif
+
+ typedef tuple_multi_linestring_type TML;
+ typedef polygon_cw_open_type OG;
+ typedef polygon_cw_closed_type CG;
+
+ typedef dual_tester<CG, TML> tester;
+
+ tester::apply(from_wkt<OG>("POLYGON((0 0,0 10,10 10,10 0),(1 1,9 1,9 9,1 9))"),
+ ba::list_of<tuple_linestring_type>
+ ( ba::tuple_list_of(0,0)(0,10) )
+ ( ba::tuple_list_of(0,10)(10,10) )
+ ( ba::tuple_list_of(10,10)(10,0) )
+ ( ba::tuple_list_of(10,0)(0,0) )
+ ( ba::tuple_list_of(1,1)(9,1) )
+ ( ba::tuple_list_of(9,1)(9,9) )
+ ( ba::tuple_list_of(9,9)(1,9) )
+ ( ba::tuple_list_of(1,9)(1,1) )
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+#endif
+}
+
+//======================================================================
+//======================================================================
+
+BOOST_AUTO_TEST_CASE( test_multi_linestring_segment_iterator )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "*** MULTILINESTRING ***" << std::endl;
+#endif
+
+ typedef tuple_multi_linestring_type TML;
+ typedef multi_linestring_type G;
+
+ typedef test_segment_iterator_of_geometry<G, TML> tester;
+
+ tester::apply(from_wkt<G>("MULTILINESTRING((0 0,1 1,2 2,3 3,4 4),(5 5,6 6,7 7,8 8),(9 9,10 10))"),
+ ba::list_of<tuple_linestring_type>
+ ( ba::tuple_list_of(0,0)(1,1) )
+ ( ba::tuple_list_of(1,1)(2,2) )
+ ( ba::tuple_list_of(2,2)(3,3) )
+ ( ba::tuple_list_of(3,3)(4,4) )
+ ( ba::tuple_list_of(5,5)(6,6) )
+ ( ba::tuple_list_of(6,6)(7,7) )
+ ( ba::tuple_list_of(7,7)(8,8) )
+ ( ba::tuple_list_of(9,9)(10,10) )
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+#endif
+}
+
+//======================================================================
+//======================================================================
+
+BOOST_AUTO_TEST_CASE( test_multi_polygon_segment_iterator )
+{
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "*** MULTIPOLYGON ***" << std::endl;
+#endif
+
+ typedef tuple_multi_linestring_type TML;
+ typedef multi_polygon_cw_open_type OG;
+ typedef multi_polygon_cw_closed_type CG;
+
+ typedef dual_tester<CG, TML> tester;
+
+ tester::apply(from_wkt<OG>("MULTIPOLYGON(((0 0,0 10,10 10,10 0),(1 1,9 1,9 9,1 9)),((20 0,20 10,30 10,30 0),(21 1,29 1,29 9,21 9)))"),
+ ba::list_of<tuple_linestring_type>
+ ( ba::tuple_list_of(0,0)(0,10) )
+ ( ba::tuple_list_of(0,10)(10,10) )
+ ( ba::tuple_list_of(10,10)(10,0) )
+ ( ba::tuple_list_of(10,0)(0,0) )
+ ( ba::tuple_list_of(1,1)(9,1) )
+ ( ba::tuple_list_of(9,1)(9,9) )
+ ( ba::tuple_list_of(9,9)(1,9) )
+ ( ba::tuple_list_of(1,9)(1,1) )
+ ( ba::tuple_list_of(20,0)(20,10) )
+ ( ba::tuple_list_of(20,10)(30,10) )
+ ( ba::tuple_list_of(30,10)(30,0) )
+ ( ba::tuple_list_of(30,0)(20,0) )
+ ( ba::tuple_list_of(21,1)(29,1) )
+ ( ba::tuple_list_of(29,1)(29,9) )
+ ( ba::tuple_list_of(29,9)(21,9) )
+ ( ba::tuple_list_of(21,9)(21,1) )
+ );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl << std::endl << std::endl;
+#endif
+}
diff --git a/libs/geometry/test/iterators/test_iterator_common.hpp b/libs/geometry/test/iterators/test_iterator_common.hpp
new file mode 100644
index 0000000000..05b84a463c
--- /dev/null
+++ b/libs/geometry/test/iterators/test_iterator_common.hpp
@@ -0,0 +1,206 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef GEOMETRY_TEST_ITERATORS_TEST_ITERATOR_COMMON_HPP
+#define GEOMETRY_TEST_ITERATORS_TEST_ITERATOR_COMMON_HPP
+
+#include <cstddef>
+#include <iostream>
+#include <iterator>
+#include <string>
+#include <algorithm>
+
+#include <boost/test/included/unit_test.hpp>
+
+// helper functions for testing the concatenate and flatten iterators
+
+template <typename Iterator>
+inline std::ostream& print_container(std::ostream& os,
+ Iterator begin, Iterator end,
+ std::string const& header)
+{
+ std::cout << header;
+ for (Iterator it = begin; it != end; ++it)
+ {
+ os << " " << *it;
+ }
+ return os;
+}
+
+
+template <typename Iterator>
+inline std::ostream& print_nested_container(std::ostream& os,
+ Iterator begin, Iterator end,
+ std::string const& header)
+{
+ typedef typename std::iterator_traits<Iterator>::value_type inner_container;
+ typedef typename inner_container::const_iterator inner_iterator;
+
+ std::cout << header;
+ for (Iterator outer = begin; outer != end; ++outer)
+ {
+ os << " (";
+ for (inner_iterator inner = outer->begin();
+ inner != outer->end(); ++inner)
+ {
+ if ( inner != outer->begin() )
+ {
+ os << " ";
+ }
+ os << *inner;
+ }
+ os << ") ";
+ }
+ return os;
+}
+
+
+template <typename T>
+struct is_odd
+{
+ inline bool operator()(T const& t) const
+ {
+ return t % 2 != 0;
+ }
+};
+
+
+template <typename T>
+struct is_even
+{
+ inline bool operator()(T const& t) const
+ {
+ return !is_odd<T>()(t);
+ }
+};
+
+
+
+
+template <typename CombinedIterator, typename CombinedContainer>
+inline void test_size(CombinedIterator first, CombinedIterator beyond,
+ CombinedContainer const& combined)
+{
+ std::size_t size = static_cast<std::size_t>(std::distance(first, beyond));
+ BOOST_CHECK( combined.size() == size );
+
+ size = 0;
+ for (CombinedIterator it = first; it != beyond; ++it)
+ {
+ ++size;
+ }
+ BOOST_CHECK( combined.size() == size );
+
+ size = 0;
+ for (CombinedIterator it = beyond; it != first; --it)
+ {
+ ++size;
+ }
+ BOOST_CHECK( combined.size() == size );
+}
+
+
+
+template <typename CombinedIterator, typename CombinedContainer>
+inline void test_equality(CombinedIterator first, CombinedIterator beyond,
+ CombinedContainer const& combined)
+{
+ typedef typename CombinedContainer::const_iterator iterator;
+
+ iterator it = combined.begin();
+ for (CombinedIterator cit = first; cit != beyond; ++cit, ++it)
+ {
+ BOOST_CHECK( *cit == *it );
+ }
+
+ if ( combined.begin() != combined.end() )
+ {
+ BOOST_CHECK( first != beyond );
+ iterator it = combined.end();
+ CombinedIterator cit = beyond;
+ for (--cit, --it; cit != first; --cit, --it)
+ {
+ BOOST_CHECK( *cit == *it );
+ }
+ BOOST_CHECK( cit == first && it == combined.begin() );
+ BOOST_CHECK( *cit == *it );
+ }
+ else
+ {
+ BOOST_CHECK( first == beyond );
+ }
+}
+
+
+
+template <typename CombinedIterator, typename CombinedContainer>
+inline void test_using_remove_if(CombinedIterator first,
+ CombinedIterator beyond,
+ CombinedContainer& combined)
+{
+ typedef typename std::iterator_traits
+ <
+ CombinedIterator
+ >::value_type value_type;
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << std::endl;
+ std::cout << "odd elements removed:" << std::endl;
+ print_container(std::cout, first, beyond, "before:") << std::endl;
+#endif
+ typename std::iterator_traits<CombinedIterator>::difference_type
+ num_even = std::count_if(first, beyond, is_even<value_type>());
+
+ CombinedIterator new_beyond =
+ std::remove_if(first, beyond, is_odd<value_type>());
+
+ std::size_t new_size = std::distance(first, new_beyond);
+
+ for (CombinedIterator it = first; it != new_beyond; ++it)
+ {
+ BOOST_CHECK( !is_odd<value_type>()(*it) );
+ }
+ BOOST_CHECK( new_size == static_cast<std::size_t>(num_even) );
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ print_container(std::cout, first, new_beyond, "after :") << std::endl;
+#endif
+
+ combined.erase(std::remove_if(combined.begin(), combined.end(),
+ is_odd<value_type>()),
+ combined.end());
+ test_equality(first, new_beyond, combined);
+}
+
+
+template <typename CombinedIterator, typename CombinedContainer>
+inline void test_using_reverse(CombinedIterator first,
+ CombinedIterator beyond,
+ CombinedContainer& combined)
+{
+ std::reverse(first, beyond);
+ std::reverse(combined.begin(), combined.end());
+ test_equality(first, beyond, combined);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ print_container(std::cout, first, beyond, "reversed:") << std::endl;
+#endif
+
+ std::reverse(first, beyond);
+ std::reverse(combined.begin(), combined.end());
+ test_equality(first, beyond, combined);
+
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ print_container(std::cout, first, beyond, "re-reversed:") << std::endl;
+#endif
+}
+
+
+#endif // GEOMETRY_TEST_ITERATORS_TEST_ITERATOR_COMMON_HPP
diff --git a/libs/geometry/test/multi/algorithms/Jamfile.v2 b/libs/geometry/test/multi/algorithms/Jamfile.v2
index 813d6aafa0..ef1d6b2c83 100644
--- a/libs/geometry/test/multi/algorithms/Jamfile.v2
+++ b/libs/geometry/test/multi/algorithms/Jamfile.v2
@@ -1,8 +1,8 @@
# 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.
+# Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+# Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+# Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
#
# Use, modification and distribution is subject to the Boost Software License,
# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -16,13 +16,14 @@ test-suite boost-geometry-multi-algorithms
[ run multi_convex_hull.cpp ]
[ run multi_correct.cpp ]
[ run multi_covered_by.cpp ]
- [ run multi_difference.cpp ]
+ [ run multi_difference.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
+ [ run multi_difference_spike.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
[ run multi_disjoint.cpp ]
- [ run multi_distance.cpp ]
[ run multi_envelope.cpp ]
[ run multi_equals.cpp ]
[ run multi_for_each.cpp ]
- [ run multi_intersection.cpp ]
+ [ run multi_intersection.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
+ [ run multi_intersects.cpp ]
[ run multi_length.cpp ]
[ run multi_num_geometries.cpp ]
[ run multi_num_interior_rings.cpp ]
@@ -32,7 +33,7 @@ test-suite boost-geometry-multi-algorithms
[ run multi_simplify.cpp ]
[ run multi_touches.cpp ]
[ run multi_transform.cpp ]
- [ run multi_union.cpp ]
+ [ run multi_union.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <toolset>msvc:<cxxflags>/bigobj ]
[ run multi_unique.cpp ]
[ run multi_within.cpp ]
;
diff --git a/libs/geometry/test/multi/algorithms/multi_area.vcproj b/libs/geometry/test/multi/algorithms/multi_area.vcproj
deleted file mode 100644
index 7adb7a0586..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_area.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_area"
- ProjectGUID="{691082ED-2778-4300-9860-42DFBBABE535}"
- RootNamespace="multi_area"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_area"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_area"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_area.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_centroid.cpp b/libs/geometry/test/multi/algorithms/multi_centroid.cpp
index 25c66c085f..aec62c2b7c 100644
--- a/libs/geometry/test/multi/algorithms/multi_centroid.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_centroid.cpp
@@ -15,6 +15,8 @@
#include <algorithms/test_centroid.hpp>
+#include <boost/core/ignore_unused.hpp>
+
#include <boost/geometry/multi/core/point_order.hpp>
#include <boost/geometry/multi/algorithms/centroid.hpp>
#include <boost/geometry/multi/strategies/cartesian/centroid_average.hpp>
@@ -35,6 +37,8 @@ template <typename P>
void test_2d(bool is_integer = false)
{
typedef typename bg::coordinate_type<P>::type ct;
+ boost::ignore_unused<ct>();
+
#ifdef REPORT_RESULTS
std::cout << std::endl << "type: " << typeid(ct).name() << " size: " << sizeof(ct) << std::endl;
#endif
diff --git a/libs/geometry/test/multi/algorithms/multi_centroid.vcproj b/libs/geometry/test/multi/algorithms/multi_centroid.vcproj
deleted file mode 100644
index b713a44525..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_centroid.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_centroid"
- ProjectGUID="{7EE302E1-7FCF-4E9E-8DB3-36EA4D88B6CA}"
- RootNamespace="multi_centroid"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_centroid"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_centroid"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_centroid.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_clear.cpp b/libs/geometry/test/multi/algorithms/multi_clear.cpp
new file mode 100644
index 0000000000..39d777930e
--- /dev/null
+++ b/libs/geometry/test/multi/algorithms/multi_clear.cpp
@@ -0,0 +1,69 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+//
+// Copyright (c) 2011-2012 Barend Gehrels, 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)
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/algorithms/clear.hpp>
+#include <boost/geometry/algorithms/num_points.hpp>
+#include <boost/geometry/multi/algorithms/clear.hpp>
+#include <boost/geometry/multi/algorithms/num_points.hpp>
+
+#include <boost/geometry/io/wkt/wkt.hpp>
+#include <boost/geometry/multi/io/wkt/wkt.hpp>
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+#include <boost/variant/variant.hpp>
+
+
+template <typename Geometry>
+void test_geometry(std::string const& wkt, unsigned int expected)
+{
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ boost::variant<Geometry> variant_geometry(geometry);
+
+ bg::clear(geometry);
+ BOOST_CHECK_EQUAL(bg::num_points(geometry), expected);
+
+ bg::clear(variant_geometry);
+ BOOST_CHECK_EQUAL(bg::num_points(variant_geometry), expected);
+}
+
+
+template <typename Point>
+void test_all()
+{
+ typedef bg::model::polygon<Point> poly;
+ typedef bg::model::linestring<Point> ls;
+ typedef bg::model::multi_point<Point> mpoint;
+ typedef bg::model::multi_linestring<ls> mls;
+ typedef bg::model::multi_polygon<poly> mpoly;
+
+ test_geometry<Point>("POINT(0 0)", 1);
+ test_geometry<ls>("LINESTRING(0 0,0 1)", 0);
+ test_geometry<poly>("POLYGON((0 0,0 1,1 0,0 0))", 0);
+ test_geometry<mpoint>("MULTIPOINT((0 0),(0 1),(1 0),(0 0))", 0);
+ test_geometry<mls>("MULTILINESTRING((0 0,0 1),(1 0,0 0))", 0);
+ test_geometry<mpoly>("MULTIPOLYGON(((0 0,0 1,1 0,0 0)),((10 0,10 1,11 0,10 0)))", 0);
+}
+
+
+int test_main( int , char* [] )
+{
+ test_all<bg::model::d2::point_xy<double> >();
+
+#ifdef HAVE_TTMATH
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/multi/algorithms/multi_convert.cpp b/libs/geometry/test/multi/algorithms/multi_convert.cpp
index 840fa2e26b..0bfdf6ea67 100644
--- a/libs/geometry/test/multi/algorithms/multi_convert.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_convert.cpp
@@ -8,6 +8,7 @@
#include <algorithms/test_convert.hpp>
#include <boost/geometry/multi/algorithms/convert.hpp>
+#include <boost/geometry/multi/algorithms/num_points.hpp>
#include <boost/geometry/multi/geometries/multi_point.hpp>
#include <boost/geometry/multi/geometries/multi_linestring.hpp>
@@ -22,62 +23,67 @@ void test_mixed_point_types()
{
test_mixed_identical_result
<
- bg::model::multi_point<Point1>,
- bg::model::multi_point<Point2>
+ bg::model::multi_point<Point1>,
+ bg::model::multi_point<Point2>
>
("MULTIPOINT((1 1),(2 2),(3 3))");
test_mixed_identical_result
<
- bg::model::multi_linestring<bg::model::linestring<Point1> >,
- bg::model::multi_linestring<bg::model::linestring<Point2> >
+ bg::model::multi_linestring<bg::model::linestring<Point1> >,
+ bg::model::multi_linestring<bg::model::linestring<Point2> >
>
("MULTILINESTRING((1 1,2 2),(3 3,4 4))");
// Single -> multi (always possible)
test_mixed
<
- Point1, bg::model::multi_point<Point2>
+ Point1, bg::model::multi_point<Point2>
>
(
- "POINT(1 1)",
- "MULTIPOINT((1 1))"
+ "POINT(1 1)",
+ "MULTIPOINT((1 1))",
+ 1
);
test_mixed
<
- bg::model::linestring<Point1>,
- bg::model::multi_linestring<bg::model::linestring<Point2> >
+ bg::model::linestring<Point1>,
+ bg::model::multi_linestring<bg::model::linestring<Point2> >
>
(
- "LINESTRING(1 1,2 2)",
- "MULTILINESTRING((1 1,2 2))"
+ "LINESTRING(1 1,2 2)",
+ "MULTILINESTRING((1 1,2 2))",
+ 2
);
test_mixed
<
- bg::model::segment<Point1>,
- bg::model::multi_linestring<bg::model::linestring<Point2> >
+ bg::model::segment<Point1>,
+ bg::model::multi_linestring<bg::model::linestring<Point2> >
>
(
- "LINESTRING(1 1,2 2)",
- "MULTILINESTRING((1 1,2 2))"
+ "LINESTRING(1 1,2 2)",
+ "MULTILINESTRING((1 1,2 2))",
+ 2
);
test_mixed
<
- bg::model::box<Point1>,
- bg::model::multi_polygon<bg::model::polygon<Point2> >
+ bg::model::box<Point1>,
+ bg::model::multi_polygon<bg::model::polygon<Point2> >
>
(
- "BOX(0 0,1 1)",
- "MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)))"
+ "BOX(0 0,1 1)",
+ "MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)))",
+ 5
);
test_mixed
<
- bg::model::ring<Point1, true>,
- bg::model::multi_polygon<bg::model::polygon<Point2, false> >
+ bg::model::ring<Point1, true>,
+ bg::model::multi_polygon<bg::model::polygon<Point2, false> >
>
(
- "POLYGON((0 0,0 1,1 1,1 0,0 0))",
- "MULTIPOLYGON(((0 0,1 0,1 1,0 1,0 0)))"
+ "POLYGON((0 0,0 1,1 1,1 0,0 0))",
+ "MULTIPOLYGON(((0 0,1 0,1 1,0 1,0 0)))",
+ 5
);
// Multi -> single: should not compile (because multi often have 0 or >1 elements)
diff --git a/libs/geometry/test/multi/algorithms/multi_convert.vcproj b/libs/geometry/test/multi/algorithms/multi_convert.vcproj
deleted file mode 100644
index 4829412bef..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_convert.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_convert"
- ProjectGUID="{21B7EF55-23C3-4FD2-9F2F-FD8F0F3FE167}"
- RootNamespace="multi_convert"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_convert"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_convert"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_convert.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_convex_hull.cpp b/libs/geometry/test/multi/algorithms/multi_convex_hull.cpp
index 0da8d0ecf2..4fe00633f3 100644
--- a/libs/geometry/test/multi/algorithms/multi_convex_hull.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_convex_hull.cpp
@@ -5,6 +5,11 @@
// Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
// Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 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.
@@ -52,18 +57,18 @@ void test_all()
test_geometry<mp>("MULTIPOINT((0 0),(5 0),(1 1),(4 1))", -1, 5, 4.0);
test_geometry<mp>("MULTIPOINT((0 1),(5 1),(1 0),(4 0))", -1, 5, 4.0);
- // All points in vertical line (this delivers an empty polygon with 2 points and a closing point)
- test_geometry<mp>("MULTIPOINT((1 0),(5 0),(3 0),(4 0),(2 0))", -1, 3, 0.0);
+ // All points in vertical line (this delivers an empty polygon with 3 points and closing point for closed)
+ test_geometry<mp>("MULTIPOINT((1 0),(5 0),(3 0),(4 0),(2 0))", -1, 4, 0.0);
// One point only
- test_geometry<mp>("MULTIPOINT((1 0))", -1, 3, 0.0);
+ test_geometry<mp>("MULTIPOINT((1 0))", -1, 4, 0.0);
// Problem of 6019, reproduced by the convex hull robustness test:
- test_geometry<mp>("MULTIPOINT((2 9),(1 3),(9 4),(1 1),(1 0),(7 9),(2 5),(3 7),(3 6),(2 4))",
+ test_geometry<mp>("MULTIPOINT((2 9),(1 3),(9 4),(1 1),(1 0),(7 9),(2 5),(3 7),(3 6),(2 4))",
-1, 6, 48.0);
// Ticket 6019:
- test_geometry<mp>("MULTIPOINT((0 53),(0 103),(0 53),(0 3),(0 3),(0 0),(1 0),(1 1),(2 1),(2 0),(2 0),(2 0),(3 0),(3 1),(4 1),(4 0),(5 0),(0 3),(10 3),(10 2),(10 2),(10 2),(5 2),(5 0),(5 0),(55 0),(105 0))",
+ test_geometry<mp>("MULTIPOINT((0 53),(0 103),(0 53),(0 3),(0 3),(0 0),(1 0),(1 1),(2 1),(2 0),(2 0),(2 0),(3 0),(3 1),(4 1),(4 0),(5 0),(0 3),(10 3),(10 2),(10 2),(10 2),(5 2),(5 0),(5 0),(55 0),(105 0))",
-1, 4, 5407.5);
// Ticket 6021:
test_geometry<mp>("multipoint((0 53), (0 103), (1 53))", 3, 4, 25);
diff --git a/libs/geometry/test/multi/algorithms/multi_convex_hull.vcproj b/libs/geometry/test/multi/algorithms/multi_convex_hull.vcproj
deleted file mode 100644
index 839e71c7c3..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_convex_hull.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_convex_hull"
- ProjectGUID="{B810C404-C4D9-4A6A-96B0-1DCED269D65D}"
- RootNamespace="multi_convex_hull"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_convex_hull"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_convex_hull"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_convex_hull.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_correct.vcproj b/libs/geometry/test/multi/algorithms/multi_correct.vcproj
deleted file mode 100644
index cc280ffd71..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_correct.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_correct"
- ProjectGUID="{DFB00B88-2ED8-49CA-B739-7C8A8602D681}"
- RootNamespace="multi_correct"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_correct"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_correct"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_correct.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_covered_by.vcproj b/libs/geometry/test/multi/algorithms/multi_covered_by.vcproj
deleted file mode 100644
index 87a62a9389..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_covered_by.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_covered_by"
- ProjectGUID="{680E56F0-229C-4377-BDC0-80EB9B59314B}"
- RootNamespace="multi_covered_by"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_covered_by"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_covered_by"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_covered_by.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_difference.cpp b/libs/geometry/test/multi/algorithms/multi_difference.cpp
index e5e47bc5c0..8c6b0dbbbb 100644
--- a/libs/geometry/test/multi/algorithms/multi_difference.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_difference.cpp
@@ -10,7 +10,12 @@
#include <iostream>
#include <string>
-// #define BOOST_GEOMETRY_DEBUG_ASSEMBLE
+// If defined, tests are run without rescaling-to-integer or robustness policy
+// This multi_difference currently contains no tests for double which then fail
+// #define BOOST_GEOMETRY_NO_ROBUSTNESS
+
+//#define HAVE_TTMATH
+//#define BOOST_GEOMETRY_DEBUG_ASSEMBLE
//#define BOOST_GEOMETRY_CHECK_WITH_SQLSERVER
//#define BOOST_GEOMETRY_DEBUG_SEGMENT_IDENTIFIER
@@ -38,7 +43,7 @@ void test_areal()
{
test_one<Polygon, MultiPolygon, MultiPolygon>("simplex_multi",
case_multi_simplex[0], case_multi_simplex[1],
- 5, 12, 5.58, 4, 12, 2.58);
+ 5, 21, 5.58, 4, 17, 2.58);
test_one<Polygon, MultiPolygon, MultiPolygon>("case_multi_no_ip",
case_multi_no_ip[0], case_multi_no_ip[1],
@@ -49,13 +54,13 @@ void test_areal()
test_one<Polygon, MultiPolygon, Polygon>("simplex_multi_mp_p",
case_multi_simplex[0], case_single_simplex,
- 5, 22, 5.58, 4, 17, 2.58);
+ 5, 21, 5.58, 4, 17, 2.58);
test_one<Polygon, Ring, MultiPolygon>("simplex_multi_r_mp",
case_single_simplex, case_multi_simplex[0],
- 4, 17, 2.58, 5, 22, 5.58);
+ 4, 17, 2.58, 5, 21, 5.58);
test_one<Ring, MultiPolygon, Polygon>("simplex_multi_mp_r",
case_multi_simplex[0], case_single_simplex,
- 5, 22, 5.58, 4, 17, 2.58);
+ 5, 21, 5.58, 4, 17, 2.58);
// Constructed cases for multi/touch/equal/etc
test_one<Polygon, MultiPolygon, MultiPolygon>("case_61_multi",
@@ -69,7 +74,7 @@ void test_areal()
0, 0, 0, 1, 5, 1);
test_one<Polygon, MultiPolygon, MultiPolygon>("case_64_multi",
case_64_multi[0], case_64_multi[1],
- 1, 1, 1, 1, 1, 1);
+ 1, 5, 1, 1, 5, 1);
test_one<Polygon, MultiPolygon, MultiPolygon>("case_65_multi",
case_65_multi[0], case_65_multi[1],
0, 0, 0, 2, 10, 3);
@@ -84,22 +89,22 @@ void test_areal()
test_one<Polygon, MultiPolygon, MultiPolygon>("case_78_multi",
case_78_multi[0], case_78_multi[1],
- 1, 1, 1.0, 1, 1, 1.0);
+ 1, 5, 1.0, 1, 5, 1.0);
// Ticket on GGL list 2011/10/25
// to mix polygon/multipolygon in call to difference
test_one<Polygon, Polygon, Polygon>("ggl_list_20111025_vd_pp",
ggl_list_20111025_vd[0], ggl_list_20111025_vd[1],
- 1, -999, 8.0, 1, -999, 12.5);
+ 1, 4, 8.0, 1, 4, 12.5);
test_one<Polygon, Polygon, MultiPolygon>("ggl_list_20111025_vd_pm",
ggl_list_20111025_vd[0], ggl_list_20111025_vd[3],
- 1, -999, 8.0, 1, -999, 12.5);
+ 1, 4, 8.0, 1, 4, 12.5);
test_one<Polygon, MultiPolygon, Polygon>("ggl_list_20111025_vd_mp",
ggl_list_20111025_vd[2], ggl_list_20111025_vd[1],
- 1, -999, 8.0, 1, -999, 12.5);
+ 1, 4, 8.0, 1, 4, 12.5);
test_one<Polygon, MultiPolygon, MultiPolygon>("ggl_list_20111025_vd_mm",
ggl_list_20111025_vd[2], ggl_list_20111025_vd[3],
- 1, -999, 8.0, 1, -999, 12.5);
+ 1, 4, 8.0, 1, 4, 12.5);
// Second case
// This can be tested with this SQL for SQL-Server
@@ -108,7 +113,7 @@ void test_areal()
'POLYGON((5 0,5 4,8 4,8 0,5 0))',0) as p,
geometry::STGeomFromText(
'MULTIPOLYGON(((0 0,0 2,2 2,2 0,0 0)),((4 0,4 2,6 2,6 0,4 0)))',0) as q)
- select
+ select
p.STDifference(q).STArea(),p.STDifference(q).STNumGeometries(),p.STDifference(q) as p_min_q,
q.STDifference(p).STArea(),q.STDifference(p).STNumGeometries(),q.STDifference(p) as q_min_p,
p.STSymDifference(q).STArea(),q.STSymDifference(p) as p_xor_q
@@ -120,8 +125,24 @@ void test_areal()
test_one<Polygon, Polygon, MultiPolygon>("ggl_list_20111025_vd_2",
ggl_list_20111025_vd_2[0], ggl_list_20111025_vd_2[1],
- 1, -999, 10.0, 2, -999, 6.0);
+ 1, 7, 10.0, 2, 10, 6.0);
+
+ test_one<Polygon, MultiPolygon, MultiPolygon>("ggl_list_20120915_h2_a",
+ ggl_list_20120915_h2[0], ggl_list_20120915_h2[1],
+ 2, 13, 17.0, 0, 0, 0.0);
+ test_one<Polygon, MultiPolygon, MultiPolygon>("ggl_list_20120915_h2_b",
+ ggl_list_20120915_h2[0], ggl_list_20120915_h2[2],
+ 2, 13, 17.0, 0, 0, 0.0);
+
+ test_one<Polygon, MultiPolygon, MultiPolygon>("ggl_list_20120221_volker",
+ ggl_list_20120221_volker[0], ggl_list_20120221_volker[1],
+ 2, 12, 7962.66, 1, 18, 2775258.93,
+ 0.001);
+ test_one<Polygon, MultiPolygon, MultiPolygon>("ticket_9081",
+ ticket_9081[0], ticket_9081[1],
+ 2, 28, 0.0907392476356186, 4, 25, 0.126018011439877,
+ 0.001);
/* TODO: fix
test_one<Polygon, MultiPolygon, MultiPolygon>("case_101_multi",
@@ -165,15 +186,15 @@ void test_areal_linear()
test_one_lp<LineString, LineString, MultiPolygon>("case_mp_ls_2a", "LINESTRING(1 0,1 1,2 1,2 0)", "MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)),((1 1,1 2,2 2,2 1,1 1)))", 1, 2, 1.0);
test_one_lp<LineString, LineString, MultiPolygon>("case_mp_ls_2b", "LINESTRING(1 0,1 1,2 1,2 0)", "MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((0 0,0 1,1 1,1 0,0 0)))", 1, 2, 1.0);
- test_one_lp<LineString, LineString, MultiPolygon>("case_mp_ls_3",
- "LINESTRING(6 6,6 7,7 7,7 6,8 6,8 7,9 7,9 6)",
+ test_one_lp<LineString, LineString, MultiPolygon>("case_mp_ls_3",
+ "LINESTRING(6 6,6 7,7 7,7 6,8 6,8 7,9 7,9 6)",
"MULTIPOLYGON(((5 7,5 8,6 8,6 7,5 7)),((6 6,6 7,7 7,7 6,6 6)),((8 8,9 8,9 7,8 7,7 7,7 8,8 8)))", 2, 5, 3.0);
return;
// TODO: this case contains collinearities and should still be solved
- test_one_lp<LineString, LineString, MultiPolygon>("case_mp_ls_4",
- "LINESTRING(0 5,0 6,1 6,1 5,2 5,2 6,3 6,3 5,3 4,3 3,2 3,2 4,1 4,1 3,0 3,0 4)",
+ test_one_lp<LineString, LineString, MultiPolygon>("case_mp_ls_4",
+ "LINESTRING(0 5,0 6,1 6,1 5,2 5,2 6,3 6,3 5,3 4,3 3,2 3,2 4,1 4,1 3,0 3,0 4)",
"MULTIPOLYGON(((0 2,0 3,1 2,0 2)),((2 5,3 6,3 5,2 5)),((1 5,1 6,2 6,2 5,1 5)),((2 3,2 4,3 4,2 3)),((0 3,1 4,1 3,0 3)),((4 3,3 3,3 5,4 5,4 4,4 3)))", 5, 11, 6.0);
}
@@ -181,7 +202,7 @@ void test_areal_linear()
template <typename P>
void test_all()
{
- typedef bg::model::box<P> box;
+ //typedef bg::model::box<P> box;
typedef bg::model::ring<P> ring;
typedef bg::model::polygon<P> polygon;
typedef bg::model::multi_polygon<polygon> multi_polygon;
@@ -192,12 +213,17 @@ void test_all()
int test_main(int, char* [])
{
- test_all<bg::model::d2::point_xy<double> >();
+ test_all<bg::model::d2::point_xy<double > >();
-#ifdef HAVE_TTMATH
+#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
+ test_all<bg::model::d2::point_xy<float> >();
+
+#if defined(HAVE_TTMATH)
std::cout << "Testing TTMATH" << std::endl;
test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif
+#endif
+
return 0;
}
diff --git a/libs/geometry/test/multi/algorithms/multi_difference.vcproj b/libs/geometry/test/multi/algorithms/multi_difference.vcproj
deleted file mode 100644
index 825789743d..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_difference.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_difference"
- ProjectGUID="{7F85B87A-48A6-47BD-A08C-AB12AEA56582}"
- RootNamespace="multi_difference"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_difference"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_difference"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_difference.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_difference_spike.cpp b/libs/geometry/test/multi/algorithms/multi_difference_spike.cpp
new file mode 100644
index 0000000000..6753a23803
--- /dev/null
+++ b/libs/geometry/test/multi/algorithms/multi_difference_spike.cpp
@@ -0,0 +1,105 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2013 Barend Gehrels, 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)
+
+
+#include <boost/geometry.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/geometries/multi_geometries.hpp>
+
+#include <algorithms/test_difference.hpp>
+
+
+template <typename P, bool ClockWise, bool Closed>
+void test_spikes_in_ticket_8364()
+{
+ // See: https://svn.boost.org/trac/boost/ticket/8364
+ //_TPolygon<T> polygon( "MULTIPOLYGON(((1031 1056,3232 1056,3232 2856,1031 2856)))" );
+ //polygon -= _TPolygon<T>( "MULTIPOLYGON(((1032 1458,1032 1212,2136 2328,3234 2220,3234 2412,2136 2646)))" );
+ //polygon -= _TPolygon<T>( "MULTIPOLYGON(((1032 1764,1032 1458,2136 2646,3234 2412,3234 2532,2136 2790)))" );
+ // RESULTS OF ABOVE IS USED IN STEP 3 BELOW
+ //polygon -= _TPolygon<T>( "MULTIPOLYGON(((1032 2130,1032 1764,2052 2712)),((3234 2580,2558 2690,3234 2532)),((2558 2690,2136 2790,2052 2712,2136 2760)))" ); USED IN STEP 3
+ //polygon -= _TPolygon<T>( "MULTIPOLYGON(((1032 2556,1032 2130,1778 2556)),((3234 2580,2136 2760,1778 2556,3234 2556)))" ); USED IN STEP 4
+ // NOTE: polygons below are closed and clockwise
+
+ typedef typename bg::coordinate_type<P>::type ct;
+ typedef bg::model::polygon<P, ClockWise, Closed> polygon;
+ typedef bg::model::multi_polygon<polygon> multi_polygon;
+
+ // The difference of polygons below result in a spike. The spike should be there, it is also generated in ttmath,
+ // and (e.g.) in SQL Server. However, using int-coordinates, the spike makes the polygon invalid. Therefore it is now (since August 2013) checked and removed.
+
+ // So using int's, the spike is removed automatically. Therefore there is one polygon less, and less points. Also area differs
+ test_one<polygon, multi_polygon, multi_polygon>("ticket_8364_step3",
+ "MULTIPOLYGON(((3232 2532,2136 2790,1032 1764,1032 1458,1032 1212,2136 2328,3232 2220,3232 1056,1031 1056,1031 2856,3232 2856,3232 2532)))",
+ "MULTIPOLYGON(((1032 2130,2052 2712,1032 1764,1032 2130)),((3234 2580,3234 2532,2558 2690,3234 2580)),((2558 2690,2136 2760,2052 2712,2136 2790,2558 2690)))",
+ 2,
+ if_typed<ct, int>(19, 22),
+ if_typed<ct, int>(2775595.5, 2775256.487954), // SQL Server: 2775256.47588724
+ 3,
+ -1, // don't check point-count
+ if_typed<ct, int>(7907.0, 7810.487954)); // SQL Server: 7810.48711165739
+
+ test_one<polygon, multi_polygon, multi_polygon>("ticket_8364_step4",
+ "MULTIPOLYGON(((2567 2688,2136 2790,2052 2712,1032 2130,1032 1764,1032 1458,1032 1212,2136 2328,3232 2220,3232 1056,1031 1056,1031 2856,3232 2856,3232 2580,2567 2688)))",
+ "MULTIPOLYGON(((1032 2556,1778 2556,1032 2130,1032 2556)),((3234 2580,3234 2556,1778 2556,2136 2760,3234 2580)))",
+ 1,
+ if_typed<ct, int>(17, 20),
+ if_typed<ct, int>(2616125.0, 2616029.559567), // SQL Server: 2616029.55616044
+ 1,
+ if_typed<ct, int>(9, 11),
+ if_typed<ct, int>(161211.5, 161054.559567)); // SQL Server: 161054.560110092
+}
+
+template <typename P, bool ClockWise, bool Closed>
+void test_spikes_in_ticket_8365()
+{
+ // See: https://svn.boost.org/trac/boost/ticket/8365
+ // NOTE: polygons below are closed and clockwise
+
+ typedef typename bg::coordinate_type<P>::type ct;
+ typedef bg::model::polygon<P, ClockWise, Closed> polygon;
+ typedef bg::model::multi_polygon<polygon> multi_polygon;
+
+ test_one<polygon, multi_polygon, multi_polygon>("ticket_8365_step2",
+ "MULTIPOLYGON(((971 2704,971 1402,4640 1402,3912 1722,3180 2376,3912 1884,4643 1402,5395 1402,5395 3353,971 3353,971 2865,1704 3348)))",
+ "MULTIPOLYGON(((5388 1560,4650 1722,3912 1884,4650 1398)),((2442 3186,1704 3348,966 2700,1704 3024)))",
+ if_typed<ct, int>(1, 2),
+ if_typed<ct, int>(17, 21),
+ if_typed<ct, int>(7974930.5, 7975207.6047877), // SQL Server:
+ 2,
+ -1,
+ if_typed<ct, int>(196.5, 197.1047877)); // SQL Server:
+}
+
+
+
+
+
+int test_main(int, char* [])
+{
+ test_spikes_in_ticket_8364<bg::model::d2::point_xy<double>, true, true>();
+ test_spikes_in_ticket_8364<bg::model::d2::point_xy<double>, false, false>();
+ test_spikes_in_ticket_8365<bg::model::d2::point_xy<double>, true, true>();
+ test_spikes_in_ticket_8365<bg::model::d2::point_xy<double>, false, false>();
+
+ test_spikes_in_ticket_8364<bg::model::d2::point_xy<int>, true, true>();
+ test_spikes_in_ticket_8364<bg::model::d2::point_xy<int>, false, false>();
+ test_spikes_in_ticket_8365<bg::model::d2::point_xy<int>, true, true >();
+ test_spikes_in_ticket_8365<bg::model::d2::point_xy<int>, false, false >();
+
+#ifdef HAVE_TTMATH
+ std::cout << "Testing TTMATH" << std::endl;
+ test_spikes_in_ticket_8364<bg::model::d2::point_xy<ttmath_big>, true, true>();
+ test_spikes_in_ticket_8365<bg::model::d2::point_xy<ttmath_big>, true, true>();
+#endif
+
+ return 0;
+}
+
diff --git a/libs/geometry/test/multi/algorithms/multi_disjoint.cpp b/libs/geometry/test/multi/algorithms/multi_disjoint.cpp
index a1b88ce213..05cd985e31 100644
--- a/libs/geometry/test/multi/algorithms/multi_disjoint.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_disjoint.cpp
@@ -7,15 +7,9 @@
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
-#include <iostream>
-#include <string>
+#include <algorithms/test_disjoint.hpp>
-#include <geometry_test_common.hpp>
-
-#include <boost/geometry/algorithms/disjoint.hpp>
-#include <boost/geometry/io/wkt/read.hpp>
-#include <boost/geometry/multi/io/wkt/read.hpp>
#include <boost/geometry/strategies/strategies.hpp>
#include <boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp>
@@ -35,27 +29,7 @@
#include <test_common/test_point.hpp>
-#include <algorithms/test_relate.hpp>
-
-
-template <typename G1, typename G2>
-void test_disjoint(std::string const& id,
- std::string const& wkt1,
- std::string const& wkt2, bool expected)
-{
- G1 g1;
- bg::read_wkt(wkt1, g1);
-
- G2 g2;
- bg::read_wkt(wkt2, g2);
-
- bool detected = bg::disjoint(g1, g2);
- BOOST_CHECK_MESSAGE(detected == expected,
- "disjoint: " << id
- << " -> Expected: " << expected
- << " detected: " << detected);
-}
-
+#include <algorithms/predef_relop.hpp>
template <typename P>
@@ -64,39 +38,72 @@ void test_all()
typedef bg::model::polygon<P> polygon;
typedef bg::model::multi_polygon<polygon> mp;
- test_disjoint<mp, mp>("",
+ test_disjoint<mp, mp>("",
"MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
"MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
false);
// True disjoint
- test_disjoint<mp, mp>("",
+ test_disjoint<mp, mp>("",
"MULTIPOLYGON(((0 0,0 4,4 4,4 0,0 0)))",
"MULTIPOLYGON(((6 6,6 10,10 10,10 6,6 6)))",
true);
// Touch -> not disjoint
- test_disjoint<mp, mp>("",
+ test_disjoint<mp, mp>("",
"MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)))",
"MULTIPOLYGON(((5 5,5 10,10 10,10 5,5 5)))",
false);
// Not disjoint but no IP's
- test_disjoint<mp, mp>("no_ips",
+ test_disjoint<mp, mp>("no_ips",
"MULTIPOLYGON(((2 2,2 8,8 8,8 2,2 2)),((20 0,20 10,30 10,30 0,20 0)))",
"MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((22 2,28 2,28 8,22 8,22 2)))",
false);
// Not disjoint and not inside each other (in first ring) but wrapped (in second rings)
- test_disjoint<mp, mp>("no_ips2",
+ test_disjoint<mp, mp>("no_ips2",
"MULTIPOLYGON(((2 2,2 8,8 8,8 2,2 2)),((20 0,20 10,30 10,30 0,20 0)))",
"MULTIPOLYGON(((2 12,2 18,8 18,8 12,2 12)),((22 2,28 2,28 8,22 8,22 2)))",
false);
- test_disjoint<mp, mp>("no_ips2_rev",
+ test_disjoint<mp, mp>("no_ips2_rev",
"MULTIPOLYGON(((2 12,2 18,8 18,8 12,2 12)),((22 2,28 2,28 8,22 8,22 2)))",
"MULTIPOLYGON(((2 2,2 8,8 8,8 2,2 2)),((20 0,20 10,30 10,30 0,20 0)))",
false);
+
+
+ test_disjoint<P, mp>("point_mp1",
+ "POINT(0 0)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ false);
+
+ test_disjoint<P, mp>("point_mp2",
+ "POINT(5 5)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ false);
+
+ test_disjoint<P, mp>("point_mp1",
+ "POINT(11 11)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ true);
+
+ std::string polygon_inside_hole("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0), (2 2,8 2,8 8,2 8,2 2)),((4 4,4 6,6 6,6 4,4 4)))");
+ test_disjoint<P, mp>("point_mp_pih1",
+ "POINT(5 5)",
+ polygon_inside_hole,
+ false);
+
+ test_disjoint<P, mp>("point_mp_pih2",
+ "POINT(3 3)",
+ polygon_inside_hole,
+ true);
+
+ test_disjoint<mp, P>("point_mp1rev",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ "POINT(0 0)",
+ false);
+
}
int test_main(int, char* [])
@@ -116,8 +123,8 @@ int test_main(int, char* [])
with viewy as
(
select geometry::STGeomFromText('MULTIPOLYGON(((2 2,2 8,8 8,8 2,2 2)),((20 0,20 10,30 10,30 0,20 0)))',0) as p
- , geometry::STGeomFromText('MULTIPOLYGON(((2 12,2 18,8 18,8 12,2 12)),((22 2,28 2,28 8,22 8,22 2)))',0) as q
+ , geometry::STGeomFromText('MULTIPOLYGON(((2 12,2 18,8 18,8 12,2 12)),((22 2,28 2,28 8,22 8,22 2)))',0) as q
)
select p from viewy union all select q from viewy
-- select p.STDisjoint(q) from viewy
-*/ \ No newline at end of file
+*/
diff --git a/libs/geometry/test/multi/algorithms/multi_disjoint.vcproj b/libs/geometry/test/multi/algorithms/multi_disjoint.vcproj
deleted file mode 100644
index fb55ab3259..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_disjoint.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8,00"
- Name="multi_disjoint"
- ProjectGUID="{5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}"
- RootNamespace="multi_disjoint"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_disjoint"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_disjoint"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_disjoint.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_distance.cpp b/libs/geometry/test/multi/algorithms/multi_distance.cpp
deleted file mode 100644
index 249598c914..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_distance.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
-//
-// Copyright (c) 2007-2012 Barend Gehrels, 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)
-
-#include <string>
-
-
-#include <geometry_test_common.hpp>
-
-#include <algorithms/test_distance.hpp>
-
-#include <boost/geometry/algorithms/distance.hpp>
-#include <boost/geometry/io/wkt/read.hpp>
-
-#include <boost/geometry/strategies/strategies.hpp>
-
-
-#include <boost/geometry/multi/algorithms/distance.hpp>
-#include <boost/geometry/multi/geometries/multi_point.hpp>
-#include <boost/geometry/multi/geometries/multi_linestring.hpp>
-#include <boost/geometry/multi/geometries/multi_polygon.hpp>
-#include <boost/geometry/multi/io/wkt/read.hpp>
-
-#include <boost/geometry/geometries/geometries.hpp>
-#include <boost/geometry/geometries/point_xy.hpp>
-#include <boost/geometry/geometries/adapted/c_array.hpp>
-#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
-#include <test_common/test_point.hpp>
-
-BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian)
-BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
-
-
-template <typename Geometry1, typename Geometry2>
-void test_distance(std::string const& wkt1, std::string const& wkt2, double expected)
-{
- Geometry1 g1;
- Geometry2 g2;
- bg::read_wkt(wkt1, g1);
- bg::read_wkt(wkt2, g2);
- typename bg::default_distance_result<Geometry1, Geometry2>::type d = bg::distance(g1, g2);
-
- BOOST_CHECK_CLOSE(d, expected, 0.0001);
-}
-
-template <typename Geometry1, typename Geometry2, typename Strategy>
-void test_distance(Strategy const& strategy, std::string const& wkt1,
- std::string const& wkt2, double expected)
-{
- Geometry1 g1;
- Geometry2 g2;
- bg::read_wkt(wkt1, g1);
- bg::read_wkt(wkt2, g2);
- typename bg::default_distance_result<Geometry1, Geometry2>::type d = bg::distance(g1, g2, strategy);
-
- BOOST_CHECK_CLOSE(d, expected, 0.0001);
-}
-
-
-template <typename P>
-void test_2d()
-{
- typedef bg::model::multi_point<P> mp;
- typedef bg::model::multi_linestring<bg::model::linestring<P> > ml;
- test_distance<P, P>("POINT(0 0)", "POINT(1 1)", sqrt(2.0));
- test_distance<P, mp>("POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
- test_distance<mp, P>("MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
- test_distance<mp, mp>("MULTIPOINT((1 1),(1 0),(0 2))", "MULTIPOINT((2 2),(2 3))", sqrt(2.0));
- test_distance<P, ml>("POINT(0 0)", "MULTILINESTRING((1 1,2 2),(1 0,2 0),(0 2,0 3))", 1.0);
- test_distance<ml, P>("MULTILINESTRING((1 1,2 2),(1 0,2 0),(0 2,0 3))", "POINT(0 0)", 1.0);
- test_distance<ml, mp>("MULTILINESTRING((1 1,2 2),(1 0,2 0),(0 2,0 3))", "MULTIPOINT((0 0),(1 1))", 0.0);
-
- // Test with a strategy
- bg::strategy::distance::pythagoras<P, P> pyth;
- test_distance<P, P>(pyth, "POINT(0 0)", "POINT(1 1)", sqrt(2.0));
- test_distance<P, mp>(pyth, "POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
- test_distance<mp, P>(pyth, "MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
-}
-
-
-template <typename P>
-void test_3d()
-{
- typedef bg::model::multi_point<P> mp;
- test_distance<P, P>("POINT(0 0 0)", "POINT(1 1 1)", sqrt(3.0));
- test_distance<P, mp>("POINT(0 0 0)", "MULTIPOINT((1 1 1),(1 0 0),(0 1 2))", 1.0);
- test_distance<mp, mp>("MULTIPOINT((1 1 1),(1 0 0),(0 0 2))", "MULTIPOINT((2 2 2),(2 3 4))", sqrt(3.0));
-}
-
-
-template <typename P1, typename P2>
-void test_mixed()
-{
- typedef bg::model::multi_point<P1> mp1;
- typedef bg::model::multi_point<P2> mp2;
-
- test_distance<P1, P2>("POINT(0 0)", "POINT(1 1)", sqrt(2.0));
-
- test_distance<P1, mp1>("POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
- test_distance<P1, mp2>("POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
- test_distance<P2, mp1>("POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
- test_distance<P2, mp2>("POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
-
- // Test automatic reversal
- test_distance<mp1, P1>("MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
- test_distance<mp1, P2>("MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
- test_distance<mp2, P1>("MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
- test_distance<mp2, P2>("MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
-
- // Test multi-multi using different point types for each
- test_distance<mp1, mp2>("MULTIPOINT((1 1),(1 0),(0 2))", "MULTIPOINT((2 2),(2 3))", sqrt(2.0));
-
- // Test with a strategy
- using namespace bg::strategy::distance;
-
- test_distance<P1, P2>(pythagoras<P1, P2>(), "POINT(0 0)", "POINT(1 1)", sqrt(2.0));
-
- test_distance<P1, mp1>(pythagoras<P1, P1>(), "POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
- test_distance<P1, mp2>(pythagoras<P1, P2>(), "POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
- test_distance<P2, mp1>(pythagoras<P2, P1>(), "POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
- test_distance<P2, mp2>(pythagoras<P2, P2>(), "POINT(0 0)", "MULTIPOINT((1 1),(1 0),(0 2))", 1.0);
-
- // Most interesting: reversal AND a strategy (note that the stategy must be reversed automatically
- test_distance<mp1, P1>(pythagoras<P1, P1>(), "MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
- test_distance<mp1, P2>(pythagoras<P1, P2>(), "MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
- test_distance<mp2, P1>(pythagoras<P2, P1>(), "MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
- test_distance<mp2, P2>(pythagoras<P2, P2>(), "MULTIPOINT((1 1),(1 0),(0 2))", "POINT(0 0)", 1.0);
-}
-
-template <typename P>
-void test_empty_input()
-{
- P p;
- bg::model::multi_point<P> mp_empty;
- bg::model::multi_linestring<bg::model::linestring<P> > ml_empty;
-
- test_empty_input(p, mp_empty);
- test_empty_input(p, ml_empty);
- test_empty_input(mp_empty, mp_empty);
-
- // Test behaviour if one of the inputs is empty
- bg::model::multi_point<P> mp;
- mp.push_back(p);
- test_empty_input(mp_empty, mp);
- test_empty_input(mp, mp_empty);
-}
-
-
-int test_main( int , char* [] )
-{
- test_2d<boost::tuple<float, float> >();
- test_2d<bg::model::d2::point_xy<float> >();
- test_2d<bg::model::d2::point_xy<double> >();
-
- test_3d<boost::tuple<float, float, float> >();
- test_3d<bg::model::point<double, 3, bg::cs::cartesian> >();
-
- test_mixed<bg::model::d2::point_xy<float>, bg::model::d2::point_xy<double> >();
-
-#ifdef HAVE_TTMATH
- test_2d<bg::model::d2::point_xy<ttmath_big> >();
- test_mixed<bg::model::d2::point_xy<ttmath_big>, bg::model::d2::point_xy<double> >();
-#endif
-
- test_empty_input<bg::model::d2::point_xy<int> >();
-
- return 0;
-}
diff --git a/libs/geometry/test/multi/algorithms/multi_distance.vcproj b/libs/geometry/test/multi/algorithms/multi_distance.vcproj
deleted file mode 100644
index 7b3e77d280..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_distance.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_distance"
- ProjectGUID="{D770F3E8-0567-4EDD-91FC-20BA402A3F74}"
- RootNamespace="multi_distance"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_distance"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_distance"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_distance.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_envelope.cpp b/libs/geometry/test/multi/algorithms/multi_envelope.cpp
index dad5d0bc20..bafa5dc25f 100644
--- a/libs/geometry/test/multi/algorithms/multi_envelope.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_envelope.cpp
@@ -49,7 +49,7 @@ void test_2d()
template <typename P>
void test_3d()
{
- typedef bg::model::multi_point<P> mp;
+ //typedef bg::model::multi_point<P> mp;
}
diff --git a/libs/geometry/test/multi/algorithms/multi_envelope.vcproj b/libs/geometry/test/multi/algorithms/multi_envelope.vcproj
deleted file mode 100644
index 9d4db61af6..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_envelope.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_envelope"
- ProjectGUID="{85385CF0-240C-4900-B5EA-E34D2415A18F}"
- RootNamespace="multi_envelope"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_envelope"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_envelope"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_envelope.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_equals.vcproj b/libs/geometry/test/multi/algorithms/multi_equals.vcproj
deleted file mode 100644
index c35636018f..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_equals.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_equals"
- ProjectGUID="{AA0EFD64-E034-421A-BD4A-E5A336D95C30}"
- RootNamespace="multi_equals"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_equals"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_equals"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_equals.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_for_each.cpp b/libs/geometry/test/multi/algorithms/multi_for_each.cpp
index 846abdda53..70165a44f7 100644
--- a/libs/geometry/test/multi/algorithms/multi_for_each.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_for_each.cpp
@@ -68,7 +68,22 @@ void test_all()
, "((1, 1), (1, 4)) ((1, 4), (4, 4)) ((4, 4), (4, 1)) ((4, 1), (1, 1))"
, 4 * 3.0
- , "MULTIPOLYGON(((10 1,10 4,4 4,4 1,1 1)))"
+ , "MULTIPOLYGON(((10 1,10 4,4 4,4 1,1 1,10 1)))"
+ );
+
+ // open multipolygon
+ typedef bg::model::multi_polygon<bg::model::polygon<P, true, false> > omp;
+ test_geometry<omp>
+ (
+ "MULTIPOLYGON(((1 1,1 4,4 4,4 1)))"
+
+ , 10
+ , "MULTIPOLYGON(((101 1,101 4,104 4,104 1,101 1)))"
+ , "MULTIPOLYGON(((101 100,101 400,104 400,104 100,101 100)))"
+
+ , "((1, 1), (1, 4)) ((1, 4), (4, 4)) ((4, 4), (4, 1)) ((4, 1), (1, 1))"
+ , 4 * 3.0
+ , "MULTIPOLYGON(((10 1,10 4,4 4,4 1,10 1)))"
);
}
diff --git a/libs/geometry/test/multi/algorithms/multi_for_each.vcproj b/libs/geometry/test/multi/algorithms/multi_for_each.vcproj
deleted file mode 100644
index 51c5b9667f..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_for_each.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_for_each"
- ProjectGUID="{B016FE33-D587-45C6-8444-607839BB2C2D}"
- RootNamespace="multi_for_each"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_for_each"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_for_each"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_for_each.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_intersection.cpp b/libs/geometry/test/multi/algorithms/multi_intersection.cpp
index d479f5d115..8dea0da23e 100644
--- a/libs/geometry/test/multi/algorithms/multi_intersection.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_intersection.cpp
@@ -10,6 +10,10 @@
#include <iostream>
#include <string>
+// If defined, tests are run without rescaling-to-integer or robustness policy
+// This multi_intersection currently contains no tests for double then failing
+// #define BOOST_GEOMETRY_NO_ROBUSTNESS
+
// #define BOOST_GEOMETRY_DEBUG_ASSEMBLE
#include <algorithms/test_intersection.hpp>
@@ -93,13 +97,24 @@ void test_areal()
case_recursive_boxes_2[0], case_recursive_boxes_2[1],
1, 47, 90.0); // Area from SQL Server
- test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_3",
- case_recursive_boxes_3[0], case_recursive_boxes_3[1],
- 19, 87, 12.5); // Area from SQL Server
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_3",
+ case_recursive_boxes_3[0], case_recursive_boxes_3[1],
+ 19, 87, 12.5); // Area from SQL Server
+
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_4",
+ case_recursive_boxes_4[0], case_recursive_boxes_4[1],
+ 13, 157, 67.0); // Area from SQL Server
- test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_4",
- case_recursive_boxes_4[0], case_recursive_boxes_4[1],
- 13, 157, 67.0); // Area from SQL Server
+ test_one<Polygon, MultiPolygon, MultiPolygon>("ggl_list_20120915_h2_a",
+ ggl_list_20120915_h2[0], ggl_list_20120915_h2[1],
+ 2, 10, 6.0); // Area from SQL Server
+ test_one<Polygon, MultiPolygon, MultiPolygon>("ggl_list_20120915_h2_b",
+ ggl_list_20120915_h2[0], ggl_list_20120915_h2[2],
+ 2, 10, 6.0); // Area from SQL Server
+
+ test_one<Polygon, MultiPolygon, MultiPolygon>("ticket_9081",
+ ticket_9081[0], ticket_9081[1],
+ 2, 10, 0.0019812556);
}
template <typename Polygon, typename MultiPolygon, typename Box>
@@ -168,7 +183,7 @@ void test_areal_linear()
template <typename P>
void test_all()
{
- typedef bg::model::box<P> box;
+ //typedef bg::model::box<P> box;
typedef bg::model::ring<P> ring;
typedef bg::model::polygon<P> polygon;
typedef bg::model::multi_polygon<polygon> multi_polygon;
@@ -211,10 +226,15 @@ int test_main(int, char* [])
{
test_all<bg::model::d2::point_xy<double> >();
-#ifdef HAVE_TTMATH
+#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
+ test_all<bg::model::d2::point_xy<float> >();
+
+#if defined(HAVE_TTMATH)
std::cout << "Testing TTMATH" << std::endl;
test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif
+#endif
+
return 0;
}
diff --git a/libs/geometry/test/multi/algorithms/multi_intersection.vcproj b/libs/geometry/test/multi/algorithms/multi_intersection.vcproj
deleted file mode 100644
index a286b038c5..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_intersection.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_intersection"
- ProjectGUID="{FFB78F24-7999-4416-BDED-9C35A3DDF32D}"
- RootNamespace="multi_intersection"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_intersection"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_intersection"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_intersection.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_intersects.cpp b/libs/geometry/test/multi/algorithms/multi_intersects.cpp
new file mode 100644
index 0000000000..d07b8b6cf1
--- /dev/null
+++ b/libs/geometry/test/multi/algorithms/multi_intersects.cpp
@@ -0,0 +1,51 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2012 Barend Gehrels, 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)
+
+#include <iostream>
+#include <string>
+
+
+#include <geometry_test_common.hpp>
+
+#include <algorithms/test_intersects.hpp>
+
+#include <boost/geometry.hpp>
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+template <typename P>
+void test_all()
+{
+ typedef bg::model::polygon<P> polygon;
+ typedef bg::model::multi_polygon<polygon> mp;
+
+ test_geometry<mp, mp>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ true);
+
+ test_geometry<P, mp>("POINT(0 0)",
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))",
+ true);
+
+}
+
+int test_main(int, char* [])
+{
+ //test_all<bg::model::d2::point_xy<float> >();
+ test_all<bg::model::d2::point_xy<double> >();
+
+#ifdef HAVE_TTMATH
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}
+
diff --git a/libs/geometry/test/multi/algorithms/multi_length.vcproj b/libs/geometry/test/multi/algorithms/multi_length.vcproj
deleted file mode 100644
index 43967af1ab..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_length.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_length"
- ProjectGUID="{9087BA6C-7563-41E6-90AD-F60BC58DDC17}"
- RootNamespace="multi_length"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_length"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_length"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_length.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_num_geometries.vcproj b/libs/geometry/test/multi/algorithms/multi_num_geometries.vcproj
deleted file mode 100644
index c1beefad14..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_num_geometries.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_num_geometries"
- ProjectGUID="{8DB68EB9-07CA-4705-859E-B1A7098B5CF3}"
- RootNamespace="multi_num_geometries"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_num_geometries"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_num_geometries"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_num_geometries.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_num_interior_rings.vcproj b/libs/geometry/test/multi/algorithms/multi_num_interior_rings.vcproj
deleted file mode 100644
index 68c6ebf627..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_num_interior_rings.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_num_interior_rings"
- ProjectGUID="{3F8E4B3A-43D5-49ED-89F6-C6D1CF609B02}"
- RootNamespace="multi_num_interior_rings"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_num_interior_rings"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_num_interior_rings"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_num_interior_rings.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_num_points.cpp b/libs/geometry/test/multi/algorithms/multi_num_points.cpp
index 98771b13f2..d43b71d47b 100644
--- a/libs/geometry/test/multi/algorithms/multi_num_points.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_num_points.cpp
@@ -19,11 +19,12 @@
#include <boost/geometry/multi/geometries/multi_linestring.hpp>
#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+#include <boost/variant/variant.hpp>
+
+
template <typename Geometry>
-void test_geometry(std::string const& wkt, int expected)
+void check_geometry(Geometry const& geometry, std::string const& wkt, int expected)
{
- Geometry geometry;
- bg::read_wkt(wkt, geometry);
int detected = bg::num_points(geometry);
BOOST_CHECK_MESSAGE(detected == expected,
"num_points: " << wkt
@@ -31,6 +32,15 @@ void test_geometry(std::string const& wkt, int expected)
<< " detected: " << detected);
}
+template <typename Geometry>
+void test_geometry(std::string const& wkt, int expected)
+{
+ Geometry geometry;
+ bg::read_wkt(wkt, geometry);
+ check_geometry(geometry, wkt, expected);
+ check_geometry(boost::variant<Geometry>(geometry), wkt, expected);
+}
+
template <typename Point>
void test_all()
diff --git a/libs/geometry/test/multi/algorithms/multi_num_points.vcproj b/libs/geometry/test/multi/algorithms/multi_num_points.vcproj
deleted file mode 100644
index 590d220c3c..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_num_points.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_num_points"
- ProjectGUID="{EA4B2EB3-1FBA-42BE-B7D7-5A517BC74E2B}"
- RootNamespace="multi_num_points"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_num_points"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_num_points"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_num_points.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_perimeter.vcproj b/libs/geometry/test/multi/algorithms/multi_perimeter.vcproj
deleted file mode 100644
index 4059e83bb4..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_perimeter.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_perimeter"
- ProjectGUID="{D91C3F39-B8A5-4EB9-A7A8-D72B297DCFBF}"
- RootNamespace="multi_perimeter"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_perimeter"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_perimeter"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_perimeter.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_reverse.vcproj b/libs/geometry/test/multi/algorithms/multi_reverse.vcproj
deleted file mode 100644
index 6afcee18e5..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_reverse.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_reverse"
- ProjectGUID="{698BE05D-43E2-4BF5-B7FD-48BE3EE7BC21}"
- RootNamespace="multi_reverse"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_reverse"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_reverse"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_reverse.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_simplify.vcproj b/libs/geometry/test/multi/algorithms/multi_simplify.vcproj
deleted file mode 100644
index e4d11963a9..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_simplify.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_simplify"
- ProjectGUID="{76A74CE4-EBF8-4F8A-98B7-1AF607B2B68C}"
- RootNamespace="multi_simplify"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_simplify"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_simplify"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_simplify.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_touches.cpp b/libs/geometry/test/multi/algorithms/multi_touches.cpp
index 0186c62e30..8774beaf2e 100644
--- a/libs/geometry/test/multi/algorithms/multi_touches.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_touches.cpp
@@ -16,6 +16,7 @@
#include <boost/geometry/multi/algorithms/detail/for_each_range.hpp>
#include <boost/geometry/multi/core/closure.hpp>
#include <boost/geometry/multi/core/geometry_id.hpp>
+#include <boost/geometry/multi/core/topological_dimension.hpp>
#include <boost/geometry/multi/core/ring_type.hpp>
#include <boost/geometry/multi/views/detail/range_type.hpp>
@@ -32,6 +33,8 @@ void test_all()
{
typedef bg::model::polygon<P> polygon;
typedef bg::model::multi_polygon<polygon> mp;
+ typedef bg::model::linestring<P> linestring;
+ typedef bg::model::multi_linestring<linestring> ml;
test_self_touches<mp>("MULTIPOLYGON(((0 0,0 100,100 100,100 0,0 0)))",
false);
@@ -62,10 +65,22 @@ void test_all()
true);
// Touch plus inside
- // TODO fix this
test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
"MULTIPOLYGON(((10 10,10 20,20 20,20 10,10 10)),((22 2,28 2,28 8,22 8,22 2)))",
false);
+
+
+ test_touches<mp, ml>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
+ "MULTILINESTRING((10 10,10 20,20 20,20 10,10 10),(30 10,30 20,40 20,40 10,30 10))",
+ true);
+
+ test_touches<mp, ml>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
+ "MULTILINESTRING((10 10,10 20,20 20,20 10,10 10),(22 2,28 2,28 8,22 8,22 2))",
+ false);
+
+ test_touches<mp, ml>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
+ "MULTILINESTRING((10 10,10 20,20 20,20 10,10 10),(50 2,60 2,60 8,50 8,50 2))",
+ true);
}
int test_main( int , char* [] )
diff --git a/libs/geometry/test/multi/algorithms/multi_touches.vcproj b/libs/geometry/test/multi/algorithms/multi_touches.vcproj
deleted file mode 100644
index 05468f6cde..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_touches.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8,00"
- Name="multi_touches"
- ProjectGUID="{108173B8-B6F4-4366-8018-2BF282ED4881}"
- RootNamespace="multi_touches"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_touches"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_touches"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_touches.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_transform.cpp b/libs/geometry/test/multi/algorithms/multi_transform.cpp
index dddb01c45b..9c00025836 100644
--- a/libs/geometry/test/multi/algorithms/multi_transform.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_transform.cpp
@@ -39,12 +39,13 @@
template <typename Geometry>
void test_transform(std::string const& wkt, std::string const& expected)
{
- typedef typename bg::point_type<Geometry>::type point_type;
+ typedef typename bg::coordinate_type<Geometry>::type coordinate_type;
+ const std::size_t dim = bg::dimension<Geometry>::value;
Geometry geometry_in, geometry_out;
bg::read_wkt(wkt, geometry_in);
bg::transform(geometry_in, geometry_out,
- bg::strategy::transform::scale_transformer<point_type>(2, 2));
+ bg::strategy::transform::scale_transformer<coordinate_type, dim, dim>(2, 2));
std::ostringstream detected;
detected << bg::wkt(geometry_out);
BOOST_CHECK_EQUAL(detected.str(), expected);
diff --git a/libs/geometry/test/multi/algorithms/multi_transform.vcproj b/libs/geometry/test/multi/algorithms/multi_transform.vcproj
deleted file mode 100644
index 543890ffb4..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_transform.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_transform"
- ProjectGUID="{64985954-0A74-46F5-908F-865E905C3414}"
- RootNamespace="multi_transform"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_transform"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_transform"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_transform.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_union.cpp b/libs/geometry/test/multi/algorithms/multi_union.cpp
index ffa694291a..2e1e309a62 100644
--- a/libs/geometry/test/multi/algorithms/multi_union.cpp
+++ b/libs/geometry/test/multi/algorithms/multi_union.cpp
@@ -10,6 +10,9 @@
#include <iostream>
#include <string>
+// If defined, tests are run without rescaling-to-integer or robustness policy
+// This multi_union currently contains no tests for double which then fail
+// #define BOOST_GEOMETRY_NO_ROBUSTNESS
#include <algorithms/test_union.hpp>
#include <algorithms/test_overlay.hpp>
@@ -106,6 +109,21 @@ void test_areal()
test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_3",
case_recursive_boxes_3[0], case_recursive_boxes_3[1],
17, 0, 159, 56.5); // Area from SQL Server
+
+ test_one<Polygon, MultiPolygon, MultiPolygon>("ggl_list_20120915_h2_a",
+ ggl_list_20120915_h2[0], ggl_list_20120915_h2[1],
+ 1, 0, 12, 23.0); // Area from SQL Server
+ test_one<Polygon, MultiPolygon, MultiPolygon>("ggl_list_20120915_h2_b",
+ ggl_list_20120915_h2[0], ggl_list_20120915_h2[2],
+ 1, 0, 12, 23.0); // Area from SQL Server
+
+ test_one<Polygon, MultiPolygon, MultiPolygon>("ggl_list_20140212_sybren",
+ ggl_list_20140212_sybren[0], ggl_list_20140212_sybren[1],
+ 2, 0, 16, 0.002471626);
+
+ test_one<Polygon, MultiPolygon, MultiPolygon>("ticket_9081",
+ ticket_9081[0], ticket_9081[1],
+ 3, 0, 31, 0.2187385);
}
template <typename P>
@@ -133,10 +151,15 @@ int test_main(int, char* [])
{
test_all<bg::model::d2::point_xy<double> >();
-#ifdef HAVE_TTMATH
+#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
+ test_all<bg::model::d2::point_xy<float> >();
+
+#if defined(HAVE_TTMATH)
std::cout << "Testing TTMATH" << std::endl;
test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif
+#endif
+
return 0;
}
diff --git a/libs/geometry/test/multi/algorithms/multi_union.vcproj b/libs/geometry/test/multi/algorithms/multi_union.vcproj
deleted file mode 100644
index 9adb101458..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_union.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_union"
- ProjectGUID="{1A8443BE-2666-4D6B-B4BC-6A7B7DD224B0}"
- RootNamespace="multi_union"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_union"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_union"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_union.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_unique.vcproj b/libs/geometry/test/multi/algorithms/multi_unique.vcproj
deleted file mode 100644
index d6a662b105..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_unique.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_unique"
- ProjectGUID="{71879D37-84A8-4949-8CDB-212982F81D80}"
- RootNamespace="multi_unique"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_unique"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_unique"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_unique.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/multi_within.vcproj b/libs/geometry/test/multi/algorithms/multi_within.vcproj
deleted file mode 100644
index f5d6ad350f..0000000000
--- a/libs/geometry/test/multi/algorithms/multi_within.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_within"
- ProjectGUID="{CA8D5E44-7D8F-44A1-901C-35C28890299B}"
- RootNamespace="multi_within"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_within"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_within"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_within.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/algorithms/overlay/Jamfile.v2 b/libs/geometry/test/multi/algorithms/overlay/Jamfile.v2
index a2e9a0ce53..2ea7594e15 100644
--- a/libs/geometry/test/multi/algorithms/overlay/Jamfile.v2
+++ b/libs/geometry/test/multi/algorithms/overlay/Jamfile.v2
@@ -10,5 +10,5 @@
test-suite boost-geometry-multi-algorithms-overlay
:
- [ run multi_traverse.cpp ]
+ [ run multi_traverse.cpp : : : <define>BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE <define>BOOST_GEOMETRY_RESCALE_TO_ROBUST ]
;
diff --git a/libs/geometry/test/multi/algorithms/overlay/multi_overlay.sln b/libs/geometry/test/multi/algorithms/overlay/multi_overlay.sln
deleted file mode 100644
index ecb94cc331..0000000000
--- a/libs/geometry/test/multi/algorithms/overlay/multi_overlay.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_traverse", "multi_traverse.vcproj", "{DB00BBA3-4959-4F9E-A235-E487FF766207}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {DB00BBA3-4959-4F9E-A235-E487FF766207}.Debug|Win32.ActiveCfg = Debug|Win32
- {DB00BBA3-4959-4F9E-A235-E487FF766207}.Debug|Win32.Build.0 = Debug|Win32
- {DB00BBA3-4959-4F9E-A235-E487FF766207}.Release|Win32.ActiveCfg = Release|Win32
- {DB00BBA3-4959-4F9E-A235-E487FF766207}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp b/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp
index 536aa09531..c44b17adb5 100644
--- a/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp
+++ b/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -17,397 +17,397 @@ static std::string case_multi_simplex[2] = {
"MULTIPOLYGON(((0 1,2 5,5 3,0 1)),((1 1,5 2,5 0,1 1)))",
"MULTIPOLYGON(((3 0,0 3,4 5,3 0)))" };
-// To mix multi/single
+// To mix multi/single
static std::string case_single_simplex = "POLYGON((3 0,0 3,4 5,3 0))";
-static std::string case_multi_no_ip[2] =
+static std::string case_multi_no_ip[2] =
{
"MULTIPOLYGON(((4 1,0 7,7 9,4 1)),((8 1,6 3,10 4,8 1)),((12 6,10 7,13 8,12 6)))",
- "MULTIPOLYGON(((14 4,8 8,15 10,14 4)),((15 3,18 9,20 2,15 3)),((3 4,1 7,5 7,3 4)))"
+ "MULTIPOLYGON(((14 4,8 8,15 10,14 4)),((15 3,18 9,20 2,15 3)),((3 4,1 7,5 7,3 4)))"
};
-static std::string case_multi_2[2] =
+static std::string case_multi_2[2] =
{
"MULTIPOLYGON(((4 3,2 7,10 9,4 3)),((8 1,6 3,10 4,8 1)),((12 6,10 7,13 8,12 6)))",
- "MULTIPOLYGON(((14 4,8 8,15 10,14 4)),((15 3,18 9,20 2,15 3)),((5 5,4 7,7 7,5 5)))"
+ "MULTIPOLYGON(((14 4,8 8,15 10,14 4)),((15 3,18 9,20 2,15 3)),((5 5,4 7,7 7,5 5)))"
};
-static std::string case_61_multi[2] =
+static std::string case_61_multi[2] =
{
// extracted from recursive boxes
"MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((2 2,2 3,3 3,3 2,2 2)))",
- "MULTIPOLYGON(((1 2,1 3,2 3,2 2,1 2)),((2 3,2 4,3 4,3 3,2 3)))"
+ "MULTIPOLYGON(((1 2,1 3,2 3,2 2,1 2)),((2 3,2 4,3 4,3 3,2 3)))"
};
-static std::string case_62_multi[2] =
+static std::string case_62_multi[2] =
{
// extracted from recursive boxes
"MULTIPOLYGON(((1 2,1 3,2 3,2 2,1 2)))",
- "MULTIPOLYGON(((1 2,1 3,2 3,2 2,1 2)),((2 3,2 4,3 4,3 3,2 3)))"
+ "MULTIPOLYGON(((1 2,1 3,2 3,2 2,1 2)),((2 3,2 4,3 4,3 3,2 3)))"
};
-static std::string case_63_multi[2] =
+static std::string case_63_multi[2] =
{
// extracted from recursive boxes
"MULTIPOLYGON(((1 2,1 3,2 3,2 2,1 2)))",
- "MULTIPOLYGON(((1 2,1 3,2 3,2 2,1 2)),((2 1,2 2,3 2,3 1,2 1)))"
+ "MULTIPOLYGON(((1 2,1 3,2 3,2 2,1 2)),((2 1,2 2,3 2,3 1,2 1)))"
};
-static std::string case_64_multi[3] =
+static std::string case_64_multi[3] =
{
// extracted from recursive boxes
"MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((2 2,2 3,3 3,3 2,2 2)))",
"MULTIPOLYGON(((1 1,1 2,2 2,3 2,3 1,2 1,1 1)))" ,
// same but omitting not-necessary form-points at x=2 (==simplified)
- "MULTIPOLYGON(((1 1,1 2,3 2,3 1,1 1)))"
+ "MULTIPOLYGON(((1 1,1 2,3 2,3 1,1 1)))"
};
-static std::string case_65_multi[2] =
+static std::string case_65_multi[2] =
{
"MULTIPOLYGON(((2 2,2 3,3 3,3 2,2 2)))",
- "MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((2 2,2 3,3 3,3 2,2 2)),((3 1,3 2,5 2,5 1,3 1)))"
+ "MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((2 2,2 3,3 3,3 2,2 2)),((3 1,3 2,5 2,5 1,3 1)))"
};
-static std::string case_66_multi[2] =
+static std::string case_66_multi[2] =
{
"MULTIPOLYGON(((3 5,2 5,2 6,3 6,4 6,4 5,3 5)),((1 6,0 6,0 7,1 7,2 7,2 6,1 6)))",
- "MULTIPOLYGON(((1 4,1 5,2 5,2 4,1 4)),((1 7,2 7,2 6,1 6,1 7)),((0 8,0 9,1 9,1 8,1 7,0 7,0 8)))"
+ "MULTIPOLYGON(((1 4,1 5,2 5,2 4,1 4)),((1 7,2 7,2 6,1 6,1 7)),((0 8,0 9,1 9,1 8,1 7,0 7,0 8)))"
};
-static std::string case_67_multi[2] =
+static std::string case_67_multi[2] =
{
"MULTIPOLYGON(((1 2,1 3,2 3,2 2,1 2)),((2 1,2 2,3 2,3 1,2 1)))",
- "MULTIPOLYGON(((1 1,1 2,3 2,3 1,1 1)))"
+ "MULTIPOLYGON(((1 1,1 2,3 2,3 1,1 1)))"
};
-static std::string case_68_multi[2] =
+static std::string case_68_multi[2] =
{
"MULTIPOLYGON(((2 1,2 2,4 2,4 1,2 1)),((4 2,4 3,5 3,5 2,4 2)))",
- "MULTIPOLYGON(((1 2,1 3,2 3,2 2,1 2)),((2 1,2 2,3 2,3 1,2 1)),((3 2,3 3,5 3,5 2,3 2)))"
+ "MULTIPOLYGON(((1 2,1 3,2 3,2 2,1 2)),((2 1,2 2,3 2,3 1,2 1)),((3 2,3 3,5 3,5 2,3 2)))"
};
-static std::string case_69_multi[2] =
+static std::string case_69_multi[2] =
{
"MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((3 2,3 3,4 3,4 2,3 2)))",
- "MULTIPOLYGON(((2 0,2 1,3 1,3 0,2 0)),((1 1,1 3,2 3,2 1,1 1)),((2 3,2 4,3 4,3 3,2 3)))"
+ "MULTIPOLYGON(((2 0,2 1,3 1,3 0,2 0)),((1 1,1 3,2 3,2 1,1 1)),((2 3,2 4,3 4,3 3,2 3)))"
};
-static std::string case_71_multi[2] =
+static std::string case_71_multi[2] =
{
"MULTIPOLYGON(((0 0,0 3,1 3,1 1,3 1,3 2,4 2,4 0,0 0)),((2 2,2 3,3 3,3 2,2 2)))",
- "MULTIPOLYGON(((0 2,0 3,3 3,3 2,0 2)))"
+ "MULTIPOLYGON(((0 2,0 3,3 3,3 2,0 2)))"
};
-static std::string case_72_multi[2] =
+static std::string case_72_multi[2] =
{
// cluster with ii, done by both traverse and assemble
"MULTIPOLYGON(((0 3,4 4,3 0,3 3,0 3)),((3 3,2 1,1 2,3 3)))",
- "MULTIPOLYGON(((0 0,1 4,3 3,4 1,0 0)))"
+ "MULTIPOLYGON(((0 0,1 4,3 3,4 1,0 0)))"
};
-static std::string case_73_multi[2] =
+static std::string case_73_multi[2] =
{
"MULTIPOLYGON(((2 2,2 3,3 3,3 2,2 2)),((1 1,1 2,2 2,2 1,1 1)))",
- "MULTIPOLYGON(((1 1,1 2,2 2,2 3,3 3,3 1,1 1)))"
+ "MULTIPOLYGON(((1 1,1 2,2 2,2 3,3 3,3 1,1 1)))"
};
-static std::string case_74_multi[2] =
+static std::string case_74_multi[2] =
{
"MULTIPOLYGON(((3 0,2 0,2 1,3 1,3 3,1 3,1 2,2 2,2 1,0 1,0 5,4 5,4 0,3 0)))",
"MULTIPOLYGON(((0 2,0 3,1 3,1 1,2 1,2 0,0 0,0 2)),((2 3,1 3,1 4,2 4,2 3)))"
};
-
-static std::string case_75_multi[2] =
+
+static std::string case_75_multi[2] =
{
// cc/uu turns on all corners of second box
"MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((1 3,1 4,2 4,2 3,1 3)),((2 2,2 3,3 3,3 2,2 2)),((3 1,3 2,4 2,4 1,3 1)),((3 3,3 4,4 4,4 3,3 3)))",
"MULTIPOLYGON(((2 2,2 3,3 3,3 2,2 2)))"
};
-static std::string case_76_multi[2] =
+static std::string case_76_multi[2] =
{
// cc/uu turns on all corners of second box, might generate TWO OVERLAPPING union polygons!
// therefore, don't follow uu.
"MULTIPOLYGON(((1 0,1 1,2 1,2 0,1 0)),((3 2,4 2,4 1,3 1,3 2)),((2 2,2 3,3 3,3 2,2 2)),((2 3,1 3,1 4,2 4,2 3)),((3 3,3 4,4 4,4 3,3 3)))",
- "MULTIPOLYGON(((0 2,0 3,1 3,1 2,2 2,2 0,1 0,1 1,0 1,0 2)),((2 2,2 3,3 3,3 2,2 2)))"
+ "MULTIPOLYGON(((0 2,0 3,1 3,1 2,2 2,2 0,1 0,1 1,0 1,0 2)),((2 2,2 3,3 3,3 2,2 2)))"
};
-static std::string case_77_multi[2] =
+static std::string case_77_multi[2] =
{
- // with a point on interior-ring-border of enclosing
+ // with a point on interior-ring-border of enclosing
// -> went wrong in the assemble phase for intersection (traversal is OK)
// -> fixed
"MULTIPOLYGON(((3 3,3 4,4 4,4 3,3 3)),((5 3,5 4,4 4,4 5,3 5,3 6,5 6,5 5,7 5,7 6,8 6,8 5,9 5,9 2,8 2,8 1,7 1,7 2,5 2,5 3),(6 3,8 3,8 4,6 4,6 3)))",
- "MULTIPOLYGON(((6 3,6 4,7 4,7 3,6 3)),((2 3,1 3,1 4,3 4,3 5,4 5,4 6,5 6,5 7,9 7,9 4,7 4,7 5,8 5,8 6,7 6,7 5,6 5,6 4,4 4,4 3,3 3,3 2,2 2,2 3)),((5 2,4 2,4 3,6 3,6 2,5 2)),((7 2,7 3,8 3,8 2,8 1,7 1,7 2)))"
+ "MULTIPOLYGON(((6 3,6 4,7 4,7 3,6 3)),((2 3,1 3,1 4,3 4,3 5,4 5,4 6,5 6,5 7,9 7,9 4,7 4,7 5,8 5,8 6,7 6,7 5,6 5,6 4,4 4,4 3,3 3,3 2,2 2,2 3)),((5 2,4 2,4 3,6 3,6 2,5 2)),((7 2,7 3,8 3,8 2,8 1,7 1,7 2)))"
};
-static std::string case_78_multi[2] =
+static std::string case_78_multi[2] =
{
"MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0),(2 2,4 2,4 3,2 3,2 2)))",
- "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0),(3 2,4 2,4 3,3 3,3 2),(1 1,2 1,2 2,1 2,1 1)))"
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0),(3 2,4 2,4 3,3 3,3 2),(1 1,2 1,2 2,1 2,1 1)))"
};
-static std::string case_80_multi[2] =
+static std::string case_80_multi[2] =
{
// Many ux-clusters -> needs correct cluster-sorting
// Fixed now
"MULTIPOLYGON(((3 1,3 2,4 2,3 1)),((1 5,0 4,0 5,1 6,1 5)),((3 3,4 3,3 2,2 2,2 3,3 3)),((4 5,5 6,5 5,4 5)),((4 2,4 3,5 3,4 2)),((2.5 5.5,3 5,2 5,2 7,3 6,2.5 5.5)),((1 6,0 6,0 7,1 7,2 6,1 6)))",
- "MULTIPOLYGON(((3 5,3 6,4 6,4 5,3 5)),((4 4,5 5,5 4,4 4)),((3 3,4 4,4 3,3 3)),((1 5,1 6,2 6,2 5,1 5)),((0 6,1 7,1 6,0 6)),((1 4,1 3,0 3,0 4,1 4)),((3 5,4 4,3 4,3 3,2 3,2 5,3 5)))"
+ "MULTIPOLYGON(((3 5,3 6,4 6,4 5,3 5)),((4 4,5 5,5 4,4 4)),((3 3,4 4,4 3,3 3)),((1 5,1 6,2 6,2 5,1 5)),((0 6,1 7,1 6,0 6)),((1 4,1 3,0 3,0 4,1 4)),((3 5,4 4,3 4,3 3,2 3,2 5,3 5)))"
};
-static std::string case_81_multi[2] =
+static std::string case_81_multi[2] =
{
"MULTIPOLYGON(((1 1,2 2,2 1,1 1)),((2 2,2 3,3 2,2 2)),((3 1,4 2,4 1,3 1)))",
- "MULTIPOLYGON(((2 1,2 2,3 3,3 2,4 2,3 1,2 1)))"
+ "MULTIPOLYGON(((2 1,2 2,3 3,3 2,4 2,3 1,2 1)))"
};
-static std::string case_82_multi[2] =
+static std::string case_82_multi[2] =
{
"MULTIPOLYGON(((4 0,5 1,5 0,4 0)),((2 1,3 2,3 1,2 1)),((3 0,4 1,4 0,3 0)),((1 0,1 1,2 1,2 0,1 0)))",
- "MULTIPOLYGON(((3 2,4 3,4 2,3 2)),((3 1,3 2,4 1,3 1)),((0 0,1 1,1 0,0 0)),((5 1,5 0,4 0,4 1,5 1)))"
+ "MULTIPOLYGON(((3 2,4 3,4 2,3 2)),((3 1,3 2,4 1,3 1)),((0 0,1 1,1 0,0 0)),((5 1,5 0,4 0,4 1,5 1)))"
};
-static std::string case_83_multi[2] =
+static std::string case_83_multi[2] =
{
// iu/iu
"MULTIPOLYGON(((1 0,1 1,2 1,1 0)),((0 1,0 4,1 4,1 1,0 1)),((2 1,2 2,3 2,3 1,2 1)),((2 3,3 4,3 3,2 3)))",
- "MULTIPOLYGON(((1 0,2 1,2 0,1 0)),((0 3,1 4,1 3,0 3)),((2 3,2 4,3 3,2 3)),((1 3,2 3,2 2,0 2,1 3)))"
+ "MULTIPOLYGON(((1 0,2 1,2 0,1 0)),((0 3,1 4,1 3,0 3)),((2 3,2 4,3 3,2 3)),((1 3,2 3,2 2,0 2,1 3)))"
};
-static std::string case_84_multi[2] =
+static std::string case_84_multi[2] =
{
// iu/ux
"MULTIPOLYGON(((2 2,3 3,3 2,2 2)),((2 1,2 2,3 1,2 1)),((2 3,3 4,3 3,2 3)),((1 3,2 4,2 2,1 2,1 3)))",
- "MULTIPOLYGON(((2 3,3 3,3 1,2 1,2 2,1 2,1 3,2 3)))"
+ "MULTIPOLYGON(((2 3,3 3,3 1,2 1,2 2,1 2,1 3,2 3)))"
};
-static std::string case_85_multi[2] =
+static std::string case_85_multi[2] =
{
// iu/ux (and ux/ux)
"MULTIPOLYGON(((0 1,0 2,1 2,0 1)),((1 1,1 2,2 1,1 1)),((0 3,1 3,0 2,0 3)))",
- "MULTIPOLYGON(((1 3,2 3,2 1,1 1,1 2,0 2,1 3)))"
+ "MULTIPOLYGON(((1 3,2 3,2 1,1 1,1 2,0 2,1 3)))"
};
-static std::string case_86_multi[2] =
+static std::string case_86_multi[2] =
{
// iu/ux
"MULTIPOLYGON(((4 2,4 3,5 3,4 2)),((5 2,6 3,6 2,5 2)),((5 1,4 1,4 2,5 2,6 1,5 1)))",
- "MULTIPOLYGON(((5 1,5 2,6 2,6 1,5 1)),((4 2,5 3,5 2,4 2)),((3 2,4 3,4 2,3 2)))"
+ "MULTIPOLYGON(((5 1,5 2,6 2,6 1,5 1)),((4 2,5 3,5 2,4 2)),((3 2,4 3,4 2,3 2)))"
};
-static std::string case_87_multi[2] =
+static std::string case_87_multi[2] =
{
// iu/ux where iu crosses, no touch
"MULTIPOLYGON(((5 0,5 1,6 0,5 0)),((6 2,7 3,7 2,6 2)),((5 1,5 3,6 3,6 1,5 1)))",
- "MULTIPOLYGON(((5 1,5 2,7 2,7 1,6 1,6 0,5 0,5 1)),((4 3,5 3,5 2,3 2,4 3)))"
+ "MULTIPOLYGON(((5 1,5 2,7 2,7 1,6 1,6 0,5 0,5 1)),((4 3,5 3,5 2,3 2,4 3)))"
};
-static std::string case_88_multi[2] =
+static std::string case_88_multi[2] =
{
"MULTIPOLYGON(((0 0,0 1,1 0,0 0)),((1 1,1 2,2 1,1 1)),((0 2,0 3,1 3,2 3,2 2,1 2,0 1,0 2)))",
- "MULTIPOLYGON(((0 0,0 1,1 0,0 0)),((0 1,1 2,1 1,0 1)),((0 2,0 3,1 3,1 2,0 2)))"
+ "MULTIPOLYGON(((0 0,0 1,1 0,0 0)),((0 1,1 2,1 1,0 1)),((0 2,0 3,1 3,1 2,0 2)))"
};
-static std::string case_89_multi[2] =
+static std::string case_89_multi[2] =
{
// Extract from rec.boxes_3
"MULTIPOLYGON(((8 1,7 1,8 2,8 3,9 4,9 2,8.5 1.5,9 1,8 0,8 1)),((9 1,9 2,10 2,10 1,9 0,9 1)))",
- "MULTIPOLYGON(((8 3,9 4,9 3,8 3)),((7 0,7 1,8 1,8 0,7 0)),((9 2,9 1,8 1,8 3,8.5 2.5,9 3,9 2)))"
+ "MULTIPOLYGON(((8 3,9 4,9 3,8 3)),((7 0,7 1,8 1,8 0,7 0)),((9 2,9 1,8 1,8 3,8.5 2.5,9 3,9 2)))"
};
-static std::string case_90_multi[2] =
+static std::string case_90_multi[2] =
{
// iu/iu for Union; see ppt
"MULTIPOLYGON(((1 8,0 8,0 10,1 10,1 9,2 8,2 7,1 7,1 8)),((2 9,2 10,4 10,4 9,3 9,3 8,2 8,2 9)))",
- "MULTIPOLYGON(((2 8,1 8,1 9,2 9,2 10,3 10,3 8,2 8)),((0 10,2 10,0 8,0 10)))"
+ "MULTIPOLYGON(((2 8,1 8,1 9,2 9,2 10,3 10,3 8,2 8)),((0 10,2 10,0 8,0 10)))"
};
-static std::string case_91_multi[2] =
+static std::string case_91_multi[2] =
{
// iu/xi for Intersection
"MULTIPOLYGON(((3 3,3 4,4 4,3 3)),((2 2,1 2,1 4,2 4,2 3,3 3,2 2)))",
- "MULTIPOLYGON(((2 2,2 3,3 2,2 2)),((2 3,1 3,1 4,1.5 3.5,2 4,2.5 3.5,3 4,3 3,2 3)))"
+ "MULTIPOLYGON(((2 2,2 3,3 2,2 2)),((2 3,1 3,1 4,1.5 3.5,2 4,2.5 3.5,3 4,3 3,2 3)))"
};
-static std::string case_92_multi[2] =
+static std::string case_92_multi[2] =
{
// iu/iu all aligned (for union)
"MULTIPOLYGON(((7 2,7 3,8 2,7 2)),((8 4,9 5,9 4,8 4)),((8 2,8 3,9 2,8 2)),((7 3,7 4,8 4,8 3,7 3)),((9 3,9 4,10 4,10 3,9 3)))",
- "MULTIPOLYGON(((9 2,8 2,8 3,9 3,10 2,9 2)),((7 5,8 5,9 6,9 4,8 4,7 3,6 3,6 4,6.5 3.5,7 4,6 4,7 5)))"
+ "MULTIPOLYGON(((9 2,8 2,8 3,9 3,10 2,9 2)),((7 5,8 5,9 6,9 4,8 4,7 3,6 3,6 4,6.5 3.5,7 4,6 4,7 5)))"
};
-static std::string case_93_multi[2] =
+static std::string case_93_multi[2] =
{
// iu/xi for intersection
"MULTIPOLYGON(((6 2,7 2,7 1,5 1,6 2)),((7 3,8 3,7.5 2.5,8 2,7 2,7 3)))",
- "MULTIPOLYGON(((7 1,6 0,6 2,7 3,7 2,8 3,8 2,7 1)))"
+ "MULTIPOLYGON(((7 1,6 0,6 2,7 3,7 2,8 3,8 2,7 1)))"
};
-static std::string case_94_multi[2] =
+static std::string case_94_multi[2] =
{
// iu/iu for union
"MULTIPOLYGON(((9 2,9 3,10 3,10 2,9 2)),((7 3,8 4,9 3,8 3,9 2,7 2,7 3)),((8 6,9 5,9 4,8 4,8 6)))",
- "MULTIPOLYGON(((6 2,6 3,7 3,8 2,6 2)),((9 3,10 3,9 2,9 1,8 0,7 0,8 1,8 3,8.5 2.5,9 3)),((7 4,7 5,8 5,9 6,9 4,8 4,8 3,7 3,7 4)))"
+ "MULTIPOLYGON(((6 2,6 3,7 3,8 2,6 2)),((9 3,10 3,9 2,9 1,8 0,7 0,8 1,8 3,8.5 2.5,9 3)),((7 4,7 5,8 5,9 6,9 4,8 4,8 3,7 3,7 4)))"
};
-static std::string case_95_multi[2] =
+static std::string case_95_multi[2] =
{
// iu/iu for union
"MULTIPOLYGON(((0 8,1 8,1 7,0 7,0 8)),((2 8,2 9,2.5 8.5,3 9,3 7,2 7,2 8)),((1 9,1 10,2 9,1 8,1 9)))",
- "MULTIPOLYGON(((1 7,0 7,0 8,1 8,2 7,1 7)),((2 9,1 9,1 10,2 10,3 9,4 9,4 8,2 8,2 9)))"
+ "MULTIPOLYGON(((1 7,0 7,0 8,1 8,2 7,1 7)),((2 9,1 9,1 10,2 10,3 9,4 9,4 8,2 8,2 9)))"
};
-
-static std::string case_96_multi[2] =
+
+static std::string case_96_multi[2] =
{
// iu/iu all collinear, for intersection/union
"MULTIPOLYGON(((8 2,9 3,9 2,8 2)),((8 1,9 2,9 1,10 1,10 0,8 0,8 1)))",
- "MULTIPOLYGON(((9 0,9 1,10 0,9 0)),((8 1,8 2,9 2,9 1,8 1)))"
+ "MULTIPOLYGON(((9 0,9 1,10 0,9 0)),((8 1,8 2,9 2,9 1,8 1)))"
};
-static std::string case_97_multi[2] =
+static std::string case_97_multi[2] =
{
// ux/ux for union
"MULTIPOLYGON(((4 4,4 5,4.5 4.5,5 5,6 5,5 4,5 3,4 3,4 4)))",
- "MULTIPOLYGON(((5 3,5 4,6 3,5 3)),((6 5,7 5,6 4,5 4,6 5)))"
+ "MULTIPOLYGON(((5 3,5 4,6 3,5 3)),((6 5,7 5,6 4,5 4,6 5)))"
};
-
-static std::string case_98_multi[2] =
+
+static std::string case_98_multi[2] =
{
// ii/iu for intersection, solved by discarding iu (ordering not possible)
"MULTIPOLYGON(((2 0,3 1,3 0,2 0)),((2 2,2 3,1 3,1 4,2 4,3 3,3 4,5 2,4 2,4 1,3 1,3 2,2.5 1.5,3 1,2 1,2 2)))",
- "MULTIPOLYGON(((4 2,4 3,5 2,4 2)),((1 0,0 0,0 2,4 2,4 1,2 1,2 0,1 0)),((3 3,4 4,4 3,3 2,3 3)))"
+ "MULTIPOLYGON(((4 2,4 3,5 2,4 2)),((1 0,0 0,0 2,4 2,4 1,2 1,2 0,1 0)),((3 3,4 4,4 3,3 2,3 3)))"
};
-static std::string case_99_multi[2] =
+static std::string case_99_multi[2] =
{
// iu/iu for intersection
"MULTIPOLYGON(((1 0,2 1,2 0,1 0)),((1 2,2 2,1.5 1.5,2 1,1 1,1 0,0 0,0 1,1 2)))",
- "MULTIPOLYGON(((1 1,2 0,0 0,1 1)),((1 1,0 1,0 2,1 2,2 3,2 2,1 1)))"
+ "MULTIPOLYGON(((1 1,2 0,0 0,1 1)),((1 1,0 1,0 2,1 2,2 3,2 2,1 1)))"
};
-static std::string case_100_multi[2] =
+static std::string case_100_multi[2] =
{
// for intersection
"MULTIPOLYGON(((0 0,0 1,1 0,0 0)),((2 2,2 1,0 1,0 2,1 2,2 3,2 2)))",
- "MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((1 2,0 1,0 3,1 4,1 2)))"
+ "MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((1 2,0 1,0 3,1 4,1 2)))"
};
-static std::string case_101_multi[2] =
+static std::string case_101_multi[2] =
{
// interior ring / union
"MULTIPOLYGON(((7 2,7 3,8 2,7 2)),((9 3,9 4,10 3,9 3)),((10 1,10 0,8 0,8 1,9 2,10 2,10 1)),((9 3,9 2,8 2,8 3,7 3,7 4,8 4,9 3)),((8 4,8 7,9 6,9 4,8 4)))",
- "MULTIPOLYGON(((6 1,5 1,5 2,6 3,6 4,7 5,6 5,7 6,8 6,8 5,9 5,8 4,9 4,9 5,10 5,10 1,8 1,8 3,7 3,7 2,6 2,7 1,8 1,7 0,5 0,5 1,5.5 0.5,6 1),(8.5 2.5,9 2,9 3,8.5 2.5)))"
+ "MULTIPOLYGON(((6 1,5 1,5 2,6 3,6 4,7 5,6 5,7 6,8 6,8 5,9 5,8 4,9 4,9 5,10 5,10 1,8 1,8 3,7 3,7 2,6 2,7 1,8 1,7 0,5 0,5 1,5.5 0.5,6 1),(8.5 2.5,9 2,9 3,8.5 2.5)))"
};
-static std::string case_102_multi[2] =
+static std::string case_102_multi[2] =
{
// interior ring 'fit' / union
"MULTIPOLYGON(((0 2,0 7,5 7,5 2,0 2),(4 3,4 6,1 6,2 5,1 5,1 4,3 4,4 3)),((3 4,3 5,4 5,3 4)),((2 5,3 6,3 5,2 4,2 5)))",
- "MULTIPOLYGON(((0 2,0 7,5 7,5 2,0 2),(2 4,3 5,2 5,2 4),(4 4,3 4,3 3,4 4),(4 5,4 6,3 6,4 5)))"
+ "MULTIPOLYGON(((0 2,0 7,5 7,5 2,0 2),(2 4,3 5,2 5,2 4),(4 4,3 4,3 3,4 4),(4 5,4 6,3 6,4 5)))"
};
-static std::string case_103_multi[2] =
+static std::string case_103_multi[2] =
{
- // interior ring 'fit' (ix) / union / assemble
+ // interior ring 'fit' (ix) / union / assemble
"MULTIPOLYGON(((0 0,0 5,5 5,5 0,2 0,2 1,3 1,3 2,2 2,2 3,1 2,2 2,2 1,1 0,0 0)))",
- "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0),(2 1,2 2,1 1,2 1)))"
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0),(2 1,2 2,1 1,2 1)))"
};
-static std::string case_104_multi[2] =
+static std::string case_104_multi[2] =
{
- // interior ring 'fit' (ii) / union / assemble
+ // interior ring 'fit' (ii) / union / assemble
"MULTIPOLYGON(((1 0,1 1,0 1,0 5,5 5,5 0,2 0,2 1,1 0),(2 2,3 3,2 3,2 2)))",
- "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0),(1 1,3 1,3 2,1 2,1 1)))"
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0),(1 1,3 1,3 2,1 2,1 1)))"
};
-static std::string case_105_multi[2] =
+static std::string case_105_multi[2] =
{
- // interior ring 'fit' () / union / assemble
+ // interior ring 'fit' () / union / assemble
"MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0),(2 2,3 2,3 3,1 3,2 2)))",
- "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0),(1 1,2 1,2 2,1 1),(2 1,3 1,3 2,2 1),(1 3,3 3,3 4,2 3,2 4,1 4,1 3)))"
+ "MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0),(1 1,2 1,2 2,1 1),(2 1,3 1,3 2,2 1),(1 3,3 3,3 4,2 3,2 4,1 4,1 3)))"
};
-static std::string case_106_multi[2] =
+static std::string case_106_multi[2] =
{
- // interior ring 'fit' () / union / assemble
+ // interior ring 'fit' () / union / assemble
"MULTIPOLYGON(((0 0,0 3,1 2,1 3,2 3,2 1,3 2,2 2,3 3,2 3,3 4,1 4,1 3,0 3,0 5,5 5,5 0,0 0)))",
- "MULTIPOLYGON(((0 0,0 5,1 5,1 4,2 4,2 5,3 5,3 3,4 4,5 4,5 0,2 0,3 1,2 1,2 3,1 3,2 2,1.5 1.5,2 1,1 1,0 0)),((1 0,2 1,2 0,1 0)))"
+ "MULTIPOLYGON(((0 0,0 5,1 5,1 4,2 4,2 5,3 5,3 3,4 4,5 4,5 0,2 0,3 1,2 1,2 3,1 3,2 2,1.5 1.5,2 1,1 1,0 0)),((1 0,2 1,2 0,1 0)))"
};
-static std::string case_107_multi[2] =
+static std::string case_107_multi[2] =
{
// For CCW polygon reports a iu/iu problem.
"MULTIPOLYGON(((6 8,7 9,7 7,8 7,7 6,6 6,6 8)),((6.5 9.5,7 10,7 9,6 9,6 10,6.5 9.5)))",
- "MULTIPOLYGON(((5 7,6 8,6 10,7 9,8 10,8 8,7 8,6 7,6 6,5 7)))"
+ "MULTIPOLYGON(((5 7,6 8,6 10,7 9,8 10,8 8,7 8,6 7,6 6,5 7)))"
};
-static std::string case_recursive_boxes_1[2] =
+static std::string case_recursive_boxes_1[2] =
{
// == 70
// Used in blog. KEEP
"MULTIPOLYGON(((1 0,0 0,0 1,1 1,1 2,0 2,0 4,2 4,2 5,3 5,3 6,1 6,1 5,0 5,0 10,9 10,9 9,7 9,7 8,6 8,6 7,8 7,8 6,9 6,9 4,8 4,8 5,7 5,7 6,6 6,6 5,5 5,5 4,4 4,4 3,5 3,5 2,7 2,7 3,6 3,6 4,8 4,8 3,10 3,10 0,6 0,6 1,5 1,5 0,1 0),(4 7,4 9,3 9,3 7,4 7),(8 1,9 1,9 2,8 2,8 1)),((10 7,10 6,9 6,9 7,8 7,8 8,9 8,9 9,10 9,10 7)))",
- "MULTIPOLYGON(((1 0,0 0,0 7,2 7,2 6,5 6,5 5,4 5,4 4,5 4,5 3,7 3,7 2,6 2,6 0,1 0),(2 1,2 2,3 2,3 3,1 3,1 1,2 1)),((7 0,7 2,10 2,10 0,9 0,9 1,8 1,8 0,7 0)),((6 4,6 6,5 6,5 7,6 7,6 8,5 8,5 7,3 7,3 9,2 9,2 8,1 8,1 10,4 10,4 9,6 9,6 10,10 10,10 9,9 9,9 8,10 8,10 6,9 6,9 5,10 5,10 3,7 3,7 4,6 4),(7 7,7 6,8 6,8 7,7 7)))"
+ "MULTIPOLYGON(((1 0,0 0,0 7,2 7,2 6,5 6,5 5,4 5,4 4,5 4,5 3,7 3,7 2,6 2,6 0,1 0),(2 1,2 2,3 2,3 3,1 3,1 1,2 1)),((7 0,7 2,10 2,10 0,9 0,9 1,8 1,8 0,7 0)),((6 4,6 6,5 6,5 7,6 7,6 8,5 8,5 7,3 7,3 9,2 9,2 8,1 8,1 10,4 10,4 9,6 9,6 10,10 10,10 9,9 9,9 8,10 8,10 6,9 6,9 5,10 5,10 3,7 3,7 4,6 4),(7 7,7 6,8 6,8 7,7 7)))"
};
-static std::string case_recursive_boxes_2[2] =
+static std::string case_recursive_boxes_2[2] =
{
- // Traversal problem; Many ii-cases -> formerly caused "Endless loop"
+ // Traversal problem; Many ii-cases -> formerly caused "Endless loop"
// So it appears that there might be more decisions than intersection points
"MULTIPOLYGON(((1 0,0 0,0 4,1 4,1 5,0 5,0 10,3 10,3 9,4 9,4 10,6 10,6 9,5 9,5 8,6 8,6 9,7 9,7 10,10 10,10 0,1 0),(7 6,8 6,8 7,9 7,9 8,8 8,8 7,7 7,7 6),(9 1,9 2,8 2,8 1,9 1)))",
- "MULTIPOLYGON(((0 0,0 10,10 10,10 0,8 0,8 1,7 1,7 0,0 0),(7 3,6 3,6 2,7 2,7 3),(6 7,7 7,7 8,6 8,6 7)))"
+ "MULTIPOLYGON(((0 0,0 10,10 10,10 0,8 0,8 1,7 1,7 0,0 0),(7 3,6 3,6 2,7 2,7 3),(6 7,7 7,7 8,6 8,6 7)))"
};
-static std::string case_recursive_boxes_3[2] =
+static std::string case_recursive_boxes_3[2] =
{
- // Previously a iu/ux problem causing union to fail.
+ // Previously a iu/ux problem causing union to fail.
// For CCW polygon it also reports a iu/iu problem.
// KEEP
"MULTIPOLYGON(((8 3,9 4,9 3,8 3)),((5 9,5 10,6 10,5 9)),((2 0,2 1,3 0,2 0)),((2 5,2 6,3 6,3 5,2 5)),((2 2,1 2,1 3,2 3,3 2,3 1,2 1,2 2)),((6 8,7 9,7 7,8 7,7 6,6 6,6 8)),((4 6,5 7,5 6,4 6)),((4 8,4 9,5 9,5 8,4 8)),((0 3,1 4,1 3,0 3)),((8 7,9 8,9 7,8 7)),((9 6,9 7,10 7,9 6)),((7 0,8 1,8 0,7 0)),((0 4,0 5,1 5,1 4,0 4)),((4 2,5 3,5 2,4 1,4 2)),((4 10,4 9,2 9,3 10,4 10)),((5 2,6 3,7 3,7 2,6 2,6 1,5 0,5 2)),((5 3,4 3,4 4,2 4,4 6,4 5,4.5 4.5,6 6,6 5,7 4,5 4,5 3)),((10 2,9 1,9 3,10 2)),((8 4,7 4,8 5,7 5,7 6,9 6,9 5,10 5,10 4,8 4)),((1 7,0 7,0 8,1 8,1 7)),((1 10,2 10,1 9,0 9,0 10,1 10)),((6.5 9.5,7 10,7 9,6 9,6 10,6.5 9.5)),((8 8,8 9,10 9,9 8,8 8)))",
- "MULTIPOLYGON(((0 7,0 8,1 8,1 7,0 7)),((5 3,4 3,4 4,6 4,6 3,7 3,6 2,5 2,5 3)),((8 2,8 3,9 2,8 2)),((1 1,2 2,2 1,1 1)),((2 1,3 1,2 0,1 0,2 1)),((2 3,3 4,3 3,2 3)),((1 9,2 8,1 8,1 9)),((2 10,2 9,1 9,1 10,2 10)),((9 7,9 8,10 8,10 7,9 7)),((6 0,6 1,7 1,7 0,6 0)),((8 0,9 1,9 0,8 0)),((1 6,1 5,0 5,1 6)),((0 2,1 1,0 1,0 2)),((1 3,2 3,2 2,1 2,1 3)),((5 1,5 0,4 0,4 1,3 1,4 2,5 2,6 1,5 1)),((1 3,0 3,0 4,1 4,1 3)),((3 6,4 5,2 5,3 6)),((9 2,10 2,10 1,9 1,9 2)),((7 5,6 4,6 5,7 6,8 6,8 5,7 5)),((7 4,8 5,8.5 4.5,9 5,9 4,8 4,8.5 3.5,9 4,10 3,7 3,7 4)),((1 6,1 7,3 7,3 8,4 7,5 7,6 8,6 10,7 9,8 10,9 10,9 9,8 9,8 8,7 8,6 7,6 6,1 6)))"
+ "MULTIPOLYGON(((0 7,0 8,1 8,1 7,0 7)),((5 3,4 3,4 4,6 4,6 3,7 3,6 2,5 2,5 3)),((8 2,8 3,9 2,8 2)),((1 1,2 2,2 1,1 1)),((2 1,3 1,2 0,1 0,2 1)),((2 3,3 4,3 3,2 3)),((1 9,2 8,1 8,1 9)),((2 10,2 9,1 9,1 10,2 10)),((9 7,9 8,10 8,10 7,9 7)),((6 0,6 1,7 1,7 0,6 0)),((8 0,9 1,9 0,8 0)),((1 6,1 5,0 5,1 6)),((0 2,1 1,0 1,0 2)),((1 3,2 3,2 2,1 2,1 3)),((5 1,5 0,4 0,4 1,3 1,4 2,5 2,6 1,5 1)),((1 3,0 3,0 4,1 4,1 3)),((3 6,4 5,2 5,3 6)),((9 2,10 2,10 1,9 1,9 2)),((7 5,6 4,6 5,7 6,8 6,8 5,7 5)),((7 4,8 5,8.5 4.5,9 5,9 4,8 4,8.5 3.5,9 4,10 3,7 3,7 4)),((1 6,1 7,3 7,3 8,4 7,5 7,6 8,6 10,7 9,8 10,9 10,9 9,8 9,8 8,7 8,6 7,6 6,1 6)))"
};
-static std::string case_recursive_boxes_4[2] =
+static std::string case_recursive_boxes_4[2] =
{
// Occurred after refactoring assemble
"MULTIPOLYGON(((9 3,10 4,10 3,9 3)),((9 9,10 10,10 9,9 9)),((0 1,0 3,1 4,0 4,0 5,1 6,0 6,0 8,1 9,1 8,2 9,2 7,1.5 6.5,2.5 5.5,3 6,3 5,4 6,2 6,2 7,3 8,2 8,3 9,0 9,0 10,6 10,5.5 9.5,6 9,6 10,7 10,7.5 9.5,8 10,8 9,7 9,7 8,6 8,6.5 7.5,7 8,8 8,8 9,9 9,9.5 8.5,10 9,10 8,9.5 7.5,10 7,10 5,8 5,8 4,7 3,7 2,8 3,8 4,9 5,9 3,10 2,10 1,8 1,8.5 0.5,9 1,10 0,4 0,4 1,3 1,3 0,1 0,1 1,0 0,0 1),(4 2,4.5 1.5,5 2,5 4,4.5 3.5,5 3,4 3,4 2),(3 3,4 4,2 4,2.5 3.5,3 4,3 3),(6 4,6.5 3.5,7 4,6 4),(5 7,5 9,4 9,4 8,5 7)))",
- "MULTIPOLYGON(((1 0,2 1,2 0,1 0)),((7 9,7 10,8 10,7 9)),((1 0,0 0,0 3,1 3,2 2,2 3,1 3,1 4,2 4,2 5,1 4,0 4,0 8,1 7,1 6,2 7,1 7,1 9,0 9,0 10,7 10,6 9,6.5 8.5,7 9,8 9,9 8,8 8,9 7,9 6,10 7,10 5,9 5,9 4,10 5,10 0,7 0,8 1,7 1,6 0,3 0,3 1,1 1,1 0),(5 1,5.5 0.5,6 1,6 2,6.5 1.5,7 2,8 2,8 4,7 3,6 3,6 2,5 2,6 1,5 1),(4 4,5 4,5 5,4 4),(4 6,4 7,3 7,2 6,3 6,3 7,4 6),(6 5,6.5 4.5,7 5,6 5,7 6,7 7,6 7,6 5),(3.5 7.5,4 8,4 9,3 8,3.5 7.5)),((9 8,9 9,8 9,9 10,10 10,10 8,9 8)))"
+ "MULTIPOLYGON(((1 0,2 1,2 0,1 0)),((7 9,7 10,8 10,7 9)),((1 0,0 0,0 3,1 3,2 2,2 3,1 3,1 4,2 4,2 5,1 4,0 4,0 8,1 7,1 6,2 7,1 7,1 9,0 9,0 10,7 10,6 9,6.5 8.5,7 9,8 9,9 8,8 8,9 7,9 6,10 7,10 5,9 5,9 4,10 5,10 0,7 0,8 1,7 1,6 0,3 0,3 1,1 1,1 0),(5 1,5.5 0.5,6 1,6 2,6.5 1.5,7 2,8 2,8 4,7 3,6 3,6 2,5 2,6 1,5 1),(4 4,5 4,5 5,4 4),(4 6,4 7,3 7,2 6,3 6,3 7,4 6),(6 5,6.5 4.5,7 5,6 5,7 6,7 7,6 7,6 5),(3.5 7.5,4 8,4 9,3 8,3.5 7.5)),((9 8,9 9,8 9,9 10,10 10,10 8,9 8)))"
};
-static std::string pie_21_7_21_0_3[2] =
+static std::string pie_21_7_21_0_3[2] =
{
"MULTIPOLYGON(((2500 2500,2500 3875,2855 3828,3187 3690,3472 3472,3690 3187,3828 2855,3875 2500,3828 2144,3690 1812,3472 1527,3187 1309,2855 1171,2499 1125,2144 1171,1812 1309,1527 1527,1309 1812,1171 2144,1125 2499,1171 2855,1309 3187,2500 2500)))",
- "MULTIPOLYGON(((2500 2500,1704 3295,1937 3474,2208 3586,2499 3625,2791 3586,3062 3474,3295 3295,2500 2500)),((2500 2500,3586 2791,3625 2500,3586 2208,2500 2500)))"
+ "MULTIPOLYGON(((2500 2500,1704 3295,1937 3474,2208 3586,2499 3625,2791 3586,3062 3474,3295 3295,2500 2500)),((2500 2500,3586 2791,3625 2500,3586 2208,2500 2500)))"
};
-static std::string pie_23_19_5_0_2[2] =
+static std::string pie_23_19_5_0_2[2] =
{
"MULTIPOLYGON(((2500 2500,2500 3875,2855 3828,3187 3690,3472 3472,3690 3187,3828 2855,3875 2500,3828 2144,3690 1812,3472 1527,3187 1309,2855 1171,2499 1125,2144 1171,1812 1309,1527 1527,1309 1812,1171 2144,1125 2499,1171 2855,1309 3187,1527 3472,1812 3690,2500 2500)))",
- "MULTIPOLYGON(((2500 2500,3586 2791,3625 2500,3586 2208,3474 1937,3295 1704,3062 1525,2791 1413,2499 1375,2208 1413,1937 1525,1704 1704,1525 1937,1413 2208,1375 2500,1413 2791,1525 3062,1704 3295,1937 3474,2208 3586,2500 2500)),((2500 2500,2791 3586,3062 3474,2500 2500)))"
+ "MULTIPOLYGON(((2500 2500,3586 2791,3625 2500,3586 2208,3474 1937,3295 1704,3062 1525,2791 1413,2499 1375,2208 1413,1937 1525,1704 1704,1525 1937,1413 2208,1375 2500,1413 2791,1525 3062,1704 3295,1937 3474,2208 3586,2500 2500)),((2500 2500,2791 3586,3062 3474,2500 2500)))"
};
-static std::string pie_7_14_5_0_7[2] =
+static std::string pie_7_14_5_0_7[2] =
{
"MULTIPOLYGON(((2500 2500,2500 3875,2855 3828,3187 3690,3472 3472,3690 3187,3828 2855,3875 2500,2500 2500)))",
- "MULTIPOLYGON(((2500 2500,3586 2791,3625 2500,3586 2208,3474 1937,3295 1704,3062 1525,2791 1413,2499 1375,2208 1413,1937 1525,1704 1704,1525 1937,1413 2208,1375 2500,2500 2500)),((2500 2500,1525 3062,1704 3295,1937 3474,2208 3586,2499 3625,2791 3586,3062 3474,2500 2500)))"
+ "MULTIPOLYGON(((2500 2500,3586 2791,3625 2500,3586 2208,3474 1937,3295 1704,3062 1525,2791 1413,2499 1375,2208 1413,1937 1525,1704 1704,1525 1937,1413 2208,1375 2500,2500 2500)),((2500 2500,1525 3062,1704 3295,1937 3474,2208 3586,2499 3625,2791 3586,3062 3474,2500 2500)))"
};
-static std::string pie_16_16_9_0_2[2] =
+static std::string pie_16_16_9_0_2[2] =
{
"MULTIPOLYGON(((2500 2500,2500 3875,2855 3828,3187 3690,3472 3472,3690 3187,3828 2855,3875 2500,3828 2144,3690 1812,3472 1527,3187 1309,2855 1171,2499 1125,2144 1171,1812 1309,1527 1527,2500 2500)))",
- "MULTIPOLYGON(((2500 2500,3295 1704,3062 1525,2791 1413,2499 1375,2208 1413,1937 1525,1704 1704,1525 1937,1413 2208,1375 2500,1413 2791,1525 3062,1704 3295,1937 3474,2208 3586,2499 3625,2500 2500)),((2500 2500,3062 3474,3295 3295,2500 2500)))"
+ "MULTIPOLYGON(((2500 2500,3295 1704,3062 1525,2791 1413,2499 1375,2208 1413,1937 1525,1704 1704,1525 1937,1413 2208,1375 2500,1413 2791,1525 3062,1704 3295,1937 3474,2208 3586,2499 3625,2500 2500)),((2500 2500,3062 3474,3295 3295,2500 2500)))"
};
-static std::string pie_7_2_1_0_15[2] =
+static std::string pie_7_2_1_0_15[2] =
{
"MULTIPOLYGON(((2500 2500,2500 3875,2855 3828,3187 3690,3472 3472,3690 3187,3828 2855,3875 2500,2500 2500)))",
- "MULTIPOLYGON(((2500 2500,2791 3586,3062 3474,2500 2500)),((2500 2500,3474 3062,3586 2791,3625 2500,3586 2208,3474 1937,3295 1704,3062 1525,2791 1413,2499 1375,2208 1413,1937 1525,1704 1704,1525 1937,1413 2208,1375 2500,2500 2500)))"
+ "MULTIPOLYGON(((2500 2500,2791 3586,3062 3474,2500 2500)),((2500 2500,3474 3062,3586 2791,3625 2500,3586 2208,3474 1937,3295 1704,3062 1525,2791 1413,2499 1375,2208 1413,1937 1525,1704 1704,1525 1937,1413 2208,1375 2500,2500 2500)))"
};
// Case, not literally on this list but derived, to mix polygon/multipolygon in call to difference
@@ -419,13 +419,40 @@ static std::string ggl_list_20111025_vd[4] =
"MULTIPOLYGON(((10 0,10 5,15 0,10 0)))"
};
-// Same, mail with other case with text "Say the MP is the 2 squares below and P is the blue-ish rectangle."
+// Same, mail with other case with text "Say the MP is the 2 squares below and P is the blue-ish rectangle."
static std::string ggl_list_20111025_vd_2[2] =
{
"POLYGON((5 0,5 4,8 4,8 0,5 0))",
"MULTIPOLYGON(((0 0,0 2,2 2,2 0,0 0)),((4 0,4 2,6 2,6 0,4 0)))"
};
-
+
+// Mail of h2 indicating that reversed order (in second polygon) has ix/ix problems
+static std::string ggl_list_20120915_h2[3] =
+ {
+ "MULTIPOLYGON(((-2 5, -1 5, 0 5, 2 5, 2 -2, 1 -2, 1 -1, 0 -1,0 0, -1 0, -2 0, -2 5)))",
+ "MULTIPOLYGON(((0 0, 1 0, 1 -1, 0 -1, 0 0)), ((-1 5, 0 5, 0 0, -1 0, -1 5)))",
+ "MULTIPOLYGON(((-1 5, 0 5, 0 0, -1 0, -1 5)), ((0 0, 1 0, 1 -1, 0 -1, 0 0)))"
+ };
+
+// Mail of volker, about another problem, but this specific example is causing two-point inner rings polygons which should be discarded
+// (condition of num_points in detail/overlay/convert_ring.hpp)
+static std::string ggl_list_20120221_volker[2] =
+ {
+ "MULTIPOLYGON(((1032 2130,1032 1764,2052 2712,1032 2130)),((3234 2580,2558 2690,3234 2532,3234 2580)),((2558 2690,2136 2790,2052 2712,2136 2760,2558 2690)))",
+ "MULTIPOLYGON(((3232 2532.469945355191,2136 2790,1032 1764,1032 1458,1032 1212,2136 2328,3232 2220.196721311475,3232 1056,1031 1056,1031 2856,3232 2856,3232 2532.469945355191),(3232 2412.426229508197,2136 2646,3232 2412.426229508197)))"
+ };
+
+static std::string ggl_list_20140212_sybren[2] =
+ {
+ "MULTIPOLYGON(((0.494062 0.659354,0.471383 0.64654,0.446639 0.616561,0.47291 0.61171,0.495396 0.625263,0.494964 0.679709,0.494062 0.659354)))",
+ "MULTIPOLYGON(((0.4951091661995328 0.6614133543986973,0.495396 0.625263,0.50092 0.6492750000000001,0.494964 0.679709,0.477258 0.698703,0.4951091661995328 0.6614133543986973)),((0.452167 0.706562,0.433379 0.696888,0.442673 0.65792,0.464729 0.671387,0.452167 0.706562)))"
+ };
+
+static std::string ticket_9081[2] =
+ {
+ "MULTIPOLYGON(((0.5489109414010371 0.5774835110050927,0.4099611282054447 0.4644351568071598,0.4294011278595494 0.4843224236729239,0.4205359995313906 0.5115225580860201,0.4441572412013468 0.5184999851878852,0.5489109414010371 0.5774835110050927)),((0.562085028126843 0.5882018328808966,0.5644349663154944 0.591180348361206,0.568218114394707 0.5970364466647042,0.5838690879677763 0.6212632646137447,0.5873787029417971 0.6412877041753083,0.468699602592386 0.5866280231830688,0.4171010902425981 0.5220616039851281,0.4059124592966251 0.5563907478354578,0.3909547828925878 0.6022841397455458,0.520859401226844 0.9508041627246925,0.8595233008819849 0.8301950132755517,0.562085028126843 0.5882018328808966)))",
+ "MULTIPOLYGON(((0.2099392122251989 0.492066865490789,0.1124301889095737 0.5124668111209448,0.3306914939102383 0.6126684490171914,0.2099392122251989 0.492066865490789)),((0.5885369465145437 0.6478961722242873,0.5342320718598281 0.6686303269145104,0.5619623880692838 0.7033299168703926,0.5945761233023867 0.6823532655194001,0.5885369465145437 0.6478961722242873)),((0.5570738195183501 0.6001870087680015,0.5429714753344335 0.6231021858940831,0.5880357506342242 0.6450365518134291,0.5838690879677763 0.6212632646137447,0.568218114394707 0.5970364466647042,0.5570738195183501 0.6001870087680015)),((0.5498478321815098 0.5029279381860542,0.608691671498764 0.5163121433149205,0.5636607291345047 0.5894838094559455,0.8595233008819849 0.8301950132755517,0.8285440738598029 0.8412277162756114,0.9591357158116398 0.9011810663167211,0.8572649311807611 0.3566393017365032,0.5965816668471951 0.4111770689940296,0.5498478321815098 0.5029279381860542)),((0.3984249865018206 0.4526335964808558,0.3621206996557855 0.4602288471829723,0.4183516736935784 0.4730187483833363,0.4099611282054451 0.4644351568071601,0.3984249865018206 0.4526335964808558)))"
+ };
#endif // BOOST_GEOMETRY_TEST_MULTI_OVERLAY_CASES_HPP
diff --git a/libs/geometry/test/multi/algorithms/overlay/multi_overlay_common.hpp b/libs/geometry/test/multi/algorithms/overlay/multi_overlay_common.hpp
index 5f24f3e824..6a49c300d3 100644
--- a/libs/geometry/test/multi/algorithms/overlay/multi_overlay_common.hpp
+++ b/libs/geometry/test/multi/algorithms/overlay/multi_overlay_common.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
diff --git a/libs/geometry/test/multi/algorithms/overlay/multi_traverse.cpp b/libs/geometry/test/multi/algorithms/overlay/multi_traverse.cpp
index f731f73cbc..7cab06c96a 100644
--- a/libs/geometry/test/multi/algorithms/overlay/multi_traverse.cpp
+++ b/libs/geometry/test/multi/algorithms/overlay/multi_traverse.cpp
@@ -23,6 +23,7 @@
#include <boost/geometry/multi/core/ring_type.hpp>
#include <boost/geometry/multi/algorithms/correct.hpp>
+#include <boost/geometry/multi/algorithms/envelope.hpp>
#include <boost/geometry/multi/algorithms/num_points.hpp>
#include <boost/geometry/multi/algorithms/detail/overlay/copy_segments.hpp>
#include <boost/geometry/multi/algorithms/detail/overlay/copy_segment_point.hpp>
@@ -159,7 +160,7 @@ void test_geometries()
);
test_traverse_intersection::apply
(
- "case_96_multi", 2, 1.0,
+ "case_96_multi", 1, 0.5,
case_96_multi[0], case_96_multi[1]
);
test_traverse_intersection::apply
@@ -386,7 +387,7 @@ void test_geometries()
test_traverse_union::apply
(
- "case_recursive_boxes_3", 8, 49.5,
+ "case_recursive_boxes_3", 7, 49.5,
case_recursive_boxes_3[0], case_recursive_boxes_3[1]
);
diff --git a/libs/geometry/test/multi/algorithms/overlay/multi_traverse.vcproj b/libs/geometry/test/multi/algorithms/overlay/multi_traverse.vcproj
deleted file mode 100644
index c4cb7b8e07..0000000000
--- a/libs/geometry/test/multi/algorithms/overlay/multi_traverse.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="multi_traverse"
- ProjectGUID="{DB00BBA3-4959-4F9E-A235-E487FF766207}"
- RootNamespace="multi_traverse"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_traverse"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;../../..;../../../../../..;../../../../../../boost/geometry/extensions/contrib/ttmath;../../../algorithms/overlay"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\multi_traverse"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;../../..;../../../../../..;../../../../../../boost/geometry/extensions/contrib/ttmath;../../../algorithms/overlay"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\multi_traverse.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/io/dsv/Jamfile.v2 b/libs/geometry/test/multi/io/dsv/Jamfile.v2
index 1434d754ee..1a855ae277 100644
--- a/libs/geometry/test/multi/io/dsv/Jamfile.v2
+++ b/libs/geometry/test/multi/io/dsv/Jamfile.v2
@@ -10,6 +10,6 @@
test-suite boost-geometry-multi-io-dsv
:
- [ run dsv.cpp ]
+ [ run multi_dsv.cpp ]
;
diff --git a/libs/geometry/test/multi/io/dsv/dsv.sln b/libs/geometry/test/multi/io/dsv/dsv.sln
deleted file mode 100644
index ecea597197..0000000000
--- a/libs/geometry/test/multi/io/dsv/dsv.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{6CD4A68C-3EA1-11E1-B9E4-BF144924019B}") = "dsv", "dsv.vcproj", "{7463ED40-3EA1-11E1-9FC7-D0144924019B}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {7463ED40-3EA1-11E1-9FC7-D0144924019B}.Debug|Win32.ActiveCfg = Debug|Win32
- {7463ED40-3EA1-11E1-9FC7-D0144924019B}.Debug|Win32.Build.0 = Debug|Win32
- {7463ED40-3EA1-11E1-9FC7-D0144924019B}.Release|Win32.ActiveCfg = Release|Win32
- {7463ED40-3EA1-11E1-9FC7-D0144924019B}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/multi/io/dsv/dsv.vcproj b/libs/geometry/test/multi/io/dsv/dsv.vcproj
deleted file mode 100644
index 494551daa9..0000000000
--- a/libs/geometry/test/multi/io/dsv/dsv.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="dsv"
- ProjectGUID="{7463ED40-3EA1-11E1-9FC7-D0144924019B}"
- RootNamespace="dsv"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\dsv"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\dsv"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\dsv.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/io/dsv/dsv.cpp b/libs/geometry/test/multi/io/dsv/multi_dsv.cpp
index 7f565906f6..0af8f10e9b 100644
--- a/libs/geometry/test/multi/io/dsv/dsv.cpp
+++ b/libs/geometry/test/multi/io/dsv/multi_dsv.cpp
@@ -48,7 +48,7 @@ void test_all()
test_dsv<mpoint>
(
- "multipoint((1 2),(3 4))",
+ "multipoint((1 2),(3 4))",
"((1, 2), (3, 4))"
);
test_dsv<mline>
@@ -66,7 +66,7 @@ void test_all()
// http://geojson.org/geojson-spec.html#id5
test_dsv<mpoint>
(
- "multipoint((1 2),(3 4))",
+ "multipoint((1 2),(3 4))",
"[ [1, 2], [3, 4] ]",
true
);
diff --git a/libs/geometry/test/multi/io/wkt/Jamfile.v2 b/libs/geometry/test/multi/io/wkt/Jamfile.v2
index 2f0fea2ed0..50c17cf685 100644
--- a/libs/geometry/test/multi/io/wkt/Jamfile.v2
+++ b/libs/geometry/test/multi/io/wkt/Jamfile.v2
@@ -10,6 +10,6 @@
test-suite boost-geometry-multi-io-wkt
:
- [ run wkt.cpp ]
+ [ run multi_wkt.cpp ]
;
diff --git a/libs/geometry/test/multi/io/wkt/io_wkt_tests.sln b/libs/geometry/test/multi/io/wkt/io_wkt_tests.sln
deleted file mode 100644
index a804d533a0..0000000000
--- a/libs/geometry/test/multi/io/wkt/io_wkt_tests.sln
+++ /dev/null
@@ -1,27 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wkt", "wkt.vcproj", "{CA8D5E44-7D8F-44A1-900C-35C28890299B}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {1FA2ADE2-F649-4245-951E-A8F5935E7127}.Debug|Win32.ActiveCfg = Debug|Win32
- {1FA2ADE2-F649-4245-951E-A8F5935E7127}.Debug|Win32.Build.0 = Debug|Win32
- {1FA2ADE2-F649-4245-951E-A8F5935E7127}.Release|Win32.ActiveCfg = Release|Win32
- {1FA2ADE2-F649-4245-951E-A8F5935E7127}.Release|Win32.Build.0 = Release|Win32
- {F2A680B0-F6FC-479E-9988-24CF6851C13C}.Debug|Win32.ActiveCfg = Debug|Win32
- {F2A680B0-F6FC-479E-9988-24CF6851C13C}.Debug|Win32.Build.0 = Debug|Win32
- {F2A680B0-F6FC-479E-9988-24CF6851C13C}.Release|Win32.ActiveCfg = Release|Win32
- {F2A680B0-F6FC-479E-9988-24CF6851C13C}.Release|Win32.Build.0 = Release|Win32
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Debug|Win32.ActiveCfg = Debug|Win32
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Debug|Win32.Build.0 = Debug|Win32
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Release|Win32.ActiveCfg = Release|Win32
- {CA8D5E44-7D8F-44A1-900C-35C28890299B}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/multi/io/wkt/wkt.cpp b/libs/geometry/test/multi/io/wkt/multi_wkt.cpp
index a149946cf5..317f0578c2 100644
--- a/libs/geometry/test/multi/io/wkt/wkt.cpp
+++ b/libs/geometry/test/multi/io/wkt/multi_wkt.cpp
@@ -55,7 +55,7 @@ void test_all()
test_wkt<bg::model::multi_linestring<bg::model::linestring<P> > >("multilinestring((1 1,2 2,3 3),(4 4,5 5,6 6))", 6, 4 * sqrt(2.0));
test_wkt<bg::model::multi_polygon<bg::model::polygon<P> > >("multipolygon(((0 0,0 2,2 2,2 0,0 0),(1 1,1 2,2 2,2 1,1 1)),((0 0,0 4,4 4,4 0,0 0)))", 15, 0, 21, 28);
- // Support for the official alternative syntax for multipoint
+ // Support for the official alternative syntax for multipoint
// (provided by Aleksey Tulinov):
test_relaxed_wkt<bg::model::multi_point<P> >("multipoint(1 2,3 4)", "multipoint((1 2),(3 4))");
@@ -64,7 +64,7 @@ void test_all()
"expected '('");
test_wrong_wkt<bg::model::multi_linestring<bg::model::linestring<P> > >(
- "MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10)), (0 0, 1 1)",
+ "MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10)), (0 0, 1 1)",
"too much tokens at ','");
test_wrong_wkt<bg::model::multi_point<P> >(
diff --git a/libs/geometry/test/multi/io/wkt/wkt.vcproj b/libs/geometry/test/multi/io/wkt/wkt.vcproj
deleted file mode 100644
index c8150e8534..0000000000
--- a/libs/geometry/test/multi/io/wkt/wkt.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="wkt"
- ProjectGUID="{CA8D5E44-7D8F-44A1-900C-35C28890299B}"
- RootNamespace="wkt"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\wkt"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\wkt"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\wkt.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/multi/multi_tests.sln b/libs/geometry/test/multi/multi_tests.sln
deleted file mode 100644
index abfef0161f..0000000000
--- a/libs/geometry/test/multi/multi_tests.sln
+++ /dev/null
@@ -1,163 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_within", "algorithms\multi_within.vcproj", "{CA8D5E44-7D8F-44A1-901C-35C28890299B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_distance", "algorithms\multi_distance.vcproj", "{D770F3E8-0567-4EDD-91FC-20BA402A3F74}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_convex_hull", "algorithms\multi_convex_hull.vcproj", "{B810C404-C4D9-4A6A-96B0-1DCED269D65D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_envelope", "algorithms\multi_envelope.vcproj", "{85385CF0-240C-4900-B5EA-E34D2415A18F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_centroid", "algorithms\multi_centroid.vcproj", "{7EE302E1-7FCF-4E9E-8DB3-36EA4D88B6CA}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_correct", "algorithms\multi_correct.vcproj", "{DFB00B88-2ED8-49CA-B739-7C8A8602D681}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_simplify", "algorithms\multi_simplify.vcproj", "{76A74CE4-EBF8-4F8A-98B7-1AF607B2B68C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_for_each", "algorithms\multi_for_each.vcproj", "{B016FE33-D587-45C6-8444-607839BB2C2D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_area", "algorithms\multi_area.vcproj", "{691082ED-2778-4300-9860-42DFBBABE535}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_length", "algorithms\multi_length.vcproj", "{9087BA6C-7563-41E6-90AD-F60BC58DDC17}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_perimeter", "algorithms\multi_perimeter.vcproj", "{D91C3F39-B8A5-4EB9-A7A8-D72B297DCFBF}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_intersection", "algorithms\multi_intersection.vcproj", "{FFB78F24-7999-4416-BDED-9C35A3DDF32D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_union", "algorithms\multi_union.vcproj", "{1A8443BE-2666-4D6B-B4BC-6A7B7DD224B0}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_equals", "algorithms\multi_equals.vcproj", "{AA0EFD64-E034-421A-BD4A-E5A336D95C30}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_reverse", "algorithms\multi_reverse.vcproj", "{698BE05D-43E2-4BF5-B7FD-48BE3EE7BC21}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_unique", "algorithms\multi_unique.vcproj", "{71879D37-84A8-4949-8CDB-212982F81D80}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_num_geometries", "algorithms\multi_num_geometries.vcproj", "{8DB68EB9-07CA-4705-859E-B1A7098B5CF3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_num_points", "algorithms\multi_num_points.vcproj", "{EA4B2EB3-1FBA-42BE-B7D7-5A517BC74E2B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_num_interior_rings", "algorithms\multi_num_interior_rings.vcproj", "{3F8E4B3A-43D5-49ED-89F6-C6D1CF609B02}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_difference", "algorithms\multi_difference.vcproj", "{7F85B87A-48A6-47BD-A08C-AB12AEA56582}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_transform", "algorithms\multi_transform.vcproj", "{64985954-0A74-46F5-908F-865E905C3414}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_covered_by", "algorithms\multi_covered_by.vcproj", "{680E56F0-229C-4377-BDC0-80EB9B59314B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_convert", "algorithms\multi_convert.vcproj", "{21B7EF55-23C3-4FD2-9F2F-FD8F0F3FE167}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_disjoint", "algorithms\multi_disjoint.vcproj", "{5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_touches", "algorithms\multi_touches.vcproj", "{108173B8-B6F4-4366-8018-2BF282ED4881}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {CA8D5E44-7D8F-44A1-901C-35C28890299B}.Debug|Win32.ActiveCfg = Debug|Win32
- {CA8D5E44-7D8F-44A1-901C-35C28890299B}.Debug|Win32.Build.0 = Debug|Win32
- {CA8D5E44-7D8F-44A1-901C-35C28890299B}.Release|Win32.ActiveCfg = Release|Win32
- {CA8D5E44-7D8F-44A1-901C-35C28890299B}.Release|Win32.Build.0 = Release|Win32
- {D770F3E8-0567-4EDD-91FC-20BA402A3F74}.Debug|Win32.ActiveCfg = Debug|Win32
- {D770F3E8-0567-4EDD-91FC-20BA402A3F74}.Debug|Win32.Build.0 = Debug|Win32
- {D770F3E8-0567-4EDD-91FC-20BA402A3F74}.Release|Win32.ActiveCfg = Release|Win32
- {D770F3E8-0567-4EDD-91FC-20BA402A3F74}.Release|Win32.Build.0 = Release|Win32
- {B810C404-C4D9-4A6A-96B0-1DCED269D65D}.Debug|Win32.ActiveCfg = Debug|Win32
- {B810C404-C4D9-4A6A-96B0-1DCED269D65D}.Debug|Win32.Build.0 = Debug|Win32
- {B810C404-C4D9-4A6A-96B0-1DCED269D65D}.Release|Win32.ActiveCfg = Release|Win32
- {B810C404-C4D9-4A6A-96B0-1DCED269D65D}.Release|Win32.Build.0 = Release|Win32
- {85385CF0-240C-4900-B5EA-E34D2415A18F}.Debug|Win32.ActiveCfg = Debug|Win32
- {85385CF0-240C-4900-B5EA-E34D2415A18F}.Debug|Win32.Build.0 = Debug|Win32
- {85385CF0-240C-4900-B5EA-E34D2415A18F}.Release|Win32.ActiveCfg = Release|Win32
- {85385CF0-240C-4900-B5EA-E34D2415A18F}.Release|Win32.Build.0 = Release|Win32
- {7EE302E1-7FCF-4E9E-8DB3-36EA4D88B6CA}.Debug|Win32.ActiveCfg = Debug|Win32
- {7EE302E1-7FCF-4E9E-8DB3-36EA4D88B6CA}.Debug|Win32.Build.0 = Debug|Win32
- {7EE302E1-7FCF-4E9E-8DB3-36EA4D88B6CA}.Release|Win32.ActiveCfg = Release|Win32
- {7EE302E1-7FCF-4E9E-8DB3-36EA4D88B6CA}.Release|Win32.Build.0 = Release|Win32
- {DFB00B88-2ED8-49CA-B739-7C8A8602D681}.Debug|Win32.ActiveCfg = Debug|Win32
- {DFB00B88-2ED8-49CA-B739-7C8A8602D681}.Debug|Win32.Build.0 = Debug|Win32
- {DFB00B88-2ED8-49CA-B739-7C8A8602D681}.Release|Win32.ActiveCfg = Release|Win32
- {DFB00B88-2ED8-49CA-B739-7C8A8602D681}.Release|Win32.Build.0 = Release|Win32
- {76A74CE4-EBF8-4F8A-98B7-1AF607B2B68C}.Debug|Win32.ActiveCfg = Debug|Win32
- {76A74CE4-EBF8-4F8A-98B7-1AF607B2B68C}.Debug|Win32.Build.0 = Debug|Win32
- {76A74CE4-EBF8-4F8A-98B7-1AF607B2B68C}.Release|Win32.ActiveCfg = Release|Win32
- {76A74CE4-EBF8-4F8A-98B7-1AF607B2B68C}.Release|Win32.Build.0 = Release|Win32
- {B016FE33-D587-45C6-8444-607839BB2C2D}.Debug|Win32.ActiveCfg = Debug|Win32
- {B016FE33-D587-45C6-8444-607839BB2C2D}.Debug|Win32.Build.0 = Debug|Win32
- {B016FE33-D587-45C6-8444-607839BB2C2D}.Release|Win32.ActiveCfg = Release|Win32
- {B016FE33-D587-45C6-8444-607839BB2C2D}.Release|Win32.Build.0 = Release|Win32
- {691082ED-2778-4300-9860-42DFBBABE535}.Debug|Win32.ActiveCfg = Debug|Win32
- {691082ED-2778-4300-9860-42DFBBABE535}.Debug|Win32.Build.0 = Debug|Win32
- {691082ED-2778-4300-9860-42DFBBABE535}.Release|Win32.ActiveCfg = Release|Win32
- {691082ED-2778-4300-9860-42DFBBABE535}.Release|Win32.Build.0 = Release|Win32
- {9087BA6C-7563-41E6-90AD-F60BC58DDC17}.Debug|Win32.ActiveCfg = Debug|Win32
- {9087BA6C-7563-41E6-90AD-F60BC58DDC17}.Debug|Win32.Build.0 = Debug|Win32
- {9087BA6C-7563-41E6-90AD-F60BC58DDC17}.Release|Win32.ActiveCfg = Release|Win32
- {9087BA6C-7563-41E6-90AD-F60BC58DDC17}.Release|Win32.Build.0 = Release|Win32
- {D91C3F39-B8A5-4EB9-A7A8-D72B297DCFBF}.Debug|Win32.ActiveCfg = Debug|Win32
- {D91C3F39-B8A5-4EB9-A7A8-D72B297DCFBF}.Debug|Win32.Build.0 = Debug|Win32
- {D91C3F39-B8A5-4EB9-A7A8-D72B297DCFBF}.Release|Win32.ActiveCfg = Release|Win32
- {D91C3F39-B8A5-4EB9-A7A8-D72B297DCFBF}.Release|Win32.Build.0 = Release|Win32
- {FFB78F24-7999-4416-BDED-9C35A3DDF32D}.Debug|Win32.ActiveCfg = Debug|Win32
- {FFB78F24-7999-4416-BDED-9C35A3DDF32D}.Debug|Win32.Build.0 = Debug|Win32
- {FFB78F24-7999-4416-BDED-9C35A3DDF32D}.Release|Win32.ActiveCfg = Release|Win32
- {FFB78F24-7999-4416-BDED-9C35A3DDF32D}.Release|Win32.Build.0 = Release|Win32
- {1A8443BE-2666-4D6B-B4BC-6A7B7DD224B0}.Debug|Win32.ActiveCfg = Debug|Win32
- {1A8443BE-2666-4D6B-B4BC-6A7B7DD224B0}.Debug|Win32.Build.0 = Debug|Win32
- {1A8443BE-2666-4D6B-B4BC-6A7B7DD224B0}.Release|Win32.ActiveCfg = Release|Win32
- {1A8443BE-2666-4D6B-B4BC-6A7B7DD224B0}.Release|Win32.Build.0 = Release|Win32
- {AA0EFD64-E034-421A-BD4A-E5A336D95C30}.Debug|Win32.ActiveCfg = Debug|Win32
- {AA0EFD64-E034-421A-BD4A-E5A336D95C30}.Debug|Win32.Build.0 = Debug|Win32
- {AA0EFD64-E034-421A-BD4A-E5A336D95C30}.Release|Win32.ActiveCfg = Release|Win32
- {AA0EFD64-E034-421A-BD4A-E5A336D95C30}.Release|Win32.Build.0 = Release|Win32
- {698BE05D-43E2-4BF5-B7FD-48BE3EE7BC21}.Debug|Win32.ActiveCfg = Debug|Win32
- {698BE05D-43E2-4BF5-B7FD-48BE3EE7BC21}.Debug|Win32.Build.0 = Debug|Win32
- {698BE05D-43E2-4BF5-B7FD-48BE3EE7BC21}.Release|Win32.ActiveCfg = Release|Win32
- {698BE05D-43E2-4BF5-B7FD-48BE3EE7BC21}.Release|Win32.Build.0 = Release|Win32
- {71879D37-84A8-4949-8CDB-212982F81D80}.Debug|Win32.ActiveCfg = Debug|Win32
- {71879D37-84A8-4949-8CDB-212982F81D80}.Debug|Win32.Build.0 = Debug|Win32
- {71879D37-84A8-4949-8CDB-212982F81D80}.Release|Win32.ActiveCfg = Release|Win32
- {71879D37-84A8-4949-8CDB-212982F81D80}.Release|Win32.Build.0 = Release|Win32
- {8DB68EB9-07CA-4705-859E-B1A7098B5CF3}.Debug|Win32.ActiveCfg = Debug|Win32
- {8DB68EB9-07CA-4705-859E-B1A7098B5CF3}.Debug|Win32.Build.0 = Debug|Win32
- {8DB68EB9-07CA-4705-859E-B1A7098B5CF3}.Release|Win32.ActiveCfg = Release|Win32
- {8DB68EB9-07CA-4705-859E-B1A7098B5CF3}.Release|Win32.Build.0 = Release|Win32
- {EA4B2EB3-1FBA-42BE-B7D7-5A517BC74E2B}.Debug|Win32.ActiveCfg = Debug|Win32
- {EA4B2EB3-1FBA-42BE-B7D7-5A517BC74E2B}.Debug|Win32.Build.0 = Debug|Win32
- {EA4B2EB3-1FBA-42BE-B7D7-5A517BC74E2B}.Release|Win32.ActiveCfg = Release|Win32
- {EA4B2EB3-1FBA-42BE-B7D7-5A517BC74E2B}.Release|Win32.Build.0 = Release|Win32
- {3F8E4B3A-43D5-49ED-89F6-C6D1CF609B02}.Debug|Win32.ActiveCfg = Debug|Win32
- {3F8E4B3A-43D5-49ED-89F6-C6D1CF609B02}.Debug|Win32.Build.0 = Debug|Win32
- {3F8E4B3A-43D5-49ED-89F6-C6D1CF609B02}.Release|Win32.ActiveCfg = Release|Win32
- {3F8E4B3A-43D5-49ED-89F6-C6D1CF609B02}.Release|Win32.Build.0 = Release|Win32
- {7F85B87A-48A6-47BD-A08C-AB12AEA56582}.Debug|Win32.ActiveCfg = Debug|Win32
- {7F85B87A-48A6-47BD-A08C-AB12AEA56582}.Debug|Win32.Build.0 = Debug|Win32
- {7F85B87A-48A6-47BD-A08C-AB12AEA56582}.Release|Win32.ActiveCfg = Release|Win32
- {7F85B87A-48A6-47BD-A08C-AB12AEA56582}.Release|Win32.Build.0 = Release|Win32
- {64985954-0A74-46F5-908F-865E905C3414}.Debug|Win32.ActiveCfg = Debug|Win32
- {64985954-0A74-46F5-908F-865E905C3414}.Debug|Win32.Build.0 = Debug|Win32
- {64985954-0A74-46F5-908F-865E905C3414}.Release|Win32.ActiveCfg = Release|Win32
- {64985954-0A74-46F5-908F-865E905C3414}.Release|Win32.Build.0 = Release|Win32
- {680E56F0-229C-4377-BDC0-80EB9B59314B}.Debug|Win32.ActiveCfg = Debug|Win32
- {680E56F0-229C-4377-BDC0-80EB9B59314B}.Debug|Win32.Build.0 = Debug|Win32
- {680E56F0-229C-4377-BDC0-80EB9B59314B}.Release|Win32.ActiveCfg = Release|Win32
- {680E56F0-229C-4377-BDC0-80EB9B59314B}.Release|Win32.Build.0 = Release|Win32
- {21B7EF55-23C3-4FD2-9F2F-FD8F0F3FE167}.Debug|Win32.ActiveCfg = Debug|Win32
- {21B7EF55-23C3-4FD2-9F2F-FD8F0F3FE167}.Debug|Win32.Build.0 = Debug|Win32
- {21B7EF55-23C3-4FD2-9F2F-FD8F0F3FE167}.Release|Win32.ActiveCfg = Release|Win32
- {21B7EF55-23C3-4FD2-9F2F-FD8F0F3FE167}.Release|Win32.Build.0 = Release|Win32
- {5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}.Debug|Win32.ActiveCfg = Debug|Win32
- {5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}.Debug|Win32.Build.0 = Debug|Win32
- {5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}.Release|Win32.ActiveCfg = Release|Win32
- {5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}.Release|Win32.Build.0 = Release|Win32
- {108173B8-B6F4-4366-8018-2BF282ED4881}.Debug|Win32.ActiveCfg = Debug|Win32
- {108173B8-B6F4-4366-8018-2BF282ED4881}.Debug|Win32.Build.0 = Debug|Win32
- {108173B8-B6F4-4366-8018-2BF282ED4881}.Release|Win32.ActiveCfg = Release|Win32
- {108173B8-B6F4-4366-8018-2BF282ED4881}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/policies/Jamfile.v2 b/libs/geometry/test/policies/Jamfile.v2
index 741c4d1bcf..22c58c89cd 100644
--- a/libs/geometry/test/policies/Jamfile.v2
+++ b/libs/geometry/test/policies/Jamfile.v2
@@ -11,4 +11,5 @@
test-suite boost-geometry-policies
:
[ run compare.cpp ]
+ [ run rescale_policy.cpp ]
;
diff --git a/libs/geometry/test/policies/compare.cpp b/libs/geometry/test/policies/compare.cpp
index adb9f03099..3e4b1b0212 100644
--- a/libs/geometry/test/policies/compare.cpp
+++ b/libs/geometry/test/policies/compare.cpp
@@ -32,7 +32,6 @@ template <typename Container>
inline std::string coordinates(Container const& points)
{
std::ostringstream out;
- typedef typename boost::range_value<Container>::type point_type;
for (typename boost::range_const_iterator<Container>::type it = boost::begin(points);
it != boost::end(points);
++it)
@@ -132,8 +131,6 @@ void test_2d_compare()
template <typename P>
void test_2d_sort()
{
- typedef typename bg::coordinate_type<P>::type ct;
-
std::vector<P> v;
v.push_back(bg::make<P>(3, 1));
v.push_back(bg::make<P>(2, 3));
diff --git a/libs/geometry/test/policies/compare.vcproj b/libs/geometry/test/policies/compare.vcproj
deleted file mode 100644
index 916e6d72bf..0000000000
--- a/libs/geometry/test/policies/compare.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="compare"
- ProjectGUID="{71AFA3C2-6873-4368-81D9-CA305A43B458}"
- RootNamespace="compare"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\compare"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\compare"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\compare.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/policies/policy_tests.sln b/libs/geometry/test/policies/policy_tests.sln
deleted file mode 100644
index 16917fd382..0000000000
--- a/libs/geometry/test/policies/policy_tests.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "compare", "compare.vcproj", "{71AFA3C2-6873-4368-81D9-CA305A43B458}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {71AFA3C2-6873-4368-81D9-CA305A43B458}.Debug|Win32.ActiveCfg = Debug|Win32
- {71AFA3C2-6873-4368-81D9-CA305A43B458}.Debug|Win32.Build.0 = Debug|Win32
- {71AFA3C2-6873-4368-81D9-CA305A43B458}.Release|Win32.ActiveCfg = Release|Win32
- {71AFA3C2-6873-4368-81D9-CA305A43B458}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/policies/rescale_policy.cpp b/libs/geometry/test/policies/rescale_policy.cpp
new file mode 100644
index 0000000000..c91f31988d
--- /dev/null
+++ b/libs/geometry/test/policies/rescale_policy.cpp
@@ -0,0 +1,133 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// 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.
+
+// 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)
+
+#include <iostream>
+#include <string>
+
+#include <boost/foreach.hpp>
+
+#include <boost/geometry/algorithms/correct.hpp>
+#include <boost/geometry/algorithms/detail/recalculate.hpp>
+#include <boost/geometry/algorithms/length.hpp>
+#include <boost/geometry/algorithms/num_points.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
+#include <boost/geometry/iterators/point_iterator.hpp>
+#include <boost/geometry/policies/robustness/get_rescale_policy.hpp>
+
+#include <boost/geometry/io/wkt/wkt.hpp>
+
+
+
+#include <geometry_test_common.hpp>
+
+
+template
+<
+ typename RescalePolicy,
+ typename Geometry1,
+ typename Geometry2
+>
+void test_one(std::string const& wkt1, std::string const& wkt2,
+ std::string const& expected_coordinates)
+{
+ Geometry1 geometry1;
+ bg::read_wkt(wkt1, geometry1);
+
+ Geometry2 geometry2;
+ bg::read_wkt(wkt2, geometry2);
+
+ RescalePolicy rescale_policy
+ = bg::get_rescale_policy<RescalePolicy>(geometry1, geometry2);
+
+ typedef typename bg::point_type<Geometry1>::type point_type;
+ typedef typename bg::robust_point_type
+ <
+ point_type, RescalePolicy
+ >::type robust_point_type;
+
+ {
+ robust_point_type robust_point;
+ bg::recalculate(robust_point, *bg::points_begin(geometry1), rescale_policy);
+
+ std::ostringstream out;
+ out << bg::get<0>(robust_point) << " " << bg::get<1>(robust_point);
+ BOOST_CHECK_EQUAL(expected_coordinates, out.str());
+ }
+
+ {
+ // Assuming Geometry1 is a polygon:
+ typedef bg::model::polygon<robust_point_type> polygon_type;
+ polygon_type geometry_out;
+ bg::recalculate(geometry_out, geometry1, rescale_policy);
+ robust_point_type p = *bg::points_begin(geometry_out);
+
+ std::ostringstream out;
+ out << bg::get<0>(p) << " " << bg::get<1>(p);
+ BOOST_CHECK_EQUAL(expected_coordinates, out.str());
+ }
+}
+
+
+
+static std::string simplex_normal[2] =
+ {"POLYGON((0 1,2 5,5 3,0 1))",
+ "POLYGON((3 0,0 3,4 5,3 0))"};
+
+static std::string simplex_large[2] =
+ {"POLYGON((0 1000,2000 5000,5000 3000,0 1000))",
+ "POLYGON((3000 0,0 3000,4000 5000,3000 0))"};
+
+
+template <bool Rescale, typename P>
+void test_rescale(std::string const& expected_normal, std::string const& expected_large)
+{
+ typedef bg::model::polygon<P> polygon;
+
+ typedef typename boost::mpl::if_c
+ <
+ Rescale,
+ typename bg::rescale_policy_type<P>::type ,
+ bg::detail::no_rescale_policy
+ >::type rescale_policy_type;
+
+ test_one<rescale_policy_type, polygon, polygon>(
+ simplex_normal[0], simplex_normal[1],
+ expected_normal);
+ test_one<rescale_policy_type, polygon, polygon>(
+ simplex_large[0], simplex_large[1],
+ expected_large);
+}
+
+template <typename T>
+void test_all(std::string const& expected_normal, std::string const& expected_large)
+{
+ typedef bg::model::d2::point_xy<T> point_type;
+ test_rescale<true, point_type>(expected_normal, expected_large);
+ //test_rescale<false, point_type>();
+}
+
+
+int test_main(int, char* [])
+{
+ test_all<double>("-5000000 -3000000", "-5000000 -3000000");
+ test_all<long double>("-5000000 -3000000", "-5000000 -3000000");
+ test_all<int>("0 1", "0 1000");
+ test_all<boost::long_long_type>("0 1", "0 1000");
+ // test_all<short int>(); // compiles but overflows
+
+ return 0;
+}
+
diff --git a/libs/geometry/test/robustness/common/common_settings.hpp b/libs/geometry/test/robustness/common/common_settings.hpp
index 050f5367f7..2d4153a47c 100644
--- a/libs/geometry/test/robustness/common/common_settings.hpp
+++ b/libs/geometry/test/robustness/common/common_settings.hpp
@@ -15,7 +15,7 @@ struct common_settings
bool wkt;
bool also_difference;
double tolerance;
-
+
int field_size;
bool triangular;
diff --git a/libs/geometry/test/robustness/common/make_square_polygon.hpp b/libs/geometry/test/robustness/common/make_square_polygon.hpp
index 764fc4bb80..a40eda790a 100644
--- a/libs/geometry/test/robustness/common/make_square_polygon.hpp
+++ b/libs/geometry/test/robustness/common/make_square_polygon.hpp
@@ -15,7 +15,7 @@ template <typename Polygon, typename Generator, typename Settings>
inline void make_square_polygon(Polygon& polygon, Generator& generator, Settings const& settings)
{
using namespace boost::geometry;
-
+
typedef typename point_type<Polygon>::type point_type;
typedef typename coordinate_type<Polygon>::type coordinate_type;
diff --git a/libs/geometry/test/robustness/convex_hull/random_multi_points.cpp b/libs/geometry/test/robustness/convex_hull/random_multi_points.cpp
index 90ea7e2cd4..c7b1466814 100644
--- a/libs/geometry/test/robustness/convex_hull/random_multi_points.cpp
+++ b/libs/geometry/test/robustness/convex_hull/random_multi_points.cpp
@@ -24,7 +24,7 @@
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/multi/geometries/multi_geometries.hpp>
-#include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+#include <boost/geometry/io/svg/svg_mapper.hpp>
struct settings_type
{
@@ -124,7 +124,7 @@ void test_random_multi_points(MultiPoint& result, int& index,
}
if (settings.wkt)
{
- std::cout
+ std::cout
<< "input: " << bg::wkt(mp) << std::endl
<< "output: " << bg::wkt(hull) << std::endl
<< std::endl;
diff --git a/libs/geometry/test/robustness/convex_hull/random_multi_points.sln b/libs/geometry/test/robustness/convex_hull/random_multi_points.sln
deleted file mode 100644
index 1261464c01..0000000000
--- a/libs/geometry/test/robustness/convex_hull/random_multi_points.sln
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "random_multi_points", "random_multi_points.vcproj", "{334B6950-6F92-4FA3-9A82-ED6E3B19BB2C}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {334B6950-6F92-4FA3-9A82-ED6E3B19BB2C}.Debug|Win32.ActiveCfg = Debug|Win32
- {334B6950-6F92-4FA3-9A82-ED6E3B19BB2C}.Debug|Win32.Build.0 = Debug|Win32
- {334B6950-6F92-4FA3-9A82-ED6E3B19BB2C}.Release|Win32.ActiveCfg = Release|Win32
- {334B6950-6F92-4FA3-9A82-ED6E3B19BB2C}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/robustness/convex_hull/random_multi_points.vcproj b/libs/geometry/test/robustness/convex_hull/random_multi_points.vcproj
deleted file mode 100644
index 3db9cd3be7..0000000000
--- a/libs/geometry/test/robustness/convex_hull/random_multi_points.vcproj
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="random_multi_points"
- ProjectGUID="{334B6950-6F92-4FA3-9A82-ED6E3B19BB2C}"
- RootNamespace="random_multi_points"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\random_multi_points"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="2"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\random_multi_points"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="program options"
- >
- <File
- RelativePath="..\..\..\..\program_options\src\cmdline.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\program_options\src\config_file.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\program_options\src\convert.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\program_options\src\options_description.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\program_options\src\parsers.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\program_options\src\positional_options.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\program_options\src\split.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\program_options\src\value_semantic.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\program_options\src\variables_map.cpp"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\random_multi_points.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/robustness/overlay/areal_areal/Jamfile.v2 b/libs/geometry/test/robustness/overlay/areal_areal/Jamfile.v2
new file mode 100644
index 0000000000..96e42656d4
--- /dev/null
+++ b/libs/geometry/test/robustness/overlay/areal_areal/Jamfile.v2
@@ -0,0 +1,28 @@
+# Boost.Geometry (aka GGL, Generic Geometry Library)
+#
+# Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands.
+# Copyright (c) 2008-2013 Bruno Lalande, Paris, France.
+# Copyright (c) 2009-2013 Mateusz Loskot, London, UK.
+# Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland.
+#
+# 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)
+
+project boost-geometry-robustness-overlay-areal_areal
+ :
+ requirements
+ <include>.
+ <library>/boost/program_options//boost_program_options
+ ;
+
+exe interior_triangles : interior_triangles.cpp ;
+exe intersection_pies : intersection_pies.cpp ;
+exe intersection_stars : intersection_stars.cpp ;
+exe intersects : intersects.cpp ;
+exe random_ellipses_stars : random_ellipses_stars.cpp ;
+exe recursive_polygons : recursive_polygons.cpp ;
+exe star_comb : star_comb.cpp ;
+
+exe ticket_9081 : ticket_9081.cpp ;
+
diff --git a/libs/geometry/test/algorithms/overlay/robustness/interior_triangles.cpp b/libs/geometry/test/robustness/overlay/areal_areal/interior_triangles.cpp
index 5dee530b9a..baf945dd96 100644
--- a/libs/geometry/test/algorithms/overlay/robustness/interior_triangles.cpp
+++ b/libs/geometry/test/robustness/overlay/areal_areal/interior_triangles.cpp
@@ -40,7 +40,7 @@ inline void make_polygon(Polygon& polygon, int count_x, int count_y, int index,
{
for(int k = 0; k < count_y; ++k)
{
- polygon.inners().push_back(Polygon::inner_container_type::value_type());
+ polygon.inners().push_back(typename Polygon::inner_container_type::value_type());
polygon.inners().back().push_back(point_type(offset + j * 10 + 1, k * 10 + 1));
polygon.inners().back().push_back(point_type(offset + j * 10 + 7, k * 10 + 5 + index));
polygon.inners().back().push_back(point_type(offset + j * 10 + 5 + index, k * 10 + 7));
@@ -81,7 +81,6 @@ void test_all(int count, int count_x, int count_y, int offset, p_q_settings cons
> polygon;
- int index = 0;
for(int i = 0; i < count; i++)
{
test_star_comb<polygon>(count_x, count_y, offset, settings);
diff --git a/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.cpp b/libs/geometry/test/robustness/overlay/areal_areal/intersection_pies.cpp
index dce301c12c..dce301c12c 100644
--- a/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.cpp
+++ b/libs/geometry/test/robustness/overlay/areal_areal/intersection_pies.cpp
diff --git a/libs/geometry/test/algorithms/overlay/robustness/intersection_stars.cpp b/libs/geometry/test/robustness/overlay/areal_areal/intersection_stars.cpp
index 5858d1d5aa..0592e2af30 100644
--- a/libs/geometry/test/algorithms/overlay/robustness/intersection_stars.cpp
+++ b/libs/geometry/test/robustness/overlay/areal_areal/intersection_stars.cpp
@@ -74,8 +74,8 @@ void test_star(int count, int min_points, int max_points, T rotation, p_q_settin
for (int i = min_points; i <= max_points; i++)
{
std::ostringstream out;
- out << "_" << string_from_type<T>::name() << "_"
- << string_from_type<CalculationType>::name() << "_"
+ out << "_" << string_from_type<T>::name() << "_"
+ << string_from_type<CalculationType>::name() << "_"
<< i << "_int";
polygon p;
diff --git a/libs/geometry/test/algorithms/overlay/robustness/intersects.cpp b/libs/geometry/test/robustness/overlay/areal_areal/intersects.cpp
index e16caeb034..6ad26d22ac 100644
--- a/libs/geometry/test/algorithms/overlay/robustness/intersects.cpp
+++ b/libs/geometry/test/robustness/overlay/areal_areal/intersects.cpp
@@ -36,7 +36,7 @@ inline void make_polygon(MultiPolygon& mp, int count_x, int count_y, int index,
{
for(int k = 0; k < count_y; ++k)
{
- mp.push_back(MultiPolygon::value_type());
+ mp.push_back(typename MultiPolygon::value_type());
mp.back().outer().push_back(point_type(width_x + j * 10 + 1, k * 10 + 1));
mp.back().outer().push_back(point_type(width_x + j * 10 + width_x, k * 10 + 5 + index));
mp.back().outer().push_back(point_type(width_x + j * 10 + 5 + index, k * 10 + 7));
@@ -93,7 +93,6 @@ void test_all(int count, int count_x, int count_y, int width_x, p_q_settings con
> multi_polygon;
- int index = 0;
for(int i = 0; i < count; i++)
{
test_intersects<multi_polygon>(count_x, count_y, width_x, settings);
diff --git a/libs/geometry/test/algorithms/overlay/robustness/random_ellipses_stars.cpp b/libs/geometry/test/robustness/overlay/areal_areal/random_ellipses_stars.cpp
index 2dca58bbc4..f5b930e55d 100644
--- a/libs/geometry/test/algorithms/overlay/robustness/random_ellipses_stars.cpp
+++ b/libs/geometry/test/robustness/overlay/areal_areal/random_ellipses_stars.cpp
@@ -170,7 +170,6 @@ void test_all(std::string const& type, int seed, int count, p_q_settings setting
{
if (type == "float")
{
- settings.tolerance = 1.0e-3;
test_type<float, Clockwise, Closed>(seed, count, settings);
}
else if (type == "double")
diff --git a/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.cpp b/libs/geometry/test/robustness/overlay/areal_areal/recursive_polygons.cpp
index 19db1dab3e..0c0a729f14 100644
--- a/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.cpp
+++ b/libs/geometry/test/robustness/overlay/areal_areal/recursive_polygons.cpp
@@ -1,5 +1,5 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
-// Unit Test
+// Robustness Test
// Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
diff --git a/libs/geometry/test/algorithms/overlay/robustness/star_comb.cpp b/libs/geometry/test/robustness/overlay/areal_areal/star_comb.cpp
index 8b1269f61a..40bec4052c 100644
--- a/libs/geometry/test/algorithms/overlay/robustness/star_comb.cpp
+++ b/libs/geometry/test/robustness/overlay/areal_areal/star_comb.cpp
@@ -8,9 +8,9 @@
// http://www.boost.org/LICENSE_1_0.txt)
-#define BOOST_GEOMETRY_REPORT_OVERLAY_ERROR
+// #define BOOST_GEOMETRY_REPORT_OVERLAY_ERROR
#define BOOST_GEOMETRY_NO_BOOST_TEST
-#define BOOST_GEOMETRY_TIME_OVERLAY
+// #define BOOST_GEOMETRY_TIME_OVERLAY
#include <test_overlay_p_q.hpp>
@@ -60,8 +60,6 @@ void test_all(int count, int star_point_count, int comb_comb_count, double facto
bg::model::d2::point_xy<T>, Clockwise, Closed
> polygon;
-
- int index = 0;
for(int i = 0; i < count; i++)
{
test_star_comb<polygon>(star_point_count, comb_comb_count, factor1, factor2, do_union, settings);
diff --git a/libs/geometry/test/algorithms/overlay/robustness/star_comb.hpp b/libs/geometry/test/robustness/overlay/areal_areal/star_comb.hpp
index 7019a26d58..7019a26d58 100644
--- a/libs/geometry/test/algorithms/overlay/robustness/star_comb.hpp
+++ b/libs/geometry/test/robustness/overlay/areal_areal/star_comb.hpp
diff --git a/libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp b/libs/geometry/test/robustness/overlay/areal_areal/test_overlay_p_q.hpp
index 85729b1657..fa5544a77d 100644
--- a/libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp
+++ b/libs/geometry/test/robustness/overlay/areal_areal/test_overlay_p_q.hpp
@@ -28,7 +28,7 @@
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/multi/geometries/multi_polygon.hpp>
-#include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+#include <boost/geometry/io/svg/svg_mapper.hpp>
#include <boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp>
#include <boost/geometry/algorithms/intersects.hpp>
@@ -45,7 +45,7 @@ struct p_q_settings
: svg(false)
, also_difference(false)
, wkt(false)
- , tolerance(1.0e-6)
+ , tolerance(1.0e-3) // since rescaling to integer the tolerance should be less. Was originally 1.0e-6
{}
};
@@ -110,7 +110,7 @@ static bool test_overlay_p_q(std::string const& caseid,
if ((area_i > 0 && bg::touches(p, q))
|| (area_i <= 0 && bg::intersects(p, q) && ! bg::touches(p, q)))
{
- std::cout << "Wrong 'touch'! "
+ std::cout << "Wrong 'touch'! "
<< " Intersection area: " << area_i
<< " Touch gives: " << std::boolalpha << bg::touches(p, q)
<< std::endl;
diff --git a/libs/geometry/test/robustness/overlay/areal_areal/ticket_9081.cpp b/libs/geometry/test/robustness/overlay/areal_areal/ticket_9081.cpp
new file mode 100644
index 0000000000..9c2f815972
--- /dev/null
+++ b/libs/geometry/test/robustness/overlay/areal_areal/ticket_9081.cpp
@@ -0,0 +1,239 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library) // Robustness Test
+
+// Copyright (c) 2013 Barend Gehrels, 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)
+
+// Adapted from: the attachment of ticket 9081
+
+#define CHECK_SELF_INTERSECTIONS
+#define LIST_WKT
+
+ #include <iomanip>
+ #include <iostream>
+ #include <vector>
+ #include <boost/geometry.hpp>
+ #include <boost/geometry/geometries/point_xy.hpp>
+ #include <boost/geometry/geometries/polygon.hpp>
+ #include <boost/geometry/geometries/register/point.hpp>
+ #include <boost/geometry/geometries/register/ring.hpp>
+ #include <boost/geometry/io/wkt/wkt.hpp>
+ #include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+#include <boost/foreach.hpp>
+#include <boost/timer.hpp>
+#include <boost/algorithm/string.hpp>
+#include <boost/geometry/io/svg/svg_mapper.hpp>
+#include <fstream>
+
+
+typedef boost::geometry::model::d2::point_xy<double> pt;
+typedef boost::geometry::model::polygon<pt> polygon;
+typedef boost::geometry::model::segment<pt> segment;
+typedef boost::geometry::model::multi_polygon<polygon> multi_polygon;
+
+template <typename Geometry>
+inline void debug_with_svg(int index, char method, Geometry const& a, Geometry const& b, std::string const& headera, std::string const& headerb)
+{
+ multi_polygon output;
+ try
+ {
+ switch(method)
+ {
+ case 'i': boost::geometry::intersection(a, b, output); break;
+ case 'u': boost::geometry::union_(a, b, output); break;
+ case 'd': boost::geometry::difference(a, b, output); break;
+ case 'v': boost::geometry::difference(b, a, output); break;
+ default : return;
+ }
+ }
+ catch(...)
+ {}
+
+ std::ostringstream filename;
+ filename << "ticket_9081_" << method << "_" << (1000000 + index) << ".svg";
+ std::ofstream svg(filename.str().c_str());
+
+ boost::geometry::svg_mapper<pt> mapper(svg, 400, 400);
+ mapper.add(a);
+ mapper.add(b);
+
+ mapper.map(a, "fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:2");
+ mapper.map(b, "fill-opacity:0.3;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2");
+ BOOST_FOREACH(polygon const& g, output)
+ {
+ mapper.map(g, "opacity:0.8;fill:none;stroke:rgb(255,128,0);stroke-width:4;stroke-dasharray:1,7;stroke-linecap:round");
+ }
+
+ std::ostringstream out;
+ out << headera << std::endl << headerb;
+ mapper.map(boost::geometry::return_centroid<pt>(a), "fill:rgb(152,204,0);stroke:rgb(153,204,0);stroke-width:0.1", 3);
+ mapper.map(boost::geometry::return_centroid<pt>(b), "fill:rgb(51,51,153);stroke:rgb(153,204,0);stroke-width:0.1", 3);
+ mapper.text(boost::geometry::return_centroid<pt>(a), headera, "fill:rgb(0,0,0);font-family:Arial;font-size:10px");
+ mapper.text(boost::geometry::return_centroid<pt>(b), headerb, "fill:rgb(0,0,0);font-family:Arial;font-size:10px");
+}
+
+int main()
+{
+ int num_orig = 50;
+ int num_rounds = 30000;
+ srand(1234);
+ std::cout << std::setprecision(16);
+ std::map<int, std::string> genesis;
+ int pj;
+
+
+ std::string wkt1, wkt2, operation;
+
+ try
+ {
+
+
+ boost::timer t;
+ std::vector<multi_polygon> poly_list;
+
+ for(int i=0;i<num_orig;i++)
+ {
+ multi_polygon mp;
+ polygon p;
+ for(int j=0;j<3;j++)
+ {
+ double x=(double)rand()/RAND_MAX;
+ double y=(double)rand()/RAND_MAX;
+ p.outer().push_back(pt(x,y));
+ }
+ boost::geometry::correct(p);
+ mp.push_back(p);
+ boost::geometry::detail::overlay::has_self_intersections(mp);
+
+ std::ostringstream out;
+ out << "original " << poly_list.size();
+ genesis[poly_list.size()] = out.str();
+ poly_list.push_back(mp);
+
+#ifdef LIST_WKT
+ std::cout << "Original " << i << " " << boost::geometry::wkt(p) << std::endl;
+#endif
+ }
+
+
+ for(int j=0;j<num_rounds;j++)
+ {
+ if (j % 100 == 0) { std::cout << " " << j; }
+ pj = j;
+ int a = rand() % poly_list.size();
+ int b = rand() % poly_list.size();
+
+ debug_with_svg(j, 'i', poly_list[a], poly_list[b], genesis[a], genesis[b]);
+
+ { std::ostringstream out; out << boost::geometry::wkt(poly_list[a]); wkt1 = out.str(); }
+ { std::ostringstream out; out << boost::geometry::wkt(poly_list[b]); wkt2 = out.str(); }
+
+ multi_polygon mp_i, mp_u, mp_d, mp_e;
+ operation = "intersection";
+ boost::geometry::intersection(poly_list[a],poly_list[b],mp_i);
+ operation = "intersection";
+ boost::geometry::union_(poly_list[a],poly_list[b],mp_u);
+ operation = "difference";
+ boost::geometry::difference(poly_list[a],poly_list[b],mp_d);
+ boost::geometry::difference(poly_list[b],poly_list[a],mp_e);
+
+#ifdef LIST_WKT
+ std::cout << j << std::endl;
+ std::cout << " Genesis a " << genesis[a] << std::endl;
+ std::cout << " Genesis b " << genesis[b] << std::endl;
+ std::cout << " Intersection " << boost::geometry::wkt(mp_i) << std::endl;
+ std::cout << " Difference a " << boost::geometry::wkt(mp_d) << std::endl;
+ std::cout << " Difference b " << boost::geometry::wkt(mp_e) << std::endl;
+#endif
+
+#ifdef CHECK_SELF_INTERSECTIONS
+ try
+ {
+ boost::geometry::detail::overlay::has_self_intersections(mp_i);
+ }
+ catch(...)
+ {
+ std::cout << "FAILED TO INTERSECT " << j << std::endl;
+ std::cout << boost::geometry::wkt(poly_list[a]) << std::endl;
+ std::cout << boost::geometry::wkt(poly_list[b]) << std::endl;
+ std::cout << boost::geometry::wkt(mp_i) << std::endl;
+ try
+ {
+ boost::geometry::detail::overlay::has_self_intersections(mp_i);
+ }
+ catch(...)
+ {
+ }
+ break;
+ }
+
+ try
+ {
+ boost::geometry::detail::overlay::has_self_intersections(mp_d);
+ }
+ catch(...)
+ {
+ std::cout << "FAILED TO SUBTRACT " << j << std::endl;
+ std::cout << boost::geometry::wkt(poly_list[a]) << std::endl;
+ std::cout << boost::geometry::wkt(poly_list[b]) << std::endl;
+ std::cout << boost::geometry::wkt(mp_d) << std::endl;
+ break;
+ }
+ try
+ {
+ boost::geometry::detail::overlay::has_self_intersections(mp_e);
+ }
+ catch(...)
+ {
+ std::cout << "FAILED TO SUBTRACT " << j << std::endl;
+ std::cout << boost::geometry::wkt(poly_list[b]) << std::endl;
+ std::cout << boost::geometry::wkt(poly_list[a]) << std::endl;
+ std::cout << boost::geometry::wkt(mp_e) << std::endl;
+ break;
+ }
+#endif
+
+ if(boost::geometry::area(mp_i) > 0)
+ {
+ std::ostringstream out;
+ out << j << " intersection(" << genesis[a] << " , " << genesis[b] << ")";
+ genesis[poly_list.size()] = out.str();
+ poly_list.push_back(mp_i);
+ }
+ if(boost::geometry::area(mp_d) > 0)
+ {
+ std::ostringstream out;
+ out << j << " difference(" << genesis[a] << " - " << genesis[b] << ")";
+ genesis[poly_list.size()] = out.str();
+ poly_list.push_back(mp_d);
+ }
+ if(boost::geometry::area(mp_e) > 0)
+ {
+ std::ostringstream out;
+ out << j << " difference(" << genesis[b] << " - " << genesis[a] << ")";
+ genesis[poly_list.size()] = out.str();
+ poly_list.push_back(mp_e);
+ }
+ }
+
+ std::cout << "FINISHED " << t.elapsed() << std::endl;
+
+ }
+ catch(std::exception const& e)
+ {
+ std::cout << e.what()
+ << " in " << operation << " at " << pj << std::endl
+ << wkt1 << std::endl
+ << wkt2 << std::endl
+ << std::endl;
+ }
+ catch(...)
+ {
+ std::cout << "Other exception" << std::endl;
+ }
+
+ return 0;
+}
diff --git a/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.cpp b/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.cpp
index e54260f3be..737f22c2e2 100644
--- a/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.cpp
+++ b/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.cpp
@@ -28,16 +28,9 @@
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/multi/geometries/multi_geometries.hpp>
-#include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
-#include <boost/geometry/extensions/algorithms/midpoints.hpp>
-
-#include <boost/geometry/extensions/algorithms/buffer/buffer_inserter.hpp>
-
-#include <boost/geometry/multi/multi.hpp> // TODO: more specific
-#include <boost/geometry/extensions/algorithms/buffer/multi_buffer_inserter.hpp>
-
-#include <boost/geometry/extensions/strategies/buffer.hpp>
+#include <boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp>
+#include <boost/geometry/strategies/buffer.hpp>
#include <common/common_settings.hpp>
#include <common/make_square_polygon.hpp>
@@ -45,8 +38,8 @@
struct buffer_settings : public common_settings
{
- int join_code;
- double distance;
+ int join_code;
+ double distance;
};
namespace bg = boost::geometry;
@@ -89,28 +82,28 @@ bool verify(std::string const& caseid, MultiPolygon const& mp, MultiPolygon cons
{
bool result = true;
- // Area of buffer must be larger than of original polygon
- BOOST_AUTO(area_mp, bg::area(mp));
- BOOST_AUTO(area_buf, bg::area(buffer));
-
- if (area_buf < area_mp)
- {
- result = false;
- }
-
- if (result)
- {
- typedef boost::range_value<MultiPolygon const>::type polygon_type;
- BOOST_FOREACH(polygon_type const& polygon, mp)
- {
- typename bg::point_type<polygon_type>::type point;
- bg::point_on_border(point, polygon);
- if (! bg::within(point, buffer))
- {
- result = false;
- }
- }
- }
+ // Area of buffer must be larger than of original polygon
+ BOOST_AUTO(area_mp, bg::area(mp));
+ BOOST_AUTO(area_buf, bg::area(buffer));
+
+ if (area_buf < area_mp)
+ {
+ result = false;
+ }
+
+ if (result)
+ {
+ typedef typename boost::range_value<MultiPolygon const>::type polygon_type;
+ BOOST_FOREACH(polygon_type const& polygon, mp)
+ {
+ typename bg::point_type<polygon_type>::type point;
+ bg::point_on_border(point, polygon);
+ if (! bg::within(point, buffer))
+ {
+ result = false;
+ }
+ }
+ }
bool svg = settings.svg;
bool wkt = settings.wkt;
@@ -123,10 +116,10 @@ bool verify(std::string const& caseid, MultiPolygon const& mp, MultiPolygon cons
wkt = true;
}
- if (svg || wkt)
- {
- //std::cout << caseid << std::endl;
- }
+ if (svg || wkt)
+ {
+ //std::cout << caseid << std::endl;
+ }
if (svg)
{
@@ -190,48 +183,53 @@ bool test_buffer(MultiPolygon& result, int& index,
bg::unique(mp);
bg::unique(mp);
bg::correct(mp);
- result = mp;
+ result = mp;
typedef typename bg::coordinate_type<MultiPolygon>::type coordinate_type;
typedef typename bg::point_type<MultiPolygon>::type point_type;
- typedef bg::strategy::buffer::distance_assymetric<coordinate_type> distance_strategy_type;
+ typedef bg::strategy::buffer::distance_asymmetric<coordinate_type> distance_strategy_type;
distance_strategy_type distance_strategy(settings.distance, settings.distance);
- typedef bg::strategy::buffer::join_round<point_type, point_type> join_strategy_type;
- join_strategy_type join_strategy;
-
typedef typename boost::range_value<MultiPolygon>::type polygon_type;
MultiPolygon buffered;
std::ostringstream out;
out << "recursive_polygons_buffer_" << index++ << "_" << level;
- try
- {
- switch(settings.join_code)
- {
- case 1 :
- bg::buffer_inserter<polygon_type>(mp, std::back_inserter(buffered),
- distance_strategy,
- bg::strategy::buffer::join_round<point_type, point_type>());
- break;
- case 2 :
- bg::buffer_inserter<polygon_type>(mp, std::back_inserter(buffered),
- distance_strategy,
- bg::strategy::buffer::join_miter<point_type, point_type>());
- break;
- default :
- return false;
- }
- }
+ bg::strategy::buffer::end_round end_strategy;
+ bg::strategy::buffer::point_circle point_strategy;
+ bg::strategy::buffer::side_straight side_strategy;
+ bg::strategy::buffer::join_round join_round_strategy(100); // Compatible with unit tests
+ bg::strategy::buffer::join_miter join_miter_strategy;
+
+ try
+ {
+ switch(settings.join_code)
+ {
+ case 1 :
+ bg::buffer(mp, buffered,
+ distance_strategy, side_strategy,
+ join_round_strategy,
+ end_strategy, point_strategy);
+ break;
+ case 2 :
+ bg::buffer(mp, buffered,
+ distance_strategy, side_strategy,
+ join_miter_strategy,
+ end_strategy, point_strategy);
+ break;
+ default :
+ return false;
+ }
+ }
catch(std::exception const& e)
{
- MultiPolygon empty;
- std::cout << out.str() << std::endl;
+ MultiPolygon empty;
+ std::cout << out.str() << std::endl;
std::cout << "Exception " << e.what() << std::endl;
- verify(out.str(), mp, empty, settings);
- return false;
+ verify(out.str(), mp, empty, settings);
+ return false;
}
@@ -309,14 +307,14 @@ int main(int argc, char** argv)
if (varmap.count("help")
|| (form != "box" && form != "triangle")
|| (join != "round" && join != "miter")
- )
+ )
{
std::cout << description << std::endl;
return 1;
}
settings.triangular = form != "box";
- settings.join_code = join == "round" ? 1 : 2;
+ settings.join_code = join == "round" ? 1 : 2;
if (ccw && open)
{
diff --git a/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.sln b/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.sln
deleted file mode 100644
index 6e8c2574f1..0000000000
--- a/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.sln
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_polygons_buffer", "recursive_polygons_buffer.vcxproj", "{02C9CFA4-C625-55CA-1C8E-2B96EBB09FE8}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {02C9CFA4-C625-55CA-1C8E-2B96EBB09FE8}.Debug|Win32.ActiveCfg = Debug|Win32
- {02C9CFA4-C625-55CA-1C8E-2B96EBB09FE8}.Debug|Win32.Build.0 = Debug|Win32
- {02C9CFA4-C625-55CA-1C8E-2B96EBB09FE8}.Release|Win32.ActiveCfg = Release|Win32
- {02C9CFA4-C625-55CA-1C8E-2B96EBB09FE8}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.vcproj b/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.vcproj
deleted file mode 100644
index 3cc4a384f6..0000000000
--- a/libs/geometry/test/robustness/overlay/buffer/recursive_polygons_buffer.vcproj
+++ /dev/null
@@ -1,222 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="recursive_polygons_buffer"
- RootNamespace="recursive_polygons_buffer"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\recursive_polygons_buffer"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;.;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="2"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\recursive_polygons_buffer"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;.;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="program options"
- >
- <File
- RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\split.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\recursive_polygons_buffer.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.cpp b/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.cpp
index 3e5e88bd32..8e057471da 100644
--- a/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.cpp
+++ b/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.cpp
@@ -28,7 +28,7 @@
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/multi/geometries/multi_geometries.hpp>
-#include <boost/geometry/extensions/io/svg/svg_mapper.hpp>
+#include <boost/geometry/io/svg/svg_mapper.hpp>
#include <boost/geometry/extensions/algorithms/midpoints.hpp>
#include <common/common_settings.hpp>
@@ -277,7 +277,7 @@ bool verify(std::string const& caseid, MultiPolygon const& mp, Linestring const&
length_type len_intersection = bg::length(intersection);
if (! bg::math::equals(len_input, len_difference + len_intersection))
{
- std::cout << "Input: " << len_input
+ std::cout << "Input: " << len_input
<< " difference: " << len_difference
<< " intersection: " << len_intersection
<< std::endl;
diff --git a/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.sln b/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.sln
deleted file mode 100644
index 5865e1c361..0000000000
--- a/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.sln
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_polygons_linear_areal", "recursive_polygons_linear_areal.vcproj", "{1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}.Debug|Win32.ActiveCfg = Debug|Win32
- {1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}.Debug|Win32.Build.0 = Debug|Win32
- {1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}.Release|Win32.ActiveCfg = Release|Win32
- {1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.vcproj b/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.vcproj
deleted file mode 100644
index 14e8dd6fdb..0000000000
--- a/libs/geometry/test/robustness/overlay/linear_areal/recursive_polygons_linear_areal.vcproj
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="recursive_polygons_linear_areal"
- ProjectGUID="{1E269699-9450-4DD6-ACC3-C6A9AD2FC6E0}"
- RootNamespace="recursive_polygons_linear_areal"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\recursive_polygons_linear_areal"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../../../..;.;../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="2"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalLibraryDirectories=""
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\recursive_polygons_linear_areal"
- ConfigurationType="1"
- InheritedPropertySheets="..\..\..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="0"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../../../..;.;../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
- RuntimeLibrary="0"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="program options"
- >
- <File
- RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\split.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
- >
- </File>
- <File
- RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
- >
- </File>
- </Filter>
- <File
- RelativePath=".\recursive_polygons_linear_areal.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/strategies/Jamfile.v2 b/libs/geometry/test/strategies/Jamfile.v2
index 889ce66a9b..d32c107373 100644
--- a/libs/geometry/test/strategies/Jamfile.v2
+++ b/libs/geometry/test/strategies/Jamfile.v2
@@ -1,8 +1,14 @@
# 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.
+# Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+# Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+# Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+#
+# This file was modified by Oracle on 2014.
+# Modifications copyright (c) 2014, Oracle and/or its affiliates.
+#
+# Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+# Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
#
# Use, modification and distribution is subject to the Boost Software License,
# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -11,11 +17,18 @@
test-suite boost-geometry-strategies
:
[ run cross_track.cpp ]
+ [ run crossings_multiply.cpp ]
+ [ run distance_default_result.cpp ]
+ [ run franklin.cpp ]
[ run haversine.cpp ]
+ [ run point_in_box.cpp ]
[ run projected_point.cpp ]
+ [ run projected_point_ax.cpp ]
[ run pythagoras.cpp ]
+ [ run pythagoras_point_box.cpp ]
[ run spherical_side.cpp ]
+ [ run segment_intersection_collinear.cpp ]
[ run transform_cs.cpp ]
[ run transformer.cpp ]
- [ run within.cpp ]
+ [ run winding.cpp ]
;
diff --git a/libs/geometry/test/strategies/cross_track.cpp b/libs/geometry/test/strategies/cross_track.cpp
index 38840dc725..1b02c88357 100644
--- a/libs/geometry/test/strategies/cross_track.cpp
+++ b/libs/geometry/test/strategies/cross_track.cpp
@@ -1,9 +1,14 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
-// 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.
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014, 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.
@@ -15,6 +20,8 @@
#include <geometry_test_common.hpp>
+#include <boost/core/ignore_unused.hpp>
+
#include <boost/geometry/io/wkt/read.hpp>
#include <boost/geometry/algorithms/assign.hpp>
@@ -29,35 +36,54 @@
#include <boost/geometry/geometries/segment.hpp>
-// This test is GIS oriented.
+// This test is GIS oriented.
template <typename Point, typename LatitudePolicy>
void test_distance(
- typename bg::coordinate_type<Point>::type const& lon1,
+ typename bg::coordinate_type<Point>::type const& lon1,
typename bg::coordinate_type<Point>::type const& lat1,
- typename bg::coordinate_type<Point>::type const& lon2,
+ typename bg::coordinate_type<Point>::type const& lon2,
typename bg::coordinate_type<Point>::type const& lat2,
- typename bg::coordinate_type<Point>::type const& lon3,
+ typename bg::coordinate_type<Point>::type const& lon3,
typename bg::coordinate_type<Point>::type const& lat3,
- typename bg::coordinate_type<Point>::type const& radius,
- typename bg::coordinate_type<Point>::type const& expected,
+ typename bg::coordinate_type<Point>::type const& radius,
+ typename bg::coordinate_type<Point>::type const& expected,
typename bg::coordinate_type<Point>::type const& tolerance)
{
typedef bg::strategy::distance::cross_track
<
- Point,
- Point
+ typename bg::coordinate_type<Point>::type
> strategy_type;
+
typedef typename bg::strategy::distance::services::return_type
<
- strategy_type
+ strategy_type,
+ Point,
+ Point
>::type return_type;
+ {
+ // compile-check if there is a strategy for this type
+ typedef typename bg::strategy::distance::services::default_strategy
+ <
+ bg::point_tag, bg::segment_tag, Point, Point
+ >::type cross_track_strategy_type;
+
+ typedef typename bg::strategy::distance::services::default_strategy
+ <
+ bg::segment_tag, bg::point_tag, Point, Point
+ >::type reversed_tags_cross_track_strategy_type;
+
+ boost::ignore_unused<cross_track_strategy_type,
+ reversed_tags_cross_track_strategy_type>();
+ }
+
+
BOOST_CONCEPT_ASSERT
(
- (bg::concept::PointSegmentDistanceStrategy<strategy_type>)
+ (bg::concept::PointSegmentDistanceStrategy<strategy_type, Point, Point>)
);
@@ -72,6 +98,10 @@ void test_distance(
BOOST_CHECK_CLOSE(radius * d, expected, tolerance);
+ // The strategy should return the same result if we reverse the parameters
+ d = strategy.apply(p1, p3, p2);
+ BOOST_CHECK_CLOSE(radius * d, expected, tolerance);
+
// Test specifying radius explicitly
strategy_type strategy_radius(radius);
d = strategy_radius.apply(p1, p2, p3);
@@ -124,7 +154,7 @@ void test_all()
{
typename bg::coordinate_type<Point>::type const average_earth_radius = 6372795.0;
- // distance (Paris <-> Amsterdam/Barcelona),
+ // distance (Paris <-> Amsterdam/Barcelona),
// with coordinates rounded as below ~87 km
// is equal to distance (Paris <-> Barcelona/Amsterdam)
typename bg::coordinate_type<Point>::type const p_to_ab = 86.798321 * 1000.0;
diff --git a/libs/geometry/test/strategies/cross_track.vcproj b/libs/geometry/test/strategies/cross_track.vcproj
deleted file mode 100644
index e51666fca4..0000000000
--- a/libs/geometry/test/strategies/cross_track.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="cross_track"
- ProjectGUID="{4CE6F112-9EA1-4D7E-9AC6-907E77895263}"
- RootNamespace="cross_track"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\cross_track"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\cross_track"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\cross_track.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/strategies/crossings_multiply.cpp b/libs/geometry/test/strategies/crossings_multiply.cpp
new file mode 100644
index 0000000000..f57d383f10
--- /dev/null
+++ b/libs/geometry/test/strategies/crossings_multiply.cpp
@@ -0,0 +1,87 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// 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)
+
+
+#include <strategies/test_within.hpp>
+
+
+template <typename Point>
+void test_all()
+{
+ typedef bg::model::polygon<Point> polygon;
+
+ std::string const box = "POLYGON((0 0,0 2,2 2,2 0,0 0))";
+ std::string const triangle = "POLYGON((0 0,0 4,6 0,0 0))";
+ std::string const with_hole = "POLYGON((0 0,0 3,3 3,3 0,0 0),(1 1,2 1,2 2,1 2,1 1))";
+
+ bg::strategy::within::crossings_multiply<Point> s;
+
+
+ test_geometry<Point, polygon>("b1", "POINT(1 1)", box, s, true);
+ test_geometry<Point, polygon>("b2", "POINT(3 3)", box, s, false);
+
+ // Test ALL corners (officialy false but some strategies might answer true)
+ test_geometry<Point, polygon>("b3a", "POINT(0 0)", box, s, false);
+ test_geometry<Point, polygon>("b3b", "POINT(0 2)", box, s, false);
+ test_geometry<Point, polygon>("b3c", "POINT(2 2)", box, s, false);
+ test_geometry<Point, polygon>("b3d", "POINT(2 0)", box, s, false);
+
+ // Test ALL sides (officialy false but some strategies might answer true)
+ test_geometry<Point, polygon>("b4a", "POINT(0 1)", box, s, false);
+ test_geometry<Point, polygon>("b4b", "POINT(1 2)", box, s, true); // different
+ test_geometry<Point, polygon>("b4c", "POINT(2 1)", box, s, false);
+ test_geometry<Point, polygon>("b4d", "POINT(1 0)", box, s, false);
+
+
+ test_geometry<Point, polygon>("t1", "POINT(1 1)", triangle, s, true);
+ test_geometry<Point, polygon>("t2", "POINT(3 3)", triangle, s, false);
+
+ test_geometry<Point, polygon>("t3a", "POINT(0 0)", triangle, s, false);
+ test_geometry<Point, polygon>("t3b", "POINT(0 4)", triangle, s, true); // diff
+ test_geometry<Point, polygon>("t3c", "POINT(5 0)", triangle, s, false);
+
+ test_geometry<Point, polygon>("t4a", "POINT(0 2)", triangle, s, false);
+ test_geometry<Point, polygon>("t4b", "POINT(3 2)", triangle, s, false);
+ test_geometry<Point, polygon>("t4c", "POINT(2 0)", triangle, s, false);
+
+
+ test_geometry<Point, polygon>("h1", "POINT(0.5 0.5)", with_hole, s, true);
+ test_geometry<Point, polygon>("h2a", "POINT(1.5 1.5)", with_hole, s, false);
+ test_geometry<Point, polygon>("h2b", "POINT(5 5)", with_hole, s, false);
+
+ test_geometry<Point, polygon>("h3a", "POINT(1 1)", with_hole, s, true); // diff
+ test_geometry<Point, polygon>("h3b", "POINT(2 2)", with_hole, s, false);
+ test_geometry<Point, polygon>("h3c", "POINT(0 0)", with_hole, s, false);
+
+ test_geometry<Point, polygon>("h4a", "POINT(1 1.5)", with_hole, s, false);
+ test_geometry<Point, polygon>("h4b", "POINT(1.5 2)", with_hole, s, false);
+
+ // Lying ON (one of the sides of) interior ring
+ test_geometry<Point, polygon>("#77-1", "POINT(6 3.5)",
+ "POLYGON((5 3,5 4,4 4,4 5,3 5,3 6,5 6,5 5,7 5,7 6,8 6,8 5,9 5,9 2,8 2,8 1,7 1,7 2,5 2,5 3),(6 3,8 3,8 4,6 4,6 3))",
+ s, false);
+}
+
+
+int test_main(int, char* [])
+{
+ test_all<bg::model::point<float, 2, bg::cs::cartesian> >();
+ test_all<bg::model::point<double, 2, bg::cs::cartesian> >();
+
+#if defined(HAVE_TTMATH)
+ test_all<bg::model::point<ttmath_big, 2, bg::cs::cartesian> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/strategies/distance_default_result.cpp b/libs/geometry/test/strategies/distance_default_result.cpp
new file mode 100644
index 0000000000..40315d207c
--- /dev/null
+++ b/libs/geometry/test/strategies/distance_default_result.cpp
@@ -0,0 +1,270 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_distance_default_result
+#endif
+
+#include <cstddef>
+#include <iostream>
+
+#include <boost/test/included/unit_test.hpp>
+
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/geometry/util/calculation_type.hpp>
+
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/segment.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+#include <boost/geometry/strategies/strategies.hpp>
+#include <boost/geometry/strategies/default_distance_result.hpp>
+#include <boost/geometry/strategies/default_comparable_distance_result.hpp>
+
+#if defined(HAVE_TTMATH)
+#include <boost/geometry/extensions/contrib/ttmath_stub.hpp>
+#endif
+
+namespace bg = ::boost::geometry;
+
+
+template <typename DefaultResult, typename ExpectedResult>
+struct assert_equal_types
+{
+ assert_equal_types()
+ {
+ static const bool are_same =
+ boost::is_same<DefaultResult, ExpectedResult>::type::value;
+
+ BOOST_MPL_ASSERT_MSG((are_same),
+ WRONG_DEFAULT_DISTANCE_RESULT,
+ (types<DefaultResult, ExpectedResult>));
+ }
+};
+
+//=========================================================================
+
+template
+<
+ typename Geometry1,
+ typename Geometry2,
+ typename ExpectedResult,
+ typename ExpectedComparableResult
+>
+inline void test_distance_result()
+{
+ typedef typename bg::default_distance_result
+ <
+ Geometry1, Geometry2
+ >::type result12;
+
+ typedef typename bg::default_distance_result
+ <
+ Geometry2, Geometry1
+ >::type result21;
+
+ typedef typename bg::default_comparable_distance_result
+ <
+ Geometry1, Geometry2
+ >::type comparable_result12;
+
+ typedef typename bg::default_comparable_distance_result
+ <
+ Geometry2, Geometry1
+ >::type comparable_result21;
+
+ assert_equal_types<result12, ExpectedResult>();
+ assert_equal_types<result21, ExpectedResult>();
+ assert_equal_types<comparable_result12, ExpectedComparableResult>();
+ assert_equal_types<comparable_result21, ExpectedComparableResult>();
+}
+
+//=========================================================================
+
+template
+<
+ typename CoordinateType1,
+ typename CoordinateType2,
+ std::size_t Dimension,
+ typename CoordinateSystem,
+ typename ExpectedResult,
+ typename ExpectedComparableResult = ExpectedResult
+>
+struct test_distance_result_segment
+{
+ test_distance_result_segment()
+ {
+ typedef typename bg::model::point
+ <
+ CoordinateType1, Dimension, CoordinateSystem
+ > point1;
+
+ typedef typename bg::model::point
+ <
+ CoordinateType2, Dimension, CoordinateSystem
+ > point2;
+
+ typedef typename bg::model::segment<point1> segment1;
+ typedef typename bg::model::segment<point2> segment2;
+
+ test_distance_result
+ <
+ point1, point2, ExpectedResult, ExpectedComparableResult
+ >();
+
+ test_distance_result
+ <
+ point1, segment2, ExpectedResult, ExpectedComparableResult
+ >();
+
+ test_distance_result
+ <
+ point2, segment1, ExpectedResult, ExpectedComparableResult
+ >();
+ }
+};
+
+//=========================================================================
+
+template
+<
+ typename CoordinateType1,
+ typename CoordinateType2,
+ std::size_t Dimension,
+ typename ExpectedResult,
+ typename ExpectedComparableResult = ExpectedResult
+>
+struct test_distance_result_box
+{
+ test_distance_result_box()
+ {
+ typedef typename bg::model::point
+ <
+ CoordinateType1, Dimension, bg::cs::cartesian
+ > point1;
+
+ typedef typename bg::model::point
+ <
+ CoordinateType2, Dimension, bg::cs::cartesian
+ > point2;
+
+ typedef typename bg::model::box<point1> box1;
+ typedef typename bg::model::box<point2> box2;
+
+ test_distance_result
+ <
+ point1, box2, ExpectedResult, ExpectedComparableResult
+ >();
+
+ test_distance_result
+ <
+ point2, box1, ExpectedResult, ExpectedComparableResult
+ >();
+
+ test_distance_result
+ <
+ box1, box2, ExpectedResult, ExpectedComparableResult
+ >();
+ }
+};
+
+//=========================================================================
+
+template <std::size_t D, typename CS>
+inline void test_segment_all()
+{
+#if defined(HAVE_TTMATH)
+ typedef ttmath_big tt;
+ typedef bg::util::detail::default_integral::type default_integral;
+#endif
+ typedef typename boost::mpl::if_
+ <
+ typename boost::is_same<CS, bg::cs::cartesian>::type,
+ double,
+ float
+ >::type float_return_type;
+
+ test_distance_result_segment<short, short, D, CS, double>();
+ test_distance_result_segment<int, int, D, CS, double>();
+ test_distance_result_segment<int, long, D, CS, double>();
+ test_distance_result_segment<long, long, D, CS, double>();
+
+ test_distance_result_segment<int, float, D, CS, float_return_type>();
+ test_distance_result_segment<float, float, D, CS, float_return_type>();
+
+ test_distance_result_segment<int, double, D, CS, double>();
+ test_distance_result_segment<double, int, D, CS, double>();
+ test_distance_result_segment<float, double, D, CS, double>();
+ test_distance_result_segment<double, float, D, CS, double>();
+ test_distance_result_segment<double, double, D, CS, double>();
+
+#if defined(HAVE_TTMATH)
+ test_distance_result_segment<tt, int, D, CS, tt>();
+ test_distance_result_segment<tt, default_integral, D, CS, tt>();
+
+ test_distance_result_segment<tt, float, D, CS, tt>();
+ test_distance_result_segment<tt, double, D, CS, tt>();
+ test_distance_result_segment<tt, tt, D, CS, tt>();
+#endif
+}
+
+//=========================================================================
+
+template <std::size_t D>
+inline void test_box_all()
+{
+#if defined(HAVE_TTMATH)
+ typedef ttmath_big tt;
+#endif
+ typedef bg::util::detail::default_integral::type default_integral;
+
+ test_distance_result_box<short, short, D, double, default_integral>();
+ test_distance_result_box<int, int, D, double, default_integral>();
+ test_distance_result_box<int, long, D, double, default_integral>();
+ test_distance_result_box<long, long, D, double, default_integral>();
+
+ test_distance_result_box<int, float, D, double>();
+ test_distance_result_box<float, float, D, double>();
+
+ test_distance_result_box<int, double, D, double>();
+ test_distance_result_box<double, int, D, double>();
+ test_distance_result_box<float, double, D, double>();
+ test_distance_result_box<double, float, D, double>();
+ test_distance_result_box<double, double, D, double>();
+
+#if defined(HAVE_TTMATH)
+ test_distance_result_box<tt, int, D, tt>();
+ test_distance_result_box<tt, default_integral, D, tt>();
+
+ test_distance_result_box<tt, float, D, tt>();
+ test_distance_result_box<tt, double, D, tt>();
+ test_distance_result_box<tt, tt, D, tt>();
+#endif
+}
+
+//=========================================================================
+
+BOOST_AUTO_TEST_CASE( test_point_point_or_point_segment )
+{
+ test_segment_all<2, bg::cs::cartesian>();
+ test_segment_all<3, bg::cs::cartesian>();
+ test_segment_all<4, bg::cs::cartesian>();
+ test_segment_all<2, bg::cs::spherical_equatorial<bg::degree> >();
+}
+
+BOOST_AUTO_TEST_CASE( test_point_box_or_box )
+{
+ test_box_all<2>();
+ test_box_all<3>();
+ test_box_all<4>();
+}
diff --git a/libs/geometry/test/strategies/franklin.cpp b/libs/geometry/test/strategies/franklin.cpp
new file mode 100644
index 0000000000..6a6c5fe17d
--- /dev/null
+++ b/libs/geometry/test/strategies/franklin.cpp
@@ -0,0 +1,86 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// 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)
+
+
+#include <strategies/test_within.hpp>
+
+
+template <typename Point>
+void test_all()
+{
+ typedef bg::model::polygon<Point> polygon;
+
+ std::string const box = "POLYGON((0 0,0 2,2 2,2 0,0 0))";
+ std::string const triangle = "POLYGON((0 0,0 4,6 0,0 0))";
+ std::string const with_hole = "POLYGON((0 0,0 3,3 3,3 0,0 0),(1 1,2 1,2 2,1 2,1 1))";
+
+ bg::strategy::within::franklin<Point> s;
+
+ test_geometry<Point, polygon>("b1", "POINT(1 1)", box, s, true);
+ test_geometry<Point, polygon>("b2", "POINT(3 3)", box, s, false);
+
+ // Test ALL corners (officialy false but some strategies might answer true)
+ test_geometry<Point, polygon>("b3a", "POINT(0 0)", box, s, true); // different
+ test_geometry<Point, polygon>("b3b", "POINT(0 2)", box, s, false);
+ test_geometry<Point, polygon>("b3c", "POINT(2 2)", box, s, false);
+ test_geometry<Point, polygon>("b3d", "POINT(2 0)", box, s, false);
+
+ // Test ALL sides (officialy false but some strategies might answer true)
+ test_geometry<Point, polygon>("b4a", "POINT(0 1)", box, s, true); // different
+ test_geometry<Point, polygon>("b4b", "POINT(1 2)", box, s, false);
+ test_geometry<Point, polygon>("b4c", "POINT(2 1)", box, s, false);
+ test_geometry<Point, polygon>("b4d", "POINT(1 0)", box, s, true); // different
+
+
+ test_geometry<Point, polygon>("t1", "POINT(1 1)", triangle, s, true);
+ test_geometry<Point, polygon>("t2", "POINT(3 3)", triangle, s, false);
+
+ test_geometry<Point, polygon>("t3a", "POINT(0 0)", triangle, s, true); // diff
+ test_geometry<Point, polygon>("t3b", "POINT(0 4)", triangle, s, false);
+ test_geometry<Point, polygon>("t3c", "POINT(5 0)", triangle, s, true); // diff
+
+ test_geometry<Point, polygon>("t4a", "POINT(0 2)", triangle, s, true); // diff
+ test_geometry<Point, polygon>("t4b", "POINT(3 2)", triangle, s, false);
+ test_geometry<Point, polygon>("t4c", "POINT(2 0)", triangle, s, true); // diff
+
+
+ test_geometry<Point, polygon>("h1", "POINT(0.5 0.5)", with_hole, s, true);
+ test_geometry<Point, polygon>("h2a", "POINT(1.5 1.5)", with_hole, s, false);
+ test_geometry<Point, polygon>("h2b", "POINT(5 5)", with_hole, s, false);
+
+ test_geometry<Point, polygon>("h3a", "POINT(1 1)", with_hole, s, false);
+ test_geometry<Point, polygon>("h3b", "POINT(2 2)", with_hole, s, true); // diff
+ test_geometry<Point, polygon>("h3c", "POINT(0 0)", with_hole, s, true); // diff
+
+ test_geometry<Point, polygon>("h4a", "POINT(1 1.5)", with_hole, s, false);
+ test_geometry<Point, polygon>("h4b", "POINT(1.5 2)", with_hole, s, true); // diff
+
+ // Lying ON (one of the sides of) interior ring
+ test_geometry<Point, polygon>("#77-1", "POINT(6 3.5)",
+ "POLYGON((5 3,5 4,4 4,4 5,3 5,3 6,5 6,5 5,7 5,7 6,8 6,8 5,9 5,9 2,8 2,8 1,7 1,7 2,5 2,5 3),(6 3,8 3,8 4,6 4,6 3))",
+ s, false);
+}
+
+
+int test_main(int, char* [])
+{
+ test_all<bg::model::point<float, 2, bg::cs::cartesian> >();
+ test_all<bg::model::point<double, 2, bg::cs::cartesian> >();
+
+#if defined(HAVE_TTMATH)
+ test_all<bg::model::point<ttmath_big, 2, bg::cs::cartesian> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/strategies/haversine.cpp b/libs/geometry/test/strategies/haversine.cpp
index 9468810b82..9aaae3386a 100644
--- a/libs/geometry/test/strategies/haversine.cpp
+++ b/libs/geometry/test/strategies/haversine.cpp
@@ -17,6 +17,7 @@
#include <boost/concept/requires.hpp>
#include <boost/concept_check.hpp>
+#include <boost/core/ignore_unused.hpp>
#include <boost/geometry/algorithms/assign.hpp>
#include <boost/geometry/strategies/spherical/distance_haversine.hpp>
@@ -37,25 +38,17 @@ double const average_earth_radius = 6372795.0;
template <typename Point, typename LatitudePolicy>
struct test_distance
{
- typedef bg::strategy::distance::haversine
- <
- Point,
- Point
- > haversine_type;
-
- BOOST_CONCEPT_ASSERT( (bg::concept::PointDistanceStrategy<haversine_type>) );
-
-
- typedef typename bg::strategy::distance::services::return_type<haversine_type>::type return_type;
+ typedef bg::strategy::distance::haversine<double> haversine_type;
+ typedef typename bg::strategy::distance::services::return_type<haversine_type, Point, Point>::type return_type;
BOOST_CONCEPT_ASSERT
(
- (bg::concept::PointDistanceStrategy<haversine_type>)
+ (bg::concept::PointDistanceStrategy<haversine_type, Point, Point>)
);
static void test(double lon1, double lat1, double lon2, double lat2,
- double radius, return_type expected, double tolerance)
+ double radius, double expected, double tolerance)
{
haversine_type strategy(radius);
@@ -98,7 +91,12 @@ void test_services()
{
// Compile-check if there is a strategy for this type
- typedef typename services::default_strategy<bg::point_tag, P1, P2>::type haversine_strategy_type;
+ typedef typename services::default_strategy
+ <
+ bg::point_tag, bg::point_tag, P1, P2
+ >::type haversine_strategy_type;
+
+ boost::ignore_unused<haversine_strategy_type>();
}
P1 p1;
@@ -117,21 +115,15 @@ void test_services()
// 1: normal, calculate distance:
- typedef bgsd::haversine<P1, P2, CalculationType> strategy_type;
- typedef typename bgsd::services::return_type<strategy_type>::type return_type;
+ typedef bgsd::haversine<double, CalculationType> strategy_type;
+ typedef typename bgsd::services::return_type<strategy_type, P1, P2>::type return_type;
strategy_type strategy(average_earth_radius);
return_type result = strategy.apply(p1, p2);
BOOST_CHECK_CLOSE(result, return_type(expected), 0.001);
- // 2: "similar" to construct a similar strategy (similar but with other template-parameters) for, e.g., the reverse P2/P1
- // 2a: similar_type:
- typedef typename services::similar_type<strategy_type, P2, P1>::type similar_type;
- // 2b: get_similar
- similar_type similar = services::get_similar<strategy_type, P2, P1>::apply(strategy);
-
- //result = similar.apply(p1, p2); // should NOT compile because p1/p2 should also be reversed here
- result = similar.apply(p2, p1);
+ // 2: the strategy should return the same result if we reverse parameters
+ result = strategy.apply(p2, p1);
BOOST_CHECK_CLOSE(result, return_type(expected), 0.001);
@@ -149,14 +141,14 @@ void test_services()
// First the result of the comparable strategy
return_type c_result = comparable.apply(p1, p2);
// Second the comparable result of the expected distance
- return_type c_expected = services::result_from_distance<comparable_type>::apply(comparable, expected);
+ return_type c_expected = services::result_from_distance<comparable_type, P1, P2>::apply(comparable, expected);
// And that one should be equa.
BOOST_CHECK_CLOSE(c_result, return_type(c_expected), 0.001);
// 4: the comparable_type should have a distance_strategy_constructor as well,
// knowing how to compare something with a fixed distance
- return_type c_dist_lower = services::result_from_distance<comparable_type>::apply(comparable, expected_lower);
- return_type c_dist_higher = services::result_from_distance<comparable_type>::apply(comparable, expected_higher);
+ return_type c_dist_lower = services::result_from_distance<comparable_type, P1, P2>::apply(comparable, expected_lower);
+ return_type c_dist_higher = services::result_from_distance<comparable_type, P1, P2>::apply(comparable, expected_higher);
// If this is the case:
BOOST_CHECK(c_dist_lower < c_result && c_result < c_dist_higher);
@@ -166,8 +158,8 @@ void test_services()
BOOST_CHECK_CLOSE(c_check, expected, 0.001);
// This should also be the case
- return_type dist_lower = services::result_from_distance<strategy_type>::apply(strategy, expected_lower);
- return_type dist_higher = services::result_from_distance<strategy_type>::apply(strategy, expected_higher);
+ return_type dist_lower = services::result_from_distance<strategy_type, P1, P2>::apply(strategy, expected_lower);
+ return_type dist_higher = services::result_from_distance<strategy_type, P1, P2>::apply(strategy, expected_higher);
BOOST_CHECK(dist_lower < result && result < dist_higher);
}
@@ -194,8 +186,8 @@ void time_compare_s(int const n)
template <typename P>
void time_compare(int const n)
{
- time_compare_s<P, bg::strategy::distance::haversine<P> >(n);
- time_compare_s<P, bg::strategy::distance::comparable::haversine<P> >(n);
+ time_compare_s<P, bg::strategy::distance::haversine<double> >(n);
+ time_compare_s<P, bg::strategy::distance::comparable::haversine<double> >(n);
}
#include <time.h>
@@ -266,8 +258,8 @@ int test_main(int, char* [])
<
bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> >,
bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> >,
- double,
- geographic_policy
+ double,
+ geographic_policy
>();
return 0;
diff --git a/libs/geometry/test/strategies/haversine.vcproj b/libs/geometry/test/strategies/haversine.vcproj
deleted file mode 100644
index 31ac6291da..0000000000
--- a/libs/geometry/test/strategies/haversine.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="haversine"
- ProjectGUID="{AA654B76-E384-4E10-B367-4F51B5D3E96F}"
- RootNamespace="haversine"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\haversine"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\haversine"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\haversine.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/strategies/point_in_box.cpp b/libs/geometry/test/strategies/point_in_box.cpp
new file mode 100644
index 0000000000..1c5e048798
--- /dev/null
+++ b/libs/geometry/test/strategies/point_in_box.cpp
@@ -0,0 +1,81 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// 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)
+
+
+#include <strategies/test_within.hpp>
+
+
+template <typename Point>
+void test_box_of(std::string const& wkt_point, std::string const& wkt_box,
+ bool expected_within, bool expected_covered_by)
+{
+ typedef bg::model::box<Point> box_type;
+
+ Point point;
+ box_type box;
+ bg::read_wkt(wkt_point, point);
+ bg::read_wkt(wkt_box, box);
+
+ bool detected_within = bg::within(point, box);
+ bool detected_covered_by = bg::covered_by(point, box);
+ BOOST_CHECK_EQUAL(detected_within, expected_within);
+ BOOST_CHECK_EQUAL(detected_covered_by, expected_covered_by);
+
+ // Also test with the non-default agnostic side version
+ namespace wi = bg::strategy::within;
+ wi::point_in_box_by_side<Point, box_type> within_strategy;
+ wi::point_in_box_by_side<Point, box_type, wi::decide_covered_by> covered_by_strategy;
+
+ detected_within = bg::within(point, box, within_strategy);
+ detected_covered_by = bg::covered_by(point, box, covered_by_strategy);
+ BOOST_CHECK_EQUAL(detected_within, expected_within);
+ BOOST_CHECK_EQUAL(detected_covered_by, expected_covered_by);
+
+ // We might exchange strategies between within/covered by.
+ // So the lines below might seem confusing, but are as intended
+ detected_within = bg::covered_by(point, box, within_strategy);
+ detected_covered_by = bg::within(point, box, covered_by_strategy);
+ BOOST_CHECK_EQUAL(detected_within, expected_within);
+ BOOST_CHECK_EQUAL(detected_covered_by, expected_covered_by);
+
+ // Finally we call the strategies directly
+ detected_within = within_strategy.apply(point, box);
+ detected_covered_by = covered_by_strategy.apply(point, box);
+ BOOST_CHECK_EQUAL(detected_within, expected_within);
+ BOOST_CHECK_EQUAL(detected_covered_by, expected_covered_by);
+}
+
+template <typename Point>
+void test_box()
+{
+ test_box_of<Point>("POINT(1 1)", "BOX(0 0,2 2)", true, true);
+ test_box_of<Point>("POINT(0 0)", "BOX(0 0,2 2)", false, true);
+ test_box_of<Point>("POINT(2 2)", "BOX(0 0,2 2)", false, true);
+ test_box_of<Point>("POINT(0 1)", "BOX(0 0,2 2)", false, true);
+ test_box_of<Point>("POINT(1 0)", "BOX(0 0,2 2)", false, true);
+ test_box_of<Point>("POINT(3 3)", "BOX(0 0,2 2)", false, false);
+}
+
+
+int test_main(int, char* [])
+{
+ test_box<bg::model::point<float, 2, bg::cs::cartesian> >();
+ test_box<bg::model::point<double, 2, bg::cs::cartesian> >();
+
+#if defined(HAVE_TTMATH)
+ test_box<bg::model::point<ttmath_big, 2, bg::cs::cartesian> >();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/strategies/projected_point.cpp b/libs/geometry/test/strategies/projected_point.cpp
index 11ea749a13..c2307eb41a 100644
--- a/libs/geometry/test/strategies/projected_point.cpp
+++ b/libs/geometry/test/strategies/projected_point.cpp
@@ -1,9 +1,15 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
-// 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.
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+// 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.
@@ -13,135 +19,16 @@
// http://www.boost.org/LICENSE_1_0.txt)
-#include <geometry_test_common.hpp>
-
-#include <boost/geometry/strategies/cartesian/distance_projected_point.hpp>
-#include <boost/geometry/strategies/concepts/distance_concept.hpp>
-
-#include <boost/geometry/io/wkt/read.hpp>
-
-
-#include <boost/geometry/geometries/point.hpp>
-#include <boost/geometry/geometries/adapted/c_array.hpp>
-#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
-#include <test_common/test_point.hpp>
-
-#ifdef HAVE_TTMATH
-# include <boost/geometry/extensions/contrib/ttmath_stub.hpp>
-#endif
-
-BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian)
-BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
-
-
-template <typename P, typename PS, typename CalculationType>
-void test_services()
-{
- PS p1, p2;
- bg::assign_values(p1, 0, 0);
- bg::assign_values(p2, 0, 4);
-
- P p;
- bg::assign_values(p, 2, 0);
-
- CalculationType const sqr_expected = 4;
- CalculationType const expected = 2;
-
-
- namespace bgsd = bg::strategy::distance;
- namespace services = bg::strategy::distance::services;
- // 1: normal, calculate distance:
+#include <strategies/test_projected_point.hpp>
- typedef bgsd::projected_point<P, PS, CalculationType> strategy_type;
-
- BOOST_CONCEPT_ASSERT( (bg::concept::PointSegmentDistanceStrategy<strategy_type>) );
-
- typedef typename services::return_type<strategy_type>::type return_type;
-
- strategy_type strategy;
- return_type result = strategy.apply(p, p1, p2);
- BOOST_CHECK_CLOSE(result, return_type(expected), 0.001);
-
- // 2: "similar" to construct a similar strategy (similar but with other template-parameters) for, e.g., the reverse P2/P1
- // 2a: similar_type:
- typedef typename services::similar_type<strategy_type, P, PS>::type similar_type;
- // 2b: get_similar
- similar_type similar = services::get_similar<strategy_type, P, PS>::apply(strategy);
-
- result = similar.apply(p, p1, p2);
- BOOST_CHECK_CLOSE(result, return_type(expected), 0.001);
-
-
- // 3: "comparable" to construct a "comparable strategy" for P1/P2
- // a "comparable strategy" is a strategy which does not calculate the exact distance, but
- // which returns results which can be mutually compared (e.g. avoid sqrt)
-
- // 3a: "comparable_type"
- typedef typename services::comparable_type<strategy_type>::type comparable_type;
-
- // 3b: "get_comparable"
- comparable_type comparable = bgsd::services::get_comparable<strategy_type>::apply(strategy);
-
- return_type c_result = comparable.apply(p, p1, p2);
- BOOST_CHECK_CLOSE(c_result, return_type(sqr_expected), 0.001);
-}
-
-
-template <typename P1, typename P2, typename T>
-void test_all_2d(std::string const& wkt_p,
- std::string const& wkt_sp1,
- std::string const& wkt_sp2,
- T expected_distance)
-{
- P1 p;
- P2 sp1, sp2;
- bg::read_wkt(wkt_p, p);
- bg::read_wkt(wkt_sp1, sp1);
- bg::read_wkt(wkt_sp2, sp2);
-
- {
- typedef bg::strategy::distance::projected_point
- <
- P1,
- P2
- > strategy_type;
-
- BOOST_CONCEPT_ASSERT
- (
- (bg::concept::PointSegmentDistanceStrategy<strategy_type>)
- );
-
- strategy_type strategy;
- typedef typename bg::strategy::distance::services::return_type<strategy_type>::type return_type;
- return_type d = strategy.apply(p, sp1, sp2);
- BOOST_CHECK_CLOSE(d, expected_distance, 0.001);
- }
-
- // Test combination with the comparable strategy
- {
- typedef bg::strategy::distance::projected_point
- <
- P1,
- P2,
- void,
- bg::strategy::distance::comparable::pythagoras<P1, P2>
- > strategy_type;
- strategy_type strategy;
- typedef typename bg::strategy::distance::services::return_type<strategy_type>::type return_type;
- return_type d = strategy.apply(p, sp1, sp2);
- T expected_squared_distance = expected_distance * expected_distance;
- BOOST_CHECK_CLOSE(d, expected_squared_distance, 0.01);
- }
-
-}
template <typename P1, typename P2>
void test_all_2d()
{
- test_all_2d<P1, P2>("POINT(1 1)", "POINT(0 0)", "POINT(2 3)", 0.27735203958327);
- test_all_2d<P1, P2>("POINT(2 2)", "POINT(1 4)", "POINT(4 1)", 0.5 * sqrt(2.0));
- test_all_2d<P1, P2>("POINT(6 1)", "POINT(1 4)", "POINT(4 1)", 2.0);
- test_all_2d<P1, P2>("POINT(1 6)", "POINT(1 4)", "POINT(4 1)", 2.0);
+ test_2d<P1, P2>("POINT(1 1)", "POINT(0 0)", "POINT(2 3)", 0.27735203958327);
+ test_2d<P1, P2>("POINT(2 2)", "POINT(1 4)", "POINT(4 1)", 0.5 * sqrt(2.0));
+ test_2d<P1, P2>("POINT(6 1)", "POINT(1 4)", "POINT(4 1)", 2.0);
+ test_2d<P1, P2>("POINT(1 6)", "POINT(1 4)", "POINT(4 1)", 2.0);
}
template <typename P>
diff --git a/libs/geometry/test/strategies/projected_point.vcproj b/libs/geometry/test/strategies/projected_point.vcproj
deleted file mode 100644
index 0964383bfa..0000000000
--- a/libs/geometry/test/strategies/projected_point.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="projected_point"
- ProjectGUID="{A27A46D2-AAD2-47F9-86E2-21FF849EF2D4}"
- RootNamespace="projected_point"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\projected_point"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\projected_point"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\projected_point.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/strategies/projected_point_ax.cpp b/libs/geometry/test/strategies/projected_point_ax.cpp
new file mode 100644
index 0000000000..d48e7915af
--- /dev/null
+++ b/libs/geometry/test/strategies/projected_point_ax.cpp
@@ -0,0 +1,88 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+// 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)
+
+
+#include <strategies/test_projected_point.hpp>
+
+
+template <typename P1, typename P2>
+void test_all_2d_ax()
+{
+ typedef bg::strategy::distance::detail::projected_point_ax<> strategy_type;
+ typedef bg::strategy::distance::detail::projected_point_ax
+ <
+ void,
+ bg::strategy::distance::comparable::pythagoras<>
+ > comparable_strategy_type;
+
+ typedef typename strategy_type::result_type<P1, P2>::type result_type;
+
+ strategy_type strategy;
+ comparable_strategy_type comparable_strategy;
+ boost::ignore_unused(strategy);
+ boost::ignore_unused(comparable_strategy);
+
+ test_2d<P1, P2>("POINT(1 1)", "POINT(0 0)", "POINT(2 3)",
+ result_type(0, 0.27735203958327),
+ result_type(0, 0.27735203958327 * 0.27735203958327),
+ strategy, comparable_strategy);
+
+ test_2d<P1, P2>("POINT(2 2)", "POINT(1 4)", "POINT(4 1)",
+ result_type(0, 0.5 * sqrt(2.0)),
+ result_type(0, 0.5),
+ strategy, comparable_strategy);
+
+ test_2d<P1, P2>("POINT(6 1)", "POINT(1 4)", "POINT(4 1)",
+ result_type(sqrt(2.0), sqrt(2.0)),
+ result_type(2.0, 2.0),
+ strategy, comparable_strategy);
+
+ test_2d<P1, P2>("POINT(1 6)", "POINT(1 4)", "POINT(4 1)",
+ result_type(sqrt(2.0), sqrt(2.0)),
+ result_type(2.0, 2.0),
+ strategy, comparable_strategy);
+}
+
+template <typename P>
+void test_all_2d_ax()
+{
+ test_all_2d_ax<P, bg::model::point<int, 2, bg::cs::cartesian> >();
+ test_all_2d_ax<P, bg::model::point<float, 2, bg::cs::cartesian> >();
+ test_all_2d_ax<P, bg::model::point<double, 2, bg::cs::cartesian> >();
+ test_all_2d_ax<P, bg::model::point<long double, 2, bg::cs::cartesian> >();
+}
+
+int test_main(int, char* [])
+{
+ test_all_2d_ax<bg::model::point<int, 2, bg::cs::cartesian> >();
+ test_all_2d_ax<bg::model::point<float, 2, bg::cs::cartesian> >();
+ test_all_2d_ax<bg::model::point<double, 2, bg::cs::cartesian> >();
+
+#if defined(HAVE_TTMATH)
+ test_all_2d_ax
+ <
+ bg::model::point<ttmath_big, 2, bg::cs::cartesian>,
+ bg::model::point<ttmath_big, 2, bg::cs::cartesian>
+ >();
+#endif
+
+
+ return 0;
+}
diff --git a/libs/geometry/test/strategies/pythagoras.cpp b/libs/geometry/test/strategies/pythagoras.cpp
index 2b1f428862..b8bcfed3c3 100644
--- a/libs/geometry/test/strategies/pythagoras.cpp
+++ b/libs/geometry/test/strategies/pythagoras.cpp
@@ -20,9 +20,11 @@
#endif
#include <boost/timer.hpp>
+#include <boost/typeof/typeof.hpp>
#include <boost/concept/requires.hpp>
#include <boost/concept_check.hpp>
+#include <boost/core/ignore_unused.hpp>
#include <boost/geometry/algorithms/assign.hpp>
#include <boost/geometry/strategies/cartesian/distance_pythagoras.hpp>
@@ -51,8 +53,8 @@ void test_null_distance_3d()
P2 p2;
bg::assign_values(p2, 1, 2, 3);
- typedef bg::strategy::distance::pythagoras<P1, P2> pythagoras_type;
- typedef typename bg::strategy::distance::services::return_type<pythagoras_type>::type return_type;
+ typedef bg::strategy::distance::pythagoras<> pythagoras_type;
+ typedef typename bg::strategy::distance::services::return_type<pythagoras_type, P1, P2>::type return_type;
pythagoras_type pythagoras;
return_type result = pythagoras.apply(p1, p2);
@@ -68,8 +70,8 @@ void test_axis_3d()
P2 p2;
bg::assign_values(p2, 1, 0, 0);
- typedef bg::strategy::distance::pythagoras<P1, P2> pythagoras_type;
- typedef typename bg::strategy::distance::services::return_type<pythagoras_type>::type return_type;
+ typedef bg::strategy::distance::pythagoras<> pythagoras_type;
+ typedef typename bg::strategy::distance::services::return_type<pythagoras_type, P1, P2>::type return_type;
pythagoras_type pythagoras;
@@ -94,8 +96,8 @@ void test_arbitrary_3d()
bg::assign_values(p2, 9, 8, 7);
{
- typedef bg::strategy::distance::pythagoras<P1, P2> strategy_type;
- typedef typename bg::strategy::distance::services::return_type<strategy_type>::type return_type;
+ typedef bg::strategy::distance::pythagoras<> strategy_type;
+ typedef typename bg::strategy::distance::services::return_type<strategy_type, P1, P2>::type return_type;
strategy_type strategy;
return_type result = strategy.apply(p1, p2);
@@ -104,8 +106,8 @@ void test_arbitrary_3d()
{
// Check comparable distance
- typedef bg::strategy::distance::comparable::pythagoras<P1, P2> strategy_type;
- typedef typename bg::strategy::distance::services::return_type<strategy_type>::type return_type;
+ typedef bg::strategy::distance::comparable::pythagoras<> strategy_type;
+ typedef typename bg::strategy::distance::services::return_type<strategy_type, P1, P2>::type return_type;
strategy_type strategy;
return_type result = strategy.apply(p1, p2);
@@ -122,7 +124,12 @@ void test_services()
{
// Compile-check if there is a strategy for this type
- typedef typename services::default_strategy<bg::point_tag, P1, P2>::type pythagoras_strategy_type;
+ typedef typename services::default_strategy
+ <
+ bg::point_tag, bg::point_tag, P1, P2
+ >::type pythagoras_strategy_type;
+
+ boost::ignore_unused<pythagoras_strategy_type>();
}
@@ -137,24 +144,18 @@ void test_services()
// 1: normal, calculate distance:
- typedef bgsd::pythagoras<P1, P2, CalculationType> strategy_type;
+ typedef bgsd::pythagoras<CalculationType> strategy_type;
- BOOST_CONCEPT_ASSERT( (bg::concept::PointDistanceStrategy<strategy_type>) );
+ BOOST_CONCEPT_ASSERT( (bg::concept::PointDistanceStrategy<strategy_type, P1, P2>) );
- typedef typename bgsd::services::return_type<strategy_type>::type return_type;
+ typedef typename bgsd::services::return_type<strategy_type, P1, P2>::type return_type;
strategy_type strategy;
return_type result = strategy.apply(p1, p2);
BOOST_CHECK_CLOSE(result, return_type(expected), 0.001);
- // 2: "similar" to construct a similar strategy (similar but with other template-parameters) for, e.g., the reverse P2/P1
- // 2a: similar_type:
- typedef typename services::similar_type<strategy_type, P2, P1>::type similar_type;
- // 2b: get_similar
- similar_type similar = services::get_similar<strategy_type, P2, P1>::apply(strategy);
-
- //result = similar.apply(p1, p2); // should NOT compile because p1/p2 should also be reversed here
- result = similar.apply(p2, p1);
+ // 2: the strategy should return the same result if we reverse parameters
+ result = strategy.apply(p2, p1);
BOOST_CHECK_CLOSE(result, return_type(expected), 0.001);
@@ -173,15 +174,15 @@ void test_services()
// 4: the comparable_type should have a distance_strategy_constructor as well,
// knowing how to compare something with a fixed distance
- return_type c_dist5 = services::result_from_distance<comparable_type>::apply(comparable, 5.0);
- return_type c_dist6 = services::result_from_distance<comparable_type>::apply(comparable, 6.0);
+ return_type c_dist5 = services::result_from_distance<comparable_type, P1, P2>::apply(comparable, 5.0);
+ return_type c_dist6 = services::result_from_distance<comparable_type, P1, P2>::apply(comparable, 6.0);
// If this is the case:
BOOST_CHECK(c_dist5 < c_result && c_result < c_dist6);
// This should also be the case
- return_type dist5 = services::result_from_distance<strategy_type>::apply(strategy, 5.0);
- return_type dist6 = services::result_from_distance<strategy_type>::apply(strategy, 6.0);
+ return_type dist5 = services::result_from_distance<strategy_type, P1, P2>::apply(strategy, 5.0);
+ return_type dist6 = services::result_from_distance<strategy_type, P1, P2>::apply(strategy, 6.0);
BOOST_CHECK(dist5 < result && result < dist6);
}
@@ -191,15 +192,10 @@ void test_big_2d_with(AssignType const& x1, AssignType const& y1,
AssignType const& x2, AssignType const& y2)
{
typedef bg::model::point<CoordinateType, 2, bg::cs::cartesian> point_type;
- typedef bg::strategy::distance::pythagoras
- <
- point_type,
- point_type,
- CalculationType
- > pythagoras_type;
+ typedef bg::strategy::distance::pythagoras<CalculationType> pythagoras_type;
pythagoras_type pythagoras;
- typedef typename bg::strategy::distance::services::return_type<pythagoras_type>::type return_type;
+ typedef typename bg::strategy::distance::services::return_type<pythagoras_type, point_type, point_type>::type return_type;
point_type p1, p2;
@@ -242,10 +238,7 @@ void test_integer(bool check_types)
bg::assign_values(p1, 12345678, 23456789);
bg::assign_values(p2, 98765432, 87654321);
- typedef bg::strategy::distance::pythagoras
- <
- point_type
- > pythagoras_type;
+ typedef bg::strategy::distance::pythagoras<> pythagoras_type;
pythagoras_type pythagoras;
BOOST_AUTO(distance, pythagoras.apply(p1, p2));
BOOST_CHECK_CLOSE(distance, 107655455.02347542, 0.001);
@@ -267,7 +260,9 @@ void test_integer(bool check_types)
if (check_types)
{
BOOST_CHECK((boost::is_same<distance_type, double>::type::value));
- BOOST_CHECK((boost::is_same<cdistance_type, boost::long_long_type>::type::value));
+ // comparable_distance results in now double too, obviously because
+ // comp.distance point-segment can be fraction, even for integer input
+ BOOST_CHECK((boost::is_same<cdistance_type, double>::type::value));
}
}
@@ -300,7 +295,7 @@ void time_compare_s(int const n)
bg::assign_values(p1, 1, 1);
bg::assign_values(p2, 2, 2);
Strategy strategy;
- typename bg::strategy::distance::services::return_type<Strategy>::type s = 0;
+ typename bg::strategy::distance::services::return_type<Strategy, P, P>::type s = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
@@ -315,8 +310,8 @@ void time_compare_s(int const n)
template <typename P>
void time_compare(int const n)
{
- time_compare_s<P, bg::strategy::distance::pythagoras<P> >(n);
- time_compare_s<P, bg::strategy::distance::comparable::pythagoras<P> >(n);
+ time_compare_s<P, bg::strategy::distance::pythagoras<> >(n);
+ time_compare_s<P, bg::strategy::distance::comparable::pythagoras<> >(n);
}
int test_main(int, char* [])
diff --git a/libs/geometry/test/strategies/pythagoras.vcproj b/libs/geometry/test/strategies/pythagoras.vcproj
deleted file mode 100644
index 7dedcaaa05..0000000000
--- a/libs/geometry/test/strategies/pythagoras.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="pythagoras"
- ProjectGUID="{763CA955-FC01-4AFD-9593-69D36836B3F7}"
- RootNamespace="pythagoras"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\pythagoras"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\pythagoras"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\pythagoras.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/strategies/pythagoras_point_box.cpp b/libs/geometry/test/strategies/pythagoras_point_box.cpp
new file mode 100644
index 0000000000..d11e96e1c8
--- /dev/null
+++ b/libs/geometry/test/strategies/pythagoras_point_box.cpp
@@ -0,0 +1,499 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014, 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_TEST_MODULE
+#define BOOST_TEST_MODULE test_pythagoras_point_box
+#endif
+
+#include <boost/test/included/unit_test.hpp>
+
+#if defined(_MSC_VER)
+# pragma warning( disable : 4101 )
+#endif
+
+#include <boost/core/ignore_unused.hpp>
+#include <boost/timer.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include <boost/concept/requires.hpp>
+#include <boost/concept_check.hpp>
+
+#include <boost/geometry/algorithms/assign.hpp>
+#include <boost/geometry/algorithms/expand.hpp>
+#include <boost/geometry/strategies/cartesian/distance_pythagoras_point_box.hpp>
+#include <boost/geometry/strategies/concepts/distance_concept.hpp>
+
+
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+#include <boost/geometry/geometries/adapted/c_array.hpp>
+#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
+
+#include <test_common/test_point.hpp>
+
+#ifdef HAVE_TTMATH
+# include <boost/geometry/extensions/contrib/ttmath_stub.hpp>
+#endif
+
+
+namespace bg = boost::geometry;
+
+
+BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian)
+BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
+
+
+template <typename Box, typename Coordinate>
+inline void assign_values(Box& box,
+ Coordinate const& x1,
+ Coordinate const& y1,
+ Coordinate const& z1,
+ Coordinate const& x2,
+ Coordinate const& y2,
+ Coordinate const& z2)
+{
+ typename bg::point_type<Box>::type p1, p2;
+ bg::assign_values(p1, x1, y1, z1);
+ bg::assign_values(p2, x2, y2, z2);
+ bg::assign(box, p1);
+ bg::expand(box, p2);
+}
+
+template <typename Point, typename Box>
+inline void test_null_distance_3d()
+{
+ Point p;
+ bg::assign_values(p, 1, 2, 4);
+ Box b;
+ assign_values(b, 1, 2, 3, 4, 5, 6);
+
+ typedef bg::strategy::distance::pythagoras_point_box<> pythagoras_pb_type;
+ typedef typename bg::strategy::distance::services::return_type
+ <
+ pythagoras_pb_type, Point, Box
+ >::type return_type;
+
+ pythagoras_pb_type pythagoras_pb;
+ return_type result = pythagoras_pb.apply(p, b);
+
+ BOOST_CHECK_EQUAL(result, return_type(0));
+
+ bg::assign_values(p, 1, 3, 4);
+ result = pythagoras_pb.apply(p, b);
+ BOOST_CHECK_EQUAL(result, return_type(0));
+
+ bg::assign_values(p, 2, 3, 4);
+ result = pythagoras_pb.apply(p, b);
+ BOOST_CHECK_EQUAL(result, return_type(0));
+}
+
+template <typename Point, typename Box>
+inline void test_axis_3d()
+{
+ Box b;
+ assign_values(b, 0, 0, 0, 1, 1, 1);
+ Point p;
+ bg::assign_values(p, 2, 0, 0);
+
+ typedef bg::strategy::distance::pythagoras_point_box<> pythagoras_pb_type;
+ typedef typename bg::strategy::distance::services::return_type
+ <
+ pythagoras_pb_type, Point, Box
+ >::type return_type;
+
+ pythagoras_pb_type pythagoras_pb;
+
+ return_type result = pythagoras_pb.apply(p, b);
+ BOOST_CHECK_EQUAL(result, return_type(1));
+
+ bg::assign_values(p, 0, 2, 0);
+ result = pythagoras_pb.apply(p, b);
+ BOOST_CHECK_EQUAL(result, return_type(1));
+
+ bg::assign_values(p, 0, 0, 2);
+ result = pythagoras_pb.apply(p, b);
+ BOOST_CHECK_CLOSE(result, return_type(1), 0.001);
+}
+
+template <typename Point, typename Box>
+inline void test_arbitrary_3d()
+{
+ Box b;
+ assign_values(b, 0, 0, 0, 1, 2, 3);
+ Point p;
+ bg::assign_values(p, 9, 8, 7);
+
+ {
+ typedef bg::strategy::distance::pythagoras_point_box<> strategy_type;
+ typedef typename bg::strategy::distance::services::return_type
+ <
+ strategy_type, Point, Box
+ >::type return_type;
+
+ strategy_type strategy;
+ return_type result = strategy.apply(p, b);
+ BOOST_CHECK_CLOSE(result, return_type(10.77032961427), 0.001);
+ }
+
+ {
+ // Check comparable distance
+ typedef bg::strategy::distance::comparable::pythagoras_point_box<>
+ strategy_type;
+
+ typedef typename bg::strategy::distance::services::return_type
+ <
+ strategy_type, Point, Box
+ >::type return_type;
+
+ strategy_type strategy;
+ return_type result = strategy.apply(p, b);
+ BOOST_CHECK_EQUAL(result, return_type(116));
+ }
+}
+
+template <typename Point, typename Box, typename CalculationType>
+inline void test_services()
+{
+ namespace bgsd = bg::strategy::distance;
+ namespace services = bg::strategy::distance::services;
+
+ {
+ // Compile-check if there is a strategy for this type
+ typedef typename services::default_strategy
+ <
+ bg::point_tag, bg::box_tag, Point, Box
+ >::type pythagoras_pb_strategy_type;
+
+ // reverse geometry tags
+ typedef typename services::default_strategy
+ <
+ bg::box_tag, bg::point_tag, Box, Point
+ >::type reversed_pythagoras_pb_strategy_type;
+
+ boost::ignore_unused
+ <
+ pythagoras_pb_strategy_type,
+ reversed_pythagoras_pb_strategy_type
+ >();
+ }
+
+ Point p;
+ bg::assign_values(p, 1, 2, 3);
+
+ Box b;
+ assign_values(b, 4, 5, 6, 14, 15, 16);
+
+ double const sqr_expected = 3*3 + 3*3 + 3*3; // 27
+ double const expected = sqrt(sqr_expected); // sqrt(27)=5.1961524227
+
+ // 1: normal, calculate distance:
+
+ typedef bgsd::pythagoras_point_box<CalculationType> strategy_type;
+
+ BOOST_CONCEPT_ASSERT
+ ( (bg::concept::PointDistanceStrategy<strategy_type, Point, Box>) );
+
+ typedef typename bgsd::services::return_type
+ <
+ strategy_type, Point, Box
+ >::type return_type;
+
+ strategy_type strategy;
+ return_type result = strategy.apply(p, b);
+ BOOST_CHECK_CLOSE(result, return_type(expected), 0.001);
+
+ // 2: the strategy should return the same result if we reverse parameters
+ // result = strategy.apply(p2, p1);
+ // BOOST_CHECK_CLOSE(result, return_type(expected), 0.001);
+
+
+ // 3: "comparable" to construct a "comparable strategy" for Point/Box
+ // a "comparable strategy" is a strategy which does not calculate the exact distance, but
+ // which returns results which can be mutually compared (e.g. avoid sqrt)
+
+ // 3a: "comparable_type"
+ typedef typename services::comparable_type
+ <
+ strategy_type
+ >::type comparable_type;
+
+ // 3b: "get_comparable"
+ comparable_type comparable = bgsd::services::get_comparable
+ <
+ strategy_type
+ >::apply(strategy);
+
+ typedef typename bgsd::services::return_type
+ <
+ comparable_type, Point, Box
+ >::type comparable_return_type;
+
+ comparable_return_type c_result = comparable.apply(p, b);
+ BOOST_CHECK_CLOSE(c_result, return_type(sqr_expected), 0.001);
+
+ // 4: the comparable_type should have a distance_strategy_constructor as well,
+ // knowing how to compare something with a fixed distance
+ comparable_return_type c_dist5 = services::result_from_distance
+ <
+ comparable_type, Point, Box
+ >::apply(comparable, 5.0);
+
+ comparable_return_type c_dist6 = services::result_from_distance
+ <
+ comparable_type, Point, Box
+ >::apply(comparable, 6.0);
+
+ // If this is the case:
+ BOOST_CHECK(c_dist5 < c_result && c_result < c_dist6);
+
+ // This should also be the case
+ return_type dist5 = services::result_from_distance
+ <
+ strategy_type, Point, Box
+ >::apply(strategy, 5.0);
+ return_type dist6 = services::result_from_distance
+ <
+ strategy_type, Point, Box
+ >::apply(strategy, 6.0);
+ BOOST_CHECK(dist5 < result && result < dist6);
+}
+
+template
+<
+ typename CoordinateType,
+ typename CalculationType,
+ typename AssignType
+>
+inline void test_big_2d_with(AssignType const& x1, AssignType const& y1,
+ AssignType const& x2, AssignType const& y2,
+ AssignType const& zero)
+{
+ typedef bg::model::point<CoordinateType, 2, bg::cs::cartesian> point_type;
+ typedef bg::model::box<point_type> box_type;
+ typedef bg::strategy::distance::pythagoras_point_box
+ <
+ CalculationType
+ > pythagoras_pb_type;
+
+ pythagoras_pb_type pythagoras_pb;
+ typedef typename bg::strategy::distance::services::return_type
+ <
+ pythagoras_pb_type, point_type, box_type
+ >::type return_type;
+
+
+ point_type p;
+ box_type b;
+ bg::assign_values(b, zero, zero, x1, y1);
+ bg::assign_values(p, x2, y2);
+ return_type d = pythagoras_pb.apply(p, b);
+
+ BOOST_CHECK_CLOSE(d, return_type(1076554.5485833955678294387789057), 0.001);
+}
+
+template <typename CoordinateType, typename CalculationType>
+inline void test_big_2d()
+{
+ test_big_2d_with<CoordinateType, CalculationType>
+ (123456.78900001, 234567.89100001,
+ 987654.32100001, 876543.21900001,
+ 0.0);
+}
+
+template <typename CoordinateType, typename CalculationType>
+inline void test_big_2d_string()
+{
+ test_big_2d_with<CoordinateType, CalculationType>
+ ("123456.78900001", "234567.89100001",
+ "987654.32100001", "876543.21900001",
+ "0.0000000000000");
+}
+
+template <typename CoordinateType>
+inline void test_integer(bool check_types)
+{
+ typedef bg::model::point<CoordinateType, 2, bg::cs::cartesian> point_type;
+ typedef bg::model::box<point_type> box_type;
+
+ point_type p;
+ box_type b;
+ bg::assign_values(b, 0, 0, 12345678, 23456789);
+ bg::assign_values(p, 98765432, 87654321);
+
+ typedef bg::strategy::distance::pythagoras_point_box<> pythagoras_pb_type;
+ pythagoras_pb_type pythagoras_pb;
+ BOOST_AUTO(distance, pythagoras_pb.apply(p, b));
+ BOOST_CHECK_CLOSE(distance, 107655455.02347542, 0.001);
+
+ typedef typename bg::strategy::distance::services::comparable_type
+ <
+ pythagoras_pb_type
+ >::type comparable_type;
+ comparable_type comparable;
+ BOOST_AUTO(cdistance, comparable.apply(p, b));
+ BOOST_CHECK_EQUAL(cdistance, 11589696996311540);
+
+ typedef BOOST_TYPEOF(cdistance) cdistance_type;
+ typedef BOOST_TYPEOF(distance) distance_type;
+
+ distance_type distance2 = sqrt(distance_type(cdistance));
+ BOOST_CHECK_CLOSE(distance, distance2, 0.001);
+
+ if (check_types)
+ {
+ BOOST_CHECK((boost::is_same<distance_type, double>::type::value));
+ BOOST_CHECK((boost::is_same<cdistance_type, boost::long_long_type>::type::value));
+ }
+}
+
+template <typename P1, typename P2>
+void test_all_3d()
+{
+ test_null_distance_3d<P1, bg::model::box<P2> >();
+ test_axis_3d<P1, bg::model::box<P2> >();
+ test_arbitrary_3d<P1, bg::model::box<P2> >();
+
+ test_null_distance_3d<P2, bg::model::box<P1> >();
+ test_axis_3d<P2, bg::model::box<P1> >();
+ test_arbitrary_3d<P2, bg::model::box<P1> >();
+}
+
+template <typename P>
+void test_all_3d()
+{
+ test_all_3d<P, int[3]>();
+ test_all_3d<P, float[3]>();
+ test_all_3d<P, double[3]>();
+ test_all_3d<P, test::test_point>();
+ test_all_3d<P, bg::model::point<int, 3, bg::cs::cartesian> >();
+ test_all_3d<P, bg::model::point<float, 3, bg::cs::cartesian> >();
+ test_all_3d<P, bg::model::point<double, 3, bg::cs::cartesian> >();
+}
+
+template <typename P, typename Strategy>
+void time_compare_s(int const n)
+{
+ typedef bg::model::box<P> box_type;
+
+ boost::timer t;
+ P p;
+ box_type b;
+ bg::assign_values(b, 0, 0, 1, 1);
+ bg::assign_values(p, 2, 2);
+ Strategy strategy;
+ typename bg::strategy::distance::services::return_type
+ <
+ Strategy, P, box_type
+ >::type s = 0;
+ for (int i = 0; i < n; i++)
+ {
+ for (int j = 0; j < n; j++)
+ {
+ bg::set<0>(p, bg::get<0>(p) + 0.001);
+ s += strategy.apply(p, b);
+ }
+ }
+ std::cout << "s: " << s << " t: " << t.elapsed() << std::endl;
+}
+
+template <typename P>
+inline void time_compare(int const n)
+{
+ time_compare_s<P, bg::strategy::distance::pythagoras_point_box<> >(n);
+ time_compare_s
+ <
+ P, bg::strategy::distance::comparable::pythagoras_point_box<>
+ >(n);
+}
+
+
+
+
+BOOST_AUTO_TEST_CASE( test_integer_all )
+{
+ test_integer<int>(true);
+ test_integer<boost::long_long_type>(true);
+ test_integer<double>(false);
+}
+
+
+BOOST_AUTO_TEST_CASE( test_3d_all )
+{
+ test_all_3d<int[3]>();
+ test_all_3d<float[3]>();
+ test_all_3d<double[3]>();
+
+ test_all_3d<test::test_point>();
+
+ test_all_3d<bg::model::point<int, 3, bg::cs::cartesian> >();
+ test_all_3d<bg::model::point<float, 3, bg::cs::cartesian> >();
+ test_all_3d<bg::model::point<double, 3, bg::cs::cartesian> >();
+}
+
+
+BOOST_AUTO_TEST_CASE( test_big_2d_all )
+{
+ test_big_2d<float, float>();
+ test_big_2d<double, double>();
+ test_big_2d<long double, long double>();
+ test_big_2d<float, long double>();
+}
+
+
+BOOST_AUTO_TEST_CASE( test_services_all )
+{
+ test_services
+ <
+ bg::model::point<float, 3, bg::cs::cartesian>,
+ bg::model::box<double[3]>,
+ long double
+ >();
+ test_services<double[3], bg::model::box<test::test_point>, float>();
+
+ // reverse the point and box types
+ test_services
+ <
+ double[3],
+ bg::model::box<bg::model::point<float, 3, bg::cs::cartesian> >,
+ long double
+ >();
+ test_services<test::test_point, bg::model::box<double[3]>, float>();
+}
+
+
+BOOST_AUTO_TEST_CASE( test_time_compare )
+{
+ // TODO move this to another non-unit test
+ // time_compare<bg::model::point<double, 2, bg::cs::cartesian> >(10000);
+}
+
+
+#if defined(HAVE_TTMATH)
+BOOST_AUTO_TEST_CASE( test_ttmath_all )
+{
+ typedef ttmath::Big<1,4> tt;
+ typedef bg::model::point<tt, 3, bg::cs::cartesian> tt_point;
+
+ //test_all_3d<tt[3]>();
+ test_all_3d<tt_point>();
+ test_all_3d<tt_point, tt_point>();
+ test_big_2d<tt, tt>();
+ test_big_2d_string<tt, tt>();
+}
+#endif
diff --git a/libs/geometry/test/strategies/segment_intersection.cpp b/libs/geometry/test/strategies/segment_intersection.cpp
index c0191c18f4..fdd66eeb90 100644
--- a/libs/geometry/test/strategies/segment_intersection.cpp
+++ b/libs/geometry/test/strategies/segment_intersection.cpp
@@ -103,16 +103,23 @@ static void test_segment_intersection(int caseno,
segment_type s34(p3,p4);
// Get the intersection point (or two points)
- segment_intersection_points<P> is
- = strategy::intersection::relate_cartesian_segments
+ typedef bg::detail::no_rescale_policy rescale_policy_type;
+ rescale_policy_type rescale_policy;
+
+ typedef bg::segment_intersection_points
+ <
+ P,
+ typename bg::segment_ratio_type
<
- policies::relate::segments_intersection_points
- <
- segment_type,
- segment_type,
- segment_intersection_points<P>
- >
- >::apply(s12, s34);
+ P,
+ rescale_policy_type
+ >::type
+ > result_type;
+
+ result_type is = strategy::intersection::relate_cartesian_segments
+ <
+ bg::policies::relate::segments_intersection_points<result_type>
+ >::apply(s12, s34, rescale_policy);
// Get the Dimension Extended 9 Intersection Matrix (de9im) for Segments
// (this one is extended by GGL having opposite)
@@ -127,8 +134,8 @@ static void test_segment_intersection(int caseno,
// Get just a character for Left/Right/intersects/etc, purpose is more for debugging
policies::relate::direction_type dir = strategy::intersection::relate_cartesian_segments
<
- policies::relate::segments_direction<segment_type, segment_type>
- >::apply(s12, s34);
+ policies::relate::segments_direction
+ >::apply(s12, s34, rescale_policy);
int expected_count = 0;
diff --git a/libs/geometry/test/strategies/segment_intersection.vcproj b/libs/geometry/test/strategies/segment_intersection.vcproj
deleted file mode 100644
index 6ce11dee0e..0000000000
--- a/libs/geometry/test/strategies/segment_intersection.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="segment_intersection"
- ProjectGUID="{4CCCD6BD-E77F-4A7B-BD9D-89ED2E213309}"
- RootNamespace="segment_intersection"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\segment_intersection"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\segment_intersection"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\segment_intersection.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/strategies/segment_intersection_collinear.cpp b/libs/geometry/test/strategies/segment_intersection_collinear.cpp
index 0466c09558..8c25d5fe6a 100644
--- a/libs/geometry/test/strategies/segment_intersection_collinear.cpp
+++ b/libs/geometry/test/strategies/segment_intersection_collinear.cpp
@@ -12,6 +12,7 @@
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
+#define BOOST_GEOMETRY_DEFINE_STREAM_OPERATOR_SEGMENT_RATIO
#include <geometry_test_common.hpp>
@@ -31,6 +32,7 @@
#include <boost/geometry/geometries/point.hpp>
#include <boost/geometry/geometries/segment.hpp>
+
template <typename IntersectionPoints>
static int check(IntersectionPoints const& is,
std::size_t index, double expected_x, double expected_y)
@@ -58,7 +60,8 @@ static void test_segment_intersection(std::string const& case_id,
int expected_x2 = -99, int expected_y2 = -99)
{
- typedef typename bg::coordinate_type<P>::type coordinate_type;
+ boost::ignore_unused_variable_warning(case_id);
+
typedef bg::model::referring_segment<const P> segment_type;
P p1, p2, p3, p4;
@@ -70,30 +73,34 @@ static void test_segment_intersection(std::string const& case_id,
segment_type s12(p1,p2);
segment_type s34(p3,p4);
+ typedef bg::detail::no_rescale_policy rescale_policy_type;
+ rescale_policy_type rescale_policy;
+
+ typedef bg::segment_intersection_points
+ <
+ P,
+ typename bg::segment_ratio_type
+ <
+ P,
+ rescale_policy_type
+ >::type
+ > result_type;
+
// Get the intersection point (or two points)
- bg::segment_intersection_points<P> is
+ result_type is
= bg::strategy::intersection::relate_cartesian_segments
<
- bg::policies::relate::segments_intersection_points
- <
- segment_type,
- segment_type,
- bg::segment_intersection_points<P>
- >
- >::apply(s12, s34);
+ bg::policies::relate::segments_intersection_points<result_type>
+ >::apply(s12, s34, rescale_policy, p1, p2, p3, p4);
// Get just a character for Left/Right/intersects/etc, purpose is more for debugging
bg::policies::relate::direction_type dir
= bg::strategy::intersection::relate_cartesian_segments
<
bg::policies::relate::segments_direction
- <
- segment_type,
- segment_type
- >
- >::apply(s12, s34);
+ >::apply(s12, s34, rescale_policy, p1, p2, p3, p4);
- int expected_count =
+ std::size_t expected_count =
check(is, 0, expected_x1, expected_y1)
+ check(is, 1, expected_x2, expected_y2);
@@ -104,6 +111,67 @@ static void test_segment_intersection(std::string const& case_id,
BOOST_CHECK_EQUAL(dir.arrival[1], expected_arrival2);
}
+template <typename P, typename Pair>
+static void test_segment_ratio(std::string const& case_id,
+ int x1, int y1, int x2, int y2,
+ int x3, int y3, int x4, int y4,
+ Pair expected_pair_a1, Pair expected_pair_a2,
+ Pair expected_pair_b1, Pair expected_pair_b2,
+ int exp_ax1, int exp_ay1, int exp_ax2, int exp_ay2,
+ std::size_t expected_count = 2)
+
+{
+ boost::ignore_unused_variable_warning(case_id);
+
+ typedef bg::model::referring_segment<const P> segment_type;
+
+ P p1, p2, p3, p4;
+ bg::assign_values(p1, x1, y1);
+ bg::assign_values(p2, x2, y2);
+ bg::assign_values(p3, x3, y3);
+ bg::assign_values(p4, x4, y4);
+
+ segment_type s12(p1, p2);
+ segment_type s34(p3, p4);
+
+ typedef bg::detail::no_rescale_policy rescale_policy_type;
+ rescale_policy_type rescale_policy;
+
+ typedef typename bg::segment_ratio_type<P, rescale_policy_type>::type ratio_type;
+ typedef bg::segment_intersection_points
+ <
+ P,
+ ratio_type
+ > result_type;
+
+ // Get the intersection point (or two points)
+ result_type is
+ = bg::strategy::intersection::relate_cartesian_segments
+ <
+ bg::policies::relate::segments_intersection_points<result_type>
+ >::apply(s12, s34, rescale_policy, p1, p2, p3, p4);
+
+ ratio_type expected_a1(expected_pair_a1.first, expected_pair_a1.second);
+ ratio_type expected_a2(expected_pair_a2.first, expected_pair_a2.second);
+ ratio_type expected_b1(expected_pair_b1.first, expected_pair_b1.second);
+ ratio_type expected_b2(expected_pair_b2.first, expected_pair_b2.second);
+
+ BOOST_CHECK_EQUAL(is.count, expected_count);
+
+ BOOST_CHECK_EQUAL(is.fractions[0].robust_ra, expected_a1);
+ BOOST_CHECK_EQUAL(is.fractions[0].robust_rb, expected_b1);
+ BOOST_CHECK_EQUAL(bg::get<0>(is.intersections[0]), exp_ax1);
+ BOOST_CHECK_EQUAL(bg::get<1>(is.intersections[0]), exp_ay1);
+
+ if (expected_count == 2)
+ {
+ BOOST_CHECK_EQUAL(bg::get<0>(is.intersections[1]), exp_ax2);
+ BOOST_CHECK_EQUAL(bg::get<1>(is.intersections[1]), exp_ay2);
+ BOOST_CHECK_EQUAL(is.fractions[1].robust_ra, expected_a2);
+ BOOST_CHECK_EQUAL(is.fractions[1].robust_rb, expected_b2);
+ }
+}
+
template <typename P>
void test_all()
@@ -239,8 +307,9 @@ void test_all()
'e', true, 0, 0,
2, 0, 6, 0);
- // a1---------->a2
- // b2<----------b1
+ // Disjoint (in vertical direction, picture still horizontal)
+ // a2<---a1
+ // b2<---b1
test_segment_intersection<P>("case_recursive_boxes_1",
10, 7, 10, 6,
10, 10, 10, 9,
@@ -249,8 +318,215 @@ void test_all()
}
+
+template <typename P>
+void test_ratios()
+{
+ // B inside A
+ // a1------------>a2
+ // b1--->b2
+ test_segment_ratio<P>("n4",
+ 2, 0, 7, 0,
+ 3, 0, 5, 0,
+ std::make_pair(1, 5), std::make_pair(3, 5), // IP located on 1/5, 3/5 w.r.t A
+ std::make_pair(0, 1), std::make_pair(1, 1), // IP located on 0, 1 w.r.t. B
+ // IP's are ordered as in A (currently)
+ 3, 0, 5, 0);
+
+ // a1------------>a2
+ // b2<---b1
+ test_segment_ratio<P>("o4",
+ 2, 0, 7, 0,
+ 5, 0, 3, 0,
+ std::make_pair(1, 5), std::make_pair(3, 5),
+ std::make_pair(1, 1), std::make_pair(0, 1),
+ 3, 0, 5, 0);
+
+ // a2<------------a1
+ // b2<---b1
+ test_segment_ratio<P>("o4b",
+ 7, 0, 2, 0,
+ 5, 0, 3, 0,
+ std::make_pair(2, 5), std::make_pair(4, 5),
+ std::make_pair(0, 1), std::make_pair(1, 1),
+ 5, 0, 3, 0);
+
+ // a2<------------a1
+ // b1--->b2
+ test_segment_ratio<P>("o4c",
+ 7, 0, 2, 0,
+ 3, 0, 5, 0,
+ std::make_pair(2, 5), std::make_pair(4, 5),
+ std::make_pair(1, 1), std::make_pair(0, 1),
+ 5, 0, 3, 0);
+
+ // Touch-interior
+ // a1---------->a2
+ // b1--->b2
+ test_segment_ratio<P>("n3",
+ 2, 0, 7, 0,
+ 2, 0, 4, 0,
+ std::make_pair(0, 1), std::make_pair(2, 5),
+ std::make_pair(0, 1), std::make_pair(1, 1),
+ 2, 0, 4, 0);
+
+ // a2<-------------a1
+ // b2<----b1
+ test_segment_ratio<P>("n3b",
+ 7, 0, 2, 0,
+ 7, 0, 5, 0,
+ std::make_pair(0, 1), std::make_pair(2, 5),
+ std::make_pair(0, 1), std::make_pair(1, 1),
+ 7, 0, 5, 0);
+
+
+ // A inside B
+ // a1--->a2
+ // b1------------>b2
+ test_segment_ratio<P>("rn4",
+ 3, 0, 5, 0,
+ 2, 0, 7, 0,
+ std::make_pair(0, 1), std::make_pair(1, 1),
+ std::make_pair(1, 5), std::make_pair(3, 5),
+ 3, 0, 5, 0);
+
+ // a2<---a1
+ // b1------------>b2
+ test_segment_ratio<P>("ro4",
+ 5, 0, 3, 0,
+ 2, 0, 7, 0,
+ std::make_pair(0, 1), std::make_pair(1, 1),
+ std::make_pair(3, 5), std::make_pair(1, 5),
+ 5, 0, 3, 0);
+
+ // a2<---a1
+ // b2<------------b1
+ test_segment_ratio<P>("ro4b",
+ 5, 0, 3, 0,
+ 7, 0, 2, 0,
+ std::make_pair(0, 1), std::make_pair(1, 1),
+ std::make_pair(2, 5), std::make_pair(4, 5),
+ 5, 0, 3, 0);
+
+ // a1--->a2
+ // b2<------------b1
+ test_segment_ratio<P>("ro4c",
+ 3, 0, 5, 0,
+ 7, 0, 2, 0,
+ std::make_pair(0, 1), std::make_pair(1, 1),
+ std::make_pair(4, 5), std::make_pair(2, 5),
+ 3, 0, 5, 0);
+
+ // B inside A, boundaries intersect
+ // We change the coordinates a bit (w.r.t. n3 above) to have it asymmetrical
+ // a1---------->a2
+ // b1--->b2
+ test_segment_ratio<P>("n3",
+ 2, 0, 7, 0,
+ 2, 0, 4, 0,
+ std::make_pair(0, 1), std::make_pair(2, 5),
+ std::make_pair(0, 1), std::make_pair(1, 1),
+ 2, 0, 4, 0);
+
+ // a1---------->a2
+ // b2<---b1
+ test_segment_ratio<P>("o3",
+ 2, 0, 7, 0,
+ 4, 0, 2, 0,
+ std::make_pair(0, 1), std::make_pair(2, 5),
+ std::make_pair(1, 1), std::make_pair(0, 1),
+ 2, 0, 4, 0);
+
+ // a1---------->a2
+ // b1--->b2
+ test_segment_ratio<P>("n5",
+ 2, 0, 7, 0,
+ 5, 0, 7, 0,
+ std::make_pair(3, 5), std::make_pair(1, 1),
+ std::make_pair(0, 1), std::make_pair(1, 1),
+ 5, 0, 7, 0);
+
+ // a1---------->a2
+ // b2<---b1
+ test_segment_ratio<P>("o5",
+ 2, 0, 7, 0,
+ 7, 0, 5, 0,
+ std::make_pair(3, 5), std::make_pair(1, 1),
+ std::make_pair(1, 1), std::make_pair(0, 1),
+ 5, 0, 7, 0);
+
+ // Generic (overlaps)
+ // a1---------->a2
+ // b1----->b2
+ test_segment_ratio<P>("n2",
+ 2, 0, 7, 0,
+ 1, 0, 4, 0,
+ std::make_pair(0, 1), std::make_pair(2, 5),
+ std::make_pair(1, 3), std::make_pair(1, 1),
+ 2, 0, 4, 0);
+
+ // Same, b reversed
+ test_segment_ratio<P>("n2_b",
+ 2, 0, 7, 0,
+ 4, 0, 1, 0,
+ std::make_pair(0, 1), std::make_pair(2, 5),
+ std::make_pair(2, 3), std::make_pair(0, 1),
+ 2, 0, 4, 0);
+
+ // Same, both reversed
+ test_segment_ratio<P>("n2_c",
+ 7, 0, 2, 0,
+ 4, 0, 1, 0,
+ std::make_pair(3, 5), std::make_pair(1, 1),
+ std::make_pair(0, 1), std::make_pair(2, 3),
+ 4, 0, 2, 0);
+
+ // a1---------->a2
+ // b1----->b2
+ test_segment_ratio<P>("n6",
+ 2, 0, 6, 0,
+ 5, 0, 8, 0,
+ std::make_pair(3, 4), std::make_pair(1, 1),
+ std::make_pair(0, 1), std::make_pair(1, 3),
+ 5, 0, 6, 0);
+
+ // Degenerated one
+ // a1---------->a2
+ // b1/b2
+ const int ignored = 99;
+ test_segment_ratio<P>("degenerated1",
+ 2, 0, 6, 0,
+ 5, 0, 5, 0,
+ std::make_pair(3, 4), // IP located on 3/4 w.r.t A
+ std::make_pair(ignored, 1), // not checked
+ std::make_pair(0, 1), // IP located at any place w.r.t B, so 0
+ std::make_pair(ignored, 1), // not checked
+ 5, 0,
+ ignored, ignored,
+ 1);
+
+ test_segment_ratio<P>("degenerated2",
+ 5, 0, 5, 0,
+ 2, 0, 6, 0,
+ std::make_pair(0, 1), std::make_pair(ignored, 1),
+ std::make_pair(3, 4), std::make_pair(ignored, 1),
+ 5, 0,
+ ignored, ignored,
+ 1);
+
+ // Vertical one like in box_poly5 but in integer
+ test_segment_ratio<P>("box_poly5",
+ 45, 25, 45, 15,
+ 45, 22, 45, 19,
+ std::make_pair(3, 10), std::make_pair(6, 10),
+ std::make_pair(0, 1), std::make_pair(1, 1),
+ 45, 22, 45, 19);
+}
+
int test_main(int, char* [])
{
- test_all<bg::model::point<double, 2, bg::cs::cartesian> >();
+ // We don't rescale but use integer points as, by nature, robust points
+ test_all<bg::model::point<int, 2, bg::cs::cartesian> >();
+ test_ratios<bg::model::point<int, 2, bg::cs::cartesian> >();
return 0;
}
diff --git a/libs/geometry/test/strategies/segment_intersection_collinear.vcproj b/libs/geometry/test/strategies/segment_intersection_collinear.vcproj
deleted file mode 100644
index 0d479586f5..0000000000
--- a/libs/geometry/test/strategies/segment_intersection_collinear.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="segment_intersection_collinear"
- ProjectGUID="{2D0CB6D3-6ABC-4119-A235-66E6065A279E}"
- RootNamespace="segment_intersection_collinear"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\segment_intersection_collinear"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\segment_intersection_collinear"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\segment_intersection_collinear.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/strategies/spherical_side.cpp b/libs/geometry/test/strategies/spherical_side.cpp
index d2d1144405..a183a141b4 100644
--- a/libs/geometry/test/strategies/spherical_side.cpp
+++ b/libs/geometry/test/strategies/spherical_side.cpp
@@ -64,7 +64,7 @@ void test_side1(std::string const& case_id, Point const& p1, Point const& p2, Po
BOOST_CHECK_EQUAL(side_ct, expected);
BOOST_CHECK_EQUAL(side_cart, expected_cartesian);
/*
- std::cout
+ std::cout
<< "exp: " << side_char(expected)
<< " ssf: " << side_char(side1)
<< " pln: " << side_char(side2)
@@ -91,8 +91,6 @@ void test_side(std::string const& case_id, Point const& p1, Point const& p2, Poi
template <typename Point>
void test_all()
{
- typedef std::pair<double, double> pair;
-
Point amsterdam(5.9, 52.4);
Point barcelona(2.0, 41.0);
Point paris(2.0, 48.0);
diff --git a/libs/geometry/test/strategies/spherical_side.vcproj b/libs/geometry/test/strategies/spherical_side.vcproj
deleted file mode 100644
index 70dd8689c8..0000000000
--- a/libs/geometry/test/strategies/spherical_side.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="spherical_side"
- ProjectGUID="{ADBE38D8-1828-48A2-BBA1-81F50B53C67C}"
- RootNamespace="spherical_side"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\spherical_side"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\spherical_side"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\spherical_side.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/strategies/strategies_tests.sln b/libs/geometry/test/strategies/strategies_tests.sln
deleted file mode 100644
index d29448213c..0000000000
--- a/libs/geometry/test/strategies/strategies_tests.sln
+++ /dev/null
@@ -1,73 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythagoras", "pythagoras.vcproj", "{763CA955-FC01-4AFD-9593-69D36836B3F7}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "transformer", "transformer.vcproj", "{9B62EBF7-D444-4D67-BA00-48CAEAF92756}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "segment_intersection", "segment_intersection.vcproj", "{4CCCD6BD-E77F-4A7B-BD9D-89ED2E213309}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "haversine", "haversine.vcproj", "{AA654B76-E384-4E10-B367-4F51B5D3E96F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cross_track", "cross_track.vcproj", "{4CE6F112-9EA1-4D7E-9AC6-907E77895263}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "projected_point", "projected_point.vcproj", "{A27A46D2-AAD2-47F9-86E2-21FF849EF2D4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "segment_intersection_collinear", "segment_intersection_collinear.vcproj", "{2D0CB6D3-6ABC-4119-A235-66E6065A279E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spherical_side", "spherical_side.vcproj", "{ADBE38D8-1828-48A2-BBA1-81F50B53C67C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "within", "within.vcproj", "{AB13D2AC-FD34-4DE4-BD8E-4D463050E5DD}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "transform_cs", "transform_cs.vcproj", "{2128A5D9-C67E-4C00-A917-A79058C78FCC}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {763CA955-FC01-4AFD-9593-69D36836B3F7}.Debug|Win32.ActiveCfg = Debug|Win32
- {763CA955-FC01-4AFD-9593-69D36836B3F7}.Debug|Win32.Build.0 = Debug|Win32
- {763CA955-FC01-4AFD-9593-69D36836B3F7}.Release|Win32.ActiveCfg = Release|Win32
- {763CA955-FC01-4AFD-9593-69D36836B3F7}.Release|Win32.Build.0 = Release|Win32
- {9B62EBF7-D444-4D67-BA00-48CAEAF92756}.Debug|Win32.ActiveCfg = Debug|Win32
- {9B62EBF7-D444-4D67-BA00-48CAEAF92756}.Debug|Win32.Build.0 = Debug|Win32
- {9B62EBF7-D444-4D67-BA00-48CAEAF92756}.Release|Win32.ActiveCfg = Release|Win32
- {9B62EBF7-D444-4D67-BA00-48CAEAF92756}.Release|Win32.Build.0 = Release|Win32
- {4CCCD6BD-E77F-4A7B-BD9D-89ED2E213309}.Debug|Win32.ActiveCfg = Debug|Win32
- {4CCCD6BD-E77F-4A7B-BD9D-89ED2E213309}.Debug|Win32.Build.0 = Debug|Win32
- {4CCCD6BD-E77F-4A7B-BD9D-89ED2E213309}.Release|Win32.ActiveCfg = Release|Win32
- {4CCCD6BD-E77F-4A7B-BD9D-89ED2E213309}.Release|Win32.Build.0 = Release|Win32
- {AA654B76-E384-4E10-B367-4F51B5D3E96F}.Debug|Win32.ActiveCfg = Debug|Win32
- {AA654B76-E384-4E10-B367-4F51B5D3E96F}.Debug|Win32.Build.0 = Debug|Win32
- {AA654B76-E384-4E10-B367-4F51B5D3E96F}.Release|Win32.ActiveCfg = Release|Win32
- {AA654B76-E384-4E10-B367-4F51B5D3E96F}.Release|Win32.Build.0 = Release|Win32
- {4CE6F112-9EA1-4D7E-9AC6-907E77895263}.Debug|Win32.ActiveCfg = Debug|Win32
- {4CE6F112-9EA1-4D7E-9AC6-907E77895263}.Debug|Win32.Build.0 = Debug|Win32
- {4CE6F112-9EA1-4D7E-9AC6-907E77895263}.Release|Win32.ActiveCfg = Release|Win32
- {4CE6F112-9EA1-4D7E-9AC6-907E77895263}.Release|Win32.Build.0 = Release|Win32
- {A27A46D2-AAD2-47F9-86E2-21FF849EF2D4}.Debug|Win32.ActiveCfg = Debug|Win32
- {A27A46D2-AAD2-47F9-86E2-21FF849EF2D4}.Debug|Win32.Build.0 = Debug|Win32
- {A27A46D2-AAD2-47F9-86E2-21FF849EF2D4}.Release|Win32.ActiveCfg = Release|Win32
- {A27A46D2-AAD2-47F9-86E2-21FF849EF2D4}.Release|Win32.Build.0 = Release|Win32
- {2D0CB6D3-6ABC-4119-A235-66E6065A279E}.Debug|Win32.ActiveCfg = Debug|Win32
- {2D0CB6D3-6ABC-4119-A235-66E6065A279E}.Debug|Win32.Build.0 = Debug|Win32
- {2D0CB6D3-6ABC-4119-A235-66E6065A279E}.Release|Win32.ActiveCfg = Release|Win32
- {2D0CB6D3-6ABC-4119-A235-66E6065A279E}.Release|Win32.Build.0 = Release|Win32
- {ADBE38D8-1828-48A2-BBA1-81F50B53C67C}.Debug|Win32.ActiveCfg = Debug|Win32
- {ADBE38D8-1828-48A2-BBA1-81F50B53C67C}.Debug|Win32.Build.0 = Debug|Win32
- {ADBE38D8-1828-48A2-BBA1-81F50B53C67C}.Release|Win32.ActiveCfg = Release|Win32
- {ADBE38D8-1828-48A2-BBA1-81F50B53C67C}.Release|Win32.Build.0 = Release|Win32
- {AB13D2AC-FD34-4DE4-BD8E-4D463050E5DD}.Debug|Win32.ActiveCfg = Debug|Win32
- {AB13D2AC-FD34-4DE4-BD8E-4D463050E5DD}.Debug|Win32.Build.0 = Debug|Win32
- {AB13D2AC-FD34-4DE4-BD8E-4D463050E5DD}.Release|Win32.ActiveCfg = Release|Win32
- {AB13D2AC-FD34-4DE4-BD8E-4D463050E5DD}.Release|Win32.Build.0 = Release|Win32
- {2128A5D9-C67E-4C00-A917-A79058C78FCC}.Debug|Win32.ActiveCfg = Debug|Win32
- {2128A5D9-C67E-4C00-A917-A79058C78FCC}.Debug|Win32.Build.0 = Debug|Win32
- {2128A5D9-C67E-4C00-A917-A79058C78FCC}.Release|Win32.ActiveCfg = Release|Win32
- {2128A5D9-C67E-4C00-A917-A79058C78FCC}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/strategies/test_projected_point.hpp b/libs/geometry/test/strategies/test_projected_point.hpp
new file mode 100644
index 0000000000..0abde3cedd
--- /dev/null
+++ b/libs/geometry/test/strategies/test_projected_point.hpp
@@ -0,0 +1,185 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+// Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+// Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+// 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_TEST_STRATEGIES_TEST_PROJECTED_POINT_HPP
+#define BOOST_GEOMETRY_TEST_STRATEGIES_TEST_PROJECTED_POINT_HPP
+
+#include <geometry_test_common.hpp>
+
+#include <boost/core/ignore_unused.hpp>
+
+#include <boost/geometry/strategies/cartesian/distance_projected_point.hpp>
+#include <boost/geometry/strategies/cartesian/distance_projected_point_ax.hpp>
+#include <boost/geometry/strategies/concepts/distance_concept.hpp>
+
+#include <boost/geometry/io/wkt/read.hpp>
+
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/adapted/c_array.hpp>
+#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
+#include <test_common/test_point.hpp>
+
+#ifdef HAVE_TTMATH
+# include <boost/geometry/extensions/contrib/ttmath_stub.hpp>
+#endif
+
+BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(cs::cartesian)
+BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
+
+
+template <typename P, typename PS, typename CalculationType>
+void test_services()
+{
+ PS p1, p2;
+ bg::assign_values(p1, 0, 0);
+ bg::assign_values(p2, 0, 4);
+
+ P p;
+ bg::assign_values(p, 2, 0);
+
+ CalculationType const sqr_expected = 4;
+ CalculationType const expected = 2;
+
+
+ namespace bgsd = bg::strategy::distance;
+ namespace services = bg::strategy::distance::services;
+
+ {
+ // compile-check if there is a strategy for this type
+ typedef typename services::default_strategy
+ <
+ bg::point_tag, bg::segment_tag, P, PS
+ >::type projected_point_strategy_type;
+
+ typedef typename services::default_strategy
+ <
+ bg::segment_tag, bg::point_tag, PS, P
+ >::type reversed_tags_projected_point_strategy_type;
+
+ boost::ignore_unused<projected_point_strategy_type,
+ reversed_tags_projected_point_strategy_type>();
+ }
+
+ // 1: normal, calculate distance:
+
+ typedef bgsd::projected_point<CalculationType> strategy_type;
+
+ BOOST_CONCEPT_ASSERT( (bg::concept::PointSegmentDistanceStrategy<strategy_type, P, PS>) );
+
+ typedef typename services::return_type<strategy_type, P, PS>::type return_type;
+
+ strategy_type strategy;
+ return_type result = strategy.apply(p, p1, p2);
+ BOOST_CHECK_CLOSE(result, return_type(expected), 0.001);
+
+ // 2: the strategy should return the same result if we reverse parameters
+ result = strategy.apply(p, p2, p1);
+ BOOST_CHECK_CLOSE(result, return_type(expected), 0.001);
+
+
+ // 3: "comparable" to construct a "comparable strategy" for P1/P2
+ // a "comparable strategy" is a strategy which does not calculate the exact distance, but
+ // which returns results which can be mutually compared (e.g. avoid sqrt)
+
+ // 3a: "comparable_type"
+ typedef typename services::comparable_type<strategy_type>::type comparable_type;
+
+ // 3b: "get_comparable"
+ comparable_type comparable = bgsd::services::get_comparable<strategy_type>::apply(strategy);
+
+ return_type c_result = comparable.apply(p, p1, p2);
+ BOOST_CHECK_CLOSE(c_result, return_type(sqr_expected), 0.001);
+}
+
+template <typename T1, typename T2>
+void test_check_close(T1 const& v1, T2 const& v2, double f)
+{
+ BOOST_CHECK_CLOSE(v1, v2, f);
+}
+
+template <typename T1, typename T2>
+void test_check_close(bg::strategy::distance::detail::projected_point_ax_result<T1> const& v1,
+ bg::strategy::distance::detail::projected_point_ax_result<T2> const& v2,
+ double f)
+{
+ BOOST_CHECK_CLOSE(v1.atd, v2.atd, f);
+ BOOST_CHECK_CLOSE(v1.xtd, v2.xtd, f);
+}
+
+template <typename P1, typename P2, typename T, typename Strategy, typename ComparableStrategy>
+void test_2d(std::string const& wkt_p,
+ std::string const& wkt_sp1,
+ std::string const& wkt_sp2,
+ T expected_distance,
+ T expected_comparable_distance,
+ Strategy strategy,
+ ComparableStrategy comparable_strategy)
+{
+ P1 p;
+ P2 sp1, sp2;
+ bg::read_wkt(wkt_p, p);
+ bg::read_wkt(wkt_sp1, sp1);
+ bg::read_wkt(wkt_sp2, sp2);
+
+ BOOST_CONCEPT_ASSERT
+ (
+ (bg::concept::PointSegmentDistanceStrategy<Strategy, P1, P2>)
+ );
+ BOOST_CONCEPT_ASSERT
+ (
+ (bg::concept::PointSegmentDistanceStrategy<ComparableStrategy, P1, P2>)
+ );
+
+ {
+ typedef typename bg::strategy::distance::services::return_type<Strategy, P1, P2>::type return_type;
+ return_type d = strategy.apply(p, sp1, sp2);
+ test_check_close(d, expected_distance, 0.001);
+ }
+
+ // Test combination with the comparable strategy
+ {
+ typedef typename bg::strategy::distance::services::return_type<ComparableStrategy, P1, P2>::type return_type;
+ return_type d = comparable_strategy.apply(p, sp1, sp2);
+ test_check_close(d, expected_comparable_distance, 0.01);
+ }
+
+}
+
+template <typename P1, typename P2, typename T>
+void test_2d(std::string const& wkt_p,
+ std::string const& wkt_sp1,
+ std::string const& wkt_sp2,
+ T expected_distance)
+{
+ typedef bg::strategy::distance::projected_point<> strategy_type;
+ typedef bg::strategy::distance::projected_point
+ <
+ void,
+ bg::strategy::distance::comparable::pythagoras<>
+ > comparable_strategy_type;
+
+ strategy_type strategy;
+ comparable_strategy_type comparable_strategy;
+
+ T expected_squared_distance = expected_distance * expected_distance;
+ test_2d<P1, P2>(wkt_p, wkt_sp1, wkt_sp2, expected_distance, expected_squared_distance, strategy, comparable_strategy);
+}
+
+#endif // BOOST_GEOMETRY_TEST_STRATEGIES_TEST_PROJECTED_POINT_HPP
diff --git a/libs/geometry/test/strategies/test_within.hpp b/libs/geometry/test/strategies/test_within.hpp
new file mode 100644
index 0000000000..4ceb2608e2
--- /dev/null
+++ b/libs/geometry/test/strategies/test_within.hpp
@@ -0,0 +1,106 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// 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_TEST_STRATEGIES_TEST_WITHIN_HPP
+#define BOOST_GEOMETRY_TEST_STRATEGIES_TEST_WITHIN_HPP
+
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/algorithms/covered_by.hpp>
+#include <boost/geometry/algorithms/within.hpp>
+
+#include <boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp>
+#include <boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp>
+#include <boost/geometry/strategies/agnostic/point_in_poly_winding.hpp>
+#include <boost/geometry/strategies/cartesian/point_in_box.hpp>
+#include <boost/geometry/strategies/cartesian/box_in_box.hpp>
+#include <boost/geometry/strategies/agnostic/point_in_box_by_side.hpp>
+
+#include <boost/geometry/strategies/cartesian/side_by_triangle.hpp>
+#include <boost/geometry/strategies/spherical/ssf.hpp>
+
+
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+
+#include <boost/geometry/io/wkt/wkt.hpp>
+
+
+template <typename Strategy>
+inline const char * strategy_name(Strategy const&)
+{
+ return typeid(Strategy).name();
+}
+
+template <typename P, typename PoS, typename CT>
+inline const char * strategy_name(bg::strategy::within::crossings_multiply<P, PoS, CT> const&)
+{
+ return "crossings_multiply";
+}
+
+template <typename P, typename PoS, typename CT>
+inline const char * strategy_name(bg::strategy::within::franklin<P, PoS, CT> const&)
+{
+ return "franklin";
+}
+
+template <typename P, typename PoS, typename CT>
+inline const char * strategy_name(bg::strategy::within::winding<P, PoS, CT> const&)
+{
+ return "winding";
+}
+
+
+template <typename Point, typename Polygon, typename Strategy>
+void test_point_in_polygon(std::string const& case_id,
+ Point const& point,
+ Polygon const& polygon,
+ Strategy const& strategy,
+ bool expected,
+ bool use_within = true)
+{
+ BOOST_CONCEPT_ASSERT( (bg::concept::WithinStrategyPolygonal<Strategy>) );
+ bool detected = use_within ?
+ bg::within(point, polygon, strategy) :
+ bg::covered_by(point, polygon, strategy);
+
+ BOOST_CHECK_MESSAGE(detected == expected,
+ (use_within ? "within: " : "covered_by: ") << case_id
+ << " strategy: " << strategy_name(strategy)
+ << " output expected: " << int(expected)
+ << " detected: " << int(detected)
+ );
+}
+
+
+template <typename Point, typename Polygon, typename Strategy>
+void test_geometry(std::string const& case_id,
+ std::string const& wkt_point,
+ std::string const& wkt_polygon,
+ Strategy const& strategy,
+ bool expected,
+ bool use_within = true)
+{
+ Point point;
+ Polygon polygon;
+ bg::read_wkt(wkt_point, point);
+ bg::read_wkt(wkt_polygon, polygon);
+
+ test_point_in_polygon(case_id, point, polygon, strategy, expected, use_within);
+}
+
+
+#endif // BOOST_GEOMETRY_TEST_STRATEGIES_TEST_WITHIN_HPP
diff --git a/libs/geometry/test/strategies/transform_cs.cpp b/libs/geometry/test/strategies/transform_cs.cpp
index 36b327e3ef..777104eeeb 100644
--- a/libs/geometry/test/strategies/transform_cs.cpp
+++ b/libs/geometry/test/strategies/transform_cs.cpp
@@ -75,7 +75,7 @@ void test_transformations_spherical()
// 2: Spherical-equatorial (lat=5, so it is near the equator)
bg::model::point<T, 2, bg::cs::spherical_equatorial<bg::degree> > se(input_long, input_lat);
- // 2a: to radian
+ // 2a: to radian
bg::model::point<T, 2, bg::cs::spherical_equatorial<bg::radian> > ser;
bg::transform(se, ser);
BOOST_CHECK_CLOSE(bg::get<0>(ser), expected_long, 0.001);
diff --git a/libs/geometry/test/strategies/transform_cs.vcproj b/libs/geometry/test/strategies/transform_cs.vcproj
deleted file mode 100644
index ea115c56f8..0000000000
--- a/libs/geometry/test/strategies/transform_cs.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="transform_cs"
- ProjectGUID="{2128A5D9-C67E-4C00-A917-A79058C78FCC}"
- RootNamespace="transform_cs"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\transform_cs"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\transform_cs"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\transform_cs.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/strategies/transformer.cpp b/libs/geometry/test/strategies/transformer.cpp
index b469e08ccc..5cdc567e69 100644
--- a/libs/geometry/test/strategies/transformer.cpp
+++ b/libs/geometry/test/strategies/transformer.cpp
@@ -34,7 +34,10 @@ BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
template <typename P, typename T>
void check_inverse(P const& p, T const& trans)
{
- bg::strategy::transform::inverse_transformer<P, P> inverse(trans);
+ typedef typename bg::coordinate_type<P>::type coordinate_type;
+ const std::size_t dim = bg::dimension<P>::value;
+
+ bg::strategy::transform::inverse_transformer<coordinate_type, dim, dim> inverse(trans);
P i;
bg::transform(p, i, inverse);
@@ -46,11 +49,14 @@ void check_inverse(P const& p, T const& trans)
template <typename P>
void test_all()
{
+ typedef typename bg::coordinate_type<P>::type coordinate_type;
+ const std::size_t dim = bg::dimension<P>::value;
+
P p;
bg::assign_values(p, 1, 1);
{
- bg::strategy::transform::translate_transformer<P, P> trans(1, 1);
+ bg::strategy::transform::translate_transformer<coordinate_type, dim, dim> trans(1, 1);
P tp;
bg::transform(p, tp, trans);
@@ -61,7 +67,7 @@ void test_all()
}
{
- bg::strategy::transform::scale_transformer<P, P> trans(10, 10);
+ bg::strategy::transform::scale_transformer<coordinate_type, dim, dim> trans(10, 10);
P tp;
bg::transform(p, tp, trans);
@@ -72,7 +78,7 @@ void test_all()
}
{
- bg::strategy::transform::rotate_transformer<P, P, bg::degree> trans(90.0);
+ bg::strategy::transform::rotate_transformer<bg::degree, double, dim, dim> trans(90.0);
P tp;
bg::transform(p, tp, trans);
@@ -83,7 +89,7 @@ void test_all()
{
// Map from 0,0,2,2 to 0,0,500,500
- bg::strategy::transform::map_transformer<P, P, false> trans
+ bg::strategy::transform::map_transformer<coordinate_type, dim, dim, false> trans
(
0.0, 0.0, 2.0, 2.0, 500, 500
);
diff --git a/libs/geometry/test/strategies/transformer.vcproj b/libs/geometry/test/strategies/transformer.vcproj
deleted file mode 100644
index f9c02344a3..0000000000
--- a/libs/geometry/test/strategies/transformer.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="transformer"
- ProjectGUID="{9B62EBF7-D444-4D67-BA00-48CAEAF92756}"
- RootNamespace="transformer"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\transformer"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\transformer"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\transformer.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/strategies/winding.cpp b/libs/geometry/test/strategies/winding.cpp
new file mode 100644
index 0000000000..ff0f3605a4
--- /dev/null
+++ b/libs/geometry/test/strategies/winding.cpp
@@ -0,0 +1,227 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// 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)
+
+
+#include <strategies/test_within.hpp>
+
+
+template <typename Point>
+void test_cartesian()
+{
+ typedef bg::model::polygon<Point> polygon;
+
+ std::string const box = "POLYGON((0 0,0 2,2 2,2 0,0 0))";
+ std::string const triangle = "POLYGON((0 0,0 4,6 0,0 0))";
+ std::string const with_hole = "POLYGON((0 0,0 3,3 3,3 0,0 0),(1 1,2 1,2 2,1 2,1 1))";
+
+ bg::strategy::within::winding<Point> s;
+
+
+ test_geometry<Point, polygon>("b1", "POINT(1 1)", box, s, true);
+ test_geometry<Point, polygon>("b2", "POINT(3 3)", box, s, false);
+
+ // Test ALL corners (officialy false but some strategies might answer true)
+ test_geometry<Point, polygon>("b3a", "POINT(0 0)", box, s, false);
+ test_geometry<Point, polygon>("b3b", "POINT(0 2)", box, s, false);
+ test_geometry<Point, polygon>("b3c", "POINT(2 2)", box, s, false);
+ test_geometry<Point, polygon>("b3d", "POINT(2 0)", box, s, false);
+
+ // Test ALL sides (officialy false but some strategies might answer true)
+ test_geometry<Point, polygon>("b4a", "POINT(0 1)", box, s, false);
+ test_geometry<Point, polygon>("b4b", "POINT(1 2)", box, s, false);
+ test_geometry<Point, polygon>("b4c", "POINT(2 1)", box, s, false);
+ test_geometry<Point, polygon>("b4d", "POINT(1 0)", box, s, false);
+
+
+ test_geometry<Point, polygon>("t1", "POINT(1 1)", triangle, s, true);
+ test_geometry<Point, polygon>("t2", "POINT(3 3)", triangle, s, false);
+
+ test_geometry<Point, polygon>("t3a", "POINT(0 0)", triangle, s, false);
+ test_geometry<Point, polygon>("t3b", "POINT(0 4)", triangle, s, false);
+ test_geometry<Point, polygon>("t3c", "POINT(5 0)", triangle, s, false);
+
+ test_geometry<Point, polygon>("t4a", "POINT(0 2)", triangle, s, false);
+ test_geometry<Point, polygon>("t4b", "POINT(3 2)", triangle, s, false);
+ test_geometry<Point, polygon>("t4c", "POINT(2 0)", triangle, s, false);
+
+
+ test_geometry<Point, polygon>("h1", "POINT(0.5 0.5)", with_hole, s, true);
+ test_geometry<Point, polygon>("h2a", "POINT(1.5 1.5)", with_hole, s, false);
+ test_geometry<Point, polygon>("h2b", "POINT(5 5)", with_hole, s, false);
+
+ test_geometry<Point, polygon>("h3a", "POINT(1 1)", with_hole, s, false);
+ test_geometry<Point, polygon>("h3b", "POINT(2 2)", with_hole, s, false);
+ test_geometry<Point, polygon>("h3c", "POINT(0 0)", with_hole, s, false);
+
+ test_geometry<Point, polygon>("h4a", "POINT(1 1.5)", with_hole, s, false);
+ test_geometry<Point, polygon>("h4b", "POINT(1.5 2)", with_hole, s, false);
+
+ // Lying ON (one of the sides of) interior ring
+ test_geometry<Point, polygon>("#77-1", "POINT(6 3.5)",
+ "POLYGON((5 3,5 4,4 4,4 5,3 5,3 6,5 6,5 5,7 5,7 6,8 6,8 5,9 5,9 2,8 2,8 1,7 1,7 2,5 2,5 3),(6 3,8 3,8 4,6 4,6 3))",
+ s, false);
+}
+
+template <typename T>
+void test_spherical()
+{
+ typedef bg::model::point<T, 2, bg::cs::spherical_equatorial<bg::degree> > point;
+ typedef bg::model::polygon<point> polygon;
+
+ bg::strategy::within::winding<point> s;
+
+
+ // Ticket #9354
+ test_geometry<point, polygon>(
+ "#9354",
+ "POINT(-78.1239 25.9556)",
+ "POLYGON((-97.08466667 25.95683333, -97.13683333 25.954, -97.1 26, -97.08466667 25.95683333))",
+ s,
+ false);
+
+#ifdef BOOST_GEOMETRY_TEST_STRATEGIES_WINDING_ENABLE_FAILING_TESTS
+
+ test_geometry<point, polygon>(
+ "sph1N",
+ "POINT(0 10.001)",
+ "POLYGON((-10 10, 10 10, 10 -10, -10 -10, -10 10))",
+ s,
+ bg::strategy::side::spherical_side_formula<>::apply(
+ point(-10, 10),
+ point(10, 10),
+ point(0, (T)10.001)) == -1 // right side
+ /*true*/);
+ test_geometry<point, polygon>(
+ "sph1S",
+ "POINT(0 -10.001)",
+ "POLYGON((-10 10, 10 10, 10 -10, -10 -10, -10 10))",
+ s,
+ bg::strategy::side::spherical_side_formula<>::apply(
+ point(10, -10),
+ point(-10, -10),
+ point(0, (T)-10.001)) == -1 // right side
+ /*true*/);
+
+ test_geometry<point, polygon>(
+ "sph2S",
+ "POINT(0 10.001)",
+ "POLYGON((-10 20, 10 20, 10 10, -10 10, -10 20))",
+ s,
+ bg::strategy::side::spherical_side_formula<>::apply(
+ point(10, 10),
+ point(-10, 10),
+ point(0, (T)10.001)) == -1 // right side
+ /*false*/);
+
+ test_geometry<point, polygon>(
+ "sph3N",
+ "POINT(0 10)",
+ "POLYGON((-10 10, 10 10, 10 -10, -10 -10, -10 10))",
+ s,
+ bg::strategy::side::spherical_side_formula<>::apply(
+ point(-10, 10),
+ point(10, 10),
+ point(0, (T)10.001)) == -1 // right side
+ /*true*/);
+ test_geometry<point, polygon>(
+ "sph3S",
+ "POINT(0 -10)",
+ "POLYGON((-10 10, 10 10, 10 -10, -10 -10, -10 10))",
+ s,
+ bg::strategy::side::spherical_side_formula<>::apply(
+ point(10, -10),
+ point(-10, -10),
+ point(0, (T)-10.001)) == -1 // right side
+ /*true*/);
+
+#endif // BOOST_GEOMETRY_TEST_STRATEGIES_WINDING_ENABLE_FAILING_TESTS
+
+ test_geometry<point, polygon>(
+ "sphEq1",
+ "POINT(179 10)",
+ "POLYGON((170 10, -170 10, -170 0, 170 0, 170 10))",
+ s,
+ true,
+ false);
+ test_geometry<point, polygon>(
+ "sphEq2",
+ "POINT(179 10)",
+ "POLYGON((170 20, -170 20, -170 10, 170 10, 170 20))",
+ s,
+ true,
+ false);
+ test_geometry<point, polygon>(
+ "sphEq3",
+ "POINT(-179 10)",
+ "POLYGON((170 10, -170 10, -170 0, 170 0, 170 10))",
+ s,
+ true,
+ false);
+ test_geometry<point, polygon>(
+ "sphEq4",
+ "POINT(-179 10)",
+ "POLYGON((170 20, -170 20, -170 10, 170 10, 170 20))",
+ s,
+ true,
+ false);
+
+#ifdef BOOST_GEOMETRY_TEST_STRATEGIES_WINDING_ENABLE_FAILING_TESTS
+
+ test_geometry<point, polygon>(
+ "sphEq5",
+ "POINT(169 10)",
+ "POLYGON((170 20, -170 20, -170 10, 170 10, 170 20))",
+ s,
+ false,
+ false);
+ test_geometry<point, polygon>(
+ "sphEq6",
+ "POINT(-169 10)",
+ "POLYGON((170 20, -170 20, -170 10, 170 10, 170 20))",
+ s,
+ false,
+ false);
+ test_geometry<point, polygon>(
+ "sphEq7",
+ "POINT(169 10)",
+ "POLYGON((170 10, -170 10, -170 0, 170 0, 170 10))",
+ s,
+ false,
+ false);
+ test_geometry<point, polygon>(
+ "sphEq8",
+ "POINT(-169 10)",
+ "POLYGON((170 10, -170 10, -170 0, 170 0, 170 10))",
+ s,
+ false,
+ false);
+
+#endif // BOOST_GEOMETRY_TEST_STRATEGIES_WINDING_ENABLE_FAILING_TESTS
+}
+
+int test_main(int, char* [])
+{
+ test_cartesian<bg::model::point<float, 2, bg::cs::cartesian> >();
+ test_cartesian<bg::model::point<double, 2, bg::cs::cartesian> >();
+
+ test_spherical<float>();
+ test_spherical<double>();
+
+#if defined(HAVE_TTMATH)
+ test_cartesian<bg::model::point<ttmath_big, 2, bg::cs::cartesian> >();
+ test_spherical<ttmath_big>();
+#endif
+
+ return 0;
+}
diff --git a/libs/geometry/test/strategies/within.cpp b/libs/geometry/test/strategies/within.cpp
deleted file mode 100644
index 17cf8a33fd..0000000000
--- a/libs/geometry/test/strategies/within.cpp
+++ /dev/null
@@ -1,194 +0,0 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
-// Unit Test
-
-// Copyright (c) 2010-2012 Barend Gehrels, 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)
-
-// Tests with-strategies, especially point-in-polygon
-
-#include <geometry_test_common.hpp>
-
-#include <boost/geometry/algorithms/covered_by.hpp>
-#include <boost/geometry/algorithms/within.hpp>
-
-#include <boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp>
-#include <boost/geometry/strategies/cartesian/point_in_poly_crossings_multiply.hpp>
-#include <boost/geometry/strategies/agnostic/point_in_poly_winding.hpp>
-#include <boost/geometry/strategies/cartesian/point_in_box.hpp>
-#include <boost/geometry/strategies/cartesian/box_in_box.hpp>
-#include <boost/geometry/strategies/agnostic/point_in_box_by_side.hpp>
-
-#include <boost/geometry/strategies/cartesian/side_by_triangle.hpp>
-
-
-#include <boost/geometry/geometries/point.hpp>
-#include <boost/geometry/geometries/box.hpp>
-#include <boost/geometry/geometries/polygon.hpp>
-
-#include <boost/geometry/io/wkt/wkt.hpp>
-
-
-
-
-
-
-template <typename Point, typename Polygon, typename Strategy>
-void test_point_in_polygon(std::string const& case_id,
- Point const& point, Polygon const& polygon,
- Strategy const& strategy, std::string const& strategy_id,
- bool expected)
-{
- BOOST_CONCEPT_ASSERT( (bg::concept::WithinStrategyPolygonal<Strategy>) );
- bool detected = bg::within(point, polygon, strategy);
-
- BOOST_CHECK_MESSAGE(detected == expected,
- "within: " << case_id
- << " strategy: " << strategy_id // typeid(strategy).name() is too long
- << " output expected: " << int(expected)
- << " detected: " << int(detected)
- );
-}
-
-template <typename Point, typename Polygon>
-void test_geometry(std::string const& case_id, std::string const& wkt_point
- , std::string const& wkt_polygon
- , bool expected
- , std::string const& deviations = ""
- )
-{
- Point point;
- Polygon polygon;
- bg::read_wkt(wkt_point, point);
- bg::read_wkt(wkt_polygon, polygon);
-
- namespace sw = bg::strategy::within;
- test_point_in_polygon(case_id, point, polygon, sw::winding<Point>(),
- "winding", expected);
- test_point_in_polygon(case_id, point, polygon, sw::franklin<Point>(),
- "franklin", boost::contains(deviations, "f") ? !expected : expected);
- test_point_in_polygon(case_id, point, polygon, sw::crossings_multiply<Point>(),
- "cross.mult", boost::contains(deviations, "c") ? !expected : expected);
-}
-
-template <typename Point>
-void test_box_of(std::string const& wkt_point, std::string const& wkt_box,
- bool expected_within, bool expected_covered_by)
-{
- typedef bg::model::box<Point> box_type;
-
- Point point;
- box_type box;
- bg::read_wkt(wkt_point, point);
- bg::read_wkt(wkt_box, box);
-
- bool detected_within = bg::within(point, box);
- bool detected_covered_by = bg::covered_by(point, box);
- BOOST_CHECK_EQUAL(detected_within, expected_within);
- BOOST_CHECK_EQUAL(detected_covered_by, expected_covered_by);
-
- // Also test with the non-default agnostic side version
- namespace wi = bg::strategy::within;
- wi::point_in_box_by_side<Point, box_type> within_strategy;
- wi::point_in_box_by_side<Point, box_type, wi::decide_covered_by> covered_by_strategy;
-
- detected_within = bg::within(point, box, within_strategy);
- detected_covered_by = bg::covered_by(point, box, covered_by_strategy);
- BOOST_CHECK_EQUAL(detected_within, expected_within);
- BOOST_CHECK_EQUAL(detected_covered_by, expected_covered_by);
-
- // We might exchange strategies between within/covered by.
- // So the lines below might seem confusing, but are as intended
- detected_within = bg::covered_by(point, box, within_strategy);
- detected_covered_by = bg::within(point, box, covered_by_strategy);
- BOOST_CHECK_EQUAL(detected_within, expected_within);
- BOOST_CHECK_EQUAL(detected_covered_by, expected_covered_by);
-
- // Finally we call the strategies directly
- detected_within = within_strategy.apply(point, box);
- detected_covered_by = covered_by_strategy.apply(point, box);
- BOOST_CHECK_EQUAL(detected_within, expected_within);
- BOOST_CHECK_EQUAL(detected_covered_by, expected_covered_by);
-}
-
-template <typename Point>
-void test_box()
-{
- test_box_of<Point>("POINT(1 1)", "BOX(0 0,2 2)", true, true);
- test_box_of<Point>("POINT(0 0)", "BOX(0 0,2 2)", false, true);
- test_box_of<Point>("POINT(2 2)", "BOX(0 0,2 2)", false, true);
- test_box_of<Point>("POINT(0 1)", "BOX(0 0,2 2)", false, true);
- test_box_of<Point>("POINT(1 0)", "BOX(0 0,2 2)", false, true);
- test_box_of<Point>("POINT(3 3)", "BOX(0 0,2 2)", false, false);
-}
-
-
-template <typename Point>
-void test_all()
-{
- test_box<Point>();
-
- typedef bg::model::polygon<Point> polygon;
-
- std::string const box = "POLYGON((0 0,0 2,2 2,2 0,0 0))";
- std::string const triangle = "POLYGON((0 0,0 4,6 0,0 0))";
- std::string const with_hole = "POLYGON((0 0,0 3,3 3,3 0,0 0),(1 1,2 1,2 2,1 2,1 1))";
-
-
- test_geometry<Point, polygon>("b1", "POINT(1 1)", box, true);
- test_geometry<Point, polygon>("b2", "POINT(3 3)", box, false);
-
- // Test ALL corners (officialy false but some strategies might answer true)
- test_geometry<Point, polygon>("b3a", "POINT(0 0)", box, false, "f");
- test_geometry<Point, polygon>("b3b", "POINT(0 2)", box, false);
- test_geometry<Point, polygon>("b3c", "POINT(2 2)", box, false);
- test_geometry<Point, polygon>("b3d", "POINT(2 0)", box, false);
-
- // Test ALL sides (officialy false but some strategies might answer true)
- test_geometry<Point, polygon>("b4a", "POINT(0 1)", box, false, "f");
- test_geometry<Point, polygon>("b4b", "POINT(1 2)", box, false, "c");
- test_geometry<Point, polygon>("b4c", "POINT(2 1)", box, false);
- test_geometry<Point, polygon>("b4d", "POINT(1 0)", box, false, "f");
-
-
- test_geometry<Point, polygon>("t1", "POINT(1 1)", triangle, true);
- test_geometry<Point, polygon>("t2", "POINT(3 3)", triangle, false);
-
- test_geometry<Point, polygon>("t3a", "POINT(0 0)", triangle, false, "f");
- test_geometry<Point, polygon>("t3b", "POINT(0 4)", triangle, false, "c");
- test_geometry<Point, polygon>("t3c", "POINT(5 0)", triangle, false, "f");
-
- test_geometry<Point, polygon>("t4a", "POINT(0 2)", triangle, false, "f");
- test_geometry<Point, polygon>("t4b", "POINT(3 2)", triangle, false);
- test_geometry<Point, polygon>("t4c", "POINT(2 0)", triangle, false, "f");
-
-
- test_geometry<Point, polygon>("h1", "POINT(0.5 0.5)", with_hole, true);
- test_geometry<Point, polygon>("h2a", "POINT(1.5 1.5)", with_hole, false);
- test_geometry<Point, polygon>("h2b", "POINT(5 5)", with_hole, false);
-
- test_geometry<Point, polygon>("h3a", "POINT(1 1)", with_hole, false, "c");
- test_geometry<Point, polygon>("h3b", "POINT(2 2)", with_hole, false, "f");
- test_geometry<Point, polygon>("h3c", "POINT(0 0)", with_hole, false, "f");
-
- test_geometry<Point, polygon>("h4a", "POINT(1 1.5)", with_hole, false);
- test_geometry<Point, polygon>("h4b", "POINT(1.5 2)", with_hole, false, "f");
-
- // Lying ON (one of the sides of) interior ring
- test_geometry<Point, polygon>("#77-1", "POINT(6 3.5)", "POLYGON((5 3,5 4,4 4,4 5,3 5,3 6,5 6,5 5,7 5,7 6,8 6,8 5,9 5,9 2,8 2,8 1,7 1,7 2,5 2,5 3),(6 3,8 3,8 4,6 4,6 3))", false);
-}
-
-
-int test_main(int, char* [])
-{
- test_all<bg::model::point<float, 2, bg::cs::cartesian> >();
- test_all<bg::model::point<double, 2, bg::cs::cartesian> >();
-
-#if defined(HAVE_TTMATH)
- test_all<bg::model::point<ttmath_big, 2, bg::cs::cartesian> >();
-#endif
-
- return 0;
-}
diff --git a/libs/geometry/test/strategies/within.vcproj b/libs/geometry/test/strategies/within.vcproj
deleted file mode 100644
index 8ad1dbc878..0000000000
--- a/libs/geometry/test/strategies/within.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="within"
- ProjectGUID="{AB13D2AC-FD34-4DE4-BD8E-4D463050E5DD}"
- RootNamespace="within"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\within"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\within"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops;..\ttmath.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\within.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/string_from_type.hpp b/libs/geometry/test/string_from_type.hpp
new file mode 100644
index 0000000000..178ff2ea0e
--- /dev/null
+++ b/libs/geometry/test/string_from_type.hpp
@@ -0,0 +1,83 @@
+// 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.
+
+// 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 GEOMETRY_TEST_STRING_FROM_TYPE_HPP
+#define GEOMETRY_TEST_STRING_FROM_TYPE_HPP
+
+#include <string>
+
+#if defined(HAVE_TTMATH)
+# include <boost/geometry/extensions/contrib/ttmath_stub.hpp>
+#endif
+
+#if defined(HAVE_CLN) || defined(HAVE_GMP)
+# include <boost/numeric_adaptor/numeric_adaptor.hpp>
+#endif
+
+
+#if defined(HAVE_GMP)
+# include <boost/numeric_adaptor/gmp_value_type.hpp>
+#endif
+#if defined(HAVE_CLN)
+# include <boost/numeric_adaptor/cln_value_type.hpp>
+#endif
+
+
+
+template <typename T>
+struct string_from_type {};
+
+template <> struct string_from_type<void>
+{ static std::string name() { return "v"; } };
+
+template <> struct string_from_type<float>
+{ static std::string name() { return "f"; } };
+
+template <> struct string_from_type<double>
+{ static std::string name() { return "d"; } };
+
+template <> struct string_from_type<long double>
+{ static std::string name() { return "e"; } };
+
+template <> struct string_from_type<short int>
+{ static std::string name() { return "s"; } };
+
+template <> struct string_from_type<int>
+{ static std::string name() { return "i"; } };
+
+template <> struct string_from_type<boost::long_long_type>
+{ static std::string name() { return "l"; } };
+
+#if defined(HAVE_TTMATH)
+ template <> struct string_from_type<ttmath_big>
+ { static std::string name() { return "t"; } };
+#endif
+
+#if defined(BOOST_RATIONAL_HPP)
+template <typename T> struct string_from_type<boost::rational<T> >
+{ static std::string name() { return "r"; } };
+#endif
+
+
+#if defined(HAVE_GMP)
+template <> struct string_from_type<boost::numeric_adaptor::gmp_value_type>
+{ static std::string name() { return "g"; } };
+#endif
+
+#if defined(HAVE_CLN)
+template <> struct string_from_type<boost::numeric_adaptor::cln_value_type>
+{ static std::string name() { return "c"; } };
+#endif
+
+
+#endif // GEOMETRY_TEST_STRING_FROM_TYPE_HPP
diff --git a/libs/geometry/test/test_common/test_point.hpp b/libs/geometry/test/test_common/test_point.hpp
index 5a19d6c3cb..31b1248676 100644
--- a/libs/geometry/test/test_common/test_point.hpp
+++ b/libs/geometry/test/test_common/test_point.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -17,6 +17,7 @@
#include <boost/geometry/core/coordinate_dimension.hpp>
#include <boost/geometry/core/cs.hpp>
#include <boost/geometry/core/tag.hpp>
+#include <boost/geometry/geometries/register/point.hpp>
// NOTE: since Boost 1.51 the Point type may always be a pointer.
// Therefore the traits class don't need to add a pointer.
@@ -32,10 +33,21 @@ struct test_point
float c1, c2, c3;
};
+struct test_const_point
+{
+ test_const_point()
+ : c1(0.0), c2(0.0), c3(0.0) { }
+
+ test_const_point(float c1, float c2, float c3)
+ : c1(c1), c2(c2), c3(c3) { }
+
+ const float c1, c2, c3;
+};
} // namespace test
+
namespace boost { namespace geometry { namespace traits {
template<>
@@ -91,4 +103,9 @@ template<> struct access<test::test_point, 2>
}}} // namespace bg::traits
+BOOST_GEOMETRY_REGISTER_POINT_3D_CONST(test::test_const_point,
+ float,
+ boost::geometry::cs::cartesian,
+ c1, c2, c3)
+
#endif // GEOMETRY_TEST_TEST_COMMON_TEST_POINT_HPP
diff --git a/libs/geometry/test/test_common/with_pointer.hpp b/libs/geometry/test/test_common/with_pointer.hpp
index 22edbdef54..9c7b95db7a 100644
--- a/libs/geometry/test/test_common/with_pointer.hpp
+++ b/libs/geometry/test/test_common/with_pointer.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
diff --git a/libs/geometry/test/test_geometries/all_custom_container.hpp b/libs/geometry/test/test_geometries/all_custom_container.hpp
index 7f4a830121..47d56e159b 100644
--- a/libs/geometry/test/test_geometries/all_custom_container.hpp
+++ b/libs/geometry/test/test_geometries/all_custom_container.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
diff --git a/libs/geometry/test/test_geometries/all_custom_linestring.hpp b/libs/geometry/test/test_geometries/all_custom_linestring.hpp
index 01b5ae4b0b..133fb29a24 100644
--- a/libs/geometry/test/test_geometries/all_custom_linestring.hpp
+++ b/libs/geometry/test/test_geometries/all_custom_linestring.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
diff --git a/libs/geometry/test/test_geometries/all_custom_polygon.hpp b/libs/geometry/test/test_geometries/all_custom_polygon.hpp
index 62da9ecf84..1ce9286eba 100644
--- a/libs/geometry/test/test_geometries/all_custom_polygon.hpp
+++ b/libs/geometry/test/test_geometries/all_custom_polygon.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
diff --git a/libs/geometry/test/test_geometries/all_custom_ring.hpp b/libs/geometry/test/test_geometries/all_custom_ring.hpp
index c7c2b78df9..aa1d37cfe9 100644
--- a/libs/geometry/test/test_geometries/all_custom_ring.hpp
+++ b/libs/geometry/test/test_geometries/all_custom_ring.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
diff --git a/libs/geometry/test/test_geometries/custom_segment.hpp b/libs/geometry/test/test_geometries/custom_segment.hpp
index 7403777428..b4728c2b59 100644
--- a/libs/geometry/test/test_geometries/custom_segment.hpp
+++ b/libs/geometry/test/test_geometries/custom_segment.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
diff --git a/libs/geometry/test/test_geometries/wrapped_boost_array.hpp b/libs/geometry/test/test_geometries/wrapped_boost_array.hpp
index 961e593a43..8f4d8e39b3 100644
--- a/libs/geometry/test/test_geometries/wrapped_boost_array.hpp
+++ b/libs/geometry/test/test_geometries/wrapped_boost_array.hpp
@@ -1,4 +1,4 @@
-// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Boost.Geometry (aka GGL, Generic Geometry Library)
// Unit Test
// Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
@@ -30,7 +30,7 @@ struct wrapped_boost_array
inline wrapped_boost_array() : size(0) {}
boost::array<Point, Count> array;
- int size;
+ std::size_t size;
};
diff --git a/libs/geometry/test/to_svg.hpp b/libs/geometry/test/to_svg.hpp
new file mode 100644
index 0000000000..e2eccd54fe
--- /dev/null
+++ b/libs/geometry/test/to_svg.hpp
@@ -0,0 +1,379 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+
+// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
+
+// This file was modified by Oracle on 2014.
+// Modifications copyright (c) 2014 Oracle and/or its affiliates.
+
+// 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)
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+#ifndef BOOST_GEOMETRY_TEST_TO_SVG_HPP
+#define BOOST_GEOMETRY_TEST_TO_SVG_HPP
+
+#include <fstream>
+
+#include <boost/geometry/io/wkt/read.hpp>
+#include <boost/geometry/io/svg/svg_mapper.hpp>
+#include <boost/geometry/algorithms/detail/overlay/get_turns.hpp>
+#include <boost/geometry/algorithms/detail/overlay/self_turn_points.hpp>
+#include <boost/geometry/algorithms/detail/overlay/traversal_info.hpp>
+#include <boost/geometry/algorithms/detail/overlay/debug_turn_info.hpp>
+#include <boost/geometry/algorithms/detail/overlay/enrichment_info.hpp>
+#include <boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp>
+#include <boost/foreach.hpp>
+
+#include <boost/geometry/algorithms/detail/relate/turns.hpp>
+
+template <typename G, typename Turns, typename Mapper>
+inline void turns_to_svg(Turns const& turns, Mapper & mapper, bool /*enrich*/ = false)
+{
+ // turn points in orange, + enrichment/traversal info
+ typedef typename bg::coordinate_type<G>::type coordinate_type;
+ typedef typename boost::range_value<Turns>::type turn_info;
+
+ // Simple map to avoid two texts at same place (note that can still overlap!)
+ std::map<std::pair<int, int>, int> offsets;
+ int index = 0;
+ int const margin = 5;
+
+ BOOST_FOREACH(turn_info const& turn, turns)
+ {
+ int lineheight = 10;
+ mapper.map(turn.point, "fill:rgb(255,128,0);"
+ "stroke:rgb(0,0,0);stroke-width:1", 3);
+
+ {
+ coordinate_type half = 0.5;
+ coordinate_type ten = 10;
+ // Map characteristics
+ // Create a rounded off point
+ std::pair<int, int> p
+ = std::make_pair(
+ boost::numeric_cast<int>(half
+ + ten * bg::get<0>(turn.point)),
+ boost::numeric_cast<int>(half
+ + ten * bg::get<1>(turn.point))
+ );
+ std::string style = "fill:rgb(0,0,0);font-family:Arial;font-size:12px";
+
+ if (turn.discarded)
+ {
+ style = "fill:rgb(92,92,92);font-family:Arial;font-size:10px";
+ lineheight = 6;
+ }
+
+ //if (! turn.discarded && ! turn.blocked() && ! turn.both(bg::detail::overlay::operation_union))
+ //if (! turn.discarded)
+ {
+ std::ostringstream out;
+ out << index
+ << ": " << bg::method_char(turn.method);
+
+ if ( turn.discarded )
+ out << " (discarded)\n";
+ else if ( turn.blocked() )
+ out << " (blocked)\n";
+ else
+ out << '\n';
+
+ out << bg::operation_char(turn.operations[0].operation)
+ <<": seg: " << turn.operations[0].seg_id.source_index
+ << ' ' << turn.operations[0].seg_id.multi_index
+ << ' ' << turn.operations[0].seg_id.ring_index
+ << ' ' << turn.operations[0].seg_id.segment_index << ", ";
+ out << "other: " << turn.operations[0].other_id.source_index
+ << ' ' << turn.operations[0].other_id.multi_index
+ << ' ' << turn.operations[0].other_id.ring_index
+ << ' ' << turn.operations[0].other_id.segment_index;
+
+ /*if ( enrich )
+ {
+ out << ", ";
+ if (turn.operations[0].enriched.next_ip_index != -1)
+ {
+ out << "ip: " << turn.operations[0].enriched.next_ip_index;
+ }
+ else
+ {
+ out << "vx: " << turn.operations[0].enriched.travels_to_vertex_index
+ << " -> ip: " << turn.operations[0].enriched.travels_to_ip_index;
+ }
+ }*/
+
+ out << '\n';
+
+ out << bg::operation_char(turn.operations[1].operation)
+ << ": seg: " << turn.operations[1].seg_id.source_index
+ << ' ' << turn.operations[1].seg_id.multi_index
+ << ' ' << turn.operations[1].seg_id.ring_index
+ << ' ' << turn.operations[1].seg_id.segment_index << ", ";
+ out << "other: " << turn.operations[1].other_id.source_index
+ << ' ' << turn.operations[1].other_id.multi_index
+ << ' ' << turn.operations[1].other_id.ring_index
+ << ' ' << turn.operations[1].other_id.segment_index;
+
+ /*if ( enrich )
+ {
+ out << ", ";
+ if (turn.operations[1].enriched.next_ip_index != -1)
+ {
+ out << "ip: " << turn.operations[1].enriched.next_ip_index;
+ }
+ else
+ {
+ out << "vx: " << turn.operations[1].enriched.travels_to_vertex_index
+ << " -> ip: " << turn.operations[1].enriched.travels_to_ip_index;
+ }
+ }*/
+
+ //out << std::endl;
+
+ /*out
+
+ << std::setprecision(3)
+ << "dist: " << boost::numeric_cast<double>(turn.operations[0].enriched.distance)
+ << " / " << boost::numeric_cast<double>(turn.operations[1].enriched.distance)
+ << std::endl
+ << "vis: " << bg::visited_char(turn.operations[0].visited)
+ << " / " << bg::visited_char(turn.operations[1].visited);
+ */
+
+ /*
+ out << index
+ << ": " << bg::operation_char(turn.operations[0].operation)
+ << " " << bg::operation_char(turn.operations[1].operation)
+ << " (" << bg::method_char(turn.method) << ")"
+ << (turn.ignore() ? " (ignore) " : " ")
+ << std::endl
+
+ << "ip: " << turn.operations[0].enriched.travels_to_ip_index
+ << "/" << turn.operations[1].enriched.travels_to_ip_index;
+
+ if (turn.operations[0].enriched.next_ip_index != -1
+ || turn.operations[1].enriched.next_ip_index != -1)
+ {
+ out << " [" << turn.operations[0].enriched.next_ip_index
+ << "/" << turn.operations[1].enriched.next_ip_index
+ << "]"
+ ;
+ }
+ out << std::endl;
+
+
+ out
+ << "vx:" << turn.operations[0].enriched.travels_to_vertex_index
+ << "/" << turn.operations[1].enriched.travels_to_vertex_index
+ << std::endl
+
+ << std::setprecision(3)
+ << "dist: " << turn.operations[0].enriched.distance
+ << " / " << turn.operations[1].enriched.distance
+ << std::endl
+ */
+
+
+
+ offsets[p] += lineheight;
+ int offset = offsets[p];
+ offsets[p] += lineheight * 3;
+ mapper.text(turn.point, out.str(), style, margin, offset, lineheight);
+ }
+ index++;
+ }
+ }
+}
+
+template <typename G1, typename P>
+inline void geom_to_svg(G1 const& g1, bg::svg_mapper<P> & mapper)
+{
+ mapper.add(g1);
+
+ mapper.map(g1, "fill-opacity:0.5;fill:rgb(153,204,0);"
+ "stroke:rgb(153,204,0);stroke-width:3");
+}
+
+template <typename G1, typename G2, typename P>
+inline void geom_to_svg(G1 const& g1, G2 const& g2, bg::svg_mapper<P> & mapper)
+{
+ mapper.add(g1);
+ mapper.add(g2);
+
+ mapper.map(g1, "fill-opacity:0.5;fill:rgb(153,204,0);"
+ "stroke:rgb(153,204,0);stroke-width:3");
+ mapper.map(g2, "fill-opacity:0.3;fill:rgb(51,51,153);"
+ "stroke:rgb(51,51,153);stroke-width:3");
+}
+
+template <typename G1, typename G2>
+inline void geom_to_svg(G1 const& g1, std::string const& filename)
+{
+ namespace bg = boost::geometry;
+ typedef typename bg::point_type<G1>::type mapper_point_type;
+
+ std::ofstream svg(filename.c_str(), std::ios::trunc);
+ bg::svg_mapper<mapper_point_type> mapper(svg, 500, 500);
+
+ geom_to_svg(g1, mapper);
+}
+
+template <typename G1, typename G2>
+inline void geom_to_svg(G1 const& g1, G2 const& g2, std::string const& filename)
+{
+ namespace bg = boost::geometry;
+ typedef typename bg::point_type<G1>::type mapper_point_type;
+
+ std::ofstream svg(filename.c_str(), std::ios::trunc);
+ bg::svg_mapper<mapper_point_type> mapper(svg, 500, 500);
+
+ geom_to_svg(g1, g2, mapper);
+}
+
+
+struct to_svg_assign_policy
+ : bg::detail::overlay::assign_null_policy
+{
+ static bool const include_no_turn = false;
+ static bool const include_degenerate = false;
+ static bool const include_opposite = false;
+};
+
+template <typename G>
+inline void to_svg(G const& g, std::string const& filename, bool /*sort*/ = true)
+{
+ namespace bg = boost::geometry;
+
+ typedef typename bg::point_type<G>::type P;
+
+ std::ofstream svg(filename.c_str(), std::ios::trunc);
+
+ bg::svg_mapper<P> mapper(svg, 500, 500);
+
+ mapper.add(g);
+
+ mapper.map(g, "fill-opacity:0.5;fill:rgb(153,204,0);"
+ "stroke:rgb(153,204,0);stroke-width:3");
+
+ // GET TURNS
+
+ typedef bg::segment_ratio<double> sr;
+ typedef bg::detail::overlay::traversal_turn_info<P, sr> turn_info;
+ typedef bg::detail::overlay::assign_null_policy AssignPolicy;
+ //typedef to_svg_assign_policy AssignPolicy;
+
+ typedef std::deque<turn_info> Turns;
+ typedef bg::detail::self_get_turn_points::no_interrupt_policy InterruptPolicy;
+
+ Turns turns;
+ InterruptPolicy interrupt_policy;
+
+ typedef bg::detail::overlay::get_turn_info<AssignPolicy> TurnPolicy;
+
+ bg::detail::self_get_turn_points::get_turns
+ <
+ TurnPolicy
+ >::apply(g, bg::detail::no_rescale_policy(), turns, interrupt_policy);
+
+ turns_to_svg<G>(turns, mapper);
+}
+
+template <typename G1, typename G2>
+inline void to_svg(G1 const& g1, G2 const& g2, std::string const& filename, bool sort = true, bool use_old_turns_policy = false, bool enrich = false)
+{
+ namespace bg = boost::geometry;
+
+ typedef typename bg::point_type<G1>::type mapper_point_type;
+
+ std::ofstream svg(filename.c_str(), std::ios::trunc);
+
+ bg::svg_mapper<mapper_point_type> mapper(svg, 500, 500);
+
+ mapper.add(g1);
+ mapper.add(g2);
+
+ mapper.map(g1, "fill-opacity:0.5;fill:rgb(153,204,0);"
+ "stroke:rgb(153,204,0);stroke-width:3");
+ mapper.map(g2, "fill-opacity:0.3;fill:rgb(51,51,153);"
+ "stroke:rgb(51,51,153);stroke-width:3");
+
+ // GET TURNS
+
+ typedef typename bg::detail::relate::turns::get_turns<G1, G2>::turn_info turn_info;
+ //typedef bg::detail::overlay::traversal_turn_info<P1> turn_info;
+ //typedef bg::detail::overlay::assign_null_policy AssignPolicy;
+ typedef to_svg_assign_policy AssignPolicy;
+
+ typedef std::deque<turn_info> Turns;
+ typedef bg::detail::get_turns::no_interrupt_policy InterruptPolicy;
+ static const bool Reverse1 = bg::detail::overlay::do_reverse<bg::point_order<G1>::value>::value;
+ static const bool Reverse2 = bg::detail::overlay::do_reverse<bg::point_order<G2>::value>::value;
+
+ Turns turns;
+ InterruptPolicy interrupt_policy;
+
+ if ( use_old_turns_policy )
+ {
+ boost::geometry::get_turns
+ <
+ Reverse1, Reverse2, AssignPolicy
+ >(g1, g2, bg::detail::no_rescale_policy(), turns, interrupt_policy);
+ }
+ else
+ {
+ typedef bg::detail::get_turns::get_turn_info_type
+ <
+ G1, G2, AssignPolicy
+ > TurnPolicy;
+
+ bg::detail::relate::turns::get_turns
+ <
+ G1, G2, TurnPolicy
+ >::apply(turns, g1, g2);
+ }
+
+ if ( sort )
+ {
+ typedef bg::detail::relate::turns::less<> less;
+ std::sort(boost::begin(turns), boost::end(turns), less());
+ }
+
+ /*if ( enrich )
+ {
+ typedef typename bg::strategy::side::services::default_strategy
+ <
+ typename bg::cs_tag<G1>::type
+ >::type side_strategy_type;
+
+ bg::enrich_intersection_points<bg::detail::overlay::do_reverse<bg::point_order<G1>::value>::value,
+ bg::detail::overlay::do_reverse<bg::point_order<G2>::value>::value>
+ (turns, bg::detail::overlay::operation_union,
+ g1, g1,
+ bg::detail::no_rescale_policy(),
+ side_strategy_type());
+ }*/
+
+ turns_to_svg<G1>(turns, mapper, enrich);
+}
+
+template <typename G>
+inline void to_svg(std::string const& wkt, std::string const& filename)
+{
+ G g;
+ boost::geometry::read_wkt(wkt, g);
+ to_svg(g, filename);
+}
+
+template <typename G1, typename G2>
+inline void to_svg(std::string const& wkt1, std::string const& wkt2, std::string const& filename, bool sort = true, bool reverse_by_geometry_id = false, bool enrich = false)
+{
+ G1 g1;
+ G2 g2;
+ boost::geometry::read_wkt(wkt1, g1);
+ boost::geometry::read_wkt(wkt2, g2);
+ to_svg(g1, g2, filename, sort, reverse_by_geometry_id, enrich);
+}
+
+#endif // BOOST_GEOMETRY_TEST_TO_SVG_HPP
diff --git a/libs/geometry/test/ttmath.vsprops b/libs/geometry/test/ttmath.vsprops
deleted file mode 100644
index e01e296986..0000000000
--- a/libs/geometry/test/ttmath.vsprops
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="ttmath"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(TTMATH_ROOT)&quot;;&quot;../$(TTMATH_ROOT)&quot;;&quot;../../$(TTMATH_ROOT)&quot;"
- />
- <UserMacro
- Name="TTMATH_ROOT"
- Value="..\..\..\boost\geometry\extensions\contrib\ttmath"
- />
-</VisualStudioPropertySheet>
diff --git a/libs/geometry/test/util/Jamfile.v2 b/libs/geometry/test/util/Jamfile.v2
index bf706df737..bfb647dc77 100644
--- a/libs/geometry/test/util/Jamfile.v2
+++ b/libs/geometry/test/util/Jamfile.v2
@@ -1,8 +1,13 @@
# 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.
+# Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands.
+# Copyright (c) 2008-2014 Bruno Lalande, Paris, France.
+# Copyright (c) 2009-2014 Mateusz Loskot, London, UK.
+#
+# This file was modified by Oracle on 2014.
+# Modifications copyright (c) 2014, Oracle and/or its affiliates.
+#
+# Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
#
# Use, modification and distribution is subject to the Boost Software License,
# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -12,6 +17,8 @@ test-suite boost-geometry-util
:
[ run calculation_type.cpp ]
[ run for_each_coordinate.cpp ]
+ [ run math_sqrt.cpp ]
+ [ run range.cpp ]
[ run rational.cpp ]
[ run select_most_precise.cpp ]
[ run write_dsv.cpp ]
diff --git a/libs/geometry/test/util/as_range.vcproj b/libs/geometry/test/util/as_range.vcproj
deleted file mode 100644
index cc96fd53bd..0000000000
--- a/libs/geometry/test/util/as_range.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="as_range"
- ProjectGUID="{A36D8426-67EB-405C-B6E8-3FBB3374A59B}"
- RootNamespace="as_range"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\as_range"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\as_range"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\as_range.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/util/calculation_type.cpp b/libs/geometry/test/util/calculation_type.cpp
index 34523e8af1..6e026676f4 100644
--- a/libs/geometry/test/util/calculation_type.cpp
+++ b/libs/geometry/test/util/calculation_type.cpp
@@ -172,15 +172,17 @@ int test_main(int, char* [])
typedef model::point<boost::long_long_type, 2, cs::cartesian> ll;
typedef model::point<user_defined, 2, cs::cartesian> u;
- // Calculation type "void" so
+ // Calculation type "void" so
test<f, f, double, int, double>();
test<d, d, double, int, double>();
test<f, d, double, int, double>();
// FP/int mixed
test<i, f, double, int, double>();
+ test<s, f, double, short int, double>();
// integers
+ test<s, s, double, short int, short int>();
test<i, i, double, int, int>();
test<c, i, double, int, int>();
test<c, c, double, char, char>();
diff --git a/libs/geometry/test/util/calculation_type.vcproj b/libs/geometry/test/util/calculation_type.vcproj
deleted file mode 100644
index 9c2920035a..0000000000
--- a/libs/geometry/test/util/calculation_type.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="calculation_type"
- ProjectGUID="{CF8FE803-A26B-4553-B605-9C28225B5595}"
- RootNamespace="calculation_type"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\calculation_type"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\calculation_type"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\calculation_type.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/util/compress_variant.cpp b/libs/geometry/test/util/compress_variant.cpp
new file mode 100644
index 0000000000..ab7a61ca9a
--- /dev/null
+++ b/libs/geometry/test/util/compress_variant.cpp
@@ -0,0 +1,77 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// 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.
+
+// 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)
+
+
+#include <boost/test/included/test_exec_monitor.hpp>
+#include <boost/geometry/util/compress_variant.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/equal.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/variant/variant.hpp>
+
+
+template <typename ExpectedTypes, BOOST_VARIANT_ENUM_PARAMS(typename T)>
+void check_variant_types(boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)>)
+{
+ BOOST_MPL_ASSERT((
+ boost::mpl::equal<
+ typename boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)>::types,
+ ExpectedTypes
+ >
+ ));
+}
+
+template <typename Variant, typename ExpectedTypes>
+void test_variant_result()
+{
+ check_variant_types<ExpectedTypes>(typename boost::geometry::compress_variant<Variant>::type());
+}
+
+template <typename Variant, typename ExpectedType>
+void test_single_type_result()
+{
+ BOOST_MPL_ASSERT((
+ boost::is_same<
+ typename boost::geometry::compress_variant<Variant>::type,
+ ExpectedType
+ >
+ ));
+}
+
+
+int test_main(int, char* [])
+{
+ test_variant_result<
+ boost::variant<int, float, double>,
+ boost::mpl::vector<int, float, double>
+ >();
+
+ test_variant_result<
+ boost::variant<int, float, double, int, int, float, double, double, float>,
+ boost::mpl::vector<int, double, float>
+ >();
+
+ test_single_type_result<
+ boost::variant<int>,
+ int
+ >();
+
+ test_single_type_result<
+ boost::variant<double, double, double, double, double>,
+ double
+ >();
+
+ return 0;
+}
diff --git a/libs/geometry/test/util/for_each_coordinate.vcproj b/libs/geometry/test/util/for_each_coordinate.vcproj
deleted file mode 100644
index 5afce65321..0000000000
--- a/libs/geometry/test/util/for_each_coordinate.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="for_each_coordinate"
- ProjectGUID="{900CD32E-1B78-40E3-887F-9BCCC0A1041E}"
- RootNamespace="for_each_coordinate"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\for_each_coordinate"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\for_each_coordinate"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\for_each_coordinate.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/util/is_implemented.cpp b/libs/geometry/test/util/is_implemented.cpp
new file mode 100644
index 0000000000..3eed994b43
--- /dev/null
+++ b/libs/geometry/test/util/is_implemented.cpp
@@ -0,0 +1,88 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014 Samuel Debionne, Grenoble, France.
+
+// 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)
+
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/core/reverse_dispatch.hpp>
+#include <boost/geometry/core/tag_cast.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/strategies/tags.hpp>
+
+#include <boost/geometry/algorithms/not_implemented.hpp>
+
+#include <boost/geometry/util/is_implemented.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/bool.hpp>
+
+
+namespace boost { namespace geometry
+{
+
+namespace strategy { namespace services
+{
+
+
+template <typename Strategy> struct tag
+{
+
+ typedef not_implemented type;
+
+};
+
+}} // namespace strategy::services
+
+
+template
+<
+ typename Geometry1, typename Geometry2,
+ typename Strategy,
+ typename Tag1 = typename tag_cast<typename tag<Geometry1>::type, multi_tag>::type,
+ typename Tag2 = typename tag_cast<typename tag<Geometry2>::type, multi_tag>::type,
+ typename StrategyTag = typename strategy::services::tag<Strategy>::type,
+ bool Reverse = reverse_dispatch<Geometry1, Geometry2>::type::value
+>
+struct algorithm_archetype
+ : not_implemented<>
+{};
+
+
+struct strategy_archetype
+{
+ template <typename Geometry1, typename Geometry2>
+ static void apply(Geometry1, Geometry2) {}
+};
+
+
+}} // namespace boost::geometry
+
+
+int test_main(int, char* [])
+{
+ typedef bg::model::d2::point_xy<double> point_type;
+
+ BOOST_MPL_ASSERT((
+ boost::is_same<
+ bg::util::is_implemented2
+ <
+ point_type, point_type,
+ bg::algorithm_archetype<point_type, point_type, bg::strategy_archetype>
+ >::type,
+ boost::mpl::false_
+ >
+ ));
+
+ return 0;
+}
diff --git a/libs/geometry/test/util/math_sqrt.cpp b/libs/geometry/test/util/math_sqrt.cpp
new file mode 100644
index 0000000000..2ca4834a15
--- /dev/null
+++ b/libs/geometry/test/util/math_sqrt.cpp
@@ -0,0 +1,153 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_TEST_MODULE
+#define BOOST_TEST_MODULE test_math_sqrt
+#endif
+
+#include <cmath>
+#include <iostream>
+
+#include <boost/test/included/unit_test.hpp>
+
+#include <boost/config.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
+
+#include "number_types.hpp"
+
+// important: the include above must precede the include below,
+// otherwise the test will fail for the custom number type:
+// custom_with_global_sqrt
+
+#include <boost/geometry/util/math.hpp>
+#include <boost/geometry/algorithms/not_implemented.hpp>
+
+#ifdef HAVE_TTMATH
+# include <boost/geometry/extensions/contrib/ttmath_stub.hpp>
+#endif
+
+namespace bg = boost::geometry;
+
+
+
+
+// call BOOST_CHECK
+template <typename Argument, bool IsFundamental /* true */>
+struct check
+{
+ template <typename Result>
+ static inline void apply(Argument const& arg, Result const& result)
+ {
+ BOOST_CHECK_CLOSE(static_cast<double>(bg::math::sqrt(arg)),
+ static_cast<double>(result),
+ 0.00001);
+ }
+};
+
+
+template <typename Argument>
+struct check<Argument, false>
+{
+ template <typename Result>
+ static inline void apply(Argument const& arg, Result const& result)
+ {
+ Result const tol(0.00001);
+ BOOST_CHECK( bg::math::abs(bg::math::sqrt(arg) - result) < tol );
+ }
+};
+
+
+
+
+
+
+// test sqrt return type and value
+template
+<
+ typename Argument,
+ typename ExpectedResult,
+ typename Result = typename bg::math::detail::square_root
+ <
+ Argument
+ >::return_type,
+ bool IsFundamental = boost::is_fundamental<Argument>::value
+>
+struct check_sqrt
+ : bg::not_implemented<Argument, Result, ExpectedResult>
+{};
+
+
+template <typename Argument, typename Result, bool IsFundamental>
+struct check_sqrt<Argument, Result, Result, IsFundamental>
+{
+ static inline void apply(Argument const& arg, Result const& result)
+ {
+#ifdef BOOST_GEOMETRY_TEST_DEBUG
+ std::cout << "testing: " << typeid(Result).name()
+ << " sqrt(" << typeid(Argument).name()
+ << ")" << std::endl;
+#endif
+ check<Argument, IsFundamental>::apply(arg, result);
+ }
+};
+
+
+
+
+
+
+// test cases
+BOOST_AUTO_TEST_CASE( test_math_sqrt_fundamental )
+{
+ static const double sqrt2 = std::sqrt(2.0);
+ static const long double sqrt2L = std::sqrt(2.0L);
+ static const float sqrt2F = std::sqrt(2.0F);
+
+ check_sqrt<float, float>::apply(2.0F, sqrt2F);
+ check_sqrt<double, double>::apply(2.0, sqrt2);
+ check_sqrt<long double, long double>::apply(2.0L, sqrt2L);
+
+ check_sqrt<char, double>::apply(2, sqrt2);
+ check_sqrt<signed char, double>::apply(2, sqrt2);
+ check_sqrt<short, double>::apply(2, sqrt2);
+ check_sqrt<int, double>::apply(2, sqrt2);
+ check_sqrt<long, double>::apply(2L, sqrt2);
+#if !defined(BOOST_NO_LONG_LONG)
+ check_sqrt<long long, double>::apply(2LL, sqrt2);
+#endif
+#ifdef BOOST_HAS_LONG_LONG
+ check_sqrt
+ <
+ boost::long_long_type, double
+ >::apply(boost::long_long_type(2), sqrt2);
+#endif
+}
+
+
+BOOST_AUTO_TEST_CASE( test_math_sqrt_custom )
+{
+ typedef number_types::custom<double> custom1;
+ typedef custom_global<double> custom2;
+ typedef number_types::custom_with_global_sqrt<double> custom3;
+
+ static const double sqrt2 = std::sqrt(2.0);
+
+ check_sqrt<custom1, custom1>::apply(custom1(2.0), custom1(sqrt2));
+ check_sqrt<custom2, custom2>::apply(custom2(2.0), custom2(sqrt2));
+ check_sqrt<custom3, custom3>::apply(custom3(2.0), custom3(sqrt2));
+
+#ifdef HAVE_TTMATH
+ typedef ttmath_big custom4;
+ typedef ttmath::Big<1, 4> custom5;
+
+ check_sqrt<custom4, custom4>::apply(custom4(2.0), custom4(sqrt2));
+ check_sqrt<custom5, custom5>::apply(custom5(2.0), custom5(sqrt2));
+#endif
+}
diff --git a/libs/geometry/test/util/number_types.hpp b/libs/geometry/test/util/number_types.hpp
new file mode 100644
index 0000000000..bec68bf934
--- /dev/null
+++ b/libs/geometry/test/util/number_types.hpp
@@ -0,0 +1,139 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// Copyright (c) 2014, Oracle and/or its affiliates.
+
+// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
+
+// Licensed under the Boost Software License version 1.0.
+// http://www.boost.org/users/license.html
+
+#ifndef BOOST_GEOMETRY_TEST_UTIL_NUMBER_TYPES_HPP
+#define BOOST_GEOMETRY_TEST_UTIL_NUMBER_TYPES_HPP
+
+#include <cmath>
+
+
+// define a custom number type and its sqrt in own namespace
+namespace number_types
+{
+
+template <typename T>
+struct custom
+{
+ typedef custom<T> self;
+
+ T m_value;
+
+ custom() : m_value(0) {}
+ explicit custom(T const& value) : m_value(value) {}
+
+ bool operator<(self const& other) const
+ {
+ return m_value < other.m_value;
+ }
+
+ self operator-() const
+ {
+ return self(-m_value);
+ }
+
+ self operator-(self const& other) const
+ {
+ return self(m_value - other.m_value);
+ }
+};
+
+template <typename T>
+inline custom<T> sqrt(custom<T> const& c)
+{
+ return custom<T>(std::sqrt(c.m_value));
+}
+
+} // namespace number_types
+
+
+
+
+
+
+// define a custom number type with sqrt in global namespace
+namespace number_types
+{
+
+template <typename T>
+struct custom_with_global_sqrt
+{
+ typedef custom_with_global_sqrt<T> self;
+
+ T m_value;
+
+ custom_with_global_sqrt() : m_value(0) {}
+ explicit custom_with_global_sqrt(T const& value) : m_value(value) {}
+
+ bool operator<(self const& other) const
+ {
+ return m_value < other.m_value;
+ }
+
+ self operator-() const
+ {
+ return self(-m_value);
+ }
+
+ self operator-(self const& other) const
+ {
+ return self(m_value - other.m_value);
+ }
+};
+
+} // namespace number_types
+
+template <typename T>
+inline number_types::custom_with_global_sqrt<T>
+sqrt(number_types::custom_with_global_sqrt<T> const& c)
+{
+ return number_types::custom_with_global_sqrt<T>(std::sqrt(c.m_value));
+}
+
+
+
+
+
+
+
+
+// define a custom number type and its sqrt in global namespace
+template <typename T>
+struct custom_global
+{
+ typedef custom_global<T> self;
+
+ T m_value;
+
+ custom_global() : m_value(0) {}
+ explicit custom_global(T const& value) : m_value(value) {}
+
+ bool operator<(self const& other) const
+ {
+ return m_value < other.m_value;
+ }
+
+ self operator-() const
+ {
+ return self(-m_value);
+ }
+
+ self operator-(self const& other) const
+ {
+ return self(m_value - other.m_value);
+ }
+};
+
+template <typename T>
+inline custom_global<T> sqrt(custom_global<T> const& c)
+{
+ return custom_global<T>(std::sqrt(c.m_value));
+}
+
+#endif // BOOST_GEOMETRY_TEST_UTIL_NUMBER_TYPES_HPP
diff --git a/libs/geometry/test/util/range.cpp b/libs/geometry/test/util/range.cpp
new file mode 100644
index 0000000000..b2813a86d3
--- /dev/null
+++ b/libs/geometry/test/util/range.cpp
@@ -0,0 +1,216 @@
+// Boost.Geometry
+// Unit Test
+
+// Copyright (c) 2014 Oracle and/or its affiliates.
+
+// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
+
+// 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)
+
+
+#include <geometry_test_common.hpp>
+
+#include <vector>
+#include <boost/geometry/util/range.hpp>
+
+namespace bgt {
+
+template <bool MutableIterator>
+struct beginner
+{
+ template <typename Range>
+ typename boost::range_iterator<Range>::type
+ operator()(Range & rng)
+ {
+ return boost::begin(rng);
+ }
+};
+template <>
+struct beginner<false>
+{
+ template <typename Range>
+ typename boost::range_iterator<Range const>::type
+ operator()(Range & rng)
+ {
+ return boost::const_begin(rng);
+ }
+};
+
+template <bool MutableIterator>
+struct ender
+{
+ template <typename Range>
+ typename boost::range_iterator<Range>::type
+ operator()(Range & rng)
+ {
+ return boost::end(rng);
+ }
+};
+template <>
+struct ender<false>
+{
+ template <typename Range>
+ typename boost::range_iterator<Range const>::type
+ operator()(Range & rng)
+ {
+ return boost::const_end(rng);
+ }
+};
+
+struct NonMovable
+{
+ NonMovable(int ii = 0) : i(ii) {}
+ NonMovable(NonMovable const& ii) : i(ii.i) {}
+ NonMovable & operator=(NonMovable const& ii) { i = ii.i; return *this; }
+ operator int() { return i; }
+ int i;
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+private:
+ NonMovable(NonMovable && ii);
+ NonMovable & operator=(NonMovable && ii);
+#endif
+};
+
+struct CopyableAndMovable
+{
+ CopyableAndMovable(int ii = 0) : i(ii) {}
+ CopyableAndMovable(CopyableAndMovable const& ii) : i(ii.i) {}
+ CopyableAndMovable & operator=(CopyableAndMovable const& ii) { i = ii.i; return *this; }
+ operator int() { return i; }
+ int i;
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+ CopyableAndMovable(CopyableAndMovable && ii) : i(std::move(ii.i)) {}
+ CopyableAndMovable & operator=(CopyableAndMovable && ii) { i = std::move(ii.i); return *this; }
+#endif
+};
+
+} // namespace bgt
+
+namespace bgr = bg::range;
+
+template <typename T, bool MutableIterator>
+void test_all()
+{
+ bgt::beginner<MutableIterator> begin;
+ bgt::ender<MutableIterator> end;
+
+ std::vector<T> v;
+ for (int i = 0 ; i < 20 ; ++i)
+ {
+ bgr::push_back(v, i);
+ }
+
+ for (int i = 0 ; i < 20 ; ++i)
+ {
+ BOOST_CHECK(bgr::at(v, i) == i);
+ }
+
+ BOOST_CHECK(bgr::front(v) == 0);
+ BOOST_CHECK(bgr::back(v) == 19);
+
+ BOOST_CHECK(boost::size(v) == 20); // [0,19]
+ bgr::resize(v, 15);
+ BOOST_CHECK(boost::size(v) == 15); // [0,14]
+ BOOST_CHECK(bgr::back(v) == 14);
+
+ bgr::pop_back(v);
+ BOOST_CHECK(boost::size(v) == 14); // [0,13]
+ BOOST_CHECK(bgr::back(v) == 13);
+
+ typename std::vector<T>::iterator
+ it = bgr::erase(v, end(v) - 1);
+ BOOST_CHECK(boost::size(v) == 13); // [0,12]
+ BOOST_CHECK(bgr::back(v) == 12);
+ BOOST_CHECK(it == end(v));
+
+ it = bgr::erase(v, end(v) - 3, end(v));
+ BOOST_CHECK(boost::size(v) == 10); // [0,9]
+ BOOST_CHECK(bgr::back(v) == 9);
+ BOOST_CHECK(it == end(v));
+
+ it = bgr::erase(v, begin(v) + 2);
+ BOOST_CHECK(boost::size(v) == 9); // {0,1,3..9}
+ BOOST_CHECK(bgr::at(v, 1) == 1);
+ BOOST_CHECK(bgr::at(v, 2) == 3);
+ BOOST_CHECK(bgr::back(v) == 9);
+ BOOST_CHECK(it == begin(v) + 2);
+
+ it = bgr::erase(v, begin(v) + 2, begin(v) + 2);
+ BOOST_CHECK(boost::size(v) == 9); // {0,1,3..9}
+ BOOST_CHECK(bgr::at(v, 1) == 1);
+ BOOST_CHECK(bgr::at(v, 2) == 3);
+ BOOST_CHECK(bgr::back(v) == 9);
+ BOOST_CHECK(it == begin(v) + 2);
+
+ it = bgr::erase(v, begin(v) + 2, begin(v) + 5);
+ BOOST_CHECK(boost::size(v) == 6); // {0,1,6..9}
+ BOOST_CHECK(bgr::at(v, 1) == 1);
+ BOOST_CHECK(bgr::at(v, 2) == 6);
+ BOOST_CHECK(bgr::back(v) == 9);
+ BOOST_CHECK(it == begin(v) + 2);
+
+ it = bgr::erase(v, begin(v));
+ BOOST_CHECK(boost::size(v) == 5); // {1,6..9}
+ BOOST_CHECK(bgr::at(v, 0) == 1);
+ BOOST_CHECK(bgr::at(v, 1) == 6);
+ BOOST_CHECK(bgr::back(v) == 9);
+ BOOST_CHECK(it == begin(v));
+
+ it = bgr::erase(v, begin(v), begin(v) + 3);
+ BOOST_CHECK(boost::size(v) == 2); // {8,9}
+ BOOST_CHECK(bgr::at(v, 0) == 8);
+ BOOST_CHECK(bgr::at(v, 1) == 9);
+ BOOST_CHECK(bgr::back(v) == 9);
+ BOOST_CHECK(it == begin(v));
+
+ it = bgr::erase(v, begin(v), end(v));
+ BOOST_CHECK(boost::size(v) == 0);
+ BOOST_CHECK(it == end(v));
+}
+
+void test_detail()
+{
+ int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+ bgr::detail::copy_or_move(arr + 1, arr + 10, arr);
+ BOOST_CHECK(arr[0] == 1);
+
+ std::vector<int> v(10, 0);
+ bgr::detail::copy_or_move(v.begin() + 1, v.begin() + 10, v.begin());
+ BOOST_CHECK(boost::size(v) == 10);
+ bgr::erase(v, v.begin() + 1);
+ BOOST_CHECK(boost::size(v) == 9);
+
+ bgt::NonMovable * arr2[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ bgt::NonMovable foo;
+ arr2[1] = &foo;
+ bgr::detail::copy_or_move(arr2 + 1, arr2 + 10, arr2);
+ BOOST_CHECK(arr2[0] == &foo);
+
+ // Storing pointers in a std::vector is not possible in MinGW C++98
+#if __cplusplus >= 201103L
+ std::vector<bgt::NonMovable*> v2(10, 0);
+ bgr::detail::copy_or_move(v2.begin() + 1, v2.begin() + 10, v2.begin());
+ BOOST_CHECK(boost::size(v2) == 10);
+ bgr::erase(v2, v2.begin() + 1);
+ BOOST_CHECK(boost::size(v2) == 9);
+#endif
+}
+
+int test_main(int, char* [])
+{
+ test_all<int, true>();
+ test_all<int, false>();
+ // Storing non-movable elements in a std::vector is not possible in some implementations of STD lib
+#ifdef BOOST_GEOMETRY_TEST_NONMOVABLE_ELEMENTS
+ test_all<bgt::NonMovable, true>();
+ test_all<bgt::NonMovable, false>();
+#endif
+ test_all<bgt::CopyableAndMovable, true>();
+ test_all<bgt::CopyableAndMovable, false>();
+
+ test_detail();
+
+ return 0;
+}
diff --git a/libs/geometry/test/util/rational.cpp b/libs/geometry/test/util/rational.cpp
index 595d391e2c..8ec47eb9c5 100644
--- a/libs/geometry/test/util/rational.cpp
+++ b/libs/geometry/test/util/rational.cpp
@@ -21,7 +21,7 @@
void test_coordinate_cast(std::string const& s, int expected_nom, int expected_denom)
{
- boost::rational<int> a = bg::detail::coordinate_cast<boost::rational<int> >::apply(s);
+ boost::rational<int> a = bg::detail::coordinate_cast<boost::rational<int> >::apply(s);
BOOST_CHECK_EQUAL(a.numerator(), expected_nom);
BOOST_CHECK_EQUAL(a.denominator(), expected_denom);
}
diff --git a/libs/geometry/test/util/rational.vcproj b/libs/geometry/test/util/rational.vcproj
deleted file mode 100644
index 28ad0a237f..0000000000
--- a/libs/geometry/test/util/rational.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="rational"
- ProjectGUID="{6ABF6324-C1DC-4687-9895-B4CE2B27446F}"
- RootNamespace="rational"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\rational"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\rational"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\rational.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/util/select_most_precise.vcproj b/libs/geometry/test/util/select_most_precise.vcproj
deleted file mode 100644
index ebe8245032..0000000000
--- a/libs/geometry/test/util/select_most_precise.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="select_most_precise"
- ProjectGUID="{D0982142-D3B1-4084-B724-83FB7E49EB98}"
- RootNamespace="select_most_precise"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\select_most_precise"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\select_most_precise"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\select_most_precise.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/util/transform_variant.cpp b/libs/geometry/test/util/transform_variant.cpp
new file mode 100644
index 0000000000..4594e591a3
--- /dev/null
+++ b/libs/geometry/test/util/transform_variant.cpp
@@ -0,0 +1,68 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+// Unit Test
+
+// 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.
+
+// 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)
+
+
+#include <boost/test/included/test_exec_monitor.hpp>
+#include <boost/geometry/util/transform_variant.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/equal.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/type_traits.hpp>
+#include <boost/variant/variant.hpp>
+
+using boost::mpl::placeholders::_;
+
+
+template <typename ExpectedTypes, BOOST_VARIANT_ENUM_PARAMS(typename T)>
+void check(boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)>)
+{
+ BOOST_MPL_ASSERT((
+ boost::mpl::equal<
+ typename boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)>::types,
+ ExpectedTypes
+ >
+ ));
+}
+
+
+int test_main(int, char* [])
+{
+ // Transform Variant to Variant
+ typedef boost::geometry::transform_variant<
+ boost::variant<int, float, long>,
+ boost::add_pointer<_>
+ >::type transformed1;
+
+ check<boost::mpl::vector<int*, float*, long*> >(transformed1());
+
+ // Transform Sequence to Variant (without inserter)
+ typedef boost::geometry::transform_variant<
+ boost::mpl::vector<int, float, long>,
+ boost::add_pointer<_>
+ >::type transformed2;
+
+ check<boost::mpl::vector<int*, float*, long*> >(transformed2());
+
+ // Transform Sequence to Variant (with inserter)
+ typedef boost::geometry::transform_variant<
+ boost::mpl::vector<int, float, long>,
+ boost::add_pointer<_>,
+ boost::mpl::back_inserter<boost::mpl::vector0<> >
+ >::type transformed3;
+
+ check<boost::mpl::vector<int*, float*, long*> >(transformed3());
+
+ return 0;
+}
diff --git a/libs/geometry/test/util/util_tests.sln b/libs/geometry/test/util/util_tests.sln
deleted file mode 100644
index 1e140df838..0000000000
--- a/libs/geometry/test/util/util_tests.sln
+++ /dev/null
@@ -1,49 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "for_each_coordinate", "for_each_coordinate.vcproj", "{900CD32E-1B78-40E3-887F-9BCCC0A1041E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select_most_precise", "select_most_precise.vcproj", "{D0982142-D3B1-4084-B724-83FB7E49EB98}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "write_dsv", "write_dsv.vcproj", "{FC796B9D-2FC4-46C1-B733-9C2C5BB48094}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "as_range", "as_range.vcproj", "{A36D8426-67EB-405C-B6E8-3FBB3374A59B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rational", "rational.vcproj", "{6ABF6324-C1DC-4687-9895-B4CE2B27446F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "calculation_type", "calculation_type.vcproj", "{CF8FE803-A26B-4553-B605-9C28225B5595}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {900CD32E-1B78-40E3-887F-9BCCC0A1041E}.Debug|Win32.ActiveCfg = Debug|Win32
- {900CD32E-1B78-40E3-887F-9BCCC0A1041E}.Debug|Win32.Build.0 = Debug|Win32
- {900CD32E-1B78-40E3-887F-9BCCC0A1041E}.Release|Win32.ActiveCfg = Release|Win32
- {900CD32E-1B78-40E3-887F-9BCCC0A1041E}.Release|Win32.Build.0 = Release|Win32
- {D0982142-D3B1-4084-B724-83FB7E49EB98}.Debug|Win32.ActiveCfg = Debug|Win32
- {D0982142-D3B1-4084-B724-83FB7E49EB98}.Debug|Win32.Build.0 = Debug|Win32
- {D0982142-D3B1-4084-B724-83FB7E49EB98}.Release|Win32.ActiveCfg = Release|Win32
- {D0982142-D3B1-4084-B724-83FB7E49EB98}.Release|Win32.Build.0 = Release|Win32
- {FC796B9D-2FC4-46C1-B733-9C2C5BB48094}.Debug|Win32.ActiveCfg = Debug|Win32
- {FC796B9D-2FC4-46C1-B733-9C2C5BB48094}.Debug|Win32.Build.0 = Debug|Win32
- {FC796B9D-2FC4-46C1-B733-9C2C5BB48094}.Release|Win32.ActiveCfg = Release|Win32
- {FC796B9D-2FC4-46C1-B733-9C2C5BB48094}.Release|Win32.Build.0 = Release|Win32
- {A36D8426-67EB-405C-B6E8-3FBB3374A59B}.Debug|Win32.ActiveCfg = Debug|Win32
- {A36D8426-67EB-405C-B6E8-3FBB3374A59B}.Debug|Win32.Build.0 = Debug|Win32
- {A36D8426-67EB-405C-B6E8-3FBB3374A59B}.Release|Win32.ActiveCfg = Release|Win32
- {A36D8426-67EB-405C-B6E8-3FBB3374A59B}.Release|Win32.Build.0 = Release|Win32
- {6ABF6324-C1DC-4687-9895-B4CE2B27446F}.Debug|Win32.ActiveCfg = Debug|Win32
- {6ABF6324-C1DC-4687-9895-B4CE2B27446F}.Debug|Win32.Build.0 = Debug|Win32
- {6ABF6324-C1DC-4687-9895-B4CE2B27446F}.Release|Win32.ActiveCfg = Release|Win32
- {6ABF6324-C1DC-4687-9895-B4CE2B27446F}.Release|Win32.Build.0 = Release|Win32
- {CF8FE803-A26B-4553-B605-9C28225B5595}.Debug|Win32.ActiveCfg = Debug|Win32
- {CF8FE803-A26B-4553-B605-9C28225B5595}.Debug|Win32.Build.0 = Debug|Win32
- {CF8FE803-A26B-4553-B605-9C28225B5595}.Release|Win32.ActiveCfg = Release|Win32
- {CF8FE803-A26B-4553-B605-9C28225B5595}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/libs/geometry/test/util/write_dsv.vcproj b/libs/geometry/test/util/write_dsv.vcproj
deleted file mode 100644
index 8525f73936..0000000000
--- a/libs/geometry/test/util/write_dsv.vcproj
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="write_dsv"
- ProjectGUID="{FC796B9D-2FC4-46C1-B733-9C2C5BB48094}"
- RootNamespace="write_dsv"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\write_dsv"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\write_dsv"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\write_dsv.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/views/box_view.cpp b/libs/geometry/test/views/box_view.cpp
index e2eab5d212..ef511fefa7 100644
--- a/libs/geometry/test/views/box_view.cpp
+++ b/libs/geometry/test/views/box_view.cpp
@@ -22,7 +22,7 @@
template <typename Box, bool Reverse>
-void test_geometry(std::string const& wkt, std::string const& expected,
+void test_geometry(std::string const& wkt, std::string const& expected,
bg::order_selector expected_order)
{
diff --git a/libs/geometry/test/views/box_view.vcproj b/libs/geometry/test/views/box_view.vcproj
deleted file mode 100644
index ab1036beea..0000000000
--- a/libs/geometry/test/views/box_view.vcproj
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="box_view"
- ProjectGUID="{34A1F53A-DA46-41E6-9E26-740D22D662DC}"
- RootNamespace="box_view"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\box_view"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- EmbedManifest="false"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\box_view"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- EmbedManifest="false"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\box_view.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/views/closeable_view.cpp b/libs/geometry/test/views/closeable_view.cpp
index dde61a0679..3cbabbf95d 100644
--- a/libs/geometry/test/views/closeable_view.cpp
+++ b/libs/geometry/test/views/closeable_view.cpp
@@ -22,7 +22,7 @@
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
-BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian);
+BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
diff --git a/libs/geometry/test/views/closeable_view.vcproj b/libs/geometry/test/views/closeable_view.vcproj
deleted file mode 100644
index 204e1ac305..0000000000
--- a/libs/geometry/test/views/closeable_view.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="closeable_view"
- ProjectGUID="{5C40995A-B6FC-4C94-B552-0D80EC9E2049}"
- RootNamespace="closeable_view"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\closeable_view"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\closeable_view"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\closeable_view.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/views/reversible_closeable.vcproj b/libs/geometry/test/views/reversible_closeable.vcproj
deleted file mode 100644
index b2a3846b1d..0000000000
--- a/libs/geometry/test/views/reversible_closeable.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="reversible_closeable"
- ProjectGUID="{AAA72638-34CD-4A34-8329-984DFC766E24}"
- RootNamespace="reversible_closeable"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\reversible_closeable"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\reversible_closeable"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\reversible_closeable.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/views/reversible_view.vcproj b/libs/geometry/test/views/reversible_view.vcproj
deleted file mode 100644
index f818852101..0000000000
--- a/libs/geometry/test/views/reversible_view.vcproj
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="reversible_view"
- ProjectGUID="{BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}"
- RootNamespace="reversible_view"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\reversible_view"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\reversible_view"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\reversible_view.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/views/segment_view.cpp b/libs/geometry/test/views/segment_view.cpp
index adc9535bdf..8de5319c98 100644
--- a/libs/geometry/test/views/segment_view.cpp
+++ b/libs/geometry/test/views/segment_view.cpp
@@ -76,7 +76,7 @@ void test_all()
int test_main(int, char* [])
{
- std::vector<int> a;
+ std::vector<int> a;
a.push_back(1);
boost::range_iterator<std::vector<int> const>::type it = a.end();
--it;
diff --git a/libs/geometry/test/views/segment_view.vcproj b/libs/geometry/test/views/segment_view.vcproj
deleted file mode 100644
index 9b88401933..0000000000
--- a/libs/geometry/test/views/segment_view.vcproj
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="segment_view"
- ProjectGUID="{B49AC3E2-3497-465B-88C2-BCADA4B4ADAF}"
- RootNamespace="segment_view"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\segment_view"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- ExceptionHandling="2"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- DebugInformationFormat="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- EmbedManifest="false"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)\segment_view"
- ConfigurationType="1"
- InheritedPropertySheets="..\boost.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../..;.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- ExceptionHandling="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- EmbedManifest="false"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\segment_view.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/libs/geometry/test/views/views.sln b/libs/geometry/test/views/views.sln
deleted file mode 100644
index 7fcf73665b..0000000000
--- a/libs/geometry/test/views/views.sln
+++ /dev/null
@@ -1,43 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "closeable_view", "closeable_view.vcproj", "{5C40995A-B6FC-4C94-B552-0D80EC9E2049}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reversible_closeable", "reversible_closeable.vcproj", "{AAA72638-34CD-4A34-8329-984DFC766E24}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reversible_view", "reversible_view.vcproj", "{BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "box_view", "box_view.vcproj", "{34A1F53A-DA46-41E6-9E26-740D22D662DC}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "segment_view", "segment_view.vcproj", "{B49AC3E2-3497-465B-88C2-BCADA4B4ADAF}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {5C40995A-B6FC-4C94-B552-0D80EC9E2049}.Debug|Win32.ActiveCfg = Debug|Win32
- {5C40995A-B6FC-4C94-B552-0D80EC9E2049}.Debug|Win32.Build.0 = Debug|Win32
- {5C40995A-B6FC-4C94-B552-0D80EC9E2049}.Release|Win32.ActiveCfg = Release|Win32
- {5C40995A-B6FC-4C94-B552-0D80EC9E2049}.Release|Win32.Build.0 = Release|Win32
- {AAA72638-34CD-4A34-8329-984DFC766E24}.Debug|Win32.ActiveCfg = Debug|Win32
- {AAA72638-34CD-4A34-8329-984DFC766E24}.Debug|Win32.Build.0 = Debug|Win32
- {AAA72638-34CD-4A34-8329-984DFC766E24}.Release|Win32.ActiveCfg = Release|Win32
- {AAA72638-34CD-4A34-8329-984DFC766E24}.Release|Win32.Build.0 = Release|Win32
- {BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}.Debug|Win32.ActiveCfg = Debug|Win32
- {BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}.Debug|Win32.Build.0 = Debug|Win32
- {BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}.Release|Win32.ActiveCfg = Release|Win32
- {BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}.Release|Win32.Build.0 = Release|Win32
- {34A1F53A-DA46-41E6-9E26-740D22D662DC}.Debug|Win32.ActiveCfg = Debug|Win32
- {34A1F53A-DA46-41E6-9E26-740D22D662DC}.Debug|Win32.Build.0 = Debug|Win32
- {34A1F53A-DA46-41E6-9E26-740D22D662DC}.Release|Win32.ActiveCfg = Release|Win32
- {34A1F53A-DA46-41E6-9E26-740D22D662DC}.Release|Win32.Build.0 = Release|Win32
- {B49AC3E2-3497-465B-88C2-BCADA4B4ADAF}.Debug|Win32.ActiveCfg = Debug|Win32
- {B49AC3E2-3497-465B-88C2-BCADA4B4ADAF}.Debug|Win32.Build.0 = Debug|Win32
- {B49AC3E2-3497-465B-88C2-BCADA4B4ADAF}.Release|Win32.ActiveCfg = Release|Win32
- {B49AC3E2-3497-465B-88C2-BCADA4B4ADAF}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal