diff --git a/EgtGraphics.rc b/EgtGraphics.rc index f3502d4..6333170 100644 Binary files a/EgtGraphics.rc and b/EgtGraphics.rc differ diff --git a/EgtGraphics.vcxproj b/EgtGraphics.vcxproj index 5615484..fbb119c 100644 --- a/EgtGraphics.vcxproj +++ b/EgtGraphics.vcxproj @@ -71,24 +71,28 @@ $(SolutionDir)$(Configuration)$(PlatformArchitecture)\ $(Configuration)$(PlatformArchitecture)\ $(ProjectName)D$(PlatformArchitecture) + C:\;$(IncludePath) true $(SolutionDir)$(Configuration)$(PlatformArchitecture)\ $(Configuration)$(PlatformArchitecture)\ $(ProjectName)D$(PlatformArchitecture) + C:\;$(IncludePath) false $(SolutionDir)$(Configuration)$(PlatformArchitecture)\ $(Configuration)$(PlatformArchitecture)\ $(ProjectName)R$(PlatformArchitecture) + C:\;$(IncludePath) false $(SolutionDir)$(Configuration)$(PlatformArchitecture)\ $(Configuration)$(PlatformArchitecture)\ $(ProjectName)R$(PlatformArchitecture) + C:\;$(IncludePath) diff --git a/Scene.h b/Scene.h index fe10b65..96af576 100644 --- a/Scene.h +++ b/Scene.h @@ -118,6 +118,9 @@ class Scene : public IEGrScene virtual bool SetGeoLineAttribs( Color GLcol) ; virtual bool SetGeoLine( const Point3d& ptP1, const Point3d& ptP2) ; virtual bool ResetGeoLine( void) ; + virtual bool SetGeoTriaAttribs( Color GTcol) ; + virtual bool SetGeoTria( const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptP3) ; + virtual bool ResetGeoTria( void) ; virtual bool SetWinRectAttribs( bool bOutline, Color WRcol) ; virtual bool SetWinRect( const Point3d& ptWinRectP1, const Point3d& ptWinRectP2) ; virtual bool ResetWinRect( void) ; @@ -176,6 +179,7 @@ class Scene : public IEGrScene // Direct bool DrawDirect( void) ; bool DrawGeoLine( void) ; + bool DrawGeoTria( void) ; bool DrawWinRect( void) ; // Snap bool GetGridSnapPoint( bool bSketch, const Point3d& ptWin, Point3d& ptSel) ; @@ -249,6 +253,11 @@ class Scene : public IEGrScene bool m_bGeoLine ; // flag esistenza linea diretta in finestra Point3d m_ptGeoLineP1 ; // primo estremo della linea diretta Point3d m_ptGeoLineP2 ; // secondo estremo della linea diretta + Color m_colorGT ; // colore per GeoTria + bool m_bGeoTria ; // flag esistenza triangolo diretto in finestra + Point3d m_ptGeoTriaP1 ; // primo estremo del triangolo diretto + Point3d m_ptGeoTriaP2 ; // secondo estremo del triangolo diretto + Point3d m_ptGeoTriaP3 ; // terzo estremo del triangolo diretto bool m_bOutlineWR ; // flag per disegno WinRect con solo contorno o pieno Color m_colorWR ; // colore per WinRect bool m_bWinRect ; // flag esistenza rettangolo diretto in finestra diff --git a/SceneBasic.cpp b/SceneBasic.cpp index 01238a0..fd1334f 100644 --- a/SceneBasic.cpp +++ b/SceneBasic.cpp @@ -85,6 +85,8 @@ Scene::Scene( void) // Direct m_colorGL.Set( 255, 0, 0) ; m_bGeoLine = false ; + m_colorGT.Set( 255, 0, 0) ; + m_bGeoTria = false ; m_bOutlineWR = true ; m_colorWR.Set( 0, 0, 0) ; m_bWinRect = false ; diff --git a/SceneDirect.cpp b/SceneDirect.cpp index fdf4702..b7cc8fe 100644 --- a/SceneDirect.cpp +++ b/SceneDirect.cpp @@ -55,6 +55,37 @@ Scene::ResetGeoLine( void) return bOld ; } +//---------------------------------------------------------------------------- +bool +Scene::SetGeoTriaAttribs( Color GTcol) +{ + m_colorGT = GTcol ; + return true ; +} + +//---------------------------------------------------------------------------- +bool +Scene::SetGeoTria( const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptP3) +{ + m_bGeoTria = true ; + m_ptGeoTriaP1 = ptP1 ; + m_ptGeoTriaP2 = ptP2 ; + m_ptGeoTriaP3 = ptP3 ; + + return ( ! AreSamePointApprox( m_ptGeoTriaP1, m_ptGeoTriaP2) && + ! AreSamePointApprox( m_ptGeoTriaP1, m_ptGeoTriaP3)) ; +} + +//---------------------------------------------------------------------------- +bool +Scene::ResetGeoTria( void) +{ + bool bOld = m_bGeoTria ; + m_bGeoTria = false ; + + return bOld ; +} + //---------------------------------------------------------------------------- bool Scene::SetWinRectAttribs( bool bOutline, Color WRcol) @@ -95,6 +126,10 @@ Scene::DrawDirect( void) if ( ! DrawGeoLine()) bOk = false ; } + if ( m_bGeoTria) { + if ( ! DrawGeoTria()) + bOk = false ; + } if ( m_bWinRect) { if ( ! DrawWinRect()) bOk = false ; @@ -117,6 +152,21 @@ Scene::DrawGeoLine( void) return true ; } +//---------------------------------------------------------------------------- +bool +Scene::DrawGeoTria( void) +{ + // disegno triangolo in geometria globale + glBegin( GL_LINE_LOOP) ; + glColor3f( m_colorGT.GetRed(), m_colorGT.GetGreen(), m_colorGT.GetBlue()) ; + glVertex3f( float( m_ptGeoTriaP1.x), float( m_ptGeoTriaP1.y), float( m_ptGeoTriaP1.z)) ; + glVertex3f( float( m_ptGeoTriaP2.x), float( m_ptGeoTriaP2.y), float( m_ptGeoTriaP2.z)) ; + glVertex3f( float( m_ptGeoTriaP3.x), float( m_ptGeoTriaP3.y), float( m_ptGeoTriaP3.z)) ; + glEnd() ; + + return true ; +} + //---------------------------------------------------------------------------- bool Scene::DrawWinRect( void)