17 #ifndef GEOS_ALGORITHM_MCPOINTINRING_H
18 #define GEOS_ALGORITHM_MCPOINTINRING_H
20 #include <geos/export.h>
21 #include <geos/index/chain/MonotoneChainSelectAction.h>
22 #include <geos/algorithm/PointInRing.h>
23 #include <geos/geom/Coordinate.h>
24 #include <geos/index/bintree/Interval.h>
34 class CoordinateSequence;
35 class CoordinateSequence;
51 class GEOS_DLL MCPointInRing:
public PointInRing {
53 MCPointInRing(
const geom::LinearRing *newRing);
55 bool isInside(
const geom::Coordinate& pt);
57 void testLineSegment(
const geom::Coordinate& p,
58 const geom::LineSegment& seg);
60 class MCSelecter:
public index::chain::MonotoneChainSelectAction {
61 using MonotoneChainSelectAction::select;
64 MCPointInRing *parent;
66 MCSelecter(
const geom::Coordinate& newP, MCPointInRing *prt);
67 void select(
const geom::LineSegment& ls);
71 const geom::LinearRing *ring;
72 index::bintree::Interval interval;
73 geom::CoordinateSequence *pts;
74 index::bintree::Bintree *tree;
77 void testMonotoneChain(geom::Envelope *rayEnv,
78 MCSelecter *mcSelecter,
79 index::chain::MonotoneChain *mc);
85 #endif // GEOS_ALGORITHM_MCPOINTINRING_H