Add a 'flags' parameter to GEOSisValidDetail.
[geos.git] / NEWS
blobf5f577ae66678f8cde9892fd823232ebf3e15cc0
1 Changes in 3.3.0 
2 ????-??-??
4 - New things:
5   - CAPI: GEOSUnaryUnion
6   - CAPI: GEOSisValidDetail: tell state, reason & location apart. allows
7           passing flags.
8   - CAPI: GEOSContext_setNoticeHandler_r, GEOSContext_setErrorHandler_r
9   - CAPI: GEOSGeom_createEmptyPoint, GEOSGeom_createEmptyLineString
10           GEOSGeom_createEmptyPolygon, GEOSGeom_createEmptyCollection
11   - CAPI: GEOSGeom_extractUniquePoints
12   - CAPI: GEOSGetGeometryN support for single geometries
13   - CAPI: GEOSPolygonize_full to return all informations computed by
14           the polygonizer
15   - CAPI: GEOSOrientationIndex
16   - CAPI: GEOSSharedPaths to find shared paths and their orientation
17   - CAPI: GEOSSnap 
18   - CAPI: GEOSRelatePatternMatch 
19   -  PHP: new PHP5 bindings based on CAPI
20 - C++ API changes:
21   - Geometry inheritance chain changed to introduce Puntal, Lineal
22     and Polygonal classes (virtual inheritance introduced)
23   - Geometry::isWithinDistance method is now const
24   - Polygonizer::getCutEdges returns by const ref
25   - Polygonizer::getDangles returns by const ref
26   - Polygonizer::getInvalidRingLines returns by const ref and retains
27     ownership of vector elements
28 - Bug fixes:
29   - Invalid compound geometries reported as valid (#333)
30   - Return up to 15 digits of precision from GEOSisValidReason_t (#329)
31   - CAPI: do not leak contexts when using the non-reentrant interface
32   - Fix duplicated dangles returned by Polygonizer
34 Changes in 3.2.0 
35 2009-12-14
37 - Add Single-sided buffer operation
38 - JTS-1.10 sync ...
39   - Drastically improved Buffer speed (20x for a case in testsuite)
40   - Improved EdgeList duplicate edge finding
41   - Added algorithm::distance package
42   - Added algorithm::Angle class
43   - Added algorithm::BoundaryNodeRule class
44   - IsSimpleOp can now return non-simple location coordinate
45   - DistanceOp can now check for 'within distance' predicate
46     (earlier exit)
47   - MultiPolygon::getBoundary always return MultiLineString, also
48     when the result is the EMPTY geometry.
49 - Various bug and leak fixes, optimizations
50 - Replace MarkupSTL with tinyXML
52 Changes in 3.1.0
54 - PreparedGeometry operations for very fast predicate testing.
55   - Intersects()
56   - Covers() 
57   - CoveredBy()
58   - ContainsProperly()
59 - Easier builds under MSVC and OpenSolaris
60 - Thread-safe CAPI option
61 - IsValidReason added to CAPI
62 - GEOSPolygonizer_getCutEdges added to CAPI
63 - CascadedUnion operation for fast unions of geometry sets
64 - Numerous bug fixes.
65   http://trac.osgeo.org/geos/query?status=closed&milestone=3.1.0&order=priority
67 Changes in 3.0.0
69    These are mostly ABI breaking changes.
70    In few cases the API also changed, but the most external one
71    (the documented one) should be unchanged.
73 - New things:
74         - Added geom::BinaryOp class performing a binary operation
75           using different heuristics to reduce probability of robustness
76           issues. Both C-API and XMLTester now use this class for
77           binary operations.
78         - Added covers() and coveredBy() predicates to Geometry class
79         - Added overlay::overlayOp() adapter class
80         - Added GEOSSimplify() and GEOSTopologyPreserveSimplify()
81           to the C API
82         - Added closed ring checks in IsValidOp
83         - Multi-input support in XMLTester 
84         - HEXWKB I/O
85         - Envelope(string) ctor
86         - Ruby interface
87         - New ShortCircuitedGeometryVisitor class
88         - New operation/predicate package
89         - Added CGAlgorithms::isPointInRing() version working with
90           Coordinate::ConstVect type (faster!)
91         - Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence
92           class.
93         - Moved GetNumGeometries() and GetGeometryN() interfaces
94           from GeometryCollection to Geometry class.
95         - New planarSubgraph class
96         - New ConnectedSubgraphFinder class.
97         - New LineSequencer class
98         - New WKTWriter::toLineString and ::toPoint convenience methods
99         - New IsValidOp::setSelfTouchingRingFormingHoleValid method
100         - New WKTWriter::toLineString and ::toPoint convenience methods
101         - New IsValidOp::setSelfTouchingRingFormingHoleValid method
102         - New Envelope::centre()
103         - New Envelope::intersection(Envelope)
104         - New Envelope::expandBy(distance, [ydistance])
105         - New LineString::reverse()
106         - New MultiLineString::reverse()
107         - New Geometry::buffer(distance, quadSeg, endCapStyle)
108         - New SnapRounding code
109         - New size() and operator[] interfaces to CoordinateSequence
110         - New ScaledNoder class
111         - New unit tests (make check rule)
113 - Optimizations:
114         - WKT parser speedup
115         - Function inlining
116         - Coordinate copies reduction
117         - Heap allocations reduction
118         - More classes made final
119         - Better use of standard containers
120         - Use of singletons when appropriate
121         - Removed many function calls in loops' end conditions
122         - Improved XMLTester output and user interface
123         - Improved memory use in geos::geom::util::PolygonExtractor
124         - Ported JTS-1.7 version of ConvexHull with big attention to
125           memory usage optimizations.
126         - Changed CoordinateArrayFilter to reduce memory copies
127         - Changed UniqueCoordinateArrayFilter to reduce memory copies
128         - Added rectangle-based optimizations of intersects() and
129           contains() ops
130         - Inlined all planarGraphComponent class
131         - More iterators returning methods and inlining in planargraph.
132         - Obsoleted toInternalGeometry/fromInternalGeometry 
133         - Improved buffering speed and robustness by using Snap Rounding
135 - Semantic changes
137         - SegmentString: getCoordinates() doesn't return a clone
138           anymore, getCoordinatesRO() obsoleted.
139         - JTS packages mapped to geos:: sub-namespaces
140         - Geometry::getInteriorPoint() returns NULL if called
141           against an EMPTY geom
142         - LineString::get{Start,End}Point return NULL for
143           EMPTY geoms
144         - GEOSException is now derived by std::runtim_exception
145           and thrown by const reference.
146         - Geometry constructors made protected, to force use
147           of a GeometryFactory.
149 - Correctness:
150         - More const-correct signatures
151         - Stronger methods typing (removed some void * args).
152         - Changed index-related funx signatures to use size_t
153           rather then int
154         - More const-correctness in Buffer "package"
155         - Bugfix in LineString::getCoordinate() failing to return
156           NULL from getCoordinat() when empty.
157         - Use unsigned int for indexes and sizes.
159 - Layout changes:
160         - Namespaces mapping JTS packages
161         - Renamed classes after JTS names (namespaces use made this possible
162           w/out name clashes)
163         - Splitted headers, for build speedup and possible API reduction.
164         - Moved source/bigtest and source/test to tests/bigtest
165           and test/xmltester
166         - Moved C-API in it's own top-level dir capi/
167         - Reworked automake scripts to produce a static lib for each subdir
168           and then link all subsystem's libs togheter
169         - Renamed DefaultCoordinateSequence to CoordinateArraySequence.
170         - Renamed OverlayOp opcodes by prepending the 'op' prefix, and
171           given the enum a name (OpCode) for type-safety.
173 - Bug fixes:
174         - Fixed bug causing redundant linestrings to be returned in the
175           result of overlaying polygons containing touching holes (#13)
176         - Fixed integer conversion bug
177         - Fixed PointLocator handling of LinearRings
178         - Added missing ::clone() methods for Multi* geoms 
180 - (Partial) Detailed list of changes:
181         - Changed SegmentNode to contain a *real* Coordinate (not a pointer)
182           to reduce construction costs.
183         - Changed geomgraph nodeMap to use Coordinate pointers as keys
184         - Envelope destructor made non-virtual to give compiler more static
185           binding options.
186         - Changed BufferSubgraph::computeDepths to use a set instead of a
187           vector for checking visited Edges.
188         - Made LineIntersector a concrete type
189         - Node::isIncidentEdgeInResult() method made virtual
190         - Const-correct signatures in LineMerger package
191         - Changed operation/valid/*NestedRingTester classes interface
192           to use Coordinate pointers instead of copies.
193         - Changed EdgeIntersectionList to use a set instead of a vector
194         - Changed DepthSegment to store a real Coordinate rather then a pointer.
195         - Changed SubgraphDepthLocater to store real containers rather then
196           pointers.
197         - Changed BufferSubgraph to store a real RightmostEdgeFinder and real
198           containers rather then pointers.
199         - CoordinateSequence API changes:
200                 - point index and size related functions
201                   use unsigned int rather then int
202         - Changed EdgeEndStar to maintain a single container for EdgeEnds 
203         - Changed PlanarGraph::addEdges to take a const vector by ref
204           rathern then a non-const vector by pointer
205         - Changed EdgeList::addAll to take a const vector by ref
206           rather then a non-const vector by pointer
207         - Added apply_rw(CoordinateFilter *) and apply_ro(CoordinateFilter *)
208           const to CoordinateSequence
209         - LineBuilder::lineEdgesList made a real vector, rather then pointer
210           (private member)
211         - SegmentString::eiList made a real SegmentNodeList, rather then
212           a pointer (private member)
213         - Removed coordinate copies in ElevationMatrix::elevate
214         - Changed CoordinateFilter interface to have a const method
215           for filter_rw, updated interfaces using this to take
216           const CoordinateFilter (apply_rw).
219 Changes in 2.2.4
221         - Added version.in.vc to distribution
223 Changes in 2.2.1
225 - Support for MingW builds
226 - Bugfix in Polygonizer chocking on invalid LineString inputs
227 - CAPI: small leak removed in GEOSHasZ() 
229 Changes in 2.2.0
231 - Performance improvement in OverlayOp::insertUniqueEdge()
232 - CoordinateSequence copy removal in EdgeRing
233 - Minor memory allocation improvements 
234 - Higher dimensions interface for CoordinateSequence
235 - Added getCoordinatesRO for Point class
236 - NEW WKB IO
237 - NEW Simplified and stabler C API 
239 Changes in 2.1.4
241 - Severe BUGFIX in BufferSubgraphGT and other functions used
242   as StrictWeakOrdering predicates for sort()
244 Changes in 2.1.3
246 - win32/mingw build support
247 - Segfault fix in LinearRing and LineString constructors
248 - Segfault fix in Polygonizer
249 - XMLTester installed by default
250 - XMLTester code cleanup
251 - Fixed handling of collection input in GeometryFactory::buildGeometry
252 - Added shortcircuit test for Union operation
253 - Reduced useless Coordinate copies in CGAlgorithms::isPointInRing()
254 - Performance improvements in CGAlgorithms::isOnLine()
255 - Other minor performance improvements
256 - New Node::isIncidentEdgeInResult() method
257 - OverlayOp's PointBuilder performance improvement by reduction
258   of LineIntersector calls.
259 - Optimizations in Buffer operation
260 - Sever BUGFIX in DepthSegmentLT as suggested by Graeme Hiebert
262 Changes in 2.1.2
264 - Segfault fix in Point::isEmpty
265 - Mem Leak fix in OffsetCurveBuilder::getRingCurve
266 - Bugfix in LineSegment::reverse
267 - Added multipolygon buffering test in source/test/testLeaksBig
268 - Ported JTS robustness patch for RobustLineIntersector
269 - Removed useless Coordinate copies in OverlayOp::mergeZ()
270 - Avoided throws by IsValid on invalid input
271 - Stricter C++ syntax (math.h=>cmath, ieeefp.h in "C" block, ostringstream
272   instead of sprintf)
273 - Better support for older compilers (Polygonizer::LineStringAdder friendship)
274 - Removed useless Coordinate copies in CGAlgorithms::isOnLine()
275 - Added support for polygonize and parametrized buffer tests in XMLTester
276 - Fixed support for --includedir and --libdir
277 - Fixed Z interpolation in LineIntersector
278 - Handled NULL results from getCentroid() in XMLTester
279 - Segfault fix in (EMPTY)Geometry::getCentroid()
280 - Made polygon::getBoundary() always OGC-valid (no LinearRings)
281 - Input checking and promoting in GeometryFactory::createMultiLineString()
282 - Segfault fix in GeometryEditor::editPolygon()
285 Changes in 2.1.1
287 - Fixed uninitialized Coordinate in TopologyException
288 - Added install of version.h, platform.h and timeval.h
289 - Memleak fix in PolygonizeGraph
290 - Memleak fix in OverlayOp
291 - Compiler warnings removal
292 - Cleaner w32 build
293 - Z interpolation in overlay operations
294 - Debian package build scripts
297 Changes in 2.1.0
299 - Added Polygonizer and LineMerger classes.
300 - python wrapper examples
301 - General cleanup / warnings removal
302 - cleaner win32 / older copilers builds
303 - Reduced heap allocations
304 - debian package builder scripts
305 - reduction of standard C lib headers dependency
306 - Z support in overlay operations.
309 Changes in 2.0.0
311 - CoordinateList renamed to CoordinateSequence, BasicCoordinateList
312   renamed to DefaultCoordinateSequence to reflect JTS changes.
313   DefaultCoordinateSequenceFactory and CoordinateSequenceFactory
314   got same interface as JTS.
315 - Added geos/version.h defining versioning infos
316 - Added geos.h for quick inclusion. It will include geos/geom.h,
317   new geos/version.h, geos/util.h geos/io.h and geos/unload.h
318   (geometry input/output, exceptions, operations).
319 - Added a geos::version() function showing GEOS and equivalent
320   JTS versions as strings.
321 - All geometry constructors take ownership of given arguments.
322   GeometryFactory provides pass-by-reference geometry creators
323   to take care of a deep-copy.
324 - GeometryFactory::createMultiPoint(const CoordinateList *)
325   has been renamed to
326   GeometryFactory::createMultiPoint(const CoordinateList &)
327   to reflect copy semantic
328 - GeometryFactory: EMPTY geometry creation do now have their
329   own constructors taking no arguments.
330 - Geometry constructors taking PrecisionModel and SRID have
331   been dropped. You have to use GeometryFactory instead.
332 - WKTWriter default constructor has been dropped. You need
333   to initialize it with an explicit GeometryFactory