![]() |
Boost-Commit : |
Subject: [Boost-commit] svn:boost r56787 - in sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html: . images
From: barend.gehrels_at_[hidden]
Date: 2009-10-13 12:20:48
Author: barendgehrels
Date: 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
New Revision: 56787
URL: http://svn.boost.org/trac/boost/changeset/56787
Log:
Added doc and example folders
Some doc changes in sources plus some moves to extension
Added:
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/annotated.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/append_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/append_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/arithmetic_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/arithmetic_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/as__range_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign__box__corner_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/assign__box__corner_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/base_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/base_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/boost__array__as__linestring_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/boost__array__as__linestring_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/boost__array__as__ring_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/boost__array__as__ring_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box__concept_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/box__concept_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/buffer_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/buffer_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c01__custom__point__example_8cpp-example.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c02__custom__box__example_8cpp-example.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c04__a__custom__triangle__example_8cpp-example.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c04__b__custom__triangle__example_8cpp-example.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c05__custom__point__pointer__example_8cpp-example.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c__array_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c__array_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c__array__cartesian_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/c__array__cartesian_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/calculate__null_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/calculate__null_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__area_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__area_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__centroid_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__centroid_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__compare_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__compare_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__distance_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__distance_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__envelope_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__envelope_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__side_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__side_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__within_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cart__within_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian2d_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian2d_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian3d_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cartesian3d_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/centroid_polygon.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/centroid_ring.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/circular__iterator_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/circular__iterator_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/class_point_list.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classcore__dispatch_1_1dimension.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classes.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1box-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1box.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1centroid__exception-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1centroid__exception.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1degree.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1dsv__manipulator-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1dsv__manipulator.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linear__ring.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linestring-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1linestring.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1nsphere-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1nsphere.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1point__xy.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1polygon.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1radian.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__spherical__excess-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__spherical__excess.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__triangles-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1area_1_1by__triangles.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1bashein__detmer-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1bashein__detmer.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1geolib1995-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1centroid_1_1geolib1995.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1convex__hull_1_1graham-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1convex__hull_1_1graham.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1haversine-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1haversine.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1ll__point__segment-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1distance_1_1ll__point__segment.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1intersection_1_1liang__barsky-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1intersection_1_1liang__barsky.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1simplify_1_1douglas__peucker-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1winding-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1strategy_1_1within_1_1winding.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1svg__manipulator-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/classggl_1_1svg__manipulator.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clear_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clear_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clip_linestring.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clip_polygon.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/clip_segment_segment.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/combine_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/combine_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/combine_box_box.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/combine_box_point.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/compiling.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/concepts.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/convert_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/convert_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/convexhull_polygon_polygon.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__dimension_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__dimension_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__system_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__system_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__type_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/coordinate__type_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy__segments_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/copy__segments_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2geometry__id_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2geometry__id_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2is__multi_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2is__multi_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2point__type_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2point__type_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2ring__type_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2ring__type_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2tags_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2tags_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2topological__dimension_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/core_2topological__dimension_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cs_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/cs_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/de9im_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/de9im_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/design.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/direction_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/direction_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/disjoint_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/disjoint_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__result_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/distance__result_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/dot__product_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/dot__product_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/download.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen.css (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__design__cross__section_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__design__cross__section_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__examples_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__examples_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__mainpage_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__mainpage_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__pages_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/doxygen__pages_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/dsv.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/enrich__intersection__points_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/enrich__intersection__points_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/envelope_polygon.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/equals_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/equals_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ever__circling__iterator_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ever__circling__iterator_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/examples.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/exception_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/exception_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/exterior__ring_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/exterior__ring_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/files.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/for__each_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/for__each_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/for__each__coordinate_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/for__each__coordinate_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/foreach_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/foreach_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x62.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x63.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x64.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x65.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x66.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x67.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x68.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x69.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6c.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6d.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6e.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x6f.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x70.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x72.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x73.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x74.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x75.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x76.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x77.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x78.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x79.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_0x7e.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_func.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_rela.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/functions_vars.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/geometries_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/geometries_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/get__cs__as__radian_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/get__cs__as__radian_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/get__intersection__points_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/get__intersection__points_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/globals.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/globals_defs.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__access.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__area.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__arithmetic.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__boolean__relations.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__buffer.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__centroid.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__combine.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__concepts.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__convert.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__convex__hull.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__core.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__cs.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__distance.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__envelope.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__intermediate.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__length.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__loop.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__overlay.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__perimeter.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__sectionalize.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__selected.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__simplify.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__svg.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__traits.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__transform.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/group__utility.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/haversine_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/haversine_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/hierarchy.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/images/
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/images/draft.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/images/ggl-logo-big.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/images/proposed_boost.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/index.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/interior__rings_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/interior__rings_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intermediate_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intermediate_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__linestring_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__linestring_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__point_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__point_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__points_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__points_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__result_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersection__result_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersects_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/intersects_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/inverse__transformer_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/inverse__transformer_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/is__linear_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/is__linear_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/iterators_2point__const__iterator_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/iterators_2point__const__iterator_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/less_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/less_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linear__ring_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linear__ring_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linestring_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linestring_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linestring__concept_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/linestring__concept_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/loop_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/loop_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/make_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/make_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/map__transformer_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/map__transformer_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/math_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/math_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/matrix__transformers_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/matrix__transformers_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/merge__intersection__points_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/merge__intersection__points_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/modify__with__predicate_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/modify__with__predicate_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/modules.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2area_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2area_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2centroid_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2centroid_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2convex__hull_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2convex__hull_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2correct_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2correct_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2distance_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2distance_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2envelope_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2envelope_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2get__section_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2get__section_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2intersection_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2intersection_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2length_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2length_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2num__points_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2num__points_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2perimeter_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2perimeter_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2sectionalize_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2sectionalize_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2simplify_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2simplify_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2transform_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2transform_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2within_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2algorithms_2within_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2geometry__id_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2geometry__id_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2is__multi_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2is__multi_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2point__type_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2point__type_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2ring__type_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2ring__type_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2tags_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2tags_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2topological__dimension_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2core_2topological__dimension_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2iterators_2point__const__iterator_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi_2iterators_2point__const__iterator_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__linestring_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__linestring_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__point_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__point_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__polygon_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__polygon_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__sum_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/multi__sum_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1concept.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1cs.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1math.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1policies.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1policies_1_1relate.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1area.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1centroid.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1compare.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1convex__hull.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1distance.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1envelope.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1envelope_1_1shift.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1intersection.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1side.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1simplify.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1transform.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1strategy_1_1within.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaceggl_1_1traits.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_func.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespacemembers_vars.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/namespaces.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/not_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/not_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere__concept_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/nsphere__concept_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ogc.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/output_main.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/overlaps_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/overlaps_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/pages.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/performance.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__concept_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__concept_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__xy_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/point__xy_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon__concept_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/polygon__concept_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radian__access_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radian__access_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radius_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/radius_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2box_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2box_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2linestring_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2linestring_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2point_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/register_2point_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/replace__point__type_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/replace__point__type_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/reverse__dispatch_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/reverse__dispatch_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ring_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ring_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ring__concept_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/ring__concept_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__concept_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__concept_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__identifier_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__identifier_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__iterator_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/segment__iterator_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/select__coordinate__type_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/select__coordinate__type_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/select__most__precise_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/select__most__precise_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/selected_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/selected_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/self__intersection__points_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/self__intersection__points_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/simplify_linestring.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__area_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__area_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__envelope_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/sph__envelope_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/status.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/std__as__linestring_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/std__as__linestring_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/std__as__ring_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/std__as__ring_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategies_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategies_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategy__traits_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategy__traits_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategy__transform_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/strategy__transform_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1area__result-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1area__result.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1as__range__type-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1as__range__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1box__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cartesian__distance-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cartesian__distance.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cartesian__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1circular__iterator-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1circular__iterator.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_box-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_box.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_box-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_box.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_linestring-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_linestring.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_nsphere-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_nsphere.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_point-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_point.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_polygon-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_polygon.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_ring-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_ring.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_segment-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_const_segment.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_linestring-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_linestring.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_nsphere-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_nsphere.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_point.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_polygon-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_polygon.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_ring-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_ring.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_segment-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1concept_1_1_segment.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__system-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__system.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__type-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1coordinate__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1cartesian.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1geographic-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1geographic.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1polar-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1polar.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1spherical-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs_1_1spherical.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs__tag-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1cs__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im__segment-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1de9im__segment.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1dimension.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1distance__result-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1distance__result.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1ever__circling__iterator-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1ever__circling__iterator.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1exception.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1geographic__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1geometry__collection__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1geometry__id.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1geometry__not__recognized__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1interior__type-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1interior__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1is__linear.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1is__multi.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1is__radian.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1less-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1less.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1linestring__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__linestring-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__linestring.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__linestring__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__point-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__point.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__point__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__polygon-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__polygon.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1multi__polygon__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1nsphere__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__const__iterator-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__const__iterator.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__type-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1point__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1direction__type-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1direction__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__de9im-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__de9im.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__direction-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__direction.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__intersection__points-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__intersection__points.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__tupled-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1policies_1_1relate_1_1segments__tupled.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1polygon__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1radius__type-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1radius__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1replace__point__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1reverse__dispatch.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1ring__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1ring__type-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1ring__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1section-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1section.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1sections-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1sections.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__identifier-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__identifier.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__intersection__points-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__intersection__points.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__iterator-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__iterator.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1segment__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1select__coordinate__type-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1select__coordinate__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1select__most__precise-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1select__most__precise.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1spherical__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1euclidian-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1compare_1_1euclidian.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1pythagoras-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1pythagoras.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1xy__point__segment-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1distance_1_1xy__point__segment.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1combine__xy-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1combine__xy.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1combine__xy_1_1state-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1combine__xy_1_1state.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1grow__ll-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1grow__ll.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1grow__ll_1_1state-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1grow__ll_1_1state.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01degree_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01degree_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01radian_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1envelope_1_1shift_1_1shifted_3_01radian_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1not__implemented.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1side_1_1xy__side-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1side_1_1xy__side.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__direct-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__direct.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__per__coordinate-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1copy__per__coordinate.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1degree__radian__vv-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1degree__radian__vv.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1degree__radian__vv__3-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1degree__radian__vv__3.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__2-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__2.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__3-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__3.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__spherical__2__to__cartesian__3-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__spherical__2__to__cartesian__3.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__spherical__3__to__cartesian__3-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1from__spherical__3__to__cartesian__3.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1inverse__transformer-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1inverse__transformer.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1map__transformer-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1map__transformer.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1rotate__transformer-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1rotate__transformer.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1scale__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_012_00_012_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1translate__transformer_3_01_p1_00_01_p2_00_013_00_013_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_012_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1transform_1_1ublas__transformer_3_01_p1_00_01_p2_00_013_00_012_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1within_1_1franklin-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy_1_1within_1_1franklin.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__area-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__area.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__centroid-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__centroid.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__compare-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__compare.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__convex__hull-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__convex__hull.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance__segment-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__distance__segment.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__envelope-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__envelope.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__parse-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__parse.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__side-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__side.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_p1_00_01_p2_01_4_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1pythagoras_3_01_p1_00_01_p2_01_4_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_segmed55c3cfc5827a9fce761418deab6f486.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag_3_01strategy_1_1distance_1_1xy__point__segment_3_01_point_00_01_segment_00_01_p_p_strategy_01_4_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag__distance__point__point.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag__distance__point__segment.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__tag__unknown.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__transform-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__transform.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__within-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1strategy__within.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1tag-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1topological__dimension.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1access.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1access_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1access_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1append__point.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1clear.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__system.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__system_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__system_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__type_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1coordinate__type_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1cs__tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1dimension.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1dimension_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1exterior__ring.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1indexed__access.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1interior__rings.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1interior__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1point__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1radius__access.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1radius__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1ring__type.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1tag-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1tag.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1tag_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1tag_3_01ggl_1_1detail_1_1intersection_1_1intersection__point_3_01_p_01_4_01_4.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1use__std-members.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/structggl_1_1traits_1_1use__std.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tab_b.gif (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tab_l.gif (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tab_r.gif (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tabs.css (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tag_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tag_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/traverse_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/traverse_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tuple_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tuple_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tuple__cartesian_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tuple__cartesian_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tupled_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/tupled_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/within_polygon.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/within_ring.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__dsv_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__dsv_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__svg_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__svg_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__svg__multi_8hpp.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/write__svg__multi_8hpp_source.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/x01__qt__example_8cpp-example.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/x01_qt_example_output.png (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/x03__a__soci__example_8cpp-example.html (contents, props changed)
sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/x03__b__soci__example_8cpp-example.html (contents, props changed)
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/core/access.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1access.html">ggl::traits::access< G ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Traits class which gives <a class="el" href="structggl_1_1traits_1_1access.html" title="Traits class which gives access (get,set) to points.">access</a> (get,set) to points. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1indexed__access.html">ggl::traits::indexed_access< G, I, D ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Traits class defining "get" and "set" to get and set <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> coordinate values. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1traits_1_1use__std.html">ggl::traits::use_std< G ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Traits class, optional, indicating that the std-library should be used. More...<br></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1traits.html">ggl::traits</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<std::size_t I, std::size_t D, typename G > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">coordinate_type< G >::type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#gd3c007fcbae837d56d13aa77ed03f920">ggl::get</a> (const G &geometry, detail::signature_getset_index_dimension *dummy=0)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">get a coordinate value of a <a class="el" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a> / <a class="el" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment</a> <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<std::size_t D, typename G > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">coordinate_type< G >::type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f">ggl::get</a> (const G &geometry, detail::signature_getset_dimension *dummy=0)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">get a coordinate value of a <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> / <a class="el" href="classggl_1_1nsphere.html" title="Class nsphere: defines a circle or a sphere: a point with radius.">nsphere</a> <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<std::size_t I, std::size_t D, typename G > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g6ced3f6383c5e664984c54a36a1d78a2">ggl::set</a> (G &geometry, const typename coordinate_type< G >::type &value, detail::signature_getset_index_dimension *dummy=0)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">assign a coordinate value of a <a class="el" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a> / <a class="el" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment</a> <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<std::size_t D, typename G > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a">ggl::set</a> (G &geometry, const typename coordinate_type< G >::type &value, detail::signature_getset_dimension *dummy=0)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">assign coordinate value to a <a class="el" href="classggl_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> / sphere <br></td></tr>
+<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html#0df0bc9b23e7d20e4596c25071039f0a">ggl::max_corner</a> = 1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html#1ce1f1fae9b689b692d623ee76d20857">ggl::min_corner</a> = 0</td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/access_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,282 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/core/access.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_CORE_ACCESS_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_CORE_ACCESS_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <cstddef></span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/type_traits/remove_const.hpp></span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/concept_check.hpp></span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="coordinate__type_8hpp.html">ggl/core/coordinate_type.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="core_2point__type_8hpp.html">ggl/core/point_type.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="tag_8hpp.html">ggl/core/tag.hpp</a>></span>
+<a name="l00020"></a>00020
+<a name="l00021"></a><a class="code" href="namespaceggl.html">00021</a> <span class="keyword">namespace </span>ggl
+<a name="l00022"></a>00022 {
+<a name="l00023"></a>00023
+<a name="l00024"></a><a class="code" href="namespaceggl.html#1ce1f1fae9b689b692d623ee76d20857">00024</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespaceggl.html#1ce1f1fae9b689b692d623ee76d20857">min_corner</a> = 0;
+<a name="l00025"></a><a class="code" href="namespaceggl.html#0df0bc9b23e7d20e4596c25071039f0a">00025</a> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="namespaceggl.html#0df0bc9b23e7d20e4596c25071039f0a">max_corner</a> = 1;
+<a name="l00026"></a>00026
+<a name="l00027"></a><a class="code" href="namespaceggl_1_1traits.html">00027</a> <span class="keyword">namespace </span>traits
+<a name="l00028"></a>00028 {
+<a name="l00029"></a>00029
+<a name="l00041"></a>00041 <span class="keyword">template</span> <<span class="keyword">typename</span> G>
+<a name="l00042"></a><a class="code" href="structggl_1_1traits_1_1access.html">00042</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1access.html" title="Traits class which gives access (get,set) to points.">access</a> {};
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044
+<a name="l00058"></a>00058 <span class="keyword">template</span> <<span class="keyword">typename</span> G, std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D>
+<a name="l00059"></a><a class="code" href="structggl_1_1traits_1_1indexed__access.html">00059</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1indexed__access.html" title="Traits class defining &quot;get&quot; and &quot;set&quot; to get and set point coordinate...">indexed_access</a> {};
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061
+<a name="l00075"></a>00075 <span class="keyword">template</span> <<span class="keyword">typename</span> G>
+<a name="l00076"></a><a class="code" href="structggl_1_1traits_1_1use__std.html">00076</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1traits_1_1use__std.html" title="Traits class, optional, indicating that the std-library should be used.">use_std</a>
+<a name="l00077"></a>00077 {
+<a name="l00078"></a><a class="code" href="structggl_1_1traits_1_1use__std.html#17f62fd601472a4c970adeda2281f145">00078</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="structggl_1_1traits_1_1use__std.html#17f62fd601472a4c970adeda2281f145">value</a> = <span class="keyword">true</span>;
+<a name="l00079"></a>00079 };
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 } <span class="comment">// namespace traits</span>
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083
+<a name="l00084"></a>00084 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="keyword">namespace </span>core_dispatch
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> D>
+<a name="l00088"></a>00088 <span class="keyword">struct </span>access
+<a name="l00089"></a>00089 {
+<a name="l00090"></a>00090 <span class="comment">//static inline T get(const G& ) {}</span>
+<a name="l00091"></a>00091 <span class="comment">//static inline void set(G& g, const T& value) {}</span>
+<a name="l00092"></a>00092 };
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D>
+<a name="l00095"></a>00095 <span class="keyword">struct </span>indexed_access
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 <span class="comment">//static inline T get(const G& ) {}</span>
+<a name="l00098"></a>00098 <span class="comment">//static inline void set(G& g, const T& value) {}</span>
+<a name="l00099"></a>00099 };
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> D>
+<a name="l00102"></a>00102 <span class="keyword">struct </span>access<point_tag, P, T, D>
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104 <span class="keyword">static</span> <span class="keyword">inline</span> T <span class="keyword">get</span>(<span class="keyword">const</span> P& p)
+<a name="l00105"></a>00105 {
+<a name="l00106"></a>00106 <span class="keywordflow">return</span> traits::access<P>::template get<D>(p);
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(P& p, <span class="keyword">const</span> T& value)
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 traits::access<P>::template set<D>(p, value);
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 };
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="keyword">template</span> <<span class="keyword">typename</span> S, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> D>
+<a name="l00115"></a>00115 <span class="keyword">struct </span>access<nsphere_tag, S, T, D>
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keyword">static</span> <span class="keyword">inline</span> T <span class="keyword">get</span>(<span class="keyword">const</span> S& s)
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119 <span class="keywordflow">return</span> traits::access<S>::template get<D>(s);
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(S& s, <span class="keyword">const</span> T& value)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 traits::access<S>::template set<D>(s, value);
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 };
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="keyword">template</span> <<span class="keyword">typename</span> B, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D>
+<a name="l00128"></a>00128 <span class="keyword">struct </span>indexed_access<box_tag, B, T, I, D>
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 <span class="keyword">static</span> <span class="keyword">inline</span> T <span class="keyword">get</span>(<span class="keyword">const</span> B& b)
+<a name="l00131"></a>00131 {
+<a name="l00132"></a>00132 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">traits::indexed_access<B, I, D>::get</a>(b);
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(B& b, <span class="keyword">const</span> T& value)
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">traits::indexed_access<B, I, D>::set</a>(b, value);
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 };
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140 <span class="keyword">template</span> <<span class="keyword">typename</span> S, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D>
+<a name="l00141"></a>00141 <span class="keyword">struct </span>indexed_access<segment_tag, S, T, I, D>
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <span class="keyword">static</span> <span class="keyword">inline</span> T <span class="keyword">get</span>(<span class="keyword">const</span> S& segment)
+<a name="l00144"></a>00144 {
+<a name="l00145"></a>00145 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">traits::indexed_access<S, I, D>::get</a>(segment);
+<a name="l00146"></a>00146 }
+<a name="l00147"></a>00147 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(S& segment, <span class="keyword">const</span> T& value)
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">traits::indexed_access<S, I, D>::set</a>(segment, value);
+<a name="l00150"></a>00150 }
+<a name="l00151"></a>00151 };
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 } <span class="comment">// namespace core_dispatch</span>
+<a name="l00154"></a>00154 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00155"></a>00155 <span class="preprocessor"></span>
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00158"></a>00158 <span class="preprocessor"></span><span class="keyword">namespace </span>detail
+<a name="l00159"></a>00159 {
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161 <span class="comment">// Two dummy tags to distinguish get/set variants below.</span>
+<a name="l00162"></a>00162 <span class="comment">// They don't have to be specified by the user. The functions are distinguished</span>
+<a name="l00163"></a>00163 <span class="comment">// by template signature also, but for e.g. GCC this is not enough. So give them</span>
+<a name="l00164"></a>00164 <span class="comment">// a different signature.</span>
+<a name="l00165"></a>00165 <span class="keyword">struct </span>signature_getset_dimension {};
+<a name="l00166"></a>00166 <span class="keyword">struct </span>signature_getset_index_dimension {};
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 } <span class="comment">// namespace detail</span>
+<a name="l00169"></a>00169 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00170"></a>00170 <span class="preprocessor"></span>
+<a name="l00171"></a>00171
+<a name="l00181"></a>00181 <span class="keyword">template</span> <std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
+<a name="l00182"></a><a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f">00182</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<G>::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G& geometry,
+<a name="l00183"></a>00183 detail::signature_getset_dimension* dummy = 0)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 boost::ignore_unused_variable_warning(dummy);
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const<G>::type ncg_type;
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 <span class="keyword">typedef</span> core_dispatch::access
+<a name="l00190"></a>00190 <
+<a name="l00191"></a>00191 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::type</a>,
+<a name="l00192"></a>00192 ncg_type,
+<a name="l00193"></a>00193 <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<ncg_type>::type</a>,
+<a name="l00194"></a>00194 D
+<a name="l00195"></a>00195 > coord_access_type;
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">coord_access_type::get</a>(geometry);
+<a name="l00198"></a>00198 }
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200
+<a name="l00210"></a>00210 <span class="keyword">template</span> <std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
+<a name="l00211"></a><a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a">00211</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(G& geometry, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<G>::type</a>& value,
+<a name="l00212"></a>00212 detail::signature_getset_dimension* dummy = 0)
+<a name="l00213"></a>00213 {
+<a name="l00214"></a>00214 boost::ignore_unused_variable_warning(dummy);
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const<G>::type ncg_type;
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 <span class="keyword">typedef</span> core_dispatch::access
+<a name="l00219"></a>00219 <
+<a name="l00220"></a>00220 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::type</a>,
+<a name="l00221"></a>00221 ncg_type,
+<a name="l00222"></a>00222 <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<ncg_type>::type</a>,
+<a name="l00223"></a>00223 D
+<a name="l00224"></a>00224 > coord_access_type;
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">coord_access_type::set</a>(geometry, value);
+<a name="l00227"></a>00227 }
+<a name="l00228"></a>00228
+<a name="l00229"></a>00229 <span class="comment">// Note: doxygen needs a construct to distinguish get/set (like the gcc compiler)</span>
+<a name="l00230"></a>00230
+<a name="l00241"></a>00241 <span class="keyword">template</span> <std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
+<a name="l00242"></a><a class="code" href="group__access.html#gd3c007fcbae837d56d13aa77ed03f920">00242</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<G>::type</a> <span class="keyword">get</span>(<span class="keyword">const</span> G& geometry,
+<a name="l00243"></a>00243 detail::signature_getset_index_dimension* dummy = 0)
+<a name="l00244"></a>00244 {
+<a name="l00245"></a>00245 boost::ignore_unused_variable_warning(dummy);
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const<G>::type ncg_type;
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 <span class="keyword">typedef</span> core_dispatch::indexed_access
+<a name="l00250"></a>00250 <
+<a name="l00251"></a>00251 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::type</a>,
+<a name="l00252"></a>00252 ncg_type,
+<a name="l00253"></a>00253 <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<ncg_type>::type</a>,
+<a name="l00254"></a>00254 I,
+<a name="l00255"></a>00255 D
+<a name="l00256"></a>00256 > coord_access_type;
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g6cf833a7f9622af2fc05fd94aa61153f" title="get a coordinate value of a point / nsphere">coord_access_type::get</a>(geometry);
+<a name="l00259"></a>00259 }
+<a name="l00260"></a>00260
+<a name="l00271"></a>00271 <span class="keyword">template</span> <std::<span class="keywordtype">size_t</span> I, std::<span class="keywordtype">size_t</span> D, <span class="keyword">typename</span> G>
+<a name="l00272"></a><a class="code" href="group__access.html#g6ced3f6383c5e664984c54a36a1d78a2">00272</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">set</span>(G& geometry, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<G>::type</a>& value,
+<a name="l00273"></a>00273 detail::signature_getset_index_dimension* dummy = 0)
+<a name="l00274"></a>00274 {
+<a name="l00275"></a>00275 boost::ignore_unused_variable_warning(dummy);
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const<G>::type ncg_type;
+<a name="l00278"></a>00278
+<a name="l00279"></a>00279 <span class="keyword">typedef</span> core_dispatch::indexed_access
+<a name="l00280"></a>00280 <
+<a name="l00281"></a>00281 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::type</a>, ncg_type,
+<a name="l00282"></a>00282 <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<ncg_type>::type</a>,
+<a name="l00283"></a>00283 I,
+<a name="l00284"></a>00284 D
+<a name="l00285"></a>00285 > coord_access_type;
+<a name="l00286"></a>00286
+<a name="l00287"></a>00287 <a class="code" href="group__access.html#g411ad2eab588e3fa0f0a3d35c79cbb4a" title="assign coordinate value to a point / sphere">coord_access_type::set</a>(geometry, value);
+<a name="l00288"></a>00288 }
+<a name="l00289"></a>00289
+<a name="l00290"></a>00290 } <span class="comment">// namespace ggl</span>
+<a name="l00291"></a>00291
+<a name="l00292"></a>00292 <span class="preprocessor">#endif // GGL_CORE_ACCESS_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/overlay/adapt_turns.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename V > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">ggl::adapt_turns</a> (V &intersection_points)</td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/adapt__turns_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,621 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/overlay/adapt_turns.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ADAPT_TURNS_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ADAPT_TURNS_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <algorithm></span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="coordinate__type_8hpp.html">ggl/core/coordinate_type.hpp</a>></span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="equals_8hpp.html">ggl/algorithms/equals.hpp</a>></span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="keyword">namespace </span>ggl
+<a name="l00025"></a>00025 {
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a> {
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="comment">// TEMP: another COPY of side</span>
+<a name="l00034"></a>00034 <span class="comment">// TODO: solve this inside SIDE!!!</span>
+<a name="l00035"></a>00035 <span class="keyword">template</span> <<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2, <span class="keyword">typename</span> P>
+<a name="l00036"></a>00036 <span class="keyword">inline</span> <span class="keywordtype">int</span> the_side(P1 <span class="keyword">const</span>& p1, P2 <span class="keyword">const</span>& p2, P <span class="keyword">const</span>& p)
+<a name="l00037"></a>00037 {
+<a name="l00038"></a>00038 <span class="keyword">typedef</span> <span class="keyword">typename</span> select_coordinate_type<P, P1>::type T;
+<a name="l00039"></a>00039
+<a name="l00040"></a>00040 T dx = get<0>(p2) - get<0>(p1);
+<a name="l00041"></a>00041 T dy = get<1>(p2) - get<1>(p1);
+<a name="l00042"></a>00042 T dpx = get<0>(p) - get<0>(p1);
+<a name="l00043"></a>00043 T dpy = get<1>(p) - get<1>(p1);
+<a name="l00044"></a>00044 T product = dx * dpy - dy * dpx;
+<a name="l00045"></a>00045 <span class="keywordflow">return</span> product > 0 ? 1 : product < 0 ? -1 : 0;
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00049"></a>00049 <span class="keyword">inline</span> <span class="keywordtype">void</span> join_adapt(T& info, <span class="keywordtype">int</span> direction)
+<a name="l00050"></a>00050 {
+<a name="l00051"></a>00051 info.first->direction = direction;
+<a name="l00052"></a>00052 info.second->direction = direction;
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00058"></a>00058 <span class="keyword">inline</span> <span class="keywordtype">void</span> both_same(T <span class="keyword">const</span>& <a class="code" href="namespaceggl_1_1math.html#54fc384779fa97a61e07149d880a599c">pi</a>, T & pk, T <span class="keyword">const</span>& qu, T& qw, <span class="keywordtype">int</span> dir_p, <span class="keywordtype">int</span> dir_q, <span class="keywordtype">int</span> direction)
+<a name="l00059"></a>00059 {
+<a name="l00060"></a>00060 <span class="comment">// Comments are for "both Left"</span>
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (dir_q == direction) <span class="comment">// If (Qw left-of Qu)</span>
+<a name="l00062"></a>00062 {
+<a name="l00063"></a>00063 <span class="keywordflow">if</span> (dir_p == -direction) <span class="comment">// if (Pk right-of Pi)</span>
+<a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="comment">// make Pk Right, Qw Left</span>
+<a name="l00066"></a>00066 join_adapt(pk, -direction);
+<a name="l00067"></a>00067 join_adapt(qw, direction);
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pk.first->direction == -direction) <span class="comment">// else if (Pk right-of Qu)</span>
+<a name="l00070"></a>00070 {
+<a name="l00071"></a>00071 <span class="comment">// make both Right</span>
+<a name="l00072"></a>00072 join_adapt(pk, -direction);
+<a name="l00073"></a>00073 join_adapt(qw, -direction);
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076 <span class="keywordflow">else</span>
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="keywordflow">if</span> (dir_p == -direction <span class="comment">// if (Pk right-of Pi</span>
+<a name="l00079"></a>00079 || pk.first->direction == direction) <span class="comment">// || Pk left-of Qu)</span>
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081 <span class="comment">// make both Left</span>
+<a name="l00082"></a>00082 join_adapt(pk, direction);
+<a name="l00083"></a>00083 join_adapt(qw, direction);
+<a name="l00084"></a>00084 }
+<a name="l00085"></a>00085 }
+<a name="l00086"></a>00086 }
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00089"></a>00089 <span class="keyword">inline</span> <span class="keywordtype">void</span> crossing(T <span class="keyword">const</span>& pi, T & pk, T <span class="keyword">const</span>& qu, T& qw, <span class="keywordtype">int</span> dir_p, <span class="keywordtype">int</span> dir_q, <span class="keywordtype">int</span> direction)
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (dir_p == direction) <span class="comment">// If (Pk left-of Pi)</span>
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 <span class="keywordflow">if</span> (pk.first->direction == -direction) <span class="comment">// if (Pk right-of Qu)</span>
+<a name="l00094"></a>00094 {
+<a name="l00095"></a>00095 <span class="comment">// make both Right</span>
+<a name="l00096"></a>00096 join_adapt(pk, -direction);
+<a name="l00097"></a>00097 join_adapt(qw, -direction);
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099 <span class="keywordflow">else</span>
+<a name="l00100"></a>00100 {
+<a name="l00101"></a>00101 <span class="comment">// make Pk Left, Qw Right</span>
+<a name="l00102"></a>00102 join_adapt(pk, direction);
+<a name="l00103"></a>00103 join_adapt(qw, -direction);
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
+<a name="l00111"></a>00111 <span class="keyword">inline</span> <span class="keywordtype">void</span> collinear(T <span class="keyword">const</span>& pi, T & pk, T <span class="keyword">const</span>& qu, T& qw, <span class="keywordtype">int</span> dir_p, <span class="keywordtype">int</span> dir_q, <span class="keywordtype">int</span> direction)
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (dir_p == direction <span class="comment">// If (Pk left-of Pi</span>
+<a name="l00114"></a>00114 && dir_q == direction <span class="comment">// && Qw left-of Qu</span>
+<a name="l00115"></a>00115 && pk.first->direction == -direction) <span class="comment">// && Pk right-of Qu</span>
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="comment">// make both Right</span>
+<a name="l00118"></a>00118 join_adapt(pk, -direction);
+<a name="l00119"></a>00119 join_adapt(qw, -direction);
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dir_p == -direction <span class="comment">// If (Pk right-of Pi</span>
+<a name="l00122"></a>00122 && dir_q == -direction) <span class="comment">// && Qw right-of Qu</span>
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <span class="comment">// make both Left</span>
+<a name="l00125"></a>00125 join_adapt(pk, direction);
+<a name="l00126"></a>00126 join_adapt(qw, direction);
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> P>
+<a name="l00132"></a>00132 <span class="keyword">inline</span> <span class="keywordtype">void</span> assign_pq(T <span class="keyword">const</span>& info, P& p, P& q)
+<a name="l00133"></a>00133 {
+<a name="l00134"></a>00134 <span class="keywordflow">if</span> (info.seg_id.source_index == 0)
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 <span class="keywordflow">if</span> (info.arrival == 1)
+<a name="l00137"></a>00137 {
+<a name="l00138"></a>00138 p.first = info.other_point;
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (info.arrival == -1)
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142 p.second = info.other_point;
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145 <span class="keywordflow">else</span>
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 <span class="keywordflow">if</span> (info.arrival == 1)
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 q.first = info.other_point;
+<a name="l00150"></a>00150 }
+<a name="l00151"></a>00151 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (info.arrival == -1)
+<a name="l00152"></a>00152 {
+<a name="l00153"></a>00153 q.second = info.other_point;
+<a name="l00154"></a>00154 }
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157
+<a name="l00158"></a>00158 <span class="keyword">template</span> <<span class="keyword">typename</span> Info, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>>
+<a name="l00159"></a>00159 <span class="keyword">inline</span> <span class="keywordtype">void</span> touch_in_the_middle(Info& info, Point <span class="keyword">const</span>& point)
+<a name="l00160"></a>00160 {
+<a name="l00161"></a>00161 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator<Info>::type iterator;
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="comment">// Determine which is Q, and assign points</span>
+<a name="l00164"></a>00164 iterator qu, qw, p;
+<a name="l00165"></a>00165 <span class="keywordtype">int</span> count = 0;
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 <span class="comment">// Find out which one is arriving/departing from the middle</span>
+<a name="l00168"></a>00168 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00169"></a>00169 it != boost::end(info);
+<a name="l00170"></a>00170 ++it)
+<a name="l00171"></a>00171 {
+<a name="l00172"></a>00172 <span class="comment">// One arrives AND departs in the middle of the other.</span>
+<a name="l00173"></a>00173 <span class="keywordflow">if</span>(it->how == <span class="charliteral">'m'</span> && it->arrival == 1)
+<a name="l00174"></a>00174 {
+<a name="l00175"></a>00175 qu = it;
+<a name="l00176"></a>00176 count |= 1;
+<a name="l00177"></a>00177 }
+<a name="l00178"></a>00178 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(it->how == <span class="charliteral">'s'</span> && it->arrival == -1)
+<a name="l00179"></a>00179 {
+<a name="l00180"></a>00180 qw = it;
+<a name="l00181"></a>00181 count |= 2;
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (it->how == <span class="charliteral">'s'</span>) <span class="comment">// or m, does not really matter</span>
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 p = it;
+<a name="l00186"></a>00186 count |= 4;
+<a name="l00187"></a>00187 }
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 }
+<a name="l00190"></a>00190 <span class="comment">// Adapt it</span>
+<a name="l00191"></a>00191 <span class="keywordflow">if</span> (count == 7
+<a name="l00192"></a>00192 && qu->direction == qw->direction
+<a name="l00193"></a>00193 && qu->seg_id.source_index == qw->seg_id.source_index)
+<a name="l00194"></a>00194 {
+<a name="l00195"></a>00195 <span class="keywordtype">int</span> dir_q = the_side(qu->other_point, point, qw->other_point);
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00198"></a>00198 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Both "</span>
+<a name="l00199"></a>00199 << (qu->direction == 1 ? <span class="stringliteral">"Left"</span> : <span class="stringliteral">"Right"</span>)
+<a name="l00200"></a>00200 << <span class="stringliteral">", Turn "</span> << (dir_q == 1 ? <span class="stringliteral">"Left"</span> : dir_q == -1 ? <span class="stringliteral">"Right"</span> : <span class="stringliteral">"?"</span>)
+<a name="l00201"></a>00201 << std::endl;
+<a name="l00202"></a>00202 <span class="preprocessor">#endif</span>
+<a name="l00203"></a>00203 <span class="preprocessor"></span>
+<a name="l00204"></a>00204 <span class="comment">// Let P also be starting</span>
+<a name="l00205"></a>00205 p->arrival = -1;
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <span class="comment">// This is also symmetric. See slides:</span>
+<a name="l00208"></a>00208 <span class="comment">// Qu left-of P && Qw left-of P</span>
+<a name="l00209"></a>00209 <span class="keywordflow">if</span> (qu->direction == 1 && dir_q == -1)
+<a name="l00210"></a>00210 {
+<a name="l00211"></a>00211 <span class="comment">// make both Left</span>
+<a name="l00212"></a>00212 p->direction = 1;
+<a name="l00213"></a>00213 qw->direction = 1;
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 <span class="comment">// else, symmetric version</span>
+<a name="l00216"></a>00216 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qu->direction == -1 && dir_q == 1)
+<a name="l00217"></a>00217 {
+<a name="l00218"></a>00218 p->direction = -1;
+<a name="l00219"></a>00219 qw->direction = -1;
+<a name="l00220"></a>00220 }
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 }
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226
+<a name="l00227"></a>00227 <span class="keyword">template</span> <<span class="keyword">typename</span> Info>
+<a name="l00228"></a>00228 <span class="keyword">inline</span> <span class="keywordtype">void</span> arrive_in_the_middle(Info& info)
+<a name="l00229"></a>00229 {
+<a name="l00230"></a>00230 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator<Info>::type iterator;
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232 <span class="comment">// Find out which one is NOT arriving in the middle,</span>
+<a name="l00233"></a>00233 <span class="comment">// and the direction of the one arriving in the middle</span>
+<a name="l00234"></a>00234 <span class="keywordtype">int</span> departing = -1;
+<a name="l00235"></a>00235 <span class="keywordtype">int</span> direction = 0;
+<a name="l00236"></a>00236 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00237"></a>00237 it != boost::end(info);
+<a name="l00238"></a>00238 ++it)
+<a name="l00239"></a>00239 {
+<a name="l00240"></a>00240 <span class="keywordflow">if</span>(it->how == <span class="charliteral">'m'</span>)
+<a name="l00241"></a>00241 {
+<a name="l00242"></a>00242 <span class="keywordflow">switch</span>(it->arrival)
+<a name="l00243"></a>00243 {
+<a name="l00244"></a>00244 <span class="keywordflow">case</span> 1 : direction = it->direction; <span class="keywordflow">break</span>;
+<a name="l00245"></a>00245 <span class="keywordflow">default</span> : departing = it->seg_id.source_index;
+<a name="l00246"></a>00246 }
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248 }
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250 <span class="comment">// Make this the departing one, following collinear in opposite segment,</span>
+<a name="l00251"></a>00251 <span class="comment">// same direction as established above</span>
+<a name="l00252"></a>00252 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00253"></a>00253 it != boost::end(info);
+<a name="l00254"></a>00254 ++it)
+<a name="l00255"></a>00255 {
+<a name="l00256"></a>00256 <span class="keywordflow">if</span> (it->how == <span class="charliteral">'c'</span> && it->seg_id.source_index == departing)
+<a name="l00257"></a>00257 {
+<a name="l00258"></a>00258 it->arrival = -1;
+<a name="l00259"></a>00259 it->direction = direction;
+<a name="l00260"></a>00260 }
+<a name="l00261"></a>00261 }
+<a name="l00262"></a>00262 }
+<a name="l00263"></a>00263
+<a name="l00264"></a>00264 <span class="keyword">template</span> <<span class="keyword">typename</span> Info>
+<a name="l00265"></a>00265 <span class="keyword">inline</span> <span class="keywordtype">void</span> start_in_the_middle(Info& info, <span class="keywordtype">bool</span> opposite)
+<a name="l00266"></a>00266 {
+<a name="l00267"></a>00267 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator<Info>::type iterator;
+<a name="l00268"></a>00268
+<a name="l00269"></a>00269 <span class="keywordflow">for</span> (iterator it = boost::begin(info);
+<a name="l00270"></a>00270 it != boost::end(info);
+<a name="l00271"></a>00271 ++it)
+<a name="l00272"></a>00272 {
+<a name="l00273"></a>00273 <span class="keywordflow">if</span>(it->how == <span class="charliteral">'s'</span>)
+<a name="l00274"></a>00274 {
+<a name="l00275"></a>00275 <span class="keywordflow">if</span> (! opposite)
+<a name="l00276"></a>00276 {
+<a name="l00277"></a>00277 <span class="comment">// Not opposite, all "start" traversals can also be made "departing"</span>
+<a name="l00278"></a>00278 it->arrival = -1;
+<a name="l00279"></a>00279 }
+<a name="l00280"></a>00280 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (opposite && it->arrival == 0)
+<a name="l00281"></a>00281 {
+<a name="l00282"></a>00282 <span class="comment">// Prevent the collinear the "start" from "departing",</span>
+<a name="l00283"></a>00283 <span class="comment">// if it is in opposite direction</span>
+<a name="l00284"></a>00284 it->arrival = 1;
+<a name="l00285"></a>00285 it->direction = 0;
+<a name="l00286"></a>00286 it->flagged = <span class="keyword">true</span>; <span class="comment">// might be deleted</span>
+<a name="l00287"></a>00287 }
+<a name="l00288"></a>00288 }
+<a name="l00289"></a>00289 }
+<a name="l00290"></a>00290 }
+<a name="l00291"></a>00291
+<a name="l00292"></a>00292
+<a name="l00293"></a>00293 <span class="keyword">template</span> <<span class="keyword">typename</span> V>
+<a name="l00294"></a>00294 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">adapt_turns</a>(V& intersection_points)
+<a name="l00295"></a>00295 {
+<a name="l00296"></a>00296 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator<V>::type iterator_type;
+<a name="l00297"></a>00297 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value<V>::type ip_type;
+<a name="l00298"></a>00298 <span class="keyword">typedef</span> <span class="keyword">typename</span> ip_type::traversal_type info_type;
+<a name="l00299"></a>00299
+<a name="l00300"></a>00300 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value<V>::type::traversal_vector vector_type;
+<a name="l00301"></a>00301 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator<vector_type>::type tvit_type;
+<a name="l00302"></a>00302
+<a name="l00303"></a>00303 <span class="keywordflow">for</span> (iterator_type it = boost::begin(intersection_points);
+<a name="l00304"></a>00304 it != boost::end(intersection_points);
+<a name="l00305"></a>00305 ++it)
+<a name="l00306"></a>00306 {
+<a name="l00307"></a>00307 <span class="keywordflow">if</span> (! it->trivial)
+<a name="l00308"></a>00308 {
+<a name="l00309"></a>00309 <span class="keywordflow">if</span> (boost::size(it->info) == 4)
+<a name="l00310"></a>00310 {
+<a name="l00311"></a>00311 <span class="comment">/*</span>
+<a name="l00312"></a>00312 <span class="comment"> can be ARRIVE/START from the middle (#11)</span>
+<a name="l00313"></a>00313 <span class="comment"> src 0 seg 1 (// 1.0) how m[A R] p // qu</span>
+<a name="l00314"></a>00314 <span class="comment"> src 0 seg 1 (// 1.1) how s[D L] p // qw</span>
+<a name="l00315"></a>00315 <span class="comment"> src 1 seg 0 (// 0.1) how m[A R] qu / p</span>
+<a name="l00316"></a>00316 <span class="comment"> src 1 seg 1 (// 0.1) how s[D R] qw / p</span>
+<a name="l00317"></a>00317 <span class="comment"></span>
+<a name="l00318"></a>00318 <span class="comment"> or can be ARRIVE at COLLINEARITY (#8, #13)</span>
+<a name="l00319"></a>00319 <span class="comment"> src 0 seg 1 (// 1.1) how m[A L] p // qu</span>
+<a name="l00320"></a>00320 <span class="comment"> src 0 seg 1 (// 1.2) how c[- -] p // qw</span>
+<a name="l00321"></a>00321 <span class="comment"> src 1 seg 1 (// 0.1) how m[A L] qu // p</span>
+<a name="l00322"></a>00322 <span class="comment"> src 1 seg 2 (// 0.1) how c[- -] qw // p</span>
+<a name="l00323"></a>00323 <span class="comment"></span>
+<a name="l00324"></a>00324 <span class="comment"> or can be START from COLLINEARITY (#8, #13)</span>
+<a name="l00325"></a>00325 <span class="comment"> src 0 seg 1 (// 1.2) how c[- -] p // qu</span>
+<a name="l00326"></a>00326 <span class="comment"> src 0 seg 1 (// 1.0) how s[D R] p // qw</span>
+<a name="l00327"></a>00327 <span class="comment"> src 1 seg 2 (// 0.1) how c[- -] qu // p</span>
+<a name="l00328"></a>00328 <span class="comment"> src 1 seg 0 (// 0.1) how s[D L] qw // p</span>
+<a name="l00329"></a>00329 <span class="comment"> */</span>
+<a name="l00330"></a>00330
+<a name="l00331"></a>00331 <span class="comment">// First detect the case and if it is opposite</span>
+<a name="l00332"></a>00332 <span class="keywordtype">int</span> count_m = 0, count_s = 0, count_c = 0;
+<a name="l00333"></a>00333
+<a name="l00334"></a>00334 <span class="keywordtype">bool</span> opposite = <span class="keyword">false</span>;
+<a name="l00335"></a>00335 <span class="keywordflow">for</span> (tvit_type tvit = boost::begin(it->info);
+<a name="l00336"></a>00336 tvit != boost::end(it->info);
+<a name="l00337"></a>00337 ++tvit)
+<a name="l00338"></a>00338 {
+<a name="l00339"></a>00339 <span class="keywordflow">switch</span>(tvit->how)
+<a name="l00340"></a>00340 {
+<a name="l00341"></a>00341 <span class="keywordflow">case</span> <span class="charliteral">'m'</span> : count_m++; <span class="keywordflow">break</span>;
+<a name="l00342"></a>00342 <span class="keywordflow">case</span> <span class="charliteral">'s'</span> : count_s++; <span class="keywordflow">break</span>;
+<a name="l00343"></a>00343 <span class="keywordflow">case</span> <span class="charliteral">'c'</span> : count_c++; <span class="keywordflow">break</span>;
+<a name="l00344"></a>00344 }
+<a name="l00345"></a>00345 <span class="keywordflow">if</span> (tvit->opposite)
+<a name="l00346"></a>00346 {
+<a name="l00347"></a>00347 opposite = <span class="keyword">true</span>;
+<a name="l00348"></a>00348 }
+<a name="l00349"></a>00349 }
+<a name="l00350"></a>00350
+<a name="l00351"></a>00351
+<a name="l00352"></a>00352 <span class="keywordflow">if</span> (count_m == 2 && count_s == 2)
+<a name="l00353"></a>00353 {
+<a name="l00354"></a>00354 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00355"></a>00355 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Touching the middle "</span> << std::endl;
+<a name="l00356"></a>00356 <span class="preprocessor">#endif</span>
+<a name="l00357"></a>00357 <span class="preprocessor"></span>
+<a name="l00358"></a>00358 touch_in_the_middle(it->info, it->point);
+<a name="l00359"></a>00359 }
+<a name="l00360"></a>00360 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count_m == 2 && count_c == 2 && opposite)
+<a name="l00361"></a>00361 {
+<a name="l00362"></a>00362 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00363"></a>00363 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Arriving the middle/collinearity, opposite"</span> << std::endl;
+<a name="l00364"></a>00364 <span class="preprocessor">#endif</span>
+<a name="l00365"></a>00365 <span class="preprocessor"></span>
+<a name="l00366"></a>00366 arrive_in_the_middle(it->info);
+<a name="l00367"></a>00367 }
+<a name="l00368"></a>00368 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (count_s == 2 && count_c == 2)
+<a name="l00369"></a>00369 {
+<a name="l00370"></a>00370 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00371"></a>00371 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Starting from middle/collinearity"</span>
+<a name="l00372"></a>00372 << (opposite ? <span class="stringliteral">" , opposite"</span> : <span class="stringliteral">""</span>)
+<a name="l00373"></a>00373 << std::endl;
+<a name="l00374"></a>00374 <span class="preprocessor">#endif</span>
+<a name="l00375"></a>00375 <span class="preprocessor"></span>
+<a name="l00376"></a>00376 start_in_the_middle(it->info, opposite);
+<a name="l00377"></a>00377 }
+<a name="l00378"></a>00378 }
+<a name="l00379"></a>00379
+<a name="l00380"></a>00380 <span class="keywordflow">if</span> (boost::size(it->info) == 8)
+<a name="l00381"></a>00381 {
+<a name="l00382"></a>00382 <span class="comment">/*</span>
+<a name="l00383"></a>00383 <span class="comment"> src 0 seg 1 (// 1.0) how t[A R] pi // qu pi.first</span>
+<a name="l00384"></a>00384 <span class="comment"> src 0 seg 1 (// 1.1) how a[A R] pi // qw pi.second</span>
+<a name="l00385"></a>00385 <span class="comment"> src 0 seg 2 (// 1.0) how a[D R] pk // qu pk.first</span>
+<a name="l00386"></a>00386 <span class="comment"> src 0 seg 2 (// 1.1) how f[D L] pk // qw pk.second</span>
+<a name="l00387"></a>00387 <span class="comment"></span>
+<a name="l00388"></a>00388 <span class="comment"> src 1 seg 0 (// 0.1) how t[A L] qu // pi</span>
+<a name="l00389"></a>00389 <span class="comment"> src 1 seg 0 (// 0.2) how a[A R] qu // pk</span>
+<a name="l00390"></a>00390 <span class="comment"> src 1 seg 1 (// 0.1) how a[D R] qw // pi</span>
+<a name="l00391"></a>00391 <span class="comment"> src 1 seg 1 (// 0.2) how f[D R] qw // pk</span>
+<a name="l00392"></a>00392 <span class="comment"> */</span>
+<a name="l00393"></a>00393
+<a name="l00394"></a>00394 std::pair<tvit_type, tvit_type> pi, pk, qu, qw;
+<a name="l00395"></a>00395 std::pair<typename info_type::point_type, typename info_type::point_type> p, q;
+<a name="l00396"></a>00396
+<a name="l00397"></a>00397
+<a name="l00398"></a>00398 <span class="comment">// Find out which is which</span>
+<a name="l00399"></a>00399 <span class="keywordflow">for</span> (tvit_type tvit = boost::begin(it->info);
+<a name="l00400"></a>00400 tvit != boost::end(it->info);
+<a name="l00401"></a>00401 ++tvit)
+<a name="l00402"></a>00402 {
+<a name="l00403"></a>00403 assign_pq(*tvit, p, q);
+<a name="l00404"></a>00404 <span class="keywordflow">if</span> (tvit->seg_id.source_index == 0)
+<a name="l00405"></a>00405 {
+<a name="l00406"></a>00406 <span class="keywordflow">if</span> (tvit->arrival == 1)
+<a name="l00407"></a>00407 {
+<a name="l00408"></a>00408 <span class="keywordflow">if</span>(tvit->how != <span class="charliteral">'a'</span>)
+<a name="l00409"></a>00409 {
+<a name="l00410"></a>00410 pi.first = tvit;
+<a name="l00411"></a>00411 }
+<a name="l00412"></a>00412 <span class="keywordflow">else</span>
+<a name="l00413"></a>00413 {
+<a name="l00414"></a>00414 pi.second = tvit;
+<a name="l00415"></a>00415 }
+<a name="l00416"></a>00416
+<a name="l00417"></a>00417 }
+<a name="l00418"></a>00418 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tvit->arrival == -1)
+<a name="l00419"></a>00419 {
+<a name="l00420"></a>00420 <span class="keywordflow">if</span> (tvit->how == <span class="charliteral">'a'</span>)
+<a name="l00421"></a>00421 {
+<a name="l00422"></a>00422 pk.first = tvit;
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424 <span class="keywordflow">else</span>
+<a name="l00425"></a>00425 {
+<a name="l00426"></a>00426 pk.second = tvit;
+<a name="l00427"></a>00427 }
+<a name="l00428"></a>00428 }
+<a name="l00429"></a>00429 }
+<a name="l00430"></a>00430 <span class="keywordflow">else</span>
+<a name="l00431"></a>00431 {
+<a name="l00432"></a>00432 <span class="keywordflow">if</span> (tvit->arrival == 1)
+<a name="l00433"></a>00433 {
+<a name="l00434"></a>00434 <span class="keywordflow">if</span>(tvit->how != <span class="charliteral">'a'</span>)
+<a name="l00435"></a>00435 {
+<a name="l00436"></a>00436 qu.first = tvit;
+<a name="l00437"></a>00437 }
+<a name="l00438"></a>00438 <span class="keywordflow">else</span>
+<a name="l00439"></a>00439 {
+<a name="l00440"></a>00440 qu.second = tvit;
+<a name="l00441"></a>00441 }
+<a name="l00442"></a>00442 }
+<a name="l00443"></a>00443 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tvit->arrival == -1)
+<a name="l00444"></a>00444 {
+<a name="l00445"></a>00445 <span class="keywordflow">if</span> (tvit->how == <span class="charliteral">'a'</span>)
+<a name="l00446"></a>00446 {
+<a name="l00447"></a>00447 qw.first = tvit;
+<a name="l00448"></a>00448 }
+<a name="l00449"></a>00449 <span class="keywordflow">else</span>
+<a name="l00450"></a>00450 {
+<a name="l00451"></a>00451 qw.second = tvit;
+<a name="l00452"></a>00452 }
+<a name="l00453"></a>00453 }
+<a name="l00454"></a>00454 }
+<a name="l00455"></a>00455 }
+<a name="l00456"></a>00456
+<a name="l00457"></a>00457 <span class="keywordtype">int</span> dir_p = the_side(p.first, it->point, p.second);
+<a name="l00458"></a>00458 <span class="keywordtype">int</span> dir_q = the_side(q.first, it->point, q.second);
+<a name="l00459"></a>00459
+<a name="l00460"></a>00460 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00461"></a>00461 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Pi//Qu : "</span> << *pi.first << std::endl;
+<a name="l00462"></a>00462 std::cout << <span class="stringliteral">"Pi//Qw : "</span> << *pi.second << std::endl;
+<a name="l00463"></a>00463 std::cout << <span class="stringliteral">"Pk//Qu : "</span> << *pk.first << std::endl;
+<a name="l00464"></a>00464 std::cout << <span class="stringliteral">"Pk//Qw : "</span> << *pk.second << std::endl;
+<a name="l00465"></a>00465 std::cout << <span class="stringliteral">"Qu//Pi : "</span> << *qu.first << std::endl;
+<a name="l00466"></a>00466 std::cout << <span class="stringliteral">"Qu//Pk : "</span> << *qu.second << std::endl;
+<a name="l00467"></a>00467 std::cout << <span class="stringliteral">"Qw//Pi : "</span> << *qw.first << std::endl;
+<a name="l00468"></a>00468 std::cout << <span class="stringliteral">"Qw//Pk : "</span> << *qw.second << std::endl;
+<a name="l00469"></a>00469 <span class="keywordflow">if</span> (dir_p == 1) std::cout << <span class="stringliteral">"P turns left"</span> << std::endl;
+<a name="l00470"></a>00470 <span class="keywordflow">if</span> (dir_p == -1) std::cout << <span class="stringliteral">"P turns right"</span> << std::endl;
+<a name="l00471"></a>00471 <span class="keywordflow">if</span> (dir_q == 1) std::cout << <span class="stringliteral">"Q turns left"</span> << std::endl;
+<a name="l00472"></a>00472 <span class="keywordflow">if</span> (dir_q == -1) std::cout << <span class="stringliteral">"Q turns right"</span> << std::endl;
+<a name="l00473"></a>00473 <span class="preprocessor">#endif</span>
+<a name="l00474"></a>00474 <span class="preprocessor"></span>
+<a name="l00475"></a>00475 <span class="keywordflow">if</span> (qu.first->direction == qw.first->direction)
+<a name="l00476"></a>00476 {
+<a name="l00477"></a>00477 <span class="comment">// Both Right or Both Left</span>
+<a name="l00478"></a>00478 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00479"></a>00479 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Both "</span>
+<a name="l00480"></a>00480 << (qu.first->direction == 1 ? <span class="stringliteral">"Left"</span> : <span class="stringliteral">"Right"</span>)
+<a name="l00481"></a>00481 << std::endl;
+<a name="l00482"></a>00482 <span class="preprocessor">#endif</span>
+<a name="l00483"></a>00483 <span class="preprocessor"></span>
+<a name="l00484"></a>00484 both_same(pi, pk, qu, qw, dir_p, dir_q, qu.first->direction);
+<a name="l00485"></a>00485 }
+<a name="l00486"></a>00486 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qu.first->direction == -qw.first->direction)
+<a name="l00487"></a>00487 {
+<a name="l00488"></a>00488 <span class="comment">// From Left to Right, or from Right to Left</span>
+<a name="l00489"></a>00489 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00490"></a>00490 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Left to/from Right"</span> << std::endl;
+<a name="l00491"></a>00491 <span class="preprocessor">#endif</span>
+<a name="l00492"></a>00492 <span class="preprocessor"></span> crossing(pi, pk, qu, qw, dir_p, dir_q, qu.first->direction);
+<a name="l00493"></a>00493 }
+<a name="l00494"></a>00494 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qw.first->direction == 1 || qu.first->direction == 1)
+<a name="l00495"></a>00495 {
+<a name="l00496"></a>00496 <span class="comment">// Collinear left</span>
+<a name="l00497"></a>00497 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00498"></a>00498 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Collinear left"</span> << std::endl;
+<a name="l00499"></a>00499 <span class="preprocessor">#endif</span>
+<a name="l00500"></a>00500 <span class="preprocessor"></span> collinear(pi, pk, qu, qw, dir_p, dir_q, 1);
+<a name="l00501"></a>00501 }
+<a name="l00502"></a>00502 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qw.first->direction == -1 || qu.first->direction == -1)
+<a name="l00503"></a>00503 {
+<a name="l00504"></a>00504 <span class="comment">// Collinear right</span>
+<a name="l00505"></a>00505 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00506"></a>00506 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Collinear right"</span> << std::endl;
+<a name="l00507"></a>00507 <span class="preprocessor">#endif</span>
+<a name="l00508"></a>00508 <span class="preprocessor"></span> collinear(pi, pk, qu, qw, dir_p, dir_q, -1);
+<a name="l00509"></a>00509 }
+<a name="l00510"></a>00510
+<a name="l00511"></a>00511
+<a name="l00512"></a>00512 <span class="keywordflow">for</span> (tvit_type tvit = boost::begin(it->info);
+<a name="l00513"></a>00513 tvit != boost::end(it->info);
+<a name="l00514"></a>00514 ++tvit)
+<a name="l00515"></a>00515 {
+<a name="l00516"></a>00516 <span class="keywordflow">if</span> (tvit->how == <span class="charliteral">'a'</span>)
+<a name="l00517"></a>00517 {
+<a name="l00518"></a>00518 tvit->direction = 0;
+<a name="l00519"></a>00519 }
+<a name="l00520"></a>00520 }
+<a name="l00521"></a>00521
+<a name="l00522"></a>00522
+<a name="l00523"></a>00523 }
+<a name="l00524"></a>00524 }
+<a name="l00525"></a>00525 }
+<a name="l00526"></a>00526
+<a name="l00527"></a>00527 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00528"></a>00528 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Adapted turns: "</span> << std::endl;
+<a name="l00529"></a>00529 report_ip(intersection_points);
+<a name="l00530"></a>00530 <span class="preprocessor">#endif</span>
+<a name="l00531"></a>00531 <span class="preprocessor"></span>}
+<a name="l00532"></a>00532
+<a name="l00533"></a>00533
+<a name="l00534"></a>00534
+<a name="l00535"></a>00535 }} <span class="comment">// namespace detail::intersection</span>
+<a name="l00536"></a>00536 <span class="preprocessor">#endif //DOXYGEN_NO_DETAIL</span>
+<a name="l00537"></a>00537 <span class="preprocessor"></span>
+<a name="l00538"></a>00538
+<a name="l00539"></a>00539
+<a name="l00540"></a>00540 <span class="keyword">template</span> <<span class="keyword">typename</span> V>
+<a name="l00541"></a><a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">00541</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">adapt_turns</a>(V& intersection_points)
+<a name="l00542"></a>00542 {
+<a name="l00543"></a>00543 <span class="comment">// If there are merges, there might be merged IP's which have right turns</span>
+<a name="l00544"></a>00544 <a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">detail::intersection::adapt_turns</a>(intersection_points);
+<a name="l00545"></a>00545
+<a name="l00546"></a>00546 <span class="preprocessor">#ifdef GGL_DEBUG_INTERSECTION</span>
+<a name="l00547"></a>00547 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Merged (2): "</span> << std::endl;
+<a name="l00548"></a>00548 report_ip(intersection_points);
+<a name="l00549"></a>00549 <span class="preprocessor">#endif</span>
+<a name="l00550"></a>00550 <span class="preprocessor"></span>
+<a name="l00551"></a>00551 }
+<a name="l00552"></a>00552
+<a name="l00553"></a>00553
+<a name="l00554"></a>00554 } <span class="comment">// namespace ggl</span>
+<a name="l00555"></a>00555
+<a name="l00556"></a>00556 <span class="preprocessor">#endif // GGL_ADAPT_TURNS_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/strategies/agnostic/agn_convex_hull.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">ggl::strategy::convex_hull::graham< P ></a></td></tr>
+
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy.html">ggl::strategy</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy_1_1convex__hull.html">ggl::strategy::convex_hull</a></td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__convex__hull_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,343 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/strategies/agnostic/agn_convex_hull.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_STRATEGIES_AGNOSTIC_CONVEX_HULL_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_STRATEGIES_AGNOSTIC_CONVEX_HULL_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#ifdef _MSC_VER</span>
+<a name="l00013"></a>00013 <span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4101 )</span>
+<a name="l00014"></a>00014 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include <cstddef></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <algorithm></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <vector></span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="strategy__traits_8hpp.html">ggl/strategies/strategy_traits.hpp</a>></span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="comment">// TODO: Temporary, comparing tests, this can be removed in the end</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#if defined(GGL_USE_SMOOTH_SORT)</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor"># include "SmoothSort.hpp"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#elif defined(GGL_USE_MERGE_SORT)</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor"># include "MergeSort.hpp"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#else</span>
+<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span>
+<a name="l00033"></a>00033 <span class="keyword">namespace </span>ggl
+<a name="l00034"></a>00034 {
+<a name="l00035"></a>00035
+<a name="l00036"></a><a class="code" href="namespaceggl_1_1strategy_1_1convex__hull.html">00036</a> <span class="keyword">namespace </span>strategy { <span class="keyword">namespace </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a> {
+<a name="l00037"></a>00037
+<a name="l00038"></a>00038 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="keyword">namespace </span>detail
+<a name="l00040"></a>00040 {
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="keyword">template</span> <<span class="keyword">typename</span> Range, <span class="keyword">typename</span> RangeIterator, <span class="keyword">typename</span> Strategy>
+<a name="l00043"></a>00043 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> get_extremes(<span class="keyword">const</span> Range& range,
+<a name="l00044"></a>00044 RangeIterator& min_it, RangeIterator& max_it,
+<a name="l00045"></a>00045 <span class="keyword">const</span> Strategy& strategy)
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047 min_it = boost::begin(range);
+<a name="l00048"></a>00048 max_it = boost::begin(range);
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keywordflow">for</span> (RangeIterator it = boost::begin(range) + 1; it != boost::end(range); ++it)
+<a name="l00051"></a>00051 {
+<a name="l00052"></a>00052 <span class="keywordflow">if</span> (strategy.smaller(*it, *min_it))
+<a name="l00053"></a>00053 {
+<a name="l00054"></a>00054 min_it = it;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keywordflow">if</span> (strategy.larger(*it, *max_it))
+<a name="l00058"></a>00058 {
+<a name="l00059"></a>00059 max_it = it;
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keyword">template</span> <<span class="keyword">typename</span> R>
+<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> sort(R& range)
+<a name="l00066"></a>00066 {
+<a name="l00067"></a>00067 <span class="preprocessor"> #if defined(USE_SMOOTH_SORT)</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span> smoothsort::sort(boost::begin(range), boost::end(range));
+<a name="l00069"></a>00069 <span class="preprocessor"> #elif defined(USE_MERGE_SORT)</span>
+<a name="l00070"></a>00070 <span class="preprocessor"></span> comparing::merge_sort<thread_count>(boost::begin(range), boost::end(range), std::less<P>());
+<a name="l00071"></a>00071 <span class="preprocessor"> #else</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span> std::sort(boost::begin(range), boost::end(range));
+<a name="l00073"></a>00073 <span class="preprocessor"> #endif</span>
+<a name="l00074"></a>00074 <span class="preprocessor"></span>}
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 } <span class="comment">// namespace detail</span>
+<a name="l00077"></a>00077 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00078"></a>00078 <span class="preprocessor"></span>
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 <span class="comment">// Completely reworked version from source at:</span>
+<a name="l00081"></a>00081 <span class="comment">// http://www.ddj.com/architect/201806315>
+<a name="l00082"></a>00082 <span class="comment">// also available at http://marknelson.us/2007/08/22/convex>
+<a name="l00083"></a>00083 <span class="keyword">template</span> <<span class="keyword">typename</span> P>
+<a name="l00084"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">00084</a> <span class="keyword">class </span><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html">graham</a>
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <span class="keyword">private</span>:
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag<P>::type</a> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag</a>;
+<a name="l00089"></a>00089 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector<P> container;
+<a name="l00090"></a>00090 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector<P>::const_iterator iterator;
+<a name="l00091"></a>00091 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector<P>::const_reverse_iterator rev_iterator;
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 container m_lower_hull;
+<a name="l00094"></a>00094 container m_upper_hull;
+<a name="l00095"></a>00095 container m_copied_input;
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098 <span class="keyword">public</span>:
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="comment">// Default constructor, ranges can be added using "add_range" but note they'll be copied</span>
+<a name="l00101"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">00101</a> <span class="keyword">inline</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">graham</a>()
+<a name="l00102"></a>00102 {
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="comment">// Constructor with a range</span>
+<a name="l00106"></a>00106 <span class="keyword">template</span> <<span class="keyword">typename</span> Range>
+<a name="l00107"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#03467845cee70dffe77e7469290d4e62">00107</a> <span class="keyword">inline</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#00ccb1a05057f89cd1d557506e9eba1d">graham</a>(<span class="keyword">const</span> Range& range)
+<a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 handle_range(range);
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <span class="keyword">template</span> <<span class="keyword">typename</span> OutputIterator>
+<a name="l00114"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#23378d3d7d381ddac21b68e449fbccbc">00114</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">get</span>(OutputIterator out)
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116 <span class="keywordflow">for</span> (iterator it = m_upper_hull.begin(); it != m_upper_hull.end(); ++it, ++out)
+<a name="l00117"></a>00117 {
+<a name="l00118"></a>00118 *out = *it;
+<a name="l00119"></a>00119 }
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <span class="comment">// STL Port does not accept iterating from rbegin+1 to rend</span>
+<a name="l00122"></a>00122 std::size_t size = m_lower_hull.size();
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (size > 0)
+<a name="l00124"></a>00124 {
+<a name="l00125"></a>00125 rev_iterator it = m_lower_hull.rbegin() + 1;
+<a name="l00126"></a>00126 <span class="keywordflow">for</span> (std::size_t i = 1; i < size; ++i, ++it, ++out)
+<a name="l00127"></a>00127 {
+<a name="l00128"></a>00128 *out = *it;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 <span class="comment">// Note /</span>
+<a name="l00135"></a>00135 <span class="comment">// TODO:</span>
+<a name="l00136"></a>00136 <span class="comment">// Consider if it is better to create an iterator over a multi, which is then used here,</span>
+<a name="l00137"></a>00137 <span class="comment">// instead of copying the range</span>
+<a name="l00138"></a>00138 <span class="comment">// It makes it slightly more complicated but avoids the copy, which is attractive because</span>
+<a name="l00139"></a>00139 <span class="comment">// multi-polygons (where it is used for) can be large.</span>
+<a name="l00140"></a>00140 <span class="keyword">template</span> <<span class="keyword">typename</span> Range>
+<a name="l00141"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#5fdc022ecff10cfbea0d8d0f0dc4bcad">00141</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#5fdc022ecff10cfbea0d8d0f0dc4bcad">add_range</a>(<span class="keyword">const</span> Range& range)
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 std::copy(boost::begin(range), boost::end(range), std::back_inserter(m_copied_input));
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145
+<a name="l00146"></a><a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#886de91332db9c491dd1ea63c476a1c3">00146</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classggl_1_1strategy_1_1convex__hull_1_1graham.html#886de91332db9c491dd1ea63c476a1c3">handle_input</a>()
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 handle_range(m_copied_input);
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 <span class="keyword">private</span>:
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="keyword">template</span> <<span class="keyword">typename</span> Range>
+<a name="l00155"></a>00155 <span class="keyword">inline</span> <span class="keywordtype">void</span> handle_range(<span class="keyword">const</span> Range& range)
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator<Range>::type range_iterator;
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 <span class="comment">// Polygons with three corners, or closed with 4 points, are always convex</span>
+<a name="l00160"></a>00160 <span class="keywordflow">if</span> (boost::size(range) <= 3)
+<a name="l00161"></a>00161 {
+<a name="l00162"></a>00162 <span class="keywordflow">for</span> (range_iterator it = boost::begin(range);
+<a name="l00163"></a>00163 it != boost::end(range);
+<a name="l00164"></a>00164 ++it)
+<a name="l00165"></a>00165 {
+<a name="l00166"></a>00166 m_upper_hull.push_back(*it);
+<a name="l00167"></a>00167 }
+<a name="l00168"></a>00168 <span class="keywordflow">return</span>;
+<a name="l00169"></a>00169 }
+<a name="l00170"></a>00170
+<a name="l00171"></a>00171 <span class="comment">// Get min/max (in most cases left / right) points</span>
+<a name="l00172"></a>00172 range_iterator left_it, right_it;
+<a name="l00173"></a>00173 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy_1_1not__implemented.html" title="Indicate compiler/library user that strategy is not implemented.">strategy_compare<cs_tag, P, 0>::type</a> comparing;
+<a name="l00174"></a>00174 detail::get_extremes(range, left_it, right_it, comparing);
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 <span class="comment">// Bounding left/right points</span>
+<a name="l00177"></a>00177 container lower_points, upper_points;
+<a name="l00178"></a>00178
+<a name="l00179"></a>00179 assign_range(range, left_it, right_it, lower_points, upper_points);
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 detail::sort(lower_points);
+<a name="l00182"></a>00182 detail::sort(upper_points);
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 build_half_hull<1>(lower_points, m_lower_hull, *left_it, *right_it);
+<a name="l00185"></a>00185 build_half_hull<-1>(upper_points, m_upper_hull, *left_it, *right_it);
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 <span class="keyword">template</span> <<span class="keyword">typename</span> RangeIterator, <span class="keyword">typename</span> Range>
+<a name="l00191"></a>00191 <span class="keyword">inline</span> <span class="keywordtype">void</span> assign_range(<span class="keyword">const</span> Range& range,
+<a name="l00192"></a>00192 <span class="keyword">const</span> RangeIterator& left_it,
+<a name="l00193"></a>00193 <span class="keyword">const</span> RangeIterator& right_it,
+<a name="l00194"></a>00194 container& lower_points,
+<a name="l00195"></a>00195 container& upper_points)
+<a name="l00196"></a>00196 {
+<a name="l00197"></a>00197 <span class="keyword">typename</span> strategy_side<cs_tag, P>::type side;
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 <span class="comment">// Put points in one of the two output sequences</span>
+<a name="l00200"></a>00200 <span class="keywordflow">for</span> (RangeIterator it = boost::begin(range);
+<a name="l00201"></a>00201 it != boost::end(range);
+<a name="l00202"></a>00202 ++it)
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 <span class="keywordflow">if</span> (it != left_it && it != right_it)
+<a name="l00205"></a>00205 {
+<a name="l00206"></a>00206 <span class="keywordtype">int</span> dir = side.side(*left_it, *right_it, *it);
+<a name="l00207"></a>00207 <span class="keywordflow">if</span> ( dir < 0 )
+<a name="l00208"></a>00208 {
+<a name="l00209"></a>00209 upper_points.push_back(*it);
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211 <span class="keywordflow">else</span>
+<a name="l00212"></a>00212 {
+<a name="l00213"></a>00213 lower_points.push_back(*it);
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <span class="keyword">template</span> <<span class="keywordtype">int</span> Factor>
+<a name="l00221"></a>00221 <span class="keyword">inline</span> <span class="keywordtype">void</span> build_half_hull(<span class="keyword">const</span> container& input, container& output,
+<a name="l00222"></a>00222 <span class="keyword">const</span> P& left, <span class="keyword">const</span> P& right)
+<a name="l00223"></a>00223 {
+<a name="l00224"></a>00224 output.push_back(left);
+<a name="l00225"></a>00225 <span class="keywordflow">for</span>(iterator it = input.begin(); it != input.end(); ++it)
+<a name="l00226"></a>00226 {
+<a name="l00227"></a>00227 add_to_hull<Factor>(*it, output);
+<a name="l00228"></a>00228 }
+<a name="l00229"></a>00229 add_to_hull<Factor>(right, output);
+<a name="l00230"></a>00230 }
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232 <span class="keyword">template</span> <<span class="keywordtype">int</span> Factor>
+<a name="l00233"></a>00233 <span class="keyword">inline</span> <span class="keywordtype">void</span> add_to_hull(<span class="keyword">const</span> P& p, container& output)
+<a name="l00234"></a>00234 {
+<a name="l00235"></a>00235 <span class="keyword">typename</span> strategy_side<cs_tag, P>::type side;
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 output.push_back(p);
+<a name="l00238"></a>00238 <span class="keyword">register</span> std::size_t output_size = output.size();
+<a name="l00239"></a>00239 <span class="keywordflow">while</span> (output_size >= 3)
+<a name="l00240"></a>00240 {
+<a name="l00241"></a>00241 rev_iterator rit = output.rbegin();
+<a name="l00242"></a>00242 <span class="keyword">const</span> P& last = *rit++;
+<a name="l00243"></a>00243 <span class="keyword">const</span> P& last2 = *rit++;
+<a name="l00244"></a>00244
+<a name="l00245"></a>00245 <span class="keywordflow">if</span> (Factor * side.side(*rit, last, last2) <= 0)
+<a name="l00246"></a>00246 {
+<a name="l00247"></a>00247 <span class="comment">// Remove last two points from stack, and add last again</span>
+<a name="l00248"></a>00248 <span class="comment">// This is much faster then erasing the one but last.</span>
+<a name="l00249"></a>00249 output.pop_back();
+<a name="l00250"></a>00250 output.pop_back();
+<a name="l00251"></a>00251 output.push_back(last);
+<a name="l00252"></a>00252 output_size--;
+<a name="l00253"></a>00253 }
+<a name="l00254"></a>00254 <span class="keywordflow">else</span>
+<a name="l00255"></a>00255 {
+<a name="l00256"></a>00256 <span class="keywordflow">return</span>;
+<a name="l00257"></a>00257 }
+<a name="l00258"></a>00258 }
+<a name="l00259"></a>00259 }
+<a name="l00260"></a>00260
+<a name="l00261"></a>00261
+<a name="l00262"></a>00262 };
+<a name="l00263"></a>00263
+<a name="l00264"></a>00264 }} <span class="comment">// namespace strategy::convex_hull</span>
+<a name="l00265"></a>00265
+<a name="l00266"></a>00266
+<a name="l00267"></a>00267 <span class="preprocessor">#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS</span>
+<a name="l00268"></a>00268 <span class="preprocessor"></span><span class="keyword">template</span> <<span class="keyword">typename</span> P>
+<a name="l00269"></a>00269 <span class="keyword">struct </span>strategy_convex_hull<cartesian_tag, P>
+<a name="l00270"></a>00270 {
+<a name="l00271"></a>00271 <span class="keyword">typedef</span> strategy::convex_hull::graham<P> <a class="code" href="structggl_1_1strategy__convex__hull.html#ec3cbad2b86bbd620de9d6c669863f32">type</a>;
+<a name="l00272"></a>00272 };
+<a name="l00273"></a>00273 <span class="preprocessor">#endif</span>
+<a name="l00274"></a>00274 <span class="preprocessor"></span>
+<a name="l00275"></a>00275 } <span class="comment">// namespace ggl</span>
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277
+<a name="l00278"></a>00278 <span class="preprocessor">#endif // GGL_STRATEGY_AGNOSTIC_CONVEX_HULL_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,83 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/strategies/agnostic/agn_simplify.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html">ggl::strategy::simplify::douglas_peucker< R, O_IT, PSDS ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Implements the <a class="el" href="namespaceggl_1_1strategy_1_1simplify.html">simplify</a> algorithm. More...<br></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy.html">ggl::strategy</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy_1_1simplify.html">ggl::strategy::simplify</a></td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__simplify_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,236 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/strategies/agnostic/agn_simplify.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_STRATEGY_AGNOSTIC_SIMPLIFY_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_STRATEGY_AGNOSTIC_SIMPLIFY_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="comment">//#define GL_DEBUG_SIMPLIFY</span>
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#ifdef GL_DEBUG_SIMPLIFY</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#include <ggl/extensions/gis/io/wkt/write_wkt.hpp></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <ggl/extensions/gis/io/wkt/stream_wkt.hpp></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <iostream></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#endif</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="keyword">namespace </span>ggl
+<a name="l00027"></a>00027 {
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>strategy
+<a name="l00029"></a>00029 {
+<a name="l00030"></a><a class="code" href="namespaceggl_1_1strategy_1_1simplify.html">00030</a> <span class="keyword">namespace </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>
+<a name="l00031"></a>00031 {
+<a name="l00032"></a>00032 <span class="preprocessor"> #ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span> <span class="keyword">namespace </span>detail
+<a name="l00034"></a>00034 {
+<a name="l00035"></a>00035
+<a name="l00044"></a>00044 <span class="keyword">template</span><<span class="keyword">typename</span> P>
+<a name="l00045"></a>00045 <span class="keyword">struct </span>douglas_peucker_point
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047 <span class="keyword">const</span> P& p;
+<a name="l00048"></a>00048 <span class="keywordtype">bool</span> included;
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keyword">inline</span> douglas_peucker_point(<span class="keyword">const</span> P& ap)
+<a name="l00051"></a>00051 : p(ap)
+<a name="l00052"></a>00052 , included(<span class="keyword">false</span>)
+<a name="l00053"></a>00053 {}
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="keyword">inline</span> douglas_peucker_point<P> operator=(<span class="keyword">const</span> douglas_peucker_point<P>& other)
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 <span class="keywordflow">return</span> douglas_peucker_point<P>(*this);
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 };
+<a name="l00060"></a>00060 }
+<a name="l00061"></a>00061 <span class="preprocessor"> #endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00062"></a>00062 <span class="preprocessor"></span>
+<a name="l00063"></a>00063
+<a name="l00078"></a>00078 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> O_IT, <span class="keyword">typename</span> PSDS>
+<a name="l00079"></a><a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html">00079</a> <span class="keyword">class </span><a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html" title="Implements the simplify algorithm.">douglas_peucker</a>
+<a name="l00080"></a>00080 {
+<a name="l00081"></a>00081 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type<R>::type</a> P;
+<a name="l00082"></a>00082 <span class="keyword">typedef</span> detail::douglas_peucker_point<P> DP;
+<a name="l00083"></a>00083 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector<DP>::iterator DIT;
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085 <span class="keyword">typedef</span> <span class="keyword">typename</span> PSDS::return_type RET;
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="keyword">inline</span> <span class="keywordtype">void</span> consider(DIT begin, DIT end, <span class="keyword">const</span> RET& max_dist, <span class="keywordtype">int</span>& n,
+<a name="l00088"></a>00088 <span class="keyword">const</span> PSDS& ps_distance_strategy)<span class="keyword"> const</span>
+<a name="l00089"></a>00089 <span class="keyword"> </span>{
+<a name="l00090"></a>00090 <span class="keywordtype">size_t</span> size = end - begin;
+<a name="l00091"></a>00091 <span class="comment">// size must be at least 3 here: we want to consider a candidate point between begin and end</span>
+<a name="l00092"></a>00092 <span class="keywordflow">if</span> (size <= 2)
+<a name="l00093"></a>00093 {
+<a name="l00094"></a>00094 <span class="preprocessor">#ifdef GL_DEBUG_SIMPLIFY</span>
+<a name="l00095"></a>00095 <span class="preprocessor"></span> <span class="keywordflow">if</span> (begin != end)
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 std::cout << <span class="stringliteral">"ignore between "</span> << begin->p << <span class="stringliteral">" and "</span> << (end - 1)->p << <span class="stringliteral">" size="</span> << size << std::endl;
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099 std::cout << <span class="stringliteral">"return because size="</span> << size << std::endl;
+<a name="l00100"></a>00100 <span class="preprocessor">#endif</span>
+<a name="l00101"></a>00101 <span class="preprocessor"></span> <span class="keywordflow">return</span>;
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103
+<a name="l00104"></a>00104 DIT last = end - 1;
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="preprocessor">#ifdef GL_DEBUG_SIMPLIFY</span>
+<a name="l00107"></a>00107 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"find between "</span> << begin->p << <span class="stringliteral">" and "</span> << last->p << <span class="stringliteral">" size="</span> << size << std::endl;
+<a name="l00108"></a>00108 <span class="preprocessor">#endif</span>
+<a name="l00109"></a>00109 <span class="preprocessor"></span>
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="comment">// Find most distance point, compare to the current segment</span>
+<a name="l00112"></a>00112 <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">ggl::segment<const P></a> s(begin->p, last->p);
+<a name="l00113"></a>00113 RET md(-1.0); <span class="comment">// any value < 0</span>
+<a name="l00114"></a>00114 DIT candidate;
+<a name="l00115"></a>00115 <span class="keywordflow">for</span>(DIT it = begin + 1; it != last; it++)
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 RET dist = ps_distance_strategy(it->p, s);
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="preprocessor">#ifdef GL_DEBUG_SIMPLIFY</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"consider "</span> << it->p << <span class="stringliteral">" at "</span> << dist.value() << (dist.value() > max_dist.value() ? <span class="stringliteral">" maybe"</span> : <span class="stringliteral">" no"</span>) << std::endl;
+<a name="l00121"></a>00121 <span class="preprocessor">#endif</span>
+<a name="l00122"></a>00122 <span class="preprocessor"></span> <span class="keywordflow">if</span> (dist > md)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 md = dist;
+<a name="l00125"></a>00125 candidate = it;
+<a name="l00126"></a>00126 }
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <span class="comment">// If a point is found, set the include flag and handle segments in between recursively</span>
+<a name="l00130"></a>00130 <span class="keywordflow">if</span> (md > max_dist)
+<a name="l00131"></a>00131 {
+<a name="l00132"></a>00132 <span class="preprocessor">#ifdef GL_DEBUG_SIMPLIFY</span>
+<a name="l00133"></a>00133 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"use "</span> << candidate->p << std::endl;
+<a name="l00134"></a>00134 <span class="preprocessor">#endif</span>
+<a name="l00135"></a>00135 <span class="preprocessor"></span>
+<a name="l00136"></a>00136 candidate->included = <span class="keyword">true</span>;
+<a name="l00137"></a>00137 n++;
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 consider(begin, candidate + 1, max_dist, n, ps_distance_strategy);
+<a name="l00140"></a>00140 consider(candidate, end, max_dist, n, ps_distance_strategy);
+<a name="l00141"></a>00141 }
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keyword">public</span> :
+<a name="l00146"></a>00146
+<a name="l00147"></a><a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html#8baa11b24fd260345ee451512c710350">00147</a> <span class="keyword">typedef</span> PSDS <a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html#8baa11b24fd260345ee451512c710350">distance_strategy_type</a>;
+<a name="l00148"></a>00148
+<a name="l00152"></a><a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html#dca55aa87f6d5b49df52585fa0f97add">00152</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classggl_1_1strategy_1_1simplify_1_1douglas__peucker.html#dca55aa87f6d5b49df52585fa0f97add" title="Call simplification on an iterator pair.">simplify</a>(<span class="keyword">const</span> R& range, O_IT out, <span class="keywordtype">double</span> max_distance)<span class="keyword"> const</span>
+<a name="l00153"></a>00153 <span class="keyword"> </span>{
+<a name="l00154"></a>00154 PSDS strategy;
+<a name="l00155"></a>00155 <span class="comment">// Init the output, a vector of references to all points</span>
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 <span class="comment">// Note Geometry Algorithms suggest here</span>
+<a name="l00158"></a>00158 <span class="comment">// http://geometryalgorithms.com/Archive/algorithm_0205/algorithm_0205.htm>
+<a name="l00159"></a>00159 <span class="comment">// to "STAGE 1: Vertex Reduction within max_distance of prior vertex cluster"</span>
+<a name="l00160"></a>00160 <span class="comment">// However, that is not correct: a vertex within the specified distance might be</span>
+<a name="l00161"></a>00161 <span class="comment">// excluded here, but might be a better candidate for final inclusion than the point before.</span>
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 std::vector<DP> ref_candidates(boost::begin(range), boost::end(range));
+<a name="l00164"></a>00164
+<a name="l00165"></a>00165 <span class="comment">// Include first and last point of line, they are always part of the line</span>
+<a name="l00166"></a>00166 <span class="keywordtype">int</span> n = 2;
+<a name="l00167"></a>00167 ref_candidates.front().included = <span class="keyword">true</span>;
+<a name="l00168"></a>00168 ref_candidates.back().included = <span class="keyword">true</span>;
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170 <span class="comment">// Get points, recursively, including them if they are further away than the specified distance</span>
+<a name="l00171"></a>00171 <span class="keyword">typedef</span> <span class="keyword">typename</span> PSDS::return_type RET;
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 consider(boost::begin(ref_candidates), boost::end(ref_candidates),
+<a name="l00174"></a>00174 make_distance_result<RET>(max_distance), n, strategy);
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 <span class="comment">// Copy included elements to the output (might be changed using copy_if)</span>
+<a name="l00177"></a>00177 <span class="keywordflow">for</span>(<span class="keyword">typename</span> std::vector<DP>::const_iterator it = boost::begin(ref_candidates);
+<a name="l00178"></a>00178 it != boost::end(ref_candidates); it++)
+<a name="l00179"></a>00179 {
+<a name="l00180"></a>00180 <span class="keywordflow">if</span> (it->included)
+<a name="l00181"></a>00181 {
+<a name="l00182"></a>00182 *out = it->p;
+<a name="l00183"></a>00183 out++;
+<a name="l00184"></a>00184 }
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 };
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191 }
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193
+<a name="l00194"></a>00194 } <span class="comment">// namespace ggl</span>
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 <span class="preprocessor">#endif // GGL_STRATEGY_AGNOSTIC_SIMPLIFY_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/strategies/agnostic/agn_within.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1strategy_1_1within_1_1winding.html">ggl::strategy::within::winding< P, PS ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Within detection using <a class="el" href="classggl_1_1strategy_1_1within_1_1winding.html" title="Within detection using winding rule.">winding</a> rule. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><b>ggl::strategy::within::winding< P, PS >::windings</b></td></tr>
+
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy.html">ggl::strategy</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl_1_1strategy_1_1within.html">ggl::strategy::within</a></td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/agn__within_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,216 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/strategies/agnostic/agn_within.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_STRATEGY_AGNOSTIC_WITHIN_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_STRATEGY_AGNOSTIC_WITHIN_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include <<a class="code" href="strategy__traits_8hpp.html">ggl/strategies/strategy_traits.hpp</a>></span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="keyword">namespace </span>ggl
+<a name="l00021"></a>00021 {
+<a name="l00022"></a>00022 <span class="keyword">namespace </span>strategy
+<a name="l00023"></a>00023 {
+<a name="l00024"></a><a class="code" href="namespaceggl_1_1strategy_1_1within.html">00024</a> <span class="keyword">namespace </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>
+<a name="l00025"></a>00025 {
+<a name="l00026"></a>00026
+<a name="l00037"></a>00037 <span class="keyword">template</span><<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS = P>
+<a name="l00038"></a><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html">00038</a> <span class="keyword">class </span><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html" title="Within detection using winding rule.">winding</a>
+<a name="l00039"></a>00039 {
+<a name="l00040"></a>00040 <span class="keyword">private</span> :
+<a name="l00041"></a>00041 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<P>::type</a> PT;
+<a name="l00042"></a>00042 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<PS>::type</a> ST;
+<a name="l00043"></a>00043
+<a name="l00045"></a>00045 <span class="keyword">struct </span>windings
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047 <span class="keywordtype">int</span> count;
+<a name="l00048"></a>00048 <span class="keywordtype">bool</span> touches;
+<a name="l00049"></a>00049 <span class="keyword">const</span> P& p;
+<a name="l00050"></a>00050 <span class="keyword">inline</span> <span class="keyword">explicit</span> windings(<span class="keyword">const</span> P& ap)
+<a name="l00051"></a>00051 : count(0)
+<a name="l00052"></a>00052 , touches(<span class="keyword">false</span>)
+<a name="l00053"></a>00053 , p(ap)
+<a name="l00054"></a>00054 {}
+<a name="l00055"></a>00055 <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>()<span class="keyword"> const</span>
+<a name="l00056"></a>00056 <span class="keyword"> </span>{
+<a name="l00057"></a>00057 <span class="keywordflow">return</span> ! touches && count != 0;
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 };
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="keyword">template</span> <<span class="keywordtype">size_t</span> D>
+<a name="l00062"></a>00062 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> check_touch(<span class="keyword">const</span> <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment<const PS></a>& s, windings& state)
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 <span class="keyword">const</span> PT& p = get<D>(state.p);
+<a name="l00065"></a>00065 <span class="keyword">const</span> ST& s1 = get<0, D>(s);
+<a name="l00066"></a>00066 <span class="keyword">const</span> ST& s2 = get<1, D>(s);
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> ((s1 <= p && s2 >= p) || (s2 <= p && s1 >= p))
+<a name="l00068"></a>00068 {
+<a name="l00069"></a>00069 state.touches = <span class="keyword">true</span>;
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 <span class="keywordflow">return</span> 0;
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="keyword">template</span> <<span class="keywordtype">size_t</span> D>
+<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> check_segment(<span class="keyword">const</span> <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment<const PS></a>& s, windings& state)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="keyword">const</span> PT& p = get<D>(state.p);
+<a name="l00079"></a>00079 <span class="keyword">const</span> ST& s1 = get<0, D>(s);
+<a name="l00080"></a>00080 <span class="keyword">const</span> ST& s2 = get<1, D>(s);
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <span class="comment">// Check if one of segment endpoints is at same level of point</span>
+<a name="l00083"></a>00083 <span class="keywordtype">bool</span> eq1 = <a class="code" href="group__boolean__relations.html#g122b1fd835cee0742da7c97dfdda94c5" title="Calculate if two geometries are equals.">math::equals</a>(s1, p);
+<a name="l00084"></a>00084 <span class="keywordtype">bool</span> eq2 = <a class="code" href="group__boolean__relations.html#g122b1fd835cee0742da7c97dfdda94c5" title="Calculate if two geometries are equals.">math::equals</a>(s2, p);
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> (eq1 && eq2)
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="comment">// Both equal p -> segment is horizontal (or vertical for D=0)</span>
+<a name="l00089"></a>00089 <span class="comment">// The only thing which has to be done is check if point is ON segment</span>
+<a name="l00090"></a>00090 <span class="keywordflow">return</span> check_touch<1 - D>(s, state);
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 <span class="keywordflow">return</span>
+<a name="l00094"></a>00094 eq1 ? (s2 > p ? 1 : -1) <span class="comment">// P on level s1, UP/DOWN depending on s2</span>
+<a name="l00095"></a>00095 : eq2 ? (s1 > p ? -1 : 1) <span class="comment">// idem</span>
+<a name="l00096"></a>00096 : s1 < p && s2 > p ? 2 <span class="comment">// P between s1 -> s2 --> UP</span>
+<a name="l00097"></a>00097 : s2 < p && s1 > p ? -2 <span class="comment">// P between s2 -> s1 --> DOWN</span>
+<a name="l00098"></a>00098 : 0;
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="keyword">public</span> :
+<a name="l00103"></a>00103
+<a name="l00104"></a><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#aa5dc8bd530eed3ac8420ccccd2c8e65">00104</a> <span class="keyword">typedef</span> windings <a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#aa5dc8bd530eed3ac8420ccccd2c8e65">state_type</a>;
+<a name="l00105"></a>00105
+<a name="l00106"></a><a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#8ce0e3219bdded9943af7bc594a7f1be">00106</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#8ce0e3219bdded9943af7bc594a7f1be">operator()</a>(<span class="keyword">const</span> <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment<const PS></a>& s, <a class="code" href="classggl_1_1strategy_1_1within_1_1winding.html#aa5dc8bd530eed3ac8420ccccd2c8e65">state_type</a>& state)<span class="keyword"> const</span>
+<a name="l00107"></a>00107 <span class="keyword"> </span>{
+<a name="l00108"></a>00108 <span class="keywordtype">int</span> cnt = check_segment<1>(s, state);
+<a name="l00109"></a>00109 <span class="keywordflow">if</span> (cnt != 0)
+<a name="l00110"></a>00110 {
+<a name="l00111"></a>00111 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__side.html" title="Traits class binding a side determination strategy to a coordinate system.">strategy_side<typename cs_tag<P>::type</a>, P, PS>::type SS;
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <span class="keyword">typename</span> <a class="code" href="structggl_1_1select__coordinate__type.html" title="Utility selecting the most precise coordinate type of two geometries.">select_coordinate_type<P, PS>::type</a> side = SS::side(s, state.p);
+<a name="l00114"></a>00114
+<a name="l00115"></a>00115 <span class="keywordflow">if</span> (<a class="code" href="namespaceggl_1_1math.html#d90ba94c2d65876e9485b2bbd10def34" title="returns true if both arguments are equal.">math::equals</a>(side, 0))
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="comment">// Point is lying on segment</span>
+<a name="l00118"></a>00118 state.touches = <span class="keyword">true</span>;
+<a name="l00119"></a>00119 state.count = 0;
+<a name="l00120"></a>00120 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 <span class="comment">// Side is NEG for right, POS for left.</span>
+<a name="l00124"></a>00124 <span class="comment">// CNT is -2 for down, 2 for up (or -1/1)</span>
+<a name="l00125"></a>00125 <span class="comment">// Side positive thus means UP and LEFTSIDE or DOWN and RIGHTSIDE</span>
+<a name="l00126"></a>00126 <span class="comment">// See accompagnying figure (TODO)</span>
+<a name="l00127"></a>00127 <span class="keywordtype">int</span> sd = (side > 0 ? 1 : -1) * cnt;
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (sd > 0)
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 state.count += cnt;
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134 <span class="keywordflow">return</span> ! state.touches;
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137 };
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 } <span class="comment">// namespace within</span>
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 } <span class="comment">// namespace strategy</span>
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="preprocessor">#ifndef DOXYGEN_NO_STRATEGY_SPECIALIZATIONS</span>
+<a name="l00145"></a>00145 <span class="preprocessor"></span><span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS>
+<a name="l00146"></a>00146 <span class="keyword">struct </span>strategy_within<cartesian_tag, cartesian_tag, P, PS>
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="keyword">typedef</span> strategy::within::winding<P, PS> <a class="code" href="structggl_1_1strategy__within.html#91c77dd02ec4c0826d7b4debc7aa6599">type</a>;
+<a name="l00149"></a>00149 };
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> PS>
+<a name="l00152"></a>00152 <span class="keyword">struct </span>strategy_within<geographic_tag, geographic_tag, P, PS>
+<a name="l00153"></a>00153 {
+<a name="l00154"></a>00154 <span class="keyword">typedef</span> strategy::within::winding<P, PS> <a class="code" href="structggl_1_1strategy__within.html#91c77dd02ec4c0826d7b4debc7aa6599">type</a>;
+<a name="l00155"></a>00155 };
+<a name="l00156"></a>00156 <span class="preprocessor">#endif</span>
+<a name="l00157"></a>00157 <span class="preprocessor"></span>
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 } <span class="comment">// namespace ggl</span>
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <span class="preprocessor">#endif // GGL_STRATEGY_AGNOSTIC_WITHIN_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/area.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1area__result.html">ggl::area_result< Geometry ></a></td></tr>
+
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry , typename Strategy > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Strategy::return_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__area.html#g7e0783c73b5f561707c50b445a01b833">ggl::area</a> (Geometry const &geometry, Strategy const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate area of a geometry using a <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">area_result< Geometry ><br class="typebreak">
+::return_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3">ggl::area</a> (Geometry const &geometry)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate area of a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2area_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,275 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/area.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_AREA_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_AREA_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include <<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="nsphere__concept_8hpp.html">ggl/core/concepts/nsphere_concept.hpp</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="loop_8hpp.html">ggl/util/loop.hpp</a>></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>></span>
+<a name="l00025"></a>00025
+<a name="l00048"></a>00048 <span class="keyword">namespace </span>ggl
+<a name="l00049"></a>00049 {
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a> {
+<a name="l00053"></a>00053
+<a name="l00054"></a>00054 <span class="keyword">template</span><<span class="keyword">typename</span> B, <span class="keyword">typename</span> S>
+<a name="l00055"></a>00055 <span class="keyword">struct </span>box_area
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html#b723a443a97f7c4ed7c47ac96d7e29ee">coordinate_type<B>::type</a> return_type;
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(B <span class="keyword">const</span>& b, S <span class="keyword">const</span>&)
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 <span class="comment">// Currently only works for Cartesian boxes</span>
+<a name="l00062"></a>00062 <span class="comment">// Todo: use strategy</span>
+<a name="l00063"></a>00063 <span class="comment">// Todo: use concept</span>
+<a name="l00064"></a>00064 assert_dimension<B, 2>();
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 return_type <span class="keyword">const</span> dx = get<max_corner, 0>(b) - get<min_corner, 0>(b);
+<a name="l00067"></a>00067 return_type <span class="keyword">const</span> dy = get<max_corner, 1>(b) - get<min_corner, 1>(b);
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="keywordflow">return</span> dx * dy;
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 };
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 <span class="keyword">template</span><<span class="keyword">typename</span> C, <span class="keyword">typename</span> S>
+<a name="l00075"></a>00075 <span class="keyword">struct </span>circle_area
+<a name="l00076"></a>00076 {
+<a name="l00077"></a>00077 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type<C>::type coordinate_type;
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="comment">// Returning the coordinate precision, but if integer, returning a double</span>
+<a name="l00080"></a>00080 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
+<a name="l00081"></a>00081 <
+<a name="l00082"></a>00082 boost::is_integral<coordinate_type>::type::value,
+<a name="l00083"></a>00083 double,
+<a name="l00084"></a>00084 coordinate_type
+<a name="l00085"></a>00085 >::type return_type;
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(C <span class="keyword">const</span>& c, S <span class="keyword">const</span>&)
+<a name="l00088"></a>00088 {
+<a name="l00089"></a>00089 <span class="comment">// Currently only works for Cartesian circles</span>
+<a name="l00090"></a>00090 <span class="comment">// Todo: use strategy</span>
+<a name="l00091"></a>00091 <span class="comment">// Todo: use concept</span>
+<a name="l00092"></a>00092 assert_dimension<C, 2>();
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 return_type r = get_radius<0>(c);
+<a name="l00095"></a>00095 r *= r * <a class="code" href="namespaceggl_1_1math.html#54fc384779fa97a61e07149d880a599c">ggl::math::pi</a>;
+<a name="l00096"></a>00096 <span class="keywordflow">return</span> r;
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098 };
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="comment">// Area of a linear linear_ring, assuming a closed linear_ring</span>
+<a name="l00102"></a>00102 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> S>
+<a name="l00103"></a>00103 <span class="keyword">struct </span>ring_area
+<a name="l00104"></a>00104 {
+<a name="l00105"></a>00105 <span class="keyword">typedef</span> <span class="keyword">typename</span> S::return_type type;
+<a name="l00106"></a>00106 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(R <span class="keyword">const</span>& ring, S <span class="keyword">const</span>& strategy)
+<a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 assert_dimension<R, 2>();
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="comment">// A closed linear_ring has at least four points, if not there is no area</span>
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> (boost::size(ring) >= 4)
+<a name="l00112"></a>00112 {
+<a name="l00113"></a>00113 <span class="keyword">typename</span> S::state_type state_type;
+<a name="l00114"></a>00114 <span class="keywordflow">if</span> (<a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(ring, strategy, state_type))
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> state_type.area();
+<a name="l00117"></a>00117 }
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <span class="keywordflow">return</span> type();
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122 };
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="comment">// Area of a polygon, either clockwise or anticlockwise</span>
+<a name="l00125"></a>00125 <span class="keyword">template</span><<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Strategy>
+<a name="l00126"></a>00126 <span class="keyword">class </span>polygon_area
+<a name="l00127"></a>00127 {
+<a name="l00128"></a>00128 <span class="keyword">typedef</span> <span class="keyword">typename</span> Strategy::return_type type;
+<a name="l00129"></a>00129 <span class="keyword">static</span> <span class="keyword">inline</span> type call_abs(type <span class="keyword">const</span>& v)
+<a name="l00130"></a>00130 {
+<a name="l00131"></a>00131 <span class="preprocessor">#if defined(NUMERIC_ADAPTOR_INCLUDED)</span>
+<a name="l00132"></a>00132 <span class="preprocessor"></span> <span class="keywordflow">return</span> boost::abs(v);
+<a name="l00133"></a>00133 <span class="preprocessor">#else</span>
+<a name="l00134"></a>00134 <span class="preprocessor"></span> <span class="keywordflow">return</span> std::abs(v);
+<a name="l00135"></a>00135 <span class="preprocessor">#endif</span>
+<a name="l00136"></a>00136 <span class="preprocessor"></span> }
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="keyword">public</span>:
+<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keyword">inline</span> type apply(Polygon <span class="keyword">const</span>& poly,
+<a name="l00140"></a>00140 Strategy <span class="keyword">const</span>& strategy)
+<a name="l00141"></a>00141 {
+<a name="l00142"></a>00142 assert_dimension<Polygon, 2>();
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type<Polygon>::type ring_type;
+<a name="l00145"></a>00145 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00146"></a>00146 <
+<a name="l00147"></a>00147 <span class="keyword">typename</span> interior_type<Polygon>::type
+<a name="l00148"></a>00148 >::type iterator_type;
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 type a = call_abs(
+<a name="l00151"></a>00151 ring_area<ring_type, Strategy>::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy));
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00154"></a>00154 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly)); ++it)
+<a name="l00155"></a>00155 {
+<a name="l00156"></a>00156 a -= call_abs(ring_area<ring_type, Strategy>::apply(*it, strategy));
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 <span class="keywordflow">return</span> a;
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 };
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 }} <span class="comment">// namespace detail::area</span>
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00165"></a>00165 <span class="preprocessor"></span>
+<a name="l00166"></a>00166 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00167"></a>00167 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch {
+<a name="l00168"></a>00168
+<a name="l00169"></a>00169 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00170"></a>00170 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a> : detail::calculate_null<typename S::return_type, G, S> {};
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 <span class="keyword">template</span> <<span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00174"></a>00174 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a><box_tag, G, S> : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::box_area<G, S> {};
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177 <span class="keyword">template</span> <<span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00178"></a>00178 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a><nsphere_tag, G, S> : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::circle_area<G, S> {};
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="comment">// Area of ring currently returns area of closed rings but it might be argued</span>
+<a name="l00182"></a>00182 <span class="comment">// that it is 0.0, because a ring is just a line.</span>
+<a name="l00183"></a>00183 <span class="keyword">template</span> <<span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00184"></a>00184 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a><ring_tag, G, S> : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::ring_area<G, S> {};
+<a name="l00185"></a>00185
+<a name="l00186"></a>00186 <span class="keyword">template</span> <<span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00187"></a>00187 <span class="keyword">struct </span><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a><polygon_tag, G, S> : detail::<a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>::polygon_area<G, S> {};
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 } <span class="comment">// namespace dispatch</span>
+<a name="l00190"></a>00190 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00191"></a>00191 <span class="preprocessor"></span>
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry>
+<a name="l00194"></a><a class="code" href="structggl_1_1area__result.html">00194</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1area__result.html">area_result</a>
+<a name="l00195"></a>00195 {
+<a name="l00196"></a><a class="code" href="structggl_1_1area__result.html#d6428313802f153cd99b803ecde23872">00196</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type<Geometry>::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00197"></a>00197 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__area.html" title="Traits class binding an area strategy to a coordinate system.">strategy_area</a>
+<a name="l00198"></a>00198 <
+<a name="l00199"></a>00199 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag<point_type>::type</a>,
+<a name="l00200"></a>00200 <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>
+<a name="l00201"></a><a class="code" href="structggl_1_1area__result.html#ccb03cf635c157788a99c33d8f3c3a1e">00201</a> >::type <a class="code" href="structggl_1_1strategy_1_1not__implemented.html" title="Indicate compiler/library user that strategy is not implemented.">strategy_type</a>;
+<a name="l00202"></a><a class="code" href="structggl_1_1area__result.html#4915057a85bc6a0c7292b3db1e4f33be">00202</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_type::return_type <a class="code" href="structggl_1_1area__result.html#4915057a85bc6a0c7292b3db1e4f33be">return_type</a>;
+<a name="l00203"></a>00203 };
+<a name="l00204"></a>00204
+<a name="l00216"></a>00216 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry>
+<a name="l00217"></a><a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3">00217</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1area__result.html">area_result<Geometry>::return_type</a> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>(Geometry <span class="keyword">const</span>& geometry)
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy_1_1not__implemented.html" title="Indicate compiler/library user that strategy is not implemented.">area_result<Geometry>::strategy_type</a> strategy_type;
+<a name="l00220"></a>00220
+<a name="l00221"></a>00221 <span class="keywordflow">return</span> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">dispatch::area</a>
+<a name="l00222"></a>00222 <
+<a name="l00223"></a>00223 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00224"></a>00224 Geometry,
+<a name="l00225"></a>00225 strategy_type
+<a name="l00226"></a>00226 >::apply(geometry, strategy_type());
+<a name="l00227"></a>00227 }
+<a name="l00228"></a>00228
+<a name="l00238"></a>00238 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<a name="l00239"></a><a class="code" href="group__area.html#g7e0783c73b5f561707c50b445a01b833">00239</a> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">area</a>(
+<a name="l00240"></a>00240 Geometry <span class="keyword">const</span>& geometry, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00241"></a>00241 {
+<a name="l00242"></a>00242 <span class="keywordflow">return</span> <a class="code" href="group__area.html#g3ebfdefe9c756498730b6d93b83338b3" title="Calculate area of a geometry.">dispatch::area</a>
+<a name="l00243"></a>00243 <
+<a name="l00244"></a>00244 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00245"></a>00245 Geometry,
+<a name="l00246"></a>00246 Strategy
+<a name="l00247"></a>00247 >::apply(geometry, strategy);
+<a name="l00248"></a>00248 }
+<a name="l00249"></a>00249
+<a name="l00250"></a>00250 } <span class="comment">// namespace ggl</span>
+<a name="l00251"></a>00251
+<a name="l00252"></a>00252 <span class="preprocessor">#endif // GGL_ALGORITHMS_AREA_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/centroid.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classggl_1_1centroid__exception.html">ggl::centroid_exception</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G , typename P , typename S > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gda8ccb0bcdd94cebe5b66374259c1fe2">ggl::centroid</a> (const G &geometry, P &c, S const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate centroid using a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G , typename P > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd">ggl::centroid</a> (const G &geometry, P &c)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate centroid. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename P , typename G , typename S > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">P </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#g8c284d8ca53c0ace8827431178438852">ggl::make_centroid</a> (const G &geometry, S const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename P , typename G > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">P </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4">ggl::make_centroid</a> (const G &geometry)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate and return centroid. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2centroid_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,270 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/centroid.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_CENTROID_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_CENTROID_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <cstddef></span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="exception_8hpp.html">ggl/core/exception.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="copy_8hpp.html">ggl/util/copy.hpp</a>></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="loop_8hpp.html">ggl/util/loop.hpp</a>></span>
+<a name="l00026"></a>00026
+<a name="l00045"></a>00045 <span class="keyword">namespace </span>ggl
+<a name="l00046"></a>00046 {
+<a name="l00047"></a>00047
+<a name="l00048"></a><a class="code" href="classggl_1_1centroid__exception.html">00048</a> <span class="keyword">class </span><a class="code" href="classggl_1_1centroid__exception.html">centroid_exception</a> : <span class="keyword">public</span> ggl::<a class="code" href="structggl_1_1exception.html" title="Base exception class for GGL.">exception</a>
+<a name="l00049"></a>00049 {
+<a name="l00050"></a>00050 <span class="keyword">public</span>:
+<a name="l00051"></a>00051
+<a name="l00052"></a><a class="code" href="classggl_1_1centroid__exception.html#60598437eea82fd35bffdbcac8d4b839">00052</a> <a class="code" href="classggl_1_1centroid__exception.html#60598437eea82fd35bffdbcac8d4b839">centroid_exception</a>() {}
+<a name="l00053"></a>00053
+<a name="l00054"></a><a class="code" href="classggl_1_1centroid__exception.html#bff3b7df94389d48e50390a95dbbde7f">00054</a> <span class="keyword">virtual</span> <span class="keywordtype">char</span> <span class="keyword">const</span>* <a class="code" href="classggl_1_1centroid__exception.html#bff3b7df94389d48e50390a95dbbde7f">what</a>() <span class="keyword">const</span> throw()
+<a name="l00055"></a>00055 {
+<a name="l00056"></a>00056 <span class="keywordflow">return</span> <span class="stringliteral">"centroid calculation exception"</span>;
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 };
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00063"></a>00063 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a> {
+<a name="l00064"></a>00064
+<a name="l00068"></a>00068 <span class="keyword">template</span><<span class="keyword">typename</span> P, <span class="keyword">typename</span> R>
+<a name="l00069"></a>00069 <span class="keyword">inline</span> <span class="keywordtype">bool</span> ring_ok(R <span class="keyword">const</span>& ring, P& c)
+<a name="l00070"></a>00070 {
+<a name="l00071"></a>00071 std::size_t <span class="keyword">const</span> n = boost::size(ring);
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (n > 1)
+<a name="l00073"></a>00073 {
+<a name="l00074"></a>00074 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n <= 0)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="keywordflow">throw</span> centroid_exception();
+<a name="l00079"></a>00079 }
+<a name="l00080"></a>00080 <span class="keywordflow">else</span>
+<a name="l00081"></a>00081 {
+<a name="l00082"></a>00082 <span class="comment">// n == 1: Take over the first point in a "coordinate neutral way"</span>
+<a name="l00083"></a>00083 <a class="code" href="namespaceggl.html#173003fecd63871d3a6aee07f4ba7011" title="Copies coordinates from source to destination point.">copy_coordinates</a>(ring.front(), c);
+<a name="l00084"></a>00084 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00085"></a>00085 }
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088
+<a name="l00092"></a>00092 <span class="keyword">template</span><<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<a name="l00093"></a>00093 <span class="keyword">struct </span>centroid_ring
+<a name="l00094"></a>00094 {
+<a name="l00095"></a>00095 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Ring <span class="keyword">const</span>& ring, Point& c, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 <span class="keywordflow">if</span> (ring_ok(ring, c))
+<a name="l00098"></a>00098 {
+<a name="l00099"></a>00099 <span class="keyword">typename</span> Strategy::state_type state;
+<a name="l00100"></a>00100 <a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(ring, strategy, state);
+<a name="l00101"></a>00101 state.centroid(c);
+<a name="l00102"></a>00102 }
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104 };
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106
+<a name="l00112"></a>00112 <span class="keyword">template</span><<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<a name="l00113"></a>00113 <span class="keyword">struct </span>centroid_polygon
+<a name="l00114"></a>00114 {
+<a name="l00115"></a>00115 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>& poly, Point& c, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keywordflow">if</span> (ring_ok(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), c))
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119 <span class="keyword">typename</span> Strategy::state_type state;
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy, state);
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00124"></a>00124 <
+<a name="l00125"></a>00125 <span class="keyword">typename</span> interior_type<Polygon>::type
+<a name="l00126"></a>00126 >::type iterator_type;
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00129"></a>00129 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00130"></a>00130 ++it)
+<a name="l00131"></a>00131 {
+<a name="l00132"></a>00132 <a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(*it, strategy, state);
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134 state.centroid(c);
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 };
+<a name="l00138"></a>00138
+<a name="l00143"></a>00143 <span class="keyword">template</span><<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<a name="l00144"></a>00144 <span class="keyword">struct </span>centroid_box
+<a name="l00145"></a>00145 {
+<a name="l00146"></a>00146 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>& box, Point& c, Strategy <span class="keyword">const</span>&)
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="comment">// TODO: adapt using strategies</span>
+<a name="l00149"></a>00149 assert_dimension<Box, 2>();
+<a name="l00150"></a>00150 set<0>(c, (get<min_corner, 0>(box) + get<max_corner, 0>(box)) / 2);
+<a name="l00151"></a>00151 set<1>(c, (get<min_corner, 1>(box) + get<max_corner, 1>(box)) / 2);
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 };
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 }} <span class="comment">// namespace detail::centroid</span>
+<a name="l00156"></a>00156 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00157"></a>00157 <span class="preprocessor"></span>
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00160"></a>00160 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00161"></a>00161 {
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<a name="l00164"></a>00164 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a> {};
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <span class="keyword">template</span> <<span class="keyword">typename</span> Box, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<a name="l00167"></a>00167 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a><box_tag, Box, Point, Strategy>
+<a name="l00168"></a>00168 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_box<Box, Point, Strategy>
+<a name="l00169"></a>00169 {};
+<a name="l00170"></a>00170
+<a name="l00171"></a>00171 <span class="keyword">template</span> <<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<a name="l00172"></a>00172 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a><ring_tag, Ring, Point, Strategy>
+<a name="l00173"></a>00173 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_ring<Ring, Point, Strategy>
+<a name="l00174"></a>00174 {};
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Strategy>
+<a name="l00177"></a>00177 <span class="keyword">struct </span><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a><polygon_tag, Polygon, Point, Strategy>
+<a name="l00178"></a>00178 : detail::<a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>::centroid_polygon<Polygon, Point, Strategy>
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180 {};
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 } <span class="comment">// namespace dispatch</span>
+<a name="l00183"></a>00183 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00184"></a>00184 <span class="preprocessor"></span>
+<a name="l00185"></a>00185
+<a name="l00202"></a>00202 <span class="keyword">template</span><<span class="keyword">typename</span> G, <span class="keyword">typename</span> P>
+<a name="l00203"></a><a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd">00203</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(<span class="keyword">const</span> G& geometry, P& c)
+<a name="l00204"></a>00204 {
+<a name="l00205"></a>00205 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type<G>::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00206"></a>00206 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__centroid.html" title="Traits class binding a centroid calculation strategy to a coordinate system.">strategy_centroid</a>
+<a name="l00207"></a>00207 <
+<a name="l00208"></a>00208 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag<point_type>::type</a>,
+<a name="l00209"></a>00209 P,
+<a name="l00210"></a>00210 point_type
+<a name="l00211"></a>00211 >::type strategy_type;
+<a name="l00212"></a>00212
+<a name="l00213"></a>00213 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">dispatch::centroid</a>
+<a name="l00214"></a>00214 <
+<a name="l00215"></a>00215 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::type</a>,
+<a name="l00216"></a>00216 G,
+<a name="l00217"></a>00217 P,
+<a name="l00218"></a>00218 strategy_type
+<a name="l00219"></a>00219 >::apply(geometry, c, strategy_type());
+<a name="l00220"></a>00220 }
+<a name="l00221"></a>00221
+<a name="l00230"></a>00230 <span class="keyword">template</span><<span class="keyword">typename</span> G, <span class="keyword">typename</span> P, <span class="keyword">typename</span> S>
+<a name="l00231"></a><a class="code" href="group__centroid.html#gda8ccb0bcdd94cebe5b66374259c1fe2">00231</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(<span class="keyword">const</span> G& geometry, P& c, S <span class="keyword">const</span>& strategy)
+<a name="l00232"></a>00232 {
+<a name="l00233"></a>00233 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">dispatch::centroid</a>
+<a name="l00234"></a>00234 <
+<a name="l00235"></a>00235 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::type</a>,
+<a name="l00236"></a>00236 G,
+<a name="l00237"></a>00237 P,
+<a name="l00238"></a>00238 S
+<a name="l00239"></a>00239 >::apply(geometry, c, strategy);
+<a name="l00240"></a>00240 }
+<a name="l00241"></a>00241
+<a name="l00242"></a>00242 <span class="comment">// Versions returning a centroid</span>
+<a name="l00243"></a>00243
+<a name="l00251"></a>00251 <span class="keyword">template</span><<span class="keyword">typename</span> P, <span class="keyword">typename</span> G>
+<a name="l00252"></a><a class="code" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4">00252</a> <span class="keyword">inline</span> P <a class="code" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4" title="Calculate and return centroid.">make_centroid</a>(<span class="keyword">const</span> G& geometry)
+<a name="l00253"></a>00253 {
+<a name="l00254"></a>00254 P c;
+<a name="l00255"></a>00255 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(geometry, c);
+<a name="l00256"></a>00256 <span class="keywordflow">return</span> c;
+<a name="l00257"></a>00257 }
+<a name="l00258"></a>00258
+<a name="l00267"></a>00267 <span class="keyword">template</span><<span class="keyword">typename</span> P, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00268"></a><a class="code" href="group__centroid.html#g8c284d8ca53c0ace8827431178438852">00268</a> <span class="keyword">inline</span> P <a class="code" href="group__centroid.html#gcb8d61ecb3cb509353728f50d9ae03b4" title="Calculate and return centroid.">make_centroid</a>(<span class="keyword">const</span> G& geometry, S <span class="keyword">const</span>& strategy)
+<a name="l00269"></a>00269 {
+<a name="l00270"></a>00270 P c;
+<a name="l00271"></a>00271 <a class="code" href="group__centroid.html#g2b743cdd7177313b561780ba87c633cd" title="Calculate centroid.">centroid</a>(geometry, c, strategy);
+<a name="l00272"></a>00272 <span class="keywordflow">return</span> c;
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274
+<a name="l00275"></a>00275 } <span class="comment">// namespace ggl</span>
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277 <span class="preprocessor">#endif // GGL_ALGORITHMS_CENTROID_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/convex_hull.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry , typename OutputIterator > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">OutputIterator </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18">ggl::convex_hull</a> (Geometry const &geometry, OutputIterator out)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate the convex hull of a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2convex__hull_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,167 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/convex_hull.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_CONVEX_HULL_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_CONVEX_HULL_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012
+<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/type_traits/remove_const.hpp></span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>></span>
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="as__range_8hpp.html">ggl/util/as_range.hpp</a>></span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025
+<a name="l00044"></a>00044 <span class="keyword">namespace </span>ggl {
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a> {
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator>
+<a name="l00050"></a>00050 <span class="keyword">struct </span>hull
+<a name="l00051"></a>00051 {
+<a name="l00052"></a>00052 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Geometry <span class="keyword">const</span>& geometry,
+<a name="l00053"></a>00053 OutputIterator out)
+<a name="l00054"></a>00054 {
+<a name="l00055"></a>00055 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<Geometry>::type point_type;
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_convex_hull
+<a name="l00058"></a>00058 <
+<a name="l00059"></a>00059 <span class="keyword">typename</span> cs_tag<point_type>::type,
+<a name="l00060"></a>00060 point_type
+<a name="l00061"></a>00061 >::type strategy_type;
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 strategy_type s(<a class="code" href="group__utility.html#g1868bde329b825c540572ac0a73e4f2b" title="Function getting either the range (ring, linestring) itself or the outer ring.">as_range</a><<span class="keyword">typename</span> as_range_type<Geometry>::type>(geometry));
+<a name="l00064"></a>00064 s.get(out);
+<a name="l00065"></a>00065 <span class="keywordflow">return</span> out;
+<a name="l00066"></a>00066 }
+<a name="l00067"></a>00067 };
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 }} <span class="comment">// namespace detail::convex_hull</span>
+<a name="l00071"></a>00071 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00072"></a>00072 <span class="preprocessor"></span>
+<a name="l00073"></a>00073 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00074"></a>00074 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 <span class="keyword">template</span>
+<a name="l00078"></a>00078 <
+<a name="l00079"></a>00079 <span class="keyword">typename</span> GeometryTag,
+<a name="l00080"></a>00080 <span class="keywordtype">bool</span> IsMulti,
+<a name="l00081"></a>00081 <span class="keyword">typename</span> Geometry,
+<a name="l00082"></a>00082 <span class="keyword">typename</span> OutputIterator
+<a name="l00083"></a>00083 >
+<a name="l00084"></a>00084 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a> {};
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="keyword">template</span> <<span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> OutputIterator>
+<a name="l00087"></a>00087 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a><linestring_tag, false, Linestring, OutputIterator>
+<a name="l00088"></a>00088 : detail::<a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull<Linestring, OutputIterator>
+<a name="l00089"></a>00089 {};
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <span class="keyword">template</span> <<span class="keyword">typename</span> Ring, <span class="keyword">typename</span> OutputIterator>
+<a name="l00092"></a>00092 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a><ring_tag, false, Ring, OutputIterator>
+<a name="l00093"></a>00093 : detail::<a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull<Ring, OutputIterator>
+<a name="l00094"></a>00094 {};
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> OutputIterator>
+<a name="l00097"></a>00097 <span class="keyword">struct </span><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a><polygon_tag, false, Polygon, OutputIterator>
+<a name="l00098"></a>00098 : detail::<a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>::hull<Polygon, OutputIterator>
+<a name="l00099"></a>00099 {};
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 } <span class="comment">// namespace dispatch</span>
+<a name="l00102"></a>00102 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00103"></a>00103 <span class="preprocessor"></span>
+<a name="l00111"></a>00111 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> OutputIterator>
+<a name="l00112"></a><a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18">00112</a> <span class="keyword">inline</span> OutputIterator <a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">convex_hull</a>(Geometry <span class="keyword">const</span>& geometry, OutputIterator out)
+<a name="l00113"></a>00113 {
+<a name="l00114"></a>00114 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const<Geometry>::type ncg_type;
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keywordflow">return</span> <a class="code" href="group__convex__hull.html#gc1989428c0a32cd2fd48272cd6833e18" title="Calculate the convex hull of a geometry.">dispatch::convex_hull</a>
+<a name="l00117"></a>00117 <
+<a name="l00118"></a>00118 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<ncg_type>::type</a>,
+<a name="l00119"></a>00119 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<ncg_type>::type::value</a>,
+<a name="l00120"></a>00120 Geometry,
+<a name="l00121"></a>00121 OutputIterator
+<a name="l00122"></a>00122 >::apply(geometry, out);
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 } <span class="comment">// namespace ggl</span>
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="preprocessor">#endif // GGL_ALGORITHMS_CONVEX_HULL_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/correct.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">ggl::correct</a> (G &geometry)</td></tr>
+
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2correct_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,226 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/correct.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_CORRECT_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_CORRECT_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <algorithm></span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="algorithms_2area_8hpp.html">ggl/algorithms/area.hpp</a>></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="disjoint_8hpp.html">ggl/algorithms/disjoint.hpp</a>></span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>ggl
+<a name="l00029"></a>00029 {
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a> {
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034 <span class="comment">// correct an box: make min/max are correct</span>
+<a name="l00035"></a>00035 <span class="keyword">template</span> <<span class="keyword">typename</span> B>
+<a name="l00036"></a>00036 <span class="keyword">inline</span> <span class="keywordtype">void</span> correct_box(B& b)
+<a name="l00037"></a>00037 {
+<a name="l00038"></a>00038 <span class="comment">// Currently only for Cartesian coordinates</span>
+<a name="l00039"></a>00039 <span class="comment">// TODO: adapt using strategies</span>
+<a name="l00040"></a>00040 <span class="comment">// TODO: adapt using traits</span>
+<a name="l00041"></a>00041 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html#b723a443a97f7c4ed7c47ac96d7e29ee">coordinate_type<B>::type</a> coordinate_type;
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (get<min_corner, 0>(b) > get<max_corner, 0>(b))
+<a name="l00044"></a>00044 {
+<a name="l00045"></a>00045 coordinate_type max_value = get<min_corner, 0>(b);
+<a name="l00046"></a>00046 coordinate_type min_value = get<max_corner, 0>(b);
+<a name="l00047"></a>00047 set<min_corner, 0>(b, min_value);
+<a name="l00048"></a>00048 set<max_corner, 0>(b, max_value);
+<a name="l00049"></a>00049 }
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="keywordflow">if</span> (get<min_corner, 1>(b) > get<max_corner, 1>(b))
+<a name="l00052"></a>00052 {
+<a name="l00053"></a>00053 coordinate_type max_value = get<min_corner, 1>(b);
+<a name="l00054"></a>00054 coordinate_type min_value = get<max_corner, 1>(b);
+<a name="l00055"></a>00055 set<min_corner, 1>(b, min_value);
+<a name="l00056"></a>00056 set<max_corner, 1>(b, max_value);
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060 <span class="comment">// close a linear_ring, if not closed</span>
+<a name="l00061"></a>00061 <span class="keyword">template</span> <<span class="keyword">typename</span> R>
+<a name="l00062"></a>00062 <span class="keyword">inline</span> <span class="keywordtype">void</span> ensure_closed_ring(R& r)
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 <span class="keywordflow">if</span> (boost::size(r) > 2)
+<a name="l00065"></a>00065 {
+<a name="l00066"></a>00066 <span class="comment">// check if closed, if not, close it</span>
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g6d772a2eb8ad083e056bdbf0ec7ae8a1" title="Calculate if two geometries are disjoint.">ggl::disjoint</a>(r.front(), r.back()))
+<a name="l00068"></a>00068 {
+<a name="l00069"></a>00069 r.push_back(r.front());
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073
+<a name="l00074"></a>00074 <span class="comment">// correct a polygon: normalizes all rings, sets outer linear_ring clockwise, sets all</span>
+<a name="l00075"></a>00075 <span class="comment">// inner rings counter clockwise</span>
+<a name="l00076"></a>00076 <span class="keyword">template</span> <<span class="keyword">typename</span> Y>
+<a name="l00077"></a>00077 <span class="keyword">inline</span> <span class="keywordtype">void</span> correct_polygon(Y& poly)
+<a name="l00078"></a>00078 {
+<a name="l00079"></a>00079 <span class="keyword">typename</span> ring_type<Y>::type& outer = <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly);
+<a name="l00080"></a>00080 ensure_closed_ring(outer);
+<a name="l00081"></a>00081
+<a name="l00082"></a>00082 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<Y>::type point_type;
+<a name="l00083"></a>00083 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type<Y>::type ring_type;
+<a name="l00084"></a>00084 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_area
+<a name="l00085"></a>00085 <
+<a name="l00086"></a>00086 <span class="keyword">typename</span> cs_tag<point_type>::type,
+<a name="l00087"></a>00087 point_type
+<a name="l00088"></a>00088 >::type strategy_type;
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 strategy_type strategy;
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 <span class="keywordflow">if</span> (detail::area::ring_area<ring_type, strategy_type>::apply(outer, strategy) < 0)
+<a name="l00093"></a>00093 {
+<a name="l00094"></a>00094 std::reverse(boost::begin(outer), boost::end(outer));
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator
+<a name="l00098"></a>00098 <
+<a name="l00099"></a>00099 <span class="keyword">typename</span> interior_type<Y>::type
+<a name="l00100"></a>00100 >::type iterator_type;
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00103"></a>00103 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly)); ++it)
+<a name="l00104"></a>00104 {
+<a name="l00105"></a>00105 ensure_closed_ring(*it);
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (detail::area::ring_area<ring_type, strategy_type>::apply(*it, strategy) > 0)
+<a name="l00107"></a>00107 {
+<a name="l00108"></a>00108 std::reverse(boost::begin(*it), boost::end(*it));
+<a name="l00109"></a>00109 }
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 }} <span class="comment">// namespace detail::correct</span>
+<a name="l00114"></a>00114 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00115"></a>00115 <span class="preprocessor"></span>
+<a name="l00116"></a>00116 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00117"></a>00117 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G>
+<a name="l00121"></a>00121 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a> {};
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 <span class="keyword">template</span> <<span class="keyword">typename</span> B>
+<a name="l00124"></a>00124 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a><box_tag, B>
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(B& box)
+<a name="l00127"></a>00127 {
+<a name="l00128"></a>00128 detail::correct::correct_box(box);
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 };
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 <span class="keyword">template</span> <<span class="keyword">typename</span> R>
+<a name="l00133"></a>00133 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a><ring_tag, R>
+<a name="l00134"></a>00134 {
+<a name="l00135"></a>00135 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R& ring)
+<a name="l00136"></a>00136 {
+<a name="l00137"></a>00137 detail::correct::ensure_closed_ring(ring);
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 };
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <span class="keyword">template</span> <<span class="keyword">typename</span> P>
+<a name="l00142"></a>00142 <span class="keyword">struct </span><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a><polygon_tag, P>
+<a name="l00143"></a>00143 {
+<a name="l00144"></a>00144 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P& poly)
+<a name="l00145"></a>00145 {
+<a name="l00146"></a>00146 detail::correct::correct_polygon(poly);
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 };
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 } <span class="comment">// namespace dispatch</span>
+<a name="l00151"></a>00151 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00152"></a>00152 <span class="preprocessor"></span>
+<a name="l00153"></a>00153 <span class="keyword">template</span> <<span class="keyword">typename</span> G>
+<a name="l00154"></a><a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">00154</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceggl.html#de63f8bac74d1e2a56c2d2712eceb8af">correct</a>(G& geometry)
+<a name="l00155"></a>00155 {
+<a name="l00156"></a>00156 dispatch::correct<typename tag<G>::type, G>::apply(geometry);
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 } <span class="comment">// namespace ggl</span>
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161 <span class="preprocessor">#endif // GGL_ALGORITHMS_CORRECT_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/distance.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry1 , typename Geometry2 > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">distance_result< Geometry1, <br class="typebreak">
+Geometry2 >::type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__distance.html#gd122aa78e960f37b9d61bb02c6913f55">ggl::distance</a> (Geometry1 const &geometry1, Geometry2 const &geometry2)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate distance between two geometries. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry1 , typename Geometry2 , typename Strategy > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Strategy::return_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__distance.html#g22a618786d2601e9201896a8346c161b">ggl::distance</a> (Geometry1 const &geometry1, Geometry2 const &geometry2, Strategy const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate distance between two geometries with a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2distance_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,363 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/distance.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_DISTANCE_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_DISTANCE_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <boost/mpl/if.hpp></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/static_assert.hpp></span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="core_2is__multi_8hpp.html">ggl/core/is_multi.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="reverse__dispatch_8hpp.html">ggl/core/reverse_dispatch.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="distance__result_8hpp.html">ggl/strategies/distance_result.hpp</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00023"></a>00023
+<a name="l00055"></a>00055 <span class="keyword">namespace </span>ggl
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00059"></a>00059 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a> {
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 <span class="keyword">template</span> <<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2, <span class="keyword">typename</span> Strategy>
+<a name="l00062"></a>00062 <span class="keyword">struct </span>point_to_point
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type apply(P1 <span class="keyword">const</span>& p1,
+<a name="l00065"></a>00065 P2 <span class="keyword">const</span>& p2, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00066"></a>00066 {
+<a name="l00067"></a>00067 <span class="keywordflow">return</span> strategy(p1, p2);
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069 };
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071
+<a name="l00072"></a>00072 <span class="keyword">template</span><<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy>
+<a name="l00073"></a>00073 <span class="keyword">struct </span>point_to_segment
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type apply(Point <span class="keyword">const</span>& point,
+<a name="l00076"></a>00076 Segment <span class="keyword">const</span>& segment, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00077"></a>00077 {
+<a name="l00078"></a>00078 <span class="keyword">typename</span> strategy_distance_segment
+<a name="l00079"></a>00079 <
+<a name="l00080"></a>00080 <span class="keyword">typename</span> cs_tag<Point>::type,
+<a name="l00081"></a>00081 <span class="keyword">typename</span> cs_tag<Segment>::type,
+<a name="l00082"></a>00082 Point,
+<a name="l00083"></a>00083 Segment
+<a name="l00084"></a>00084 >::type segment_strategy;
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> segment_strategy(point, segment);
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088 };
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <span class="keyword">template</span><<span class="keyword">typename</span> P, <span class="keyword">typename</span> L, <span class="keyword">typename</span> PPStrategy, <span class="keyword">typename</span> PSStrategy>
+<a name="l00092"></a>00092 <span class="keyword">struct </span>point_to_linestring
+<a name="l00093"></a>00093 {
+<a name="l00094"></a>00094 <span class="keyword">typedef</span> <span class="keyword">typename</span> PPStrategy::return_type return_type;
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 <span class="keyword">static</span> <span class="keyword">inline</span> return_type apply(P <span class="keyword">const</span>& point, L <span class="keyword">const</span>& linestring,
+<a name="l00097"></a>00097 PPStrategy <span class="keyword">const</span>& pp_strategy, PSStrategy <span class="keyword">const</span>& ps_strategy)
+<a name="l00098"></a>00098 {
+<a name="l00099"></a>00099 <span class="keyword">typedef</span> segment<const typename point_type<L>::type> segment_type;
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keywordflow">if</span> (boost::begin(linestring) == boost::end(linestring))
+<a name="l00102"></a>00102 {
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> return_type(0);
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="comment">// line of one point: return point square_distance</span>
+<a name="l00107"></a>00107 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator<L>::type iterator_type;
+<a name="l00108"></a>00108 iterator_type it = boost::begin(linestring);
+<a name="l00109"></a>00109 iterator_type prev = it++;
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (it == boost::end(linestring))
+<a name="l00111"></a>00111 {
+<a name="l00112"></a>00112 <span class="keywordflow">return</span> pp_strategy(point, *boost::begin(linestring));
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="comment">// start with first segment distance</span>
+<a name="l00117"></a>00117 return_type d = ps_strategy(point, segment_type(*prev, *it));
+<a name="l00118"></a>00118
+<a name="l00119"></a>00119 <span class="comment">// check if other segments are closer</span>
+<a name="l00120"></a>00120 prev = it++;
+<a name="l00121"></a>00121 <span class="keywordflow">while</span>(it != boost::end(linestring))
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 return_type ds = ps_strategy(point, segment_type(*prev, *it));
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> (<a class="code" href="group__distance.html#ge8ca95bca0a05bf37ceee1996d55c098" title="Utility function to check if a distance is very small.">ggl::close_to_zero</a>(ds))
+<a name="l00125"></a>00125 {
+<a name="l00126"></a>00126 <span class="keywordflow">return</span> return_type(0);
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ds < d)
+<a name="l00129"></a>00129 {
+<a name="l00130"></a>00130 d = ds;
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132 prev = it++;
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="keywordflow">return</span> d;
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137 };
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 }} <span class="comment">// namespace detail::distance</span>
+<a name="l00142"></a>00142 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00143"></a>00143 <span class="preprocessor"></span>
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00146"></a>00146 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148
+<a name="l00149"></a>00149 <span class="keyword">template</span>
+<a name="l00150"></a>00150 <
+<a name="l00151"></a>00151 <span class="keyword">typename</span> GeometryTag1, <span class="keyword">typename</span> GeometryTag2,
+<a name="l00152"></a>00152 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
+<a name="l00153"></a>00153 <span class="keyword">typename</span> StrategyTag, <span class="keyword">typename</span> Strategy,
+<a name="l00154"></a>00154 <span class="keywordtype">bool</span> IsMulti1, <span class="keywordtype">bool</span> IsMulti2
+<a name="l00155"></a>00155 >
+<a name="l00156"></a>00156 <span class="keyword">struct </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>
+<a name="l00157"></a>00157 {};
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 <span class="keyword">template</span> <<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2, <span class="keyword">typename</span> Strategy>
+<a name="l00161"></a>00161 <span class="keyword">struct </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>
+<a name="l00162"></a>00162 <
+<a name="l00163"></a>00163 point_tag, point_tag,
+<a name="l00164"></a>00164 P1, P2,
+<a name="l00165"></a>00165 strategy_tag_distance_point_point, Strategy,
+<a name="l00166"></a>00166 false, false
+<a name="l00167"></a>00167 > : detail::<a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>::point_to_point<P1, P2, Strategy>
+<a name="l00168"></a>00168 {};
+<a name="l00169"></a>00169
+<a name="l00171"></a>00171 <span class="keyword">template</span> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Strategy>
+<a name="l00172"></a>00172 <span class="keyword">struct </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>
+<a name="l00173"></a>00173 <
+<a name="l00174"></a>00174 point_tag, linestring_tag,
+<a name="l00175"></a>00175 Point, Linestring,
+<a name="l00176"></a>00176 strategy_tag_distance_point_point, Strategy,
+<a name="l00177"></a>00177 false, false
+<a name="l00178"></a>00178 >
+<a name="l00179"></a>00179 {
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type apply(Point <span class="keyword">const</span>& point,
+<a name="l00182"></a>00182 Linestring <span class="keyword">const</span>& linestring,
+<a name="l00183"></a>00183 Strategy <span class="keyword">const</span>& strategy)
+<a name="l00184"></a>00184 {
+<a name="l00185"></a>00185 <span class="keyword">typedef</span> segment<const typename point_type<Linestring>::type> segment_type;
+<a name="l00186"></a>00186 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance__segment.html" title="Traits class binding a distance-to-segment strategy to a (possibly two) coordinate...">ggl::strategy_distance_segment</a>
+<a name="l00187"></a>00187 <
+<a name="l00188"></a>00188 <span class="keyword">typename</span> cs_tag<Point>::type,
+<a name="l00189"></a>00189 <span class="keyword">typename</span> cs_tag<segment_type>::type,
+<a name="l00190"></a>00190 Point,
+<a name="l00191"></a>00191 segment_type
+<a name="l00192"></a>00192 >::type ps_strategy_type;
+<a name="l00193"></a>00193
+<a name="l00194"></a>00194 <span class="keywordflow">return</span> detail::distance::point_to_linestring
+<a name="l00195"></a>00195 <
+<a name="l00196"></a>00196 Point, Linestring, Strategy, ps_strategy_type
+<a name="l00197"></a>00197 >::apply(point, linestring, strategy, ps_strategy_type());
+<a name="l00198"></a>00198 }
+<a name="l00199"></a>00199 };
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201
+<a name="l00203"></a>00203 <span class="keyword">template</span> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Line<span class="keywordtype">string</span>, <span class="keyword">typename</span> Strategy>
+<a name="l00204"></a>00204 <span class="keyword">struct </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>
+<a name="l00205"></a>00205 <
+<a name="l00206"></a>00206 point_tag, linestring_tag,
+<a name="l00207"></a>00207 Point, Linestring,
+<a name="l00208"></a>00208 strategy_tag_distance_point_segment, Strategy,
+<a name="l00209"></a>00209 false, false
+<a name="l00210"></a>00210 >
+<a name="l00211"></a>00211 {
+<a name="l00212"></a>00212 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type apply(Point <span class="keyword">const</span>& point,
+<a name="l00213"></a>00213 Linestring <span class="keyword">const</span>& linestring,
+<a name="l00214"></a>00214 Strategy <span class="keyword">const</span>& strategy)
+<a name="l00215"></a>00215 {
+<a name="l00216"></a>00216 <span class="keyword">typedef</span> <span class="keyword">typename</span> Strategy::point_strategy_type pp_strategy_type;
+<a name="l00217"></a>00217 <span class="keywordflow">return</span> detail::distance::point_to_linestring
+<a name="l00218"></a>00218 <
+<a name="l00219"></a>00219 Point, Linestring, pp_strategy_type, Strategy
+<a name="l00220"></a>00220 >::apply(point, linestring, pp_strategy_type(), strategy);
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 };
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224
+<a name="l00225"></a>00225 <span class="keyword">template</span> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>, <span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy>
+<a name="l00226"></a>00226 <span class="keyword">struct </span><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>
+<a name="l00227"></a>00227 <
+<a name="l00228"></a>00228 point_tag, segment_tag,
+<a name="l00229"></a>00229 Point, Segment,
+<a name="l00230"></a>00230 strategy_tag_distance_point_point, Strategy,
+<a name="l00231"></a>00231 false, false
+<a name="l00232"></a>00232 > : detail::<a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>::point_to_segment<Point, Segment, Strategy>
+<a name="l00233"></a>00233 {};
+<a name="l00234"></a>00234
+<a name="l00235"></a>00235
+<a name="l00236"></a>00236 <span class="comment">// Strictly spoken this might be in namespace <impl> again</span>
+<a name="l00237"></a>00237 <span class="keyword">template</span>
+<a name="l00238"></a>00238 <
+<a name="l00239"></a>00239 <span class="keyword">typename</span> GeometryTag1, <span class="keyword">typename</span> GeometryTag2,
+<a name="l00240"></a>00240 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
+<a name="l00241"></a>00241 <span class="keyword">typename</span> StrategyTag, <span class="keyword">typename</span> Strategy,
+<a name="l00242"></a>00242 <span class="keywordtype">bool</span> IsMulti1, <span class="keywordtype">bool</span> IsMulti2
+<a name="l00243"></a>00243 >
+<a name="l00244"></a>00244 <span class="keyword">struct </span>distance_reversed
+<a name="l00245"></a>00245 {
+<a name="l00246"></a>00246 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type apply(G1 <span class="keyword">const</span>& g1,
+<a name="l00247"></a>00247 G2 <span class="keyword">const</span>& g2, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00248"></a>00248 {
+<a name="l00249"></a>00249 <span class="keywordflow">return</span> <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>
+<a name="l00250"></a>00250 <
+<a name="l00251"></a>00251 GeometryTag2, GeometryTag1,
+<a name="l00252"></a>00252 G2, G1,
+<a name="l00253"></a>00253 StrategyTag, Strategy,
+<a name="l00254"></a>00254 IsMulti2, IsMulti1
+<a name="l00255"></a>00255 >::apply(g2, g1, strategy);
+<a name="l00256"></a>00256 }
+<a name="l00257"></a>00257 };
+<a name="l00258"></a>00258
+<a name="l00259"></a>00259 } <span class="comment">// namespace dispatch</span>
+<a name="l00260"></a>00260 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00261"></a>00261 <span class="preprocessor"></span>
+<a name="l00281"></a>00281 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry1, <span class="keyword">typename</span> Geometry2, <span class="keyword">typename</span> Strategy>
+<a name="l00282"></a><a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b">00282</a> <span class="keyword">inline</span> <span class="keyword">typename</span> Strategy::return_type <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(Geometry1 <span class="keyword">const</span>& geometry1,
+<a name="l00283"></a>00283 Geometry2 <span class="keyword">const</span>& geometry2, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00284"></a>00284 {
+<a name="l00285"></a>00285 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const<Geometry1>::type ncg1_type;
+<a name="l00286"></a>00286 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const<Geometry2>::type ncg2_type;
+<a name="l00287"></a>00287
+<a name="l00288"></a>00288 <span class="keywordflow">return</span> boost::mpl::if_c
+<a name="l00289"></a>00289 <
+<a name="l00290"></a>00290 <a class="code" href="structggl_1_1reverse__dispatch.html">ggl::reverse_dispatch<Geometry1, Geometry2>::type::value</a>,
+<a name="l00291"></a>00291 dispatch::distance_reversed
+<a name="l00292"></a>00292 <
+<a name="l00293"></a>00293 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<ncg1_type>::type</a>,
+<a name="l00294"></a>00294 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<ncg2_type>::type</a>,
+<a name="l00295"></a>00295 ncg1_type,
+<a name="l00296"></a>00296 ncg2_type,
+<a name="l00297"></a>00297 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__tag__unknown.html">strategy_tag<Strategy>::type</a>,
+<a name="l00298"></a>00298 Strategy,
+<a name="l00299"></a>00299 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<ncg1_type>::value</a>,
+<a name="l00300"></a>00300 <a class="code" href="structggl_1_1is__multi.html" title="Meta-function defining &quot;true&quot; for multi geometries (multi_point, etc).">is_multi<ncg2_type>::value</a>
+<a name="l00301"></a>00301 >,
+<a name="l00302"></a>00302 <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">dispatch::distance</a>
+<a name="l00303"></a>00303 <
+<a name="l00304"></a>00304 <span class="keyword">typename</span> tag<ncg1_type>::type,
+<a name="l00305"></a>00305 <span class="keyword">typename</span> tag<ncg2_type>::type,
+<a name="l00306"></a>00306 ncg1_type,
+<a name="l00307"></a>00307 ncg2_type,
+<a name="l00308"></a>00308 <span class="keyword">typename</span> strategy_tag<Strategy>::type,
+<a name="l00309"></a>00309 Strategy,
+<a name="l00310"></a>00310 is_multi<ncg1_type>::value,
+<a name="l00311"></a>00311 is_multi<ncg2_type>::value
+<a name="l00312"></a>00312 >
+<a name="l00313"></a>00313 >::type::apply(geometry1, geometry2, strategy);
+<a name="l00314"></a>00314 }
+<a name="l00315"></a>00315
+<a name="l00316"></a>00316
+<a name="l00327"></a>00327 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry1, <span class="keyword">typename</span> Geometry2>
+<a name="l00328"></a><a class="code" href="group__distance.html#gd122aa78e960f37b9d61bb02c6913f55">00328</a> <span class="keyword">inline</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1distance__result.html" title="Shortcut to define return type of distance strategy.">distance_result<Geometry1, Geometry2>::type</a> <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(
+<a name="l00329"></a>00329 Geometry1 <span class="keyword">const</span>& geometry1, Geometry2 <span class="keyword">const</span>& geometry2)
+<a name="l00330"></a>00330 {
+<a name="l00331"></a>00331 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type<Geometry1>::type</a> point1_type;
+<a name="l00332"></a>00332 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type<Geometry2>::type</a> point2_type;
+<a name="l00333"></a>00333
+<a name="l00334"></a>00334 <span class="comment">// Define a point-point-distance-strategy</span>
+<a name="l00335"></a>00335 <span class="comment">// for either the normal case, either the reversed case</span>
+<a name="l00336"></a>00336 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_c
+<a name="l00337"></a>00337 <
+<a name="l00338"></a>00338 <a class="code" href="structggl_1_1reverse__dispatch.html">ggl::reverse_dispatch<Geometry1, Geometry2>::type::value</a>,
+<a name="l00339"></a>00339 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
+<a name="l00340"></a>00340 <
+<a name="l00341"></a>00341 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag<point2_type>::type</a>,
+<a name="l00342"></a>00342 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag<point1_type>::type</a>,
+<a name="l00343"></a>00343 point2_type,
+<a name="l00344"></a>00344 point1_type
+<a name="l00345"></a>00345 >::type,
+<a name="l00346"></a>00346 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
+<a name="l00347"></a>00347 <
+<a name="l00348"></a>00348 <span class="keyword">typename</span> cs_tag<point1_type>::type,
+<a name="l00349"></a>00349 <span class="keyword">typename</span> cs_tag<point2_type>::type,
+<a name="l00350"></a>00350 point1_type,
+<a name="l00351"></a>00351 point2_type
+<a name="l00352"></a>00352 >::type
+<a name="l00353"></a>00353 >::type strategy;
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 <span class="keywordflow">return</span> <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(geometry1, geometry2, strategy());
+<a name="l00356"></a>00356 }
+<a name="l00357"></a>00357
+<a name="l00358"></a>00358 } <span class="comment">// namespace ggl</span>
+<a name="l00359"></a>00359
+<a name="l00360"></a>00360 <span class="preprocessor">#endif // GGL_ALGORITHMS_DISTANCE_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/envelope.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G , typename B > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g89671917cfb1753f65d4bcc2fc334bf9">ggl::envelope</a> (G const &geometry, B &mbr)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate envelope of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G , typename B , typename S > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36">ggl::envelope</a> (G const &geometry, B &mbr, S const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate envelope of a geometry, using a specified <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename B , typename G > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">B </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g938cf2804a87e138cbf4b5b65314a3e4">ggl::make_envelope</a> (G const &geometry)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename B , typename G , typename S > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">B </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d">ggl::make_envelope</a> (G const &geometry, S const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate and return envelope of a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2envelope_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,321 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/envelope.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_ENVELOPE_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_ENVELOPE_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/numeric/conversion/cast.hpp></span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="combine_8hpp.html">ggl/algorithms/combine.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="box__concept_8hpp.html">ggl/core/concepts/box_concept.hpp</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="linestring__concept_8hpp.html">ggl/core/concepts/linestring_concept.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="nsphere__concept_8hpp.html">ggl/core/concepts/nsphere_concept.hpp</a>></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="polygon__concept_8hpp.html">ggl/core/concepts/polygon_concept.hpp</a>></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="ring__concept_8hpp.html">ggl/core/concepts/ring_concept.hpp</a>></span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00028"></a>00028
+<a name="l00061"></a>00061 <span class="keyword">namespace </span>ggl
+<a name="l00062"></a>00062 {
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a> {
+<a name="l00066"></a>00066
+<a name="l00068"></a>00068 <span class="keyword">template</span><<span class="keyword">typename</span> B, <span class="keyword">typename</span> S, <span class="keyword">typename</span> Strategy>
+<a name="l00069"></a>00069 <span class="keyword">struct </span>envelope_nsphere
+<a name="l00070"></a>00070 {
+<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S <span class="keyword">const</span>& s, B& mbr, Strategy <span class="keyword">const</span>&)
+<a name="l00072"></a>00072 {
+<a name="l00073"></a>00073 assert_dimension<S, 2>();
+<a name="l00074"></a>00074 assert_dimension<B, 2>();
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keyword">typename</span> radius_type<S>::type r = get_radius<0>(s);
+<a name="l00077"></a>00077 set<min_corner, 0>(mbr, get<0>(s) - r);
+<a name="l00078"></a>00078 set<min_corner, 1>(mbr, get<1>(s) - r);
+<a name="l00079"></a>00079 set<max_corner, 0>(mbr, get<0>(s) + r);
+<a name="l00080"></a>00080 set<max_corner, 1>(mbr, get<1>(s) + r);
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082 };
+<a name="l00083"></a>00083
+<a name="l00084"></a>00084
+<a name="l00086"></a>00086 <span class="keyword">template</span><<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
+<a name="l00087"></a>00087 <span class="keyword">struct </span>envelope_point
+<a name="l00088"></a>00088 {
+<a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>& p, B& mbr, Strategy <span class="keyword">const</span>&)
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <span class="comment">// Envelope of a point is an empty box, a box with zero volume, located at the point.</span>
+<a name="l00092"></a>00092 <span class="comment">// We just use the convert algorithm here</span>
+<a name="l00093"></a>00093 <a class="code" href="group__convert.html#ge07fa83176190049c856e35f77d0f569" title="Converts one geometry to another geometry.">ggl::convert</a>(p, mbr);
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 };
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097
+<a name="l00099"></a>00099 <span class="keyword">template</span><<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
+<a name="l00100"></a>00100 <span class="keyword">struct </span>envelope_segment
+<a name="l00101"></a>00101 {
+<a name="l00102"></a>00102 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(S <span class="keyword">const</span>& s, B& mbr, Strategy <span class="keyword">const</span>&)
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104 <a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">ggl::assign_inverse</a>(mbr);
+<a name="l00105"></a>00105 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(mbr, s.first);
+<a name="l00106"></a>00106 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(mbr, s.second);
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108 };
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110
+<a name="l00112"></a>00112 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> Strategy>
+<a name="l00113"></a>00113 <span class="keyword">inline</span> <span class="keywordtype">void</span> envelope_range_state(R <span class="keyword">const</span>& range, Strategy <span class="keyword">const</span>& strategy, <span class="keyword">typename</span> Strategy::state_type& state)
+<a name="l00114"></a>00114 {
+<a name="l00115"></a>00115 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator<R>::type iterator_type;
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keywordflow">for</span> (iterator_type it = boost::begin(range); it != boost::end(range); it++)
+<a name="l00118"></a>00118 {
+<a name="l00119"></a>00119 strategy(*it, state);
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124
+<a name="l00126"></a>00126 <span class="keyword">template</span> <<span class="keyword">typename</span> R, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
+<a name="l00127"></a>00127 <span class="keyword">struct </span>envelope_range
+<a name="l00128"></a>00128 {
+<a name="l00130"></a>00130 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>& range, B& mbr, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00131"></a>00131 {
+<a name="l00132"></a>00132 <span class="keyword">typename</span> Strategy::state_type state(mbr);
+<a name="l00133"></a>00133 envelope_range_state(range, strategy, state);
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 };
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137 }} <span class="comment">// namespace detail::envelope</span>
+<a name="l00138"></a>00138 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00139"></a>00139 <span class="preprocessor"></span>
+<a name="l00140"></a>00140 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00141"></a>00141 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="keyword">template</span>
+<a name="l00145"></a>00145 <
+<a name="l00146"></a>00146 <span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2,
+<a name="l00147"></a>00147 <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Box,
+<a name="l00148"></a>00148 <span class="keyword">typename</span> Strategy
+<a name="l00149"></a>00149 >
+<a name="l00150"></a>00150 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a> {};
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 <span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
+<a name="l00154"></a>00154 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a><point_tag, box_tag, P, B, Strategy>
+<a name="l00155"></a>00155 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_point<P, B, Strategy>
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <span class="keyword">private</span>:
+<a name="l00158"></a>00158 BOOST_CONCEPT_ASSERT( (concept::ConstPoint<P>) );
+<a name="l00159"></a>00159 BOOST_CONCEPT_ASSERT( (concept::Box<B>) );
+<a name="l00160"></a>00160 };
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="keyword">template</span> <<span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
+<a name="l00164"></a>00164 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a><box_tag, box_tag, B, B, Strategy>
+<a name="l00165"></a>00165 {
+<a name="l00171"></a>00171 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(B <span class="keyword">const</span>& b, B& mbr, Strategy <span class="keyword">const</span>&)
+<a name="l00172"></a>00172 {
+<a name="l00173"></a>00173 mbr = b;
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175
+<a name="l00176"></a>00176 <span class="keyword">private</span>:
+<a name="l00177"></a>00177 BOOST_CONCEPT_ASSERT( (concept::Box<B>) );
+<a name="l00178"></a>00178 };
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="keyword">template</span> <<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
+<a name="l00182"></a>00182 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a><segment_tag, box_tag, S, B, Strategy>
+<a name="l00183"></a>00183 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_segment<S, B, Strategy>
+<a name="l00184"></a>00184 {};
+<a name="l00185"></a>00185
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keyword">template</span> <<span class="keyword">typename</span> S, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
+<a name="l00188"></a>00188 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a><nsphere_tag, box_tag, S, B, Strategy>
+<a name="l00189"></a>00189 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_nsphere<S, B, Strategy>
+<a name="l00190"></a>00190 {
+<a name="l00191"></a>00191 <span class="keyword">private</span>:
+<a name="l00192"></a>00192 BOOST_CONCEPT_ASSERT( (concept::ConstNsphere<S>) );
+<a name="l00193"></a>00193 BOOST_CONCEPT_ASSERT( (concept::Box<B>) );
+<a name="l00194"></a>00194 };
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196 <span class="keyword">template</span> <<span class="keyword">typename</span> L, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
+<a name="l00197"></a>00197 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a><linestring_tag, box_tag, L, B, Strategy>
+<a name="l00198"></a>00198 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_range<L, B, Strategy>
+<a name="l00199"></a>00199 {
+<a name="l00200"></a>00200 <span class="keyword">private</span>:
+<a name="l00201"></a>00201 BOOST_CONCEPT_ASSERT( (concept::ConstLinestring<L>) );
+<a name="l00202"></a>00202 BOOST_CONCEPT_ASSERT( (concept::Box<B>) );
+<a name="l00203"></a>00203 };
+<a name="l00204"></a>00204
+<a name="l00205"></a>00205
+<a name="l00206"></a>00206 <span class="keyword">template</span> <<span class="keyword">typename</span> R, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
+<a name="l00207"></a>00207 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a><ring_tag, box_tag, R, B, Strategy>
+<a name="l00208"></a>00208 : detail::<a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>::envelope_range<R, B, Strategy>
+<a name="l00209"></a>00209 {
+<a name="l00210"></a>00210 <span class="keyword">private</span>:
+<a name="l00211"></a>00211 BOOST_CONCEPT_ASSERT( (concept::ConstRing<R>) );
+<a name="l00212"></a>00212 BOOST_CONCEPT_ASSERT( (concept::Box<B>) );
+<a name="l00213"></a>00213 };
+<a name="l00214"></a>00214
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216 <span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keyword">typename</span> Strategy>
+<a name="l00217"></a>00217 <span class="keyword">struct </span><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a><polygon_tag, box_tag, P, B, Strategy>
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>& poly, B& mbr, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00220"></a>00220 {
+<a name="l00221"></a>00221 <span class="comment">// For polygon inspecting outer linear_ring is sufficient</span>
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 detail::envelope::envelope_range
+<a name="l00224"></a>00224 <
+<a name="l00225"></a>00225 <span class="keyword">typename</span> ring_type<P>::type,
+<a name="l00226"></a>00226 B,
+<a name="l00227"></a>00227 Strategy
+<a name="l00228"></a>00228 >::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), mbr, strategy);
+<a name="l00229"></a>00229 }
+<a name="l00230"></a>00230
+<a name="l00231"></a>00231 <span class="keyword">private</span>:
+<a name="l00232"></a>00232 BOOST_CONCEPT_ASSERT( (concept::ConstPolygon<P>) );
+<a name="l00233"></a>00233 BOOST_CONCEPT_ASSERT( (concept::Box<B>) );
+<a name="l00234"></a>00234 };
+<a name="l00235"></a>00235
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 } <span class="comment">// namespace dispatch</span>
+<a name="l00238"></a>00238 <span class="preprocessor">#endif</span>
+<a name="l00239"></a>00239 <span class="preprocessor"></span>
+<a name="l00240"></a>00240
+<a name="l00248"></a>00248 <span class="keyword">template</span><<span class="keyword">typename</span> G, <span class="keyword">typename</span> B, <span class="keyword">typename</span> S>
+<a name="l00249"></a><a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36">00249</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(G <span class="keyword">const</span>& geometry, B& mbr, S <span class="keyword">const</span>& strategy)
+<a name="l00250"></a>00250 {
+<a name="l00251"></a>00251 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">dispatch::envelope</a>
+<a name="l00252"></a>00252 <
+<a name="l00253"></a>00253 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<B>::type</a>,
+<a name="l00254"></a>00254 G, B, S
+<a name="l00255"></a>00255 >::apply(geometry, mbr, strategy);
+<a name="l00256"></a>00256 }
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258
+<a name="l00259"></a>00259
+<a name="l00260"></a>00260
+<a name="l00273"></a>00273 <span class="keyword">template</span><<span class="keyword">typename</span> G, <span class="keyword">typename</span> B>
+<a name="l00274"></a><a class="code" href="group__envelope.html#g89671917cfb1753f65d4bcc2fc334bf9">00274</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(G <span class="keyword">const</span>& geometry, B& mbr)
+<a name="l00275"></a>00275 {
+<a name="l00276"></a>00276 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__envelope.html" title="Traits class binding envelope strategy to a coordinate system.">strategy_envelope</a>
+<a name="l00277"></a>00277 <
+<a name="l00278"></a>00278 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag<typename point_type<G>::type</a>>::type,
+<a name="l00279"></a>00279 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag<typename point_type<B>::type</a>>::type,
+<a name="l00280"></a>00280 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type<G>::type</a>,
+<a name="l00281"></a>00281 B
+<a name="l00282"></a>00282 >::type strategy;
+<a name="l00283"></a>00283
+<a name="l00284"></a>00284 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">envelope</a>(geometry, mbr, strategy);
+<a name="l00285"></a>00285 }
+<a name="l00286"></a>00286
+<a name="l00287"></a>00287
+<a name="l00294"></a>00294 <span class="keyword">template</span><<span class="keyword">typename</span> B, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00295"></a><a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d">00295</a> <span class="keyword">inline</span> B <a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d" title="Calculate and return envelope of a geometry.">make_envelope</a>(G <span class="keyword">const</span>& geometry, S <span class="keyword">const</span>& strategy)
+<a name="l00296"></a>00296 {
+<a name="l00297"></a>00297 B <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>;
+<a name="l00298"></a>00298 <a class="code" href="group__envelope.html#g376bdcefa676ef2b705656b690767b36" title="Calculate envelope of a geometry, using a specified strategy.">dispatch::envelope</a>
+<a name="l00299"></a>00299 <
+<a name="l00300"></a>00300 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::type</a>, <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<B>::type</a>,
+<a name="l00301"></a>00301 G, B, S
+<a name="l00302"></a>00302 >::apply(geometry, box, strategy);
+<a name="l00303"></a>00303
+<a name="l00304"></a>00304 <span class="keywordflow">return</span> box;
+<a name="l00305"></a>00305 }
+<a name="l00306"></a>00306
+<a name="l00307"></a>00307
+<a name="l00313"></a>00313 <span class="keyword">template</span><<span class="keyword">typename</span> B, <span class="keyword">typename</span> G>
+<a name="l00314"></a><a class="code" href="group__envelope.html#g938cf2804a87e138cbf4b5b65314a3e4">00314</a> <span class="keyword">inline</span> B <a class="code" href="group__envelope.html#g0b2b7b9ef2bc07f4b45695606f3d292d" title="Calculate and return envelope of a geometry.">make_envelope</a>(G <span class="keyword">const</span>& geometry)
+<a name="l00315"></a>00315 {
+<a name="l00316"></a>00316 <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__envelope.html" title="Traits class binding envelope strategy to a coordinate system.">strategy_envelope</a>
+<a name="l00317"></a>00317 <
+<a name="l00318"></a>00318 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag<typename point_type<G>::type</a>>::type,
+<a name="l00319"></a>00319 <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag<typename point_type<B>::type</a>>::type,
+<a name="l00320"></a>00320 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type<G>::type</a>,
+<a name="l00321"></a>00321 B
+<a name="l00322"></a>00322 >::type strategy;
+<a name="l00323"></a>00323 <span class="keywordflow">return</span> make_envelope<B>(geometry, strategy);
+<a name="l00324"></a>00324 }
+<a name="l00325"></a>00325
+<a name="l00326"></a>00326
+<a name="l00327"></a>00327 } <span class="comment">// namespace ggl</span>
+<a name="l00328"></a>00328
+<a name="l00329"></a>00329 <span class="preprocessor">#endif // GGL_ALGORITHMS_ENVELOPE_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/get_section.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry , typename Section > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9">ggl::get_section</a> (Geometry const &geometry, Section const &section, typename point_const_iterator< Geometry >::type &begin, typename point_const_iterator< Geometry >::type &end)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Get iterators for a specified <a class="el" href="structggl_1_1section.html" title="Structure containing section information.">section</a>. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2get__section_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/get_section.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_GET_SECTION_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_GET_SECTION_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012
+<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/concept_check.hpp></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="access_8hpp.html">ggl/core/access.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="iterators_2point__const__iterator_8hpp.html">ggl/iterators/point_const_iterator.hpp</a>></span>
+<a name="l00024"></a>00024
+<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029 <span class="keyword">namespace </span>ggl
+<a name="l00030"></a>00030 {
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00035"></a>00035 {
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section>
+<a name="l00038"></a>00038 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">get_section</a>
+<a name="l00039"></a>00039 {
+<a name="l00040"></a>00040 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">ggl::point_const_iterator<Geometry>::type</a> iterator_type;
+<a name="l00041"></a>00041 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Geometry <span class="keyword">const</span>& geometry, Section <span class="keyword">const</span>& section,
+<a name="l00042"></a>00042 iterator_type& begin, iterator_type& end)
+<a name="l00043"></a>00043 {
+<a name="l00044"></a>00044 begin = boost::begin(geometry) + section.begin_index;
+<a name="l00045"></a>00045 end = boost::begin(geometry) + section.end_index + 1;
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047 };
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Section>
+<a name="l00050"></a>00050 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">get_section</a><polygon_tag, Polygon, Section>
+<a name="l00051"></a>00051 {
+<a name="l00052"></a>00052 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">ggl::point_const_iterator<Polygon>::type</a> iterator_type;
+<a name="l00053"></a>00053 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>& polygon, Section <span class="keyword">const</span>& section,
+<a name="l00054"></a>00054 iterator_type& begin, iterator_type& end)
+<a name="l00055"></a>00055 {
+<a name="l00056"></a>00056 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ggl::ring_type<Polygon>::type</a> ring_type;
+<a name="l00057"></a>00057 ring_type <span class="keyword">const</span>& ring = section.ring_index < 0
+<a name="l00058"></a>00058 ? <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon)
+<a name="l00059"></a>00059 : ggl::<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(polygon)[section.ring_index];
+<a name="l00060"></a>00060
+<a name="l00061"></a>00061 begin = boost::begin(ring) + section.begin_index;
+<a name="l00062"></a>00062 end = boost::begin(ring) + section.end_index + 1;
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064 };
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 } <span class="comment">// namespace dispatch</span>
+<a name="l00067"></a>00067 <span class="preprocessor">#endif</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span>
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071
+<a name="l00084"></a>00084 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Section>
+<a name="l00085"></a><a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9">00085</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">get_section</a>(Geometry <span class="keyword">const</span>& geometry, Section <span class="keyword">const</span>& <a class="code" href="structggl_1_1section.html" title="Structure containing section information.">section</a>,
+<a name="l00086"></a>00086 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">point_const_iterator<Geometry>::type</a>& begin,
+<a name="l00087"></a>00087 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__const__iterator.html" title="Meta-function which defines point-const-iterator type.">point_const_iterator<Geometry>::type</a>& end)
+<a name="l00088"></a>00088 {
+<a name="l00089"></a>00089 <a class="code" href="group__sectionalize.html#g5c0732d32eb6c6154f615b3a3337f4b9" title="Get iterators for a specified section.">dispatch::get_section</a>
+<a name="l00090"></a>00090 <
+<a name="l00091"></a>00091 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00092"></a>00092 Geometry,
+<a name="l00093"></a>00093 Section
+<a name="l00094"></a>00094 >::apply(geometry, section, begin, end);
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 } <span class="comment">// namespace ggl</span>
+<a name="l00101"></a>00101
+<a name="l00102"></a>00102 <span class="preprocessor">#endif // GGL_ALGORITHMS_GET_SECTION_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/intersection.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename GeometryOut , typename Geometry1 , typename Geometry2 , typename OutputIterator > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">OutputIterator </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5">ggl::intersection</a> (Geometry1 const &geometry1, Geometry2 const &geometry2, OutputIterator out)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Intersects two geometries which each other. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2intersection_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,458 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/intersection.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_INTERSECTION_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_INTERSECTION_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <deque></span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="intersection__linestring_8hpp.html">ggl/algorithms/intersection_linestring.hpp</a>></span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include <<a class="code" href="get__intersection__points_8hpp.html">ggl/algorithms/overlay/get_intersection_points.hpp</a>></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="merge__intersection__points_8hpp.html">ggl/algorithms/overlay/merge_intersection_points.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="adapt__turns_8hpp.html">ggl/algorithms/overlay/adapt_turns.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="enrich__intersection__points_8hpp.html">ggl/algorithms/overlay/enrich_intersection_points.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="traverse_8hpp.html">ggl/algorithms/overlay/traverse.hpp</a>></span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="assign_8hpp.html">ggl/algorithms/assign.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="convert_8hpp.html">ggl/algorithms/convert.hpp</a>></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="algorithms_2within_8hpp.html">ggl/algorithms/within.hpp</a>></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027
+<a name="l00073"></a>00073 <span class="keyword">namespace </span>ggl
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00078"></a>00078 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a> {
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="keyword">template</span>
+<a name="l00082"></a>00082 <
+<a name="l00083"></a>00083 <span class="keyword">typename</span> Polygon1, <span class="keyword">typename</span> Polygon2,
+<a name="l00084"></a>00084 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00085"></a>00085 >
+<a name="l00086"></a>00086 <span class="keyword">struct </span>intersection_polygon_polygon
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Polygon1 <span class="keyword">const</span>& polygon1,
+<a name="l00089"></a>00089 Polygon2 <span class="keyword">const</span>& polygon2, OutputIterator out)
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 <span class="keyword">typedef</span> detail::intersection::intersection_point
+<a name="l00092"></a>00092 <
+<a name="l00093"></a>00093 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">ggl::point_type<GeometryOut>::type</a>
+<a name="l00094"></a>00094 > ip_type;
+<a name="l00095"></a>00095 <span class="keyword">typedef</span> std::deque<ip_type> ips_container;
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ggl::ring_type<GeometryOut>::type</a> ring_type;
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 ips_container ips;
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keywordtype">bool</span> trivial = <a class="code" href="group__overlay.html#g9b41efeface4cb10fbce39c8bcc8bec9" title="Calculate intersection points of two geometries.">ggl::get_intersection_points</a>(polygon1, polygon2, ips);
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <span class="keywordflow">if</span> (ips.size() <= 0)
+<a name="l00104"></a>00104 {
+<a name="l00105"></a>00105 <span class="comment">// If there are no IP-s, check if one point is in other polygon</span>
+<a name="l00106"></a>00106 <span class="comment">// assume both polygons having points</span>
+<a name="l00107"></a>00107 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">ggl::within</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon1).front(), polygon2))
+<a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 <span class="comment">// Assume same type (output = input)</span>
+<a name="l00110"></a>00110 <span class="comment">// TODO: solve this (we go to specialize again...)</span>
+<a name="l00111"></a>00111 *out = polygon1;
+<a name="l00112"></a>00112 out++;
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">ggl::within</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon2).front(), polygon1))
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116 *out = polygon2;
+<a name="l00117"></a>00117 out++;
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119 }
+<a name="l00120"></a>00120 <span class="keywordflow">else</span>
+<a name="l00121"></a>00121 {
+<a name="l00122"></a>00122 <span class="keywordflow">if</span> (! trivial)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <a class="code" href="group__overlay.html#gc1dcd7471f802810f7d48b36eea24d0f" title="Merges intersection points such that points at the same location will be merged,...">ggl::merge_intersection_points</a>(ips);
+<a name="l00125"></a>00125 <a class="code" href="namespaceggl.html#a8f29c6cbf3f88d5926a127c76976027">ggl::adapt_turns</a>(ips);
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <a class="code" href="group__overlay.html#g379db9c2e9741b685302a21f86ea24f3" title="All intersection points are enriched with successor information.">ggl::enrich_intersection_points</a>(ips, trivial);
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131
+<a name="l00132"></a>00132 std::vector<ring_type> v;
+<a name="l00133"></a>00133 ggl::traverse<ring_type>
+<a name="l00134"></a>00134 (
+<a name="l00135"></a>00135 polygon1,
+<a name="l00136"></a>00136 polygon2,
+<a name="l00137"></a>00137 -1,
+<a name="l00138"></a>00138 ips,
+<a name="l00139"></a>00139 trivial,
+<a name="l00140"></a>00140 std::back_inserter(v)
+<a name="l00141"></a>00141 );
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="comment">// TODO:</span>
+<a name="l00145"></a>00145 <span class="comment">// assemble rings / inner rings / to polygons</span>
+<a name="l00146"></a>00146 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<ring_type>::const_iterator it = v.begin();
+<a name="l00147"></a>00147 it != v.end(); ++it)
+<a name="l00148"></a>00148 {
+<a name="l00149"></a>00149 <span class="comment">// How can we avoid the double copy here! It is really bad!</span>
+<a name="l00150"></a>00150 <span class="comment">// We have to create a polygon, then copy it to the output iterator.</span>
+<a name="l00151"></a>00151 <span class="comment">// Having an output-vector would have been better: append it to the vector!</span>
+<a name="l00152"></a>00152 <span class="comment">// So output iterators are not that good.</span>
+<a name="l00153"></a>00153 GeometryOut poly;
+<a name="l00154"></a>00154 poly.outer() = *it;
+<a name="l00155"></a>00155 *out = poly;
+<a name="l00156"></a>00156 out++;
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161 <span class="keywordflow">return</span> out;
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163 };
+<a name="l00164"></a>00164
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 <span class="keyword">template</span>
+<a name="l00169"></a>00169 <
+<a name="l00170"></a>00170 <span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Box,
+<a name="l00171"></a>00171 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00172"></a>00172 >
+<a name="l00173"></a>00173 <span class="keyword">struct </span>intersection_polygon_box
+<a name="l00174"></a>00174 {
+<a name="l00175"></a>00175 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Polygon <span class="keyword">const</span>& polygon,
+<a name="l00176"></a>00176 Box <span class="keyword">const</span>& box, OutputIterator out)
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">ggl::point_type<GeometryOut>::type</a> point_type;
+<a name="l00179"></a>00179 <span class="keyword">typedef</span> detail::intersection::intersection_point<point_type> ip_type;
+<a name="l00180"></a>00180 <span class="keyword">typedef</span> std::deque<ip_type> ips_container;
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ggl::ring_type<GeometryOut>::type</a> ring_type;
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 ips_container ips;
+<a name="l00185"></a>00185
+<a name="l00186"></a>00186 <span class="keywordtype">bool</span> trivial = <a class="code" href="group__overlay.html#g9b41efeface4cb10fbce39c8bcc8bec9" title="Calculate intersection points of two geometries.">ggl::get_intersection_points</a>(polygon, box, ips);
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 <span class="comment">// TODO: share this all with polygon_polygon using an "assemble" function!</span>
+<a name="l00189"></a>00189 <span class="comment">// It is only different in the 'within' calls, can be sorted out with specialization</span>
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 <span class="keywordflow">if</span> (ips.size() <= 0)
+<a name="l00193"></a>00193 {
+<a name="l00194"></a>00194 <span class="comment">// If there are no IP-s, check if one point is in other polygon</span>
+<a name="l00195"></a>00195 <span class="comment">// assume both polygons having points</span>
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">ggl::within</a>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">ggl::exterior_ring</a>(polygon).front(), box))
+<a name="l00197"></a>00197 {
+<a name="l00198"></a>00198 <span class="comment">// Assume same type (output = input)</span>
+<a name="l00199"></a>00199 <span class="comment">// TODO: solve this (we go to specialize again...)</span>
+<a name="l00200"></a>00200 *out = polygon;
+<a name="l00201"></a>00201 out++;
+<a name="l00202"></a>00202 }
+<a name="l00203"></a>00203 <span class="keywordflow">else</span>
+<a name="l00204"></a>00204 {
+<a name="l00205"></a>00205 <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">ggl::point_type<Box>::type</a> p;
+<a name="l00206"></a>00206 ggl::set<0>(p, ggl::get<min_corner, 0>(box));
+<a name="l00207"></a>00207 ggl::set<1>(p, ggl::get<min_corner, 1>(box));
+<a name="l00208"></a>00208 <span class="keywordflow">if</span> (<a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">ggl::within</a>(p, polygon))
+<a name="l00209"></a>00209 {
+<a name="l00210"></a>00210 GeometryOut boxpoly;
+<a name="l00211"></a>00211 <a class="code" href="group__convert.html#ge07fa83176190049c856e35f77d0f569" title="Converts one geometry to another geometry.">ggl::convert</a>(box, boxpoly);
+<a name="l00212"></a>00212 *out = boxpoly;
+<a name="l00213"></a>00213 out++;
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217 <span class="keywordflow">else</span>
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 <span class="keywordflow">if</span> (trivial)
+<a name="l00220"></a>00220 {
+<a name="l00221"></a>00221 <a class="code" href="group__overlay.html#gc1dcd7471f802810f7d48b36eea24d0f" title="Merges intersection points such that points at the same location will be merged,...">ggl::merge_intersection_points</a>(ips);
+<a name="l00222"></a>00222 }
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224 <a class="code" href="group__overlay.html#g379db9c2e9741b685302a21f86ea24f3" title="All intersection points are enriched with successor information.">ggl::enrich_intersection_points</a>(ips, trivial);
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226 std::vector<ring_type> v;
+<a name="l00227"></a>00227 ggl::traverse<ring_type>
+<a name="l00228"></a>00228 (
+<a name="l00229"></a>00229 polygon,
+<a name="l00230"></a>00230 box,
+<a name="l00231"></a>00231 -1,
+<a name="l00232"></a>00232 ips,
+<a name="l00233"></a>00233 trivial,
+<a name="l00234"></a>00234 std::back_inserter(v)
+<a name="l00235"></a>00235 );
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 <span class="comment">// TODO:</span>
+<a name="l00238"></a>00238 <span class="comment">// assemble rings / inner rings / to polygons</span>
+<a name="l00239"></a>00239 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<ring_type>::const_iterator it = v.begin();
+<a name="l00240"></a>00240 it != v.end(); ++it)
+<a name="l00241"></a>00241 {
+<a name="l00242"></a>00242 <span class="comment">// How can we avoid the double copy here! It is really bad!</span>
+<a name="l00243"></a>00243 <span class="comment">// We have to create a polygon, then copy it to the output iterator.</span>
+<a name="l00244"></a>00244 <span class="comment">// Having an output-vector would have been better: append it to the vector!</span>
+<a name="l00245"></a>00245 <span class="comment">// So output iterators are not that good.</span>
+<a name="l00246"></a>00246 GeometryOut poly;
+<a name="l00247"></a>00247 poly.outer() = *it;
+<a name="l00248"></a>00248 *out = poly;
+<a name="l00249"></a>00249 out++;
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252
+<a name="l00253"></a>00253
+<a name="l00254"></a>00254 <span class="keywordflow">return</span> out;
+<a name="l00255"></a>00255 }
+<a name="l00256"></a>00256 };
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258
+<a name="l00259"></a>00259 }} <span class="comment">// namespace detail::intersection</span>
+<a name="l00260"></a>00260 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00261"></a>00261 <span class="preprocessor"></span>
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263
+<a name="l00264"></a>00264
+<a name="l00265"></a>00265
+<a name="l00266"></a>00266 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00267"></a>00267 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00268"></a>00268 {
+<a name="l00269"></a>00269
+<a name="l00270"></a>00270 <span class="keyword">template</span>
+<a name="l00271"></a>00271 <
+<a name="l00272"></a>00272 <span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2, <span class="keyword">typename</span> Tag3,
+<a name="l00273"></a>00273 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
+<a name="l00274"></a>00274 <span class="keyword">typename</span> OutputIterator,
+<a name="l00275"></a>00275 <span class="keyword">typename</span> GeometryOut
+<a name="l00276"></a>00276 >
+<a name="l00277"></a>00277 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a> {};
+<a name="l00278"></a>00278
+<a name="l00279"></a>00279
+<a name="l00280"></a>00280 <span class="keyword">template</span>
+<a name="l00281"></a>00281 <
+<a name="l00282"></a>00282 <span class="keyword">typename</span> Segment1, <span class="keyword">typename</span> Segment2,
+<a name="l00283"></a>00283 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00284"></a>00284 >
+<a name="l00285"></a>00285 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
+<a name="l00286"></a>00286 <
+<a name="l00287"></a>00287 segment_tag, segment_tag, point_tag,
+<a name="l00288"></a>00288 Segment1, Segment2,
+<a name="l00289"></a>00289 OutputIterator, GeometryOut
+<a name="l00290"></a>00290 >
+<a name="l00291"></a>00291 {
+<a name="l00292"></a>00292 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Segment1 <span class="keyword">const</span>& segment1,
+<a name="l00293"></a>00293 Segment2 <span class="keyword">const</span>& segment2, OutputIterator out)
+<a name="l00294"></a>00294 {
+<a name="l00295"></a>00295 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<GeometryOut>::type point_type;
+<a name="l00296"></a>00296
+<a name="l00297"></a>00297 <span class="comment">// Get the intersection point (or two points)</span>
+<a name="l00298"></a>00298 segment_intersection_points<point_type> is
+<a name="l00299"></a>00299 = strategy::intersection::relate_cartesian_segments
+<a name="l00300"></a>00300 <
+<a name="l00301"></a>00301 policies::relate::segments_intersection_points
+<a name="l00302"></a>00302 <
+<a name="l00303"></a>00303 Segment1,
+<a name="l00304"></a>00304 Segment2,
+<a name="l00305"></a>00305 segment_intersection_points<point_type>
+<a name="l00306"></a>00306 >
+<a name="l00307"></a>00307 >::relate(segment1, segment2);
+<a name="l00308"></a>00308 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < is.count; i++)
+<a name="l00309"></a>00309 {
+<a name="l00310"></a>00310 GeometryOut p;
+<a name="l00311"></a>00311 <a class="code" href="namespaceggl.html#173003fecd63871d3a6aee07f4ba7011" title="Copies coordinates from source to destination point.">ggl::copy_coordinates</a>(is.intersections[i], p);
+<a name="l00312"></a>00312 *out = p;
+<a name="l00313"></a>00313 out++;
+<a name="l00314"></a>00314 }
+<a name="l00315"></a>00315 <span class="keywordflow">return</span> out;
+<a name="l00316"></a>00316 }
+<a name="l00317"></a>00317 };
+<a name="l00318"></a>00318
+<a name="l00319"></a>00319
+<a name="l00320"></a>00320 <span class="keyword">template</span>
+<a name="l00321"></a>00321 <
+<a name="l00322"></a>00322 <span class="keyword">typename</span> Linestring, <span class="keyword">typename</span> Box,
+<a name="l00323"></a>00323 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00324"></a>00324 >
+<a name="l00325"></a>00325 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
+<a name="l00326"></a>00326 <
+<a name="l00327"></a>00327 linestring_tag, box_tag, linestring_tag,
+<a name="l00328"></a>00328 Linestring, Box,
+<a name="l00329"></a>00329 OutputIterator, GeometryOut
+<a name="l00330"></a>00330 >
+<a name="l00331"></a>00331 {
+<a name="l00332"></a>00332 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(Linestring <span class="keyword">const</span>& linestring,
+<a name="l00333"></a>00333 Box <span class="keyword">const</span>& box, OutputIterator out)
+<a name="l00334"></a>00334 {
+<a name="l00335"></a>00335 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<GeometryOut>::type point_type;
+<a name="l00336"></a>00336 strategy::intersection::liang_barsky<Box, point_type> strategy;
+<a name="l00337"></a>00337 <span class="keywordflow">return</span> detail::intersection::clip_linestring_with_box<GeometryOut>(box, linestring, out, strategy);
+<a name="l00338"></a>00338 }
+<a name="l00339"></a>00339 };
+<a name="l00340"></a>00340
+<a name="l00341"></a>00341
+<a name="l00342"></a>00342 <span class="keyword">template</span>
+<a name="l00343"></a>00343 <
+<a name="l00344"></a>00344 <span class="keyword">typename</span> Polygon1, <span class="keyword">typename</span> Polygon2,
+<a name="l00345"></a>00345 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00346"></a>00346 >
+<a name="l00347"></a>00347 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
+<a name="l00348"></a>00348 <
+<a name="l00349"></a>00349 polygon_tag, polygon_tag, polygon_tag,
+<a name="l00350"></a>00350 Polygon1, Polygon2,
+<a name="l00351"></a>00351 OutputIterator, GeometryOut
+<a name="l00352"></a>00352 >
+<a name="l00353"></a>00353 : detail::<a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>::intersection_polygon_polygon
+<a name="l00354"></a>00354 <Polygon1, Polygon2, OutputIterator, GeometryOut>
+<a name="l00355"></a>00355 {};
+<a name="l00356"></a>00356
+<a name="l00357"></a>00357
+<a name="l00358"></a>00358
+<a name="l00359"></a>00359 <span class="keyword">template</span>
+<a name="l00360"></a>00360 <
+<a name="l00361"></a>00361 <span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> Box,
+<a name="l00362"></a>00362 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00363"></a>00363 >
+<a name="l00364"></a>00364 <span class="keyword">struct </span><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
+<a name="l00365"></a>00365 <
+<a name="l00366"></a>00366 polygon_tag, box_tag, polygon_tag,
+<a name="l00367"></a>00367 Polygon, Box,
+<a name="l00368"></a>00368 OutputIterator, GeometryOut
+<a name="l00369"></a>00369 >
+<a name="l00370"></a>00370 : detail::<a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>::intersection_polygon_box
+<a name="l00371"></a>00371 <Polygon, Box, OutputIterator, GeometryOut>
+<a name="l00372"></a>00372 {};
+<a name="l00373"></a>00373
+<a name="l00374"></a>00374
+<a name="l00375"></a>00375
+<a name="l00376"></a>00376 <span class="keyword">template</span>
+<a name="l00377"></a>00377 <
+<a name="l00378"></a>00378 <span class="keyword">typename</span> GeometryTag1, <span class="keyword">typename</span> GeometryTag2, <span class="keyword">typename</span> GeometryTag3,
+<a name="l00379"></a>00379 <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2,
+<a name="l00380"></a>00380 <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> GeometryOut
+<a name="l00381"></a>00381 >
+<a name="l00382"></a>00382 <span class="keyword">struct </span>intersection_reversed
+<a name="l00383"></a>00383 {
+<a name="l00384"></a>00384 <span class="keyword">static</span> <span class="keyword">inline</span> OutputIterator apply(G1 <span class="keyword">const</span>& g1, G2 <span class="keyword">const</span>& g2, OutputIterator out)
+<a name="l00385"></a>00385 {
+<a name="l00386"></a>00386 <span class="keywordflow">return</span> <a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>
+<a name="l00387"></a>00387 <
+<a name="l00388"></a>00388 GeometryTag2, GeometryTag1, GeometryTag3,
+<a name="l00389"></a>00389 G2, G1,
+<a name="l00390"></a>00390 OutputIterator, GeometryOut
+<a name="l00391"></a>00391 >::apply(g2, g1, out);
+<a name="l00392"></a>00392 }
+<a name="l00393"></a>00393 };
+<a name="l00394"></a>00394
+<a name="l00395"></a>00395
+<a name="l00396"></a>00396
+<a name="l00397"></a>00397 } <span class="comment">// namespace dispatch</span>
+<a name="l00398"></a>00398 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00399"></a>00399 <span class="preprocessor"></span>
+<a name="l00417"></a>00417 <span class="keyword">template</span>
+<a name="l00418"></a>00418 <
+<a name="l00419"></a>00419 <span class="keyword">typename</span> GeometryOut,
+<a name="l00420"></a>00420 <span class="keyword">typename</span> Geometry1,
+<a name="l00421"></a>00421 <span class="keyword">typename</span> Geometry2,
+<a name="l00422"></a>00422 <span class="keyword">typename</span> OutputIterator
+<a name="l00423"></a>00423 >
+<a name="l00424"></a><a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5">00424</a> <span class="keyword">inline</span> OutputIterator <a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">intersection</a>(Geometry1 <span class="keyword">const</span>& geometry1,
+<a name="l00425"></a>00425 Geometry2 <span class="keyword">const</span>& geometry2,
+<a name="l00426"></a>00426 OutputIterator out)
+<a name="l00427"></a>00427 {
+<a name="l00428"></a>00428
+<a name="l00429"></a>00429 <span class="keywordflow">return</span> boost::mpl::if_c
+<a name="l00430"></a>00430 <
+<a name="l00431"></a>00431 <a class="code" href="structggl_1_1reverse__dispatch.html">reverse_dispatch<Geometry1, Geometry2>::type::value</a>,
+<a name="l00432"></a>00432 dispatch::intersection_reversed
+<a name="l00433"></a>00433 <
+<a name="l00434"></a>00434 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry1>::type</a>,
+<a name="l00435"></a>00435 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry2>::type</a>,
+<a name="l00436"></a>00436 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<GeometryOut>::type</a>,
+<a name="l00437"></a>00437 Geometry1,
+<a name="l00438"></a>00438 Geometry2,
+<a name="l00439"></a>00439 OutputIterator, GeometryOut
+<a name="l00440"></a>00440 >,
+<a name="l00441"></a>00441 <a class="code" href="group__overlay.html#g60644b53b334602956f0722e9dfb69b5" title="Intersects two geometries which each other.">dispatch::intersection</a>
+<a name="l00442"></a>00442 <
+<a name="l00443"></a>00443 <span class="keyword">typename</span> tag<Geometry1>::type,
+<a name="l00444"></a>00444 <span class="keyword">typename</span> tag<Geometry2>::type,
+<a name="l00445"></a>00445 <span class="keyword">typename</span> tag<GeometryOut>::type,
+<a name="l00446"></a>00446 Geometry1,
+<a name="l00447"></a>00447 Geometry2,
+<a name="l00448"></a>00448 OutputIterator, GeometryOut
+<a name="l00449"></a>00449 >
+<a name="l00450"></a>00450 >::type::apply(geometry1, geometry2, out);
+<a name="l00451"></a>00451 }
+<a name="l00452"></a>00452
+<a name="l00453"></a>00453 } <span class="comment">// ggl</span>
+<a name="l00454"></a>00454
+<a name="l00455"></a>00455 <span class="preprocessor">#endif //GGL_ALGORITHMS_INTERSECTION_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/length.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G , typename S > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__length.html#ge20f9cdc37ebded2be03934edb05c3dd">ggl::length</a> (G const &geometry, S const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate length of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa">ggl::length</a> (const G &geometry)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate length of a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2length_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,203 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/length.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_LENGTH_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_LENGTH_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <iterator></span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include <boost/mpl/if.hpp></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <boost/type_traits.hpp></span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="calculate__null_8hpp.html">ggl/algorithms/detail/calculate_null.hpp</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00025"></a>00025
+<a name="l00039"></a>00039 <span class="keyword">namespace </span>ggl
+<a name="l00040"></a>00040 {
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a> {
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="keyword">template</span><<span class="keyword">typename</span> Segment, <span class="keyword">typename</span> Strategy>
+<a name="l00047"></a>00047 <span class="keyword">struct </span>segment_length
+<a name="l00048"></a>00048 {
+<a name="l00049"></a>00049 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">double</span> apply(Segment <span class="keyword">const</span>& segment, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00050"></a>00050 {
+<a name="l00051"></a>00051 <span class="comment">// BSG 10 APR 2009</span>
+<a name="l00052"></a>00052 <span class="comment">// TODO: the segment concept has to be such that it is easy to return a point from it.</span>
+<a name="l00053"></a>00053 <span class="comment">// Now it only accesses per coordinate</span>
+<a name="l00054"></a>00054 <span class="keywordflow">return</span> strategy(segment.first, segment.second);
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 };
+<a name="l00057"></a>00057
+<a name="l00062"></a>00062 <span class="keyword">template</span><<span class="keyword">typename</span> Range, <span class="keyword">typename</span> Strategy>
+<a name="l00063"></a>00063 <span class="keyword">struct </span>range_length
+<a name="l00064"></a>00064 {
+<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">double</span> apply(Range <span class="keyword">const</span>& range, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00066"></a>00066 {
+<a name="l00067"></a>00067 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">ggl::coordinate_type<Range>::type</a> coordinate_type;
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="comment">// Because result is square-rooted, for integer, the cast should</span>
+<a name="l00070"></a>00070 <span class="comment">// go to double and NOT to T</span>
+<a name="l00071"></a>00071 <span class="keyword">typedef</span> <span class="keyword">typename</span>
+<a name="l00072"></a>00072 boost::mpl::if_c
+<a name="l00073"></a>00073 <
+<a name="l00074"></a>00074 boost::is_integral<coordinate_type>::type::value,
+<a name="l00075"></a>00075 double,
+<a name="l00076"></a>00076 coordinate_type
+<a name="l00077"></a>00077 >::type calculation_type;
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 calculation_type sum = 0.0;
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator<Range>::type iterator_type;
+<a name="l00082"></a>00082 iterator_type it = boost::begin(range);
+<a name="l00083"></a>00083 <span class="keywordflow">if</span> (it != boost::end(range))
+<a name="l00084"></a>00084 {
+<a name="l00085"></a>00085 iterator_type previous = it++;
+<a name="l00086"></a>00086 <span class="keywordflow">while</span>(it != boost::end(range))
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="comment">// Add point-point distance using the return type belonging to strategy</span>
+<a name="l00089"></a>00089 sum += strategy(*previous, *it);
+<a name="l00090"></a>00090 previous = it++;
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093
+<a name="l00094"></a>00094 <span class="keywordflow">return</span> sum;
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096 };
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098 }} <span class="comment">// namespace detail::length</span>
+<a name="l00099"></a>00099 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00100"></a>00100 <span class="preprocessor"></span>
+<a name="l00101"></a>00101 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00107"></a>00107 <span class="keyword">struct </span><a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a> : detail::calculate_null<double, G, S>
+<a name="l00108"></a>00108 {};
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="keyword">template</span> <<span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00112"></a>00112 <span class="keyword">struct </span><a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a><linestring_tag, G, S>
+<a name="l00113"></a>00113 : detail::<a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>::range_length<G, S>
+<a name="l00114"></a>00114 {};
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="comment">// RING: length is currently 0.0 but it might be argued that it is the "perimeter"</span>
+<a name="l00118"></a>00118 <span class="keyword">template</span> <<span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00119"></a>00119 <span class="keyword">struct </span><a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a><segment_tag, G, S> : detail::<a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>::segment_length<G, S>
+<a name="l00120"></a>00120 {};
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 } <span class="comment">// namespace dispatch</span>
+<a name="l00124"></a>00124 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00125"></a>00125 <span class="preprocessor"></span>
+<a name="l00138"></a>00138 <span class="keyword">template</span><<span class="keyword">typename</span> G>
+<a name="l00139"></a><a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa">00139</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>(<span class="keyword">const</span> G& geometry)
+<a name="l00140"></a>00140 {
+<a name="l00141"></a>00141 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type<G>::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00142"></a>00142 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag<point_type>::type</a> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag</a>;
+<a name="l00143"></a>00143 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
+<a name="l00144"></a>00144 <
+<a name="l00145"></a>00145 cs_tag,
+<a name="l00146"></a>00146 cs_tag,
+<a name="l00147"></a>00147 point_type,
+<a name="l00148"></a>00148 point_type
+<a name="l00149"></a>00149 >::type strategy_type;
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keywordflow">return</span> <a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">dispatch::length</a>
+<a name="l00152"></a>00152 <
+<a name="l00153"></a>00153 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G>::type</a>,
+<a name="l00154"></a>00154 G,
+<a name="l00155"></a>00155 strategy_type
+<a name="l00156"></a>00156 >::apply(geometry, strategy_type());
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158
+<a name="l00173"></a>00173 <span class="keyword">template</span><<span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00174"></a><a class="code" href="group__length.html#ge20f9cdc37ebded2be03934edb05c3dd">00174</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>(G <span class="keyword">const</span>& geometry, S <span class="keyword">const</span>& strategy)
+<a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 <span class="keywordflow">return</span> dispatch::length<typename tag<G>::type, G, S>::apply(geometry, strategy);
+<a name="l00177"></a>00177 }
+<a name="l00178"></a>00178
+<a name="l00179"></a>00179 } <span class="comment">// namespace ggl</span>
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="preprocessor">#endif // GGL_ALGORITHMS_LENGTH_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/num_points.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">std::size_t </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__access.html#g8d58faff2722b073b44c24f19577e267">ggl::num_points</a> (Geometry const &geometry)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">get number of points <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2num__points_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,202 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/num_points.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_NUM_POINTS_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_NUM_POINTS_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <cstddef></span>
+<a name="l00013"></a>00013
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/range.hpp></span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/type_traits/remove_const.hpp></span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="is__linear_8hpp.html">ggl/core/is_linear.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>ggl
+<a name="l00022"></a>00022 {
+<a name="l00023"></a>00023
+<a name="l00024"></a>00024 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a> {
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="keyword">template</span> <<span class="keyword">typename</span> Range>
+<a name="l00029"></a>00029 <span class="keyword">struct </span>range_count
+<a name="l00030"></a>00030 {
+<a name="l00031"></a>00031 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Range <span class="keyword">const</span>& range)
+<a name="l00032"></a>00032 {
+<a name="l00033"></a>00033 <span class="keywordflow">return</span> boost::size(range);
+<a name="l00034"></a>00034 }
+<a name="l00035"></a>00035 };
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, std::<span class="keywordtype">size_t</span> D>
+<a name="l00038"></a>00038 <span class="keyword">struct </span>other_count
+<a name="l00039"></a>00039 {
+<a name="l00040"></a>00040 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Geometry <span class="keyword">const</span>& geometry)
+<a name="l00041"></a>00041 {
+<a name="l00042"></a>00042 <span class="keywordflow">return</span> D;
+<a name="l00043"></a>00043 }
+<a name="l00044"></a>00044 };
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="keyword">template</span> <<span class="keyword">typename</span> Polygon>
+<a name="l00047"></a>00047 <span class="keyword">struct </span>polygon_count
+<a name="l00048"></a>00048 {
+<a name="l00049"></a>00049 <span class="keyword">static</span> <span class="keyword">inline</span> std::size_t apply(Polygon <span class="keyword">const</span>& poly)
+<a name="l00050"></a>00050 {
+<a name="l00051"></a>00051 std::size_t n = boost::size(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly));
+<a name="l00052"></a>00052 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00053"></a>00053 <
+<a name="l00054"></a>00054 <span class="keyword">typename</span> interior_type<Polygon>::type
+<a name="l00055"></a>00055 >::type iterator;
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="keywordflow">for</span> (iterator it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00058"></a>00058 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00059"></a>00059 ++it)
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 n += boost::size(*it);
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> n;
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066 };
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 }} <span class="comment">// namespace detail::num_points</span>
+<a name="l00069"></a>00069 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00070"></a>00070 <span class="preprocessor"></span>
+<a name="l00071"></a>00071
+<a name="l00072"></a>00072 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00074"></a>00074 {
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076 <span class="keyword">template</span> <<span class="keyword">typename</span> GeometryTag, <span class="keywordtype">bool</span> Linear, <span class="keyword">typename</span> Geometry>
+<a name="l00077"></a>00077 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>
+<a name="l00078"></a>00078 {
+<a name="l00079"></a>00079 };
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="keyword">template</span> <<span class="keyword">typename</span> GeometryTag, <span class="keyword">typename</span> Geometry>
+<a name="l00082"></a>00082 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a><GeometryTag, true, Geometry>
+<a name="l00083"></a>00083 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::range_count<Geometry>
+<a name="l00084"></a>00084 {
+<a name="l00085"></a>00085 };
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry>
+<a name="l00088"></a>00088 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a><point_tag, false, Geometry>
+<a name="l00089"></a>00089 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count<Geometry, 1>
+<a name="l00090"></a>00090 {
+<a name="l00091"></a>00091 };
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry>
+<a name="l00094"></a>00094 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a><box_tag, false, Geometry>
+<a name="l00095"></a>00095 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count<Geometry, 4>
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 };
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry>
+<a name="l00100"></a>00100 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a><segment_tag, false, Geometry>
+<a name="l00101"></a>00101 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count<Geometry, 2>
+<a name="l00102"></a>00102 {
+<a name="l00103"></a>00103 };
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry>
+<a name="l00106"></a>00106 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a><nsphere_tag, false, Geometry>
+<a name="l00107"></a>00107 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::other_count<Geometry, 1>
+<a name="l00108"></a>00108 {
+<a name="l00109"></a>00109 };
+<a name="l00110"></a>00110
+<a name="l00111"></a>00111 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry>
+<a name="l00112"></a>00112 <span class="keyword">struct </span><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a><polygon_tag, false, Geometry>
+<a name="l00113"></a>00113 : detail::<a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>::polygon_count<Geometry>
+<a name="l00114"></a>00114 {
+<a name="l00115"></a>00115 };
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 } <span class="comment">// namespace dispatch</span>
+<a name="l00118"></a>00118 <span class="preprocessor">#endif</span>
+<a name="l00119"></a>00119 <span class="preprocessor"></span>
+<a name="l00120"></a>00120
+<a name="l00131"></a>00131 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry>
+<a name="l00132"></a><a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267">00132</a> <span class="keyword">inline</span> std::size_t <a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">num_points</a>(Geometry <span class="keyword">const</span>& geometry)
+<a name="l00133"></a>00133 {
+<a name="l00134"></a>00134 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::remove_const<Geometry>::type ncg_type;
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> <a class="code" href="group__access.html#g8d58faff2722b073b44c24f19577e267" title="get number of points">dispatch::num_points</a>
+<a name="l00137"></a>00137 <
+<a name="l00138"></a>00138 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00139"></a>00139 <a class="code" href="structggl_1_1is__linear.html" title="Meta-function defining &quot;true&quot; for linear types (linestring,ring), &quot;false&quot;...">is_linear<ncg_type>::value</a>,
+<a name="l00140"></a>00140 ncg_type
+<a name="l00141"></a>00141 >::apply(geometry);
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 }
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147 <span class="preprocessor">#endif // GGL_ALGORITHMS_NUM_POINTS_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/perimeter.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry , typename Strategy > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__perimeter.html#g840995936a96075829b48a29a4a33b19">ggl::perimeter</a> (Geometry const &geometry, Strategy const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate perimeter of a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">double </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba">ggl::perimeter</a> (Geometry const &geometry)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculate perimeter of a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2perimeter_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,186 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/perimeter.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_PERIMETER_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_PERIMETER_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <cmath></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <iterator></span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="algorithms_2length_8hpp.html">ggl/algorithms/length.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00022"></a>00022
+<a name="l00028"></a>00028 <span class="keyword">namespace </span>ggl
+<a name="l00029"></a>00029 {
+<a name="l00030"></a>00030
+<a name="l00031"></a>00031 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a> {
+<a name="l00033"></a>00033
+<a name="l00034"></a>00034 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> S>
+<a name="l00035"></a>00035 <span class="keyword">struct </span>range_perimeter : detail::<a class="code" href="group__length.html#g7e3572634111ae0252a474a7f435c5aa" title="Calculate length of a geometry.">length</a>::range_length<R, S>
+<a name="l00036"></a>00036 {
+<a name="l00037"></a>00037 };
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="comment">// might be merged with "range_area" with policy to sum/subtract interior rings</span>
+<a name="l00040"></a>00040 <span class="keyword">template</span><<span class="keyword">typename</span> Polygon, <span class="keyword">typename</span> S>
+<a name="l00041"></a>00041 <span class="keyword">struct </span>polygon_perimeter
+<a name="l00042"></a>00042 {
+<a name="l00043"></a>00043 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">double</span> apply(Polygon <span class="keyword">const</span>& poly, S <span class="keyword">const</span>& strategy)
+<a name="l00044"></a>00044 {
+<a name="l00045"></a>00045 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type<Polygon>::type ring_type;
+<a name="l00046"></a>00046 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00047"></a>00047 <
+<a name="l00048"></a>00048 <span class="keyword">typename</span> interior_type<Polygon>::type
+<a name="l00049"></a>00049 >::type iterator_type;
+<a name="l00050"></a>00050
+<a name="l00051"></a>00051 <span class="keywordtype">double</span> sum = std::abs(range_perimeter<ring_type, S>::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy));
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00054"></a>00054 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly)); it++)
+<a name="l00055"></a>00055 {
+<a name="l00056"></a>00056 sum += std::abs(range_perimeter<ring_type, S>::apply(*it, strategy));
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 <span class="keywordflow">return</span> sum;
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060 };
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 }} <span class="comment">// namespace detail:;perimeter</span>
+<a name="l00063"></a>00063 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00064"></a>00064 <span class="preprocessor"></span>
+<a name="l00065"></a>00065
+<a name="l00066"></a>00066 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00068"></a>00068 {
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="comment">// Default perimeter is 0.0, specializations implement calculated values</span>
+<a name="l00071"></a>00071 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<a name="l00072"></a>00072 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a> : detail::calculate_null<double, Geometry, Strategy>
+<a name="l00073"></a>00073 {};
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<a name="l00076"></a>00076 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a><ring_tag, Geometry, Strategy>
+<a name="l00077"></a>00077 : detail::<a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a>::range_perimeter<Geometry, Strategy>
+<a name="l00078"></a>00078 {};
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 <span class="keyword">template</span> <<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<a name="l00081"></a>00081 <span class="keyword">struct </span><a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a><polygon_tag, Geometry, Strategy>
+<a name="l00082"></a>00082 : detail::<a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a>::polygon_perimeter<Geometry, Strategy>
+<a name="l00083"></a>00083 {};
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="comment">// box,n-sphere: to be implemented</span>
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 } <span class="comment">// namespace dispatch</span>
+<a name="l00089"></a>00089 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00090"></a>00090 <span class="preprocessor"></span>
+<a name="l00091"></a>00091
+<a name="l00099"></a>00099 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry>
+<a name="l00100"></a><a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba">00100</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a>(Geometry <span class="keyword">const</span>& geometry)
+<a name="l00101"></a>00101 {
+<a name="l00102"></a>00102 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type<Geometry>::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00103"></a>00103 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag<point_type>::type</a> <a class="code" href="structggl_1_1cs__tag.html" title="Meta-function returning coordinate system tag (cs family) of any geometry.">cs_tag</a>;
+<a name="l00104"></a>00104 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1strategy__distance.html" title="Traits class binding a distance strategy to a (possibly two) coordinate system(s)...">strategy_distance</a>
+<a name="l00105"></a>00105 <
+<a name="l00106"></a>00106 cs_tag,
+<a name="l00107"></a>00107 cs_tag,
+<a name="l00108"></a>00108 point_type,
+<a name="l00109"></a>00109 point_type
+<a name="l00110"></a>00110 >::type strategy_type;
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 <span class="keywordflow">return</span> <a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">dispatch::perimeter</a>
+<a name="l00113"></a>00113 <
+<a name="l00114"></a>00114 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00115"></a>00115 Geometry,
+<a name="l00116"></a>00116 strategy_type
+<a name="l00117"></a>00117 >::apply(geometry, strategy_type());
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119
+<a name="l00128"></a>00128 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Strategy>
+<a name="l00129"></a><a class="code" href="group__perimeter.html#g840995936a96075829b48a29a4a33b19">00129</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">perimeter</a>(Geometry <span class="keyword">const</span>& geometry, Strategy <span class="keyword">const</span>& strategy)
+<a name="l00130"></a>00130 {
+<a name="l00131"></a>00131 <span class="keywordflow">return</span> <a class="code" href="group__perimeter.html#g7d52bc6ace3c3dbc9bdac84e6f0076ba" title="Calculate perimeter of a geometry.">dispatch::perimeter</a>
+<a name="l00132"></a>00132 <
+<a name="l00133"></a>00133 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00134"></a>00134 Geometry,
+<a name="l00135"></a>00135 Strategy
+<a name="l00136"></a>00136 >::apply(geometry, strategy);
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 } <span class="comment">// namespace ggl</span>
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <span class="preprocessor">#endif // GGL_ALGORITHMS_PERIMETER_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/sectionalize.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1section.html">ggl::section< Box, DimensionCount ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Structure containing <a class="el" href="structggl_1_1section.html" title="Structure containing section information.">section</a> information. More...<br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structggl_1_1sections.html">ggl::sections< Box, DimensionCount ></a></td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Structure containing a collection of <a class="el" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>. More...<br></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename Geometry , typename Sections > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1">ggl::sectionalize</a> (Geometry const &geometry, Sections &sections)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Split a geometry into monotonic <a class="el" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2sectionalize_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,607 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/sectionalize.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_SECTIONALIZE_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_SECTIONALIZE_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <cstddef></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <vector></span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/concept_check.hpp></span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="assign_8hpp.html">ggl/algorithms/assign.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="combine_8hpp.html">ggl/algorithms/combine.hpp</a>></span>
+<a name="l00022"></a>00022
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="access_8hpp.html">ggl/core/access.hpp</a>></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="preprocessor">#include <<a class="code" href="iterators_2point__const__iterator_8hpp.html">ggl/iterators/point_const_iterator.hpp</a>></span>
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028 <span class="preprocessor">#include <<a class="code" href="assign__box__corner_8hpp.html">ggl/util/assign_box_corner.hpp</a>></span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include <<a class="code" href="math_8hpp.html">ggl/util/math.hpp</a>></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></span>
+<a name="l00031"></a>00031
+<a name="l00032"></a>00032
+<a name="l00044"></a>00044 <span class="keyword">namespace </span>ggl
+<a name="l00045"></a>00045 {
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047
+<a name="l00059"></a>00059 <span class="keyword">template</span> <<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00060"></a><a class="code" href="structggl_1_1section.html">00060</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1section.html" title="Structure containing section information.">section</a>
+<a name="l00061"></a>00061 {
+<a name="l00062"></a><a class="code" href="structggl_1_1section.html#da71a242258d79119fb6df06d290095e">00062</a> <span class="keyword">typedef</span> Box <a class="code" href="structggl_1_1section.html#da71a242258d79119fb6df06d290095e">box_type</a>;
+<a name="l00063"></a>00063
+<a name="l00064"></a><a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">00064</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">directions</a>[DimensionCount];
+<a name="l00065"></a><a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">00065</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">ring_index</a>;
+<a name="l00066"></a><a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">00066</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">multi_index</a>;
+<a name="l00067"></a><a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">00067</a> Box <a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">bounding_box</a>;
+<a name="l00068"></a>00068
+<a name="l00069"></a><a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">00069</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">begin_index</a>;
+<a name="l00070"></a><a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">00070</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">end_index</a>;
+<a name="l00071"></a><a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">00071</a> std::size_t <a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">count</a>;
+<a name="l00072"></a><a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">00072</a> std::size_t <a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">range_count</a>;
+<a name="l00073"></a><a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">00073</a> <span class="keywordtype">bool</span> <a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">duplicate</a>;
+<a name="l00074"></a><a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">00074</a> <span class="keywordtype">int</span> <a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">non_duplicate_index</a>;
+<a name="l00075"></a>00075
+<a name="l00076"></a>00076
+<a name="l00077"></a><a class="code" href="structggl_1_1section.html#6b36770260c6a2c89a9a63fc641064c4">00077</a> <span class="keyword">inline</span> <a class="code" href="structggl_1_1section.html#6b36770260c6a2c89a9a63fc641064c4">section</a>()
+<a name="l00078"></a>00078 : <a class="code" href="structggl_1_1section.html#fe6e8096e811d4248d64a0a4a9817edc">ring_index</a>(-99)
+<a name="l00079"></a>00079 , <a class="code" href="structggl_1_1section.html#0403b41208359f079cf29876de56d182">multi_index</a>(-99)
+<a name="l00080"></a>00080 , <a class="code" href="structggl_1_1section.html#fcde79e0f07f3744382e8ecbb6ceeaa3">begin_index</a>(-1)
+<a name="l00081"></a>00081 , <a class="code" href="structggl_1_1section.html#22897e4894f0d4dcaa80f0ab30376c68">end_index</a>(-1)
+<a name="l00082"></a>00082 , <a class="code" href="structggl_1_1section.html#c53669933d966cf7c9c19b8376b5b731">count</a>(0)
+<a name="l00083"></a>00083 , <a class="code" href="structggl_1_1section.html#e8630665af85810bc73eaabbe8b8d1b5">range_count</a>(0)
+<a name="l00084"></a>00084 , <a class="code" href="structggl_1_1section.html#ef8836af463d9d92f0c2fc6bc4668f54">duplicate</a>(false)
+<a name="l00085"></a>00085 , <a class="code" href="structggl_1_1section.html#0d442355c8be6a391319da7699ba4055">non_duplicate_index</a>(-1)
+<a name="l00086"></a>00086 {
+<a name="l00087"></a>00087 <a class="code" href="group__access.html#gaa27514a7d1c16133d28dd5601cd32fd" title="assign to a box inverse infinite">assign_inverse</a>(<a class="code" href="structggl_1_1section.html#dbdec35a5e0878ecc3ac31d28dd12f6f">bounding_box</a>);
+<a name="l00088"></a>00088 <span class="keywordflow">for</span> (<span class="keyword">register</span> std::size_t i = 0; i < DimensionCount; i++)
+<a name="l00089"></a>00089 {
+<a name="l00090"></a>00090 <a class="code" href="structggl_1_1section.html#685294c3e7107f87fcb7def9e2a6f430">directions</a>[i] = 0;
+<a name="l00091"></a>00091 }
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093 };
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095
+<a name="l00102"></a>00102 <span class="keyword">template</span> <<span class="keyword">typename</span> Box, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00103"></a><a class="code" href="structggl_1_1sections.html">00103</a> <span class="keyword">struct </span><a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a> : std::vector<section<Box, DimensionCount> >
+<a name="l00104"></a>00104 {
+<a name="l00105"></a><a class="code" href="structggl_1_1sections.html#9ad75a29e07d632e85847e4f206715ba">00105</a> <span class="keyword">typedef</span> Box <a class="code" href="structggl_1_1sections.html#9ad75a29e07d632e85847e4f206715ba">box_type</a>;
+<a name="l00106"></a><a class="code" href="structggl_1_1sections.html#1c9f89074b8fa60cc7c6e11ff323093e">00106</a> <span class="keyword">static</span> <span class="keyword">const</span> std::size_t <a class="code" href="structggl_1_1sections.html#1c9f89074b8fa60cc7c6e11ff323093e">value</a> = DimensionCount;
+<a name="l00107"></a>00107 };
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00111"></a>00111 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a> {
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 <span class="keyword">template</span> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00114"></a>00114 <span class="keyword">struct </span>get_direction_loop
+<a name="l00115"></a>00115 {
+<a name="l00116"></a>00116 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<Segment>::type</a> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a>;
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Segment <span class="keyword">const</span>& seg,
+<a name="l00119"></a>00119 <span class="keywordtype">int</span> directions[DimensionCount])
+<a name="l00120"></a>00120 {
+<a name="l00121"></a>00121 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> <span class="keyword">const</span> diff =
+<a name="l00122"></a>00122 ggl::get<1, Dimension>(seg) - ggl::get<0, Dimension>(seg);
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 directions[Dimension] = diff > 0 ? 1 : (diff < 0 ? -1 : 0);
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 get_direction_loop
+<a name="l00127"></a>00127 <
+<a name="l00128"></a>00128 Segment, Dimension + 1, DimensionCount
+<a name="l00129"></a>00129 >::apply(seg, directions);
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 };
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="keyword">template</span> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00134"></a>00134 <span class="keyword">struct </span>get_direction_loop<Segment, DimensionCount, DimensionCount>
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Segment <span class="keyword">const</span>& seg,
+<a name="l00137"></a>00137 <span class="keywordtype">int</span> directions[DimensionCount])
+<a name="l00138"></a>00138 {
+<a name="l00139"></a>00139 boost::ignore_unused_variable_warning(seg);
+<a name="l00140"></a>00140 boost::ignore_unused_variable_warning(directions);
+<a name="l00141"></a>00141 }
+<a name="l00142"></a>00142 };
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="keyword">template</span> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00145"></a>00145 <span class="keyword">struct </span>copy_loop
+<a name="l00146"></a>00146 {
+<a name="l00147"></a>00147 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(<span class="keyword">const</span> T source[DimensionCount],
+<a name="l00148"></a>00148 T target[DimensionCount])
+<a name="l00149"></a>00149 {
+<a name="l00150"></a>00150 target[Dimension] = source[Dimension];
+<a name="l00151"></a>00151 copy_loop<T, Dimension + 1, DimensionCount>::apply(source, target);
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 };
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 <span class="keyword">template</span> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00156"></a>00156 <span class="keyword">struct </span>copy_loop<T, DimensionCount, DimensionCount>
+<a name="l00157"></a>00157 {
+<a name="l00158"></a>00158 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(<span class="keyword">const</span> T source[DimensionCount],
+<a name="l00159"></a>00159 T target[DimensionCount])
+<a name="l00160"></a>00160 {
+<a name="l00161"></a>00161 boost::ignore_unused_variable_warning(source);
+<a name="l00162"></a>00162 boost::ignore_unused_variable_warning(target);
+<a name="l00163"></a>00163 }
+<a name="l00164"></a>00164 };
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <span class="keyword">template</span> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00167"></a>00167 <span class="keyword">struct </span>compare_loop
+<a name="l00168"></a>00168 {
+<a name="l00169"></a>00169 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(<span class="keyword">const</span> T source[DimensionCount],
+<a name="l00170"></a>00170 <span class="keyword">const</span> T target[DimensionCount])
+<a name="l00171"></a>00171 {
+<a name="l00172"></a>00172 <span class="keywordtype">bool</span> <span class="keyword">const</span> not_equal = target[Dimension] != source[Dimension];
+<a name="l00173"></a>00173
+<a name="l00174"></a>00174 <span class="keywordflow">return</span> not_equal
+<a name="l00175"></a>00175 ? <span class="keyword">false</span>
+<a name="l00176"></a>00176 : compare_loop
+<a name="l00177"></a>00177 <
+<a name="l00178"></a>00178 T, Dimension + 1, DimensionCount
+<a name="l00179"></a>00179 >::apply(source, target);
+<a name="l00180"></a>00180 }
+<a name="l00181"></a>00181 };
+<a name="l00182"></a>00182
+<a name="l00183"></a>00183 <span class="keyword">template</span> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00184"></a>00184 <span class="keyword">struct </span>compare_loop<T, DimensionCount, DimensionCount>
+<a name="l00185"></a>00185 {
+<a name="l00186"></a>00186 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(<span class="keyword">const</span> T source[DimensionCount],
+<a name="l00187"></a>00187 <span class="keyword">const</span> T target[DimensionCount])
+<a name="l00188"></a>00188 {
+<a name="l00189"></a>00189 boost::ignore_unused_variable_warning(source);
+<a name="l00190"></a>00190 boost::ignore_unused_variable_warning(target);
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00193"></a>00193 }
+<a name="l00194"></a>00194 };
+<a name="l00195"></a>00195
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 <span class="keyword">template</span> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00198"></a>00198 <span class="keyword">struct </span>check_duplicate_loop
+<a name="l00199"></a>00199 {
+<a name="l00200"></a>00200 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type<Segment>::type</a> <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a>;
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Segment <span class="keyword">const</span>& seg)
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 <a class="code" href="structggl_1_1coordinate__type.html" title="Meta-function which defines coordinate type (int, float, double, etc) of any geometry...">coordinate_type</a> <span class="keyword">const</span> diff =
+<a name="l00205"></a>00205 ggl::get<1, Dimension>(seg) - ggl::get<0, Dimension>(seg);
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <span class="keywordflow">if</span> (! <a class="code" href="namespaceggl_1_1math.html#d90ba94c2d65876e9485b2bbd10def34" title="returns true if both arguments are equal.">ggl::math::equals</a>(diff, 0))
+<a name="l00208"></a>00208 {
+<a name="l00209"></a>00209 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211
+<a name="l00212"></a>00212 <span class="keywordflow">return</span> check_duplicate_loop
+<a name="l00213"></a>00213 <
+<a name="l00214"></a>00214 Segment, Dimension + 1, DimensionCount
+<a name="l00215"></a>00215 >::apply(seg);
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217 };
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219 <span class="keyword">template</span> <<span class="keyword">typename</span> Segment, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00220"></a>00220 <span class="keyword">struct </span>check_duplicate_loop<Segment, DimensionCount, DimensionCount>
+<a name="l00221"></a>00221 {
+<a name="l00222"></a>00222 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Segment <span class="keyword">const</span>&)
+<a name="l00223"></a>00223 {
+<a name="l00224"></a>00224 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00225"></a>00225 }
+<a name="l00226"></a>00226 };
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 <span class="keyword">template</span> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> Dimension, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00229"></a>00229 <span class="keyword">struct </span>assign_loop
+<a name="l00230"></a>00230 {
+<a name="l00231"></a>00231 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(T dims[DimensionCount], <span class="keywordtype">int</span> <span class="keyword">const</span> value)
+<a name="l00232"></a>00232 {
+<a name="l00233"></a>00233 dims[Dimension] = value;
+<a name="l00234"></a>00234 assign_loop<T, Dimension + 1, DimensionCount>::apply(dims, value);
+<a name="l00235"></a>00235 }
+<a name="l00236"></a>00236 };
+<a name="l00237"></a>00237
+<a name="l00238"></a>00238 <span class="keyword">template</span> <<span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> DimensionCount>
+<a name="l00239"></a>00239 <span class="keyword">struct </span>assign_loop<T, DimensionCount, DimensionCount>
+<a name="l00240"></a>00240 {
+<a name="l00241"></a>00241 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(T dims[DimensionCount], <span class="keywordtype">int</span> <span class="keyword">const</span>)
+<a name="l00242"></a>00242 {
+<a name="l00243"></a>00243 boost::ignore_unused_variable_warning(dims);
+<a name="l00244"></a>00244 }
+<a name="l00245"></a>00245 };
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247
+<a name="l00248"></a>00248 <span class="keyword">template</span>
+<a name="l00249"></a>00249 <
+<a name="l00250"></a>00250 <span class="keyword">typename</span> Range,
+<a name="l00251"></a>00251 <span class="keyword">typename</span> Point,
+<a name="l00252"></a>00252 <span class="keyword">typename</span> Sections,
+<a name="l00253"></a>00253 std::size_t DimensionCount,
+<a name="l00254"></a>00254 std::size_t MaxCount
+<a name="l00255"></a>00255 >
+<a name="l00256"></a>00256 <span class="keyword">struct </span>sectionalize_range
+<a name="l00257"></a>00257 {
+<a name="l00258"></a>00258 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Range <span class="keyword">const</span>& range, Sections& <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>,
+<a name="l00259"></a>00259 <span class="keywordtype">int</span> ring_index = -1, <span class="keywordtype">int</span> multi_index = -1)
+<a name="l00260"></a>00260 {
+<a name="l00261"></a>00261 <span class="keyword">typedef</span> <a class="code" href="structggl_1_1segment.html" title="Class segment: small containing two (templatized) point references.">segment<const Point></a> segment_type;
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263 std::size_t <span class="keyword">const</span> n = boost::size(range);
+<a name="l00264"></a>00264 <span class="keywordflow">if</span> (n == 0)
+<a name="l00265"></a>00265 {
+<a name="l00266"></a>00266 <span class="comment">// Zero points, no section</span>
+<a name="l00267"></a>00267 <span class="keywordflow">return</span>;
+<a name="l00268"></a>00268 }
+<a name="l00269"></a>00269
+<a name="l00270"></a>00270 <span class="keywordflow">if</span> (n == 1)
+<a name="l00271"></a>00271 {
+<a name="l00272"></a>00272 <span class="comment">// Line with one point ==> no sections</span>
+<a name="l00273"></a>00273 <span class="keywordflow">return</span>;
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275
+<a name="l00276"></a>00276 <span class="keywordtype">int</span> i = 0;
+<a name="l00277"></a>00277 <span class="keywordtype">int</span> ndi = 0; <span class="comment">// non duplicate index</span>
+<a name="l00278"></a>00278
+<a name="l00279"></a>00279 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value<Sections>::type sections_range_type;
+<a name="l00280"></a>00280 sections_range_type <a class="code" href="structggl_1_1section.html" title="Structure containing section information.">section</a>;
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator<Range>::type iterator_type;
+<a name="l00283"></a>00283 iterator_type it = boost::begin(range);
+<a name="l00284"></a>00284
+<a name="l00285"></a>00285 <span class="keywordflow">for</span>(iterator_type previous = it++;
+<a name="l00286"></a>00286 it != boost::end(range);
+<a name="l00287"></a>00287 previous = it++, i++)
+<a name="l00288"></a>00288 {
+<a name="l00289"></a>00289 segment_type s(*previous, *it);
+<a name="l00290"></a>00290
+<a name="l00291"></a>00291 <span class="keywordtype">int</span> direction_classes[DimensionCount] = {0};
+<a name="l00292"></a>00292 get_direction_loop
+<a name="l00293"></a>00293 <
+<a name="l00294"></a>00294 segment_type, 0, DimensionCount
+<a name="l00295"></a>00295 >::apply(s, direction_classes);
+<a name="l00296"></a>00296
+<a name="l00297"></a>00297 <span class="comment">// if "dir" == 0 for all point-dimensions, it is duplicate.</span>
+<a name="l00298"></a>00298 <span class="comment">// Those sections might be omitted, if wished, lateron</span>
+<a name="l00299"></a>00299 <span class="keywordtype">bool</span> check_duplicate = <span class="keyword">true</span>; <span class="comment">//?</span>
+<a name="l00300"></a>00300 <span class="keywordtype">bool</span> duplicate = <span class="keyword">false</span>;
+<a name="l00301"></a>00301
+<a name="l00302"></a>00302 <span class="keywordflow">if</span> (check_duplicate && direction_classes[0] == 0)
+<a name="l00303"></a>00303 {
+<a name="l00304"></a>00304 <span class="comment">// Recheck because all dimensions should be checked,</span>
+<a name="l00305"></a>00305 <span class="comment">// not only first one,</span>
+<a name="l00306"></a>00306 <span class="comment">// Note that DimensionCount might be < dimension<P>::value</span>
+<a name="l00307"></a>00307 <span class="keywordflow">if</span> (check_duplicate_loop
+<a name="l00308"></a>00308 <
+<a name="l00309"></a>00309 segment_type, 0, <a class="code" href="structggl_1_1dimension.html" title="Meta-function which defines coordinate dimensions, i.e. the number of axes of any...">ggl::dimension<Point>::type::value</a>
+<a name="l00310"></a>00310 >::apply(s)
+<a name="l00311"></a>00311 )
+<a name="l00312"></a>00312 {
+<a name="l00313"></a>00313 duplicate = <span class="keyword">true</span>;
+<a name="l00314"></a>00314
+<a name="l00315"></a>00315 <span class="comment">// Change direction-info to force new section</span>
+<a name="l00316"></a>00316 <span class="comment">// Note that wo consecutive duplicate segments will generate</span>
+<a name="l00317"></a>00317 <span class="comment">// only one duplicate-section.</span>
+<a name="l00318"></a>00318 <span class="comment">// Actual value is not important as long as it is not -1,0,1</span>
+<a name="l00319"></a>00319 assign_loop
+<a name="l00320"></a>00320 <
+<a name="l00321"></a>00321 int, 0, DimensionCount
+<a name="l00322"></a>00322 >::apply(direction_classes, -99);
+<a name="l00323"></a>00323 }
+<a name="l00324"></a>00324 }
+<a name="l00325"></a>00325
+<a name="l00326"></a>00326 <span class="keywordflow">if</span> (section.count > 0
+<a name="l00327"></a>00327 && (!compare_loop
+<a name="l00328"></a>00328 <
+<a name="l00329"></a>00329 <span class="keywordtype">int</span>, 0, DimensionCount
+<a name="l00330"></a>00330 >::apply(direction_classes, section.directions)
+<a name="l00331"></a>00331 || section.count > MaxCount
+<a name="l00332"></a>00332 )
+<a name="l00333"></a>00333 )
+<a name="l00334"></a>00334 {
+<a name="l00335"></a>00335 sections.push_back(section);
+<a name="l00336"></a>00336 section = sections_range_type();
+<a name="l00337"></a>00337 }
+<a name="l00338"></a>00338
+<a name="l00339"></a>00339 <span class="keywordflow">if</span> (section.count == 0)
+<a name="l00340"></a>00340 {
+<a name="l00341"></a>00341 section.begin_index = i;
+<a name="l00342"></a>00342 section.ring_index = ring_index;
+<a name="l00343"></a>00343 section.multi_index = multi_index;
+<a name="l00344"></a>00344 section.duplicate = duplicate;
+<a name="l00345"></a>00345 section.non_duplicate_index = ndi;
+<a name="l00346"></a>00346 section.range_count = boost::size(range);
+<a name="l00347"></a>00347
+<a name="l00348"></a>00348 copy_loop
+<a name="l00349"></a>00349 <
+<a name="l00350"></a>00350 int, 0, DimensionCount
+<a name="l00351"></a>00351 >::apply(direction_classes, section.directions);
+<a name="l00352"></a>00352 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(section.bounding_box, *previous);
+<a name="l00353"></a>00353 }
+<a name="l00354"></a>00354
+<a name="l00355"></a>00355 <a class="code" href="group__combine.html#gf2336ad085ad8b79cde5a759ab229199" title="Combines a box with another geometry (box, point).">ggl::combine</a>(section.bounding_box, *it);
+<a name="l00356"></a>00356 section.end_index = i + 1;
+<a name="l00357"></a>00357 section.count++;
+<a name="l00358"></a>00358 <span class="keywordflow">if</span> (! duplicate)
+<a name="l00359"></a>00359 {
+<a name="l00360"></a>00360 ndi++;
+<a name="l00361"></a>00361 }
+<a name="l00362"></a>00362 }
+<a name="l00363"></a>00363
+<a name="l00364"></a>00364 <span class="keywordflow">if</span> (section.count > 0)
+<a name="l00365"></a>00365 {
+<a name="l00366"></a>00366 sections.push_back(section);
+<a name="l00367"></a>00367 }
+<a name="l00368"></a>00368 }
+<a name="l00369"></a>00369 };
+<a name="l00370"></a>00370
+<a name="l00371"></a>00371 <span class="keyword">template</span>
+<a name="l00372"></a>00372 <
+<a name="l00373"></a>00373 <span class="keyword">typename</span> Polygon,
+<a name="l00374"></a>00374 <span class="keyword">typename</span> Sections,
+<a name="l00375"></a>00375 std::size_t DimensionCount,
+<a name="l00376"></a>00376 std::size_t MaxCount
+<a name="l00377"></a>00377 >
+<a name="l00378"></a>00378 <span class="keyword">struct </span>sectionalize_polygon
+<a name="l00379"></a>00379 {
+<a name="l00380"></a>00380 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Polygon <span class="keyword">const</span>& poly, Sections& <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>,
+<a name="l00381"></a>00381 <span class="keywordtype">int</span> multi_index = -1)
+<a name="l00382"></a>00382 {
+<a name="l00383"></a>00383 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type<Polygon>::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00384"></a>00384 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ring_type<Polygon>::type</a> <a class="code" href="structggl_1_1ring__type.html" title="Meta-function which defines ring type of (multi)polygon geometry.">ring_type</a>;
+<a name="l00385"></a>00385 <span class="keyword">typedef</span> sectionalize_range
+<a name="l00386"></a>00386 <
+<a name="l00387"></a>00387 ring_type, point_type, Sections, DimensionCount, MaxCount
+<a name="l00388"></a>00388 > sectionalizer_type;
+<a name="l00389"></a>00389
+<a name="l00390"></a>00390 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00391"></a>00391 <
+<a name="l00392"></a>00392 <span class="keyword">typename</span> <a class="code" href="structggl_1_1interior__type.html" title="Meta-function defining container type of inner rings of (multi)polygon geometriy...">interior_type<Polygon>::type</a>
+<a name="l00393"></a>00393 >::type iterator_type;
+<a name="l00394"></a>00394
+<a name="l00395"></a>00395 sectionalizer_type::apply(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), sections, -1, multi_index);
+<a name="l00396"></a>00396
+<a name="l00397"></a>00397 <span class="keywordtype">int</span> i = 0;
+<a name="l00398"></a>00398 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00399"></a>00399 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00400"></a>00400 ++it, ++i)
+<a name="l00401"></a>00401 {
+<a name="l00402"></a>00402 sectionalizer_type::apply(*it, sections, i, multi_index);
+<a name="l00403"></a>00403 }
+<a name="l00404"></a>00404 }
+<a name="l00405"></a>00405 };
+<a name="l00406"></a>00406
+<a name="l00407"></a>00407 <span class="keyword">template</span>
+<a name="l00408"></a>00408 <
+<a name="l00409"></a>00409 <span class="keyword">typename</span> Box,
+<a name="l00410"></a>00410 <span class="keyword">typename</span> Sections,
+<a name="l00411"></a>00411 std::size_t DimensionCount,
+<a name="l00412"></a>00412 std::size_t MaxCount
+<a name="l00413"></a>00413 >
+<a name="l00414"></a>00414 <span class="keyword">struct </span>sectionalize_box
+<a name="l00415"></a>00415 {
+<a name="l00416"></a>00416 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(Box <span class="keyword">const</span>& <a class="code" href="classggl_1_1box.html" title="Class box: defines a box made of two describing points.">box</a>, Sections& <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>)
+<a name="l00417"></a>00417 {
+<a name="l00418"></a>00418 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type<Box>::type</a> <a class="code" href="structggl_1_1point__type.html" title="Meta-function which defines point type of any geometry.">point_type</a>;
+<a name="l00419"></a>00419
+<a name="l00420"></a>00420 assert_dimension<Box, 2>();
+<a name="l00421"></a>00421
+<a name="l00422"></a>00422 <span class="comment">// Add all four sides of the 2D-box as separate section.</span>
+<a name="l00423"></a>00423 <span class="comment">// Easiest is to convert it to a polygon.</span>
+<a name="l00424"></a>00424 <span class="comment">// However, we don't have the polygon type</span>
+<a name="l00425"></a>00425 <span class="comment">// (or polygon would be a helper-type).</span>
+<a name="l00426"></a>00426 <span class="comment">// Therefore we mimic a linestring/std::vector of 5 points</span>
+<a name="l00427"></a>00427
+<a name="l00428"></a>00428 point_type ll, lr, ul, ur;
+<a name="l00429"></a>00429 <a class="code" href="namespaceggl.html#a658e33964ece2cc6e48c622595ad271" title="Assign the 4 points of a 2D box.">assign_box_corners</a>(box, ll, lr, ul, ur);
+<a name="l00430"></a>00430
+<a name="l00431"></a>00431 std::vector<point_type> points;
+<a name="l00432"></a>00432 points.push_back(ll);
+<a name="l00433"></a>00433 points.push_back(ul);
+<a name="l00434"></a>00434 points.push_back(ur);
+<a name="l00435"></a>00435 points.push_back(lr);
+<a name="l00436"></a>00436 points.push_back(ll);
+<a name="l00437"></a>00437
+<a name="l00438"></a>00438 sectionalize_range
+<a name="l00439"></a>00439 <
+<a name="l00440"></a>00440 std::vector<point_type>,
+<a name="l00441"></a>00441 point_type,
+<a name="l00442"></a>00442 Sections,
+<a name="l00443"></a>00443 DimensionCount,
+<a name="l00444"></a>00444 MaxCount
+<a name="l00445"></a>00445 >::apply(points, sections);
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447 };
+<a name="l00448"></a>00448
+<a name="l00449"></a>00449 }} <span class="comment">// namespace detail::sectionalize</span>
+<a name="l00450"></a>00450 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00451"></a>00451 <span class="preprocessor"></span>
+<a name="l00452"></a>00452
+<a name="l00453"></a>00453 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00454"></a>00454 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00455"></a>00455 {
+<a name="l00456"></a>00456
+<a name="l00457"></a>00457 <span class="keyword">template</span>
+<a name="l00458"></a>00458 <
+<a name="l00459"></a>00459 <span class="keyword">typename</span> Tag,
+<a name="l00460"></a>00460 <span class="keyword">typename</span> Geometry,
+<a name="l00461"></a>00461 <span class="keyword">typename</span> Sections,
+<a name="l00462"></a>00462 std::size_t DimensionCount,
+<a name="l00463"></a>00463 std::size_t MaxCount
+<a name="l00464"></a>00464 >
+<a name="l00465"></a>00465 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>
+<a name="l00466"></a>00466 {};
+<a name="l00467"></a>00467
+<a name="l00468"></a>00468 <span class="keyword">template</span>
+<a name="l00469"></a>00469 <
+<a name="l00470"></a>00470 <span class="keyword">typename</span> Box,
+<a name="l00471"></a>00471 <span class="keyword">typename</span> Sections,
+<a name="l00472"></a>00472 std::size_t DimensionCount,
+<a name="l00473"></a>00473 std::size_t MaxCount
+<a name="l00474"></a>00474 >
+<a name="l00475"></a>00475 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a><box_tag, Box, Sections, DimensionCount, MaxCount>
+<a name="l00476"></a>00476 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_box
+<a name="l00477"></a>00477 <
+<a name="l00478"></a>00478 Box,
+<a name="l00479"></a>00479 Sections,
+<a name="l00480"></a>00480 DimensionCount,
+<a name="l00481"></a>00481 MaxCount
+<a name="l00482"></a>00482 >
+<a name="l00483"></a>00483 {};
+<a name="l00484"></a>00484
+<a name="l00485"></a>00485 <span class="keyword">template</span>
+<a name="l00486"></a>00486 <
+<a name="l00487"></a>00487 <span class="keyword">typename</span> LineString, <span class="keyword">typename</span>
+<a name="l00488"></a>00488 Sections,
+<a name="l00489"></a>00489 std::size_t DimensionCount,
+<a name="l00490"></a>00490 std::size_t MaxCount
+<a name="l00491"></a>00491 >
+<a name="l00492"></a>00492 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>
+<a name="l00493"></a>00493 <
+<a name="l00494"></a>00494 linestring_tag,
+<a name="l00495"></a>00495 LineString,
+<a name="l00496"></a>00496 Sections,
+<a name="l00497"></a>00497 DimensionCount,
+<a name="l00498"></a>00498 MaxCount
+<a name="l00499"></a>00499 >
+<a name="l00500"></a>00500 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_range
+<a name="l00501"></a>00501 <
+<a name="l00502"></a>00502 LineString,
+<a name="l00503"></a>00503 typename point_type<LineString>::type,
+<a name="l00504"></a>00504 Sections,
+<a name="l00505"></a>00505 DimensionCount,
+<a name="l00506"></a>00506 MaxCount
+<a name="l00507"></a>00507 >
+<a name="l00508"></a>00508 {};
+<a name="l00509"></a>00509
+<a name="l00510"></a>00510 <span class="keyword">template</span>
+<a name="l00511"></a>00511 <
+<a name="l00512"></a>00512 <span class="keyword">typename</span> Range,
+<a name="l00513"></a>00513 <span class="keyword">typename</span> Sections,
+<a name="l00514"></a>00514 std::size_t DimensionCount,
+<a name="l00515"></a>00515 std::size_t MaxCount
+<a name="l00516"></a>00516 >
+<a name="l00517"></a>00517 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a><ring_tag, Range, Sections, DimensionCount, MaxCount>
+<a name="l00518"></a>00518 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_range
+<a name="l00519"></a>00519 <
+<a name="l00520"></a>00520 Range,
+<a name="l00521"></a>00521 typename point_type<Range>::type,
+<a name="l00522"></a>00522 Sections,
+<a name="l00523"></a>00523 DimensionCount,
+<a name="l00524"></a>00524 MaxCount
+<a name="l00525"></a>00525 >
+<a name="l00526"></a>00526 {};
+<a name="l00527"></a>00527
+<a name="l00528"></a>00528 <span class="keyword">template</span>
+<a name="l00529"></a>00529 <
+<a name="l00530"></a>00530 <span class="keyword">typename</span> Polygon,
+<a name="l00531"></a>00531 <span class="keyword">typename</span> Sections,
+<a name="l00532"></a>00532 std::size_t DimensionCount,
+<a name="l00533"></a>00533 std::size_t MaxCount
+<a name="l00534"></a>00534 >
+<a name="l00535"></a>00535 <span class="keyword">struct </span><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a><polygon_tag, Polygon, Sections, DimensionCount, MaxCount>
+<a name="l00536"></a>00536 : detail::<a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>::sectionalize_polygon
+<a name="l00537"></a>00537 <
+<a name="l00538"></a>00538 Polygon, Sections, DimensionCount, MaxCount
+<a name="l00539"></a>00539 >
+<a name="l00540"></a>00540 {};
+<a name="l00541"></a>00541
+<a name="l00542"></a>00542 } <span class="comment">// namespace dispatch</span>
+<a name="l00543"></a>00543 <span class="preprocessor">#endif</span>
+<a name="l00544"></a>00544 <span class="preprocessor"></span>
+<a name="l00545"></a>00545
+<a name="l00555"></a>00555 <span class="keyword">template</span><<span class="keyword">typename</span> Geometry, <span class="keyword">typename</span> Sections>
+<a name="l00556"></a><a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1">00556</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">sectionalize</a>(Geometry <span class="keyword">const</span>& geometry, Sections& <a class="code" href="structggl_1_1sections.html" title="Structure containing a collection of sections.">sections</a>)
+<a name="l00557"></a>00557 {
+<a name="l00558"></a>00558 <span class="comment">// A maximum of 10 segments per section seems to give the fastest results</span>
+<a name="l00559"></a>00559 <span class="keyword">static</span> <span class="keyword">const</span> std::size_t max_segments_per_section = 10;
+<a name="l00560"></a>00560 <span class="keyword">typedef</span> <a class="code" href="group__sectionalize.html#g94c69212e1ba4829515eb5a31acd29e1" title="Split a geometry into monotonic sections.">dispatch::sectionalize</a>
+<a name="l00561"></a>00561 <
+<a name="l00562"></a>00562 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<Geometry>::type</a>,
+<a name="l00563"></a>00563 Geometry,
+<a name="l00564"></a>00564 Sections,
+<a name="l00565"></a>00565 Sections::value,
+<a name="l00566"></a>00566 max_segments_per_section
+<a name="l00567"></a>00567 > sectionalizer_type;
+<a name="l00568"></a>00568
+<a name="l00569"></a>00569 sections.clear();
+<a name="l00570"></a>00570 sectionalizer_type::apply(geometry, sections);
+<a name="l00571"></a>00571 }
+<a name="l00572"></a>00572
+<a name="l00573"></a>00573
+<a name="l00574"></a>00574
+<a name="l00575"></a>00575
+<a name="l00576"></a>00576
+<a name="l00577"></a>00577 } <span class="comment">// namespace ggl</span>
+<a name="l00578"></a>00578
+<a name="l00579"></a>00579 <span class="preprocessor">#endif // GGL_ALGORITHMS_SECTIONALIZE_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,92 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/simplify.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G , typename S > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g00b5a49a676c29d790764ad67e9fdfbc">ggl::simplify</a> (const G &geometry, G &out, double max_distance, S const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g44130eb01685933927c05207a01a84f1">ggl::simplify</a> (const G &geometry, G &out, double max_distance)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G , typename O , typename S > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#gfac2ab8188c31cf7fab43e423884e0ed">ggl::simplify</a> (const G &geometry, O out, double max_distance, S const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G , typename O > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb">ggl::simplify</a> (const G &geometry, O out, double max_distance)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Simplify a geometry. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2simplify_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,330 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/simplify.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_SIMPLIFY_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_SIMPLIFY_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="algorithms_2distance_8hpp.html">ggl/algorithms/distance.hpp</a>></span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="agn__simplify_8hpp.html">ggl/strategies/agnostic/agn_simplify.hpp</a>></span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022
+<a name="l00046"></a>00046 <span class="keyword">namespace </span>ggl
+<a name="l00047"></a>00047 {
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a> {
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> S>
+<a name="l00053"></a>00053 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_range_strategy(R <span class="keyword">const</span>& range, OutputIterator out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>& strategy)
+<a name="l00054"></a>00054 {
+<a name="l00055"></a>00055 <span class="keywordflow">if</span> (boost::begin(range) == boost::end(range) || max_distance < 0)
+<a name="l00056"></a>00056 {
+<a name="l00057"></a>00057 std::copy(boost::begin(range), boost::end(range), out);
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 <span class="keywordflow">else</span>
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 <span class="keyword">typename</span> boost::range_const_iterator<R>::type it = boost::begin(range) + 1;
+<a name="l00062"></a>00062 <span class="keywordflow">if</span> (it == boost::end(range) || it + 1 == boost::end(range))
+<a name="l00063"></a>00063 {
+<a name="l00064"></a>00064 std::copy(boost::begin(range), boost::end(range), out);
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066 <span class="keywordflow">else</span>
+<a name="l00067"></a>00067 {
+<a name="l00068"></a>00068 strategy.simplify(range, out, max_distance);
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 }
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> OutputIterator>
+<a name="l00074"></a>00074 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_range(R <span class="keyword">const</span>& range, OutputIterator out, <span class="keywordtype">double</span> max_distance)
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="comment">// Define default strategy</span>
+<a name="l00077"></a>00077 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<R>::type point_type;
+<a name="l00078"></a>00078 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag<point_type>::type cs_tag;
+<a name="l00079"></a>00079 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
+<a name="l00080"></a>00080 <
+<a name="l00081"></a>00081 cs_tag,
+<a name="l00082"></a>00082 cs_tag,
+<a name="l00083"></a>00083 point_type,
+<a name="l00084"></a>00084 segment<const point_type>
+<a name="l00085"></a>00085 >::type strategy_type;
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 strategy::simplify::douglas_peucker<R, OutputIterator, strategy_type> douglas;
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 simplify_range_strategy(range, out, max_distance, douglas);
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> S>
+<a name="l00093"></a>00093 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_ring(R <span class="keyword">const</span>& r_in, OutputIterator out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>& strategy)
+<a name="l00094"></a>00094 {
+<a name="l00095"></a>00095 <span class="comment">// Call do_container for a ring</span>
+<a name="l00096"></a>00096
+<a name="l00097"></a>00097 <span class="comment">// The first/last point (the closing point of the ring) should maybe be excluded because it</span>
+<a name="l00098"></a>00098 <span class="comment">// lies on a line with second/one but last. Here it is never excluded.</span>
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="comment">// Note also that, especially if max_distance is too large, the output ring might be self intersecting</span>
+<a name="l00101"></a>00101 <span class="comment">// while the input ring is not, although chances are low in normal polygons</span>
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <span class="comment">// Finally the inputring might have 4 points (=correct), the output < 4(=wrong)</span>
+<a name="l00104"></a>00104 <span class="keywordflow">if</span> (boost::size(r_in) <= 4 || max_distance < 0)
+<a name="l00105"></a>00105 {
+<a name="l00106"></a>00106 std::copy(boost::begin(r_in), boost::end(r_in), out);
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108 <span class="keywordflow">else</span>
+<a name="l00109"></a>00109 {
+<a name="l00110"></a>00110 simplify_range_strategy(r_in, out, max_distance, strategy);
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 }
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="keyword">template</span><<span class="keyword">typename</span> Y, <span class="keyword">typename</span> S>
+<a name="l00115"></a>00115 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_polygon(Y <span class="keyword">const</span>& poly_in, Y& poly_out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>& strategy)
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator
+<a name="l00118"></a>00118 <<span class="keyword">typename</span> interior_type<Y>::type>::type iterator_type;
+<a name="l00119"></a>00119 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00120"></a>00120 <<span class="keyword">typename</span> interior_type<Y>::type>::type const_iterator_type;
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 poly_out.clear();
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="comment">// Note that if there are inner rings, and distance is too large, they might intersect with the</span>
+<a name="l00125"></a>00125 <span class="comment">// outer ring in the output, while it didn't in the input.</span>
+<a name="l00126"></a>00126 simplify_ring(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly_in), std::back_inserter(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly_out)),
+<a name="l00127"></a>00127 max_distance, strategy);
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_out).resize(boost::size(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in)));
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 const_iterator_type it_in = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in));
+<a name="l00132"></a>00132 iterator_type it_out = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_out));
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 <span class="keywordflow">for</span> (; it_in != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly_in)); it_in++, it_out++)
+<a name="l00135"></a>00135 {
+<a name="l00136"></a>00136 simplify_ring(*it_in, std::back_inserter(*it_out), max_distance, strategy);
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139
+<a name="l00140"></a>00140 <span class="keyword">template</span><<span class="keyword">typename</span> Y>
+<a name="l00141"></a>00141 <span class="keyword">inline</span> <span class="keywordtype">void</span> simplify_polygon(Y <span class="keyword">const</span>& poly_in, Y& poly_out, <span class="keywordtype">double</span> max_distance)
+<a name="l00142"></a>00142 {
+<a name="l00143"></a>00143 <span class="comment">// Define default strategy</span>
+<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type<Y>::type ring_type;
+<a name="l00145"></a>00145 <span class="keyword">typedef</span> std::back_insert_iterator<ring_type> iterator_type;
+<a name="l00146"></a>00146
+<a name="l00147"></a>00147 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<Y>::type point_type;
+<a name="l00148"></a>00148 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag<point_type>::type cs_tag;
+<a name="l00149"></a>00149 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
+<a name="l00150"></a>00150 <
+<a name="l00151"></a>00151 cs_tag,
+<a name="l00152"></a>00152 cs_tag,
+<a name="l00153"></a>00153 point_type,
+<a name="l00154"></a>00154 segment<const point_type>
+<a name="l00155"></a>00155 >::type strategy_type;
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 strategy::simplify::douglas_peucker<ring_type, iterator_type, strategy_type> douglas;
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 simplify_polygon(poly_in, poly_out, max_distance, douglas);
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 }} <span class="comment">// namespace detail::simplify</span>
+<a name="l00163"></a>00163 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00164"></a>00164 <span class="preprocessor"></span>
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00167"></a>00167 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00168"></a>00168 {
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag, <span class="keyword">typename</span> G>
+<a name="l00171"></a>00171 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>
+<a name="l00172"></a>00172 {
+<a name="l00173"></a>00173 };
+<a name="l00174"></a>00174
+<a name="l00175"></a>00175 <span class="comment">// Partial specializations</span>
+<a name="l00176"></a>00176 <span class="keyword">template</span> <<span class="keyword">typename</span> R>
+<a name="l00177"></a>00177 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a><linestring_tag, R>
+<a name="l00178"></a>00178 {
+<a name="l00179"></a>00179 <span class="keyword">template</span><<span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> S>
+<a name="l00180"></a>00180 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>& range, OutputIterator out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>& strategy)
+<a name="l00181"></a>00181 {
+<a name="l00182"></a>00182 strategy.simplify(range, out, max_distance);
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184
+<a name="l00185"></a>00185 <span class="keyword">template</span><<span class="keyword">typename</span> OutputIterator>
+<a name="l00186"></a>00186 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>& range, OutputIterator out, <span class="keywordtype">double</span> max_distance)
+<a name="l00187"></a>00187 {
+<a name="l00188"></a>00188 <span class="comment">// Define default strategy</span>
+<a name="l00189"></a>00189 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<R>::type point_type;
+<a name="l00190"></a>00190 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag<point_type>::type cs_tag;
+<a name="l00191"></a>00191 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
+<a name="l00192"></a>00192 <
+<a name="l00193"></a>00193 cs_tag,
+<a name="l00194"></a>00194 cs_tag,
+<a name="l00195"></a>00195 point_type,
+<a name="l00196"></a>00196 segment<const point_type>
+<a name="l00197"></a>00197 >::type strategy_type;
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 strategy::simplify::douglas_peucker<R, OutputIterator, strategy_type> douglas;
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 detail::simplify::simplify_range_strategy(range, out, max_distance, douglas);
+<a name="l00202"></a>00202 }
+<a name="l00203"></a>00203 };
+<a name="l00204"></a>00204
+<a name="l00205"></a>00205 <span class="keyword">template</span> <<span class="keyword">typename</span> R>
+<a name="l00206"></a>00206 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a><ring_tag, R>
+<a name="l00207"></a>00207 {
+<a name="l00209"></a>00209 <span class="keyword">template</span><<span class="keyword">typename</span> S>
+<a name="l00210"></a>00210 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>& ring_in, R& ring_out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>& strategy)
+<a name="l00211"></a>00211 {
+<a name="l00212"></a>00212 <span class="keyword">using</span> detail::simplify::simplify_ring;
+<a name="l00213"></a>00213 simplify_ring(ring_in, std::back_inserter(ring_out), max_distance, strategy);
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215
+<a name="l00217"></a>00217 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(R <span class="keyword">const</span>& ring_in, R& ring_out, <span class="keywordtype">double</span> max_distance)
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 <span class="comment">// Define default strategy</span>
+<a name="l00220"></a>00220 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<R>::type point_type;
+<a name="l00221"></a>00221 <span class="keyword">typedef</span> <span class="keyword">typename</span> cs_tag<point_type>::type cs_tag;
+<a name="l00222"></a>00222 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance_segment
+<a name="l00223"></a>00223 <
+<a name="l00224"></a>00224 cs_tag,
+<a name="l00225"></a>00225 cs_tag,
+<a name="l00226"></a>00226 point_type,
+<a name="l00227"></a>00227 segment<const point_type>
+<a name="l00228"></a>00228 >::type strategy_type;
+<a name="l00229"></a>00229 <span class="keyword">typedef</span> std::back_insert_iterator<R> iterator_type;
+<a name="l00230"></a>00230
+<a name="l00231"></a>00231 strategy::simplify::douglas_peucker<R, iterator_type, strategy_type> douglas;
+<a name="l00232"></a>00232
+<a name="l00233"></a>00233 detail::simplify::simplify_ring(ring_in, std::back_inserter(ring_out), max_distance, douglas);
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 };
+<a name="l00236"></a>00236
+<a name="l00237"></a>00237 <span class="keyword">template</span> <<span class="keyword">typename</span> P>
+<a name="l00238"></a>00238 <span class="keyword">struct </span><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a><polygon_tag, P>
+<a name="l00239"></a>00239 {
+<a name="l00241"></a>00241 <span class="keyword">template</span><<span class="keyword">typename</span> S>
+<a name="l00242"></a>00242 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>& poly_in, P& poly_out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>& strategy)
+<a name="l00243"></a>00243 {
+<a name="l00244"></a>00244 detail::simplify::simplify_polygon(poly_in, poly_out, max_distance, strategy);
+<a name="l00245"></a>00245 }
+<a name="l00246"></a>00246
+<a name="l00248"></a>00248 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> apply(P <span class="keyword">const</span>& poly_in, P& poly_out, <span class="keywordtype">double</span> max_distance)
+<a name="l00249"></a>00249 {
+<a name="l00250"></a>00250 detail::simplify::simplify_polygon(poly_in, poly_out, max_distance);
+<a name="l00251"></a>00251 }
+<a name="l00252"></a>00252 };
+<a name="l00253"></a>00253
+<a name="l00254"></a>00254 } <span class="comment">// namespace dispatch</span>
+<a name="l00255"></a>00255 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00256"></a>00256 <span class="preprocessor"></span>
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <span class="comment">// Model 1, using output iterator</span>
+<a name="l00259"></a>00259
+<a name="l00275"></a>00275 <span class="keyword">template</span><<span class="keyword">typename</span> G, <span class="keyword">typename</span> O>
+<a name="l00276"></a><a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb">00276</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G& geometry, O out, <span class="keywordtype">double</span> max_distance)
+<a name="l00277"></a>00277 {
+<a name="l00278"></a>00278 <span class="keyword">typedef</span> dispatch::simplify<typename tag<G>::type, G> simplify_type;
+<a name="l00279"></a>00279 simplify_type::apply(geometry, out, max_distance);
+<a name="l00280"></a>00280 }
+<a name="l00281"></a>00281
+<a name="l00298"></a>00298 <span class="keyword">template</span><<span class="keyword">typename</span> G, <span class="keyword">typename</span> O, <span class="keyword">typename</span> S>
+<a name="l00299"></a><a class="code" href="group__simplify.html#gfac2ab8188c31cf7fab43e423884e0ed">00299</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G& geometry, O out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>& strategy)
+<a name="l00300"></a>00300 {
+<a name="l00301"></a>00301 <span class="keyword">typedef</span> dispatch::simplify<typename tag<G>::type, G> simplify_type;
+<a name="l00302"></a>00302 simplify_type::apply(geometry, out, max_distance, strategy);
+<a name="l00303"></a>00303 }
+<a name="l00304"></a>00304
+<a name="l00305"></a>00305 <span class="comment">// Model 2, where output is same type as input</span>
+<a name="l00306"></a>00306
+<a name="l00316"></a>00316 <span class="keyword">template</span><<span class="keyword">typename</span> G>
+<a name="l00317"></a><a class="code" href="group__simplify.html#g44130eb01685933927c05207a01a84f1">00317</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G& geometry, G& out, <span class="keywordtype">double</span> max_distance)
+<a name="l00318"></a>00318 {
+<a name="l00319"></a>00319 <span class="keyword">typedef</span> dispatch::simplify<typename tag<G>::type, G> simplify_type;
+<a name="l00320"></a>00320 simplify_type::apply(geometry, out, max_distance);
+<a name="l00321"></a>00321 }
+<a name="l00322"></a>00322
+<a name="l00333"></a>00333 <span class="keyword">template</span><<span class="keyword">typename</span> G, <span class="keyword">typename</span> S>
+<a name="l00334"></a><a class="code" href="group__simplify.html#g00b5a49a676c29d790764ad67e9fdfbc">00334</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__simplify.html#g188e72f668c33ac75ad08653625a7cbb" title="Simplify a geometry.">simplify</a>(<span class="keyword">const</span> G& geometry, G& out, <span class="keywordtype">double</span> max_distance, S <span class="keyword">const</span>& strategy)
+<a name="l00335"></a>00335 {
+<a name="l00336"></a>00336 <span class="keyword">typedef</span> dispatch::simplify<typename tag<G>::type, G> simplify_type;
+<a name="l00337"></a>00337 simplify_type::apply(geometry, out, max_distance, strategy);
+<a name="l00338"></a>00338 }
+<a name="l00339"></a>00339
+<a name="l00340"></a>00340 } <span class="comment">// namespace ggl</span>
+<a name="l00341"></a>00341
+<a name="l00342"></a>00342 <span class="preprocessor">#endif // GGL_ALGORITHMS_SIMPLIFY_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/transform.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G1 , typename G2 > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transform.html#g9ec9c2e79900a57ce292dc2026b7ead9">ggl::transform</a> (G1 const &geometry1, G2 &geometry2)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Transforms from one geometry to another geometry using a <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G1 , typename G2 , typename S > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500">ggl::transform</a> (G1 const &geometry1, G2 &geometry2, S const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Transforms from one geometry to another geometry using a <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2transform_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,301 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/transform.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_TRANSFORM_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_TRANSFORM_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <cmath></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <iterator></span>
+<a name="l00014"></a>00014
+<a name="l00015"></a>00015 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="clear_8hpp.html">ggl/algorithms/clear.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="core_2ring__type_8hpp.html">ggl/core/ring_type.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="segment_8hpp.html">ggl/geometries/segment.hpp</a>></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026
+<a name="l00061"></a>00061 <span class="keyword">namespace </span>ggl
+<a name="l00062"></a>00062 {
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a> {
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="keyword">template</span> <<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2>
+<a name="l00068"></a>00068 <span class="keyword">struct </span>transform_point
+<a name="l00069"></a>00069 {
+<a name="l00070"></a>00070 <span class="keyword">template</span> <<span class="keyword">typename</span> S>
+<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P1 <span class="keyword">const</span>& p1, P2& p2, S <span class="keyword">const</span>& strategy)
+<a name="l00072"></a>00072 {
+<a name="l00073"></a>00073 <span class="keywordflow">return</span> strategy(p1, p2);
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 };
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 <span class="keyword">template</span> <<span class="keyword">typename</span> B1, <span class="keyword">typename</span> B2>
+<a name="l00078"></a>00078 <span class="keyword">struct </span>transform_box
+<a name="l00079"></a>00079 {
+<a name="l00080"></a>00080 <span class="keyword">template</span> <<span class="keyword">typename</span> S>
+<a name="l00081"></a>00081 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(B1 <span class="keyword">const</span>& b1, B2& b2, S <span class="keyword">const</span>& strategy)
+<a name="l00082"></a>00082 {
+<a name="l00083"></a>00083 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<B1>::type point_type1;
+<a name="l00084"></a>00084 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<B2>::type point_type2;
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 point_type1 lower_left, upper_right;
+<a name="l00087"></a>00087 assign_box_corner<min_corner, min_corner>(b1, lower_left);
+<a name="l00088"></a>00088 assign_box_corner<max_corner, max_corner>(b1, upper_right);
+<a name="l00089"></a>00089
+<a name="l00090"></a>00090 point_type2 p1, p2;
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (strategy(lower_left, p1) && strategy(upper_right, p2))
+<a name="l00092"></a>00092 {
+<a name="l00093"></a>00093 <span class="comment">// Create a valid box and therefore swap if necessary</span>
+<a name="l00094"></a>00094 <span class="keyword">typedef</span> <span class="keyword">typename</span> coordinate_type<point_type2>::type coordinate_type;
+<a name="l00095"></a>00095 coordinate_type x1 = ggl::get<0>(p1)
+<a name="l00096"></a>00096 , y1 = ggl::get<1>(p1)
+<a name="l00097"></a>00097 , x2 = ggl::get<0>(p2)
+<a name="l00098"></a>00098 , y2 = ggl::get<1>(p2);
+<a name="l00099"></a>00099
+<a name="l00100"></a>00100 <span class="keywordflow">if</span> (x1 > x2) { std::swap(x1, x2); }
+<a name="l00101"></a>00101 <span class="keywordflow">if</span> (y1 > y2) { std::swap(y1, y2); }
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 set<min_corner, 0>(b2, x1);
+<a name="l00104"></a>00104 set<min_corner, 1>(b2, y1);
+<a name="l00105"></a>00105 set<max_corner, 0>(b2, x2);
+<a name="l00106"></a>00106 set<max_corner, 1>(b2, y2);
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00109"></a>00109 }
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 };
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> OutputIterator, <span class="keyword">typename</span> R, <span class="keyword">typename</span> S>
+<a name="l00115"></a>00115 <span class="keyword">inline</span> <span class="keywordtype">bool</span> transform_range_out(R <span class="keyword">const</span>& range, OutputIterator out, S <span class="keyword">const</span>& strategy)
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 P point_out;
+<a name="l00118"></a>00118 <span class="keywordflow">for</span>(<span class="keyword">typename</span> boost::range_const_iterator<R>::type it = boost::begin(range);
+<a name="l00119"></a>00119 it != boost::end(range); ++it)
+<a name="l00120"></a>00120 {
+<a name="l00121"></a>00121 <span class="keywordflow">if</span> (! transform_point<<span class="keyword">typename</span> point_type<R>::type, P>::apply(*it, point_out, strategy))
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00124"></a>00124 }
+<a name="l00125"></a>00125 *out = point_out;
+<a name="l00126"></a>00126 ++out;
+<a name="l00127"></a>00127 }
+<a name="l00128"></a>00128 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keyword">template</span> <<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2>
+<a name="l00132"></a>00132 <span class="keyword">struct </span>transform_polygon
+<a name="l00133"></a>00133 {
+<a name="l00134"></a>00134 <span class="keyword">template</span> <<span class="keyword">typename</span> S>
+<a name="l00135"></a>00135 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(<span class="keyword">const</span> P1& poly1, P2& poly2, S <span class="keyword">const</span>& strategy)
+<a name="l00136"></a>00136 {
+<a name="l00137"></a>00137 <span class="keyword">typedef</span> <span class="keyword">typename</span> interior_type<P1>::type interior1_type;
+<a name="l00138"></a>00138 <span class="keyword">typedef</span> <span class="keyword">typename</span> interior_type<P2>::type interior2_type;
+<a name="l00139"></a>00139 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type<P1>::type ring1_type;
+<a name="l00140"></a>00140 <span class="keyword">typedef</span> <span class="keyword">typename</span> ring_type<P2>::type ring2_type;
+<a name="l00141"></a>00141 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<P2>::type point2_type;
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 <a class="code" href="group__access.html#g280e2b0e4bada6eac7b7370a4ded705f" title="Clears a linestring, linear ring or polygon (exterior+interiors) or multi*.">ggl::clear</a>(poly2);
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keywordflow">if</span> (!transform_range_out<point2_type>(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly1),
+<a name="l00146"></a>00146 std::back_inserter(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly2)), strategy))
+<a name="l00147"></a>00147 {
+<a name="l00148"></a>00148 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly2).resize(boost::size(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly1)));
+<a name="l00152"></a>00152
+<a name="l00153"></a>00153 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator<interior1_type>::type iterator1_type;
+<a name="l00154"></a>00154 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_iterator<interior2_type>::type iterator2_type;
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 iterator1_type it1 = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly1));
+<a name="l00157"></a>00157 iterator2_type it2 = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly2));
+<a name="l00158"></a>00158 <span class="keywordflow">for</span> ( ; it1 != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly1)); ++it1, ++it2)
+<a name="l00159"></a>00159 {
+<a name="l00160"></a>00160 <span class="keywordflow">if</span> (!transform_range_out<point2_type>(*it1, std::back_inserter(*it2), strategy))
+<a name="l00161"></a>00161 {
+<a name="l00162"></a>00162 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00163"></a>00163 }
+<a name="l00164"></a>00164 }
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00167"></a>00167 }
+<a name="l00168"></a>00168 };
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170
+<a name="l00171"></a>00171 <span class="keyword">template</span> <<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2>
+<a name="l00172"></a>00172 <span class="keyword">struct </span>select_strategy
+<a name="l00173"></a>00173 {
+<a name="l00174"></a>00174 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_transform
+<a name="l00175"></a>00175 <
+<a name="l00176"></a>00176 <span class="keyword">typename</span> cs_tag<P1>::type,
+<a name="l00177"></a>00177 <span class="keyword">typename</span> cs_tag<P2>::type,
+<a name="l00178"></a>00178 <span class="keyword">typename</span> coordinate_system<P1>::type,
+<a name="l00179"></a>00179 <span class="keyword">typename</span> coordinate_system<P2>::type,
+<a name="l00180"></a>00180 <a class="code" href="classcore__dispatch_1_1dimension.html">dimension<P1>::type::value</a>,
+<a name="l00181"></a>00181 <a class="code" href="classcore__dispatch_1_1dimension.html">dimension<P2>::type::value</a>,
+<a name="l00182"></a>00182 <span class="keyword">typename</span> point_type<P1>::type,
+<a name="l00183"></a>00183 <span class="keyword">typename</span> point_type<P2>::type
+<a name="l00184"></a>00184 >::type type;
+<a name="l00185"></a>00185 };
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keyword">template</span> <<span class="keyword">typename</span> R1, <span class="keyword">typename</span> R2>
+<a name="l00188"></a>00188 <span class="keyword">struct </span>transform_range
+<a name="l00189"></a>00189 {
+<a name="l00190"></a>00190 <span class="keyword">template</span> <<span class="keyword">typename</span> S>
+<a name="l00191"></a>00191 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(R1 <span class="keyword">const</span>& range1, R2& range2, S <span class="keyword">const</span>& strategy)
+<a name="l00192"></a>00192 {
+<a name="l00193"></a>00193 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<R2>::type point_type;
+<a name="l00194"></a>00194
+<a name="l00195"></a>00195 <a class="code" href="group__access.html#g280e2b0e4bada6eac7b7370a4ded705f" title="Clears a linestring, linear ring or polygon (exterior+interiors) or multi*.">ggl::clear</a>(range2);
+<a name="l00196"></a>00196 <span class="keywordflow">return</span> transform_range_out<point_type>(range1, std::back_inserter(range2), strategy);
+<a name="l00197"></a>00197 }
+<a name="l00198"></a>00198 };
+<a name="l00199"></a>00199
+<a name="l00200"></a>00200 }} <span class="comment">// namespace detail::transform</span>
+<a name="l00201"></a>00201 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00202"></a>00202 <span class="preprocessor"></span>
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00205"></a>00205 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00206"></a>00206 {
+<a name="l00207"></a>00207
+<a name="l00208"></a>00208 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2, <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2>
+<a name="l00209"></a>00209 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a> {};
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="keyword">template</span> <<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2>
+<a name="l00212"></a>00212 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a><point_tag, point_tag, P1, P2>
+<a name="l00213"></a>00213 : detail::<a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>::transform_point<P1, P2>
+<a name="l00214"></a>00214 {
+<a name="l00215"></a>00215 };
+<a name="l00216"></a>00216
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 <span class="keyword">template</span> <<span class="keyword">typename</span> L1, <span class="keyword">typename</span> L2>
+<a name="l00219"></a>00219 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a><linestring_tag, linestring_tag, L1, L2>
+<a name="l00220"></a>00220 : detail::<a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>::transform_range<L1, L2>
+<a name="l00221"></a>00221 {
+<a name="l00222"></a>00222 };
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224 <span class="keyword">template</span> <<span class="keyword">typename</span> R1, <span class="keyword">typename</span> R2>
+<a name="l00225"></a>00225 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a><ring_tag, ring_tag, R1, R2>
+<a name="l00226"></a>00226 : detail::<a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>::transform_range<R1, R2>
+<a name="l00227"></a>00227 {
+<a name="l00228"></a>00228 };
+<a name="l00229"></a>00229
+<a name="l00230"></a>00230 <span class="keyword">template</span> <<span class="keyword">typename</span> P1, <span class="keyword">typename</span> P2>
+<a name="l00231"></a>00231 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a><polygon_tag, polygon_tag, P1, P2>
+<a name="l00232"></a>00232 : detail::<a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>::transform_polygon<P1, P2>
+<a name="l00233"></a>00233 {
+<a name="l00234"></a>00234 };
+<a name="l00235"></a>00235
+<a name="l00236"></a>00236 <span class="keyword">template</span> <<span class="keyword">typename</span> B1, <span class="keyword">typename</span> B2>
+<a name="l00237"></a>00237 <span class="keyword">struct </span><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a><box_tag, box_tag, B1, B2>
+<a name="l00238"></a>00238 : detail::<a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>::transform_box<B1, B2>
+<a name="l00239"></a>00239 {
+<a name="l00240"></a>00240 };
+<a name="l00241"></a>00241
+<a name="l00242"></a>00242
+<a name="l00243"></a>00243 } <span class="comment">// namespace dispatch</span>
+<a name="l00244"></a>00244 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00245"></a>00245 <span class="preprocessor"></span>
+<a name="l00246"></a>00246
+<a name="l00257"></a>00257 <span class="keyword">template</span> <<span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2, <span class="keyword">typename</span> S>
+<a name="l00258"></a><a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500">00258</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(G1 <span class="keyword">const</span>& geometry1, G2& geometry2, S <span class="keyword">const</span>& strategy)
+<a name="l00259"></a>00259 {
+<a name="l00260"></a>00260 <span class="keyword">typedef</span> <a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">dispatch::transform</a>
+<a name="l00261"></a>00261 <
+<a name="l00262"></a>00262 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G1>::type</a>,
+<a name="l00263"></a>00263 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G2>::type</a>,
+<a name="l00264"></a>00264 G1,
+<a name="l00265"></a>00265 G2
+<a name="l00266"></a>00266 > transform_type;
+<a name="l00267"></a>00267
+<a name="l00268"></a>00268 <span class="keywordflow">return</span> transform_type::apply(geometry1, geometry2, strategy);
+<a name="l00269"></a>00269 }
+<a name="l00270"></a>00270
+<a name="l00280"></a>00280 <span class="keyword">template</span> <<span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2>
+<a name="l00281"></a><a class="code" href="group__transform.html#g9ec9c2e79900a57ce292dc2026b7ead9">00281</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(G1 <span class="keyword">const</span>& geometry1, G2& geometry2)
+<a name="l00282"></a>00282 {
+<a name="l00283"></a>00283 <span class="keyword">typename</span> detail::transform::select_strategy<G1, G2>::type strategy;
+<a name="l00284"></a>00284 <span class="keywordflow">return</span> <a class="code" href="group__transform.html#ge33cee2442ebab063f9c987121cd3500" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(geometry1, geometry2, strategy);
+<a name="l00285"></a>00285 }
+<a name="l00286"></a>00286
+<a name="l00287"></a>00287 } <span class="comment">// namespace ggl</span>
+<a name="l00288"></a>00288
+<a name="l00289"></a>00289 <span class="preprocessor">#endif // GGL_ALGORITHMS_TRANSFORM_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>ggl/algorithms/within.hpp File Reference</h1>
+<p>
+Go to the source code of this file.<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceggl.html">ggl</a></td></tr>
+
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G1 , typename G2 , typename S > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__boolean__relations.html#g3051574eadb5ef8ae92ef210665a7332">ggl::within</a> (G1 const &geometry1, G2 const &geometry2, S const &strategy)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Within check using a <a class="el" href="namespaceggl_1_1strategy.html">strategy</a>. <br></td></tr>
+<tr><td class="memTemplParams" nowrap colspan="2">template<typename G1 , typename G2 > </td></tr>
+<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc">ggl::within</a> (G1 const &geometry1, G2 const &geometry2)</td></tr>
+
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Within check. <br></td></tr>
+</table>
+</div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp_source.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/algorithms_2within_8hpp_source.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,443 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src="images/proposed_boost.png" height="86" width="277">
+</td>
+</tr>
+</tbody>
+</table>
+<!-- Generated by Doxygen 1.5.9 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li>Main Page</li>
+ <li>Related Pages</li>
+ <li>Modules</li>
+ <li>Namespaces</li>
+ <li>Classes</li>
+ <li class="current">Files</li>
+ <li>Examples</li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li>File List</li>
+ <li>File Members</li>
+ </ul>
+ </div>
+<h1>ggl/algorithms/within.hpp</h1>Go to the documentation of this file.<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Generic Geometry Library</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">// Copyright Barend Gehrels 1995-2009, Geodan Holding B.V. Amsterdam, the Netherlands.</span>
+<a name="l00004"></a>00004 <span class="comment">// Copyright Bruno Lalande 2008, 2009</span>
+<a name="l00005"></a>00005 <span class="comment">// Use, modification and distribution is subject to the Boost Software License,</span>
+<a name="l00006"></a>00006 <span class="comment">// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span>
+<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
+<a name="l00008"></a>00008
+<a name="l00009"></a>00009 <span class="preprocessor">#ifndef GGL_ALGORITHMS_WITHIN_HPP</span>
+<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define GGL_ALGORITHMS_WITHIN_HPP</span>
+<a name="l00011"></a>00011 <span class="preprocessor"></span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include <boost/concept/requires.hpp></span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include <boost/range/functions.hpp></span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <boost/range/metafunctions.hpp></span>
+<a name="l00015"></a>00015
+<a name="l00016"></a>00016 <span class="preprocessor">#include <<a class="code" href="algorithms_2distance_8hpp.html">ggl/algorithms/distance.hpp</a>></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <<a class="code" href="make_8hpp.html">ggl/algorithms/make.hpp</a>></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <<a class="code" href="access_8hpp.html">ggl/core/access.hpp</a>></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include <<a class="code" href="exterior__ring_8hpp.html">ggl/core/exterior_ring.hpp</a>></span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include <<a class="code" href="interior__rings_8hpp.html">ggl/core/interior_rings.hpp</a>></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include <<a class="code" href="point__concept_8hpp.html">ggl/core/concepts/point_concept.hpp</a>></span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <<a class="code" href="nsphere__concept_8hpp.html">ggl/core/concepts/nsphere_concept.hpp</a>></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <<a class="code" href="cs_8hpp.html">ggl/core/cs.hpp</a>></span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include <<a class="code" href="strategies_8hpp.html">ggl/strategies/strategies.hpp</a>></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include <<a class="code" href="loop_8hpp.html">ggl/util/loop.hpp</a>></span>
+<a name="l00026"></a>00026
+<a name="l00027"></a>00027
+<a name="l00028"></a>00028
+<a name="l00029"></a>00029
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>ggl
+<a name="l00031"></a>00031 {
+<a name="l00032"></a>00032
+<a name="l00033"></a>00033 <span class="preprocessor">#ifndef DOXYGEN_NO_DETAIL</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="keyword">namespace </span>detail { <span class="keyword">namespace </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a> {
+<a name="l00035"></a>00035
+<a name="l00036"></a>00036
+<a name="l00037"></a>00037 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00038"></a>00038 <span class="comment">// Implementation for boxes. Supports boxes in 2 or 3 dimensions, in Euclidian system</span>
+<a name="l00039"></a>00039 <span class="comment">// Todo: implement as strategy</span>
+<a name="l00040"></a>00040 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00041"></a>00041 <span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keywordtype">size_t</span> D, <span class="keywordtype">size_t</span> N>
+<a name="l00042"></a>00042 <span class="keyword">struct </span>point_in_box
+<a name="l00043"></a>00043 {
+<a name="l00044"></a>00044 <span class="keyword">static</span> <span class="keywordtype">bool</span> inside(P <span class="keyword">const</span>& p, B <span class="keyword">const</span>& b)
+<a name="l00045"></a>00045 {
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (get<D>(p) <= get<min_corner, D>(b)
+<a name="l00047"></a>00047 || get<D>(p) >= get<max_corner, D>(b))
+<a name="l00048"></a>00048 {
+<a name="l00049"></a>00049 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keywordflow">return</span> point_in_box<P, B, D + 1, N>::inside(p, b);
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054 };
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 <span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> B, <span class="keywordtype">size_t</span> N>
+<a name="l00057"></a>00057 <span class="keyword">struct </span>point_in_box<P, B, N, N>
+<a name="l00058"></a>00058 {
+<a name="l00059"></a>00059 <span class="keyword">static</span> <span class="keywordtype">bool</span> inside(P <span class="keyword">const</span>& p, B <span class="keyword">const</span>& b)
+<a name="l00060"></a>00060 {
+<a name="l00061"></a>00061 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00062"></a>00062 }
+<a name="l00063"></a>00063 };
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00066"></a>00066 <span class="comment">// Box-in-box, for 2/3 dimensions</span>
+<a name="l00067"></a>00067 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00068"></a>00068 <span class="keyword">template</span> <<span class="keyword">typename</span> B1, <span class="keyword">typename</span> B2, <span class="keywordtype">size_t</span> D, <span class="keywordtype">size_t</span> N>
+<a name="l00069"></a>00069 <span class="keyword">struct </span>box_in_box
+<a name="l00070"></a>00070 {
+<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> inside(B1 <span class="keyword">const</span>& b1, B2 <span class="keyword">const</span>& b2)
+<a name="l00072"></a>00072 {
+<a name="l00073"></a>00073 <span class="keywordflow">if</span> (get<min_corner, D>(b1) <= get<min_corner, D>(b2)
+<a name="l00074"></a>00074 || get<max_corner, D>(b1) >= get<max_corner, D>(b2))
+<a name="l00075"></a>00075 {
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> box_in_box<B1, B2, D + 1, N>::inside(b1, b2);
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 };
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 <span class="keyword">template</span> <<span class="keyword">typename</span> B1, <span class="keyword">typename</span> B2, <span class="keywordtype">size_t</span> N>
+<a name="l00084"></a>00084 <span class="keyword">struct </span>box_in_box<B1, B2, N, N>
+<a name="l00085"></a>00085 {
+<a name="l00086"></a>00086 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> inside(B1 <span class="keyword">const</span>& b1, B2 <span class="keyword">const</span>& b2)
+<a name="l00087"></a>00087 {
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 };
+<a name="l00091"></a>00091
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00094"></a>00094 <span class="comment">// Implementation for n-spheres. Supports circles or spheres, in 2 or 3 dimensions, in Euclidian system</span>
+<a name="l00095"></a>00095 <span class="comment">// Circle center might be of other point-type as geometry</span>
+<a name="l00096"></a>00096 <span class="comment">// Todo: implement as strategy</span>
+<a name="l00097"></a>00097 <span class="comment">//-------------------------------------------------------------------------------------------------------</span>
+<a name="l00098"></a>00098 <span class="keyword">template</span><<span class="keyword">typename</span> P, <span class="keyword">typename</span> C>
+<a name="l00099"></a>00099 <span class="keyword">inline</span> <span class="keywordtype">bool</span> point_in_circle(P <span class="keyword">const</span>& p, C <span class="keyword">const</span>& c)
+<a name="l00100"></a>00100 {
+<a name="l00101"></a>00101 assert_dimension<C, 2>();
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<C>::type point_type;
+<a name="l00104"></a>00104 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_distance
+<a name="l00105"></a>00105 <
+<a name="l00106"></a>00106 <span class="keyword">typename</span> cs_tag<P>::type,
+<a name="l00107"></a>00107 <span class="keyword">typename</span> cs_tag<point_type>::type,
+<a name="l00108"></a>00108 P,
+<a name="l00109"></a>00109 point_type
+<a name="l00110"></a>00110 >::type strategy_type;
+<a name="l00111"></a>00111 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_type::return_type return_type;
+<a name="l00112"></a>00112
+<a name="l00113"></a>00113 P <span class="keyword">const</span> center = ggl::make<P>(get<0>(c), get<1>(c));
+<a name="l00114"></a>00114 strategy_type <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>;
+<a name="l00115"></a>00115 return_type <span class="keyword">const</span> r = <a class="code" href="group__distance.html#g22a618786d2601e9201896a8346c161b" title="Calculate distance between two geometries with a specified strategy.">distance</a>(p, center);
+<a name="l00116"></a>00116 return_type <span class="keyword">const</span> rad = make_distance_result<return_type>(get_radius<0>(c));
+<a name="l00117"></a>00117
+<a name="l00118"></a>00118 <span class="keywordflow">return</span> r < rad;
+<a name="l00119"></a>00119 }
+<a name="l00121"></a>00121 <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> C>
+<a name="l00122"></a>00122 <span class="keyword">inline</span> <span class="keywordtype">bool</span> point_in_circle(<span class="keyword">const</span> T& c1, <span class="keyword">const</span> T& c2, C <span class="keyword">const</span>& c)
+<a name="l00123"></a>00123 {
+<a name="l00124"></a>00124 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<C>::type point_type;
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 point_type p = ggl::make<point_type>(c1, c2);
+<a name="l00127"></a>00127 <span class="keywordflow">return</span> point_in_circle(p, c);
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129
+<a name="l00130"></a>00130 <span class="keyword">template</span><<span class="keyword">typename</span> B, <span class="keyword">typename</span> C>
+<a name="l00131"></a>00131 <span class="keyword">inline</span> <span class="keywordtype">bool</span> box_in_circle(B <span class="keyword">const</span>& b, C <span class="keyword">const</span>& c)
+<a name="l00132"></a>00132 {
+<a name="l00133"></a>00133 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<B>::type point_type;
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="comment">// Currently only implemented for 2d geometries</span>
+<a name="l00136"></a>00136 assert_dimension<point_type, 2>();
+<a name="l00137"></a>00137 assert_dimension<C, 2>();
+<a name="l00138"></a>00138
+<a name="l00139"></a>00139 <span class="comment">// Box: all four points must lie within circle</span>
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <span class="comment">// Check points lower-left and upper-right, then lower-right and upper-left</span>
+<a name="l00142"></a>00142 <span class="keywordflow">return</span> point_in_circle(get<min_corner, 0>(b), get<min_corner, 1>(b), c)
+<a name="l00143"></a>00143 && point_in_circle(get<max_corner, 0>(b), get<max_corner, 1>(b), c)
+<a name="l00144"></a>00144 && point_in_circle(get<min_corner, 0>(b), get<max_corner, 1>(b), c)
+<a name="l00145"></a>00145 && point_in_circle(get<max_corner, 0>(b), get<min_corner, 1>(b), c);
+<a name="l00146"></a>00146 }
+<a name="l00147"></a>00147
+<a name="l00148"></a>00148 <span class="comment">// Generic "range-in-circle", true if all points within circle</span>
+<a name="l00149"></a>00149 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> C>
+<a name="l00150"></a>00150 <span class="keyword">inline</span> <span class="keywordtype">bool</span> range_in_circle(R <span class="keyword">const</span>& range, C <span class="keyword">const</span>& c)
+<a name="l00151"></a>00151 {
+<a name="l00152"></a>00152 assert_dimension<R, 2>();
+<a name="l00153"></a>00153 assert_dimension<C, 2>();
+<a name="l00154"></a>00154
+<a name="l00155"></a>00155 <span class="keywordflow">for</span> (<span class="keyword">typename</span> boost::range_const_iterator<R>::type it = boost::begin(range);
+<a name="l00156"></a>00156 it != boost::end(range); ++it)
+<a name="l00157"></a>00157 {
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (! point_in_circle(*it, c))
+<a name="l00159"></a>00159 {
+<a name="l00160"></a>00160 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 <span class="keyword">template</span><<span class="keyword">typename</span> Y, <span class="keyword">typename</span> C>
+<a name="l00168"></a>00168 <span class="keyword">inline</span> <span class="keywordtype">bool</span> polygon_in_circle(Y <span class="keyword">const</span>& poly, C <span class="keyword">const</span>& c)
+<a name="l00169"></a>00169 {
+<a name="l00170"></a>00170 <span class="keywordflow">return</span> range_in_circle(<a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), c);
+<a name="l00171"></a>00171 }
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 <span class="keyword">template</span><<span class="keyword">typename</span> P, <span class="keyword">typename</span> R, <span class="keyword">typename</span> S>
+<a name="l00174"></a>00174 <span class="keyword">inline</span> <span class="keywordtype">bool</span> point_in_ring(P <span class="keyword">const</span>& p, R <span class="keyword">const</span>& r, S <span class="keyword">const</span>& strategy)
+<a name="l00175"></a>00175 {
+<a name="l00176"></a>00176 <span class="keywordflow">if</span> (boost::size(r) < 4)
+<a name="l00177"></a>00177 {
+<a name="l00178"></a>00178 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 <span class="keyword">typename</span> S::state_type state(p);
+<a name="l00182"></a>00182 <span class="keywordflow">if</span> (<a class="code" href="group__loop.html#g1ff95a74f261e15dfa714146bdcbf23f" title="Loops through segments of a container and call specified functor for all segments...">loop</a>(r, strategy, state))
+<a name="l00183"></a>00183 {
+<a name="l00184"></a>00184 <span class="keywordflow">return</span> state.within();
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00188"></a>00188 }
+<a name="l00189"></a>00189
+<a name="l00190"></a>00190 <span class="comment">// Polygon: in exterior ring, and if so, not within interior ring(s)</span>
+<a name="l00191"></a>00191 <span class="keyword">template</span><<span class="keyword">typename</span> P, <span class="keyword">typename</span> Y, <span class="keyword">typename</span> S>
+<a name="l00192"></a>00192 <span class="keyword">inline</span> <span class="keywordtype">bool</span> point_in_polygon(P <span class="keyword">const</span>& p, Y <span class="keyword">const</span>& poly, S <span class="keyword">const</span>& strategy)
+<a name="l00193"></a>00193 {
+<a name="l00194"></a>00194 <span class="keywordflow">if</span> (point_in_ring(p, <a class="code" href="group__access.html#gf92470d0612da7f0e118d296e7fcfe01" title="Function to get the exterior_ring ring of a polygon.">exterior_ring</a>(poly), strategy))
+<a name="l00195"></a>00195 {
+<a name="l00196"></a>00196 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_const_iterator
+<a name="l00197"></a>00197 <<span class="keyword">typename</span> interior_type<Y>::type>::type iterator_type;
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 <span class="keywordflow">for</span> (iterator_type it = boost::begin(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly));
+<a name="l00200"></a>00200 it != boost::end(<a class="code" href="group__access.html#gfb1abbb52eaeb5391c51fb6c209ab758" title="Function to get the interior rings of a polygon (non const version).">interior_rings</a>(poly)); ++it)
+<a name="l00201"></a>00201 {
+<a name="l00202"></a>00202 <span class="keywordflow">if</span> (point_in_ring(p, *it, strategy))
+<a name="l00203"></a>00203 {
+<a name="l00204"></a>00204 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 }
+<a name="l00207"></a>00207 <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00208"></a>00208 }
+<a name="l00209"></a>00209 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211
+<a name="l00212"></a>00212 }} <span class="comment">// namespace detail::within</span>
+<a name="l00213"></a>00213 <span class="preprocessor">#endif // DOXYGEN_NO_DETAIL</span>
+<a name="l00214"></a>00214 <span class="preprocessor"></span>
+<a name="l00215"></a>00215
+<a name="l00216"></a>00216 <span class="preprocessor">#ifndef DOXYGEN_NO_DISPATCH</span>
+<a name="l00217"></a>00217 <span class="preprocessor"></span><span class="keyword">namespace </span>dispatch
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219
+<a name="l00220"></a>00220 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag1, <span class="keyword">typename</span> Tag2, <span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2>
+<a name="l00221"></a>00221 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a> {};
+<a name="l00222"></a>00222
+<a name="l00223"></a>00223 <span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> B>
+<a name="l00224"></a>00224 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a><point_tag, box_tag, P, B>
+<a name="l00225"></a>00225 {
+<a name="l00226"></a>00226 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P <span class="keyword">const</span>& p, B <span class="keyword">const</span>& b)
+<a name="l00227"></a>00227 {
+<a name="l00228"></a>00228 assert_dimension_equal<P, B>();
+<a name="l00229"></a>00229
+<a name="l00230"></a>00230 <span class="keywordflow">return</span> detail::within::point_in_box
+<a name="l00231"></a>00231 <
+<a name="l00232"></a>00232 P,
+<a name="l00233"></a>00233 B,
+<a name="l00234"></a>00234 0,
+<a name="l00235"></a>00235 <a class="code" href="classcore__dispatch_1_1dimension.html">dimension<P>::type::value</a>
+<a name="l00236"></a>00236 >::inside(p, b);
+<a name="l00237"></a>00237 }
+<a name="l00238"></a>00238 };
+<a name="l00239"></a>00239
+<a name="l00240"></a>00240 <span class="keyword">template</span> <<span class="keyword">typename</span> B1, <span class="keyword">typename</span> B2>
+<a name="l00241"></a>00241 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a><box_tag, box_tag, B1, B2>
+<a name="l00242"></a>00242 {
+<a name="l00243"></a>00243 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(B1 <span class="keyword">const</span>& b1, B2 <span class="keyword">const</span>& b2)
+<a name="l00244"></a>00244 {
+<a name="l00245"></a>00245 assert_dimension_equal<B1, B2>();
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247 <span class="keywordflow">return</span> detail::within::box_in_box
+<a name="l00248"></a>00248 <
+<a name="l00249"></a>00249 B1,
+<a name="l00250"></a>00250 B2,
+<a name="l00251"></a>00251 0,
+<a name="l00252"></a>00252 <a class="code" href="classcore__dispatch_1_1dimension.html">dimension<B1>::type::value</a>
+<a name="l00253"></a>00253 >::inside(b1, b2);
+<a name="l00254"></a>00254 }
+<a name="l00255"></a>00255 };
+<a name="l00256"></a>00256
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> C>
+<a name="l00259"></a>00259 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a><point_tag, nsphere_tag, P, C>
+<a name="l00260"></a>00260 {
+<a name="l00261"></a>00261 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P <span class="keyword">const</span>& p, C <span class="keyword">const</span>& c)
+<a name="l00262"></a>00262 {
+<a name="l00263"></a>00263 <span class="keywordflow">return</span> detail::within::point_in_circle(p, c);
+<a name="l00264"></a>00264 }
+<a name="l00265"></a>00265 };
+<a name="l00266"></a>00266
+<a name="l00267"></a>00267 <span class="keyword">template</span> <<span class="keyword">typename</span> B, <span class="keyword">typename</span> C>
+<a name="l00268"></a>00268 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a><box_tag, nsphere_tag, B, C>
+<a name="l00269"></a>00269 {
+<a name="l00270"></a>00270 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(B <span class="keyword">const</span>& b, C <span class="keyword">const</span>& c)
+<a name="l00271"></a>00271 {
+<a name="l00272"></a>00272 <span class="keywordflow">return</span> detail::within::box_in_circle(b, c);
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274 };
+<a name="l00275"></a>00275
+<a name="l00276"></a>00276 <span class="keyword">template</span> <<span class="keyword">typename</span> R, <span class="keyword">typename</span> C>
+<a name="l00277"></a>00277 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a><linestring_tag, nsphere_tag, R, C>
+<a name="l00278"></a>00278 {
+<a name="l00279"></a>00279 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(R <span class="keyword">const</span>& ln, C <span class="keyword">const</span>& c)
+<a name="l00280"></a>00280 {
+<a name="l00281"></a>00281 <span class="keywordflow">return</span> detail::within::range_in_circle(ln, c);
+<a name="l00282"></a>00282 }
+<a name="l00283"></a>00283 };
+<a name="l00284"></a>00284
+<a name="l00285"></a>00285 <span class="keyword">template</span> <<span class="keyword">typename</span> R, <span class="keyword">typename</span> C>
+<a name="l00286"></a>00286 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a><ring_tag, nsphere_tag, R, C>
+<a name="l00287"></a>00287 {
+<a name="l00288"></a>00288 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(R <span class="keyword">const</span>& r, C <span class="keyword">const</span>& c)
+<a name="l00289"></a>00289 {
+<a name="l00290"></a>00290 <span class="keywordflow">return</span> detail::within::range_in_circle(r, c);
+<a name="l00291"></a>00291 }
+<a name="l00292"></a>00292 };
+<a name="l00293"></a>00293
+<a name="l00294"></a>00294 <span class="keyword">template</span> <<span class="keyword">typename</span> Y, <span class="keyword">typename</span> C>
+<a name="l00295"></a>00295 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a><polygon_tag, nsphere_tag, Y, C>
+<a name="l00296"></a>00296 {
+<a name="l00297"></a>00297 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(Y <span class="keyword">const</span>& poly, C <span class="keyword">const</span>& c)
+<a name="l00298"></a>00298 {
+<a name="l00299"></a>00299 <span class="keywordflow">return</span> detail::within::polygon_in_circle(poly, c);
+<a name="l00300"></a>00300 }
+<a name="l00301"></a>00301 };
+<a name="l00302"></a>00302
+<a name="l00303"></a>00303 <span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> R>
+<a name="l00304"></a>00304 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a><point_tag, ring_tag, P, R>
+<a name="l00305"></a>00305 {
+<a name="l00306"></a>00306 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P <span class="keyword">const</span>& p, R <span class="keyword">const</span>& r)
+<a name="l00307"></a>00307 {
+<a name="l00308"></a>00308 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::range_value<R>::type point_type;
+<a name="l00309"></a>00309 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_within
+<a name="l00310"></a>00310 <
+<a name="l00311"></a>00311 <span class="keyword">typename</span> cs_tag<P>::type,
+<a name="l00312"></a>00312 <span class="keyword">typename</span> cs_tag<point_type>::type,
+<a name="l00313"></a>00313 P,
+<a name="l00314"></a>00314 point_type
+<a name="l00315"></a>00315 >::type strategy_type;
+<a name="l00316"></a>00316
+<a name="l00317"></a>00317 <span class="keywordflow">return</span> detail::within::point_in_ring(p, r, strategy_type());
+<a name="l00318"></a>00318 }
+<a name="l00319"></a>00319 };
+<a name="l00320"></a>00320
+<a name="l00321"></a>00321 <span class="keyword">template</span> <<span class="keyword">typename</span> P, <span class="keyword">typename</span> Y>
+<a name="l00322"></a>00322 <span class="keyword">struct </span><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a><point_tag, polygon_tag, P, Y>
+<a name="l00323"></a>00323 {
+<a name="l00324"></a>00324 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P <span class="keyword">const</span>& point, Y <span class="keyword">const</span>& poly)
+<a name="l00325"></a>00325 {
+<a name="l00326"></a>00326 <span class="keyword">typedef</span> <span class="keyword">typename</span> point_type<Y>::type point_type;
+<a name="l00327"></a>00327 <span class="keyword">typedef</span> <span class="keyword">typename</span> strategy_within
+<a name="l00328"></a>00328 <
+<a name="l00329"></a>00329 <span class="keyword">typename</span> cs_tag<P>::type,
+<a name="l00330"></a>00330 <span class="keyword">typename</span> cs_tag<point_type>::type,
+<a name="l00331"></a>00331 P,
+<a name="l00332"></a>00332 point_type
+<a name="l00333"></a>00333 >::type strategy_type;
+<a name="l00334"></a>00334
+<a name="l00335"></a>00335 <span class="keywordflow">return</span> detail::within::point_in_polygon(point, poly, strategy_type());
+<a name="l00336"></a>00336 }
+<a name="l00337"></a>00337
+<a name="l00338"></a>00338 <span class="keyword">template</span><<span class="keyword">typename</span> S>
+<a name="l00339"></a>00339 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> apply(P <span class="keyword">const</span>& point, Y <span class="keyword">const</span>& poly, S <span class="keyword">const</span>& strategy)
+<a name="l00340"></a>00340 {
+<a name="l00341"></a>00341 <span class="keywordflow">return</span> detail::within::point_in_polygon(point, poly, strategy);
+<a name="l00342"></a>00342 }
+<a name="l00343"></a>00343 };
+<a name="l00344"></a>00344
+<a name="l00345"></a>00345 } <span class="comment">// namespace dispatch</span>
+<a name="l00346"></a>00346 <span class="preprocessor">#endif // DOXYGEN_NO_DISPATCH</span>
+<a name="l00347"></a>00347 <span class="preprocessor"></span>
+<a name="l00348"></a>00348
+<a name="l00376"></a>00376 <span class="keyword">template</span><<span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2>
+<a name="l00377"></a><a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc">00377</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>(G1 <span class="keyword">const</span>& geometry1, G2 <span class="keyword">const</span>& geometry2)
+<a name="l00378"></a>00378 {
+<a name="l00379"></a>00379 <span class="keyword">typedef</span> <a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">dispatch::within</a>
+<a name="l00380"></a>00380 <
+<a name="l00381"></a>00381 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G1>::type</a>,
+<a name="l00382"></a>00382 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G2>::type</a>,
+<a name="l00383"></a>00383 G1,
+<a name="l00384"></a>00384 G2
+<a name="l00385"></a>00385 > within_type;
+<a name="l00386"></a>00386
+<a name="l00387"></a>00387 <span class="keywordflow">return</span> within_type::apply(geometry1, geometry2);
+<a name="l00388"></a>00388 }
+<a name="l00389"></a>00389
+<a name="l00398"></a>00398 <span class="keyword">template</span><<span class="keyword">typename</span> G1, <span class="keyword">typename</span> G2, <span class="keyword">typename</span> S>
+<a name="l00399"></a><a class="code" href="group__boolean__relations.html#g3051574eadb5ef8ae92ef210665a7332">00399</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">within</a>(G1 <span class="keyword">const</span>& geometry1, G2 <span class="keyword">const</span>& geometry2, S <span class="keyword">const</span>& strategy)
+<a name="l00400"></a>00400 {
+<a name="l00401"></a>00401 <span class="keyword">typedef</span> <a class="code" href="group__boolean__relations.html#g95d6465a12b762c77df41369a039f6dc" title="Within check.">dispatch::within</a>
+<a name="l00402"></a>00402 <
+<a name="l00403"></a>00403 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G1>::type</a>,
+<a name="l00404"></a>00404 <span class="keyword">typename</span> <a class="code" href="structggl_1_1geometry__not__recognized__tag.html" title="&quot;default&quot; tag">tag<G2>::type</a>,
+<a name="l00405"></a>00405 G1,
+<a name="l00406"></a>00406 G2
+<a name="l00407"></a>00407 > within_type;
+<a name="l00408"></a>00408
+<a name="l00409"></a>00409 <span class="keywordflow">return</span> within_type::apply(geometry1, geometry2, strategy);
+<a name="l00410"></a>00410 }
+<a name="l00411"></a>00411
+<a name="l00412"></a>00412 } <span class="comment">// namespace ggl</span>
+<a name="l00413"></a>00413
+<a name="l00414"></a>00414 <span class="preprocessor">#endif // GGL_ALGORITHMS_WITHIN_HPP</span>
+</pre></div></div>
+<hr size="1">
+<table width="100%">
+<tbody>
+<tr>
+<td align="left"><small>
+<p>October 13, 2009</p>
+</small></td>
+<td align="right">
+<small>Copyright © 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
+Copyright © 2008-2009 Bruno Lalande, Paris<br>
+Copyright © 2009 Mateusz Loskot, Cadcorp, London<br>
+</small>
+</td>
+</tr>
+</tbody>
+</table>
+
+<address style="text-align: right;"><small>
+Documentation is generated by Doxygen
+</small></address>
+</body>
+</html>
Added: sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/annotated.html
==============================================================================
--- (empty file)
+++ sandbox/ggl/formal_review_request/libs/ggl/doc/doxygen_output/html/annotated.html 2009-10-13 12:17:58 EDT (Tue, 13 Oct 2009)
@@ -0,0 +1,243 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic Geometry Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head>
+<body style="background-image: url(images/draft.png);">
+
+<table cellpadding="2" width="100%">
+<tbody>
+<tr>
+<td valign="top">
+<img alt="GGL" src="images/ggl-logo-big.png" height="80" width="200">
+
+</td>
+<td valign="top" align="right">
+<img alt="Boost C++ Libraries" src=