59 lines
2.7 KiB
C++
59 lines
2.7 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2013-2013
|
|
//----------------------------------------------------------------------------
|
|
// File : EgkCurveComposite.h Data : 22.11.13 Versione : 1.3a1
|
|
// Contenuto : Dichiarazione della interfaccia ICurveComposite.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 22.11.13 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include "/EgtDev/Include/EGkCurve.h"
|
|
|
|
//----------------------------------------------------------------------------
|
|
class __declspec( novtable) ICurveComposite : public ICurve
|
|
{
|
|
public :
|
|
virtual bool Clear( void) = 0 ;
|
|
virtual bool AddCurve( const ICurve& cCrv) = 0 ;
|
|
virtual bool FromSplit( const ICurve& cCrv, int nParts) = 0 ;
|
|
virtual int GetCurveNumber( void) const = 0 ;
|
|
virtual const ICurve* GetFirstCurve( void) const = 0 ;
|
|
virtual const ICurve* GetNextCurve( void) const = 0 ;
|
|
virtual bool IsParamAtJoint( double dU) const = 0 ;
|
|
virtual bool ArcsToBezierCurves( void) = 0 ;
|
|
} ;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
inline ICurveComposite* CreateCurveComposite( void)
|
|
{ return (static_cast<ICurveComposite*>( CreateGeoObj( CRV_COMPO))) ; }
|
|
inline ICurveComposite* CloneCurveComposite( const IGeoObj* pGObj)
|
|
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO)
|
|
return nullptr ;
|
|
return (static_cast<ICurveComposite*>(pGObj->Clone())) ; }
|
|
inline bool CopyCurveComposite( const ICurveComposite* pCCSou, ICurveComposite* pCCDest)
|
|
{ if ( pCCSou == nullptr || pCCDest == nullptr || ! pCCSou->IsValid())
|
|
return false ;
|
|
if ( pCCSou == pCCDest)
|
|
return true ;
|
|
pCCDest->Clear() ;
|
|
const ICurve* pCrv = pCCSou->GetFirstCurve() ;
|
|
while ( pCrv != nullptr) {
|
|
pCCDest->AddCurve( *pCrv) ;
|
|
pCrv = pCCSou->GetNextCurve() ;
|
|
}
|
|
return true ; }
|
|
inline const ICurveComposite* GetCurveComposite( const IGeoObj* pGObj)
|
|
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO)
|
|
return nullptr ;
|
|
return (static_cast<const ICurveComposite*>(pGObj)) ; }
|
|
inline ICurveComposite* GetCurveComposite( IGeoObj* pGObj)
|
|
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO)
|
|
return nullptr ;
|
|
return (static_cast<ICurveComposite*>(pGObj)) ; }
|