[geos-commits] r3649 - in trunk: . include/geos/operation/buffer src/operation/buffer

svn_geos at osgeo.org svn_geos at osgeo.org
Mon May 28 05:29:48 PDT 2012


Author: strk
Date: 2012-05-28 05:29:47 -0700 (Mon, 28 May 2012)
New Revision: 3649

Added:
   trunk/include/geos/operation/buffer/BufferInputLineSimplifier.h
Removed:
   trunk/src/operation/buffer/BufferInputLineSimplifier.h
Modified:
   trunk/NEWS
   trunk/include/geos/operation/buffer/Makefile.am
   trunk/src/operation/buffer/BufferInputLineSimplifier.cpp
   trunk/src/operation/buffer/Makefile.am
   trunk/src/operation/buffer/OffsetCurveBuilder.cpp
   trunk/src/operation/buffer/OffsetSegmentGenerator.cpp
Log:
Install BufferInputLineSimplifier.h header (#548)

Thanks ylan for the patch

Modified: trunk/NEWS
===================================================================
--- trunk/NEWS	2012-05-28 07:48:02 UTC (rev 3648)
+++ trunk/NEWS	2012-05-28 12:29:47 UTC (rev 3649)
@@ -4,6 +4,7 @@
 - New things:
   - CAPI: GEOSNode (#496) - PHP: Geometry->node
   - GeometryPrecisionReducer class
+  - BufferInputLineSimplifier header exposed (#548)
 - C++ API changes:
   - New noding::GeometryNoder class
   - Added BufferOp::setSingleSided 

Copied: trunk/include/geos/operation/buffer/BufferInputLineSimplifier.h (from rev 3648, trunk/src/operation/buffer/BufferInputLineSimplifier.h)
===================================================================
--- trunk/include/geos/operation/buffer/BufferInputLineSimplifier.h	                        (rev 0)
+++ trunk/include/geos/operation/buffer/BufferInputLineSimplifier.h	2012-05-28 12:29:47 UTC (rev 3649)
@@ -0,0 +1,190 @@
+/**********************************************************************
+ *
+ * GEOS - Geometry Engine Open Source
+ * http://geos.osgeo.org
+ *
+ * Copyright (C) 2009  Sandro Santilli <strk at keybit.net>
+ *
+ * This is free software; you can redistribute and/or modify it under
+ * the terms of the GNU Lesser General Public Licence as published
+ * by the Free Software Foundation. 
+ * See the COPYING file for more information.
+ *
+ **********************************************************************
+ *
+ * Last port: operation/buffer/BufferInputLineSimplifier.java r320 (JTS-1.12)
+ *
+ **********************************************************************/
+
+#ifndef GEOS_OP_BUFFER_BUFFERINPUTLINESIMPLIFIER_H
+#define GEOS_OP_BUFFER_BUFFERINPUTLINESIMPLIFIER_H
+
+#include <geos/geom/CoordinateSequence.h> // complete type required
+#include <geos/algorithm/CGAlgorithms.h> // for enum
+
+#include <memory>
+#include <vector> // for composition
+
+
+// Forward declarations
+namespace geos {
+	namespace geom {
+		class CoordinateSequence;
+		//class PrecisionModel;
+	}
+}
+
+namespace geos {
+namespace operation { // geos.operation
+namespace buffer { // geos.operation.buffer
+
+/** \brief
+ * Simplifies a buffer input line to
+ * remove concavities with shallow depth.
+ * 
+ * The most important benefit of doing this
+ * is to reduce the number of points and the complexity of
+ * shape which will be buffered.
+ * It also reduces the risk of gores created by
+ * the quantized fillet arcs (although this issue
+ * should be eliminated in any case by the
+ * offset curve generation logic).
+ * 
+ * A key aspect of the simplification is that it
+ * affects inside (concave or inward) corners only.
+ * Convex (outward) corners are preserved, since they
+ * are required to ensure that the generated buffer curve
+ * lies at the correct distance from the input geometry.
+ * 
+ * Another important heuristic used is that the end segments
+ * of the input are never simplified.  This ensures that
+ * the client buffer code is able to generate end caps faithfully.
+ * 
+ * No attempt is made to avoid self-intersections in the output.
+ * This is acceptable for use for generating a buffer offset curve,
+ * since the buffer algorithm is insensitive to invalid polygonal
+ * geometry.  However,
+ * this means that this algorithm
+ * cannot be used as a general-purpose polygon simplification technique.
+ *
+ * @author Martin Davis
+ *
+ */
+class BufferInputLineSimplifier
+{
+
+public:
+
+	/**
+	 * Simplify the input coordinate list.
+	 *
+	 * If the distance tolerance is positive,
+	 * concavities on the LEFT side of the line are simplified.
+	 * If the supplied distance tolerance is negative,
+	 * concavities on the RIGHT side of the line are simplified.
+	 *
+	 * @param inputLine the coordinate sequence to simplify
+	 * @param distanceTol simplification distance tolerance to use
+	 * @return a simplified version of the coordinate sequence
+	 */
+	static std::auto_ptr<geom::CoordinateSequence> simplify(
+		const geom::CoordinateSequence& inputLine, double distanceTol);
+
+	BufferInputLineSimplifier(const geom::CoordinateSequence& input);
+
+	/**
+	 * Simplify the input coordinate list.
+	 * If the distance tolerance is positive,
+	 * concavities on the LEFT side of the line are simplified.
+	 * If the supplied distance tolerance is negative,
+	 * concavities on the RIGHT side of the line are simplified.
+	 *
+	 * @param distanceTol simplification distance tolerance to use
+	 * @return the simplified coordinate list
+	 */
+	std::auto_ptr<geom::CoordinateSequence> simplify(double distanceTol);
+
+private:
+
+	/**
+	 * Uses a sliding window containing 3 vertices to detect shallow angles
+	 * in which the middle vertex can be deleted, since it does not
+	 * affect the shape of the resulting buffer in a significant way.
+	 * @return
+	 */
+	bool deleteShallowConcavities();
+
+	/**
+	 * Finds the next non-deleted index,
+	 * or the end of the point array if none
+	 *
+	 * @param index
+	 * @return the next non-deleted index, if any
+	 * @return inputLine.size() if there are no more non-deleted indices
+	 */
+	unsigned int findNextNonDeletedIndex(unsigned int index) const;
+
+	std::auto_ptr<geom::CoordinateSequence> collapseLine() const;
+
+	bool isDeletable(int i0, int i1, int i2, double distanceTol) const;
+
+	bool isShallowConcavity(const geom::Coordinate& p0,
+	                        const geom::Coordinate& p1,
+	                        const geom::Coordinate& p2,
+	                        double distanceTol) const;
+
+	/**
+	 * Checks for shallowness over a sample of points in the given section.
+	 *
+	 * This helps prevents the siplification from incrementally
+	 * "skipping" over points which are in fact non-shallow.
+	 *
+	 * @param p0 start coordinate of section
+	 * @param p2 end coordinate of section
+	 * @param i0 start index of section
+	 * @param i2 end index of section
+	 * @param distanceTol distance tolerance
+	 * @return
+	 */
+	bool isShallowSampled(const geom::Coordinate& p0,
+	                      const geom::Coordinate& p2,
+	                      int i0, int i2, double distanceTol) const;
+
+	bool isShallow(const geom::Coordinate& p0,
+	               const geom::Coordinate& p1,
+	               const geom::Coordinate& p2,
+	               double distanceTol) const;
+
+	bool isConcave(const geom::Coordinate& p0,
+	               const geom::Coordinate& p1,
+	               const geom::Coordinate& p2) const;
+
+	static const int NUM_PTS_TO_CHECK = 10;
+
+	static const int INIT = 0;
+	static const int DELETE = 1;
+	static const int KEEP = 1;
+
+	const geom::CoordinateSequence& inputLine;
+	double distanceTol;
+	std::vector<int> isDeleted;
+
+	int angleOrientation;
+
+    // Declare type as noncopyable
+    BufferInputLineSimplifier(const BufferInputLineSimplifier& other);
+    BufferInputLineSimplifier& operator=(const BufferInputLineSimplifier& rhs);
+};
+
+
+} // namespace geos.operation.buffer
+} // namespace geos.operation
+} // namespace geos
+
+
+#endif // ndef GEOS_OP_BUFFER_BUFFERINPUTLINESIMPLIFIER_H
+
+/**********************************************************************
+ * $Log$
+ **********************************************************************/
+

Modified: trunk/include/geos/operation/buffer/Makefile.am
===================================================================
--- trunk/include/geos/operation/buffer/Makefile.am	2012-05-28 07:48:02 UTC (rev 3648)
+++ trunk/include/geos/operation/buffer/Makefile.am	2012-05-28 12:29:47 UTC (rev 3649)
@@ -1,14 +1,15 @@
 #
-# This file is part of project GEOS (http://trac.osgeo.org/geos/) 
+# This file is part of project GEOS (http://trac.osgeo.org/geos/)
 #
-#SUBDIRS = 
+#SUBDIRS =
 
-#EXTRA_DIST = 
+#EXTRA_DIST =
 
 geosdir = $(includedir)/geos/operation/buffer
 
 geos_HEADERS = \
 	BufferBuilder.h \
+	BufferInputLineSimplifier.h \
 	BufferOp.h \
 	BufferParameters.h \
 	BufferSubgraph.h \
@@ -17,4 +18,4 @@
 	OffsetSegmentGenerator.h \
 	OffsetSegmentString.h \
 	RightmostEdgeFinder.h \
-	SubgraphDepthLocater.h	
+	SubgraphDepthLocater.h

Modified: trunk/src/operation/buffer/BufferInputLineSimplifier.cpp
===================================================================
--- trunk/src/operation/buffer/BufferInputLineSimplifier.cpp	2012-05-28 07:48:02 UTC (rev 3648)
+++ trunk/src/operation/buffer/BufferInputLineSimplifier.cpp	2012-05-28 12:29:47 UTC (rev 3649)
@@ -7,7 +7,7 @@
  *
  * This is free software; you can redistribute and/or modify it under
  * the terms of the GNU Lesser General Public Licence as published
- * by the Free Software Foundation. 
+ * by the Free Software Foundation.
  * See the COPYING file for more information.
  *
  **********************************************************************
@@ -16,7 +16,7 @@
  *
  **********************************************************************/
 
-#include "BufferInputLineSimplifier.h"
+#include <geos/operation/buffer/BufferInputLineSimplifier.h>
 #include <geos/geom/CoordinateSequence.h> // for inlines
 #include <geos/geom/CoordinateArraySequence.h> // for constructing the return
 #include <geos/algorithm/CGAlgorithms.h> // for use
@@ -43,7 +43,7 @@
 {}
 
 /*public static*/
-std::auto_ptr<geom::CoordinateSequence> 
+std::auto_ptr<geom::CoordinateSequence>
 BufferInputLineSimplifier::simplify(const geom::CoordinateSequence& inputLine,
                                     double distanceTol)
 {
@@ -52,7 +52,7 @@
 }
 
 /* public */
-std::auto_ptr<geom::CoordinateSequence> 
+std::auto_ptr<geom::CoordinateSequence>
 BufferInputLineSimplifier::simplify(double nDistanceTol)
 {
 	distanceTol = fabs(nDistanceTol);
@@ -121,12 +121,12 @@
 }
 
 /* private */
-std::auto_ptr<geom::CoordinateSequence> 
+std::auto_ptr<geom::CoordinateSequence>
 BufferInputLineSimplifier::collapseLine() const
 {
 	std::auto_ptr<geom::CoordinateSequence> coordList(
 		new CoordinateArraySequence());
-	
+
 	for (size_t i=0, n=inputLine.size(); i<n; ++i)
 	{
 		if (isDeleted[i] != DELETE)

Deleted: trunk/src/operation/buffer/BufferInputLineSimplifier.h
===================================================================
--- trunk/src/operation/buffer/BufferInputLineSimplifier.h	2012-05-28 07:48:02 UTC (rev 3648)
+++ trunk/src/operation/buffer/BufferInputLineSimplifier.h	2012-05-28 12:29:47 UTC (rev 3649)
@@ -1,190 +0,0 @@
-/**********************************************************************
- *
- * GEOS - Geometry Engine Open Source
- * http://geos.osgeo.org
- *
- * Copyright (C) 2009  Sandro Santilli <strk at keybit.net>
- *
- * This is free software; you can redistribute and/or modify it under
- * the terms of the GNU Lesser General Public Licence as published
- * by the Free Software Foundation. 
- * See the COPYING file for more information.
- *
- **********************************************************************
- *
- * Last port: operation/buffer/BufferInputLineSimplifier.java r320 (JTS-1.12)
- *
- **********************************************************************/
-
-#ifndef GEOS_OP_BUFFER_BUFFERINPUTLINESIMPLIFIER_H
-#define GEOS_OP_BUFFER_BUFFERINPUTLINESIMPLIFIER_H
-
-#include <geos/geom/CoordinateSequence.h> // complete type required
-#include <geos/algorithm/CGAlgorithms.h> // for enum
-
-#include <memory>
-#include <vector> // for composition
-
-
-// Forward declarations
-namespace geos {
-	namespace geom {
-		class CoordinateSequence;
-		//class PrecisionModel;
-	}
-}
-
-namespace geos {
-namespace operation { // geos.operation
-namespace buffer { // geos.operation.buffer
-
-/** \brief
- * Simplifies a buffer input line to
- * remove concavities with shallow depth.
- * 
- * The most important benefit of doing this
- * is to reduce the number of points and the complexity of
- * shape which will be buffered.
- * It also reduces the risk of gores created by
- * the quantized fillet arcs (although this issue
- * should be eliminated in any case by the
- * offset curve generation logic).
- * 
- * A key aspect of the simplification is that it
- * affects inside (concave or inward) corners only.
- * Convex (outward) corners are preserved, since they
- * are required to ensure that the generated buffer curve
- * lies at the correct distance from the input geometry.
- * 
- * Another important heuristic used is that the end segments
- * of the input are never simplified.  This ensures that
- * the client buffer code is able to generate end caps faithfully.
- * 
- * No attempt is made to avoid self-intersections in the output.
- * This is acceptable for use for generating a buffer offset curve,
- * since the buffer algorithm is insensitive to invalid polygonal
- * geometry.  However,
- * this means that this algorithm
- * cannot be used as a general-purpose polygon simplification technique.
- *
- * @author Martin Davis
- *
- */
-class BufferInputLineSimplifier
-{
-
-public:
-
-	/**
-	 * Simplify the input coordinate list.
-	 *
-	 * If the distance tolerance is positive,
-	 * concavities on the LEFT side of the line are simplified.
-	 * If the supplied distance tolerance is negative,
-	 * concavities on the RIGHT side of the line are simplified.
-	 *
-	 * @param inputLine the coordinate sequence to simplify
-	 * @param distanceTol simplification distance tolerance to use
-	 * @return a simplified version of the coordinate sequence
-	 */
-	static std::auto_ptr<geom::CoordinateSequence> simplify(
-		const geom::CoordinateSequence& inputLine, double distanceTol);
-
-	BufferInputLineSimplifier(const geom::CoordinateSequence& input);
-
-	/**
-	 * Simplify the input coordinate list.
-	 * If the distance tolerance is positive,
-	 * concavities on the LEFT side of the line are simplified.
-	 * If the supplied distance tolerance is negative,
-	 * concavities on the RIGHT side of the line are simplified.
-	 *
-	 * @param distanceTol simplification distance tolerance to use
-	 * @return the simplified coordinate list
-	 */
-	std::auto_ptr<geom::CoordinateSequence> simplify(double distanceTol);
-
-private:
-
-	/**
-	 * Uses a sliding window containing 3 vertices to detect shallow angles
-	 * in which the middle vertex can be deleted, since it does not
-	 * affect the shape of the resulting buffer in a significant way.
-	 * @return
-	 */
-	bool deleteShallowConcavities();
-
-	/**
-	 * Finds the next non-deleted index,
-	 * or the end of the point array if none
-	 *
-	 * @param index
-	 * @return the next non-deleted index, if any
-	 * @return inputLine.size() if there are no more non-deleted indices
-	 */
-	unsigned int findNextNonDeletedIndex(unsigned int index) const;
-
-	std::auto_ptr<geom::CoordinateSequence> collapseLine() const;
-
-	bool isDeletable(int i0, int i1, int i2, double distanceTol) const;
-
-	bool isShallowConcavity(const geom::Coordinate& p0,
-	                        const geom::Coordinate& p1,
-	                        const geom::Coordinate& p2,
-	                        double distanceTol) const;
-
-	/**
-	 * Checks for shallowness over a sample of points in the given section.
-	 *
-	 * This helps prevents the siplification from incrementally
-	 * "skipping" over points which are in fact non-shallow.
-	 *
-	 * @param p0 start coordinate of section
-	 * @param p2 end coordinate of section
-	 * @param i0 start index of section
-	 * @param i2 end index of section
-	 * @param distanceTol distance tolerance
-	 * @return
-	 */
-	bool isShallowSampled(const geom::Coordinate& p0,
-	                      const geom::Coordinate& p2,
-	                      int i0, int i2, double distanceTol) const;
-
-	bool isShallow(const geom::Coordinate& p0,
-	               const geom::Coordinate& p1,
-	               const geom::Coordinate& p2,
-	               double distanceTol) const;
-
-	bool isConcave(const geom::Coordinate& p0,
-	               const geom::Coordinate& p1,
-	               const geom::Coordinate& p2) const;
-
-	static const int NUM_PTS_TO_CHECK = 10;
-
-	static const int INIT = 0;
-	static const int DELETE = 1;
-	static const int KEEP = 1;
-
-	const geom::CoordinateSequence& inputLine;
-	double distanceTol;
-	std::vector<int> isDeleted;
-
-	int angleOrientation;
-
-    // Declare type as noncopyable
-    BufferInputLineSimplifier(const BufferInputLineSimplifier& other);
-    BufferInputLineSimplifier& operator=(const BufferInputLineSimplifier& rhs);
-};
-
-
-} // namespace geos.operation.buffer
-} // namespace geos.operation
-} // namespace geos
-
-
-#endif // ndef GEOS_OP_BUFFER_BUFFERINPUTLINESIMPLIFIER_H
-
-/**********************************************************************
- * $Log$
- **********************************************************************/
-

Modified: trunk/src/operation/buffer/Makefile.am
===================================================================
--- trunk/src/operation/buffer/Makefile.am	2012-05-28 07:48:02 UTC (rev 3648)
+++ trunk/src/operation/buffer/Makefile.am	2012-05-28 12:29:47 UTC (rev 3649)
@@ -1,16 +1,15 @@
 #
-# This file is part of project GEOS (http://trac.osgeo.org/geos/) 
+# This file is part of project GEOS (http://trac.osgeo.org/geos/)
 #
-SUBDIRS = 
+SUBDIRS =
 
 noinst_LTLIBRARIES = libopbuffer.la
 
-INCLUDES = -I$(top_srcdir)/include 
+INCLUDES = -I$(top_srcdir)/include
 
 libopbuffer_la_SOURCES = \
 	BufferBuilder.cpp \
 	BufferInputLineSimplifier.cpp \
-	BufferInputLineSimplifier.h \
 	BufferOp.cpp \
 	BufferParameters.cpp \
 	BufferSubgraph.cpp \
@@ -21,4 +20,4 @@
 	SubgraphDepthLocater.cpp \
 	$(NULL)
 
-libopbuffer_la_LIBADD = 
+libopbuffer_la_LIBADD =

Modified: trunk/src/operation/buffer/OffsetCurveBuilder.cpp
===================================================================
--- trunk/src/operation/buffer/OffsetCurveBuilder.cpp	2012-05-28 07:48:02 UTC (rev 3648)
+++ trunk/src/operation/buffer/OffsetCurveBuilder.cpp	2012-05-28 12:29:47 UTC (rev 3649)
@@ -9,7 +9,7 @@
  *
  * This is free software; you can redistribute and/or modify it under
  * the terms of the GNU Lesser General Public Licence as published
- * by the Free Software Foundation. 
+ * by the Free Software Foundation.
  * See the COPYING file for more information.
  *
  **********************************************************************
@@ -25,6 +25,7 @@
 #include <geos/algorithm/CGAlgorithms.h>
 #include <geos/algorithm/Angle.h>
 #include <geos/operation/buffer/OffsetCurveBuilder.h>
+#include <geos/operation/buffer/BufferInputLineSimplifier.h>
 #include <geos/operation/buffer/BufferOp.h>
 #include <geos/operation/buffer/BufferParameters.h>
 #include <geos/geomgraph/Position.h>
@@ -36,8 +37,6 @@
 #include <geos/algorithm/HCoordinate.h>
 #include <geos/util.h>
 
-#include "BufferInputLineSimplifier.h"
-
 #ifndef GEOS_DEBUG
 #define GEOS_DEBUG 0
 #endif
@@ -103,7 +102,7 @@
 
 /*public*/
 void
-OffsetCurveBuilder::getSingleSidedLineCurve(const CoordinateSequence* inputPts, 
+OffsetCurveBuilder::getSingleSidedLineCurve(const CoordinateSequence* inputPts,
    double distance, vector<CoordinateSequence*>& lineList, bool leftSide,
    bool rightSide)
 {
@@ -123,7 +122,7 @@
   if ( leftSide ) {
 	  //--------- compute points for left side of line
     // Simplify the appropriate side of the line before generating
-    std::auto_ptr<CoordinateSequence> simp1_ = 
+    std::auto_ptr<CoordinateSequence> simp1_ =
       BufferInputLineSimplifier::simplify( *inputPts, distTol );
     const CoordinateSequence& simp1 = *simp1_;
 
@@ -141,7 +140,7 @@
 
     //---------- compute points for right side of line
     // Simplify the appropriate side of the line before generating
-    std::auto_ptr<CoordinateSequence> simp2_ = 
+    std::auto_ptr<CoordinateSequence> simp2_ =
       BufferInputLineSimplifier::simplify( *inputPts, -distTol );
     const CoordinateSequence& simp2 = *simp2_;
 
@@ -198,7 +197,7 @@
 
 	//--------- compute points for left side of line
 	// Simplify the appropriate side of the line before generating
-	std::auto_ptr<CoordinateSequence> simp1_ = 
+	std::auto_ptr<CoordinateSequence> simp1_ =
 		BufferInputLineSimplifier::simplify(inputPts, distTol);
 	const CoordinateSequence& simp1 = *simp1_;
 
@@ -214,7 +213,7 @@
 
 	//---------- compute points for right side of line
 	// Simplify the appropriate side of the line before generating
-	std::auto_ptr<CoordinateSequence> simp2_ = 
+	std::auto_ptr<CoordinateSequence> simp2_ =
 		BufferInputLineSimplifier::simplify(inputPts, -distTol);
 	const CoordinateSequence& simp2 = *simp2_;
 
@@ -239,8 +238,8 @@
   double distTol = simplifyTolerance(distance);
 	// ensure that correct side is simplified
 	if (side == Position::RIGHT)
-		distTol = -distTol;      
-	std::auto_ptr<CoordinateSequence> simp_ = 
+		distTol = -distTol;
+	std::auto_ptr<CoordinateSequence> simp_ =
 		BufferInputLineSimplifier::simplify(inputPts, distTol);
 	const CoordinateSequence& simp = *simp_;
 
@@ -268,7 +267,7 @@
 
     //---------- compute points for right side of line
     // Simplify the appropriate side of the line before generating
-    std::auto_ptr<CoordinateSequence> simp2_ = 
+    std::auto_ptr<CoordinateSequence> simp2_ =
       BufferInputLineSimplifier::simplify(inputPts, -distTol);
     const CoordinateSequence& simp2 = *simp2_;
 
@@ -286,7 +285,7 @@
 
     //--------- compute points for left side of line
     // Simplify the appropriate side of the line before generating
-    std::auto_ptr<CoordinateSequence> simp1_ = 
+    std::auto_ptr<CoordinateSequence> simp1_ =
       BufferInputLineSimplifier::simplify(inputPts, distTol);
     const CoordinateSequence& simp1 = *simp1_;
 

Modified: trunk/src/operation/buffer/OffsetSegmentGenerator.cpp
===================================================================
--- trunk/src/operation/buffer/OffsetSegmentGenerator.cpp	2012-05-28 07:48:02 UTC (rev 3648)
+++ trunk/src/operation/buffer/OffsetSegmentGenerator.cpp	2012-05-28 12:29:47 UTC (rev 3649)
@@ -7,7 +7,7 @@
  *
  * This is free software; you can redistribute and/or modify it under
  * the terms of the GNU Lesser General Public Licence as published
- * by the Free Software Foundation. 
+ * by the Free Software Foundation.
  * See the COPYING file for more information.
  *
  **********************************************************************
@@ -25,6 +25,7 @@
 #include <geos/operation/buffer/OffsetSegmentGenerator.h>
 #include <geos/operation/buffer/OffsetSegmentString.h>
 #include <geos/operation/buffer/BufferOp.h>
+#include <geos/operation/buffer/BufferInputLineSimplifier.h>
 #include <geos/operation/buffer/BufferParameters.h>
 #include <geos/geomgraph/Position.h>
 #include <geos/geom/CoordinateArraySequence.h>
@@ -35,8 +36,6 @@
 #include <geos/algorithm/HCoordinate.h>
 #include <geos/util.h>
 
-#include "BufferInputLineSimplifier.h"
-
 #ifndef GEOS_DEBUG
 #define GEOS_DEBUG 0
 #endif
@@ -152,7 +151,7 @@
     (orientation==CGAlgorithms::CLOCKWISE
      && side==Position::LEFT)
     ||
-    (orientation==CGAlgorithms::COUNTERCLOCKWISE 
+    (orientation==CGAlgorithms::COUNTERCLOCKWISE
      && side==Position::RIGHT);
 
   if (orientation==0)
@@ -334,7 +333,7 @@
   if (numInt>= 2)
   {
     /**
-     * Segments are collinear but reversing. 
+     * Segments are collinear but reversing.
      * Add an "end-cap" fillet
      * all the way around to other direction
      *
@@ -386,7 +385,7 @@
   }
   else
   {
-    // add a circular fillet connecting the endpoints 
+    // add a circular fillet connecting the endpoints
     // of the offset segments
     if (addStartPoint) segList.addPt(offset0.p1);
 
@@ -423,7 +422,7 @@
   // since it is completely internal to the buffer polygon.
   //
   // In complex buffer cases the closing segment may cut across many
-  // other segments in the generated offset curve. 
+  // other segments in the generated offset curve.
   // In order to improve the performance of the noding, the closing
   // segment should be kept as short as possible.
   // (But not too short, since that would defeat it's purpose).



More information about the geos-commits mailing list