19 #ifndef GEOS_NODING_SCALEDNODER_H
20 #define GEOS_NODING_SCALEDNODER_H
22 #include <geos/export.h>
27 #include <geos/inline.h>
28 #include <geos/noding/Noder.h>
30 #include <geos/util.h>
34 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
41 class CoordinateSequence;
61 class GEOS_DLL ScaledNoder :
public Noder {
68 return (scaleFactor == 1.0);
71 ScaledNoder(Noder& n,
double nScaleFactor,
72 double nOffsetX = 0.0,
double nOffsetY = 0.0)
75 scaleFactor(nScaleFactor),
78 isScaled(nScaleFactor != 1.0)
81 ~ScaledNoder()
override;
83 std::vector<SegmentString*>* getNodedSubstrings()
const override;
85 void computeNodes(std::vector<SegmentString*>* inputSegStr)
override;
90 filter_ro(
const geom::Coordinate* c)
92 ::geos::ignore_unused_variable_warning(c);
96 void filter_rw(geom::Coordinate* c)
const;
110 void rescale(std::vector<SegmentString*>& segStrings)
const;
112 void scale(std::vector<SegmentString*>& segStrings)
const;
118 friend class ScaledNoder::Scaler;
120 friend class ScaledNoder::ReScaler;
122 mutable std::vector<geom::CoordinateSequence*> newCoordSeq;
125 ScaledNoder(
const ScaledNoder& other) =
delete;
126 ScaledNoder& operator=(
const ScaledNoder& rhs) =
delete;
136 #endif // GEOS_NODING_SCALEDNODER_H