//---------------------------------------------------------------------------- // EgalTech 2014-2014 //---------------------------------------------------------------------------- // File : ObjOldGraphics.cpp Data : 10.02.14 Versione : 1.5b1 // Contenuto : Implementazione della classe grafica di un oggetto geometrico. // // // // Modifiche : 10.02.14 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "ObjOldGraphics.h" #include "OpenGL.h" #include "/EgtDev/Include/EGkColor.h" #include "/EgtDev/Include/EGkPolyLine.h" #include "/EgtDev/Include/EGkGdbConst.h" //---------------------------------------------------------------------------- ObjOldGraphics::~ObjOldGraphics( void) { Clear() ; } //---------------------------------------------------------------------------- void ObjOldGraphics::Reset( void) { m_bValid = false ; } //---------------------------------------------------------------------------- void ObjOldGraphics::Clear( void) { m_ogaList.clear() ; m_bValid = false ; } //---------------------------------------------------------------------------- bool ObjOldGraphics::AddColor( const Color& colC) { return AddColor( colC.GetRed(), colC.GetGreen(), colC.GetBlue(), colC.GetAlpha()) ; } //---------------------------------------------------------------------------- bool ObjOldGraphics::AddPoint( const Point3d& ptP) { // start AddStart( GL_POINTS) ; // inserisco il nuovo vertice AddVert3f( ptP.x, ptP.y, ptP.z) ; // fine AddEnd() ; // dichiaro valida la grafica m_bValid = true ; return true ; } //---------------------------------------------------------------------------- bool ObjOldGraphics::AddPolyLine( const PolyLine& PL) { // start AddStart( GL_LINE_STRIP) ; // inserisco i nuovi vertici Point3d ptP ; for ( bool bFound = PL.GetFirstPoint( ptP) ; bFound ; bFound = PL.GetNextPoint( ptP)) AddVert3f( ptP.x, ptP.y, ptP.z) ; // fine AddEnd() ; // dichiaro valida la grafica m_bValid = true ; return true ; } //---------------------------------------------------------------------------- bool ObjOldGraphics::Draw( int nStat) { // se vuoto non faccio alcunché if ( m_ogaList.size() == 0) return true ; if ( nStat == GDB_ST_OFF) return true ; if ( nStat == GDB_ST_SEL) { glPointSize( 5) ; glLineWidth( 3) ; } // ciclo di disegno OGALIST::iterator iIter ; for ( iIter = m_ogaList.begin() ; iIter != m_ogaList.end() ; ++ iIter) { switch ( iIter->m_nType) { case OldGrAtom::START : glBegin( iIter->m_nMode) ; break ; case OldGrAtom::VERT : glVertex3f( iIter->m_fX, iIter->m_fY, iIter->m_fZ) ; break ; case OldGrAtom::COLOR : glColor4f( iIter->m_fRed, iIter->m_fGreen, iIter->m_fBlue, iIter->m_fAlpha) ; break ; case OldGrAtom::END : glEnd() ; break ; } } // se necessario, ripristino la normale visualizzazione if ( nStat == GDB_ST_SEL) { glPointSize( 3) ; glLineWidth( 1) ; } return true ; }