00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GEOS_PRECISION_PRECISIONREDUCERCOORDINATEOPERATION_H
00020 #define GEOS_PRECISION_PRECISIONREDUCERCOORDINATEOPERATION_H
00021
00022 #include <geos/geom/util/CoordinateOperation.h>
00023
00024
00025 namespace geos {
00026 namespace geom {
00027 class PrecisionModel;
00028 class CoordinateSequence;
00029 class Geometry;
00030 }
00031 }
00032
00033 namespace geos {
00034 namespace precision {
00035
00036 class PrecisionReducerCoordinateOperation :
00037 public geom::util::CoordinateOperation
00038 {
00039 using CoordinateOperation::edit;
00040 private:
00041
00042 const geom::PrecisionModel& targetPM;
00043
00044 bool removeCollapsed;
00045
00046 PrecisionReducerCoordinateOperation(PrecisionReducerCoordinateOperation const&);
00047 PrecisionReducerCoordinateOperation& operator=(PrecisionReducerCoordinateOperation const&);
00048
00049 public:
00050
00051 PrecisionReducerCoordinateOperation( const geom::PrecisionModel& pm,
00052 bool doRemoveCollapsed )
00053 :
00054 targetPM(pm),
00055 removeCollapsed(doRemoveCollapsed)
00056 {}
00057
00059
00061 geom::CoordinateSequence* edit(const geom::CoordinateSequence *coordinates,
00062 const geom::Geometry *geom);
00063 };
00064
00065 }
00066 }
00067
00068 #endif // GEOS_PRECISION_PRECISIONREDUCERCOORDINATEOPERATION_H
00069