The following is the declaration of the connectivity extraction algorithm.
Index: doc/gtl_connectivity_extraction_45.htm ===================================================================  doc/gtl_connectivity_extraction_45.htm (revision 55867) +++ doc/gtl_connectivity_extraction_45.htm (working copy) @@ 69,7 +69,7 @@ an edge exists in the graph. It is required that such vector preallocate sufficient elements to store the graph generated by the algorithm, because only the operator[] is used internally to access the graph The other supported graph format is std::map<std::set<int> > which is slightly easier to +supported graph format is std::map<int, std::set<int> > which is slightly easier to work with, but potentially more expensive. Improving the interface to support more generic graph concepts is deferred to future work.
The following is the declaration of the connectivity extraction algorithm.
Index: doc/gtl_connectivity_extraction_90.htm ===================================================================  doc/gtl_connectivity_extraction_90.htm (revision 55867) +++ doc/gtl_connectivity_extraction_90.htm (working copy) @@ 69,7 +69,7 @@ an edge exists in the graph. It is required that such vector preallocate sufficient elements to store the graph generated by the algorithm, because only the operator[] is used internally to access the graph The other supported graph format is std::map<std::set<int> > which is slightly easier to +supported graph format is std::map<int, std::set<int> > which is slightly easier to work with, but potentially more expensive. Improving the interface to support more generic graph concepts is deferred to future work.
The following is the declaration of the connectivity extraction algorithm.
Index: doc/gtl_coordinate_concept.htm
===================================================================
 doc/gtl_coordinate_concept.htm (revision 55867)
+++ doc/gtl_coordinate_concept.htm (working copy)
@@ 86,14 +86,14 @@
typedef long long coordinate_difference;
typedef long double coordinate_distance;
};
By making use the the coordinate traits of int the library is able to avoid +By making use of the coordinate traits of int the library is able to avoid overflow and handle the normal issues encountered when programming integer geometry. For the out of the ordinary issues there is a special metafunction that provides the library with a numerical type suitable for exact numerical calculations. It defaults to the highest precision data type available in most compilers, long double, but can be overridden by specializing for a particular coordinate type. Use of gmp multiprecision rational or similar data type is reccomended for numerically robust calculations in the +similar data type is recommended for numerically robust calculations in the general polygon algorithms.
template <typename T>
struct high_precision_type {
Index: doc/gtl_design_overview.htm
===================================================================
 doc/gtl_design_overview.htm (revision 55867)
+++ doc/gtl_design_overview.htm (working copy)
@@ 123,7 +123,7 @@
specializing the geometry_concept metafunction. Once mapped and
registered, a user data type can be used interchangeably with library data types
in the generic free functions that are overloaded on concept.
Traits for mapping a data type to a concept a broken down into mutable and read only +mapping a data type to a concept are broken down into mutable and read only traits. Read only traits are specialized internally to work with any types that are refinements of a concept. The mutable traits are defined only for objects that exactly model the concept. Both read only traits and mutable Index: doc/gtl_interval_concept.htm ===================================================================  doc/gtl_interval_concept.htm (revision 55867) +++ doc/gtl_interval_concept.htm (working copy) @@ 434,7 +434,7 @@ interval_data(const  interval_data* that) + interval_data& that) Copy construct Index: doc/gtl_isotropy.htm ===================================================================  doc/gtl_isotropy.htm (revision 55867) +++ doc/gtl_isotropy.htm (working copy) @@ 180,7 +180,7 @@ unsigned int to_int() const Convert to the integer enum value of current state to use as index.  Autocast to int is disallows for type safety reasons. + Autocast to int is disallowed for type safety reasons. @@ 243,7 +243,7 @@ unsigned int to_int() const Convert to the integer enum value of current state to use as index.  Autocast to int is disallows for type safety reasons + Autocast to int is disallowed for type safety reasons @@ 303,7 +303,7 @@ unsigned int to_int() const Convert to the integer enum value of current state to use as index.  Autocast to int is disallows for type safety reasons. + Autocast to int is disallowed for type safety reasons. @@ 408,7 +408,7 @@ unsigned int to_int() const Convert to the integer enum value of current state to use as index.  Autocast to int is disallows for type safety reasons + Autocast to int is disallowed for type safety reasons @@ 420,7 +420,7 @@

The direction_3d data type has four possible states. These +
The direction_3d data type has six possible states. These are the cardinal directions of the 3D Cartesian coordinate system. These states can be described by one of the direction_2d_enum values or the direction_3d_enum values:
@@ 467,7 +467,7 @@ unsigned int to_int() const Convert to the integer enum value of current state to use as index.  Autocast to int is disallows for type safety reasons. + Autocast to int is disallowed for type safety reasons. Index: doc/gtl_point_concept.htm ===================================================================  doc/gtl_point_concept.htm (revision 55867) +++ doc/gtl_point_concept.htm (working copy) @@ 69,7 +69,7 @@ point concept.
template <>
struct geometry_concept<CPoint> { typedef point_concept type; };
The semantic of an point is that it has an x and y
+The semantic of a point is that it has an x and y
coordinate. A std::pair<int, int>, boost::tuple<int, int> or boost::array<int, 2>
could all be made models of point by simply providing indirect access to their
elements through traits, however, these objects cannot be made a model of both
@@ 243,7 +243,7 @@
template <typename T1, typename
T2>
 coordinate_distance manhattan_distance(const T1&,
+ coordinate_difference manhattan_distance(const T1&,
const T2&)
Returns the distance in x plus the distance in y from an object that
@@ 252,7 +252,7 @@
template <typename T1, typename
T2>
 coordinate_distance distance_squared(const T1&,
+ coordinate_difference distance_squared(const T1&,
const T2&)
Returns the square of the distance in x plus the square of the
Index: doc/gtl_polygon_45_concept.htm
===================================================================
 doc/gtl_polygon_45_concept.htm (revision 55867)
+++ doc/gtl_polygon_45_concept.htm (working copy)
@@ 267,7 +267,7 @@
The library provides a model of polygon 45 concept declared template<typename T> poolygon_45_data where T is the coordinate type.
+template<typename T> polygon_45_data where T is the coordinate type.This data type is used internally when a 45degree polygon is needed and is available to the library user who finds it convenient to use a library polygon data type instead of providing their own. The data type is implemented to @@ 292,12 +292,12 @@ polygon_45_data(const  poolygon_45_data* that) + polygon_45_data& that) Copy construct polygon_45_data& operator=(const  poolygon_45_data& that) + polygon_45_data& that) Assignment operator. Index: doc/gtl_polygon_45_set_concept.htm ===================================================================  doc/gtl_polygon_45_set_concept.htm (revision 55867) +++ doc/gtl_polygon_45_set_concept.htm (working copy) @@ 61,7 +61,7 @@

The polygon 45 set concept tag is +
The polygon_45_set concept tag is polygon_45_set_concept
The semantic of a polygon_45_set is zero or more @@ 76,7 +76,7 @@ 45degree angles and is Manhattan a runtime check will default to the Manhattan algorithm. The results of which are identical to what the 45degree algorithm would do, but obtained more efficiently.
The motivation for providing the polygon 45 set is
+The motivation for providing the polygon_45_set is
to extend the special case of Manhattan geometry capability of the library to
encompass the slightly less common, but still important special case of geometry
that is described by angles that are multiples of 45degress with respect to the
@@ 304,20 +304,20 @@
template <typename T1, typename
T2>
T1& interact(T1& a, const T2& b)
 Given an object that models polygon 45 set and an object that models
 polygon 45 set or one of its refinements, modifies a to retain only
+ Given an object that models polygon_45_set and an object that models
+ polygon_45_set or one of its refinements, modifies a to retain only
regions that overlap or touch regions in b.
template <typename T>
T& self_intersect(T& polygon_set)
 Given an object that models polygon 45 set that has self overlapping
+ Given an object that models polygon_45_set that has self overlapping
regions, modifies the argument to contain only the regions of overlap.
template <typename T>
T& self_xor(T& polygon_set)
 Given an object that models polygon 45 set that has self overlapping
+ Given an object that models polygon_45_set that has self overlapping
regions, modifies the argument to contain only the regions that do not
overlap.
Index: doc/gtl_polygon_45_with_holes_concept.htm
===================================================================
 doc/gtl_polygon_45_with_holes_concept.htm (revision 55867)
+++ doc/gtl_polygon_45_with_holes_concept.htm (working copy)
@@ 61,7 +61,7 @@

The polygon_45 concept tag is +
The polygon_45_with_holes concept tag is polygon_45_with_holes_concept
To register a user defined type as a model of @@ 278,7 +278,7 @@
The library provides a model of polygon 45 with holes concept declared template<typename T> poolygon_45_with_holes_data where T is the +template<typename T> polygon_45_with_holes_data where T is the coordinate type.
This data type is used internally when a 45 degree polygon with holes is
needed and is available to the library user who finds it convenient to use a
@@ 309,12 +309,12 @@
polygon_45_with_holes_data(const
 poolygon_45_with_holes_data* that)
+ polygon_45_with_holes_data& that)
Copy construct
 poolygon_45_with_holes_data&

operator=(const poolygon_45_with_holes_data& that)
+ polygon_45_with_holes_data&
+
operator=(const polygon_45_with_holes_data& that)
Assignment operator.
Index: doc/gtl_polygon_90_concept.htm
===================================================================
 doc/gtl_polygon_90_concept.htm (revision 55867)
+++ doc/gtl_polygon_90_concept.htm (working copy)
@@ 128,14 +128,14 @@
+ compact_iterator_type begin_compact(const T& polygon)
+ compact_iterator_type end_compact(const T& polygon)
@@ 275,7 +275,7 @@
The library provides a model of polygon 90 concept declared template<typename T> poolygon_90_data where T is the coordinate type.
+template<typename T> polygon_90_data where T is the coordinate type.This data type is used internally when a Manhattan polygon is needed and is available to the library user who finds it convenient to use a library polygon data type instead of providing their own. The data type is implemented to @@ 307,12 +307,12 @@
+ polygon_90_data& that) + polygon_90_data& that) Index: doc/gtl_polygon_90_set_concept.htm ===================================================================  doc/gtl_polygon_90_set_concept.htm (revision 55867) +++ doc/gtl_polygon_90_set_concept.htm (working copy) @@ 61,10 +61,10 @@
The polygon 90 set concept tag is +
The polygon_90_set concept tag is polygon_90_set_concept
The semantic of a polygon 90 set is zero or more +The semantic of a polygon_90_set is zero or more Manhattan geometry regions.
The motivation for providing the polygon_90_set_concept is that it is a very common special case of planar @@ 79,7 +79,7 @@ rectangle_concept are automatically models of polygon_90_set_concept.
The return type of some operators is the polygon_90_set_view operator template type. This type is itself a model of the polygon 90 set +operator template type. This type is itself a model of the polygon_90_set concept, but furthermore can be used as an argument to the polygon_90_set_data constructor and assignment operator. The operator template exists to eliminate temp copies of intermediate results when Boolean operators are chained @@ 279,20 +279,20 @@
   Index: doc/gtl_polygon_90_with_holes_concept.htm ===================================================================  doc/gtl_polygon_90_with_holes_concept.htm (revision 55867) +++ doc/gtl_polygon_90_with_holes_concept.htm (working copy) @@ 61,7 +61,7 @@
The polygon_90 concept tag is +
The polygon_90_with_holes concept tag is polygon_90_with_holes_concept
To register a user defined type as a model of @@ 119,14 +119,14 @@
template <typename T>  iterator_type begin_compact(const T& polygon) 
Expects a model of polygon_90. Returns the begin iterator over the range of coordinates that correspond to horizontal and vertical edges.  
template <typename T>  iterator_type end_compact(const T& polygon) 
Expects a model of polygon_90. Returns the end iterator over the range of coordinates that correspond to horizontal and vertical edges.  
polygon_90_data(const  poolygon_90_data* that)  Copy construct  
polygon_90_data& operator=(const  poolygon_90_data& that)  Assignment operator.  
template <typename T1, typename
T2> T1& interact(T1& a, const T2& b)  Given an object that models polygon 90 set and an object that models  polygon 90 set or one of its refinements, modifies a to retain only +  Given an object that models polygon_90_set and an object that models + polygon_90_set or one of its refinements, modifies a to retain only regions that overlap or touch regions in b. 
template <typename T> T& self_intersect(T& polygon_set)  Given an object that models polygon 90 set that has self overlapping +  Given an object that models polygon_90_set that has self overlapping regions, modifies the argument to contain only the regions of overlap. 
template <typename T> T& self_xor(T& polygon_set)  Given an object that models polygon 90 set that has self overlapping +  Given an object that models polygon_90_set that has self overlapping regions, modifies the argument to contain only the regions that do not overlap. 
The library provides a model of polygon 90 with holes concept declared template<typename T> poolygon_90_with_holes_data where T is the +template<typename T> polygon_90_with_holes_data where T is the coordinate type.
This data type is used internally when a Manhattan polygon with holes is needed and is available to the library user who finds it convenient to use a @@ 338,12 +338,12 @@
+ polygon_90_with_holes_data& that)  + Index: doc/gtl_polygon_concept.htm ===================================================================  doc/gtl_polygon_concept.htm (revision 55867) +++ doc/gtl_polygon_concept.htm (working copy) @@ 269,7 +269,7 @@
The library provides a model of polygon concept declared template<typename T> poolygon_data where T is the coordinate type.
+template<typename T> polygon_data where T is the coordinate type.This data type is used internally when a polygon is needed and is available to the library user who finds it convenient to use a library polygon data type instead of providing their own. The data type is implemented to be @@ 297,12 +297,12 @@
+ polygon_data& that) + polygon_data& that) Index: doc/gtl_polygon_set_concept.htm ===================================================================  doc/gtl_polygon_set_concept.htm (revision 55867) +++ doc/gtl_polygon_set_concept.htm (working copy) @@ 61,7 +61,7 @@
The polygon set concept tag is +
The polygon_set concept tag is polygon_set_concept
The semantic of a polygon_set is zero or more Index: doc/gtl_polygon_with_holes_concept.htm ===================================================================  doc/gtl_polygon_with_holes_concept.htm (revision 55867) +++ doc/gtl_polygon_with_holes_concept.htm (working copy) @@ 61,7 +61,7 @@

The polygon concept tag is +
The polygon_with_holes concept tag is polygon_with_holes_concept
To register a user defined type as a model of @@ 275,7 +275,7 @@
The library provides a model of polygon with holes concept declared template<typename T> poolygon_with_holes_data where T is the +template<typename T> polygon_with_holes_data where T is the coordinate type.
This data type is used internally when a polygon with holes is needed and is available to the library user who finds it convenient to use a @@ 306,12 +306,12 @@
+ polygon_with_holes_data& that)  + Index: doc/gtl_rectangle_concept.htm ===================================================================  doc/gtl_rectangle_concept.htm (revision 55867) +++ doc/gtl_rectangle_concept.htm (working copy) @@ 119,7 +119,7 @@template <typename T>  iterator_type begin_compact(const T& polygon)  Expects a model of polygon_90. Returns the begin iterator over the range of coordinates that correspond to horizontal and vertical edges.  
template <typename T>  iterator_type end_compact(const T& polygon)  Expects a model of polygon_90. Returns the end iterator over the range of coordinates that correspond to horizontal and vertical edges.  
polygon_90_with_holes_data(const  poolygon_90_with_holes_data* that)  Copy construct  
poolygon_90_with_holes_data&
 operator=(const poolygon_90_with_holes_data& that)  polygon_90_with_holes_data&
+ operator=(const polygon_90_with_holes_data& that) 
Assignment operator. 
polygon_data(const  poolygon_data* that)  Copy construct  
polygon_data& operator=(const  poolygon_data& that)  Assignment operator.  
polygon_with_holes_data(const  poolygon_with_holes_data* that)  Copy construct  
poolygon_with_holes_data&
 operator=(const poolygon_with_holes_data& that)  polygon_with_holes_data&
+ operator=(const polygon_with_holes_data& that) 
Assignment operator. 
template <typename T>  interval_type get(const T& rectangle, orientatin_2d) 
Expects a model of rectangle.
Returns the x interval or y interval of the rectangle, depending on the
orientation_2d value. @@ 135,7 +135,7 @@  
template <typename T>  interval_type get(const T& rectangle, orientatin_2d, + interval_type get(const T& rectangle, orientation_2d, direction_1d) 
Expects a model of rectangle. Returns the coordinate specificed by the direction_1d value of the x interval or y interval of the rectangle, depending on the @@ 551,7 +551,7 @@ bool consider_touch = true)  Sets rectangle a to the intersection of rectangle a and interval b  along the orinetation_2d + along the orientation_2d and returns true. If the does not intersect the interval, the rectangle is unchanged and the function returns false. If the flag consider_touch is true intervals that abut are considered to intersect. 
rectangle_data(const  rectangle_data* that)  Copy construct  