17 #include <geos/export.h>
18 #include <geos/geom/Envelope.h>
19 #include <geos/geom/Coordinate.h>
20 #include <geos/algorithm/LineIntersector.h>
21 #include <geos/noding/snapround/HotPixel.h>
22 #include <geos/geom/PrecisionModel.h>
23 #include <geos/util/IllegalArgumentException.h>
24 #include <geos/io/WKTWriter.h>
25 #include <geos/index/kdtree/KdTree.h>
26 #include <geos/index/kdtree/KdNodeVisitor.h>
35 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
41 class LineIntersector;
59 class GEOS_DLL HotPixelIndex {
64 const geom::PrecisionModel* pm;
66 std::unique_ptr<geos::index::kdtree::KdTree> index;
67 std::deque<HotPixel> hotPixelQue;
70 geom::Coordinate
round(
const geom::Coordinate& c);
71 HotPixel* find(
const geom::Coordinate& pixelPt);
75 HotPixelIndex(
const geom::PrecisionModel* p_pm);
76 HotPixel* add(
const geom::Coordinate& pt);
77 void add(
const geom::CoordinateSequence* pts);
78 void add(
const std::vector<geom::Coordinate>& pts);
79 void addNodes(
const geom::CoordinateSequence* pts);
80 void addNodes(
const std::vector<geom::Coordinate>& pts);
87 void query(
const geom::Coordinate& p0,
const geom::Coordinate& p1,
88 index::kdtree::KdNodeVisitor& visitor);