23 #ifndef __FM_CONTOUR_INTERSECTORS_H__
24 #define __FM_CONTOUR_INTERSECTORS_H__
40 :
Intersection(rI), uContourA(uIDA), uContourB(uIDB) { };
44 :
Intersection(rPt, dPA, dPB, eIT), uContourA( uIDA ), uContourB( uIDB ) { };
101 : uGroupIdx( uG ), uContourIdx( uC ), uSegmentIdx( uS ) { };
138 inline double value()
const {
return m_dValue; };
155 eIntMiddle2Middle = 0x01,
156 eIntNode2Node = 0x02,
157 eIntNode2Middle = 0x04,
164 eIntSkipZeroLength= 0x20,
217 inline const IContour2D & contour()
const {
return *pContour; };
227 GroupRec() : bSelfIntersecting(
false) { };
231 bool bSelfIntersecting;
232 std::vector< ContourRec > vecContours;
239 std::vector< GroupRec > m_vecGroups;
242 class SegmentCrossing;
244 bool m_bOrderByGroup;
257 void fillSegmentBounds(
const OdGeVector2d& vMainDir, std::vector< SegmentBound1D > & vecBounds,
double dAddTol = 0 )
const;
266 OdUInt32 removeUselessBounds( std::vector< SegmentBound1D > & vecBounds )
const;
268 bool createCrossing( SegmentCrossing & rCross, Crossing & rDest,
const double dTol )
const;
273 bool skipJoints(
const SegmentUID & rUID1,
const SegmentUID & rUID2,
274 IntersectionWithIDs * aIPs,
OdUInt32 iXNum,
const double dZeroTol = -1.0 );
278 OdUInt32 postprocessIntersections(
const SegmentUID & rUID1,
const SegmentUID & rUID2,
279 IntersectionWithIDs * aIPs,
OdUInt32 iXNum );
285 #endif //__FM_CONTOUR_INTERSECTORS_H__