From 5908191251131e751dea80e5cddb499794e9db4a Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 13 Feb 2014 18:13:10 +0000 Subject: [PATCH] =?UTF-8?q?EgtGeomKernel=201.5b3=20:=20-=20versioni=20rele?= =?UTF-8?q?ase=20con=20ottimizzazione=20/Ox;=20-=20oggetti=20con=20interfa?= =?UTF-8?q?ccia=20IGeoObj=20con=20possibilit=C3=A0=20di=20puntatore=20a=20?= =?UTF-8?q?IObjGraphics.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CurveArc.h | 14 +++++++++--- CurveBezier.h | 12 ++++++++-- CurveComposite.h | 16 ++++++++++---- CurveLine.h | 20 ++++++++++++----- EgtGeomKernel.rc | Bin 11710 -> 11710 bytes EgtGeomKernel.vcxproj | 16 +++++++++----- EgtGeomKernel.vcxproj.filters | 6 +++++ GeoFrame3d.h | 12 +++++++--- GeoPoint3d.h | 8 ++++++- GeoVector3d.h | 8 ++++++- GeomDB.cpp | 22 ++++++++++++++++--- GeomDB.h | 7 +++--- ObjGraphicsMgr.h | 40 ++++++++++++++++++++++++++++++++++ 13 files changed, 149 insertions(+), 32 deletions(-) create mode 100644 ObjGraphicsMgr.h diff --git a/CurveArc.h b/CurveArc.h index e28eade..4120921 100644 --- a/CurveArc.h +++ b/CurveArc.h @@ -13,8 +13,9 @@ #pragma once -#include "/EgtDev/Include/EGkCurveArc.h" +#include "ObjGraphicsMgr.h" #include "CurveAux.h" +#include "/EgtDev/Include/EGkCurveArc.h" //---------------------------------------------------------------------------- class CurveArc : public ICurveArc @@ -22,9 +23,11 @@ class CurveArc : public ICurveArc public : // IGeoObj virtual ~CurveArc( void) ; virtual CurveArc* Clone( void) const ; - virtual GeoObjType GetType( void) const { return CRV_ARC ; } + virtual GeoObjType GetType( void) const + { return CRV_ARC ; } virtual const std::string& GetKey( void) const ; - virtual bool IsValid( void) const { return ( m_nStatus == OK) ; } + virtual bool IsValid( void) const + { return ( m_nStatus == OK) ; } virtual bool Save( std::ostream& osOut) const ; virtual bool Load( Scanner& TheScanner) ; virtual bool GetLocalBBox( BBox3d& b3Loc) const ; @@ -37,6 +40,10 @@ class CurveArc : public ICurveArc virtual bool Mirror( const Point3d& ptOn, const Vector3d& vtNorm) ; virtual bool ToGlob( const Frame3d& frRef) ; virtual bool ToLoc( const Frame3d& frRef) ; + virtual void SetObjGraphics( IObjGraphics* pOGr) + { m_OGrMgr.SetObjGraphics( pOGr) ; } + virtual IObjGraphics* GetObjGraphics( void) + { return m_OGrMgr.GetObjGraphics() ; } public : // ICurve virtual bool IsSimple( void) const { return true ; } @@ -101,6 +108,7 @@ class CurveArc : public ICurveArc enum Status { ERR = 0, OK = 1, TO_VERIFY = 2} ; private : + ObjGraphicsMgr m_OGrMgr ; // gestore grafica dell'oggetto Status m_nStatus ; // stato Point3d m_PtCen ; // punto centro Vector3d m_VtN ; // versore normale al piano dell'arco diff --git a/CurveBezier.h b/CurveBezier.h index a439336..71dca2e 100644 --- a/CurveBezier.h +++ b/CurveBezier.h @@ -13,6 +13,7 @@ #pragma once +#include "ObjGraphicsMgr.h" #include "CurveAux.h" #include "PolynomialPoint3d.h" #include "/EgtDev/Include/EGkCurveBezier.h" @@ -24,9 +25,11 @@ class CurveBezier : public ICurveBezier public : // IGeoObj virtual ~CurveBezier( void) ; virtual CurveBezier* Clone( void) const ; - virtual GeoObjType GetType( void) const { return CRV_BEZ ; } + virtual GeoObjType GetType( void) const + { return CRV_BEZ ; } virtual const std::string& GetKey( void) const ; - virtual bool IsValid( void) const { return ( m_nStatus == OK) ; } + virtual bool IsValid( void) const + { return ( m_nStatus == OK) ; } virtual bool Save( std::ostream& osOut) const ; virtual bool Load( Scanner& TheScanner) ; virtual bool GetLocalBBox( BBox3d& b3Loc) const ; @@ -39,6 +42,10 @@ class CurveBezier : public ICurveBezier virtual bool Mirror( const Point3d& ptOn, const Vector3d& vtNorm) ; virtual bool ToGlob( const Frame3d& frRef) ; virtual bool ToLoc( const Frame3d& frRef) ; + virtual void SetObjGraphics( IObjGraphics* pOGr) + { m_OGrMgr.SetObjGraphics( pOGr) ; } + virtual IObjGraphics* GetObjGraphics( void) + { return m_OGrMgr.GetObjGraphics() ; } public : // ICurve virtual bool IsSimple( void) const { return true ; } @@ -110,6 +117,7 @@ class CurveBezier : public ICurveBezier static const int ST_PTC = 4 ; private : + ObjGraphicsMgr m_OGrMgr ; // gestore grafica dell'oggetto Status m_nStatus ; // stato int m_nDeg ; // grado bool m_bRat ; // flag di razionale/polinomiale diff --git a/CurveComposite.h b/CurveComposite.h index b39e978..af974a2 100644 --- a/CurveComposite.h +++ b/CurveComposite.h @@ -13,9 +13,10 @@ #pragma once -#include -#include "/EgtDev/Include/EGkCurveComposite.h" +#include "ObjGraphicsMgr.h" #include "CurveAux.h" +#include "/EgtDev/Include/EGkCurveComposite.h" +#include //---------------------------------------------------------------------------- typedef std::list< ICurve*> PCRVSMPL_LIST ; @@ -26,9 +27,11 @@ class CurveComposite : public ICurveComposite public : // IGeoObj virtual ~CurveComposite( void) ; virtual CurveComposite* Clone( void) const ; - virtual GeoObjType GetType( void) const { return CRV_COMPO ; } + virtual GeoObjType GetType( void) const + { return CRV_COMPO ; } virtual const std::string& GetKey( void) const ; - virtual bool IsValid( void) const { return ( m_nStatus == OK) ; } + virtual bool IsValid( void) const + { return ( m_nStatus == OK) ; } virtual bool Save( std::ostream& osOut) const ; virtual bool Load( Scanner& TheScanner) ; virtual bool GetLocalBBox( BBox3d& b3Loc) const ; @@ -41,6 +44,10 @@ class CurveComposite : public ICurveComposite virtual bool Mirror( const Point3d& ptOn, const Vector3d& vtNorm) ; virtual bool ToGlob( const Frame3d& frRef) ; virtual bool ToLoc( const Frame3d& frRef) ; + virtual void SetObjGraphics( IObjGraphics* pOGr) + { m_OGrMgr.SetObjGraphics( pOGr) ; } + virtual IObjGraphics* GetObjGraphics( void) + { return m_OGrMgr.GetObjGraphics() ; } public : // ICurve virtual bool IsSimple( void) const { return false ; } @@ -93,6 +100,7 @@ class CurveComposite : public ICurveComposite enum Status { ERR = 0, OK = 1, TO_VERIFY = 2} ; private : + ObjGraphicsMgr m_OGrMgr ; // gestore grafica dell'oggetto Status m_nStatus ; // stato int m_nCounter ; // contatore del numero di curve PCRVSMPL_LIST m_CrvSmplS ; // lista di curve semplici diff --git a/CurveLine.h b/CurveLine.h index 8d5b306..668659d 100644 --- a/CurveLine.h +++ b/CurveLine.h @@ -13,8 +13,9 @@ #pragma once -#include "/EgtDev/Include/EGkCurveLine.h" +#include "ObjGraphicsMgr.h" #include "CurveAux.h" +#include "/EgtDev/Include/EGkCurveLine.h" //---------------------------------------------------------------------------- class CurveLine : public ICurveLine @@ -22,9 +23,11 @@ class CurveLine : public ICurveLine public : // IGeoObj virtual ~CurveLine( void) ; virtual CurveLine* Clone( void) const ; - virtual GeoObjType GetType( void) const { return CRV_LINE ; } + virtual GeoObjType GetType( void) const + { return CRV_LINE ; } virtual const std::string& GetKey( void) const ; - virtual bool IsValid( void) const { return ( m_nStatus == OK) ; } + virtual bool IsValid( void) const + { return ( m_nStatus == OK) ; } virtual bool Save( std::ostream& osOut) const ; virtual bool Load( Scanner& TheScanner) ; virtual bool GetLocalBBox( BBox3d& b3Loc) const ; @@ -37,6 +40,10 @@ class CurveLine : public ICurveLine virtual bool Mirror( const Point3d& ptOn, const Vector3d& vtNorm) ; virtual bool ToGlob( const Frame3d& frRef) ; virtual bool ToLoc( const Frame3d& frRef) ; + virtual void SetObjGraphics( IObjGraphics* pOGr) + { m_OGrMgr.SetObjGraphics( pOGr) ; } + virtual IObjGraphics* GetObjGraphics( void) + { return m_OGrMgr.GetObjGraphics() ; } public : // ICurve virtual bool IsSimple( void) const { return true ; } @@ -82,7 +89,8 @@ class CurveLine : public ICurveLine enum Status { ERR = 0, OK = 1, TO_VERIFY = 2} ; private : - Status m_nStatus ; // stato - Point3d m_PtStart ; // punto iniziale - Point3d m_PtEnd ; // punto finale + ObjGraphicsMgr m_OGrMgr ; // gestore grafica dell'oggetto + Status m_nStatus ; // stato + Point3d m_PtStart ; // punto iniziale + Point3d m_PtEnd ; // punto finale } ; diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index d13912ecef8d6d1144338a662058a0d9c747fbc5..3737933c27da6d50070028b481d1c9fb4d68bffa 100644 GIT binary patch delta 81 zcmdlNy)SyhH#SD&&FAG5nSsUse Level3 Disabled - WIN32;_WINDOWS;I_AM_EGK;_DEBUG;_USRDLL;%(PreprocessorDefinitions) + WIN32;_WINDOWS;I_AM_EGK;_DEBUG;%(PreprocessorDefinitions) true CompileAsCpp false @@ -127,7 +127,7 @@ copy $(TargetPath) \EgtProg\Dll32 Use Level3 Disabled - WIN32;_WINDOWS;I_AM_EGK;_DEBUG;_USRDLL;%(PreprocessorDefinitions) + WIN32;_WINDOWS;I_AM_EGK;_DEBUG;%(PreprocessorDefinitions) true CompileAsCpp false @@ -158,12 +158,13 @@ copy $(TargetPath) \EgtProg\Dll64 Level3 Use - MaxSpeed + Full true true - WIN32;_WINDOWS;I_AM_EGK;NDEBUG;_USRDLL;%(PreprocessorDefinitions) + WIN32;_WINDOWS;I_AM_EGK;NDEBUG;%(PreprocessorDefinitions) true CompileAsCpp + Speed Windows @@ -192,12 +193,13 @@ copy $(TargetPath) \EgtProg\Dll32 Level3 Use - MaxSpeed + Full true true - WIN32;_WINDOWS;I_AM_EGK;NDEBUG;_USRDLL;%(PreprocessorDefinitions) + WIN32;_WINDOWS;I_AM_EGK;NDEBUG;%(PreprocessorDefinitions) true CompileAsCpp + Speed Windows @@ -281,6 +283,7 @@ copy $(TargetPath) \EgtProg\Dll64 + @@ -318,6 +321,7 @@ copy $(TargetPath) \EgtProg\Dll64 + diff --git a/EgtGeomKernel.vcxproj.filters b/EgtGeomKernel.vcxproj.filters index eb69d18..cd85d7e 100644 --- a/EgtGeomKernel.vcxproj.filters +++ b/EgtGeomKernel.vcxproj.filters @@ -311,6 +311,12 @@ File di intestazione + + File di intestazione + + + File di intestazione + diff --git a/GeoFrame3d.h b/GeoFrame3d.h index ac7f66f..7e0d2be 100644 --- a/GeoFrame3d.h +++ b/GeoFrame3d.h @@ -13,13 +13,14 @@ #pragma once +#include "ObjGraphicsMgr.h" #include "/EgtDev/Include/EGkGeoFrame3d.h" //---------------------------------------------------------------------------- class GeoFrame3d : public IGeoFrame3d { - public : + public : // IGeoObj virtual ~GeoFrame3d( void) ; virtual GeoFrame3d* Clone( void) const ; virtual GeoObjType GetType( void) const { return GEO_FRAME3D ; } @@ -45,8 +46,12 @@ class GeoFrame3d : public IGeoFrame3d { return m_frF.ToGlob( frRef) ;} virtual bool ToLoc( const Frame3d& frRef) { return m_frF.ToLoc( frRef) ;} + virtual void SetObjGraphics( IObjGraphics* pOGr) + { m_OGrMgr.SetObjGraphics( pOGr) ; } + virtual IObjGraphics* GetObjGraphics( void) + { return m_OGrMgr.GetObjGraphics() ; } - public : + public : // IGeoFrame3d virtual bool Set( const Point3d& ptOrig, const Vector3d& vtDirX, const Vector3d& vtDirY, const Vector3d& vtDirZ) ; virtual bool Set( const Frame3d& frF) ; @@ -61,5 +66,6 @@ class GeoFrame3d : public IGeoFrame3d return *this ; } public : - Frame3d m_frF ; + ObjGraphicsMgr m_OGrMgr ; // gestore grafica dell'oggetto + Frame3d m_frF ; // oggetto } ; diff --git a/GeoPoint3d.h b/GeoPoint3d.h index 31b140e..dd5d696 100644 --- a/GeoPoint3d.h +++ b/GeoPoint3d.h @@ -13,6 +13,7 @@ #pragma once +#include "ObjGraphicsMgr.h" #include "/EgtDev/Include/EGkGeoPoint3d.h" @@ -45,6 +46,10 @@ class GeoPoint3d : public IGeoPoint3d { return m_ptP.ToGlob( frRef) ;} virtual bool ToLoc( const Frame3d& frRef) { return m_ptP.ToLoc( frRef) ;} + virtual void SetObjGraphics( IObjGraphics* pOGr) + { m_OGrMgr.SetObjGraphics( pOGr) ; } + virtual IObjGraphics* GetObjGraphics( void) + { return m_OGrMgr.GetObjGraphics() ; } public : virtual bool Set( const Point3d& ptP) ; @@ -59,5 +64,6 @@ class GeoPoint3d : public IGeoPoint3d return *this ; } public : - Point3d m_ptP ; + ObjGraphicsMgr m_OGrMgr ; // gestore grafica dell'oggetto + Point3d m_ptP ; // oggetto } ; diff --git a/GeoVector3d.h b/GeoVector3d.h index e6e121b..1f77b23 100644 --- a/GeoVector3d.h +++ b/GeoVector3d.h @@ -13,6 +13,7 @@ #pragma once +#include "ObjGraphicsMgr.h" #include "/EgtDev/Include/EGkGeoVector3d.h" @@ -45,6 +46,10 @@ class GeoVector3d : public IGeoVector3d { return m_vtV.ToGlob( frRef) ;} virtual bool ToLoc( const Frame3d& frRef) { return m_vtV.ToLoc( frRef) ;} + virtual void SetObjGraphics( IObjGraphics* pOGr) + { m_OGrMgr.SetObjGraphics( pOGr) ; } + virtual IObjGraphics* GetObjGraphics( void) + { return m_OGrMgr.GetObjGraphics() ; } public : virtual bool Set( const Vector3d& vtV) ; @@ -59,5 +64,6 @@ class GeoVector3d : public IGeoVector3d return *this ; } public : - Vector3d m_vtV ; + ObjGraphicsMgr m_OGrMgr ; // gestore grafica dell'oggetto + Vector3d m_vtV ; // oggetto } ; diff --git a/GeomDB.cpp b/GeomDB.cpp index d71214d..28caa53 100644 --- a/GeomDB.cpp +++ b/GeomDB.cpp @@ -361,8 +361,8 @@ GeomDB::GetGeoObj( int nId) } //---------------------------------------------------------------------------- -Frame3d* -GeomDB::GetGroupFrame( int nId) +IGeoFrame3d* +GeomDB::GetGeoFrame( int nId) { GdbGroup* pGdbGroup ; @@ -372,7 +372,23 @@ GeomDB::GetGroupFrame( int nId) return nullptr ; // restituisco il suo riferimento - return &(pGdbGroup->m_gfrFrame.m_frF) ; + return &(pGdbGroup->m_gfrFrame) ; +} + +//---------------------------------------------------------------------------- +bool +GeomDB::GetGroupFrame( int nId, Frame3d& frGlob) +{ + GdbGroup* pGdbGroup ; + + + // recupero il gruppo Gdb + if ( ( pGdbGroup = GetGdbGroup( nId)) == nullptr) + return false ; + + // copio il riferimento + frGlob = pGdbGroup->m_gfrFrame.m_frF ; + return true ; } //---------------------------------------------------------------------------- diff --git a/GeomDB.h b/GeomDB.h index dfbfd9c..99c53d9 100644 --- a/GeomDB.h +++ b/GeomDB.h @@ -13,11 +13,11 @@ #pragma once -#include -#include "/EgtDev/Include/EGkGeomDB.h" #include "GdbObj.h" #include "GdbGroup.h" #include "IdManager.h" +#include "/EgtDev/Include/EGkGeomDB.h" +#include //---------------------------------------------------------------------------- @@ -39,7 +39,8 @@ class GeomDB : public IGeomDB virtual int AddGeoObj( int nId, int nParentId, IGeoObj* pGeoObj) ; virtual GdbType GetGdbType( int nId) const ; virtual IGeoObj* GetGeoObj( int nId) ; - virtual Frame3d* GetGroupFrame( int nId) ; + virtual IGeoFrame3d* GetGeoFrame( int nId) ; + virtual bool GetGroupFrame( int nId, Frame3d& frGlob) ; virtual bool GetGroupGlobFrame( int nId, Frame3d& frGlob) ; virtual int GetParentId( int nId) ; virtual bool GetGlobFrame( int nId, Frame3d& frGlob) diff --git a/ObjGraphicsMgr.h b/ObjGraphicsMgr.h new file mode 100644 index 0000000..27d0813 --- /dev/null +++ b/ObjGraphicsMgr.h @@ -0,0 +1,40 @@ +//---------------------------------------------------------------------------- +// EgalTech 2014-2014 +//---------------------------------------------------------------------------- +// File : ObjGraphicsMgr.h Data : 11.02.14 Versione : 1.5b2 +// Contenuto : Dichiarazione del gestore di IObjGraphics. +// +// +// +// Modifiche : 11.02.14 DS Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkObjGraphics.h" + + +//---------------------------------------------------------------------------- +class ObjGraphicsMgr +{ + public : + ObjGraphicsMgr( void) : m_pOGr( nullptr) {} + ~ObjGraphicsMgr( void) + { if ( m_pOGr != nullptr) + delete m_pOGr ; + m_pOGr = nullptr ; } + void SetObjGraphics( IObjGraphics* pOGr) + { if ( m_pOGr != nullptr) + delete m_pOGr ; + m_pOGr = pOGr ; } + IObjGraphics* GetObjGraphics( void) + { return m_pOGr ; } + void Invalidate( void) + { if ( m_pOGr != nullptr) + m_pOGr->Invalidate() ; } + + private : + IObjGraphics* m_pOGr ; +} ;