[/============================================================================
  Boost.Geometry (aka GGL, Generic Geometry Library)

  Copyright (c) 2009-2012 Barend Gehrels, Geodan, Amsterdam, the Netherlands.
  Copyright (c) 2009-2012 Mateusz Loskot (mateusz@loskot.net)
  Copyright (c) 2009-2012 Mateusz Lalande, Paris, France.

  Use, modification and distribution is subject to the Boost Software License,
  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]

[section:release_notes Release Notes]


[/=================]
[heading Boost 1.53]
[/=================]

[*Bugfixes]

* avoid generating output polygons with interior rings below minimum size (e.g. one or two points)
* `geometry::disjoint` for degenerate segments (patched by Karsten Ahnert)
* problem in `geometry::difference` for missing handling tangency, reported by H2
* fixed `geometry::for_each` for use with Lambda's
* fixed `geometry::comparable_distance` point-linestring (and -range, -polygon)

[*Additional functionality]

* combinations for `geometry::disjoint`: point/ring, point/polygon, point/multi_polygon
* combinations for `geometry::intersects`: point/ring, point/polygon, point/multi_polygon

[*Internal changes]

* updates in specializations/not_implemented for various algorithms (as in an earlier version, these changes are still going on; they take care for simplified structs, better error reporting, and automatized documentation)
* fixes in unit tests

[/=================]
[heading Boost 1.51]
[/=================]

[*Breaking changes]

* points accessed through a pointer (e.g. in a linestring) should now be specialized without the pointer. In previous versions a type `my_point` used like `linestring<my_point*>` had to be specalized like: `template<> struct tag<my_point*>`. Now the library itself removes the pointer before calling the traits class, so now it should be like: `template<> struct tag<my_point>`

[*Bugfixes]

* intersection was sometimes wrong for integer points, fixed
* documentation, order of parameters in simplify was wrong, fixed

[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/7030 7030] spherical distance, fixed (by patch of Karsten Ahnert)


[/=================]
[heading Boost 1.50]
[/=================]

[*Bugfixes]

* the return type of comparable projected point strategy for integer points was wrong (integer), fixed
* several robustness issues in intersection of segments and polygons, fixed
* invalid intersection output is filtered out
* disjoint for multi_polygon's might incorrectly return true, fixed

[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/6585 6585] patch for alternative syntax multipoint, applied
* [@https://svn.boost.org/trac/boost/ticket/6584 6584] patch for bug in distance, applied
* [@https://svn.boost.org/trac/boost/ticket/5730 5730] same issue as 6584, fixed
* [@https://svn.boost.org/trac/boost/ticket/6166 6166] patch for missing transformation, applied
* [@https://svn.boost.org/trac/boost/ticket/6696 6696] invalid intersection output, was (by chance) already fixed in Trunk before reported

[*Additional functionality]

* added algorithm "touches" (OGC SF compliant) for *polygon/*polygon

[/=================]
[heading Boost 1.49]
[/=================]

[*Breaking changes]

* point_xy was accidentally included in one of the headerfiles. If the point_xy class is used, it should be included explicitly now.

[*Bugfixes]

* bugfix: distance for multi-geometries ignored specified distance strategy. Fixed
* bugfix: difference for polygon/multi_polygon (reported 2011/10/24 on GGL-list)
* bugfix: raise exception for calculation of distances of multi-geometrie(s) where one of them is empty
* bugfix: multi DSV did not correctly use settings, fixed
* bugfix: self-intersections could sometimes be missed (introduced in 1.48), fixed
* bugfix: convex hull crashed on empty range (e.g. empty multi point), fixed
* bugfix: area/centroid/side/intersection/distance did not work for "int" type filled with large (but not overflowing) integers. Fixed.
* bugfix: disjoint/intersect did not work for degenerate linestrings. Fixed.
* bugfix: covered_by did not compile for a ring. Fixed.

[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/6019 6019] convex_hull / area, fixed.
* [@https://svn.boost.org/trac/boost/ticket/6021 6021] convex_hull / append (multipoint), fixed.
* [@https://svn.boost.org/trac/boost/ticket/6028 6028] Documentation: closure, fixed.
* [@https://svn.boost.org/trac/boost/ticket/6178 6178] Missing headerfile, fixed.

[*Additional functionality]

* support for line/polygon intersections and differences
* support for convert of segment/box of different point types
* support for append for multi point
* the scalar function distance now throws an empty_input_exception on empty input

[*Documentation]

* updated support status in several algorithms
* updated conformance to OGC or std
* other updates and fixes

[*Internal changes]

* updates in specializations/not_implemented for distance/convert/assign/area/with/covered_by
* move of wkt/dsv to io folder, making domains redundant
* warnings: strategy concepts assigned to zero to avoid clang warnings (patched by Vishnu)
* warnings: there were several unused parameters, for which gcc/clang warned (patched by Christophe)

[/=================]
[heading Boost 1.48]
[/=================]

[*Bugfixes]

* Robustness issue, in some circumstances the union failed to output. Fixed.
* Robustness issue, in some circumstances the calculated intersection point was outside the segment. Fixed.
* Concept issue, cartesian intersect didn't understand segments other than the provided one. Fixed.
* Sometimes self-intersections in linestrings were missed. Fixed.
* The fusion coordinate system was not registered correctly. Fixed.

[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/5726 5726] Segment intersection algorithm still assumes 'first', 'second' members
* [@https://svn.boost.org/trac/boost/ticket/5744 5744] Mistake in fusion adapt example
* [@https://svn.boost.org/trac/boost/ticket/5748 5748] Needed to include <boost/foreach.hpp>
* [@https://svn.boost.org/trac/boost/ticket/5954 5954] distance_pythagoras skips sqrt() step

[*Improvements on algorithms]

* Checking self-intersections is now not done automatically, this can blast performance.
* Besides that, checking self-intersections is made faster.
* Intersections now avoid outputting duplicate points. So they output the minimal set.

[*Additional algorithms]

* covered_by: within is defined as "within, not on boundary". covered_by is "within or on boundary"

[*Additional functionality]

* within: strategies can now be specified for within<point, box> and within<box, box>
* convert: a much broader range of conversions is supported
* assign: idem, (currently partly) synonym for convert (but reversed arguments)

[*Additional coordinate types]

* Basic (limited) support for Boost.Rational
         
[heading Boost 1.47]

Original release         

[endsect]
