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__