24#ifndef __FMCONTOUR2D_H__
25#define __FMCONTOUR2D_H__
306 double& dBulge)
const;
346 double& dBulge)
const;
456 bool bHidden =
true);
514 bool bExplodedArc =
true);
609 bool bShiftToHit =
false);
624 bool bCloseGap =
false,
double dMaxGap = 1e99);
707 double& dDist)
const;
717 double& dParam)
const;
750 double dParam2,
double dParamTol = 1e-10)
const;
764 double dDist2,
double dTol = 1e-6)
const;
853 const OdGeTol& gTol = FMGeGbl::gTol)
const;
876 const OdGeTol& gTol = FMGeGbl::gTol)
const;
921 bool fAllowBordersTouch =
false,
922 const OdGeTol& gTol = FMGeGbl::gTol)
const;
934 std::vector< Intersection >& vecPoints,
935 const OdGeTol& gTol = FMGeGbl::gTol)
const;
947 std::vector< Intersection >& vecPoints,
948 const OdGeTol& gTol = FMGeGbl::gTol)
const;
959 std::vector< Intersection >& vecPoints,
960 const OdGeTol& gTol = FMGeGbl::gTol)
const;
1027 const OdGeTol& gTol = FMGeGbl::gTol);
1041 const OdGeTol & gTol = FMGeGbl::gTol);
1054 const OdGeTol& gTol = FMGeGbl::gTol);
1068 const OdGeTol& gTol = FMGeGbl::gTol);
1099 const OdGeTol& gTol = FMGeGbl::gTol)
const;
1114 const OdGeTol& gTol = FMGeGbl::gTol)
const;
#define FMGEOMETRY_API_STATIC
Result setAllMetadata(OdIntPtr iNewData, OdIntPtr iBitsToModify=(OdIntPtr) -1)
void swap(Contour2D &rAnother)
OdIntPtr metadataAt(OdUInt32 iIndex) const
Contour2D & reset(ContourImplClass eImplClass=ecicUnknown)
Contour2D(const Contour2D &rSrcCont, ContourImplClass eImplClass=ecicSimple)
Contour2D(const IBulgeSeg2D &rSrcSeg, ContourImplClass eImplClass=ecicSimple)
Result explodeTo(Contour2D &rDestCont, const DeviationParams &devDeviation=FMGeGbl::gDefDev, OdIntPtr uArcMetadata=0) const
void deleteCoincident(const OdGeTol &gTol=FMGeGbl::gTol)
Result setMetadataAt(OdUInt32 iIndex, OdIntPtr iNewData)
OdUInt32 intersectLine(const OdGeLine2d &rLine, std::vector< Intersection > &vecPoints, const OdGeTol &gTol=FMGeGbl::gTol) const
Result createVerticesAt(const std::vector< double > &vecParams, const OdGeTol &gTol=FMGeGbl::gTol)
Result getLineSegAt(OdUInt32 iIndex, OdGeLineSeg2d &geLine) const
Contour2D(const IContour2D &rSrcCont, ContourImplClass eImplClass=ecicSimple)
double startParam() const
bool isHiddenAt(OdUInt32 iIndex) const
double nearestParam(const OdGePoint2d &ptTest, OdGePoint2d *ptNearest=NULL) const
OdUInt32 intersect(const Segment2D &rSegB, std::vector< Intersection > &vecPoints, const OdGeTol &gTol=FMGeGbl::gTol) const
OdUInt32 rawFlagsAt(OdUInt32 iIndex) const
OdUInt32 createVertexAtDist(double dDist, const OdGeTol &gTol=FMGeGbl::gTol)
bool threatAsSmoothCurveAt(OdUInt32 iIndex) const
Result appendContour(const Contour2D &rCont, bool bCloseGap=false, double dMaxGap=1e99)
bool isInsideContour(const Contour2D &c2dOuter, bool fAllowBordersTouch=false, const OdGeTol &gTol=FMGeGbl::gTol) const
OdUInt32 intersect(const Contour2D &rContB, std::vector< Intersection > &vecPoints, const OdGeTol &gTol=FMGeGbl::gTol) const
bool contains(const OdGePoint2d &ptPoint, bool *pOnBorder=NULL, const OdGeTol &gTol=FMGeGbl::gTol) const
Result getVertexAt(OdUInt32 iIndex, OdGePoint2d *pPoint, double *pBulge=NULL, OdIntPtr *pMetadata=NULL, OdUInt32 *puRawFlags=NULL) const
const IContour2D & impl() const
Result transformBy(const OdGeMatrix2d &mMatrix, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
Result getProfileByOffsets(const std::vector< double > &adOffset, Profile2D &rResult, const OdGeTol &gTol=FMGeGbl::gTol) const
Contour2D(const OdGeExtents2d &ext)
void reserveVertices(OdUInt32 iReservedSize)
Result appendSegment(const Segment2D &rSeg, bool bShiftToHit=false)
Result getBulgeAt(OdUInt32 iIndex, double &dBulge) const
void setClosed(bool bClosed=true)
Result getArcSegAt(OdUInt32 iIndex, OdGeCircArc2d &geArc) const
FaceOrientation orientationAt(OdUInt32 iIndex) const
OdUInt32 numVerts() const
SegmentType segmentType(OdUInt32 iIndex) const
Result getSegmentAt(OdUInt32 iIndex, OdGePoint2d &ptStart, OdGePoint2d &ptEnd, double &dBulge) const
Contour2D(ContourImplClass eImplClass)
Result appendVertices(OdUInt32 size, const OdGePoint2d *vecSource, const double *bulgeSource=NULL)
Result setHiddenAt(OdUInt32 iIndex, bool bHidden=true)
Result setVertexAt(OdUInt32 iIndex, const OdGePoint2d &ptPoint, double dBulge)
Result setRawFlagsAt(OdUInt32 iIndex, OdUInt32 iRawFlags)
Result appendVertices(const OdGePoint2dArray &vecSource)
static Contour2D createCircle(const OdGePoint2d ¢er, double radius)
bool isExplodedArcAt(OdUInt32 iIndex) const
bool areEqualParams(double dParam1, double dParam2, double dParamTol=1e-10) const
bool traverse(Contour2DTraversingReactor &reactor) const
ContourImplClass implClass() const
Result setPointAt(OdUInt32 iIndex, const OdGePoint2d &ptPoint)
bool isSelfIntersecting(const OdGeTol &gTol=FMGeGbl::gTol, bool bExcludeTouch=false) const
bool isOn(const OdGePoint2d &ptTest, double *pParam=NULL, const OdGeTol &gTol=FMGeGbl::gTol) const
Result addExtents(OdGeExtents2d &extExtents) const
Result getParamAtDist(double dDist, double &dParam) const
static Contour2D createSquare(const OdGePoint2d ¢er, double side)
Result getPointAt(OdUInt32 iIndex, OdGePoint2d &ptPoint) const
Contour2D & cloneFrom(const IContour2D &rSrcCont)
Result explode(const DeviationParams &devDeviation=FMGeGbl::gDefDev, OdIntPtr uArcMetadata=0)
Result getTangentAtDist(double dDist, OdGeVector2d &vTangent) const
Result getStartPoint(OdGePoint2d &ptPoint) const
Result getTangent(double dParam, OdGeVector2d &vTangent) const
Result setExplodedArcAt(OdUInt32 iIndex, bool bExplodedArc=true)
Result getOffsetProfile(double dOffset, Profile2D &rResult, FilletType eFilletType=eftExtend, const OdGeTol &gTol=FMGeGbl::gTol) const
Result getSegmentAt(OdUInt32 iIndex, Segment2D &rSegment) const
Result setOrientationAt(OdUInt32 iIndex, FaceOrientation eOrientation)
Result getNormalizedParam(double &dParam) const
void makeCCW(bool bCCW=true)
Result addVertexAt(OdUInt32 iIndex, const OdGePoint2d &ptStart, double dBulge=0.0, OdIntPtr uMetadata=0, OdUInt32 uRawFlags=0)
Result removeVertexAt(OdUInt32 iIndex)
Result appendVertex(const OdGePoint2d &ptStart, const OdGePoint2d &ptMid, OdIntPtr uMetadata=0, OdUInt32 uRawFlags=0)
bool isValidRegion(const OdGeTol &gTol=FMGeGbl::gTol) const
Result getEndPoint(OdGePoint2d &ptPoint) const
OdUInt32 numSegments() const
void mergeSegments(int iMergeFlags=0, const OdGeTol &gTol=FMGeGbl::gTol)
static FMGEOMETRY_API_STATIC const Contour2D kNull
bool areEqualDists(double dDist1, double dDist2, double dTol=1e-6) const
OdUInt32 createVertexAt(double dParam, const OdGeTol &gTol=FMGeGbl::gTol)
Result getPoint(double dParam, OdGePoint2d &ptPoint) const
Result getDistAtParam(double dParam, double &dDist) const
void setThreatAsSmoothCurveAt(OdUInt32 iIndex, bool bSmooth)
bool isEndsEqual(const OdGeTol &gTol=FMGeGbl::gTol) const
Result getInternalAngleAt(OdUInt32 iIndex, double &dAngle) const
double signedArea() const
Result getNormalizedDist(double &dDist) const
Result getPointAtDist(double dDist, OdGePoint2d &ptPoint) const
Result createVerticesAt(OdUInt32 size, const double *vecParams, const OdGeTol &gTol=FMGeGbl::gTol)
Result appendVertex(const OdGePoint2d &ptStart, double dBulge=0.0, OdIntPtr uMetadata=0, OdUInt32 uRawFlags=0)
Result getSubContour(double dStartParam, double dEndParam, Contour2D &rSubContour, const OdGeTol &gTol=FMGeGbl::gTol) const
Result setBulgeAt(OdUInt32 iIndex, double dBulge)
void getGeomExtens(OdGeExtents2d &extens)
virtual bool onArcEndPoint(int nSegment, const OdGePoint2d &pt)=0
virtual bool onArcStartPoint(int nSegment, const OdGePoint2d &pt, int nTotalPts)=0
virtual bool onCoincidentSeg(int nSegment)=0
virtual bool onArcSeg(int nSegment, DeviationParams **ppDev)=0
virtual bool onLineSeg(int nSegment)=0
virtual bool onArcPoint(int nSegment, const OdGePoint2d &pt)=0