//---------------------------------------------------------------------------- // EgalTech 2013-2013 //---------------------------------------------------------------------------- // File : GdbNode.h Data : 28.11.13 Versione : 1.4a2 // Contenuto : Dichiarazione della classe GdbNode. // // // // Modifiche : 28.11.13 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include #include "/EgtDev/Include/EGkGdbConst.h" #include "/EgtDev/Include/EGnScan.h" #include "/EgtDev/Include/EGkPoint3d.h" class GdbGroup ; class IdManager ; //---------------------------------------------------------------------------- class GdbNode { public : virtual ~GdbNode( void) {} virtual GdbNode* Clone( int nId, IdManager& IdMgr) const = 0 ; virtual bool Save( std::ostream& osOut) const = 0 ; virtual bool Load( const std::string& sType, Scanner& TheScanner, int& nParentId) = 0 ; virtual bool Translate( const Vector3d& vtMove) = 0 ; virtual bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng) = 0 ; virtual bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dAngRad) = 0 ; virtual bool Scale( const Point3d& ptCen, double dCoeffX, double dCoeffY, double dCoeffZ) = 0 ; //virtual bool Mirror( const Point3d& ptOn, const Vector3d& vtNorm) = 0 ; public : GdbNode( void) ; GdbNode* GetNext( void) { return m_pNext ; } const GdbNode* GetNext( void) const { return m_pNext ; } GdbNode* GetPrev( void) { return m_pPrev ; } const GdbNode* GetPrev( void) const { return m_pPrev ; } GdbGroup* GetParent( void) { return m_pParent ; } const GdbGroup* GetParent( void) const { return m_pParent ; } int GetParentId( void) const ; bool AddTail( GdbGroup* pParent) ; bool AddHead( GdbGroup* pParent) ; bool InsertAfter( GdbNode* pRef) ; bool InsertBefore( GdbNode* pRef) ; bool Remove( void) ; public : int m_nId ; private : GdbNode* m_pNext ; GdbNode* m_pPrev ; GdbGroup* m_pParent ; } ;