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)