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