Link [ pkgsrc | NetBSD | pkgsrc git mirror | PR fulltext-search | netbsd commit viewer ]


   
        usage: [branch:branch] [user:user] [path[@revision]] keyword [... [-excludekeyword [...]]] (e.g. branch:MAIN pkgtools/pkg)




switch to index mode

recent branches: MAIN (2h)  pkgsrc-2024Q1 (4d)  pkgsrc-2023Q4 (78d)  pkgsrc-2023Q2 (110d) 

2024-06-17 18:47:46 UTC Now

2008-02-16 01:23:28 UTC MAIN commitmail json YAML

Update to 3.0.0.

Changes in 3.0.0

  These are mostly ABI breaking changes.
  In few cases the API also changed, but the most external one
  (the documented one) should be unchanged.

- New things:
- Added geom::BinaryOp class performing a binary operation
  using different heuristics to reduce probability of robustness
  issues. Both C-API and XMLTester now use this class for
  binary operations.
- Added covers() and coveredBy() predicates to Geometry class
- Added overlay::overlayOp() adapter class
- Added GEOSSimplify() and GEOSTopologyPreserveSimplify()
  to the C API
- Added closed ring checks in IsValidOp
- Multi-input support in XMLTester
- HEXWKB I/O
- Envelope(string) ctor
- Ruby interface
- New ShortCircuitedGeometryVisitor class
- New operation/predicate package
- Added CGAlgorithms::isPointInRing() version working with
  Coordinate::ConstVect type (faster!)
- Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence
  class.
- Moved GetNumGeometries() and GetGeometryN() interfaces
  from GeometryCollection to Geometry class.
- New planarSubgraph class
- New ConnectedSubgraphFinder class.
- New LineSequencer class
- New WKTWriter::toLineString and ::toPoint convenience methods
- New IsValidOp::setSelfTouchingRingFormingHoleValid method
- New WKTWriter::toLineString and ::toPoint convenience methods
- New IsValidOp::setSelfTouchingRingFormingHoleValid method
- New Envelope::centre()
- New Envelope::intersection(Envelope)
- New Envelope::expandBy(distance, [ydistance])
- New LineString::reverse()
- New MultiLineString::reverse()
- New Geometry::buffer(distance, quadSeg, endCapStyle)
- New SnapRounding code
- New size() and operator[] interfaces to CoordinateSequence
- New ScaledNoder class
- New unit tests (make check rule)

- Optimizations:
- WKT parser speedup
- Function inlining
- Coordinate copies reduction
  - Heap allocations reduction
- More classes made final
- Better use of standard containers
- Use of singletons when appropriate
- Removed many function calls in loops' end conditions
- Improved XMLTester output and user interface
- Improved memory use in geos::geom::util::PolygonExtractor
- Ported JTS-1.7 version of ConvexHull with big attention to
  memory usage optimizations.
- Changed CoordinateArrayFilter to reduce memory copies
- Changed UniqueCoordinateArrayFilter to reduce memory copies
- Added rectangle-based optimizations of intersects() and
  contains() ops
- Inlined all planarGraphComponent class
- More iterators returning methods and inlining in planargraph.
- Obsoleted toInternalGeometry/fromInternalGeometry
- Improved buffering speed and robustness by using Snap Rounding

- Semantic changes

- SegmentString: getCoordinates() doesn't return a clone
  anymore, getCoordinatesRO() obsoleted.
- JTS packages mapped to geos:: sub-namespaces
- Geometry::getInteriorPoint() returns NULL if called
  against an EMPTY geom
- LineString::get{Start,End}Point return NULL for
  EMPTY geoms
- GEOSException is now derived by std::runtim_exception
  and thrown by const reference.
- Geometry constructors made protected, to force use
  of a GeometryFactory.

- Correctness:
- More const-correct signatures
- Stronger methods typing (removed some void * args).
- Changed index-related funx signatures to use size_t
  rather then int
- More const-correctness in Buffer "package"
- Bugfix in LineString::getCoordinate() failing to return
  NULL from getCoordinat() when empty.
- Use unsigned int for indexes and sizes.

- Layout changes:
- Namespaces mapping JTS packages
- Renamed classes after JTS names (namespaces use made this possible
  w/out name clashes)
- Splitted headers, for build speedup and possible API reduction.
- Moved source/bigtest and source/test to tests/bigtest
  and test/xmltester
- Moved C-API in it's own top-level dir capi/
- Reworked automake scripts to produce a static lib for each subdir
  and then link all subsystem's libs togheter
- Renamed DefaultCoordinateSequence to CoordinateArraySequence.
- Renamed OverlayOp opcodes by prepending the 'op' prefix, and
  given the enum a name (OpCode) for type-safety.

- Bug fixes:
- Fixed bug causing redundant linestrings to be returned in the
  result of overlaying polygons containing touching holes (#13)
- Fixed integer conversion bug
- Fixed PointLocator handling of LinearRings
- Added missing ::clone() methods for Multi* geoms

- (Partial) Detailed list of changes:
- Changed SegmentNode to contain a *real* Coordinate (not a pointer)
    to reduce construction costs.
- Changed geomgraph nodeMap to use Coordinate pointers as keys
- Envelope destructor made non-virtual to give compiler more static
  binding options.
- Changed BufferSubgraph::computeDepths to use a set instead of a
  vector for checking visited Edges.
- Made LineIntersector a concrete type
- Node::isIncidentEdgeInResult() method made virtual
- Const-correct signatures in LineMerger package
- Changed operation/valid/*NestedRingTester classes interface
  to use Coordinate pointers instead of copies.
- Changed EdgeIntersectionList to use a set instead of a vector
- Changed DepthSegment to store a real Coordinate rather then a pointer.
- Changed SubgraphDepthLocater to store real containers rather then
  pointers.
- Changed BufferSubgraph to store a real RightmostEdgeFinder and real
  containers rather then pointers.
- CoordinateSequence API changes:
- point index and size related functions
    use unsigned int rather then int
- Changed EdgeEndStar to maintain a single container for EdgeEnds
- Changed PlanarGraph::addEdges to take a const vector by ref
  rathern then a non-const vector by pointer
- Changed EdgeList::addAll to take a const vector by ref
  rather then a non-const vector by pointer
- Added apply_rw(CoordinateFilter *) and apply_ro(CoordinateFilter *)
  const to CoordinateSequence
- LineBuilder::lineEdgesList made a real vector, rather then pointer
  (private member)
- SegmentString::eiList made a real SegmentNodeList, rather then
  a pointer (private member)
- Removed coordinate copies in ElevationMatrix::elevate
- Changed CoordinateFilter interface to have a const method
  for filter_rw, updated interfaces using this to take
  const CoordinateFilter (apply_rw).

(gdt)