├── .astylerc ├── .codecov.yml ├── .codespellrc ├── .drone-1.0.yml ├── .editorconfig ├── .git-blame-ignore-revs ├── .github └── workflows │ ├── ci.yml │ ├── codeql.yml │ ├── container.yml │ ├── release.yml │ └── web.yml ├── .gitignore ├── .gitpod.yml ├── .mailmap ├── AUTHORS ├── CMakeLists.txt ├── CODE_OF_CONDUCT.md ├── COPYING ├── DEVELOPER-NOTES.md ├── HOWTO_RELEASE ├── INSTALL.md ├── NEWS.md ├── README.md ├── Version.txt ├── benchmarks ├── BenchmarkUtils.h ├── CMakeLists.txt ├── ClassSizes.cpp ├── README.md ├── algorithm │ ├── CMakeLists.txt │ ├── InteriorPointAreaPerfTest.cpp │ ├── LineIntersectorPerfTest.cpp │ ├── OrientationIndexPerfTest.cpp │ ├── OrientationIndexStressTest.cpp │ ├── UnaryUnionSegmentsPerfTest.cpp │ ├── VoronoiPerfTest.cpp │ └── locate │ │ ├── CMakeLists.txt │ │ └── PointLocatorPerfTest.cpp ├── capi │ ├── CMakeLists.txt │ ├── GEOSCoordSeqPerfTest.cpp │ ├── GEOSGeom_transformXYPerfTest.cpp │ ├── GEOSPreparedContainsPerfTest.cpp │ ├── GEOSTopologyPreserveSimplifyStableTest.cpp │ ├── IntersectionPerfTest.cpp │ ├── UnaryOpPerfTest.cpp │ ├── memleak_mp_prep.c │ └── memleak_mp_prep.sh ├── geom │ ├── CMakeLists.txt │ ├── CoordinateSequencePerfTest.cpp │ ├── EnvelopePerfTest.cpp │ └── TopologyPredicatePerfTest.cpp ├── index │ ├── CMakeLists.txt │ ├── SpatialIndexPerfTest.cpp │ └── chain │ │ ├── CMakeLists.txt │ │ ├── MonotoneChainBuilderPerfTest.cpp │ │ └── MonotoneChainPerfTest.cpp └── operation │ ├── CMakeLists.txt │ ├── CoverageUnionPerfTest.cpp │ ├── DistancePerfTest.cpp │ ├── buffer │ ├── CMakeLists.txt │ └── IteratedBufferStressTest.cpp │ └── predicate │ ├── CMakeLists.txt │ └── RectangleIntersectsPerfTest.cpp ├── capi ├── CMakeLists.txt ├── geos_c.cpp ├── geos_c.h.in └── geos_ts_c.cpp ├── cmake ├── Ccache.cmake ├── FindMakeDistCheck.cmake ├── cmake_uninstall.cmake.in └── geos-config.cmake ├── configure ├── debian ├── Makefile ├── README.Debian ├── changelog ├── compat ├── control ├── copyright ├── geos-config.1 ├── libgeos-dev.dirs ├── libgeos-dev.docs ├── libgeos-dev.install ├── libgeos-dev.manpages ├── libgeos-doc.doc-base ├── libgeos-doc.docs ├── libgeos.dirs ├── libgeos.docs ├── libgeos.install ├── makedoc ├── rules └── watch ├── doxygen ├── CMakeLists.txt ├── Doxyfile.in ├── README └── check_doxygen_errors.cmake ├── examples ├── .gitignore ├── CMakeLists.txt ├── README.md ├── capi_indexed_predicate.c ├── capi_prepared.c ├── capi_read.c ├── capi_read_ts.c ├── capi_strtree.c ├── cpp_read.cpp └── cpp_strtree.cpp ├── include ├── CMakeLists.txt ├── geos.h └── geos │ ├── algorithm │ ├── Angle.h │ ├── Area.h │ ├── BoundaryNodeRule.h │ ├── CGAlgorithmsDD.h │ ├── CentralEndpointIntersector.h │ ├── Centroid.h │ ├── CircularArcs.h │ ├── ConvexHull.h │ ├── Distance.h │ ├── HCoordinate.h │ ├── InteriorPointArea.h │ ├── InteriorPointLine.h │ ├── InteriorPointPoint.h │ ├── Interpolate.h │ ├── Intersection.h │ ├── Length.h │ ├── LineIntersector.h │ ├── MinimumAreaRectangle.h │ ├── MinimumBoundingCircle.h │ ├── MinimumDiameter.h │ ├── NotRepresentableException.h │ ├── Orientation.h │ ├── PointInRing.h │ ├── PointLocation.h │ ├── PointLocator.h │ ├── PolygonNodeTopology.h │ ├── RayCrossingCounter.h │ ├── Rectangle.h │ ├── RobustDeterminant.h │ ├── SimplePointInRing.h │ ├── construct │ │ ├── ExactMaxInscribedCircle.h │ │ ├── IndexedDistanceToPoint.h │ │ ├── IndexedPointInPolygonsLocator.h │ │ ├── LargestEmptyCircle.h │ │ └── MaximumInscribedCircle.h │ ├── distance │ │ ├── DiscreteFrechetDistance.h │ │ ├── DiscreteHausdorffDistance.h │ │ ├── DistanceToPoint.h │ │ └── PointPairDistance.h │ ├── hull │ │ ├── ConcaveHull.h │ │ ├── ConcaveHullOfPolygons.h │ │ ├── HullTri.h │ │ ├── HullTriangulation.h │ │ └── OuterShellsExtracter.h │ └── locate │ │ ├── IndexedPointInAreaLocator.h │ │ ├── PointOnGeometryLocator.h │ │ └── SimplePointInAreaLocator.h │ ├── constants.h │ ├── coverage │ ├── CleanCoverage.h │ ├── Corner.h │ ├── CoverageBoundarySegmentFinder.h │ ├── CoverageCleaner.h │ ├── CoverageEdge.h │ ├── CoverageGapFinder.h │ ├── CoveragePolygon.h │ ├── CoveragePolygonValidator.h │ ├── CoverageRing.h │ ├── CoverageRingEdges.h │ ├── CoverageSimplifier.h │ ├── CoverageUnion.h │ ├── CoverageValidator.h │ ├── InvalidSegmentDetector.h │ ├── TPVWSimplifier.h │ └── VertexRingCounter.h │ ├── dissolve │ ├── DissolveEdgeGraph.h │ ├── DissolveHalfEdge.h │ └── LineDissolver.h │ ├── edgegraph │ ├── EdgeGraph.h │ ├── EdgeGraphBuilder.h │ ├── HalfEdge.h │ └── MarkHalfEdge.h │ ├── export.h │ ├── geom.h │ ├── geom │ ├── CircularArc.h │ ├── CircularString.h │ ├── CompoundCurve.h │ ├── Coordinate.h │ ├── CoordinateFilter.h │ ├── CoordinateList.h │ ├── CoordinateSequence.h │ ├── CoordinateSequenceFilter.h │ ├── CoordinateSequenceIterator.h │ ├── CoordinateSequences.h │ ├── Curve.h │ ├── CurvePolygon.h │ ├── Dimension.h │ ├── Envelope.h │ ├── Geometry.h │ ├── GeometryCollection.h │ ├── GeometryComponentFilter.h │ ├── GeometryFactory.h │ ├── GeometryFilter.h │ ├── GeometryTypeName.h │ ├── HeuristicOverlay.h │ ├── IntersectionMatrix.h │ ├── LineSegment.h │ ├── LineString.h │ ├── LinearRing.h │ ├── Location.h │ ├── MultiCurve.h │ ├── MultiLineString.h │ ├── MultiPoint.h │ ├── MultiPolygon.h │ ├── MultiSurface.h │ ├── Point.h │ ├── Polygon.h │ ├── Position.h │ ├── PrecisionModel.h │ ├── Quadrant.h │ ├── SimpleCurve.h │ ├── Surface.h │ ├── SurfaceImpl.h │ ├── Triangle.h │ ├── prep │ │ ├── AbstractPreparedPolygonContains.h │ │ ├── BasicPreparedGeometry.h │ │ ├── PreparedGeometry.h │ │ ├── PreparedGeometryFactory.h │ │ ├── PreparedLineString.h │ │ ├── PreparedLineStringDistance.h │ │ ├── PreparedLineStringIntersects.h │ │ ├── PreparedLineStringNearestPoints.h │ │ ├── PreparedPoint.h │ │ ├── PreparedPolygon.h │ │ ├── PreparedPolygonContains.h │ │ ├── PreparedPolygonContainsProperly.h │ │ ├── PreparedPolygonCovers.h │ │ ├── PreparedPolygonDistance.h │ │ ├── PreparedPolygonIntersects.h │ │ └── PreparedPolygonPredicate.h │ └── util │ │ ├── ComponentCoordinateExtracter.h │ │ ├── CoordinateOperation.h │ │ ├── Densifier.h │ │ ├── GeometryCombiner.h │ │ ├── GeometryEditor.h │ │ ├── GeometryEditorOperation.h │ │ ├── GeometryExtracter.h │ │ ├── GeometryFixer.h │ │ ├── GeometryLister.h │ │ ├── GeometryMapper.h │ │ ├── GeometryTransformer.h │ │ ├── LinearComponentExtracter.h │ │ ├── NoOpGeometryOperation.h │ │ ├── PointExtracter.h │ │ ├── PolygonExtracter.h │ │ ├── PolygonalExtracter.h │ │ ├── ShortCircuitedGeometryVisitor.h │ │ └── SineStarFactory.h │ ├── geomgraph │ ├── Depth.h │ ├── DirectedEdge.h │ ├── DirectedEdgeStar.h │ ├── Edge.h │ ├── EdgeEnd.h │ ├── EdgeEndStar.h │ ├── EdgeIntersection.h │ ├── EdgeIntersectionList.h │ ├── EdgeList.h │ ├── EdgeNodingValidator.h │ ├── EdgeRing.h │ ├── GeometryGraph.h │ ├── GraphComponent.h │ ├── Label.h │ ├── Node.h │ ├── NodeFactory.h │ ├── NodeMap.h │ ├── PlanarGraph.h │ ├── TopologyLocation.h │ └── index │ │ ├── EdgeSetIntersector.h │ │ ├── MonotoneChain.h │ │ ├── MonotoneChainEdge.h │ │ ├── MonotoneChainIndexer.h │ │ ├── SegmentIntersector.h │ │ ├── SimpleEdgeSetIntersector.h │ │ ├── SimpleMCSweepLineIntersector.h │ │ ├── SimpleSweepLineIntersector.h │ │ ├── SweepLineEvent.h │ │ ├── SweepLineEventObj.h │ │ └── SweepLineSegment.h │ ├── index │ ├── ItemVisitor.h │ ├── SpatialIndex.h │ ├── VertexSequencePackedRtree.h │ ├── bintree │ │ ├── Bintree.h │ │ ├── Interval.h │ │ ├── Key.h │ │ ├── Node.h │ │ ├── NodeBase.h │ │ └── Root.h │ ├── chain │ │ ├── MonotoneChain.h │ │ ├── MonotoneChainBuilder.h │ │ ├── MonotoneChainOverlapAction.h │ │ └── MonotoneChainSelectAction.h │ ├── intervalrtree │ │ ├── IntervalRTreeBranchNode.h │ │ ├── IntervalRTreeLeafNode.h │ │ ├── IntervalRTreeNode.h │ │ └── SortedPackedIntervalRTree.h │ ├── kdtree │ │ ├── KdNode.h │ │ ├── KdNodeVisitor.h │ │ └── KdTree.h │ ├── quadtree │ │ ├── IntervalSize.h │ │ ├── Key.h │ │ ├── Node.h │ │ ├── NodeBase.h │ │ ├── Quadtree.h │ │ └── Root.h │ ├── strtree │ │ ├── AbstractNode.h │ │ ├── AbstractSTRtree.h │ │ ├── Boundable.h │ │ ├── BoundablePair.h │ │ ├── EnvelopeUtil.h │ │ ├── GeometryItemDistance.h │ │ ├── Interval.h │ │ ├── ItemBoundable.h │ │ ├── ItemDistance.h │ │ ├── SIRtree.h │ │ ├── STRtree.h │ │ ├── SimpleSTRdistance.h │ │ ├── SimpleSTRnode.h │ │ ├── SimpleSTRtree.h │ │ ├── TemplateSTRNode.h │ │ ├── TemplateSTRNodePair.h │ │ ├── TemplateSTRtree.h │ │ └── TemplateSTRtreeDistance.h │ └── sweepline │ │ ├── SweepLineEvent.h │ │ ├── SweepLineIndex.h │ │ ├── SweepLineInterval.h │ │ └── SweepLineOverlapAction.h │ ├── io │ ├── ByteOrderDataInStream.h │ ├── ByteOrderValues.h │ ├── CLocalizer.h │ ├── CheckOrdinatesFilter.h │ ├── GeoJSON.h │ ├── GeoJSONReader.h │ ├── GeoJSONWriter.h │ ├── OrdinateSet.h │ ├── ParseException.h │ ├── StringTokenizer.h │ ├── WKBConstants.h │ ├── WKBReader.h │ ├── WKBStreamReader.h │ ├── WKBWriter.h │ ├── WKTFileReader.h │ ├── WKTReader.h │ ├── WKTStreamReader.h │ ├── WKTWriter.h │ └── Writer.h │ ├── linearref │ ├── ExtractLineByLocation.h │ ├── LengthIndexOfPoint.h │ ├── LengthIndexedLine.h │ ├── LengthLocationMap.h │ ├── LinearGeometryBuilder.h │ ├── LinearIterator.h │ ├── LinearLocation.h │ ├── LocationIndexOfLine.h │ ├── LocationIndexOfPoint.h │ └── LocationIndexedLine.h │ ├── math │ └── DD.h │ ├── namespaces.h │ ├── noding │ ├── BasicSegmentString.h │ ├── BoundaryChainNoder.h │ ├── FastNodingValidator.h │ ├── FastSegmentSetIntersectionFinder.h │ ├── GeometryNoder.h │ ├── IntersectionAdder.h │ ├── IntersectionFinderAdder.h │ ├── IteratedNoder.h │ ├── MCIndexNoder.h │ ├── MCIndexSegmentSetMutualIntersector.h │ ├── NodableSegmentString.h │ ├── NodedSegmentString.h │ ├── Noder.h │ ├── NodingIntersectionFinder.h │ ├── NodingValidator.h │ ├── Octant.h │ ├── OrientedCoordinateArray.h │ ├── ScaledNoder.h │ ├── SegmentExtractingNoder.h │ ├── SegmentIntersectionDetector.h │ ├── SegmentIntersector.h │ ├── SegmentNode.h │ ├── SegmentNodeList.h │ ├── SegmentPointComparator.h │ ├── SegmentSetMutualIntersector.h │ ├── SegmentString.h │ ├── SegmentStringUtil.h │ ├── SimpleNoder.h │ ├── SinglePassNoder.h │ ├── ValidatingNoder.h │ ├── snap │ │ ├── SnappingIntersectionAdder.h │ │ ├── SnappingNoder.h │ │ └── SnappingPointIndex.h │ └── snapround │ │ ├── HotPixel.h │ │ ├── HotPixelIndex.h │ │ ├── MCIndexPointSnapper.h │ │ ├── MCIndexSnapRounder.h │ │ ├── SnapRoundingIntersectionAdder.h │ │ └── SnapRoundingNoder.h │ ├── operation │ ├── BoundaryOp.h │ ├── GeometryGraphOperation.h │ ├── buffer │ │ ├── BufferBuilder.h │ │ ├── BufferCurveSetBuilder.h │ │ ├── BufferInputLineSimplifier.h │ │ ├── BufferNodeFactory.h │ │ ├── BufferOp.h │ │ ├── BufferParameters.h │ │ ├── BufferSubgraph.h │ │ ├── MaximalEdgeRing.h │ │ ├── MinimalEdgeRing.h │ │ ├── OffsetCurve.h │ │ ├── OffsetCurveBuilder.h │ │ ├── OffsetCurveSection.h │ │ ├── OffsetSegmentGenerator.h │ │ ├── OffsetSegmentString.h │ │ ├── PolygonBuilder.h │ │ ├── RightmostEdgeFinder.h │ │ ├── SegmentMCIndex.h │ │ └── SubgraphDepthLocater.h │ ├── cluster │ │ ├── AbstractClusterFinder.h │ │ ├── Clusters.h │ │ ├── DBSCANClusterFinder.h │ │ ├── DisjointOperation.h │ │ ├── EnvelopeDistanceClusterFinder.h │ │ ├── EnvelopeIntersectsClusterFinder.h │ │ ├── GeometryDistanceClusterFinder.h │ │ ├── GeometryFlattener.h │ │ ├── GeometryIntersectsClusterFinder.h │ │ └── UnionFind.h │ ├── distance │ │ ├── ConnectedElementLocationFilter.h │ │ ├── ConnectedElementPointFilter.h │ │ ├── DistanceOp.h │ │ ├── FacetSequence.h │ │ ├── FacetSequenceTreeBuilder.h │ │ ├── GeometryLocation.h │ │ └── IndexedFacetDistance.h │ ├── intersection │ │ ├── Rectangle.h │ │ ├── RectangleIntersection.h │ │ └── RectangleIntersectionBuilder.h │ ├── linemerge │ │ ├── EdgeString.h │ │ ├── LineMergeDirectedEdge.h │ │ ├── LineMergeEdge.h │ │ ├── LineMergeGraph.h │ │ ├── LineMerger.h │ │ └── LineSequencer.h │ ├── overlay │ │ ├── snap │ │ │ ├── GeometrySnapper.h │ │ │ ├── LineStringSnapper.h │ │ │ └── SnapOverlayOp.h │ │ └── validate │ │ │ ├── FuzzyPointLocator.h │ │ │ ├── OffsetPointGenerator.h │ │ │ └── OverlayResultValidator.h │ ├── overlayng │ │ ├── CoverageUnion.h │ │ ├── Edge.h │ │ ├── EdgeKey.h │ │ ├── EdgeMerger.h │ │ ├── EdgeNodingBuilder.h │ │ ├── EdgeSourceInfo.h │ │ ├── ElevationModel.h │ │ ├── IndexedPointOnLineLocator.h │ │ ├── InputGeometry.h │ │ ├── IntersectionPointBuilder.h │ │ ├── LineBuilder.h │ │ ├── LineLimiter.h │ │ ├── MaximalEdgeRing.h │ │ ├── OverlayEdge.h │ │ ├── OverlayEdgeRing.h │ │ ├── OverlayGraph.h │ │ ├── OverlayLabel.h │ │ ├── OverlayLabeller.h │ │ ├── OverlayMixedPoints.h │ │ ├── OverlayNG.h │ │ ├── OverlayNGRobust.h │ │ ├── OverlayPoints.h │ │ ├── OverlayUtil.h │ │ ├── PolygonBuilder.h │ │ ├── PrecisionReducer.h │ │ ├── PrecisionUtil.h │ │ ├── RingClipper.h │ │ ├── RobustClipEnvelopeComputer.h │ │ └── UnaryUnionNG.h │ ├── polygonize │ │ ├── BuildArea.h │ │ ├── EdgeRing.h │ │ ├── HoleAssigner.h │ │ ├── PolygonizeDirectedEdge.h │ │ ├── PolygonizeEdge.h │ │ ├── PolygonizeGraph.h │ │ └── Polygonizer.h │ ├── predicate │ │ ├── RectangleContains.h │ │ ├── RectangleIntersects.h │ │ └── SegmentIntersectionTester.h │ ├── relate │ │ ├── EdgeEndBuilder.h │ │ ├── EdgeEndBundle.h │ │ ├── EdgeEndBundleStar.h │ │ ├── RelateComputer.h │ │ ├── RelateNode.h │ │ ├── RelateNodeFactory.h │ │ ├── RelateNodeGraph.h │ │ └── RelateOp.h │ ├── relateng │ │ ├── AdjacentEdgeLocator.h │ │ ├── BasicPredicate.h │ │ ├── DimensionLocation.h │ │ ├── EdgeSegmentIntersector.h │ │ ├── EdgeSegmentOverlapAction.h │ │ ├── EdgeSetIntersector.h │ │ ├── IMPatternMatcher.h │ │ ├── IMPredicate.h │ │ ├── IntersectionMatrixPattern.h │ │ ├── LineStringExtracter.h │ │ ├── LinearBoundary.h │ │ ├── NodeSection.h │ │ ├── NodeSections.h │ │ ├── PolygonNodeConverter.h │ │ ├── RelateEdge.h │ │ ├── RelateGeometry.h │ │ ├── RelateMatrixPredicate.h │ │ ├── RelateNG.h │ │ ├── RelateNode.h │ │ ├── RelatePointLocator.h │ │ ├── RelatePredicate.h │ │ ├── RelateSegmentString.h │ │ ├── TopologyComputer.h │ │ └── TopologyPredicate.h │ ├── sharedpaths │ │ └── SharedPathsOp.h │ ├── union │ │ ├── CascadedPolygonUnion.h │ │ ├── CoverageUnion.h │ │ ├── DisjointSubsetUnion.h │ │ ├── OverlapUnion.h │ │ ├── PointGeometryUnion.h │ │ ├── UnaryUnionOp.h │ │ └── UnionStrategy.h │ └── valid │ │ ├── ConsistentAreaTester.h │ │ ├── IndexedNestedHoleTester.h │ │ ├── IndexedNestedPolygonTester.h │ │ ├── IsSimpleOp.h │ │ ├── IsValidOp.h │ │ ├── MakeValid.h │ │ ├── PolygonIntersectionAnalyzer.h │ │ ├── PolygonRing.h │ │ ├── PolygonRingSelfNode.h │ │ ├── PolygonRingTouch.h │ │ ├── PolygonTopologyAnalyzer.h │ │ ├── RepeatedPointRemover.h │ │ ├── RepeatedPointTester.h │ │ └── TopologyValidationError.h │ ├── planargraph │ ├── DirectedEdge.h │ ├── DirectedEdgeStar.h │ ├── Edge.h │ ├── GraphComponent.h │ ├── Node.h │ ├── NodeMap.h │ ├── PlanarGraph.h │ ├── Subgraph.h │ └── algorithm │ │ └── ConnectedSubgraphFinder.h │ ├── precision │ ├── CommonBits.h │ ├── CommonBitsOp.h │ ├── CommonBitsRemover.h │ ├── EnhancedPrecisionOp.h │ ├── GeometryPrecisionReducer.h │ ├── MinimumClearance.h │ ├── PointwisePrecisionReducerTransformer.h │ ├── PrecisionReducerCoordinateOperation.h │ ├── PrecisionReducerTransformer.h │ └── SimpleGeometryPrecisionReducer.h │ ├── profiler.h │ ├── shape │ └── fractal │ │ ├── HilbertCode.h │ │ ├── HilbertEncoder.h │ │ └── MortonCode.h │ ├── simplify │ ├── ComponentJumpChecker.h │ ├── DouglasPeuckerLineSimplifier.h │ ├── DouglasPeuckerSimplifier.h │ ├── LineSegmentIndex.h │ ├── LinkedLine.h │ ├── LinkedRing.h │ ├── PolygonHullSimplifier.h │ ├── RingHull.h │ ├── RingHullIndex.h │ ├── TaggedLineSegment.h │ ├── TaggedLineString.h │ ├── TaggedLineStringSimplifier.h │ ├── TaggedLinesSimplifier.h │ └── TopologyPreservingSimplifier.h │ ├── triangulate │ ├── DelaunayTriangulationBuilder.h │ ├── IncrementalDelaunayTriangulator.h │ ├── VoronoiDiagramBuilder.h │ ├── polygon │ │ ├── ConstrainedDelaunayTriangulator.h │ │ ├── PolygonEarClipper.h │ │ ├── PolygonHoleJoiner.h │ │ ├── PolygonNoder.h │ │ ├── PolygonTriangulator.h │ │ └── TriDelaunayImprover.h │ ├── quadedge │ │ ├── LastFoundQuadEdgeLocator.h │ │ ├── LocateFailureException.h │ │ ├── QuadEdge.h │ │ ├── QuadEdgeLocator.h │ │ ├── QuadEdgeQuartet.h │ │ ├── QuadEdgeSubdivision.h │ │ ├── TrianglePredicate.h │ │ ├── TriangleVisitor.h │ │ └── Vertex.h │ └── tri │ │ ├── Tri.h │ │ ├── TriEdge.h │ │ ├── TriList.h │ │ └── TriangulationBuilder.h │ ├── unload.h │ ├── util.h │ ├── util │ ├── Assert.h │ ├── AssertionFailedException.h │ ├── CoordinateArrayFilter.h │ ├── GEOSException.h │ ├── GeometricShapeFactory.h │ ├── IllegalArgumentException.h │ ├── IllegalStateException.h │ ├── Interrupt.h │ ├── Machine.h │ ├── TopologyException.h │ ├── UniqueCoordinateArrayFilter.h │ ├── UnsupportedOperationException.h │ ├── math.h │ └── string.h │ ├── vend │ ├── include_nlohmann_json.hpp │ └── json.hpp │ └── version.h.in ├── src ├── CMakeLists.txt ├── algorithm │ ├── Angle.cpp │ ├── Area.cpp │ ├── BoundaryNodeRule.cpp │ ├── CGAlgorithmsDD.cpp │ ├── Centroid.cpp │ ├── CircularArcs.cpp │ ├── ConvexHull.cpp │ ├── Distance.cpp │ ├── HCoordinate.cpp │ ├── InteriorPointArea.cpp │ ├── InteriorPointLine.cpp │ ├── InteriorPointPoint.cpp │ ├── Intersection.cpp │ ├── Length.cpp │ ├── LineIntersector.cpp │ ├── MinimumAreaRectangle.cpp │ ├── MinimumBoundingCircle.cpp │ ├── MinimumDiameter.cpp │ ├── NotRepresentableException.cpp │ ├── Orientation.cpp │ ├── PointLocation.cpp │ ├── PointLocator.cpp │ ├── PolygonNodeTopology.cpp │ ├── RayCrossingCounter.cpp │ ├── Rectangle.cpp │ ├── RobustDeterminant.cpp │ ├── SimplePointInRing.cpp │ ├── construct │ │ ├── ExactMaxInscribedCircle.cpp │ │ ├── IndexedDistanceToPoint.cpp │ │ ├── IndexedPointInPolygonsLocator.cpp │ │ ├── LargestEmptyCircle.cpp │ │ └── MaximumInscribedCircle.cpp │ ├── distance │ │ ├── DiscreteFrechetDistance.cpp │ │ ├── DiscreteHausdorffDistance.cpp │ │ └── DistanceToPoint.cpp │ ├── hull │ │ ├── ConcaveHull.cpp │ │ ├── ConcaveHullOfPolygons.cpp │ │ ├── HullTri.cpp │ │ ├── HullTriangulation.cpp │ │ └── OuterShellsExtracter.cpp │ └── locate │ │ ├── IndexedPointInAreaLocator.cpp │ │ ├── PointOnGeometryLocator.cpp │ │ └── SimplePointInAreaLocator.cpp ├── coverage │ ├── CleanCoverage.cpp │ ├── Corner.cpp │ ├── CoverageBoundarySegmentFinder.cpp │ ├── CoverageCleaner.cpp │ ├── CoverageEdge.cpp │ ├── CoverageGapFinder.cpp │ ├── CoveragePolygon.cpp │ ├── CoveragePolygonValidator.cpp │ ├── CoverageRing.cpp │ ├── CoverageRingEdges.cpp │ ├── CoverageSimplifier.cpp │ ├── CoverageUnion.cpp │ ├── CoverageValidator.cpp │ ├── InvalidSegmentDetector.cpp │ ├── TPVWSimplifier.cpp │ └── VertexRingCounter.cpp ├── deps │ ├── CMakeLists.txt │ └── ryu │ │ ├── LICENSE │ │ ├── LICENSE-Apache2 │ │ ├── LICENSE-Boost │ │ ├── README.md │ │ ├── common.h │ │ ├── d2fixed_full_table.h │ │ ├── d2s.c │ │ ├── d2s_full_table.h │ │ ├── d2s_intrinsics.h │ │ ├── digit_table.h │ │ └── ryu.h ├── dissolve │ ├── DissolveEdgeGraph.cpp │ ├── DissolveHalfEdge.cpp │ └── LineDissolver.cpp ├── edgegraph │ ├── EdgeGraph.cpp │ ├── EdgeGraphBuilder.cpp │ ├── HalfEdge.cpp │ └── MarkHalfEdge.cpp ├── geom │ ├── CircularString.cpp │ ├── CompoundCurve.cpp │ ├── Coordinate.cpp │ ├── CoordinateSequence.cpp │ ├── Curve.cpp │ ├── CurvePolygon.cpp │ ├── Dimension.cpp │ ├── Envelope.cpp │ ├── Geometry.cpp │ ├── GeometryCollection.cpp │ ├── GeometryComponentFilter.cpp │ ├── GeometryFactory.cpp │ ├── HeuristicOverlay.cpp │ ├── IntersectionMatrix.cpp │ ├── LineSegment.cpp │ ├── LineString.cpp │ ├── LinearRing.cpp │ ├── Location.cpp │ ├── MultiCurve.cpp │ ├── MultiLineString.cpp │ ├── MultiPoint.cpp │ ├── MultiPolygon.cpp │ ├── MultiSurface.cpp │ ├── Point.cpp │ ├── Polygon.cpp │ ├── Position.cpp │ ├── PrecisionModel.cpp │ ├── Quadrant.cpp │ ├── SimpleCurve.cpp │ ├── Surface.cpp │ ├── Triangle.cpp │ ├── prep │ │ ├── AbstractPreparedPolygonContains.cpp │ │ ├── BasicPreparedGeometry.cpp │ │ ├── PreparedGeometry.cpp │ │ ├── PreparedGeometryFactory.cpp │ │ ├── PreparedLineString.cpp │ │ ├── PreparedLineStringDistance.cpp │ │ ├── PreparedLineStringIntersects.cpp │ │ ├── PreparedLineStringNearestPoints.cpp │ │ ├── PreparedPoint.cpp │ │ ├── PreparedPolygon.cpp │ │ ├── PreparedPolygonContains.cpp │ │ ├── PreparedPolygonContainsProperly.cpp │ │ ├── PreparedPolygonCovers.cpp │ │ ├── PreparedPolygonDistance.cpp │ │ ├── PreparedPolygonIntersects.cpp │ │ └── PreparedPolygonPredicate.cpp │ └── util │ │ ├── ComponentCoordinateExtracter.cpp │ │ ├── CoordinateOperation.cpp │ │ ├── Densifier.cpp │ │ ├── GeometryCombiner.cpp │ │ ├── GeometryEditor.cpp │ │ ├── GeometryFixer.cpp │ │ ├── GeometryMapper.cpp │ │ ├── GeometryTransformer.cpp │ │ ├── LinearComponentExtracter.cpp │ │ ├── NoOpGeometryOperation.cpp │ │ ├── PointExtracter.cpp │ │ ├── PolygonExtracter.cpp │ │ ├── PolygonalExtracter.cpp │ │ ├── ShortCircuitedGeometryVisitor.cpp │ │ └── SineStarFactory.cpp ├── geomgraph │ ├── Depth.cpp │ ├── DirectedEdge.cpp │ ├── DirectedEdgeStar.cpp │ ├── Edge.cpp │ ├── EdgeEnd.cpp │ ├── EdgeEndStar.cpp │ ├── EdgeIntersectionList.cpp │ ├── EdgeList.cpp │ ├── EdgeNodingValidator.cpp │ ├── EdgeRing.cpp │ ├── GeometryGraph.cpp │ ├── GraphComponent.cpp │ ├── Label.cpp │ ├── Node.cpp │ ├── NodeFactory.cpp │ ├── NodeMap.cpp │ ├── PlanarGraph.cpp │ ├── TopologyLocation.cpp │ └── index │ │ ├── MonotoneChainEdge.cpp │ │ ├── MonotoneChainIndexer.cpp │ │ ├── SegmentIntersector.cpp │ │ ├── SimpleEdgeSetIntersector.cpp │ │ ├── SimpleMCSweepLineIntersector.cpp │ │ ├── SimpleSweepLineIntersector.cpp │ │ ├── SweepLineEvent.cpp │ │ └── SweepLineSegment.cpp ├── index │ ├── VertexSequencePackedRtree.cpp │ ├── bintree │ │ ├── Bintree.cpp │ │ ├── Interval.cpp │ │ ├── Key.cpp │ │ ├── Node.cpp │ │ ├── NodeBase.cpp │ │ └── Root.cpp │ ├── chain │ │ ├── MonotoneChain.cpp │ │ ├── MonotoneChainBuilder.cpp │ │ ├── MonotoneChainOverlapAction.cpp │ │ └── MonotoneChainSelectAction.cpp │ ├── intervalrtree │ │ ├── IntervalRTreeBranchNode.cpp │ │ ├── IntervalRTreeLeafNode.cpp │ │ └── SortedPackedIntervalRTree.cpp │ ├── kdtree │ │ ├── KdNode.cpp │ │ └── KdTree.cpp │ ├── quadtree │ │ ├── IntervalSize.cpp │ │ ├── Key.cpp │ │ ├── Node.cpp │ │ ├── NodeBase.cpp │ │ ├── Quadtree.cpp │ │ └── Root.cpp │ ├── strtree │ │ ├── AbstractSTRtree.cpp │ │ ├── BoundablePair.cpp │ │ ├── EnvelopeUtil.cpp │ │ ├── GeometryItemDistance.cpp │ │ ├── Interval.cpp │ │ ├── SIRtree.cpp │ │ ├── STRtree.cpp │ │ ├── SimpleSTRdistance.cpp │ │ ├── SimpleSTRnode.cpp │ │ └── SimpleSTRtree.cpp │ └── sweepline │ │ ├── SweepLineEvent.cpp │ │ ├── SweepLineIndex.cpp │ │ └── SweepLineInterval.cpp ├── info.plist.in ├── io │ ├── ByteOrderDataInStream.cpp │ ├── ByteOrderValues.cpp │ ├── CLocalizer.cpp │ ├── GeoJSON.cpp │ ├── GeoJSONReader.cpp │ ├── GeoJSONWriter.cpp │ ├── ParseException.cpp │ ├── StringTokenizer.cpp │ ├── Unload.cpp │ ├── WKBReader.cpp │ ├── WKBStreamReader.cpp │ ├── WKBWriter.cpp │ ├── WKTFileReader.cpp │ ├── WKTReader.cpp │ ├── WKTStreamReader.cpp │ ├── WKTWriter.cpp │ └── Writer.cpp ├── linearref │ ├── ExtractLineByLocation.cpp │ ├── LengthIndexOfPoint.cpp │ ├── LengthIndexedLine.cpp │ ├── LengthLocationMap.cpp │ ├── LinearGeometryBuilder.cpp │ ├── LinearIterator.cpp │ ├── LinearLocation.cpp │ ├── LocationIndexOfLine.cpp │ └── LocationIndexOfPoint.cpp ├── math │ └── DD.cpp ├── noding │ ├── BasicSegmentString.cpp │ ├── BoundaryChainNoder.cpp │ ├── FastNodingValidator.cpp │ ├── FastSegmentSetIntersectionFinder.cpp │ ├── GeometryNoder.cpp │ ├── IntersectionAdder.cpp │ ├── IntersectionFinderAdder.cpp │ ├── IteratedNoder.cpp │ ├── MCIndexNoder.cpp │ ├── MCIndexSegmentSetMutualIntersector.cpp │ ├── NodedSegmentString.cpp │ ├── NodingIntersectionFinder.cpp │ ├── NodingValidator.cpp │ ├── Octant.cpp │ ├── OrientedCoordinateArray.cpp │ ├── ScaledNoder.cpp │ ├── SegmentExtractingNoder.cpp │ ├── SegmentIntersectionDetector.cpp │ ├── SegmentNode.cpp │ ├── SegmentNodeList.cpp │ ├── SegmentString.cpp │ ├── SegmentStringUtil.cpp │ ├── SimpleNoder.cpp │ ├── ValidatingNoder.cpp │ ├── snap │ │ ├── SnappingIntersectionAdder.cpp │ │ ├── SnappingNoder.cpp │ │ └── SnappingPointIndex.cpp │ └── snapround │ │ ├── HotPixel.cpp │ │ ├── HotPixelIndex.cpp │ │ ├── MCIndexPointSnapper.cpp │ │ ├── MCIndexSnapRounder.cpp │ │ ├── SnapRoundingIntersectionAdder.cpp │ │ └── SnapRoundingNoder.cpp ├── operation │ ├── BoundaryOp.cpp │ ├── GeometryGraphOperation.cpp │ ├── buffer │ │ ├── BufferBuilder.cpp │ │ ├── BufferCurveSetBuilder.cpp │ │ ├── BufferInputLineSimplifier.cpp │ │ ├── BufferNodeFactory.cpp │ │ ├── BufferOp.cpp │ │ ├── BufferParameters.cpp │ │ ├── BufferSubgraph.cpp │ │ ├── MaximalEdgeRing.cpp │ │ ├── MinimalEdgeRing.cpp │ │ ├── OffsetCurve.cpp │ │ ├── OffsetCurveBuilder.cpp │ │ ├── OffsetCurveSection.cpp │ │ ├── OffsetSegmentGenerator.cpp │ │ ├── PolygonBuilder.cpp │ │ ├── RightmostEdgeFinder.cpp │ │ ├── SegmentMCIndex.cpp │ │ └── SubgraphDepthLocater.cpp │ ├── cluster │ │ ├── AbstractClusterFinder.cpp │ │ ├── Clusters.cpp │ │ ├── DBSCANClusterFinder.cpp │ │ ├── GeometryFlattener.cpp │ │ └── UnionFind.cpp │ ├── distance │ │ ├── ConnectedElementLocationFilter.cpp │ │ ├── ConnectedElementPointFilter.cpp │ │ ├── DistanceOp.cpp │ │ ├── FacetSequence.cpp │ │ ├── FacetSequenceTreeBuilder.cpp │ │ ├── GeometryLocation.cpp │ │ └── IndexedFacetDistance.cpp │ ├── intersection │ │ ├── Rectangle.cpp │ │ ├── RectangleIntersection.cpp │ │ └── RectangleIntersectionBuilder.cpp │ ├── linemerge │ │ ├── EdgeString.cpp │ │ ├── LineMergeDirectedEdge.cpp │ │ ├── LineMergeEdge.cpp │ │ ├── LineMergeGraph.cpp │ │ ├── LineMerger.cpp │ │ └── LineSequencer.cpp │ ├── overlay │ │ ├── snap │ │ │ ├── GeometrySnapper.cpp │ │ │ ├── LineStringSnapper.cpp │ │ │ └── SnapOverlayOp.cpp │ │ └── validate │ │ │ ├── FuzzyPointLocator.cpp │ │ │ ├── OffsetPointGenerator.cpp │ │ │ └── OverlayResultValidator.cpp │ ├── overlayng │ │ ├── CoverageUnion.cpp │ │ ├── Edge.cpp │ │ ├── EdgeKey.cpp │ │ ├── EdgeMerger.cpp │ │ ├── EdgeNodingBuilder.cpp │ │ ├── EdgeSourceInfo.cpp │ │ ├── ElevationModel.cpp │ │ ├── IndexedPointOnLineLocator.cpp │ │ ├── InputGeometry.cpp │ │ ├── IntersectionPointBuilder.cpp │ │ ├── LineBuilder.cpp │ │ ├── LineLimiter.cpp │ │ ├── MaximalEdgeRing.cpp │ │ ├── OverlayEdge.cpp │ │ ├── OverlayEdgeRing.cpp │ │ ├── OverlayGraph.cpp │ │ ├── OverlayLabel.cpp │ │ ├── OverlayLabeller.cpp │ │ ├── OverlayMixedPoints.cpp │ │ ├── OverlayNG.cpp │ │ ├── OverlayNGRobust.cpp │ │ ├── OverlayPoints.cpp │ │ ├── OverlayUtil.cpp │ │ ├── PolygonBuilder.cpp │ │ ├── PrecisionReducer.cpp │ │ ├── PrecisionUtil.cpp │ │ ├── RingClipper.cpp │ │ ├── RobustClipEnvelopeComputer.cpp │ │ └── UnaryUnionNG.cpp │ ├── polygonize │ │ ├── BuildArea.cpp │ │ ├── EdgeRing.cpp │ │ ├── HoleAssigner.cpp │ │ ├── PolygonizeDirectedEdge.cpp │ │ ├── PolygonizeEdge.cpp │ │ ├── PolygonizeGraph.cpp │ │ └── Polygonizer.cpp │ ├── predicate │ │ ├── RectangleContains.cpp │ │ ├── RectangleIntersects.cpp │ │ └── SegmentIntersectionTester.cpp │ ├── relate │ │ ├── EdgeEndBuilder.cpp │ │ ├── EdgeEndBundle.cpp │ │ ├── EdgeEndBundleStar.cpp │ │ ├── RelateComputer.cpp │ │ ├── RelateNode.cpp │ │ ├── RelateNodeFactory.cpp │ │ ├── RelateNodeGraph.cpp │ │ └── RelateOp.cpp │ ├── relateng │ │ ├── AdjacentEdgeLocator.cpp │ │ ├── BasicPredicate.cpp │ │ ├── DimensionLocation.cpp │ │ ├── EdgeSegmentIntersector.cpp │ │ ├── EdgeSegmentOverlapAction.cpp │ │ ├── EdgeSetIntersector.cpp │ │ ├── IMPatternMatcher.cpp │ │ ├── IMPredicate.cpp │ │ ├── LineStringExtracter.cpp │ │ ├── LinearBoundary.cpp │ │ ├── NodeSection.cpp │ │ ├── NodeSections.cpp │ │ ├── PolygonNodeConverter.cpp │ │ ├── RelateEdge.cpp │ │ ├── RelateGeometry.cpp │ │ ├── RelateNG.cpp │ │ ├── RelateNode.cpp │ │ ├── RelatePointLocator.cpp │ │ ├── RelatePredicate.cpp │ │ ├── RelateSegmentString.cpp │ │ └── TopologyComputer.cpp │ ├── sharedpaths │ │ └── SharedPathsOp.cpp │ ├── union │ │ ├── CascadedPolygonUnion.cpp │ │ ├── CoverageUnion.cpp │ │ ├── OverlapUnion.cpp │ │ ├── PointGeometryUnion.cpp │ │ ├── UnaryUnionOp.cpp │ │ └── UnionStrategy.cpp │ └── valid │ │ ├── IndexedNestedHoleTester.cpp │ │ ├── IndexedNestedPolygonTester.cpp │ │ ├── IsSimpleOp.cpp │ │ ├── IsValidOp.cpp │ │ ├── MakeValid.cpp │ │ ├── PolygonIntersectionAnalyzer.cpp │ │ ├── PolygonRing.cpp │ │ ├── PolygonRingSelfNode.cpp │ │ ├── PolygonRingTouch.cpp │ │ ├── PolygonTopologyAnalyzer.cpp │ │ ├── RepeatedPointRemover.cpp │ │ ├── RepeatedPointTester.cpp │ │ └── TopologyValidationError.cpp ├── planargraph │ ├── DirectedEdge.cpp │ ├── DirectedEdgeStar.cpp │ ├── Edge.cpp │ ├── Node.cpp │ ├── NodeMap.cpp │ ├── PlanarGraph.cpp │ ├── Subgraph.cpp │ └── algorithm │ │ └── ConnectedSubgraphFinder.cpp ├── precision │ ├── CommonBits.cpp │ ├── CommonBitsOp.cpp │ ├── CommonBitsRemover.cpp │ ├── EnhancedPrecisionOp.cpp │ ├── GeometryPrecisionReducer.cpp │ ├── MinimumClearance.cpp │ ├── PointwisePrecisionReducerTransformer.cpp │ ├── PrecisionReducerCoordinateOperation.cpp │ ├── PrecisionReducerTransformer.cpp │ └── SimpleGeometryPrecisionReducer.cpp ├── shape │ └── fractal │ │ ├── HilbertCode.cpp │ │ ├── HilbertEncoder.cpp │ │ └── MortonCode.cpp ├── simplify │ ├── ComponentJumpChecker.cpp │ ├── DouglasPeuckerLineSimplifier.cpp │ ├── DouglasPeuckerSimplifier.cpp │ ├── LineSegmentIndex.cpp │ ├── LinkedLine.cpp │ ├── LinkedRing.cpp │ ├── PolygonHullSimplifier.cpp │ ├── RingHull.cpp │ ├── RingHullIndex.cpp │ ├── TaggedLineSegment.cpp │ ├── TaggedLineString.cpp │ ├── TaggedLineStringSimplifier.cpp │ ├── TaggedLinesSimplifier.cpp │ └── TopologyPreservingSimplifier.cpp ├── triangulate │ ├── DelaunayTriangulationBuilder.cpp │ ├── IncrementalDelaunayTriangulator.cpp │ ├── VoronoiDiagramBuilder.cpp │ ├── polygon │ │ ├── ConstrainedDelaunayTriangulator.cpp │ │ ├── PolygonEarClipper.cpp │ │ ├── PolygonHoleJoiner.cpp │ │ ├── PolygonNoder.cpp │ │ ├── PolygonTriangulator.cpp │ │ └── TriDelaunayImprover.cpp │ ├── quadedge │ │ ├── LastFoundQuadEdgeLocator.cpp │ │ ├── LocateFailureException.cpp │ │ ├── QuadEdge.cpp │ │ ├── QuadEdgeSubdivision.cpp │ │ ├── TrianglePredicate.cpp │ │ └── Vertex.cpp │ └── tri │ │ ├── Tri.cpp │ │ ├── TriEdge.cpp │ │ └── TriangulationBuilder.cpp └── util │ ├── Assert.cpp │ ├── GeometricShapeFactory.cpp │ ├── Interrupt.cpp │ ├── Profiler.cpp │ ├── math.cpp │ └── string.cpp ├── tests ├── CMakeLists.txt ├── README.md ├── superbuild.CMakeLists.txt ├── unit │ ├── CMakeLists.txt │ ├── algorithm │ │ ├── AngleTest.cpp │ │ ├── AreaTest.cpp │ │ ├── CGAlgorithms │ │ │ ├── OrientationIsCCWTest.cpp │ │ │ ├── computeOrientationTest.cpp │ │ │ ├── isPointInRingTest.cpp │ │ │ └── signedAreaTest.cpp │ │ ├── CentroidTest.cpp │ │ ├── CircularArcsTest.cpp │ │ ├── ConvexHullTest.cpp │ │ ├── InteriorPointAreaTest.cpp │ │ ├── InterpolateTest.cpp │ │ ├── IntersectionTest.cpp │ │ ├── LengthTest.cpp │ │ ├── LocatePointInRingTest.cpp │ │ ├── MinimumAreaRectangleTest.cpp │ │ ├── MinimumBoundingCircleTest.cpp │ │ ├── MinimumDiameterTest.cpp │ │ ├── OrientationIndexFailureTest.cpp │ │ ├── PointLocationTest.cpp │ │ ├── PointLocatorTest.cpp │ │ ├── PolygonNodeTopologyTest.cpp │ │ ├── RectangleTest.cpp │ │ ├── RobustLineIntersectionTest.cpp │ │ ├── RobustLineIntersectorTest.cpp │ │ ├── RobustLineIntersectorZTest.cpp │ │ ├── TrianglePredicateTest.cpp │ │ ├── construct │ │ │ ├── LargestEmptyCircleTest.cpp │ │ │ ├── MaxInscribedCircleRadiusWithinTest.cpp │ │ │ └── MaximumInscribedCircleTest.cpp │ │ ├── distance │ │ │ ├── DiscreteFrechetDistanceTest.cpp │ │ │ └── DiscreteHausdorffDistanceTest.cpp │ │ ├── hull │ │ │ ├── ConcaveHullOfPolygonsTest.cpp │ │ │ └── ConcaveHullTest.cpp │ │ └── locate │ │ │ ├── IndexedPointInAreaLocatorTest.cpp │ │ │ └── SimplePointInAreaLocatorTest.cpp │ ├── capi │ │ ├── GEOSBoundaryTest.cpp │ │ ├── GEOSBufferTest.cpp │ │ ├── GEOSBuildAreaTest.cpp │ │ ├── GEOSCAPIDefinesTest.cpp │ │ ├── GEOSClipByRectTest.cpp │ │ ├── GEOSClusterTest.cpp │ │ ├── GEOSConcaveHullOfPolygonsTest.cpp │ │ ├── GEOSConcaveHullTest.cpp │ │ ├── GEOSConstrainedDelaunayTriangulationTest.cpp │ │ ├── GEOSContainsTest.cpp │ │ ├── GEOSContextTest.cpp │ │ ├── GEOSConvexHullTest.cpp │ │ ├── GEOSCoordSeqTest.cpp │ │ ├── GEOSCoverageIsValidTest.cpp │ │ ├── GEOSCoverageSimplifyTest.cpp │ │ ├── GEOSCoverageUnionTest.cpp │ │ ├── GEOSCoveredByTest.cpp │ │ ├── GEOSCoversTest.cpp │ │ ├── GEOSCrossesTest.cpp │ │ ├── GEOSDelaunayTriangulationTest.cpp │ │ ├── GEOSDensifyTest.cpp │ │ ├── GEOSDifferencePrecTest.cpp │ │ ├── GEOSDifferenceTest.cpp │ │ ├── GEOSDisjointSubsetUnionTest.cpp │ │ ├── GEOSDisjointTest.cpp │ │ ├── GEOSDistanceTest.cpp │ │ ├── GEOSDistanceWithinTest.cpp │ │ ├── GEOSEnvelopeTest.cpp │ │ ├── GEOSEqualsIdenticalTest.cpp │ │ ├── GEOSEqualsTest.cpp │ │ ├── GEOSFrechetDistanceTest.cpp │ │ ├── GEOSGeoJSONWriterTest.cpp │ │ ├── GEOSGeomFromWKBTest.cpp │ │ ├── GEOSGeomGeoJSONReadTest.cpp │ │ ├── GEOSGeomGeoJSONWriteTest.cpp │ │ ├── GEOSGeomGetNumPointsTest.cpp │ │ ├── GEOSGeomGetXYZMTest.cpp │ │ ├── GEOSGeomToHEX_bufTest.cpp │ │ ├── GEOSGeomToWKBTest.cpp │ │ ├── GEOSGeomToWKB_bufTest.cpp │ │ ├── GEOSGeomToWKTTest.cpp │ │ ├── GEOSGeomTypeIdTest.cpp │ │ ├── GEOSGeomTypeTest.cpp │ │ ├── GEOSGeom_cloneTest.cpp │ │ ├── GEOSGeom_createCircularStringTest.cpp │ │ ├── GEOSGeom_createCollectionTest.cpp │ │ ├── GEOSGeom_createCompoundCurveTest.cpp │ │ ├── GEOSGeom_createCurvePolygonTest.cpp │ │ ├── GEOSGeom_createLineStringTest.cpp │ │ ├── GEOSGeom_createPolygonTest.cpp │ │ ├── GEOSGeom_createRectangleTest.cpp │ │ ├── GEOSGeom_createTest.cpp │ │ ├── GEOSGeom_extentTest.cpp │ │ ├── GEOSGeom_extractUniquePointsTest.cpp │ │ ├── GEOSGeom_getCoordSeqTest.cpp │ │ ├── GEOSGeom_getCoordinateDimensionTest.cpp │ │ ├── GEOSGeom_getDimensionsTest.cpp │ │ ├── GEOSGeom_setPrecisionTest.cpp │ │ ├── GEOSGeom_transformXYTest.cpp │ │ ├── GEOSGeom_transformXYZTest.cpp │ │ ├── GEOSGetCentroidTest.cpp │ │ ├── GEOSGetExteriorRingTest.cpp │ │ ├── GEOSGetGeometryNTest.cpp │ │ ├── GEOSGetInteriorRingNTest.cpp │ │ ├── GEOSGetNumInteriorRingsTest.cpp │ │ ├── GEOSHasZMTest.cpp │ │ ├── GEOSHausdorffDistanceTest.cpp │ │ ├── GEOSHilbertCodeTest.cpp │ │ ├── GEOSInterpolateTest.cpp │ │ ├── GEOSInterruptTest.cpp │ │ ├── GEOSIntersectionPrecTest.cpp │ │ ├── GEOSIntersectionTest.cpp │ │ ├── GEOSIntersectsTest.cpp │ │ ├── GEOSLargestEmptyCircleTest.cpp │ │ ├── GEOSLengthTest.cpp │ │ ├── GEOSLineMergeDirectedTest.cpp │ │ ├── GEOSLineMergeTest.cpp │ │ ├── GEOSLineStringTest.cpp │ │ ├── GEOSLineSubstringTest.cpp │ │ ├── GEOSMakeValidTest.cpp │ │ ├── GEOSMaximumInscribedCircleTest.cpp │ │ ├── GEOSMinimumBoundingCircleTest.cpp │ │ ├── GEOSMinimumClearanceTest.cpp │ │ ├── GEOSMinimumRotatedRectangleTest.cpp │ │ ├── GEOSMinimumWidthTest.cpp │ │ ├── GEOSNearestPointsTest.cpp │ │ ├── GEOSNodeTest.cpp │ │ ├── GEOSOffsetCurveTest.cpp │ │ ├── GEOSOrientPolygonsTest.cpp │ │ ├── GEOSOrientationIndexTest.cpp │ │ ├── GEOSOverlapsTest.cpp │ │ ├── GEOSPointOnSurfaceTest.cpp │ │ ├── GEOSPolygonHullSimplifyTest.cpp │ │ ├── GEOSPolygonizeTest.cpp │ │ ├── GEOSPreparedDistanceTest.cpp │ │ ├── GEOSPreparedDistanceWithinTest.cpp │ │ ├── GEOSPreparedGeometryTest.cpp │ │ ├── GEOSPreparedNearestPointsTest.cpp │ │ ├── GEOSProjectTest.cpp │ │ ├── GEOSRelateBoundaryNodeRuleTest.cpp │ │ ├── GEOSRelatePatternMatchTest.cpp │ │ ├── GEOSRelatePatternTest.cpp │ │ ├── GEOSRelateTest.cpp │ │ ├── GEOSRemoveRepeatedPointsTest.cpp │ │ ├── GEOSReverseTest.cpp │ │ ├── GEOSSTRtreeTest.cpp │ │ ├── GEOSSegmentIntersectionTest.cpp │ │ ├── GEOSSetSRIDTest.cpp │ │ ├── GEOSSharedPathsTest.cpp │ │ ├── GEOSSimplifyTest.cpp │ │ ├── GEOSSnapTest.cpp │ │ ├── GEOSSymDifferencePrecTest.cpp │ │ ├── GEOSSymDifferenceTest.cpp │ │ ├── GEOSTopologyPreserveSimplifyTest.cpp │ │ ├── GEOSTouchesTest.cpp │ │ ├── GEOSUnaryUnionPrecTest.cpp │ │ ├── GEOSUnaryUnionTest.cpp │ │ ├── GEOSUnionCascadedTest.cpp │ │ ├── GEOSUnionPrecTest.cpp │ │ ├── GEOSUnionTest.cpp │ │ ├── GEOSUserDataTest.cpp │ │ ├── GEOSVoronoiDiagramTest.cpp │ │ ├── GEOSWKBReaderTest.cpp │ │ ├── GEOSWKBWriterTest.cpp │ │ ├── GEOSWKTWriterTest.cpp │ │ ├── GEOSWithinTest.cpp │ │ ├── GEOS_printDoubleTest.cpp │ │ ├── GEOSisClosedTest.cpp │ │ ├── GEOSisRingTest.cpp │ │ ├── GEOSisSimpleTest.cpp │ │ ├── GEOSisValidDetailTest.cpp │ │ ├── GEOSisValidReasonTest.cpp │ │ ├── GEOSisValidTest.cpp │ │ └── capi_test_utils.h │ ├── coverage │ │ ├── CoverageCleanerTest.cpp │ │ ├── CoverageGapFinderTest.cpp │ │ ├── CoveragePolygonValidatorTest.cpp │ │ ├── CoverageRingEdgesTest.cpp │ │ ├── CoverageSimplifierTest.cpp │ │ ├── CoverageValidatorTest.cpp │ │ └── TPVWSimplifierTest.cpp │ ├── dissolve │ │ └── LineDissolverTest.cpp │ ├── edgegraph │ │ └── EdgeGraphTest.cpp │ ├── geom │ │ ├── CircularArcTest.cpp │ │ ├── CircularStringTest.cpp │ │ ├── CompoundCurveTest.cpp │ │ ├── CoordinateListTest.cpp │ │ ├── CoordinateSequenceIteratorTest.cpp │ │ ├── CoordinateSequenceTest.cpp │ │ ├── CoordinateSequencesTest.cpp │ │ ├── CoordinateTest.cpp │ │ ├── CurvePolygonTest.cpp │ │ ├── DimensionTest.cpp │ │ ├── EnvelopeTest.cpp │ │ ├── Geometry │ │ │ ├── cloneTest.cpp │ │ │ ├── coversTest.cpp │ │ │ ├── differenceTest.cpp │ │ │ ├── equalsTest.cpp │ │ │ ├── getCentroidTest.cpp │ │ │ ├── isRectangleTest.cpp │ │ │ ├── normalizeTest.cpp │ │ │ ├── toTextTest.cpp │ │ │ └── touchesTest.cpp │ │ ├── GeometryCollectionTest.cpp │ │ ├── GeometryComponentFilterTest.cpp │ │ ├── GeometryFactoryTest.cpp │ │ ├── GeometryFilterTest.cpp │ │ ├── HeuristicOverlayTest.cpp │ │ ├── IntersectionMatrixTest.cpp │ │ ├── LineSegmentTest.cpp │ │ ├── LineStringTest.cpp │ │ ├── LinearRingTest.cpp │ │ ├── LocationTest.cpp │ │ ├── MultiCurveTest.cpp │ │ ├── MultiLineStringTest.cpp │ │ ├── MultiPointTest.cpp │ │ ├── MultiPolygonTest.cpp │ │ ├── MultiSurfaceTest.cpp │ │ ├── PointTest.cpp │ │ ├── PolygonTest.cpp │ │ ├── PrecisionModelTest.cpp │ │ ├── TriangleTest.cpp │ │ ├── prep │ │ │ ├── PreparedGeometryFactoryTest.cpp │ │ │ ├── PreparedGeometryTest.cpp │ │ │ └── PreparedGeometryTouchesTest.cpp │ │ └── util │ │ │ ├── GeometryCombinerTest.cpp │ │ │ ├── GeometryExtracterTest.cpp │ │ │ ├── GeometryFixerTest.cpp │ │ │ ├── GeometryListerTest.cpp │ │ │ └── GeometryMapperTest.cpp │ ├── geomgraph │ │ └── TopologyLocationTest.cpp │ ├── geos_unit.cpp │ ├── index │ │ ├── VertexSequencePackedRtreeTest.cpp │ │ ├── chain │ │ │ └── MonotoneChainBuilderTest.cpp │ │ ├── kdtree │ │ │ └── KdTreeTest.cpp │ │ └── strtree │ │ │ ├── SIRtreeTest.cpp │ │ │ ├── SimpleSTRtreeTest.cpp │ │ │ └── TemplateSTRtreeTest.cpp │ ├── io │ │ ├── ByteOrderValuesTest.cpp │ │ ├── GeoJSONFeatureTest.cpp │ │ ├── GeoJSONReaderTest.cpp │ │ ├── GeoJSONValueTest.cpp │ │ ├── GeoJSONWriterTest.cpp │ │ ├── WKBReaderTest.cpp │ │ ├── WKBWriterTest.cpp │ │ ├── WKTReaderTest.cpp │ │ ├── WKTWriterTest.cpp │ │ └── WriterTest.cpp │ ├── linearref │ │ └── LengthIndexedLineTest.cpp │ ├── math │ │ └── DDTest.cpp │ ├── noding │ │ ├── BasicSegmentStringTest.cpp │ │ ├── NodedSegmentStringTest.cpp │ │ ├── OrientedCoordinateArrayTest.cpp │ │ ├── SegmentNodeTest.cpp │ │ ├── SegmentPointComparatorTest.cpp │ │ ├── snap │ │ │ └── SnappingNoderTest.cpp │ │ └── snapround │ │ │ ├── HotPixelTest.cpp │ │ │ ├── MCIndexSnapRounderTest.cpp │ │ │ └── SnapRoundingNoderTest.cpp │ ├── operation │ │ ├── BoundaryOpTest.cpp │ │ ├── buffer │ │ │ ├── BufferBuilderTest.cpp │ │ │ ├── BufferOpTest.cpp │ │ │ ├── BufferParametersTest.cpp │ │ │ └── OffsetCurveTest.cpp │ │ ├── cluster │ │ │ ├── ClusterFinderTest.cpp │ │ │ ├── DisjointOperationTest.cpp │ │ │ └── GeometryFlattenerTest.cpp │ │ ├── distance │ │ │ ├── DistanceOpTest.cpp │ │ │ └── IndexedFacetDistanceTest.cpp │ │ ├── geounion │ │ │ ├── CascadedPolygonUnionTest.cpp │ │ │ ├── CoverageUnionTest.cpp │ │ │ └── UnaryUnionOpTest.cpp │ │ ├── intersection │ │ │ └── RectangleIntersectionTest.cpp │ │ ├── linemerge │ │ │ ├── LineMergerTest.cpp │ │ │ └── LineSequencerTest.cpp │ │ ├── overlay │ │ │ ├── OverlayOpUnionTest.cpp │ │ │ ├── snap │ │ │ │ ├── GeometrySnapperTest.cpp │ │ │ │ └── LineStringSnapperTest.cpp │ │ │ └── validate │ │ │ │ ├── FuzzyPointLocatorTest.cpp │ │ │ │ ├── OffsetPointGeneratorTest.cpp │ │ │ │ └── OverlayResultValidatorTest.cpp │ │ ├── overlayng │ │ │ ├── CoverageUnionNGTest.cpp │ │ │ ├── ElevationModelTest.cpp │ │ │ ├── LineLimiterTest.cpp │ │ │ ├── OverlayGraphTest.cpp │ │ │ ├── OverlayNGEmptyCoordDimTest.cpp │ │ │ ├── OverlayNGFloatingNoderTest.cpp │ │ │ ├── OverlayNGGeometryCollectionTest.cpp │ │ │ ├── OverlayNGMixedPointsTest.cpp │ │ │ ├── OverlayNGPointsTest.cpp │ │ │ ├── OverlayNGRobustTest.cpp │ │ │ ├── OverlayNGSnappingNoderTest.cpp │ │ │ ├── OverlayNGSnappingOneTest.cpp │ │ │ ├── OverlayNGStrictModeTest.cpp │ │ │ ├── OverlayNGTest.cpp │ │ │ ├── OverlayNGZTest.cpp │ │ │ ├── PrecisionReducerTest.cpp │ │ │ ├── PrecisionUtilTest.cpp │ │ │ ├── RingClipperTest.cpp │ │ │ └── UnaryUnionNGTest.cpp │ │ ├── polygonize │ │ │ └── PolygonizeTest.cpp │ │ ├── relate │ │ │ ├── RelateBoundaryNodeRuleTest.cpp │ │ │ └── RelateOpTest.cpp │ │ ├── relateng │ │ │ ├── AdjacentEdgeLocatorTest.cpp │ │ │ ├── LinearBoundaryTest.cpp │ │ │ ├── PolygonNodeConverterTest.cpp │ │ │ ├── RelateGeometryTest.cpp │ │ │ ├── RelateNGBoundaryNodeRuleTest.cpp │ │ │ ├── RelateNGGCTest.cpp │ │ │ ├── RelateNGRobustnessTest.cpp │ │ │ ├── RelateNGTest.cpp │ │ │ ├── RelateNGTest.h │ │ │ ├── RelatePointLocatorTest.cpp │ │ │ └── RelatePredicateTest.cpp │ │ ├── sharedpaths │ │ │ └── SharedPathsOpTest.cpp │ │ └── valid │ │ │ ├── IsSimpleOpTest.cpp │ │ │ ├── IsValidOpTest.cpp │ │ │ ├── MakeValidTest.cpp │ │ │ ├── RepeatedPointRemoverTest.cpp │ │ │ ├── ValidClosedRingTest.cpp │ │ │ └── ValidSelfTouchingRingFormingHoleTest.cpp │ ├── precision │ │ ├── CommonBitsTest.cpp │ │ ├── GeometryPrecisionReducerTest.cpp │ │ └── SimpleGeometryPrecisionReducerTest.cpp │ ├── shape │ │ └── fractal │ │ │ ├── HilbertCodeTest.cpp │ │ │ ├── HilbertEncoderTest.cpp │ │ │ └── MortonCodeTest.cpp │ ├── simplify │ │ ├── DouglasPeuckerSimplifierTest.cpp │ │ ├── PolygonHullSimplifierTest.cpp │ │ └── TopologyPreservingSimplifierTest.cpp │ ├── triangulate │ │ ├── DelaunayTest.cpp │ │ ├── VoronoiTest.cpp │ │ ├── polygon │ │ │ ├── ConstrainedDelaunayTriangulatorTest.cpp │ │ │ ├── PolygonHoleJoinerTest.cpp │ │ │ └── PolygonTriangulatorTest.cpp │ │ └── quadedge │ │ │ ├── QuadEdgeSubdivisionTest.cpp │ │ │ ├── QuadEdgeTest.cpp │ │ │ └── VertexTest.cpp │ ├── tut │ │ ├── README │ │ ├── tut.hpp │ │ ├── tut_assert.hpp │ │ ├── tut_config.hpp │ │ ├── tut_console_reporter.hpp │ │ ├── tut_cppunit_reporter.hpp │ │ ├── tut_exception.hpp │ │ ├── tut_fpt.hpp │ │ ├── tut_macros.hpp │ │ ├── tut_main.hpp │ │ ├── tut_posix.hpp │ │ ├── tut_reporter.hpp │ │ ├── tut_restartable.hpp │ │ ├── tut_result.hpp │ │ ├── tut_runner.hpp │ │ └── tut_xml_reporter.hpp │ ├── util │ │ ├── NodingTestUtil.cpp │ │ ├── NodingTestUtil.h │ │ └── UniqueCoordinateArrayFilterTest.cpp │ └── utility.h └── xmltester │ ├── BufferResultMatcher.cpp │ ├── BufferResultMatcher.h │ ├── CMakeLists.txt │ ├── JTSXMLTester.sh │ ├── SingleSidedBufferResultMatcher.cpp │ ├── SingleSidedBufferResultMatcher.h │ ├── XMLTester.cpp │ ├── XMLTester.h │ ├── safe_to_xml.sh │ ├── testrunner.sh │ ├── tests │ ├── failure │ │ ├── issue-geos-344.xml │ │ ├── misc-TestBigNastyBuffer.xml │ │ ├── misc-TestSameDirection.xml │ │ ├── robust-TestRobustRelateFloat.xml │ │ └── robust-overlay-stmlf-failures.xml │ ├── general │ │ ├── MISSING │ │ ├── TestBoundary.xml │ │ ├── TestBuffer.xml │ │ ├── TestBufferMitredJoin.xml │ │ ├── TestCentroid.xml │ │ ├── TestConvexHull-big.xml │ │ ├── TestConvexHull.xml │ │ ├── TestDensify.xml │ │ ├── TestDistance.xml │ │ ├── TestEqualsExact.xml │ │ ├── TestInteriorPoint.xml │ │ ├── TestIntersectsPL.xml │ │ ├── TestMinimumClearance.xml │ │ ├── TestNGOverlayA.xml │ │ ├── TestNGOverlayAPrec.xml │ │ ├── TestNGOverlayEmpty.xml │ │ ├── TestNGOverlayGC.xml │ │ ├── TestNGOverlayL.xml │ │ ├── TestNGOverlayLPrec.xml │ │ ├── TestNGOverlayP.xml │ │ ├── TestNGOverlayPPrec.xml │ │ ├── TestOverlayAA.xml │ │ ├── TestOverlayAAPrec.xml │ │ ├── TestOverlayEmpty.xml │ │ ├── TestOverlayLA.xml │ │ ├── TestOverlayLAPrec.xml │ │ ├── TestOverlayLL.xml │ │ ├── TestOverlayLLPrec.xml │ │ ├── TestOverlayPA.xml │ │ ├── TestOverlayPL.xml │ │ ├── TestOverlayPLPrec.xml │ │ ├── TestOverlayPP.xml │ │ ├── TestPreparedIntersectsPL.xml │ │ ├── TestPreparedPointPredicate.xml │ │ ├── TestPreparedPolygonPredicate.xml │ │ ├── TestPreparedPredicatesWithGeometryCollection.xml │ │ ├── TestRectanglePredicate.xml │ │ ├── TestRelateAA.xml │ │ ├── TestRelateEmpty.xml │ │ ├── TestRelateGC.xml │ │ ├── TestRelateLA.xml │ │ ├── TestRelateLL.xml │ │ ├── TestRelatePA.xml │ │ ├── TestRelatePL.xml │ │ ├── TestRelatePP.xml │ │ ├── TestSimple.xml │ │ ├── TestSimplify.xml │ │ ├── TestUnaryUnion.xml │ │ ├── TestUnaryUnionFloating.xml │ │ ├── TestValid.xml │ │ ├── TestValid2-big.xml │ │ ├── TestValid2.xml │ │ └── TestWithinDistance.xml │ ├── issue │ │ ├── issue-geos-1018.xml │ │ ├── issue-geos-1085.xml │ │ ├── issue-geos-176.xml │ │ ├── issue-geos-188.xml │ │ ├── issue-geos-234.xml │ │ ├── issue-geos-244.xml │ │ ├── issue-geos-275.xml │ │ ├── issue-geos-350.xml │ │ ├── issue-geos-356.xml │ │ ├── issue-geos-358.xml │ │ ├── issue-geos-360.xml │ │ ├── issue-geos-366.xml │ │ ├── issue-geos-392.xml │ │ ├── issue-geos-398.xml │ │ ├── issue-geos-434.xml │ │ ├── issue-geos-459.xml │ │ ├── issue-geos-488.xml │ │ ├── issue-geos-527.xml │ │ ├── issue-geos-569.xml │ │ ├── issue-geos-582.xml │ │ ├── issue-geos-586.xml │ │ ├── issue-geos-590.xml │ │ ├── issue-geos-599.xml │ │ ├── issue-geos-605.xml │ │ ├── issue-geos-614.xml │ │ ├── issue-geos-615.xml │ │ ├── issue-geos-716.xml │ │ ├── issue-geos-837.xml │ │ ├── issue-geos-838.xml │ │ ├── issue-geos-990.xml │ │ └── issue-geos-994.xml │ ├── misc │ │ ├── Buffer-1.xml │ │ ├── Buffer-2.xml │ │ ├── InvalidRelates.xml │ │ ├── Segfaults.xml │ │ ├── TestBufferExternal-1.xml │ │ ├── TestBufferExternal-2.xml │ │ ├── TestIsValid.xml │ │ ├── buildarea.xml │ │ ├── fme.xml │ │ ├── heisenbugs.xml │ │ ├── hexwkb.xml │ │ ├── hole_from_shell.xml │ │ ├── hole_red.xml │ │ ├── linemerge.xml │ │ ├── makevalid.xml │ │ ├── robustness.xml │ │ ├── safe-16595.xml │ │ ├── safe-16596.xml │ │ ├── safe-TestBufferJagged.xml │ │ ├── singlesidedbuffer.xml │ │ ├── split.xml │ │ ├── stmlf-20061020-invalid-output.xml │ │ ├── stmlf-20061020.xml │ │ └── stmlf-20070119.xml │ ├── robust │ │ ├── TestRobustOverlayFixed.xml │ │ ├── TestRobustRelate.xml │ │ └── overlay │ │ │ ├── TestOverlay-geos-1034.xml │ │ │ ├── TestOverlay-geos-1046-union-lines.xml │ │ │ ├── TestOverlay-geos-1051.xml │ │ │ ├── TestOverlay-geos-153.xml │ │ │ ├── TestOverlay-geos-234.xml │ │ │ ├── TestOverlay-geos-275.xml │ │ │ ├── TestOverlay-geos-350.xml │ │ │ ├── TestOverlay-geos-358.xml │ │ │ ├── TestOverlay-geos-360.xml │ │ │ ├── TestOverlay-geos-368.xml │ │ │ ├── TestOverlay-geos-392-lines.xml │ │ │ ├── TestOverlay-geos-392.xml │ │ │ ├── TestOverlay-geos-398.xml │ │ │ ├── TestOverlay-geos-459.xml │ │ │ ├── TestOverlay-geos-488.xml │ │ │ ├── TestOverlay-geos-522.xml │ │ │ ├── TestOverlay-geos-527.xml │ │ │ ├── TestOverlay-geos-586.xml │ │ │ ├── TestOverlay-geos-599.xml │ │ │ ├── TestOverlay-geos-600-lines.xml │ │ │ ├── TestOverlay-geos-615.xml │ │ │ ├── TestOverlay-geos-737.xml │ │ │ ├── TestOverlay-geos-837.xml │ │ │ ├── TestOverlay-geos-838.xml │ │ │ ├── TestOverlay-geos-979.xml │ │ │ ├── TestOverlay-geos-994.xml │ │ │ ├── TestOverlay-geos-997-union-fail.xml │ │ │ ├── TestOverlay-geos-997-union-slow.xml │ │ │ ├── TestOverlay-geos-list.xml │ │ │ ├── TestOverlay-gisse-345341-lines.xml │ │ │ ├── TestOverlay-isochrone.xml │ │ │ ├── TestOverlay-jts-300.xml │ │ │ ├── TestOverlay-jts-798.xml │ │ │ ├── TestOverlay-jts-808.xml │ │ │ ├── TestOverlay-misc-1.xml │ │ │ ├── TestOverlay-misc-2.xml │ │ │ ├── TestOverlay-misc-3.xml │ │ │ ├── TestOverlay-misc-4.xml │ │ │ ├── TestOverlay-misc-5.xml │ │ │ ├── TestOverlay-osmwater.xml │ │ │ ├── TestOverlay-pg-4182-2.xml │ │ │ ├── TestOverlay-pg-4538.xml │ │ │ ├── TestOverlay-pg-4738.xml │ │ │ ├── TestOverlay-pg-list.xml │ │ │ ├── TestOverlay-qgis-29400.xml │ │ │ ├── TestOverlay-qgis-31552.xml │ │ │ ├── TestOverlay-qgis-37032.xml │ │ │ ├── TestOverlay-rsf-794.xml │ │ │ ├── TestOverlay-shapely-1061.xml │ │ │ ├── TestOverlay-shapely-829.xml │ │ │ └── TestOverlay-stmlf.xml │ └── validate │ │ ├── TestRelateAA-big.xml │ │ ├── TestRelateAA.xml │ │ ├── TestRelateAC.xml │ │ ├── TestRelateLA.xml │ │ ├── TestRelateLC.xml │ │ ├── TestRelateLL.xml │ │ ├── TestRelatePA.xml │ │ ├── TestRelatePL.xml │ │ └── TestRelatePP.xml │ └── tinyxml2 │ ├── README │ ├── tinyxml2.cpp │ └── tinyxml2.h ├── tools ├── CMakeLists.txt ├── astyle.sh ├── astyle │ ├── ASBeautifier.cpp │ ├── ASEnhancer.cpp │ ├── ASFormatter.cpp │ ├── ASLocalizer.cpp │ ├── ASLocalizer.h │ ├── ASResource.cpp │ ├── CMakeLists.txt │ ├── LICENSE.md │ ├── astyle.h │ ├── astyle_main.cpp │ └── astyle_main.h ├── build-cmake.bat ├── ci │ ├── berrie.sh │ ├── berrie64.sh │ ├── bessie.sh │ ├── bessie32.sh │ ├── common.sh │ ├── debbie.sh │ ├── geosop │ │ └── Dockerfile │ ├── releasenotes.pl │ ├── script.sh │ ├── script_cmake.sh │ └── winnie.sh ├── codespell.ignore ├── cppcheck.sh ├── findclassfiles ├── geos-config.in └── geos.pc.in ├── util ├── CMakeLists.txt ├── OrientationIndexViewer.cpp └── geosop │ ├── CMakeLists.txt │ ├── GeometryOp.cpp │ ├── GeometryOp.h │ ├── GeosOp.cpp │ ├── GeosOp.h │ ├── README.md │ └── cxxopts.hpp └── web ├── .hugo_build.lock ├── CMakeLists.txt ├── README.md ├── archetypes └── default.md ├── config.toml ├── content ├── _index.md ├── posts │ ├── 2021-10-01-geos-3-10-released.md │ ├── 2021-11-02-geos-3-10-1-released.md │ ├── 2021-11-02-geos-3-10-2-released.md │ ├── 2022-06-03-geos-3-10-3-released.md │ ├── 2022-07-01-geos-3-11-0-released.md │ ├── 2022-11-14-geos-3-11-1-released.md │ ├── 2023-03-16-geos-3-11-2-released.md │ ├── 2023-06-27-geos-3-12-released.md │ ├── 2023-11-11-geos-3-12-1-released.md │ ├── 2023-11-12-geos-3-9-5-and-3-8-4-released.md │ ├── 2024-08-13-relateng.md │ ├── 2024-09-06-geos-3-13-released.md │ ├── 2025-03-03-patch-releases.md │ └── _index.md ├── project │ ├── _index.md │ ├── coc.md │ ├── development │ │ ├── _index.md │ │ ├── ci_status.md │ │ └── tests.md │ ├── psc.md │ └── rfcs │ │ ├── _index.md │ │ ├── rfc01.md │ │ ├── rfc02.md │ │ ├── rfc03.md │ │ ├── rfc04.md │ │ ├── rfc05.md │ │ ├── rfc06.md │ │ ├── rfc07.md │ │ ├── rfc08.md │ │ ├── rfc09.md │ │ ├── rfc10.md │ │ └── rfc11.md ├── specifications │ ├── _index.md │ ├── geojson.md │ ├── wkb.md │ └── wkt.md └── usage │ ├── _index.md │ ├── bindings.md │ ├── c_api.md │ ├── cpp_api.md │ ├── download.md │ ├── doxygen.md │ ├── faq │ ├── geos-line-interpolated-precision.png │ ├── geos-line-intersect-precision.png │ └── index.md │ ├── install.md │ └── tools.md ├── data └── menu │ └── more.yaml ├── layouts └── shortcodes │ └── current_release.html ├── static ├── CNAME ├── custom.css ├── favicon │ ├── android-chrome-150x150.png │ ├── android-chrome-310x310.png │ ├── android-chrome-70x70.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-64x64.png │ ├── favicon.svg │ ├── mstile-150x150.png │ ├── mstile-310x310.png │ └── mstile-70x70.png ├── geos-logo │ ├── generate.sh │ ├── geos-lg-black.png │ ├── geos-lg-white.png │ └── geos-social-black.png └── web-logo.png └── themes └── hugo-geekdoc ├── LICENSE ├── README.md ├── VERSION ├── archetypes ├── docs.md └── posts.md ├── assets ├── search │ ├── config.json │ └── data.json └── sprites │ └── geekdoc.svg ├── data └── assets.json ├── i18n ├── cs.yaml ├── de.yaml ├── en.yaml ├── es.yaml ├── it.yaml ├── ja.yaml ├── nl.yaml └── zh-cn.yaml ├── images ├── readme.png ├── screenshot.png └── tn.png ├── layouts ├── 404.html ├── _default │ ├── _markup │ │ ├── render-codeblock-mermaid.html │ │ ├── render-heading.html │ │ ├── render-image.html │ │ └── render-link.html │ ├── baseof.html │ ├── list.html │ ├── single.html │ ├── taxonomy.html │ └── terms.html ├── partials │ ├── foot.html │ ├── head │ │ ├── custom.html │ │ ├── favicons.html │ │ ├── meta.html │ │ ├── microformats.html │ │ ├── others.html │ │ └── rel-me.html │ ├── language.html │ ├── menu-bundle.html │ ├── menu-extra.html │ ├── menu-filetree.html │ ├── menu-nextprev.html │ ├── menu.html │ ├── microformats │ │ ├── opengraph.html │ │ ├── schema.html │ │ └── twitter_cards.html │ ├── page-header.html │ ├── pagination.html │ ├── posts │ │ └── metadata.html │ ├── search.html │ ├── site-footer.html │ ├── site-header.html │ ├── svg-icon-symbols.html │ └── utils │ │ ├── content.html │ │ ├── description.html │ │ ├── featured.html │ │ └── title.html ├── posts │ ├── list.html │ └── single.html ├── robots.txt └── shortcodes │ ├── button.html │ ├── columns.html │ ├── expand.html │ ├── hint.html │ ├── icon.html │ ├── img.html │ ├── include.html │ ├── katex.html │ ├── mermaid.html │ ├── progress.html │ ├── propertylist.html │ ├── tab.html │ ├── tabs.html │ ├── toc-tree.html │ └── toc.html ├── static ├── brand.svg ├── custom.css ├── favicon │ ├── android-chrome-144x144.png │ ├── android-chrome-192x192.png │ ├── android-chrome-256x256.png │ ├── android-chrome-36x36.png │ ├── android-chrome-384x384.png │ ├── android-chrome-48x48.png │ ├── android-chrome-512x512.png │ ├── android-chrome-72x72.png │ ├── android-chrome-96x96.png │ ├── apple-touch-icon-1024x1024.png │ ├── apple-touch-icon-114x114.png │ ├── apple-touch-icon-120x120.png │ ├── apple-touch-icon-144x144.png │ ├── apple-touch-icon-152x152.png │ ├── apple-touch-icon-167x167.png │ ├── apple-touch-icon-180x180.png │ ├── apple-touch-icon-57x57.png │ ├── apple-touch-icon-60x60.png │ ├── apple-touch-icon-72x72.png │ ├── apple-touch-icon-76x76.png │ ├── apple-touch-icon-precomposed.png │ ├── apple-touch-icon.png │ ├── apple-touch-startup-image-1125x2436.png │ ├── apple-touch-startup-image-1136x640.png │ ├── apple-touch-startup-image-1170x2532.png │ ├── apple-touch-startup-image-1242x2208.png │ ├── apple-touch-startup-image-1242x2688.png │ ├── apple-touch-startup-image-1284x2778.png │ ├── apple-touch-startup-image-1334x750.png │ ├── apple-touch-startup-image-1536x2048.png │ ├── apple-touch-startup-image-1620x2160.png │ ├── apple-touch-startup-image-1668x2224.png │ ├── apple-touch-startup-image-1668x2388.png │ ├── apple-touch-startup-image-1792x828.png │ ├── apple-touch-startup-image-2048x1536.png │ ├── apple-touch-startup-image-2048x2732.png │ ├── apple-touch-startup-image-2160x1620.png │ ├── apple-touch-startup-image-2208x1242.png │ ├── apple-touch-startup-image-2224x1668.png │ ├── apple-touch-startup-image-2388x1668.png │ ├── apple-touch-startup-image-2436x1125.png │ ├── apple-touch-startup-image-2532x1170.png │ ├── apple-touch-startup-image-2688x1242.png │ ├── apple-touch-startup-image-2732x2048.png │ ├── apple-touch-startup-image-2778x1284.png │ ├── apple-touch-startup-image-640x1136.png │ ├── apple-touch-startup-image-750x1334.png │ ├── apple-touch-startup-image-828x1792.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-48x48.png │ ├── favicon.ico │ ├── favicon.svg │ ├── manifest.json │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ └── mstile-70x70.png ├── fonts │ ├── GeekdocIcons.woff │ ├── GeekdocIcons.woff2 │ ├── KaTeX_AMS-Regular.woff │ ├── KaTeX_AMS-Regular.woff2 │ ├── KaTeX_Caligraphic-Bold.woff │ ├── KaTeX_Caligraphic-Bold.woff2 │ ├── KaTeX_Caligraphic-Regular.woff │ ├── KaTeX_Caligraphic-Regular.woff2 │ ├── KaTeX_Fraktur-Bold.woff │ ├── KaTeX_Fraktur-Bold.woff2 │ ├── KaTeX_Fraktur-Regular.woff │ ├── KaTeX_Fraktur-Regular.woff2 │ ├── KaTeX_Main-Bold.woff │ ├── KaTeX_Main-Bold.woff2 │ ├── KaTeX_Main-BoldItalic.woff │ ├── KaTeX_Main-BoldItalic.woff2 │ ├── KaTeX_Main-Italic.woff │ ├── KaTeX_Main-Italic.woff2 │ ├── KaTeX_Main-Regular.woff │ ├── KaTeX_Main-Regular.woff2 │ ├── KaTeX_Math-BoldItalic.woff │ ├── KaTeX_Math-BoldItalic.woff2 │ ├── KaTeX_Math-Italic.woff │ ├── KaTeX_Math-Italic.woff2 │ ├── KaTeX_SansSerif-Bold.woff │ ├── KaTeX_SansSerif-Bold.woff2 │ ├── KaTeX_SansSerif-Italic.woff │ ├── KaTeX_SansSerif-Italic.woff2 │ ├── KaTeX_SansSerif-Regular.woff │ ├── KaTeX_SansSerif-Regular.woff2 │ ├── KaTeX_Script-Regular.woff │ ├── KaTeX_Script-Regular.woff2 │ ├── KaTeX_Size1-Regular.woff │ ├── KaTeX_Size1-Regular.woff2 │ ├── KaTeX_Size2-Regular.woff │ ├── KaTeX_Size2-Regular.woff2 │ ├── KaTeX_Size3-Regular.woff │ ├── KaTeX_Size3-Regular.woff2 │ ├── KaTeX_Size4-Regular.woff │ ├── KaTeX_Size4-Regular.woff2 │ ├── KaTeX_Typewriter-Regular.woff │ ├── KaTeX_Typewriter-Regular.woff2 │ ├── LiberationMono.woff │ ├── LiberationMono.woff2 │ ├── LiberationSans-Bold.woff │ ├── LiberationSans-Bold.woff2 │ ├── LiberationSans-BoldItalic.woff │ ├── LiberationSans-BoldItalic.woff2 │ ├── LiberationSans-Italic.woff │ ├── LiberationSans-Italic.woff2 │ ├── LiberationSans.woff │ ├── LiberationSans.woff2 │ ├── Metropolis.woff │ └── Metropolis.woff2 ├── img │ └── geekdoc-stack.svg ├── js │ ├── 105-7a46a89c.chunk.min.js │ ├── 116-341f79d9.chunk.min.js │ ├── 120-8522b24e.chunk.min.js │ ├── 177-040c64bb.chunk.min.js │ ├── 209-c3adcb05.chunk.min.js │ ├── 246-0f95be8b.chunk.min.js │ ├── 264-68fcc9b2.chunk.min.js │ ├── 311-5bd6ac4e.chunk.min.js │ ├── 321-479928b6.chunk.min.js │ ├── 422-156f22f0.chunk.min.js │ ├── 435-486719a5.chunk.min.js │ ├── 451-2756cb7b.chunk.min.js │ ├── 522-68ed520b.chunk.min.js │ ├── 604-5faadc0f.chunk.min.js │ ├── 637-3456bdaf.chunk.min.js │ ├── 637-3456bdaf.chunk.min.js.LICENSE.txt │ ├── 648-d659639f.chunk.min.js │ ├── 670-b8cde8a2.chunk.min.js │ ├── 684-c45993cc.chunk.min.js │ ├── 759-e5cc88d0.chunk.min.js │ ├── 770-a679cffc.chunk.min.js │ ├── 796-b653a12b.chunk.min.js │ ├── 851-43fe3c07.chunk.min.js │ ├── 861-619d670c.chunk.min.js │ ├── 880-5781b8a1.chunk.min.js │ ├── 902-7a89ddf4.chunk.min.js │ ├── 968-bb8c6ba1.chunk.min.js │ ├── 968-bb8c6ba1.chunk.min.js.LICENSE.txt │ ├── 978-b383dcdf.chunk.min.js │ ├── 980-8efa2815.chunk.min.js │ ├── colortheme-d3e4d351.bundle.min.js │ ├── katex-d4d5881d.bundle.min.js │ ├── main-fbb9c8b0.bundle.min.js │ ├── main-fbb9c8b0.bundle.min.js.LICENSE.txt │ ├── mermaid-793cb063.bundle.min.js │ ├── search-83320133.bundle.min.js │ └── search-83320133.bundle.min.js.LICENSE.txt ├── katex-66092164.min.css ├── main-ba0e2765.min.css ├── mobile-79ddc617.min.css └── print-735ccc12.min.css └── theme.toml /.astylerc: -------------------------------------------------------------------------------- 1 | --style=stroustrup 2 | --indent=spaces=4 3 | --max-code-length=120 4 | --lineend=linux 5 | --unpad-paren 6 | --pad-oper 7 | --align-pointer=type 8 | --align-reference=type 9 | --break-closing-braces 10 | --add-braces 11 | --break-return-type 12 | --break-after-logical 13 | -------------------------------------------------------------------------------- /.codecov.yml: -------------------------------------------------------------------------------- 1 | coverage: 2 | precision: 2 3 | 4 | ignore: 5 | - "tests/unit/tut" 6 | - "tests/xmltester/tinyxml2" 7 | 8 | comment: off 9 | -------------------------------------------------------------------------------- /.codespellrc: -------------------------------------------------------------------------------- 1 | [codespell] 2 | skip = ./tools/astyle,./src/deps,./web/themes,./util/geosop/cxxopts.hpp 3 | ignore-words = ./tools/codespell.ignore 4 | -------------------------------------------------------------------------------- /.drone-1.0.yml: -------------------------------------------------------------------------------- 1 | # Syntax documentation: 2 | # https://docs.drone.io/pipeline/overview/ 3 | 4 | # See https://git.osgeo.org/gitea/geos/geos-docker 5 | test-image: &test-image docker.osgeo.org/geos/build-test:alpine 6 | 7 | kind: pipeline 8 | name: default 9 | 10 | clone: 11 | image: plugins/git 12 | depth: 50 13 | recursive: false 14 | 15 | steps: 16 | - name: build 17 | image: *test-image 18 | pull: always 19 | commands: 20 | - mkdir build 21 | - cd build 22 | - cmake --version 23 | - CXXFLAGS="-O0" cmake .. 24 | - make V=0 25 | - name: check 26 | image: *test-image 27 | commands: 28 | - cd build 29 | - ctest --output-on-failure . 30 | # - name: docs 31 | # image: *test-image 32 | # commands: 33 | # - make doxygen-checked 34 | # - name: valgrindcheck 35 | # image: *test-image 36 | # commands: 37 | # - CXXFLAGS="-O0" make valgrindcheck V=0 38 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # every file needs these 7 | [*] 8 | charset = utf-8 9 | end_of_line = lf 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true 12 | 13 | # C/C++ files want 4-space indentation 14 | [*.{h,cpp,inl,h.in,c}] 15 | indent_style = space 16 | indent_size = 4 17 | 18 | # Makefiles want tab indentation 19 | [Makefile.am] 20 | indent_style = tab 21 | indent_size = 2 22 | 23 | # YML files want space indentation 24 | [*.yml] 25 | indent_style = space 26 | indent_size = 2 27 | 28 | # appveyor.yml is meant for windows (mloskot said) 29 | [appveyor.yml] 30 | end_of_line = crlf 31 | 32 | # Visual-C files want carriage returns too 33 | [*.{vc,opt}] 34 | end_of_line = crlf 35 | 36 | # CMake configuration files 37 | [CMakeLists.txt] 38 | indent_style = space 39 | indent_size = 2 40 | 41 | # CMake modules 42 | [*.cmake] 43 | indent_style = space 44 | indent_size = 2 45 | 46 | -------------------------------------------------------------------------------- /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | f43aa53d27b3889823365317fcf4ff45e60dc90f 2 | -------------------------------------------------------------------------------- /.github/workflows/container.yml: -------------------------------------------------------------------------------- 1 | # GitHub Actions for GEOS 2 | # 3 | # Paul Ramsey 4 | # Build a geosop container and deploy to GHCR 5 | 6 | name: 'Container' 7 | 8 | on: 9 | push: 10 | branches: 11 | - main 12 | paths-ignore: 13 | - 'web/**' 14 | 15 | jobs: 16 | 17 | container: 18 | 19 | name: 'Build container' 20 | if: github.repository == 'libgeos/geos' 21 | runs-on: ubuntu-latest 22 | 23 | steps: 24 | 25 | - name: 'Check Out' 26 | uses: actions/checkout@v4 27 | 28 | - name: Set up Docker Buildx 29 | uses: docker/setup-buildx-action@v2 30 | 31 | - name: Login to GitHub Container Registry 32 | uses: docker/login-action@v2 33 | with: 34 | registry: ghcr.io 35 | username: ${{ github.repository_owner }} 36 | password: ${{ secrets.GITHUB_TOKEN }} 37 | 38 | - name: Get Dockerfile 39 | run: | 40 | cp tools/ci/geosop/Dockerfile . 41 | 42 | - name: Build and Push 43 | uses: docker/build-push-action@v4 44 | with: 45 | context: . 46 | # platforms: linux/amd64,linux/arm64 47 | platforms: linux/amd64 48 | push: true 49 | tags: | 50 | ghcr.io/libgeos/geosop:latest 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /*build* 2 | /*install* 3 | aclocal.m4 4 | Makefile.in 5 | Makefile 6 | .libs 7 | .deps 8 | .vimrc 9 | .dirstamp 10 | .tm_properties 11 | *\~ 12 | *.o 13 | *.orig 14 | *.lo 15 | *.la 16 | *.log 17 | *.swo 18 | *.swp 19 | *.trs 20 | *.exe 21 | CMakeFiles 22 | CMakeCache.txt 23 | CMakeLists.txt.user 24 | DartConfiguration.tcl 25 | .DS_Store 26 | bin 27 | lib 28 | tags 29 | tools/geos.pc 30 | tools/geos-config 31 | include/geos/version.h 32 | capi/geos_c.h 33 | !/docker/**/README 34 | !/docker/**/Makefile 35 | /.vs* 36 | .idea/ 37 | .project 38 | .ccache/ 39 | web/public/ 40 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | # see https://www.gitpod.io/docs/config-gitpod-file 2 | # for more info 3 | 4 | tasks: 5 | - init: mkdir _build && cd _build && cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. 6 | -------------------------------------------------------------------------------- /.mailmap: -------------------------------------------------------------------------------- 1 | Brendan Ward 2 | Casper van der Wel 3 | Daniel Baston 4 | Daniel Baston 5 | Daniel Baston 6 | Howard Butler 7 | Martin Davis 8 | Martin Davis 9 | Mateusz Łoskot 10 | Paul Ramsey 11 | Paul Ramsey 12 | Paul van der Linden 13 | Raul Marin 14 | Regina Obe 15 | Sandro Santilli 16 | Vicky Vergara 17 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | Code of Conduct 2 | =============== 3 | 4 | See [the GEOS Code of Conduct](https://libgeos.org/project/coc/). 5 | -------------------------------------------------------------------------------- /Version.txt: -------------------------------------------------------------------------------- 1 | 2 | # GEOS Versions 3 | GEOS_VERSION_MAJOR=3 4 | GEOS_VERSION_MINOR=14 5 | GEOS_VERSION_PATCH=0 6 | 7 | # OPTIONS: "", "dev", "rc1" etc. 8 | GEOS_PATCH_WORD=dev 9 | 10 | # GEOS CAPI Versions 11 | # 12 | # - For a release with no interface changes just bump REVISION. 13 | # ( Even if *nothing* changed in CAPI ) 14 | # - Adding interfaces, bump CURRENT/AGE, set REVISION to 0. 15 | # - Deleting interfaces / compatibility issues - bump CURRENT, others to zero 16 | # ( THIS MUST BE CAREFULLY AVOIDED ) 17 | # 18 | CAPI_INTERFACE_CURRENT=21 19 | CAPI_INTERFACE_REVISION=0 20 | CAPI_INTERFACE_AGE=20 21 | 22 | # JTS Port 23 | JTS_PORT=1.18.0 24 | -------------------------------------------------------------------------------- /benchmarks/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Part of CMake configuration for GEOS 3 | # 4 | # Copyright (C) 2018 Mateusz Loskot 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | 12 | find_package(benchmark QUIET) 13 | 14 | add_executable(perf_class_sizes ClassSizes.cpp) 15 | target_include_directories(perf_class_sizes PRIVATE 16 | $ 17 | $) 18 | target_link_libraries(perf_class_sizes PRIVATE geos_cxx_flags) 19 | 20 | add_subdirectory(capi) 21 | 22 | add_subdirectory(algorithm) 23 | add_subdirectory(geom) 24 | add_subdirectory(index) 25 | add_subdirectory(operation) 26 | -------------------------------------------------------------------------------- /benchmarks/README.md: -------------------------------------------------------------------------------- 1 | ## Benchmarks 2 | 3 | A variety of programs to execute various kinds of tests, 4 | including benchmarks, stability and robustness tests. 5 | 6 | ### Building 7 | 8 | Building the benchmark tests must be enabled using 9 | 10 | cmake -DBUILD_BENCHMARKS=ON .. 11 | -------------------------------------------------------------------------------- /benchmarks/algorithm/locate/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################# 2 | # 3 | # CMake configuration for GEOS benchmarks/operation/predicate tests 4 | # 5 | # Copyright (C) 2017 Mateusz Loskot 6 | # 7 | # This is free software; you can redistribute and/or modify it under 8 | # the terms of the GNU Lesser General Public Licence as published 9 | # by the Free Software Foundation. 10 | # See the COPYING file for more information. 11 | # 12 | ################################################################################# 13 | 14 | if (benchmark_FOUND) 15 | add_executable(perf_point_locator PointLocatorPerfTest.cpp) 16 | target_include_directories(perf_point_locator PUBLIC 17 | $ 18 | $ 19 | $) 20 | target_link_libraries(perf_point_locator PRIVATE 21 | benchmark::benchmark geos) 22 | endif() 23 | -------------------------------------------------------------------------------- /benchmarks/capi/memleak_mp_prep.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "geos_c.h" 4 | 5 | int main(void) { 6 | GEOSWKTReader *reader; 7 | GEOSGeometry *mp; 8 | GEOSGeometry *p; 9 | const GEOSPreparedGeometry *prep_mp; 10 | unsigned long int i; 11 | unsigned long int count = 1000000; 12 | 13 | initGEOS(NULL, NULL); 14 | 15 | reader = GEOSWKTReader_create(); 16 | 17 | mp = GEOSWKTReader_read(reader, 18 | "MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)))"); 19 | 20 | p = GEOSWKTReader_read(reader, 21 | "POLYGON((2 2, 6 2, 6 6, 2 6, 2 2))"); 22 | 23 | assert(GEOSisValid(mp)); 24 | assert(GEOSisValid(p)); 25 | 26 | prep_mp = GEOSPrepare(mp); 27 | 28 | for (i=0; i 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | 12 | add_subdirectory(chain) 13 | 14 | IF(benchmark_FOUND) 15 | add_executable(perf_spatial_index SpatialIndexPerfTest.cpp) 16 | target_include_directories(perf_spatial_index PUBLIC 17 | $ 18 | $) 19 | target_link_libraries(perf_spatial_index PRIVATE 20 | benchmark::benchmark geos) 21 | endif() 22 | -------------------------------------------------------------------------------- /benchmarks/operation/buffer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Part of CMake configuration for GEOS 3 | # 4 | # Copyright (C) 2018 Mateusz Loskot 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | add_executable(perf_iterated_buffer IteratedBufferStressTest.cpp) 12 | target_link_libraries(perf_iterated_buffer PRIVATE geos) 13 | -------------------------------------------------------------------------------- /benchmarks/operation/predicate/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Part of CMake configuration for GEOS 3 | # 4 | # Copyright (C) 2018 Mateusz Loskot 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | add_executable(perf_rectangle_intersects RectangleIntersectsPerfTest.cpp) 12 | target_link_libraries(perf_rectangle_intersects PRIVATE geos) 13 | -------------------------------------------------------------------------------- /cmake/geos-config.cmake: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Part of CMake configuration for GEOS 3 | # 4 | # Copyright (C) 2018 Mateusz Loskot 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | include("${CMAKE_CURRENT_LIST_DIR}/geos-targets.cmake") 12 | -------------------------------------------------------------------------------- /configure: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | which cmake > /dev/null 2>&1 || { 4 | echo "You need cmake to build this package" >&2 5 | exit 1 6 | } 7 | 8 | srcdir=$(dirname $0) 9 | 10 | usage() { 11 | echo "$0 [--prefix=] [--enable-debug] [--help]" 12 | } 13 | 14 | cmd=cmake 15 | 16 | options=$(getopt -l "help,enable-debug,prefix:" "" "$@") 17 | #echo XXXX ${options} 18 | eval set -- "$options" 19 | 20 | while true; do 21 | case $1 in 22 | --prefix) 23 | shift 24 | cmd="${cmd} -DCMAKE_INSTALL_PREFIX:PATH=$1" 25 | ;; 26 | --enable-debug) 27 | cmd="${cmd} -DCMAKE_BUILD_TYPE=RelWithDebInfo" 28 | ;; 29 | --help) 30 | usage 31 | exit 32 | ;; 33 | --) 34 | shift 35 | break 36 | ;; 37 | *) 38 | echo "Unrecognized switch $1" >&2 39 | usage >&2 40 | exit 1 41 | ;; 42 | esac 43 | shift 44 | done 45 | 46 | cmd="${cmd} ${srcdir}" 47 | 48 | echo 49 | echo "WARNING: this script is a wrapper for cmake" 50 | echo 51 | echo "INFO: Invoking ${cmd}" 52 | echo 53 | $cmd 54 | 55 | echo 56 | echo "HINT: for interactive configuration use ccmake ${srcdir}" 57 | echo 58 | -------------------------------------------------------------------------------- /debian/Makefile: -------------------------------------------------------------------------------- 1 | deb: 2 | ln -sf libgeos-dev.install libgeos-dev.files 3 | ln -sf libgeos.install libgeos.files 4 | cd .. && fakeroot debian/rules binary 5 | 6 | clean: 7 | rm -f libgeos-dev.files 8 | rm -f libgeos.files 9 | cd .. && fakeroot debian/rules clean 10 | -------------------------------------------------------------------------------- /debian/changelog: -------------------------------------------------------------------------------- 1 | geos (2.1.0-1) unstable; urgency=low 2 | 3 | * Debian Package rebuild. 4 | 5 | -- Alex Bodnaru Sat, 27 Nov 2004 04:03:01 +0200 6 | 7 | geos (2.0.1-1) unstable; urgency=low 8 | 9 | * Initial Release. 10 | 11 | -- Alex Bodnaru Mon, 8 Nov 2004 06:47:01 +0200 12 | 13 | -------------------------------------------------------------------------------- /debian/compat: -------------------------------------------------------------------------------- 1 | 4 2 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | This package was debianized by Alex Bodnaru on 2 | Mon, 8 Nov 2004 06:47:01 +0200. 3 | 4 | It was downloaded from http://geos.osgeo.org 5 | 6 | Upstream Authors: See /usr/share/libgeos/AUTHORS 7 | 8 | License: LGPL 9 | 10 | Copyright: 11 | 12 | This package is free software; you can redistribute it and/or 13 | modify it under the terms of the GNU Lesser General Public 14 | License as published by the Free Software Foundation; either 15 | version 2 of the License, or (at your option) any later version. 16 | 17 | This package is distributed in the hope that it will be useful, 18 | but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 | Lesser General Public License for more details. 21 | 22 | You should have received a copy of the GNU Lesser General Public 23 | License along with this package; if not, write to the Free Software 24 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25 | 26 | On Debian systems, the complete text of the GNU Lesser General 27 | Public License can be found in `/usr/share/common-licenses/LGPL'. 28 | 29 | -------------------------------------------------------------------------------- /debian/libgeos-dev.dirs: -------------------------------------------------------------------------------- 1 | usr/bin 2 | usr/lib 3 | usr/include 4 | usr/include/geos 5 | -------------------------------------------------------------------------------- /debian/libgeos-dev.docs: -------------------------------------------------------------------------------- 1 | README 2 | NEWS 3 | TODO 4 | AUTHORS 5 | -------------------------------------------------------------------------------- /debian/libgeos-dev.install: -------------------------------------------------------------------------------- 1 | usr/bin/* 2 | usr/include/* 3 | usr/lib/lib*.a 4 | usr/lib/lib*.so 5 | usr/lib/*.la 6 | usr/share/man/man1/* 7 | -------------------------------------------------------------------------------- /debian/libgeos-dev.manpages: -------------------------------------------------------------------------------- 1 | debian/geos-config.1 2 | -------------------------------------------------------------------------------- /debian/libgeos-doc.doc-base: -------------------------------------------------------------------------------- 1 | Document: geos-reference-manual 2 | Title: GEOS Reference Manual 3 | Author: See /usr/share/doc/libgeos/AUTHORS 4 | Abstract: This manual provides the libgeos 5 | API reference. 6 | Section: science 7 | 8 | Format: HTML 9 | Index: /usr/share/doc/libgeos-doc/html/index.html 10 | Files: /usr/share/doc/libgeos-doc/html/*.html 11 | -------------------------------------------------------------------------------- /debian/libgeos-doc.docs: -------------------------------------------------------------------------------- 1 | doc/doxygen_docs/html 2 | README 3 | AUTHORS 4 | -------------------------------------------------------------------------------- /debian/libgeos.dirs: -------------------------------------------------------------------------------- 1 | usr/lib 2 | -------------------------------------------------------------------------------- /debian/libgeos.docs: -------------------------------------------------------------------------------- 1 | NEWS 2 | TODO 3 | AUTHORS 4 | -------------------------------------------------------------------------------- /debian/libgeos.install: -------------------------------------------------------------------------------- 1 | usr/lib/lib*.so.* 2 | -------------------------------------------------------------------------------- /debian/makedoc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd doc 4 | make doxygen-html 5 | cd doxygen_docs 6 | cd ../.. 7 | mkdir -p debian/tmp/usr/share/man/man1 8 | cp debian/geos-config.1 debian/tmp/usr/share/man/man1 9 | -------------------------------------------------------------------------------- /debian/watch: -------------------------------------------------------------------------------- 1 | # Example watch control file for uscan 2 | # Rename this file to "watch" and then you can run the "uscan" command 3 | # to check for upstream updates and more. 4 | # Site Directory Pattern Version Script 5 | version=2 6 | geos.refractions.net / geos-(.*)\.tar.bz2 debian uupdate 7 | -------------------------------------------------------------------------------- /doxygen/README: -------------------------------------------------------------------------------- 1 | To build Doxygen documentation use: 2 | 3 | make doxygen-html 4 | 5 | Take a look at example.cpp to get started. 6 | -------------------------------------------------------------------------------- /examples/.gitignore: -------------------------------------------------------------------------------- 1 | _build/ 2 | capi_read 3 | capi_prepared 4 | capi_strtree 5 | capi_read_ts 6 | cpp_strtree 7 | cpp_read 8 | -------------------------------------------------------------------------------- /include/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Part of CMake configuration for GEOS 3 | # 4 | # Copyright (C) 2018 Mateusz Loskot 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | file(GLOB_RECURSE _headers ${CMAKE_CURRENT_LIST_DIR}/*.h CONFIGURE_DEPEND) 12 | target_sources(geos PRIVATE ${_headers}) 13 | unset(_headers) 14 | 15 | target_include_directories(geos 16 | PUBLIC 17 | $ 18 | $ 19 | $) 20 | 21 | set(VERSION ${GEOS_VERSION}) 22 | set(VERSION_MAJOR ${GEOS_VERSION_MAJOR}) 23 | set(VERSION_MINOR ${GEOS_VERSION_MINOR}) 24 | set(VERSION_PATCH ${GEOS_VERSION_PATCH}) 25 | 26 | configure_file(${CMAKE_CURRENT_LIST_DIR}/geos/version.h.in 27 | ${CMAKE_CURRENT_BINARY_DIR}/geos/version.h 28 | @ONLY) 29 | 30 | unset(VERSION) 31 | unset(VERSION_MAJOR) 32 | unset(VERSION_MINOR) 33 | unset(VERSION_PATCH) 34 | -------------------------------------------------------------------------------- /include/geos/algorithm/PointInRing.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2005-2006 Refractions Research Inc. 7 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 8 | * 9 | * This is free software; you can redistribute and/or modify it under 10 | * the terms of the GNU Lesser General Public Licence as published 11 | * by the Free Software Foundation. 12 | * See the COPYING file for more information. 13 | * 14 | **********************************************************************/ 15 | 16 | #pragma once 17 | 18 | #include 19 | 20 | // Forward declarations 21 | namespace geos { 22 | namespace geom { 23 | class Coordinate; 24 | } 25 | } 26 | 27 | namespace geos { 28 | namespace algorithm { // geos::algorithm 29 | 30 | class GEOS_DLL PointInRing { 31 | public: 32 | virtual 33 | ~PointInRing() {} 34 | virtual bool isInside(const geom::Coordinate& pt) = 0; 35 | }; 36 | 37 | } // namespace geos::algorithm 38 | } // namespace geos 39 | 40 | 41 | -------------------------------------------------------------------------------- /include/geos/geomgraph/index/SweepLineEventObj.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2005-2006 Refractions Research Inc. 7 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 8 | * 9 | * This is free software; you can redistribute and/or modify it under 10 | * the terms of the GNU Lesser General Public Licence as published 11 | * by the Free Software Foundation. 12 | * See the COPYING file for more information. 13 | * 14 | **********************************************************************/ 15 | 16 | #pragma once 17 | 18 | #include 19 | 20 | namespace geos { 21 | namespace geomgraph { // geos::geomgraph 22 | namespace index { // geos::geomgraph::index 23 | 24 | // This is here so that SweepLineEvent constructor 25 | // can use it as argument type. 26 | // Both SweepLineSegment and MonotoneChain will 27 | // inherit from it. 28 | class GEOS_DLL SweepLineEventOBJ { 29 | public: 30 | virtual 31 | ~SweepLineEventOBJ() {} 32 | }; 33 | 34 | 35 | } // namespace geos.geomgraph.index 36 | } // namespace geos.geomgraph 37 | } // namespace geos 38 | 39 | -------------------------------------------------------------------------------- /include/geos/index/ItemVisitor.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2006 Refractions Research Inc. 7 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 8 | * 9 | * This is free software; you can redistribute and/or modify it under 10 | * the terms of the GNU Lesser General Public Licence as published 11 | * by the Free Software Foundation. 12 | * See the COPYING file for more information. 13 | * 14 | **********************************************************************/ 15 | 16 | #pragma once 17 | 18 | #include 19 | 20 | namespace geos { 21 | namespace index { 22 | 23 | /** \brief 24 | * A visitor for items in an index. 25 | * 26 | * Last port: index/ItemVisitor.java rev. 1.2 (JTS-1.7) 27 | */ 28 | class GEOS_DLL ItemVisitor { 29 | public: 30 | virtual void visitItem(void*) = 0; 31 | 32 | virtual 33 | ~ItemVisitor() {} 34 | }; 35 | 36 | } // namespace geos.index 37 | } // namespace geos 38 | 39 | -------------------------------------------------------------------------------- /include/geos/index/kdtree/KdNodeVisitor.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2020 Paul Ramsey 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | ********************************************************************** 14 | * 15 | * Last port: index/kdtree/Node.java rev 1.8 (JTS-1.10) 16 | * 17 | **********************************************************************/ 18 | 19 | #pragma once 20 | 21 | #include 22 | 23 | namespace geos { 24 | namespace index { // geos::index 25 | namespace kdtree { // geos::index::kdtree 26 | 27 | class GEOS_DLL KdNodeVisitor { 28 | 29 | private: 30 | 31 | protected: 32 | 33 | public: 34 | 35 | KdNodeVisitor() {}; 36 | virtual void visit(KdNode *node) = 0; 37 | 38 | 39 | }; 40 | 41 | 42 | } // namespace geos::index::kdtree 43 | } // namespace geos::index 44 | } // namespace geos 45 | 46 | -------------------------------------------------------------------------------- /include/geos/index/strtree/EnvelopeUtil.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2019 Paul Ramsey 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | #pragma once 15 | 16 | #include 17 | 18 | namespace geos { 19 | namespace index { // geos::index 20 | namespace strtree { // geos::index::strtree 21 | 22 | class GEOS_DLL EnvelopeUtil { 23 | public: 24 | // EnvelopeUtil(const void* newBounds, void* newItem); 25 | // ~EnvelopeUtil() override = default; 26 | 27 | static double maximumDistance(const geom::Envelope* env1, const geom::Envelope* env2); 28 | 29 | }; 30 | 31 | } // namespace geos::index::strtree 32 | } // namespace geos::index 33 | } // namespace geos 34 | -------------------------------------------------------------------------------- /include/geos/index/sweepline/SweepLineInterval.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2006 Refractions Research Inc. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #pragma once 16 | 17 | #include 18 | 19 | namespace geos { 20 | namespace index { // geos.index 21 | namespace sweepline { // geos:index:sweepline 22 | 23 | class GEOS_DLL SweepLineInterval { 24 | public: 25 | SweepLineInterval(double newMin, double newMax, void* newItem = nullptr); 26 | double getMin(); 27 | double getMax(); 28 | void* getItem(); 29 | private: 30 | double min, max; 31 | void* item; 32 | }; 33 | 34 | } // namespace geos:index:sweepline 35 | } // namespace geos:index 36 | } // namespace geos 37 | 38 | -------------------------------------------------------------------------------- /include/geos/index/sweepline/SweepLineOverlapAction.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2006 Refractions Research Inc. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #pragma once 16 | 17 | #include 18 | 19 | // Forward declarations 20 | namespace geos { 21 | namespace index { 22 | namespace sweepline { 23 | class SweepLineInterval; 24 | } 25 | } 26 | } 27 | 28 | namespace geos { 29 | namespace index { // geos.index 30 | namespace sweepline { // geos:index:sweepline 31 | 32 | class GEOS_DLL SweepLineOverlapAction { 33 | public: 34 | virtual void overlap(SweepLineInterval* s0, SweepLineInterval* s1) = 0; 35 | 36 | virtual 37 | ~SweepLineOverlapAction() {} 38 | }; 39 | 40 | 41 | } // namespace geos:index:sweepline 42 | } // namespace geos:index 43 | } // namespace geos 44 | 45 | -------------------------------------------------------------------------------- /include/geos/io/WKBStreamReader.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2020 Martin Davis 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #pragma once 16 | 17 | #include 18 | #include 19 | #include 20 | 21 | // Forward declarations 22 | namespace geos { 23 | namespace geom { 24 | class Geometry; 25 | class PrecisionModel; 26 | } 27 | } 28 | 29 | namespace geos { 30 | namespace io { 31 | 32 | class GEOS_DLL WKBStreamReader { 33 | 34 | public: 35 | WKBStreamReader(std::istream& instr); 36 | ~WKBStreamReader(); 37 | 38 | std::unique_ptr next(); 39 | 40 | private: 41 | 42 | std::istream& instr; 43 | WKBReader rdr; 44 | }; 45 | 46 | } 47 | } 48 | 49 | 50 | -------------------------------------------------------------------------------- /include/geos/io/WKTFileReader.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2020 Martin Davis 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #pragma once 16 | 17 | #include 18 | #include 19 | #include 20 | 21 | // Forward declarations 22 | namespace geos { 23 | namespace geom { 24 | 25 | class Geometry; 26 | class PrecisionModel; 27 | } 28 | } 29 | 30 | namespace geos { 31 | namespace io { 32 | 33 | class GEOS_DLL WKTFileReader { 34 | 35 | public: 36 | WKTFileReader(); 37 | ~WKTFileReader(); 38 | 39 | std::vector> read(std::string fname); 40 | 41 | private: 42 | std::unique_ptr readGeom(std::ifstream& f, geos::io::WKTReader& rdr); 43 | }; 44 | 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /include/geos/io/WKTStreamReader.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2020 Martin Davis 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #pragma once 16 | 17 | #include 18 | #include 19 | #include 20 | 21 | // Forward declarations 22 | namespace geos { 23 | namespace geom { 24 | 25 | class Geometry; 26 | class PrecisionModel; 27 | } 28 | } 29 | 30 | namespace geos { 31 | namespace io { 32 | 33 | class GEOS_DLL WKTStreamReader { 34 | 35 | public: 36 | WKTStreamReader(std::istream& instr); 37 | ~WKTStreamReader(); 38 | 39 | std::unique_ptr next(); 40 | 41 | private: 42 | 43 | std::istream& instr; 44 | WKTReader rdr; 45 | }; 46 | 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /include/geos/triangulate/quadedge/LocateFailureException.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2012 Excensus LLC. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | ********************************************************************** 14 | * 15 | * Last port: triangulate/quadedge/LocateFailureException.java r524 16 | * 17 | **********************************************************************/ 18 | 19 | #pragma once 20 | 21 | #include 22 | 23 | #include 24 | 25 | namespace geos { 26 | namespace triangulate { //geos.triangulate 27 | namespace quadedge { //geos.triangulate.quadedge 28 | 29 | class GEOS_DLL LocateFailureException : public geos::util::GEOSException { 30 | public: 31 | LocateFailureException(std::string const& msg); 32 | }; 33 | 34 | } //namespace geos.triangulate.quadedge 35 | } //namespace geos.triangulate 36 | } //namespace goes 37 | 38 | -------------------------------------------------------------------------------- /include/geos/unload.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #pragma once 16 | 17 | #include 18 | 19 | //xie add for realse static memory 2003,10,06 20 | namespace geos { 21 | namespace io { 22 | 23 | class GEOS_DLL Unload { 24 | private: 25 | Unload(void) {} 26 | ~Unload(void) {} 27 | public: 28 | static void Release(); 29 | }; 30 | 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /include/geos/util/IllegalStateException.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2011 Sandro Santilli 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #pragma once 16 | 17 | #include 18 | #include 19 | 20 | #include 21 | 22 | namespace geos { 23 | namespace util { // geos::util 24 | 25 | /// Indicates an illegal state 26 | class GEOS_DLL IllegalStateException: public GEOSException { 27 | public: 28 | IllegalStateException() 29 | : 30 | GEOSException("IllegalStateException", "") 31 | {} 32 | 33 | IllegalStateException(const std::string& msg) 34 | : 35 | GEOSException("IllegalStateException", msg) 36 | {} 37 | 38 | ~IllegalStateException() noexcept override {} 39 | }; 40 | 41 | } // namespace geos::util 42 | } // namespace geos 43 | -------------------------------------------------------------------------------- /include/geos/util/Machine.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2001-2009 Vivid Solutions Inc. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #pragma once 16 | 17 | /** 18 | * Check endianness of current machine. 19 | * @return 0 for big_endian | xdr; 1 == little_endian | ndr 20 | */ 21 | inline int 22 | getMachineByteOrder() 23 | { 24 | static int endian_check = 1; // don't modify !! 25 | return *((char*)&endian_check); 26 | } 27 | -------------------------------------------------------------------------------- /include/geos/util/string.h: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2022 ISciences LLC 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #pragma once 16 | 17 | #include 18 | 19 | namespace geos { 20 | namespace util { 21 | 22 | bool endsWith(const std::string & s, const std::string & suffix); 23 | bool endsWith(const std::string & s, char suffix); 24 | 25 | bool startsWith(const std::string & s, const std::string & prefix); 26 | bool startsWith(const std::string & s, char prefix); 27 | 28 | void toUpper(std::string& s); 29 | 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /include/geos/vend/include_nlohmann_json.hpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2021 Jared Erickson 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | #ifndef GEOS_VEND_JSON 15 | #define GEOS_VEND_JSON 16 | 17 | #ifdef nlohmann 18 | #error "GEOS modifies the nlohmann define " 19 | #endif 20 | #define nlohmann geos_nlohmann 21 | #include "geos/vend/json.hpp" 22 | #undef nlohmann 23 | 24 | #endif -------------------------------------------------------------------------------- /include/geos/version.h.in: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2007 Refractions Research Inc. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | #ifndef GEOS_VERSION_H_INCLUDED 15 | #define GEOS_VERSION_H_INCLUDED 16 | 17 | #ifndef GEOS_VERSION_MAJOR 18 | #define GEOS_VERSION_MAJOR @VERSION_MAJOR@ 19 | #endif 20 | 21 | #ifndef GEOS_VERSION_MINOR 22 | #define GEOS_VERSION_MINOR @VERSION_MINOR@ 23 | #endif 24 | 25 | #ifndef GEOS_VERSION_PATCH 26 | #define GEOS_VERSION_PATCH @VERSION_PATCH@ 27 | #endif 28 | 29 | #ifndef GEOS_VERSION 30 | #define GEOS_VERSION "@VERSION@" 31 | #endif 32 | 33 | #ifndef GEOS_JTS_PORT 34 | #define GEOS_JTS_PORT "@JTS_PORT@" 35 | #endif 36 | 37 | #endif // GEOS_VERSION_H_INCLUDED 38 | -------------------------------------------------------------------------------- /src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Part of CMake configuration for GEOS 3 | # 4 | # Copyright (C) 2018 Mateusz Loskot 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | file(GLOB_RECURSE _sources ${CMAKE_CURRENT_LIST_DIR}/*.cpp CONFIGURE_DEPEND) 12 | target_sources(geos PRIVATE ${_sources}) 13 | unset(_sources) 14 | 15 | add_subdirectory(deps) 16 | 17 | -------------------------------------------------------------------------------- /src/algorithm/NotRepresentableException.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #include 16 | 17 | #include 18 | 19 | namespace geos { 20 | namespace algorithm { // geos.algorithm 21 | 22 | NotRepresentableException::NotRepresentableException() 23 | : 24 | GEOSException( 25 | "NotRepresentableException", 26 | "Projective point not representable on the Cartesian plane.") 27 | 28 | { 29 | } 30 | 31 | NotRepresentableException::NotRepresentableException(std::string msg) 32 | : 33 | GEOSException( 34 | "NotRepresentableException", msg) 35 | { 36 | } 37 | 38 | } // namespace geos.algorithm 39 | } // namespace geos 40 | 41 | -------------------------------------------------------------------------------- /src/algorithm/SimplePointInRing.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2005-2006 Refractions Research Inc. 7 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 8 | * 9 | * This is free software; you can redistribute and/or modify it under 10 | * the terms of the GNU Lesser General Public Licence as published 11 | * by the Free Software Foundation. 12 | * See the COPYING file for more information. 13 | * 14 | **********************************************************************/ 15 | 16 | #include 17 | #include 18 | #include 19 | 20 | // Forward declarations 21 | namespace geos { 22 | namespace geom { 23 | class Coordinate; 24 | } 25 | } 26 | 27 | namespace geos { 28 | namespace algorithm { // geos.algorithm 29 | 30 | SimplePointInRing::SimplePointInRing(geom::LinearRing* ring) 31 | { 32 | pts = ring->getCoordinatesRO(); 33 | } 34 | 35 | bool 36 | SimplePointInRing::isInside(const geom::Coordinate& pt) 37 | { 38 | return PointLocation::isInRing(pt, pts); 39 | } 40 | 41 | } // namespace geos.algorithm 42 | } // namespace geos 43 | -------------------------------------------------------------------------------- /src/algorithm/locate/PointOnGeometryLocator.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | 16 | #include 17 | 18 | namespace geos { 19 | namespace algorithm { // geos::algorithm 20 | namespace locate { // geos::algorithm::locate 21 | 22 | } // geos::algorithm::locate 23 | } // geos::algorithm 24 | } // geos 25 | -------------------------------------------------------------------------------- /src/deps/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Part of CMake configuration for GEOS 3 | # 4 | # Copyright (C) 2018 Mateusz Loskot 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | file(GLOB_RECURSE _sources ${CMAKE_CURRENT_LIST_DIR}/*.c CONFIGURE_DEPEND) 12 | add_library(ryu OBJECT ${_sources}) 13 | target_include_directories(ryu PUBLIC ${CMAKE_CURRENT_LIST_DIR}) 14 | set_target_properties(ryu PROPERTIES 15 | POSITION_INDEPENDENT_CODE ON 16 | C_STANDARD 99 17 | ) 18 | unset(_sources) 19 | 20 | target_include_directories(geos 21 | PUBLIC 22 | $ 23 | $) 24 | 25 | -------------------------------------------------------------------------------- /src/deps/ryu/LICENSE: -------------------------------------------------------------------------------- 1 | All the C code is copyrighted by Ulf Adams and contributors, and may be used freely in accordance with the Apache 2.0 license. Alternatively, it may be used freely in accordance with the Boost 1.0 license. -------------------------------------------------------------------------------- /src/dissolve/DissolveEdgeGraph.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (c) 2025 Martin Davis 7 | * Copyright (C) 2025 Paul Ramsey 8 | * 9 | * This is free software; you can redistribute and/or modify it under 10 | * the terms of the GNU Lesser General Public Licence as published 11 | * by the Free Software Foundation. 12 | * See the COPYING file for more information. 13 | * 14 | **********************************************************************/ 15 | 16 | #include 17 | 18 | #include 19 | #include 20 | 21 | 22 | using geos::edgegraph::HalfEdge; 23 | using geos::geom::CoordinateXYZM; 24 | 25 | 26 | namespace geos { // geos 27 | namespace dissolve { // geos.dissolve 28 | 29 | 30 | HalfEdge* 31 | DissolveEdgeGraph::createEdge(const CoordinateXYZM& p0) 32 | { 33 | dhEdges.emplace_back(p0); 34 | return &(dhEdges.back()); 35 | } 36 | 37 | 38 | } // namespace geos.dissolve 39 | } // namespace geos 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/dissolve/DissolveHalfEdge.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (c) 2025 Martin Davis 7 | * Copyright (C) 2025 Paul Ramsey 8 | * 9 | * This is free software; you can redistribute and/or modify it under 10 | * the terms of the GNU Lesser General Public Licence as published 11 | * by the Free Software Foundation. 12 | * See the COPYING file for more information. 13 | * 14 | **********************************************************************/ 15 | 16 | #include 17 | 18 | namespace geos { // geos 19 | namespace dissolve { // geos.dissolve 20 | 21 | /** 22 | * Tests whether this edge is the starting segment 23 | * in a LineString being dissolved. 24 | * 25 | * @return true if this edge is a start segment 26 | */ 27 | bool 28 | DissolveHalfEdge::isStart() 29 | { 30 | return m_isStart; 31 | } 32 | 33 | /** 34 | * Sets this edge to be the start segment of an input LineString. 35 | */ 36 | void 37 | DissolveHalfEdge::setStart() 38 | { 39 | m_isStart = true; 40 | } 41 | 42 | 43 | } // namespace geos.dissolve 44 | } // namespace geos 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/geom/GeometryComponentFilter.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2006 Refractions Research Inc. 7 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 8 | * 9 | * This is free software; you can redistribute and/or modify it under 10 | * the terms of the GNU Lesser General Public Licence as published 11 | * by the Free Software Foundation. 12 | * See the COPYING file for more information. 13 | * 14 | **********************************************************************/ 15 | 16 | #include 17 | 18 | #include 19 | #include 20 | #include 21 | 22 | namespace geos { 23 | namespace geom { // geos::geom 24 | 25 | void 26 | GeometryComponentFilter::filter_rw(Geometry* geom) 27 | { 28 | ::geos::ignore_unused_variable_warning(geom); 29 | assert(0); 30 | } 31 | 32 | void 33 | GeometryComponentFilter::filter_ro(const Geometry* geom) 34 | { 35 | ::geos::ignore_unused_variable_warning(geom); 36 | assert(0); 37 | } 38 | 39 | 40 | } // namespace geos::geom 41 | } // namespace geos 42 | -------------------------------------------------------------------------------- /src/geom/prep/PreparedGeometry.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | ********************************************************************** 14 | * 15 | * Last port: geom/prep/PreparedGeometry.java rev. 1.11 (JTS-1.10) 16 | * 17 | **********************************************************************/ 18 | 19 | 20 | #include 21 | 22 | namespace geos { 23 | namespace geom { // geos.geom 24 | namespace prep { // geos.geom.prep 25 | 26 | } // namespace geos.geom.prep 27 | } // namespace geos.geom 28 | } // namespace geos 29 | -------------------------------------------------------------------------------- /src/geom/util/NoOpGeometryOperation.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2020 Paul Ramsey 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #include 16 | 17 | #include 18 | #include 19 | #include 20 | 21 | namespace geos { 22 | namespace geom { // geos.geom 23 | namespace util { // geos.geom.util 24 | 25 | std::unique_ptr 26 | NoOpGeometryOperation::edit(const Geometry* geometry, 27 | const GeometryFactory* factory) 28 | { 29 | std::unique_ptr clonedGeom(factory->createGeometry(geometry)); 30 | return clonedGeom; 31 | } 32 | 33 | 34 | } // namespace geos.geom.util 35 | } // namespace geos.geom 36 | } // namespace geos 37 | -------------------------------------------------------------------------------- /src/index/intervalrtree/IntervalRTreeLeafNode.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #include 16 | #include 17 | 18 | 19 | namespace geos { 20 | namespace index { 21 | namespace intervalrtree { 22 | // 23 | // private: 24 | // 25 | 26 | // 27 | // protected: 28 | // 29 | 30 | // 31 | // public: 32 | // 33 | void 34 | IntervalRTreeLeafNode::query(double queryMin, double queryMax, index::ItemVisitor* visitor) const 35 | { 36 | if(! intersects(queryMin, queryMax)) { 37 | return; 38 | } 39 | 40 | visitor->visitItem(item); 41 | } 42 | 43 | } // geos::intervalrtree 44 | } // geos::index 45 | } // geos 46 | -------------------------------------------------------------------------------- /src/index/kdtree/KdNode.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2020 Paul Ramsey 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #include 16 | 17 | using namespace geos::geom; 18 | 19 | namespace geos { 20 | namespace index { // geos.index 21 | namespace kdtree { // geos.index.kdtree 22 | 23 | KdNode::KdNode(double p_x, double p_y, void* p_data) : 24 | p(p_x, p_y), 25 | data(p_data), 26 | left(nullptr), 27 | right(nullptr), 28 | count(1) {} 29 | 30 | KdNode::KdNode(const Coordinate& p_p, void* p_data) : 31 | p(p_p), 32 | data(p_data), 33 | left(nullptr), 34 | right(nullptr), 35 | count(1) {} 36 | 37 | 38 | } // namespace geos.index.kdtree 39 | } // namespace geos.index 40 | } // namespace geos 41 | -------------------------------------------------------------------------------- /src/index/strtree/GeometryItemDistance.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2016 Daniel Baston 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | ********************************************************************** 14 | * 15 | * Last port: index/strtree/GeometryItemDistance.java (JTS-1.14) 16 | * 17 | **********************************************************************/ 18 | 19 | #include 20 | #include 21 | #include 22 | 23 | using namespace geos::geom; 24 | using namespace geos::index::strtree; 25 | 26 | double 27 | GeometryItemDistance::distance(const ItemBoundable* item1, const ItemBoundable* item2) 28 | { 29 | const Geometry* g1 = static_cast(item1->getItem()); 30 | const Geometry* g2 = static_cast(item2->getItem()); 31 | return g1->distance(g2); 32 | } 33 | -------------------------------------------------------------------------------- /src/index/strtree/Interval.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2006 Refractions Research Inc. 7 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 8 | * 9 | * This is free software; you can redistribute and/or modify it under 10 | * the terms of the GNU Lesser General Public Licence as published 11 | * by the Free Software Foundation. 12 | * See the COPYING file for more information. 13 | * 14 | **********************************************************************/ 15 | 16 | #include 17 | //#include 18 | 19 | #include 20 | #include 21 | #include 22 | 23 | 24 | 25 | namespace geos { 26 | namespace index { // geos.index 27 | namespace strtree { // geos.index.strtree 28 | 29 | } // namespace geos.index.strtree 30 | } // namespace geos.index 31 | } // namespace geos 32 | 33 | -------------------------------------------------------------------------------- /src/info.plist.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${MACOSX_FRAMEWORK_NAME} 9 | CFBundleGetInfoString 10 | GEOS ${VERSION} 11 | CFBundleIdentifier 12 | ${MACOSX_FRAMEWORK_IDENTIFIER} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | GEOS 17 | CFBundlePackageType 18 | FMWK 19 | CFBundleShortVersionString 20 | ${MACOSX_FRAMEWORK_SHORT_VERSION_STRING} 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | ${MACOSX_FRAMEWORK_BUNDLE_VERSION} 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/io/ByteOrderDataInStream.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2005-2006 Refractions Research Inc. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | ********************************************************************** 14 | * 15 | * Last port: io/ByteOrderDataInStream.java rev. 1.1 (JTS-1.10) 16 | * 17 | **********************************************************************/ 18 | 19 | #include 20 | 21 | namespace geos { 22 | namespace io { // geos::io 23 | 24 | } // namespace geos::io 25 | } // namespace geos 26 | 27 | -------------------------------------------------------------------------------- /src/io/Unload.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2005-2006 Refractions Research Inc. 7 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 8 | * 9 | * This is free software; you can redistribute and/or modify it under 10 | * the terms of the GNU Lesser General Public Licence as published 11 | * by the Free Software Foundation. 12 | * See the COPYING file for more information. 13 | * 14 | **********************************************************************/ 15 | 16 | #include 17 | #include 18 | #include 19 | 20 | namespace geos { 21 | namespace io { // geos.io 22 | 23 | /*public static*/ 24 | void 25 | Unload::Release() 26 | { 27 | //delete geom::Geometry::INTERNAL_GEOMETRY_FACTORY; 28 | } 29 | 30 | } // namespace geos.io 31 | } //namespace geos 32 | 33 | -------------------------------------------------------------------------------- /src/io/Writer.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2005-2006 Refractions Research Inc. 7 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 8 | * 9 | * This is free software; you can redistribute and/or modify it under 10 | * the terms of the GNU Lesser General Public Licence as published 11 | * by the Free Software Foundation. 12 | * See the COPYING file for more information. 13 | * 14 | ********************************************************************** 15 | * 16 | * Last port: ORIGINAL WORK to be used like java.io.Writer 17 | * 18 | **********************************************************************/ 19 | 20 | #include 21 | #include 22 | 23 | namespace geos { 24 | namespace io { // geos.io 25 | 26 | Writer::Writer() 27 | { 28 | } 29 | 30 | void 31 | Writer::reserve(std::size_t capacity) 32 | { 33 | str.reserve(capacity); 34 | } 35 | 36 | void 37 | Writer::write(const std::string& txt) 38 | { 39 | str.append(txt); 40 | } 41 | 42 | const std::string& 43 | Writer::toString() 44 | { 45 | return str; 46 | } 47 | 48 | } // namespace geos.io 49 | } // namespace geos 50 | -------------------------------------------------------------------------------- /src/noding/BasicSegmentString.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2009 Sandro Santilli 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | ********************************************************************** 14 | * 15 | * Last port: noding/BasicSegmentString.java rev. 1.1 (JTS-1.9) 16 | * 17 | **********************************************************************/ 18 | 19 | #include 20 | #include 21 | 22 | #include 23 | #include 24 | 25 | namespace geos { 26 | namespace noding { // geos.noding 27 | 28 | /* public virtual */ 29 | std::ostream& 30 | BasicSegmentString::print(std::ostream& os) const 31 | { 32 | os << "BasicSegmentString: " << std::endl; 33 | os << " LINESTRING" << *(getCoordinates()) << ";" << std::endl; 34 | 35 | return os; 36 | } 37 | 38 | 39 | } // namespace geos.noding 40 | } // namespace geos 41 | 42 | -------------------------------------------------------------------------------- /src/noding/SegmentStringUtil.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | 16 | #include 17 | 18 | namespace geos { 19 | namespace noding { // geos::noding 20 | 21 | } // geos::noding 22 | } // geos 23 | -------------------------------------------------------------------------------- /src/operation/buffer/MinimalEdgeRing.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2001-2002 Vivid Solutions Inc. 7 | * Copyright (C) 2005 Refractions Research Inc. 8 | * 9 | * This is free software; you can redistribute and/or modify it under 10 | * the terms of the GNU Lesser General Public Licence as published 11 | * by the Free Software Foundation. 12 | * See the COPYING file for more information. 13 | * 14 | * 15 | **********************************************************************/ 16 | 17 | #include 18 | #include 19 | 20 | 21 | namespace geos { 22 | namespace operation { // geos.operation 23 | namespace buffer { // geos.operation.buffer 24 | 25 | 26 | MinimalEdgeRing::MinimalEdgeRing(geomgraph::DirectedEdge* start, 27 | const geom::GeometryFactory* p_geometryFactory) 28 | : 29 | geomgraph::EdgeRing(start, p_geometryFactory) 30 | { 31 | computePoints(start); 32 | computeRing(); 33 | } 34 | 35 | 36 | } // namespace geos.operation.buffer 37 | } // namespace geos.operation 38 | } // namespace geos 39 | 40 | -------------------------------------------------------------------------------- /src/operation/cluster/UnionFind.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2020-2021 Daniel Baston 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #include 16 | 17 | namespace geos { 18 | namespace operation { 19 | namespace cluster { 20 | 21 | Clusters UnionFind::getClusters() { 22 | std::vector elems(clusters.size()); 23 | std::iota(elems.begin(), elems.end(), 0); 24 | 25 | return Clusters(*this, std::move(elems), clusters.size()); 26 | } 27 | 28 | Clusters UnionFind::getClusters(std::vector elems) { 29 | return Clusters(*this, std::move(elems), clusters.size()); 30 | } 31 | 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/operation/overlayng/EdgeKey.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2020 Paul Ramsey 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #include 16 | 17 | 18 | namespace geos { // geos 19 | namespace operation { // geos.operation 20 | namespace overlayng { // geos.operation.overlayng 21 | 22 | } // namespace geos.operation.overlayng 23 | } // namespace geos.operation 24 | } // namespace geos 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/operation/union/UnionStrategy.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2021 Daniel Baston 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Public Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | **********************************************************************/ 14 | 15 | #include 16 | #include 17 | 18 | namespace geos { 19 | namespace operation { 20 | namespace geounion { 21 | 22 | std::unique_ptr UnionStrategy::Union(std::unique_ptr && g0, std::unique_ptr && g1) { 23 | // Default implementation just copies the inputs. 24 | return Union(g0.get(), g1.get()); 25 | } 26 | 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/triangulate/quadedge/LocateFailureException.cpp: -------------------------------------------------------------------------------- 1 | /********************************************************************** 2 | * 3 | * GEOS - Geometry Engine Open Source 4 | * http://geos.osgeo.org 5 | * 6 | * Copyright (C) 2012 Excensus LLC. 7 | * 8 | * This is free software; you can redistribute and/or modify it under 9 | * the terms of the GNU Lesser General Licence as published 10 | * by the Free Software Foundation. 11 | * See the COPYING file for more information. 12 | * 13 | ********************************************************************** 14 | * 15 | * Last port: triangulate/quadedge/LocateFailureException.java r524 16 | * 17 | **********************************************************************/ 18 | 19 | #include 20 | 21 | namespace geos { 22 | namespace triangulate { //geos.triangulate 23 | namespace quadedge { //geos.triangulate.quadedge 24 | 25 | LocateFailureException::LocateFailureException(std::string const& msg) : 26 | util::GEOSException("LocateFailureException", msg) 27 | {} 28 | 29 | } //namespace geos.triangulate.quadedge 30 | } //namespace geos.triangulate 31 | } //namespace goes 32 | 33 | -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Part of CMake configuration for GEOS 3 | # 4 | # Copyright (C) 2018 Mateusz Loskot 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | add_subdirectory(unit) 12 | add_subdirectory(xmltester) 13 | -------------------------------------------------------------------------------- /tests/superbuild.CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This is used in CI as a simple test of GEOS building as a subproject 2 | # within a CMake super-build context. 3 | 4 | cmake_minimum_required(VERSION 3.13) 5 | 6 | project(superbuild_example) 7 | 8 | add_subdirectory("geos") 9 | 10 | add_executable(capi_read capi_read.c) 11 | target_link_libraries(capi_read PRIVATE GEOS::geos_c) 12 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSBuildAreaTest.cpp: -------------------------------------------------------------------------------- 1 | // Test Suite for C-API BuildArea 2 | 3 | #include 4 | // geos 5 | #include 6 | // std 7 | 8 | #include "capi_test_utils.h" 9 | 10 | namespace tut { 11 | // 12 | // Test Group 13 | // 14 | 15 | // Common data used in test cases. 16 | struct test_capi_buildarea_data : public capitest::utility {}; 17 | 18 | typedef test_group group; 19 | typedef group::object object; 20 | 21 | group test_capi_buildarea_group("capi::GEOSBuildArea"); 22 | 23 | // 24 | // Test Cases 25 | // 26 | 27 | template<> 28 | template<> 29 | void object::test<1>() 30 | { 31 | input_ = fromWKT("GEOMETRYCOLLECTION(LINESTRING(0 0,0 1,1 1),LINESTRING(1 1,1 0,0 0))"); 32 | result_ = GEOSBuildArea(input_); 33 | expected_ = fromWKT("POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))"); 34 | ensure_geometry_equals(result_, expected_, 0); 35 | } 36 | 37 | template<> 38 | template<> 39 | void object::test<2>() 40 | { 41 | input_ = fromWKT("MULTICURVE( CIRCULARSTRING (0 0, 1 1, 2 0), (2 0, 0 0) )"); 42 | ensure(input_ != nullptr); 43 | 44 | result_ = GEOSBuildArea(input_); 45 | ensure(result_ == nullptr); 46 | } 47 | 48 | } // namespace tut 49 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSDifferencePrecTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geosdifferenceprec_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geosdifferenceprec("capi::GEOSDifferencePrec"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1>() 22 | { 23 | geom1_ = fromWKT("LINESTRING (2 8, 10 8)"); 24 | geom2_ = fromWKT("LINESTRING (3.9 8.1, 6.1 7.9)"); 25 | GEOSSetSRID(geom1_, 4326); 26 | 27 | result_ = GEOSDifferencePrec(geom1_, geom2_, 2); 28 | ensure(result_); 29 | 30 | ensure_geometry_equals(result_, "MULTILINESTRING ((6 8, 10 8), (2 8, 4 8))"); 31 | ensure_equals(GEOSGetSRID(geom1_), GEOSGetSRID(result_)); 32 | } 33 | 34 | } // namespace tut 35 | 36 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSDisjointTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geosdisjoint_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geosdisjoint("capi::GEOSDisjoint"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1>() 22 | { 23 | geom1_ = fromWKT("POINT (0 0)"); 24 | geom2_ = fromWKT("LINESTRING(2 0, 0 2)"); 25 | geom3_ = fromWKT("LINESTRING(0 0, 0 2)"); 26 | 27 | ensure_equals(1, GEOSDisjoint(geom1_, geom2_)); 28 | ensure_equals(0, GEOSDisjoint(geom1_, geom3_)); 29 | } 30 | 31 | template<> 32 | template<> 33 | void object::test<2>() 34 | { 35 | geom1_ = fromWKT("CIRCULARSTRING (0 0, 1 1, 2 0)"); 36 | geom2_ = fromWKT("LINESTRING (1 0, 2 1)"); 37 | 38 | ensure(geom1_); 39 | ensure(geom2_); 40 | 41 | ensure_equals("curved geometry not supported", GEOSDisjoint(geom1_, geom2_), 2); 42 | ensure_equals("curved geometry not supported", GEOSDisjoint(geom2_, geom1_), 2); 43 | } 44 | 45 | } // namespace tut 46 | 47 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSGeomToWKB_bufTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geosgeomtowkb_buf_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geosgeomtowkb_buf("capi::GEOSGeomToWKB_buf"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1>() 22 | { 23 | 24 | geom1_ = fromWKT("POINT (1 2)"); 25 | ensure(nullptr != geom1_); 26 | 27 | std::size_t size{}; 28 | unsigned char* wkb = GEOSGeomToWKB_buf(geom1_, &size); 29 | geom2_ = GEOSGeomFromWKB_buf(&wkb[0], size); 30 | ensure(nullptr != geom2_); 31 | 32 | ensure_equals(toWKT(geom1_), toWKT(geom2_)); 33 | 34 | free(wkb); 35 | } 36 | 37 | } // namespace tut 38 | 39 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSGeomTypeIdTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geosgeomtypeid_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geosgeomtypeid("capi::GEOSGeomTypeId"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1>() 22 | { 23 | geom1_ = fromWKT("POINT (1 2)"); 24 | ensure(nullptr != geom1_); 25 | geom2_ = fromWKT("LINESTRING (1 2, 3 4)"); 26 | ensure(nullptr != geom2_); 27 | geom3_ = fromWKT("CIRCULARSTRING (0 0, 1 1, 2 0)"); 28 | ensure(nullptr != geom3_); 29 | 30 | ensure_equals(GEOS_POINT, GEOSGeomTypeId(geom1_)); 31 | ensure_equals(GEOS_LINESTRING, GEOSGeomTypeId(geom2_)); 32 | ensure_equals(GEOS_CIRCULARSTRING, GEOSGeomTypeId(geom3_)); 33 | } 34 | 35 | } // namespace tut 36 | 37 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSGeomTypeTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geosgeomtype_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geosgeomtype("capi::GEOSGeomType"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1>() 22 | { 23 | geom1_ = fromWKT("POINT (1 2)"); 24 | char* type1 = GEOSGeomType(geom1_); 25 | ensure_equals(std::string(type1), "Point"); 26 | GEOSFree(type1); 27 | 28 | geom2_ = fromWKT("LINESTRING (1 2, 3 4)"); 29 | char* type2 = GEOSGeomType(geom2_); 30 | ensure_equals(std::string(type2), "LineString"); 31 | GEOSFree(type2); 32 | 33 | geom3_ = fromWKT("CIRCULARSTRING (0 0, 1 1, 2 2)"); 34 | char* type3 = GEOSGeomType(geom3_); 35 | ensure_equals(std::string(type3), "CircularString"); 36 | GEOSFree(type3); 37 | } 38 | 39 | } // namespace tut 40 | 41 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSGeom_cloneTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | struct test_capigeosgeom_clone : public capitest::utility {}; 9 | 10 | typedef test_group group; 11 | typedef group::object object; 12 | 13 | group test_capigeosgeom_clone_group("capi::GEOSGeom_clone"); 14 | 15 | template<> 16 | template<> 17 | void object::test<1> 18 | () 19 | { 20 | geom1_ = GEOSGeomFromWKT("LINESTRING (3 8, -12 -4)"); 21 | GEOSSetSRID(geom1_, 32145); 22 | int data = 500; 23 | GEOSGeom_setUserData(geom1_, &data); 24 | 25 | geom2_ = GEOSGeom_clone(geom1_); 26 | 27 | ensure_geometry_equals(geom1_, geom2_); 28 | ensure(GEOSGeom_getCoordSeq(geom1_) != GEOSGeom_getCoordSeq(geom2_)); // deep copy 29 | ensure_equals(GEOSGetSRID(geom2_), 32145); 30 | ensure(GEOSGeom_getUserData(geom2_) == nullptr); // userData not transferred 31 | } 32 | 33 | template<> 34 | template<> 35 | void object::test<2> 36 | () 37 | { 38 | input_ = GEOSGeomFromWKT("CIRCULARSTRING (0 0, 1 1, 2 0)"); 39 | result_ = GEOSGeom_clone(input_); 40 | 41 | ensure_equals(toWKT(result_), "CIRCULARSTRING (0 0, 1 1, 2 0)"); 42 | } 43 | 44 | } // namespace tut 45 | 46 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSGeom_createCircularStringTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "capi_test_utils.h" 3 | 4 | namespace tut { 5 | // 6 | // Test Group 7 | // 8 | 9 | struct test_geosgeom_createcircularstring_data : public capitest::utility {}; 10 | 11 | typedef test_group group; 12 | typedef group::object object; 13 | 14 | group test_geosgeom_createcircularstring("capi::GEOSGeom_createCircularString"); 15 | 16 | template<> 17 | template<> 18 | void object::test<1> 19 | () 20 | { 21 | GEOSCoordSequence* seq = GEOSCoordSeq_create(3, 2); 22 | GEOSCoordSeq_setXY(seq, 0, 1, 2); 23 | GEOSCoordSeq_setXY(seq, 1, 4, 5); 24 | GEOSCoordSeq_setXY(seq, 2, 9, -2); 25 | 26 | result_ = GEOSGeom_createCircularString(seq); 27 | expected_ = fromWKT("CIRCULARSTRING (1 2, 4 5, 9 -2)"); 28 | 29 | ensure_geometry_equals_identical(result_, expected_); 30 | } 31 | 32 | template<> 33 | template<> 34 | void object::test<2> 35 | () 36 | { 37 | result_ = GEOSGeom_createEmptyCircularString(); 38 | ensure(GEOSisEmpty(result_)); 39 | ensure(!GEOSHasZ(result_)); 40 | ensure(!GEOSHasM(result_)); 41 | } 42 | 43 | } // namespace tut 44 | 45 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSGeom_createLineStringTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "capi_test_utils.h" 3 | 4 | namespace tut { 5 | // 6 | // Test Group 7 | // 8 | 9 | struct test_geosgeom_createlinestring_data : public capitest::utility {}; 10 | 11 | typedef test_group group; 12 | typedef group::object object; 13 | 14 | group test_geosgeom_createlinestring("capi::GEOSGeom_createLineString"); 15 | 16 | template<> 17 | template<> 18 | void object::test<1> 19 | () 20 | { 21 | GEOSCoordSequence* seq = GEOSCoordSeq_create(3, 2); 22 | GEOSCoordSeq_setXY(seq, 0, 1, 2); 23 | GEOSCoordSeq_setXY(seq, 1, 4, 5); 24 | GEOSCoordSeq_setXY(seq, 2, 9, -2); 25 | 26 | result_ = GEOSGeom_createLineString(seq); 27 | expected_ = fromWKT("LINESTRING (1 2, 4 5, 9 -2)"); 28 | 29 | ensure_geometry_equals(result_, expected_, 0); 30 | } 31 | 32 | } // namespace tut 33 | 34 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSGeom_getDimensionsTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geosgeom_getdimensions_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geosgeom_getdimensions("capi::GEOSGeom_getDimensions"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1> 22 | () 23 | { 24 | geom1_ = fromWKT("POLYGON ((0 0, 1 0, 1 1, 0 0))"); 25 | ensure_equals(GEOSGeom_getDimensions(geom1_), 2); 26 | 27 | geom3_ = fromWKT("LINESTRING (4 2 7 1, 8 2 9 5)"); 28 | ensure_equals(GEOSGeom_getDimensions(geom3_), 1); 29 | 30 | geom2_ = fromWKT("POINT (4 2 7)"); 31 | ensure_equals(GEOSGeom_getDimensions(geom2_), 0); 32 | } 33 | 34 | template<> 35 | template<> 36 | void object::test<2>() 37 | { 38 | input_ = fromWKT("CIRCULARSTRING (0 0, 1 1, 2 0)"); 39 | ensure_equals(GEOSGeom_getDimensions(input_), 1); 40 | } 41 | 42 | } // namespace tut 43 | 44 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSRelateTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geosrelate_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geosrelate("capi::GEOSRelate"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1>() 22 | { 23 | geom1_ = fromWKT("LINESTRING(1 2, 3 4)"); 24 | ensure(nullptr != geom1_); 25 | geom2_ = fromWKT("LINESTRING(5 6, 7 8)"); 26 | ensure(nullptr != geom2_); 27 | 28 | char* pattern = GEOSRelate(geom1_, geom2_); 29 | ensure_equals(std::string{"FF1FF0102"}, pattern); 30 | GEOSFree(pattern); 31 | } 32 | 33 | template<> 34 | template<> 35 | void object::test<2>() 36 | { 37 | geom1_ = fromWKT("CIRCULARSTRING (0 0, 1 1, 2 0)"); 38 | geom2_ = fromWKT("LINESTRING (1 0, 2 1)"); 39 | 40 | ensure(geom1_); 41 | ensure(geom2_); 42 | 43 | ensure("curved geometry not supported", GEOSRelate(geom1_, geom2_) == nullptr); 44 | ensure("curved geometry not supported", GEOSRelate(geom2_, geom1_) == nullptr); 45 | } 46 | 47 | } // namespace tut 48 | 49 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSSetSRIDTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geossetsrid_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geossetsrid("capi::GEOSSetSRID"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1> 22 | () 23 | { 24 | int expected_srid = 1234; 25 | GEOSGeometry* input = GEOSGeomFromWKT("LINESTRING (1 2, 4 5, 9 -2)"); 26 | GEOSSetSRID(input, expected_srid); 27 | ensure_equals(GEOSGetSRID(input), expected_srid); 28 | 29 | GEOSGeom_destroy(input); 30 | } 31 | 32 | } // namespace tut 33 | 34 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSSimplifyTest.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Test Suite for C-API GEOSSimplify 3 | 4 | #include 5 | // geos 6 | #include 7 | 8 | #include "capi_test_utils.h" 9 | 10 | namespace tut { 11 | // 12 | // Test Group 13 | // 14 | 15 | // Common data used in test cases. 16 | struct test_capigeossimplify_data : public capitest::utility {}; 17 | 18 | typedef test_group group; 19 | typedef group::object object; 20 | 21 | group test_capigeossimplify_group("capi::GEOSSimplify"); 22 | 23 | // 24 | // Test Cases 25 | // 26 | 27 | // Test GEOSSimplify 28 | template<> 29 | template<> 30 | void object::test<1> 31 | () 32 | { 33 | geom1_ = GEOSGeomFromWKT("POLYGON EMPTY"); 34 | 35 | ensure(0 != GEOSisEmpty(geom1_)); 36 | 37 | geom2_ = GEOSSimplify(geom1_, 43.2); 38 | 39 | ensure(0 != GEOSisEmpty(geom2_)); 40 | } 41 | 42 | template<> 43 | template<> 44 | void object::test<2>() 45 | { 46 | input_ = fromWKT("CIRCULARSTRING (0 0, 1 1, 2 0)"); 47 | ensure(input_ != nullptr); 48 | 49 | result_ = GEOSSimplify(input_, 2); 50 | ensure(result_ == nullptr); 51 | } 52 | 53 | } // namespace tut 54 | 55 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSSymDifferencePrecTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geossymdifferenceprec_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geossymdifferenceprec("capi::GEOSSymDifferencePrec"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1>() 22 | { 23 | geom1_ = fromWKT("LINESTRING(50 100, 50 200)"); 24 | ensure(geom1_); 25 | geom2_ = fromWKT("LINESTRING(50 50, 50 150)"); 26 | ensure(geom2_); 27 | geom3_ = GEOSSymDifferencePrec(geom1_, geom2_, 15); 28 | 29 | ensure_equals("MULTILINESTRING ((45 150, 45 195), (45 45, 45 105))", toWKT(geom3_)); 30 | } 31 | 32 | } // namespace tut 33 | 34 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSSymDifferenceTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geossymdifference_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geossymdifference("capi::GEOSSymDifference"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1>() 22 | { 23 | geom1_ = fromWKT("LINESTRING(50 100, 50 200)"); 24 | ensure(geom1_); 25 | geom2_ = fromWKT("LINESTRING(50 50, 50 150)"); 26 | ensure(geom2_); 27 | geom3_ = GEOSSymDifference(geom1_, geom2_); 28 | 29 | ensure_equals("MULTILINESTRING ((50 150, 50 200), (50 50, 50 100))", toWKT(geom3_)); 30 | } 31 | 32 | template<> 33 | template<> 34 | void object::test<2>() 35 | { 36 | geom1_ = fromWKT("CIRCULARSTRING (0 0, 1 1, 2 0)"); 37 | geom2_ = fromWKT("LINESTRING (1 0, 2 1)"); 38 | 39 | ensure(geom1_); 40 | ensure(geom2_); 41 | 42 | result_ = GEOSSymDifference(geom1_, geom2_); 43 | ensure("curved geometry not supported", result_ == nullptr); 44 | } 45 | 46 | } // namespace tut 47 | 48 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSUnaryUnionPrecTest.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Test Suite for C-API GEOSUnaryUnion 3 | 4 | #include 5 | // geos 6 | #include 7 | 8 | #include "capi_test_utils.h" 9 | 10 | namespace tut { 11 | // 12 | // Test Group 13 | // 14 | 15 | // Common data used in test cases. 16 | struct test_capiunaryunionprec_data : public capitest::utility { 17 | 18 | test_capiunaryunionprec_data() { 19 | } 20 | 21 | }; 22 | 23 | typedef test_group group; 24 | typedef group::object object; 25 | 26 | group test_capiunaryunionprec_group("capi::GEOSUnaryUnionPrec"); 27 | 28 | // 29 | // Test Cases 30 | // 31 | 32 | 33 | // Self-union an empty point 34 | template<> 35 | template<> 36 | void object::test<1> 37 | () 38 | { 39 | geom1_ = GEOSGeomFromWKT("MULTIPOINT ((4 5), (6 7), (4 5), (6 5), (6 7))"); 40 | ensure(nullptr != geom1_); 41 | 42 | geom2_ = GEOSUnaryUnionPrec(geom1_, 2); 43 | ensure(nullptr != geom2_); 44 | 45 | ensure_equals(toWKT(geom2_), std::string("MULTIPOINT ((4 6), (6 6), (6 8))")); 46 | } 47 | 48 | 49 | } // namespace tut 50 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSUnionCascadedTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geosunioncascaded_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geosunioncascaded("capi::GEOSUnionCascaded"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1>() 22 | { 23 | geom1_ = GEOSGeomFromWKT("POINT (2 8)"); 24 | ensure(nullptr != geom1_); 25 | geom2_ = GEOSGeomFromWKT("POINT (3 9)"); 26 | ensure(nullptr != geom2_); 27 | 28 | geom3_ = GEOSUnion(geom1_, geom2_); 29 | ensure(nullptr != geom3_); 30 | 31 | ensure_equals("MULTIPOINT ((2 8), (3 9))", toWKT(geom3_)); 32 | } 33 | 34 | } // namespace tut 35 | 36 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSUnionPrecTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geosunionprec_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geosunionprec("capi::GEOSUnionPrec"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1>() 22 | { 23 | GEOSGeometry* a = GEOSGeomFromWKT("POINT (1.9 8.2)"); 24 | GEOSGeometry* b = GEOSGeomFromWKT("POINT (4.1 9.8)"); 25 | 26 | ensure(a); 27 | ensure(b); 28 | 29 | GEOSSetSRID(a, 4326); 30 | 31 | GEOSGeometry* result = GEOSUnionPrec(a, b, 2); 32 | GEOSGeometry* expected = GEOSGeomFromWKT("MULTIPOINT ((2 8), (4 10))"); 33 | 34 | ensure(result); 35 | ensure(expected); 36 | 37 | ensure_equals(GEOSEqualsExact(result, expected, 0), 1); 38 | ensure_equals(GEOSGetSRID(a), GEOSGetSRID(result)); 39 | 40 | GEOSGeom_destroy(a); 41 | GEOSGeom_destroy(b); 42 | GEOSGeom_destroy(result); 43 | GEOSGeom_destroy(expected); 44 | } 45 | 46 | } // namespace tut 47 | 48 | -------------------------------------------------------------------------------- /tests/unit/capi/GEOSisSimpleTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | #include "capi_test_utils.h" 6 | 7 | namespace tut { 8 | // 9 | // Test Group 10 | // 11 | 12 | struct test_geosissimple_data : public capitest::utility {}; 13 | 14 | typedef test_group group; 15 | typedef group::object object; 16 | 17 | group test_geosissimple("capi::GEOSisSimple"); 18 | 19 | template<> 20 | template<> 21 | void object::test<1>() 22 | { 23 | input_ = GEOSGeomFromWKT("LINESTRING (0 0, 1 1)"); 24 | ensure_equals(1, GEOSisSimple(input_)); 25 | } 26 | 27 | template<> 28 | template<> 29 | void object::test<2>() 30 | { 31 | input_ = GEOSGeomFromWKT("LINESTRING (0 0, 2 2, 1 2, 1 0)"); 32 | ensure_equals(0, GEOSisSimple(input_)); 33 | } 34 | 35 | template<> 36 | template<> 37 | void object::test<3>() 38 | { 39 | input_ = fromWKT("CIRCULARSTRING (0 0, 1 1, 2 0)"); 40 | ensure(input_ != nullptr); 41 | 42 | char ret = GEOSisSimple(input_); 43 | ensure_equals("error raised on curved geometry", ret, 2); 44 | } 45 | 46 | } // namespace tut 47 | -------------------------------------------------------------------------------- /tests/unit/index/strtree/SIRtreeTest.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | // geos 3 | #include 4 | 5 | using namespace geos::index::strtree; 6 | 7 | namespace tut { 8 | // dummy data, not used 9 | struct test_sirtree_data {}; 10 | 11 | using group = test_group; 12 | using object = group::object; 13 | 14 | group test_sirtree_group("geos::index::strtree::SIRtree"); 15 | 16 | // 17 | // Test Cases 18 | // 19 | 20 | // Make sure no memory is leaked. 21 | // See https://trac.osgeo.org/geos/ticket/919 22 | template<> 23 | template<> 24 | void object::test<1> 25 | () 26 | { 27 | SIRtree t; 28 | double value = 3; 29 | t.insert(1, 5, &value); 30 | } 31 | 32 | 33 | } // namespace tut 34 | 35 | -------------------------------------------------------------------------------- /tests/unit/triangulate/quadedge/VertexTest.cpp: -------------------------------------------------------------------------------- 1 | 2 | // 3 | // Test Suite for geos::triangulate::quadedge::Vertex 4 | // 5 | // tut 6 | #include 7 | // geos 8 | #include 9 | //#include 10 | #include 11 | 12 | using namespace geos::triangulate::quadedge; 13 | 14 | namespace tut { 15 | // 16 | // Test Group 17 | // 18 | 19 | // dummy data, not used 20 | struct test_vertex_data { 21 | test_vertex_data() 22 | { 23 | } 24 | }; 25 | 26 | typedef test_group group; 27 | typedef group::object object; 28 | 29 | group test_vertex_group("geos::triangulate::quadedge::Vertex"); 30 | 31 | 32 | // 33 | // Test Cases 34 | // 35 | 36 | // 1 - Test for operator< 37 | template<> 38 | template<> 39 | void object::test<1> 40 | () 41 | { 42 | Vertex v1(10, 20); 43 | Vertex v2(20, 30); 44 | Vertex v3(0, 100); 45 | Vertex v4(10, 30); 46 | Vertex v5(10, 10); 47 | 48 | ensure(v1 < v2); 49 | ensure(!(v1 < v3)); 50 | ensure(v1 < v4); 51 | ensure(!(v1 < v5)); 52 | ensure(!(v4 < v5)); 53 | } 54 | 55 | } // namespace tut 56 | 57 | 58 | -------------------------------------------------------------------------------- /tests/unit/tut/README: -------------------------------------------------------------------------------- 1 | C++ Template Unit Test Framework 2 | 3 | This is a local copy of the upstream: 4 | http://mrzechonek.github.io/tut-framework 5 | -------------------------------------------------------------------------------- /tests/unit/tut/tut_config.hpp: -------------------------------------------------------------------------------- 1 | #ifndef TUT_CONFIG_H_GUARD 2 | #define TUT_CONFIG_H_GUARD 3 | 4 | #define TUT_USE_RTTI 1 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /tests/unit/tut/tut_reporter.hpp: -------------------------------------------------------------------------------- 1 | #ifndef TUT_REPORTER 2 | #define TUT_REPORTER 3 | 4 | #include 5 | 6 | namespace tut 7 | { 8 | typedef console_reporter reporter; 9 | } 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /tests/xmltester/JTSXMLTester.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ###################################################################### 4 | # 5 | # GEOS - Geometry Engine Open Source 6 | # http://geos.osgeo.org 7 | # 8 | # Copyright (C) 2010-2017 Sandro Santilli 9 | # Copyright (C) 2010-2012 Martin Davis 10 | # 11 | # This is free software; you can redistribute and/or modify it under 12 | # the terms of the GNU Lesser General Public Licence as published 13 | # by the Free Software Foundation. 14 | # See the COPYING file for more information. 15 | # 16 | ###################################################################### 17 | 18 | if test "x$JTS_LIB_DIR" = "x"; then 19 | JTS_LIB_DIR="$HOME/.m2/repository/org/locationtech/jts" 20 | fi 21 | 22 | #---------------------------------# 23 | # dynamically build the classpath # 24 | #---------------------------------# 25 | THE_CLASSPATH= 26 | for i in `find ${JTS_LIB_DIR} -name '*.jar'` 27 | do 28 | THE_CLASSPATH=${THE_CLASSPATH}:${i} 29 | done 30 | 31 | #---------------------------# 32 | # run the program # 33 | #---------------------------# 34 | java -cp ".:${THE_CLASSPATH}" \ 35 | org.locationtech.jtstest.testrunner.JTSTestRunnerCmd $@ 36 | -------------------------------------------------------------------------------- /tests/xmltester/testrunner.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | runner=$1 4 | shift 5 | 6 | echo "#!/bin/sh" > ${runner} 7 | echo "./XMLTester -v $@" >> ${runner} 8 | chmod +x ${runner} 9 | 10 | echo "Runner: ${runner} created" 11 | -------------------------------------------------------------------------------- /tests/xmltester/tests/failure/robust-TestRobustRelateFloat.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | A/P - Point is on boundary of polygon. 7 | Orientation algorithms (including CGAlgorithmsDD) fail by incorrectly reporting the point to not be on the boundary. 8 | See https://trac.osgeo.org/geos/ticket/841 9 | 10 | 11 | POLYGON ((0 0, 1 0, 0 1, 0 0)) 12 | 13 | 14 | POINT (0.95 0.05) 15 | 16 | 17 | false 18 | 19 | 20 | 21 | 22 | 23 | L/L - Line A contains Line B. 24 | Fails due to imprecision of computed self-node in A. 25 | See https://trac.osgeo.org/geos/ticket/572 26 | 27 | 28 | LINESTRING (1 0, 0 2, 0 0, 2 2) 29 | 30 | 31 | LINESTRING (0 0, 2 2) 32 | 33 | 34 | true 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tests/xmltester/tests/general/MISSING: -------------------------------------------------------------------------------- 1 | Tests found in JTS/testxml/general and not ported as of rev 3991 (Jun 30 2014) 2 | ---------------------------------------------------------------------------- 3 | 4 | TestDensify.xml 5 | - requires densify::Densifier still unported 6 | 7 | -------------------------------------------------------------------------------- /tests/xmltester/tests/general/TestConvexHull-big.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Big convex hull 5 | 6 | MULTIPOINT((-1000000000000000000000000 -1000000000000000000000000), (1000000000000000000000000 -1000000000000000000000000), (1000000000000000000000000 1000000000000000000000000), (-1000000000000000000000000 1000000000000000000000000), (0 0)) 7 | 8 | 9 | 10 | POLYGON( 11 | (-1000000000000000000000000 -1000000000000000000000000, -1000000000000000000000000 1000000000000000000000000, 1000000000000000000000000 1000000000000000000000000, 1000000000000000000000000 -1000000000000000000000000, -1000000000000000000000000 -1000000000000000000000000)) 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/xmltester/tests/general/TestOverlayPLPrec.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PP - Point just off line. Causes non-robust algorithms to fail. 6 | 7 | LINESTRING(-123456789 -40, 381039468754763 123456789) 8 | 9 | 10 | POINT(0 0) 11 | 12 | 13 | 14 | false 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tests/xmltester/tests/general/TestPreparedPointPredicate.xml: -------------------------------------------------------------------------------- 1 | 2 | Test cases for PreparedPoint predicates 3 | 4 | org.locationtech.jtstest.geomop.PreparedGeometryOperation 5 | 6 | 7 | P/A - point in interior of poly 8 | POINT (100 100) 9 | 10 | POLYGON ((50 130, 150 130, 100 50, 50 130)) 11 | 12 | true 13 | 14 | 15 | 16 | P/A - point on boundary of poly 17 | POINT (100 50) 18 | 19 | POLYGON ((50 130, 150 130, 100 50, 50 130)) 20 | 21 | true 22 | 23 | 24 | 25 | P/A - point outside poly 26 | POINT (200 200) 27 | 28 | POLYGON ((50 130, 150 130, 100 50, 50 130)) 29 | 30 | false 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/xmltester/tests/general/TestRelatePP.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | same point 5 | 6 | POINT(20 20) 7 | 8 | 9 | POINT(20 20) 10 | 11 | 12 | 13 | true 14 | 15 | 16 | 17 | 18 | 19 | different point 20 | 21 | POINT(20 20) 22 | 23 | 24 | POINT(20 30) 25 | 26 | 27 | 28 | true 29 | 30 | 31 | 32 | 33 | 34 | some same, some different points 35 | 36 | MULTIPOINT((40 40), (80 60), (40 100)) 37 | 38 | 39 | MULTIPOINT((40 40), (80 60), (120 100)) 40 | 41 | 42 | 43 | true 44 | 45 | 46 | 47 | 48 | 49 | same points 50 | 51 | MULTIPOINT((40 40), (80 60), (120 100)) 52 | 53 | 54 | MULTIPOINT((40 40), (80 60), (120 100)) 55 | 56 | 57 | 58 | true 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /tests/xmltester/tests/general/TestUnaryUnionFloating.xml: -------------------------------------------------------------------------------- 1 | 2 | Tests for Geometry.union() method (unary union) with floating precision 3 | 4 | 5 | mP - showing that non-polygonal components are discarded correctly 6 | 7 | GEOMETRYCOLLECTION ( 8 | POLYGON ((-3 -2, 700 900, -6 900, -3 -2)), 9 | POLYGON((700 900, -1.6859349853697 899.55, 0.3 -0.4, 700 900)), 10 | POLYGON ((700 860, 700 899.5, -1.68593498537 899.55, 700 860)) 11 | ) 12 | 13 | 14 | 15 | POLYGON ((0.2942036115049298 2.226702215615205, -3 -2, -6 900, 700 900, 699.6114719806972 899.5000276853219, 700 899.5, 700 860, 670.2204017222961 861.6785046602191, 0.3 -0.4, 0.2942036115049298 2.226702215615205)) 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /tests/xmltester/tests/general/TestValid2-big.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Test 92 5 | 6 | POLYGON ((100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) 7 | 8 | true 9 | 10 | 11 | Test 558 12 | 13 | MULTIPOINT (-1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 1000000000000000000000000, -1000000000000000000000000 1000000000000000000000000, 0 0) 14 | 15 | true 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/xmltester/tests/issue/issue-geos-1018.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Difference of two geometries 6 | 7 | 8 | POLYGON((0.1 0.1, 4.0 0.1, 4.0 1.9, 0.1 1.9, 0.1 0.1)) 9 | 10 | 11 | POLYGON((0 0, 0 2, 2 2, 2 0, 0 0)) 12 | 13 | 14 | 15 | POLYGON ((2.0 1.9, 4.0 1.9, 4.0 0.1, 2.0 0.1, 2.0 1.9)) 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tests/xmltester/tests/issue/issue-geos-1085.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Empty component in multilinestring 7 | See https://trac.osgeo.org/geos/ticket/1085 8 | 9 | 10 | LINESTRING(0 0, 10 0) 11 | 12 | 13 | MULTILINESTRING((0 10,10 -10),EMPTY) 14 | 15 | true 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tests/xmltester/tests/issue/issue-geos-234.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | http://trac.osgeo.org/geos/ticket/234 4 | 5 | 6 | 7 | 8 | 9 | http://trac.osgeo.org/geos/ticket/234 10 | Assertion failed on intersecting collection with empty component 11 | 12 | 13 | MULTIPOLYGON (((1 1, 1 5, 5 5, 5 1, 1 1), EMPTY)) 14 | 15 | 16 | MULTIPOLYGON (((3 3, 3 4, 4 4, 4 3, 3 3))) 17 | 18 | 19 | 20 | POLYGON ((3 3, 3 4, 4 4, 4 3, 3 3)) 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/xmltester/tests/issue/issue-geos-527.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bogus noding 8 | http://trac.osgeo.org/geos/ticket/527 9 | 10 | 11 | LINESTRING( 12 | 1725063 4819121, 13 | 1725064.14183882 4819094.70208557, 14 | 1725064.13656044 4819094.70235069, 15 | 1725064.14210362 4819094.70227252, 16 | 1725064.13656043 4819094.70235069, 17 | 1725063 4819121 18 | ) 19 | 20 | 21 | 22 | MULTILINESTRING ((1725064.13656044 4819094.70235069, 1725063 4819121), (1725063 4819121, 1725064.141830536 4819094.702276371), (1725064.13656044 4819094.70235069, 1725064.141830536 4819094.702276371), (1725064.141830536 4819094.702276371, 1725064.14183882 4819094.70208557, 1725064.13656044 4819094.70235069), (1725064.141830536 4819094.702276371, 1725064.14210362 4819094.70227252)) 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /tests/xmltester/tests/issue/issue-geos-582.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | GC - overlapping polygons 5 | 6 | MULTIPOLYGON(EMPTY,((0 0,1 0,1 1,0 1, 0 0))) 7 | 8 | POINT (0.5 0.5) 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/xmltester/tests/issue/issue-geos-590.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Trac Issue 590 5 | 6 | POLYGON ((-85.0750607179665220 113.8654258494467400, 7 | 64.3672965899103670 156.0107332916275600, 8 | 137.3079656672400100 43.2577438927670460, 9 | 87.8851662143294450 -9.3724347171667830, 10 | 64.1043275247160270 12.5345351643778980, 11 | 57.6290566127233890 11.8540587044160620, 12 | 56.4515936228298330 23.0585489359124730, 13 | 66.2862534590275200 31.8839277149233600, 14 | 77.2983762851187630 29.5048162624378390, 15 | 75.6128088072109530 21.7028799222997040, 16 | 88.6113412524690600 -8.5991332777010179, 17 | 55.1320522049615960 -44.2511194421583620, 18 | 38.7066196617741550 -28.8266827415760860, 19 | 20.0462661184433340 -41.4559854697147760, 20 | -85.0750607179665220 113.8654258494467400), 21 | (30.0425661643411640 24.1756403122601360, 22 | 36.6948846784684620 54.9670302991890620, 23 | 73.5550410624974380 58.8406085742523290, 24 | 44.5925425701409350 103.6113561802426200, 25 | -12.7705879390574210 87.4339696968678620, 26 | 30.0425661643411640 24.1756403122601360)) 27 | 28 | false 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /tests/xmltester/tests/issue/issue-geos-990.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Difference of two 3D geometries 6 | 7 | 8 | LINESTRING(0 0,0 10,10 10,10 0,0 0) 9 | 10 | 11 | GEOMETRYCOLLECTION Z (GEOMETRYCOLLECTION Z (MULTILINESTRING Z ((0 0 10,10 0 20),(10 0 20,10 10 30)),LINESTRING Z (0 10 20,10 10 30)),LINESTRING Z (0 0 10,0 10 20)) 12 | 13 | 14 | 15 | LINESTRING EMPTY 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tests/xmltester/tests/misc/Buffer-2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Extreme simplification of the Big Bad Nasty buffer. 8 | If the first element is reordered backward, things are fine !! 9 | 10 | 11 | 12 | MULTIPOLYGON((( 13 | 3135840 10098400, 14 | 3135702 10098200, 15 | 3135830 10098461, 16 | 3135840 10098400 17 | )) , (( 18 | 3129627 10098250, 19 | 3130490 10098813, 20 | 3130663 10098320, 21 | 3130263 10097448, 22 | 3129627 10098250 23 | ),( 24 | 3130240 10098310, 25 | 3130210 10098340, 26 | 3130193 10098318, 27 | 3130240 10098310 28 | ))) 29 | 30 | 31 | 32 | 33 | 34 | 35 | MULTIPOLYGON((( 36 | 3135840 10098400, 37 | 3135702 10098200, 38 | 3135830 10098461, 39 | 3135840 10098400 40 | )) , (( 41 | 3129627 10098250, 42 | 3130490 10098813, 43 | 3130663 10098320, 44 | 3130263 10097448, 45 | 3129627 10098250 46 | ),( 47 | 3130240 10098310, 48 | 3130210 10098340, 49 | 3130193 10098318, 50 | 3130240 10098310 51 | ))) 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /tests/xmltester/tests/misc/linemerge.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Case 4 | 5 | MULTILINESTRING((0 0, 10 0), (10 0, 20 0)) 6 | 7 | 8 | 9 | GEOMETRYCOLLECTION ( LINESTRING(0 0, 10 0, 20 0) ) 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/xmltester/tests/robust/TestRobustOverlayFixed.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AA 6 | 7 | POLYGON ((545 317, 617 379, 581 321, 545 317)) 8 | 9 | 10 | POLYGON ((484 290, 558 359, 543 309, 484 290)) 11 | 12 | 13 | 14 | 15 | LINESTRING (545 317, 546 317) 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /tests/xmltester/tests/robust/TestRobustRelate.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | PP - Point is not on line. Non-robust algorithms fail by erroneously reporting intersects=true. 5 | 6 | LINESTRING(-123456789 -40, 381039468754763 123456789) 7 | 8 | 9 | POINT(0 0) 10 | 11 | 12 | 13 | false 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/xmltester/tests/robust/overlay/TestOverlay-geos-234.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | http://trac.osgeo.org/geos/ticket/234 4 | 5 | 6 | 7 | 8 | 9 | http://trac.osgeo.org/geos/ticket/234 10 | Assertion failed on intersecting collection with empty component 11 | 12 | 13 | MULTIPOLYGON (((1 1, 1 5, 5 5, 5 1, 1 1), EMPTY)) 14 | 15 | 16 | MULTIPOLYGON (((3 3, 3 4, 4 4, 4 3, 3 3))) 17 | 18 | 19 | 20 | POLYGON ((3 3, 3 4, 4 4, 4 3, 3 3)) 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/xmltester/tests/robust/overlay/TestOverlay-geos-459.xml: -------------------------------------------------------------------------------- 1 | 2 | http://trac.osgeo.org/geos/ticket/459 3 | 4 | 5 | 6 | 7 | 0102000000080000003C0AD7E32D4E3A4152B81E250A4452412085EB91284A3A417A14AE2719445241285C8F42354A3A41A4703D6A1E445241CCCCCC0C474A3A415C8FC2851E445241C4F5289C4B4A3A415C8FC2C52B445241BE08DEAE534E3A41B1B518AB1F44524100000000604E3A419A9999C9064452413C0AD7E32D4E3A4152B81E250A445241 8 | 9 | 10 | 010200000009000000B89C2EFE364A3A41DFC087291F445241545C8F42354A3A41A4703D6A1E4452418CEC6D6F354A3A41FE7E44D31D44524136C80FA4394A3A412D7F89121D445241409B06043D4A3A415860C1CC1C445241360D6849404A3A4136B46EC91C445241FC25CB4B474A3A41B72FD41F1D445241CDCCCC0C474A3A415C8FC2851E445241181E3474434A3A4116CE6F471F445241 11 | 12 | 13 | 14 | true 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /tests/xmltester/tests/robust/overlay/TestOverlay-geos-522.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Overlay fails with classic overlay, floating overlay 8 | http://trac.osgeo.org/geos/ticket/522 9 | 10 | 11 | 00000000030000000100000005C13118F40000021D4129F7E61E2399E3C13118F40000021C4129FB1EC6E992B9C13118F40000021C4129FB1C7A29E156C131188FC33F491A4129F9FEFCFEC6D8C13118F40000021D4129F7E61E2399E3 12 | 13 | 14 | 00000000030000000100000004C13118F40000021D4129FA6AECF26D05C13118F40000021C4129FAC7A2C8D1D1C13118EC265BFAD64129FABBAEFEF5C8C13118F40000021D4129FA6AECF26D05 15 | 16 | true 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /tests/xmltester/tests/robust/overlay/TestOverlay-geos-527.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | .01 5 | 6 | 7 | 8 | Bogus noding 9 | http://trac.osgeo.org/geos/ticket/527 10 | 11 | 12 | LINESTRING( 13 | 1725063 4819121, 14 | 1725064.14183882 4819094.70208557, 15 | 1725064.13656044 4819094.70235069, 16 | 1725064.14210362 4819094.70227252, 17 | 1725064.13656043 4819094.70235069, 18 | 1725063 4819121 19 | ) 20 | 21 | 22 | 52.6557 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/xmltester/tests/robust/overlay/TestOverlay-geos-997-union-fail.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | https://trac.osgeo.org/geos/ticket/997 4 | GEOS #997 - Extract containing geometry which fails with simple noding. 5 | 6 | 7 | 8 | 9 | GEOS #997 - Extract containing geometry which fails with simple noding. 10 | 11 | POLYGON ((-14735900 7678000, -14734775.733413335 7677081.324543352, -14734759.892794933 7677034.896890251, -14734755.426387085 7677015.922716262, -14734749.379277144 7676970.918132066, -14734748.706236055 7676951.007251211, -14734751.993518736 7676931.358079898, -14734759.110654198 7676912.750486192, -14734769.775166066 7676895.922998344, -14736900 7676600, -14735900 7678000)) 12 | 13 | 14 | POLYGON ((-14736100 7675500, -14736300 7677000, -14734772.848605746 7677023.01209576, -14734761.699689751 7677007.276952976, -14734753.778393028 7676989.694401839, -14734749.379303094 7676970.918325199, -14734746.00974369 7676945.841324383, -14734736.787535263 7676910.78962753, -14734733.838331584 7676893.609063869, -14736100 7675500)) 15 | 16 | 17 | true 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/xmltester/tests/robust/overlay/TestOverlay-gisse-345341-lines.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | https://gis.stackexchange.com/questions/345341/get-location-of-postgis-geos-topology-exception 4 | Union of line fails using simple noding 5 | 6 | 7 | 8 | 9 | GISSE 345341 - Union of line fails using simple noding. 10 | 11 | 0102000020110F000003000000DC874D65FCC25EC176032C6B350C5341B336429FFEC25EC1F962BBD9480C5341FC849518FFC25EC15BE20F5F500C5341 12 | 13 | 14 | 0102000020110F000006000000FA9BBFD3FCC25EC1B978232F390C5341B336429FFEC25EC1F962BBD9480C5341A77E6BE5FEC25EC1357C21334D0C5341C3EBA27BFEC25EC11BE5A4C34A0C5341B61D8CACFCC25EC1BCF273143C0C5341FA9BBFD3FCC25EC1B978232F390C5341 15 | 16 | 17 | true 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/xmltester/tests/validate/TestRelateAA-big.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | A/A-6-18: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] 6 | 7 | POLYGON( 8 | (100 100, 100 200, 200 200, 200 100, 100 100)) 9 | 10 | 11 | POLYGON( 12 | (100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) 13 | 14 | 15 | true 16 | 17 | 18 | 19 | 20 | A/A-6-24: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] 21 | 22 | POLYGON( 23 | (120 100, 120 200, 200 200, 200 100, 120 100)) 24 | 25 | 26 | POLYGON( 27 | (100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) 28 | 29 | 30 | true 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/xmltester/tinyxml2/README: -------------------------------------------------------------------------------- 1 | Code imported from https://github.com/leethomason/tinyxml2 2 | -------------------------------------------------------------------------------- /tools/astyle.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | DIR=`dirname $0` 4 | ${DIR}/astyle/astyle \ 5 | --style=stroustrup \ 6 | --unpad-paren \ 7 | --pad-header \ 8 | --pad-comma \ 9 | --indent=spaces=4 \ 10 | --align-pointer=type \ 11 | --max-code-length=120 \ 12 | --lineend=linux \ 13 | $@ 14 | -------------------------------------------------------------------------------- /tools/astyle/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################# 2 | # 3 | # Copyright (C) 2019 Paul Ramsey 4 | # 5 | # This is free software; you can redistribute and/or modify it under 6 | # the terms of the GNU Lesser General Public Licence as published 7 | # by the Free Software Foundation. 8 | # See the COPYING file for more information. 9 | # 10 | ################################################################################# 11 | 12 | include_directories(${CMAKE_CURRENT_SOURCE_DIR}) 13 | file(GLOB_RECURSE astyle_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) 14 | add_executable(astyle ${astyle_SOURCES}) 15 | if(MSVC) 16 | target_compile_options(astyle PRIVATE /source-charset:utf-8) 17 | endif() 18 | # message(STATUS "Enable AStyle") 19 | 20 | -------------------------------------------------------------------------------- /tools/astyle/LICENSE.md: -------------------------------------------------------------------------------- 1 | ### MIT License 2 | 3 | Copyright (c) 2018 by Jim Pattee . 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /tools/ci/berrie.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Raspberry Pi (berrie) 32-bit ARM CI script runner for GEOS 4 | # 5 | # Copyright (c) 2018-2021 Regina Obe 6 | # 7 | # This is free software; you can redistribute and/or modify it under 8 | # the terms of the GNU Lesser General Public Licence as published 9 | # by the Free Software Foundation. 10 | # See the COPYING file for more information. 11 | 12 | # read version from Version.txt file 13 | . Version.txt 14 | echo ~/workspace/geos 15 | export REL_PATH=~/workspace/geos/rel-${GEOS_VERSION_MAJOR}.${GEOS_VERSION_MINOR}.${GEOS_VERSION_PATCH} 16 | rm -rf build 17 | mkdir -p build 18 | cd build 19 | cmake -DCMAKE_INSTALL_PREFIX:PATH=${REL_PATH} ../ 20 | make && make install 21 | [ -f CMakeCache.txt ] && \ 22 | ctest --output-on-failure . || \ 23 | make check 24 | -------------------------------------------------------------------------------- /tools/ci/berrie64.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Raspberry Pi (berrie64) CI script runner for GEOS 4 | # 64-bit ARM chip 5 | # 6 | # Copyright (c) 2020-2021 Regina Obe 7 | # 8 | # This is free software; you can redistribute and/or modify it under 9 | # the terms of the GNU Lesser General Public Licence as published 10 | # by the Free Software Foundation. 11 | # See the COPYING file for more information. 12 | 13 | # read version from Version.txt file 14 | . Version.txt 15 | echo ${JENKINS_HOME} 16 | export REL_PATH=~/workspace/geos/rel-${GEOS_VERSION_MAJOR}.${GEOS_VERSION_MINOR}.${GEOS_VERSION_PATCH} 17 | rm -rf build 18 | mkdir -p build 19 | cd build 20 | cmake -DCMAKE_INSTALL_PREFIX:PATH=${REL_PATH} ../ 21 | make && make install 22 | [ -f CMakeCache.txt ] && \ 23 | ctest --output-on-failure . || \ 24 | make check 25 | -------------------------------------------------------------------------------- /tools/ci/bessie.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # FreeBSD 64 (bessie) CI script runner for GEOS 4 | # 5 | # Copyright (c) 2018 Regina Obe 6 | # 7 | # This is free software; you can redistribute and/or modify it under 8 | # the terms of the GNU Lesser General Public Licence as published 9 | # by the Free Software Foundation. 10 | # See the COPYING file for more information. 11 | 12 | rm -rf build 13 | mkdir -p build 14 | cd build 15 | cmake ../ 16 | make 17 | [ -f CMakeCache.txt ] && \ 18 | ctest --output-on-failure . || \ 19 | make check 20 | -------------------------------------------------------------------------------- /tools/ci/bessie32.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # FreeBSD 32 (bessie32) CI script runner for GEOS 4 | # 5 | # Copyright (c) 2018 Regina Obe 6 | # 7 | # This is free software; you can redistribute and/or modify it under 8 | # the terms of the GNU Lesser General Public Licence as published 9 | # by the Free Software Foundation. 10 | # See the COPYING file for more information. 11 | 12 | rm -rf build 13 | mkdir -p build 14 | cd build 15 | cmake ../ 16 | make 17 | [ -f CMakeCache.txt ] && \ 18 | ctest --output-on-failure . || \ 19 | make check 20 | -------------------------------------------------------------------------------- /tools/ci/common.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Common utilities for Travis CI setup for GEOS 4 | # 5 | # Copyright (c) 2013 Mateusz Loskot 6 | # 7 | # This is free software; you can redistribute and/or modify it under 8 | # the terms of the GNU Lesser General Public Licence as published 9 | # by the Free Software Foundation. 10 | # See the COPYING file for more information. 11 | # 12 | if [ "$TRAVIS" != "true" ] ; then 13 | echo "Running this script makes no sense outside of travis-ci.org" 14 | exit 1 15 | fi 16 | # 17 | # Environment 18 | # 19 | TCI_NUMTHREADS=2 20 | if [ -f /sys/devices/system/cpu/online ]; then 21 | # Calculates 1.5 times physical threads 22 | TCI_NUMTHREADS=$(( ( $(cut -f 2 -d '-' /sys/devices/system/cpu/online) + 1 ) * 15 / 10 )) 23 | fi 24 | # 25 | # Functions 26 | # 27 | tmstamp() 28 | { 29 | echo -n "[$(date '+%H:%M:%S')]" ; 30 | } 31 | 32 | run_make() 33 | { 34 | [ $TCI_NUMTHREADS -gt 0 ] && make -j $TCI_NUMTHREADS || make 35 | } 36 | -------------------------------------------------------------------------------- /tools/ci/debbie.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Debian sid CI script runner for GEOS 4 | # 64-bit Debian Sid (debbie) 5 | # 6 | # Copyright (c) 2021 Regina Obe 7 | # 8 | # This is free software; you can redistribute and/or modify it under 9 | # the terms of the GNU Lesser General Public Licence as published 10 | # by the Free Software Foundation. 11 | # See the COPYING file for more information. 12 | export REL_PATH=${WORKSPACE}/rel-${GEOS_VER}w${OS_BUILD} 13 | rm -rf build 14 | mkdir -p build 15 | cd build 16 | cmake -DCMAKE_INSTALL_PREFIX:PATH=${REL_PATH} ../ 17 | make && make install 18 | [ -f CMakeCache.txt ] && \ 19 | ctest --output-on-failure . || \ 20 | make check 21 | -------------------------------------------------------------------------------- /tools/ci/geosop/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker.osgeo.org/geos/build-test:alpine AS base 2 | ARG VERSION=47f145e 3 | 4 | WORKDIR /source 5 | ADD . /source 6 | 7 | #RUN wget --quiet https://github.com/libgeos/geos/archive/${VERSION}.tar.gz --output-document - \ 8 | #| tar xz --directory=. --strip-components=1 9 | 10 | WORKDIR /build 11 | RUN cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_BENCHMARKS=OFF -D BUILD_TESTING=OFF /source \ 12 | && make install \ 13 | && cp bin/geosop /usr/local/bin/geosop 14 | 15 | WORKDIR /install/bin 16 | RUN cp --no-dereference /usr/local/bin/geos* . \ 17 | && for i in ./*; do strip -s $i 2>/dev/null || /bin/true; done 18 | 19 | WORKDIR /install/lib 20 | RUN cp --no-dereference /usr/local/lib*/libgeos*.so.* . \ 21 | && for i in ./*; do strip -s $i 2>/dev/null || /bin/true; done 22 | 23 | FROM alpine 24 | RUN apk add --no-cache libstdc++ 25 | COPY --from=base /install/bin/geos* /usr/local/bin/ 26 | COPY --from=base /install/lib/libgeos* /usr/local/lib/ 27 | 28 | ENTRYPOINT ["geosop"] 29 | -------------------------------------------------------------------------------- /tools/ci/releasenotes.pl: -------------------------------------------------------------------------------- 1 | my $first = 0; 2 | while(<>) { 3 | if (/^##/ && !$first) { 4 | $first = 1; 5 | next; 6 | } 7 | if (/^##/ && $first) { 8 | exit; 9 | } 10 | print; 11 | } 12 | -------------------------------------------------------------------------------- /tools/ci/script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Travis CI script runner for GEOS 4 | # 5 | # Copyright (c) 2013 Mateusz Loskot 6 | # 7 | # This is free software; you can redistribute and/or modify it under 8 | # the terms of the GNU Lesser General Public Licence as published 9 | # by the Free Software Foundation. 10 | # See the COPYING file for more information. 11 | # 12 | 13 | if [ -z "${TRAVIS_BUILD_DIR+x}" ]; then 14 | echo TRAVIS_BUILD_DIR not defined 15 | exit 1 16 | fi 17 | 18 | # source common functions 19 | . ${TRAVIS_BUILD_DIR}/tools/ci/common.sh 20 | 21 | # prepare build directory 22 | builddir=${TRAVIS_BUILD_DIR}/_build 23 | mkdir -p ${builddir} 24 | cd ${builddir} 25 | 26 | # build and run tests 27 | ${TRAVIS_BUILD_DIR}/tools/ci/script_cmake.sh 28 | -------------------------------------------------------------------------------- /tools/ci/script_cmake.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Travis CI script for GEOS build with CMake 4 | # 5 | # Copyright (C) 2013 Mateusz Loskot 6 | # 7 | # This is free software; you can redistribute and/or modify it under 8 | # the terms of the GNU Lesser General Public Licence as published 9 | # by the Free Software Foundation. 10 | # See the COPYING file for more information. 11 | # 12 | 13 | if [ -z "${TRAVIS_BUILD_DIR+x}" ]; then 14 | echo TRAVIS_BUILD_DIR not defined 15 | exit 1 16 | fi 17 | 18 | # source common functions 19 | . ${TRAVIS_BUILD_DIR}/tools/ci/common.sh 20 | 21 | # return on first failure 22 | set -e 23 | 24 | cmake --version 25 | 26 | cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILD_DOCUMENTATION=YES ${TRAVIS_BUILD_DIR} 27 | run_make 28 | cmake --build . --target docs 29 | ctest --output-on-failure . 30 | 31 | if [ "${BUILD_TYPE}" = "Coverage" ]; then 32 | curl -o codecov.sh https://codecov.io/bash 33 | bash codecov.sh 34 | fi 35 | -------------------------------------------------------------------------------- /tools/codespell.ignore: -------------------------------------------------------------------------------- 1 | parms 2 | Geometrys 3 | deques 4 | extracter 5 | implementors 6 | translater 7 | thirdparty 8 | crate 9 | eiter 10 | examplar 11 | nempty 12 | ba 13 | te 14 | seh 15 | bLoc 16 | aLo 17 | Wel 18 | EMPTYY 19 | -------------------------------------------------------------------------------- /tools/findclassfiles: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if test "x${1}" = "x"; then 4 | echo "Usage: $0 []" >&2 5 | exit 1 6 | fi 7 | 8 | classname="${1}" 9 | package="." 10 | 11 | if test "x${2}" != "x"; then 12 | package="${2}" 13 | fi 14 | 15 | # TODO: skip directory-only matches 16 | find . -name '*.h' -o -name '*.inl' -o -name '*.cpp' \ 17 | | grep -wi "${classname}" \ 18 | | grep -i "${package}" 19 | -------------------------------------------------------------------------------- /tools/geos.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | includedir=@includedir@ 4 | libdir=@libdir@ 5 | 6 | Name: GEOS 7 | Description: Geometry Engine, Open Source - C API 8 | Requires: 9 | Version: @VERSION@ 10 | Cflags: -I${includedir} 11 | Libs: -L${libdir} -lgeos_c 12 | Libs.private: -lgeos @EXTRA_LIBS@ 13 | -------------------------------------------------------------------------------- /util/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Part of CMake configuration for GEOS 3 | # 4 | # Copyright (C) 2020 Martin Davis 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | 12 | option(BUILD_GEOSOP "Build geosop command-line interface" ON) 13 | message(STATUS "GEOS: Build geosop ${BUILD_GEOSOP}") 14 | 15 | if(BUILD_GEOSOP) 16 | 17 | add_executable(orientview 18 | OrientationIndexViewer.cpp 19 | ) 20 | 21 | target_link_libraries(orientview PRIVATE geos geos_c) 22 | 23 | add_subdirectory(geosop) 24 | 25 | endif() 26 | -------------------------------------------------------------------------------- /util/geosop/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Part of CMake configuration for GEOS 3 | # 4 | # Copyright (C) 2020 Martin Davis 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | 12 | add_executable(geosop 13 | GeosOp.cpp 14 | GeometryOp.cpp 15 | ) 16 | 17 | target_link_libraries(geosop PRIVATE geos geos_c) 18 | 19 | install(TARGETS geosop 20 | DESTINATION ${CMAKE_INSTALL_BINDIR} 21 | ) 22 | 23 | if(BUILD_SHARED_LIBS) 24 | if(NOT DEFINED CMAKE_INSTALL_RPATH) 25 | # Use relative rpath 26 | if(APPLE) 27 | set_target_properties(geosop PROPERTIES 28 | INSTALL_RPATH "@loader_path/../${CMAKE_INSTALL_LIBDIR}") 29 | else() 30 | set_target_properties(geosop PROPERTIES 31 | INSTALL_RPATH "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}") 32 | endif() 33 | endif() 34 | endif() 35 | 36 | 37 | -------------------------------------------------------------------------------- /web/.hugo_build.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/.hugo_build.lock -------------------------------------------------------------------------------- /web/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Part of CMake configuration for GEOS 3 | # 4 | # Copyright (C) 2021 Paul Ramsey 5 | # 6 | # This is free software; you can redistribute and/or modify it under 7 | # the terms of the GNU Lesser General Public Licence as published 8 | # by the Free Software Foundation. 9 | # See the COPYING file for more information. 10 | ################################################################################ 11 | 12 | 13 | if(BUILD_WEBSITE) 14 | 15 | # Can't build website without hugo 16 | find_program( 17 | HUGO_EXE NAMES hugo 18 | REQUIRED 19 | ) 20 | 21 | message(STATUS "GEOS: Build website ON") 22 | 23 | add_custom_target(web 24 | COMMAND ${HUGO_EXE} 25 | --source ${CMAKE_CURRENT_SOURCE_DIR} 26 | --destination ${CMAKE_CURRENT_BINARY_DIR}/html 27 | COMMENT "Building web site to ${CMAKE_CURRENT_BINARY_DIR}/html" 28 | ) 29 | 30 | endif() 31 | -------------------------------------------------------------------------------- /web/README.md: -------------------------------------------------------------------------------- 1 | ## Static Site Build 2 | 3 | Our site is built with [hugo](https://gohugo.io/). To work with the docs you will probably want to [install hugo](https://gohugo.io/getting-started/installing/#quick-install) so you can see the rendered result as you work. 4 | 5 | ## Theme 6 | 7 | We are using the [hugo-geekdoc](https://geekdocs.de/) theme for this web site. 8 | To refresh the theme, update the version to the desired release and fetch the new code. 9 | 10 | ```bash 11 | THEME_VERSION=v0.8.2 12 | THEME=hugo-geekdoc 13 | URL=https://github.com/thegeeklab/$THEME/releases/download/$THEME_VERSION/$THEME.tar.gz 14 | rm -rf themes/$THEME 15 | curl -sSL "$(URL)" | tar -xz -C themes/$THEME/ --strip-components=1 16 | ``` 17 | 18 | ## Development 19 | 20 | Install the hugo binary for your operating system. Run the local server. 21 | 22 | ``` 23 | hugo server 24 | ``` 25 | 26 | Remember to set "draft: false" in the page front matter or your content won't show up. 27 | -------------------------------------------------------------------------------- /web/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | date: {{ .Date }} 4 | draft: true 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /web/config.toml: -------------------------------------------------------------------------------- 1 | baseURL = "https://libgeos.org/" 2 | languageCode = "en-us" 3 | title = "GEOS" 4 | theme = "hugo-geekdoc" 5 | pygmentsUseClasses = true 6 | pygmentsCodeFences = true 7 | disablePathToLower = true 8 | enableEmoji = true 9 | 10 | enableGitInfo = false 11 | 12 | [params] 13 | current_release = "3.13.1" 14 | geekdocLogo = "web-logo.png" 15 | 16 | # turn these on when we move to the gh/main branch 17 | geekdocRepo = "https://github.com/libgeos/geos" 18 | geekdocEditPath = "edit/main/web/content" 19 | 20 | geekdocBackToTop = true 21 | -------------------------------------------------------------------------------- /web/content/posts/2021-11-02-geos-3-10-1-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Version 3.10.1" 3 | type: posts 4 | date: 2021-11-02T00:00:00 5 | --- 6 | 7 | The 3.10.1 release of GEOS is now available [to download]({{< ref "/usage/download" >}}). 8 | 9 | This release is primarily to fix some version numbering issues in the initial 3.10.0 source tarball. Some extra fixes are bundled as well. 10 | 11 | 12 | 13 | * Fixes a mistake in constants used to select WKB flavor in C API 14 | * Fixes a crash when reducing precision on a LinearRing 15 | * Fixes GeoJSON crash on invalid input 16 | * Uses std::sqrt exclusively, to support the Solaris build 17 | * Fixes mistaken version numbers in some parts of 3.10.0 18 | 19 | -------------------------------------------------------------------------------- /web/content/posts/2023-11-12-geos-3-9-5-and-3-8-4-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Version 3.9.5 and 3.8.4 EOL" 3 | type: posts 4 | date: 2023-11-12T00:00:00 5 | --- 6 | 7 | As part of a batch release of patches for stable branches, the 3.9.5 release of GEOS is now available [to download]({{< ref "/usage/download" >}}). In addition this release cycle includes the final release of GEOS 3.8 series, GEOS 3.8.4. 8 | If you haven't already upgraded to a newer GEOS minor version from GEOS 3.8, we highly recommend you do so. 9 | 10 | Release notes for 3.8.4 and 3.9.5 are below: 11 | [3.8.4](https://github.com/libgeos/geos/blob/3.8.4/NEWS), 12 | [3.9.5](https://github.com/libgeos/geos/blob/3.9.5/NEWS), 13 | -------------------------------------------------------------------------------- /web/content/posts/2025-03-03-patch-releases.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "GEOS 2025 Patch Releases" 3 | type: posts 4 | date: 2025-03-03T00:00:00 5 | --- 6 | 7 | All the stable branches have had some maintenance work over the past year, and this release catches all branches up to the current state of development. 8 | 9 | * [3.13.1 Release Notes](https://github.com/libgeos/geos/blob/3.13.1/NEWS.md) 10 | * [3.12.3 Release Notes](https://github.com/libgeos/geos/blob/3.12.3/NEWS.md) 11 | * [3.11.5 Release Notes](https://github.com/libgeos/geos/blob/3.11.5/NEWS.md) 12 | * [3.10.7 Release Notes](https://github.com/libgeos/geos/blob/3.10.7/NEWS) 13 | * [3.9.6 Release Notes](https://github.com/libgeos/geos/blob/3.9.6/NEWS) 14 | 15 | Source downloads [are available]({{< ref "/usage/download" >}}) now, and distributions should be updating their builds over the next several weeks. 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /web/content/posts/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: News 3 | type: posts 4 | weight: 100 5 | geekDocHidden: true 6 | --- 7 | -------------------------------------------------------------------------------- /web/content/project/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Project 3 | weight: 1 4 | --- 5 | -------------------------------------------------------------------------------- /web/content/project/rfcs/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Requests for Comment" 3 | date: 2021-10-04T14:21:00-07:00 4 | draft: false 5 | weight: 35 6 | --- 7 | 8 | ## Process 9 | 10 | The Request for Comments process is as follows: 11 | 12 | 1. Create a pull request against this repository adding a new RFC document outlining your planned change. 13 | 1. Solicit comment and feedback on [geos-devel](http://lists.osgeo.org/mailman/listinfo/geos-devel). 14 | 1. Call for a vote on the RFC. 15 | 1. Note the status and commit the RFC to the web site for the record. 16 | 17 | ## RFCs 18 | 19 | {{< toc-tree >}} 20 | 21 | -------------------------------------------------------------------------------- /web/content/specifications/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Geometry Formats" 3 | date: 2021-10-04T14:21:00-07:00 4 | draft: false 5 | weight: 50 6 | --- 7 | 8 | GEOS can read and write common formats for the interchange of simple features geometry. 9 | 10 | {{< toc-tree >}} 11 | 12 | 13 | -------------------------------------------------------------------------------- /web/content/usage/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Usage" 3 | date: 2021-10-04T14:21:00-07:00 4 | draft: false 5 | weight: 20 6 | --- 7 | -------------------------------------------------------------------------------- /web/content/usage/doxygen.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "API Docs" 3 | date: 2021-10-04T13:44:59-07:00 4 | weight: 35 5 | draft: false 6 | --- 7 | 8 | The [Doxygen](../../doxygen/) documentation is the most up-to-date reference for the C and C++ API of GEOS. 9 | 10 | * [C API](../../doxygen/geos__c_8h.html) 11 | * [C++ API](../../doxygen/cpp_iface.html) 12 | 13 | See also: 14 | 15 | * [C API tutorial]({{< ref "c_api" >}}) 16 | * [C++ API tutorial]({{< ref "cpp_api" >}}). 17 | 18 | [Code examples](https://github.com/libgeos/geos/tree/main/examples) are available in the code repository. 19 | -------------------------------------------------------------------------------- /web/content/usage/faq/geos-line-interpolated-precision.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/content/usage/faq/geos-line-interpolated-precision.png -------------------------------------------------------------------------------- /web/content/usage/faq/geos-line-intersect-precision.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/content/usage/faq/geos-line-intersect-precision.png -------------------------------------------------------------------------------- /web/data/menu/more.yaml: -------------------------------------------------------------------------------- 1 | more: 2 | - name: News 3 | ref: "/posts" 4 | external: false 5 | icon: "gdoc_notification" 6 | - name: Releases 7 | ref: "/usage/download" 8 | external: false 9 | icon: "gdoc_download" 10 | - name: "View Source" 11 | ref: "https://github.com/libgeos/geos" 12 | external: true 13 | icon: "gdoc_github" 14 | 15 | -------------------------------------------------------------------------------- /web/layouts/shortcodes/current_release.html: -------------------------------------------------------------------------------- 1 | {{ $.Site.Params.current_release }}{{- print "" -}} 2 | -------------------------------------------------------------------------------- /web/static/CNAME: -------------------------------------------------------------------------------- 1 | libgeos.org 2 | -------------------------------------------------------------------------------- /web/static/custom.css: -------------------------------------------------------------------------------- 1 | /* Override defaults */ 2 | 3 | header.gdoc-header { 4 | background-color: #559; 5 | color: white; 6 | font-weight: bold; 7 | } 8 | -------------------------------------------------------------------------------- /web/static/favicon/android-chrome-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/favicon/android-chrome-150x150.png -------------------------------------------------------------------------------- /web/static/favicon/android-chrome-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/favicon/android-chrome-310x310.png -------------------------------------------------------------------------------- /web/static/favicon/android-chrome-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/favicon/android-chrome-70x70.png -------------------------------------------------------------------------------- /web/static/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /web/static/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /web/static/favicon/favicon-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/favicon/favicon-64x64.png -------------------------------------------------------------------------------- /web/static/favicon/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/favicon/mstile-150x150.png -------------------------------------------------------------------------------- /web/static/favicon/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/favicon/mstile-310x310.png -------------------------------------------------------------------------------- /web/static/favicon/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/favicon/mstile-70x70.png -------------------------------------------------------------------------------- /web/static/geos-logo/generate.sh: -------------------------------------------------------------------------------- 1 | 2 | # web site title bar 3 | convert geos-lg-white.png \ 4 | -geometry 37x37 \ 5 | -colorspace RGB \ 6 | ../web-logo.png 7 | 8 | # favicon 9 | convert geos-lg-black.png \ 10 | -geometry 32x32 \ 11 | -colorspace RGB \ 12 | -transparent white \ 13 | ../favicon/favicon-32x32.png 14 | 15 | # MSTile 16 | for s in 70 150 310; do 17 | f=../favicon/mstile-${s}x${s}.png 18 | echo $f 19 | convert geos-lg-black.png \ 20 | -geometry ${s}x${s} \ 21 | -colorspace RGB \ 22 | -transparent white \ 23 | $f 24 | done 25 | 26 | # Android Favicon 27 | for s in 70 150 310; do 28 | f=../favicon/android-chrome-${s}x${s}.png 29 | echo $f 30 | convert geos-lg-black.png \ 31 | -geometry 192 \ 32 | -colorspace RGB \ 33 | -transparent white \ 34 | $f 35 | done 36 | 37 | -------------------------------------------------------------------------------- /web/static/geos-logo/geos-lg-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/geos-logo/geos-lg-black.png -------------------------------------------------------------------------------- /web/static/geos-logo/geos-lg-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/geos-logo/geos-lg-white.png -------------------------------------------------------------------------------- /web/static/geos-logo/geos-social-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/geos-logo/geos-social-black.png -------------------------------------------------------------------------------- /web/static/web-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/static/web-logo.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Robert Kaussow 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is furnished 10 | to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice (including the next 13 | paragraph) shall be included in all copies or substantial portions of the 14 | Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 18 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS 19 | OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 21 | OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/VERSION: -------------------------------------------------------------------------------- 1 | v0.39.7 2 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/archetypes/docs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ .Name | humanize | title }}" 3 | weight: 1 4 | # geekdocFlatSection: false 5 | # geekdocToc: 6 6 | # geekdocHidden: false 7 | --- 8 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/archetypes/posts.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | date: {{ .Date }} 4 | --- 5 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/assets/search/config.json: -------------------------------------------------------------------------------- 1 | {{- $searchDataFile := printf "search/%s.data.json" .Language.Lang -}} 2 | {{- $searchData := resources.Get "search/data.json" | resources.ExecuteAsTemplate $searchDataFile . | resources.Minify -}} 3 | { 4 | "dataFile": {{ $searchData.RelPermalink | jsonify }}, 5 | "indexConfig": {{ .Site.Params.geekdocSearchConfig | jsonify }}, 6 | "showParent": {{ if .Site.Params.geekdocSearchShowParent }}true{{ else }}false{{ end }}, 7 | "showDescription": {{ if .Site.Params.geekdocSearchshowDescription }}true{{ else }}false{{ end }} 8 | } 9 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/assets/search/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | {{ range $index, $page := (where .Site.Pages "Params.geekdocProtected" "ne" true) }} 3 | {{ if ne $index 0 }},{{ end }} 4 | { 5 | "id": {{ $index }}, 6 | "href": "{{ $page.RelPermalink }}", 7 | "title": {{ (partial "utils/title" $page) | jsonify }}, 8 | "parent": {{ with $page.Parent }}{{ (partial "utils/title" .) | jsonify }}{{ else }}""{{ end }}, 9 | "content": {{ $page.Plain | jsonify }}, 10 | "description": {{ $page.Summary | plainify | jsonify }} 11 | } 12 | {{ end }} 13 | ] 14 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/images/readme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/images/readme.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/images/screenshot.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/images/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/images/tn.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/_default/_markup/render-codeblock-mermaid.html: -------------------------------------------------------------------------------- 1 | 2 | {{ if not (.Page.Scratch.Get "mermaid") }} 3 | 4 | 5 | {{ .Page.Scratch.Set "mermaid" true }} 6 | {{ end }} 7 | 8 | 9 |
10 |   {{- .Inner -}}
11 | 
12 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/_default/_markup/render-heading.html: -------------------------------------------------------------------------------- 1 | {{- $showAnchor := (and (default true .Page.Params.geekdocAnchor) (default true .Page.Site.Params.geekdocAnchor)) -}} 2 | 3 | 4 | 5 | {{- if $showAnchor -}} 6 |
7 | 11 | {{ .Text | safeHTML }} 12 | 13 | 14 | 15 | 16 |
17 | {{- else -}} 18 |
19 | 23 | {{ .Text | safeHTML }} 24 | 25 |
26 | {{- end -}} 27 | 28 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/_default/_markup/render-image.html: -------------------------------------------------------------------------------- 1 | {{ .Text }} 6 | {{- /* Drop trailing newlines */ -}} 7 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/_default/_markup/render-link.html: -------------------------------------------------------------------------------- 1 | {{- $raw := or (hasPrefix .Text " 12 | {{- .Text | safeHTML -}} 13 | 14 | {{- /* Drop trailing newlines */ -}} 15 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/_default/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ partial "page-header" . }} 3 | 4 | 5 |
8 |

{{ partial "utils/title" . }}

9 | {{ partial "utils/content" . }} 10 |
11 | {{ end }} 12 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ partial "page-header" . }} 3 | 4 | 5 |
8 |

{{ partial "utils/title" . }}

9 | {{ partial "utils/content" . }} 10 |
11 | {{ end }} 12 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/_default/terms.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ range .Paginator.Pages.ByTitle }} 3 |
4 |
5 |

6 | {{ partial "utils/title" . }} 7 |

8 |
9 | 10 |
11 | 12 | {{ $pageCount := len .Pages }} 13 | 14 | 17 | 18 | 19 | 20 | 21 | 22 | {{ $latet := index .Pages.ByDate 0 }} 23 | {{ with $latet }} 24 | {{ partial "utils/title" . }} 25 | {{ end }} 26 | 27 | 28 |
29 |
30 | {{ end }} 31 | {{ partial "pagination.html" . }} 32 | {{ end }} 33 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/foot.html: -------------------------------------------------------------------------------- 1 | {{ if default true .Site.Params.geekdocSearch }} 2 | 3 | {{- $searchConfigFile := printf "search/%s.config.json" .Language.Lang -}} 4 | {{- $searchConfig := resources.Get "search/config.json" | resources.ExecuteAsTemplate $searchConfigFile . | resources.Minify -}} 5 | {{- $searchConfig.Publish -}} 6 | {{ end }} 7 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/head/custom.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/head/favicons.html: -------------------------------------------------------------------------------- 1 | 2 | 8 | 14 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/head/meta.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ hugo.Generator }} 6 | 7 | {{ $keywords := default .Site.Params.Keywords .Keywords }} 8 | 9 | {{- with partial "utils/description" . }} 10 | 11 | {{- end }} 12 | {{- with $keywords }} 13 | 14 | {{- end }} 15 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/head/microformats.html: -------------------------------------------------------------------------------- 1 | {{ partial "microformats/opengraph.html" . }} 2 | {{ partial "microformats/twitter_cards.html" . }} 3 | {{ partial "microformats/schema" . }} 4 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/head/rel-me.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/microformats/twitter_cards.html: -------------------------------------------------------------------------------- 1 | {{- with partial "utils/featured" . }} 2 | 3 | {{- else }} 4 | 5 | {{- end }} 6 | 7 | {{- with partial "utils/featured" . }} 8 | 9 | {{- end }} 10 | {{- with partial "utils/description" . }} 11 | 12 | {{- end }} 13 | {{- with .Site.Social.twitter -}} 14 | 15 | {{- end }} 16 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/pagination.html: -------------------------------------------------------------------------------- 1 | {{ $pag := $.Paginator }} 2 | 3 | 4 | 23 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/search.html: -------------------------------------------------------------------------------- 1 | {{ if default true .Site.Params.geekdocSearch }} 2 | 16 | {{ end }} 17 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/svg-icon-symbols.html: -------------------------------------------------------------------------------- 1 | {{ range resources.Match "sprites/*.svg" }} 2 | {{ printf "" . | safeHTML }} 3 | {{ .Content | safeHTML }} 4 | {{ end }} 5 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/utils/content.html: -------------------------------------------------------------------------------- 1 | {{ $content := .Content }} 2 | 3 | {{ $content = $content | replaceRE `` `` | safeHTML }} 4 | {{ $content = $content | replaceRE `((?:.|\n)+?
)` `
${1}
` | safeHTML }} 5 | 6 | {{ return $content }} 7 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/utils/description.html: -------------------------------------------------------------------------------- 1 | {{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }} 2 | {{ $description := "" }} 3 | 4 | {{ if .Description }} 5 | {{ $description = .Description }} 6 | {{ else }} 7 | {{ if $isPage }} 8 | {{ $description = .Summary }} 9 | {{ else if .Site.Params.description }} 10 | {{ $description = .Site.Params.description }} 11 | {{ end }} 12 | {{ end }} 13 | 14 | {{ return $description }} 15 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/utils/featured.html: -------------------------------------------------------------------------------- 1 | {{ $img := "" }} 2 | 3 | {{ with $source := ($.Resources.ByType "image").GetMatch "{*feature*,*cover*,*thumbnail*}" }} 4 | {{ $featured := .Fill (printf "1200x630 %s" (default "Smart" .Params.anchor)) }} 5 | {{ $img = $featured.Permalink }} 6 | {{ else }} 7 | {{ with default $.Site.Params.images $.Params.images }} 8 | {{ $img = index . 0 | absURL }} 9 | {{ end }} 10 | {{ end }} 11 | 12 | {{ return $img }} 13 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/partials/utils/title.html: -------------------------------------------------------------------------------- 1 | {{ $title := "" }} 2 | 3 | {{ if .Title }} 4 | {{ $title = .Title }} 5 | {{ else if and .IsSection .File }} 6 | {{ $title = path.Base .File.Dir | humanize | title }} 7 | {{ else if and .IsPage .File }} 8 | {{ $title = .File.BaseFileName | humanize | title }} 9 | {{ end }} 10 | 11 | {{ return $title }} 12 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/posts/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 |

{{ partial "utils/title" . }}

5 | 8 |
9 |
10 | {{ partial "utils/content" . }} 11 |
12 |
13 | {{ end }} 14 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: /tags/* 3 | 4 | Sitemap: {{ "sitemap.xml" | absURL }} 5 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/button.html: -------------------------------------------------------------------------------- 1 | {{- $ref := "" }} 2 | {{- $class := "" }} 3 | {{- $size := default "regular" (.Get "size" | lower) }} 4 | 5 | {{- if not (in (slice "regular" "large") $size) }} 6 | {{- $size = "regular" }} 7 | {{- end }} 8 | 9 | {{- with .Get "href" }} 10 | {{- $ref = . }} 11 | {{- end }} 12 | 13 | {{- with .Get "relref" }} 14 | {{- $ref = relref $ . }} 15 | {{- end }} 16 | 17 | {{- with .Get "class" }} 18 | {{- $class = . }} 19 | {{- end }} 20 | 21 | 22 | 23 | 27 | {{ $.Inner }} 28 | 29 | 30 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/columns.html: -------------------------------------------------------------------------------- 1 | {{- $size := default "regular" (.Get "size" | lower) }} 2 | 3 | {{- if not (in (slice "regular" "large" "small") $size) }} 4 | {{- $size = "regular" }} 5 | {{- end }} 6 | 7 | 8 |
9 | {{- range split .Inner "<--->" }} 10 |
11 | {{ . | $.Page.RenderString -}} 12 |
13 | {{- end }} 14 |
15 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/expand.html: -------------------------------------------------------------------------------- 1 | {{ $id := substr (sha1 .Inner) 0 8 }} 2 |
3 | 7 | 8 |
9 | {{ .Inner | $.Page.RenderString | htmlUnescape | safeHTML }} 10 |
11 |
12 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/hint.html: -------------------------------------------------------------------------------- 1 | {{ $type := default "note" (.Get "type") }} 2 | {{ $icon := .Get "icon" }} 3 | {{ $title := default ($type | title) (.Get "title") }} 4 | 5 | 6 |
7 |
8 | {{- with $icon -}} 9 | 10 | {{ $title }} 11 | {{- else -}} 12 | 13 | {{- end -}} 14 |
15 |
{{ .Inner | $.Page.RenderString }}
16 |
17 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/icon.html: -------------------------------------------------------------------------------- 1 | {{ $id := .Get 0 }} 2 | 3 | {{- with $id -}} 4 | 5 | {{- end -}} 6 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/include.html: -------------------------------------------------------------------------------- 1 | {{ $file := .Get "file" }} 2 | {{ $page := .Site.GetPage $file }} 3 | {{ $type := .Get "type" }} 4 | {{ $language := .Get "language" }} 5 | {{ $options :=.Get "options" }} 6 | 7 | 8 |
9 | {{- if (.Get "language") -}} 10 | {{- highlight ($file | readFile) $language (default "linenos=table" $options) -}} 11 | {{- else if eq $type "html" -}} 12 | {{- $file | readFile | safeHTML -}} 13 | {{- else if eq $type "page" -}} 14 | {{- with $page }}{{ .Content }}{{ end -}} 15 | {{- else -}} 16 | {{- $file | readFile | $.Page.RenderString -}} 17 | {{- end -}} 18 |
19 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/katex.html: -------------------------------------------------------------------------------- 1 | 2 | {{ if not (.Page.Scratch.Get "katex") }} 3 | 4 | 8 | 9 | {{ .Page.Scratch.Set "katex" true }} 10 | {{ end }} 11 | 12 | 13 | 14 | {{ cond (in .Params "display") "\\[" "\\(" -}} 15 | {{- trim .Inner "\n" -}} 16 | {{- cond (in .Params "display") "\\]" "\\)" -}} 17 | 18 | {{- /* Drop trailing newlines */ -}} 19 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/mermaid.html: -------------------------------------------------------------------------------- 1 | 2 | {{ if not (.Page.Scratch.Get "mermaid") }} 3 | 4 | 5 | {{ .Page.Scratch.Set "mermaid" true }} 6 | {{ end }} 7 | 8 | 9 |
10 |   {{- .Inner -}}
11 | 
12 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/progress.html: -------------------------------------------------------------------------------- 1 | {{- $value := default 0 (.Get "value") -}} 2 | {{- $title := .Get "title" -}} 3 | {{- $icon := .Get "icon" -}} 4 | 5 | 6 |
7 |
8 |
9 | {{ with $icon -}} 10 | 11 | {{- end }} 12 | {{ with $title }}{{ . }}{{ end }} 13 |
14 |
{{ $value }}%
15 |
16 |
17 |
22 |
23 |
24 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/tab.html: -------------------------------------------------------------------------------- 1 | {{- if .Parent }} 2 | {{- $name := .Get 0 }} 3 | {{- $group := printf "tabs-%s" (.Parent.Get 0) }} 4 | 5 | {{- if not (.Parent.Scratch.Get $group) }} 6 | {{- .Parent.Scratch.Set $group slice }} 7 | {{- end }} 8 | 9 | {{- .Parent.Scratch.Add $group (dict "Name" $name "Content" .Inner) }} 10 | {{- else }} 11 | {{ errorf "%q: 'tab' shortcode must be inside 'tabs' shortcode" .Page.Path }} 12 | {{- end }} 13 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/tabs.html: -------------------------------------------------------------------------------- 1 | {{- if .Inner }}{{ end }} 2 | {{- $id := .Get 0 }} 3 | {{- $group := printf "tabs-%s" $id }} 4 | 5 | 6 |
7 | {{- range $index, $tab := .Scratch.Get $group }} 8 | 15 | 18 |
19 | {{ .Content | $.Page.RenderString }} 20 |
21 | {{- end }} 22 |
23 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/layouts/shortcodes/toc.html: -------------------------------------------------------------------------------- 1 | {{- $format := default "html" (.Get "format") }} 2 | {{- $tocLevels := default (default 6 .Site.Params.geekdocToC) .Page.Params.geekdocToC }} 3 | 4 | {{- if and $tocLevels .Page.TableOfContents -}} 5 | {{- if not (eq ($format | lower) "raw") -}} 6 |
7 | {{ .Page.TableOfContents }} 8 |
9 |
10 | {{- else -}} 11 | {{ .Page.TableOfContents }} 12 | {{- end -}} 13 | {{- end -}} 14 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/custom.css: -------------------------------------------------------------------------------- 1 | /* You can add custom styles here. */ 2 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/android-chrome-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/android-chrome-144x144.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/android-chrome-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/android-chrome-256x256.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/android-chrome-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/android-chrome-36x36.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/android-chrome-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/android-chrome-384x384.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/android-chrome-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/android-chrome-48x48.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/android-chrome-512x512.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/android-chrome-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/android-chrome-72x72.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/android-chrome-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/android-chrome-96x96.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-1024x1024.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-114x114.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-144x144.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-167x167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-167x167.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-57x57.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-72x72.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1125x2436.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1125x2436.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1136x640.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1136x640.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1170x2532.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1170x2532.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1242x2208.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1242x2208.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1242x2688.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1242x2688.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1284x2778.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1284x2778.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1334x750.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1334x750.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1536x2048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1536x2048.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1620x2160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1620x2160.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1668x2224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1668x2224.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1668x2388.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1668x2388.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1792x828.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-1792x828.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2048x1536.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2048x1536.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2048x2732.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2048x2732.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2160x1620.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2160x1620.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2208x1242.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2208x1242.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2224x1668.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2224x1668.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2388x1668.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2388x1668.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2436x1125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2436x1125.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2532x1170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2532x1170.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2688x1242.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2688x1242.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2732x2048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2732x2048.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2778x1284.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-2778x1284.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-640x1136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-640x1136.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-750x1334.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-750x1334.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-828x1792.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/apple-touch-startup-image-828x1792.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | #efefef 10 | 11 | 12 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/favicon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/favicon-48x48.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/favicon.ico -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/mstile-144x144.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/mstile-150x150.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/mstile-310x150.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/mstile-310x310.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/favicon/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/favicon/mstile-70x70.png -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/GeekdocIcons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/GeekdocIcons.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/GeekdocIcons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/GeekdocIcons.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_AMS-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_AMS-Regular.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_AMS-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_AMS-Regular.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Bold.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Bold.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Regular.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Caligraphic-Regular.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Bold.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Bold.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Regular.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Fraktur-Regular.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Bold.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Bold.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-BoldItalic.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-BoldItalic.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Italic.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Italic.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Regular.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Main-Regular.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Math-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Math-BoldItalic.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Math-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Math-BoldItalic.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Math-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Math-Italic.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Math-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Math-Italic.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Bold.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Bold.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Italic.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Italic.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Regular.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_SansSerif-Regular.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Script-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Script-Regular.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Script-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Script-Regular.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Size1-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Size1-Regular.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Size1-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Size1-Regular.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Size2-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Size2-Regular.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Size2-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Size2-Regular.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Size3-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Size3-Regular.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Size3-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Size3-Regular.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Size4-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Size4-Regular.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Size4-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Size4-Regular.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Typewriter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Typewriter-Regular.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/KaTeX_Typewriter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/KaTeX_Typewriter-Regular.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/LiberationMono.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/LiberationMono.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/LiberationMono.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/LiberationMono.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/LiberationSans-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/LiberationSans-Bold.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/LiberationSans-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/LiberationSans-Bold.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/LiberationSans-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/LiberationSans-BoldItalic.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/LiberationSans-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/LiberationSans-BoldItalic.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/LiberationSans-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/LiberationSans-Italic.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/LiberationSans-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/LiberationSans-Italic.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/LiberationSans.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/LiberationSans.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/LiberationSans.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/LiberationSans.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/Metropolis.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/Metropolis.woff -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/fonts/Metropolis.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libgeos/geos/e50b5af9cda259a528ae873cc2cc106d3cd30f1f/web/themes/hugo-geekdoc/static/fonts/Metropolis.woff2 -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/js/637-3456bdaf.chunk.min.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * Wait for document loaded before starting the execution 3 | */ 4 | 5 | /*! @license DOMPurify 3.0.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.3/LICENSE */ 6 | 7 | /*! Check if previously processed */ 8 | 9 | /*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */ 10 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/js/968-bb8c6ba1.chunk.min.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable 3 | Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) 4 | Licensed under The MIT License (http://opensource.org/licenses/MIT) 5 | */ 6 | 7 | /*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */ 8 | 9 | /*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */ 10 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/js/main-fbb9c8b0.bundle.min.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * clipboard.js v2.0.11 3 | * https://clipboardjs.com/ 4 | * 5 | * Licensed MIT © Zeno Rocha 6 | */ 7 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/js/search-83320133.bundle.min.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /**! 2 | * FlexSearch.js v0.7.31 (Compact) 3 | * Copyright 2018-2022 Nextapps GmbH 4 | * Author: Thomas Wilkerling 5 | * Licence: Apache-2.0 6 | * https://github.com/nextapps-de/flexsearch 7 | */ 8 | -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/static/print-735ccc12.min.css: -------------------------------------------------------------------------------- 1 | @media print{.gdoc-nav,.gdoc-footer .container span:not(:first-child),.gdoc-paging,.editpage{display:none}.gdoc-footer{border-top:1px solid #dee2e6}.gdoc-markdown pre{white-space:pre-wrap;overflow-wrap:break-word}.chroma code{border:1px solid #dee2e6;padding:.5rem !important;font-weight:normal !important}.gdoc-markdown code{font-weight:bold}a,a:visited{color:inherit !important;text-decoration:none !important}.gdoc-toc{flex:none}.gdoc-toc nav{position:relative;width:auto}.wrapper{display:block}.wrapper main{display:block}} -------------------------------------------------------------------------------- /web/themes/hugo-geekdoc/theme.toml: -------------------------------------------------------------------------------- 1 | name = "Geekdoc" 2 | license = "MIT" 3 | licenselink = "https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE" 4 | description = "Hugo theme made for documentation" 5 | homepage = "https://geekdocs.de/" 6 | demosite = "https://geekdocs.de/" 7 | tags = ["docs", "documentation", "responsive", "simple"] 8 | min_version = "0.93.0" 9 | 10 | [author] 11 | name = "Robert Kaussow" 12 | homepage = "https://thegeeklab.de/" 13 | --------------------------------------------------------------------------------