Files
Include/EgkCurveComposite.h
T
2014-01-23 14:52:20 +00:00

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)) ; }