//---------------------------------------------------------------------------- // EgalTech 2013-2013 //---------------------------------------------------------------------------- // File : EGkCurveBezier.h Data : 22.11.13 Versione : 1.3a1 // Contenuto : Dichiarazione della interfaccia ICurveBezier. // // // // Modifiche : 22.11.13 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "/EgtDev/Include/EGkCurve.h" class ICurveArc ; //---------------------------------------------------------------------------- class __declspec( novtable) ICurveBezier : public ICurve { public : // IGeoObj ICurveBezier* Clone( void) const override = 0 ; public : virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ; virtual bool Init( int nDeg, bool bIsRational) = 0 ; virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl) = 0 ; virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl, double dW) = 0 ; virtual bool FromArc( const ICurveArc& crArc) = 0 ; virtual int GetDegree( void) const = 0 ; virtual bool IsRational( void) const = 0 ; virtual bool IsAPoint( void) const = 0 ; virtual const Point3d& GetControlPoint( int nInd, bool* pbOk = NULL) const = 0 ; virtual double GetControlWeight( int nInd, bool* pbOk = NULL) const = 0 ; virtual bool GetControlPolygonLength( double& dLen) const = 0 ; virtual int GetSingularParam( double& dPar) const = 0 ; } ; //----------------------------------------------------------------------------- inline ICurveBezier* CreateCurveBezier( void) { return (static_cast( CreateGeoObj( CRV_BEZIER))) ; } inline ICurveBezier* CloneCurveBezier( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_BEZIER) return nullptr ; return (static_cast(pGObj->Clone())) ; } inline const ICurveBezier* GetCurveBezier( const IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_BEZIER) return nullptr ; return (static_cast(pGObj)) ; } inline ICurveBezier* GetCurveBezier( IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_BEZIER) return nullptr ; return (static_cast(pGObj)) ; }