20 #ifndef GEOS_GEOM_UTIL_GEOMETRYTRANSFORMER_H
21 #define GEOS_GEOM_UTIL_GEOMETRYTRANSFORMER_H
24 #include <geos/export.h>
25 #include <geos/geom/Coordinate.h>
26 #include <geos/geom/Geometry.h>
27 #include <geos/geom/CoordinateSequence.h>
36 class GeometryFactory;
43 class MultiLineString;
44 class GeometryCollection;
89 class GEOS_DLL GeometryTransformer {
93 GeometryTransformer();
95 virtual ~GeometryTransformer() =
default;
97 std::unique_ptr<Geometry> transform(
const Geometry* nInputGeom);
99 void setSkipTransformedInvalidInteriorRings(
bool b);
103 const GeometryFactory* factory;
114 CoordinateSequence::Ptr createCoordinateSequence(
115 std::unique_ptr< std::vector<Coordinate> > coords);
117 virtual CoordinateSequence::Ptr transformCoordinates(
118 const CoordinateSequence* coords,
119 const Geometry* parent);
123 const Geometry* parent);
126 const MultiPoint* geom,
127 const Geometry* parent);
130 const LinearRing* geom,
131 const Geometry* parent);
134 const LineString* geom,
135 const Geometry* parent);
138 const MultiLineString* geom,
139 const Geometry* parent);
143 const Geometry* parent);
146 const MultiPolygon* geom,
147 const Geometry* parent);
150 const GeometryCollection* geom,
151 const Geometry* parent);
155 const Geometry* inputGeom;
161 bool pruneEmptyGeometry;
168 bool preserveGeometryCollectionType;
183 bool skipTransformedInvalidInteriorRings;
186 GeometryTransformer(
const GeometryTransformer& other) =
delete;
187 GeometryTransformer& operator=(
const GeometryTransformer& rhs) =
delete;
195 #endif // GEOS_GEOM_UTIL_GEOMETRYTRANSFORMER_H