From 75c298a0020c47f689264ea6ddec225a92bcbc36 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Fri, 14 Mar 2014 18:41:00 +0000 Subject: [PATCH] Include : - modifiche a interfaccia - aggiunte funzioni per GDB. --- EGkColor.h | 2 ++ EGkGdbConst.h | 30 ++++++++++++++++---- EGkGdbFunct.h | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ EGkGdbIterator.h | 15 +++++++++- EGkGeomDB.h | 15 +++++++++- 5 files changed, 127 insertions(+), 7 deletions(-) create mode 100644 EGkGdbFunct.h diff --git a/EGkColor.h b/EGkColor.h index 5e7b99e..a9da744 100644 --- a/EGkColor.h +++ b/EGkColor.h @@ -39,6 +39,8 @@ class Color { Set( nRed, nGreen, nBlue, nAlpha) ; } Color( double dRed, double dGreen, double dBlue, double dAlpha = 1) { Set( dRed, dGreen, dBlue, dAlpha) ; } + void Set( void) + { m_Col[RED] = 0 ; m_Col[GREEN] = 0 ; m_Col[BLUE] = 0 ; m_Col[ALPHA] = MAX_ALPHA ; } void Set( int nRed, int nGreen, int nBlue, int nAlpha = MAX_ALPHA) { m_Col[RED] = (( nRed < 0) ? 0 : (( nRed > MAX_RGB) ? MAX_RGB : nRed)) ; m_Col[GREEN] = (( nGreen < 0) ? 0 : (( nGreen > MAX_RGB) ? MAX_RGB : nGreen)) ; diff --git a/EGkGdbConst.h b/EGkGdbConst.h index e3a81f2..3b53ef6 100644 --- a/EGkGdbConst.h +++ b/EGkGdbConst.h @@ -14,12 +14,32 @@ #pragma once -//----------------- Costanti generali ---------------------------------------- +//----------------- Costanti generali ------------------------------------------ const int GDB_ID_ROOT = 0 ; const int GDB_ID_NULL = -1 ; -//----------------- Costanti tipo nodi del DB geometrico ---------------------- -enum GdbType { GDB_NONE = 0, - GDB_GEO = 1, - GDB_GROUP = 2} ; +//----------------- Costanti tipo oggetti del DB geometrico -------------------- +enum GdbType { GDB_TY_NONE = 0, + GDB_TY_GEO = 1, + GDB_TY_GROUP = 2} ; + +//----------------- Costanti livello oggetti del DB geometrico ----------------- +enum GdbLevel { GDB_LV_USER = 0, + GDB_LV_SYSTEM = 1, + GDB_LV_TEMP = 2} ; + +//----------------- Costanti modo oggetti del DB geometrico -------------------- +enum GdbMode { GDB_MD_STD = 0, + GDB_MD_LOCKED = 1, + GDB_MD_HIDDEN = 2} ; + +//----------------- Costanti stato oggetti del DB geometrico ------------------- +enum GdbStatus { GDB_ST_ON = 0, + GDB_ST_SEL = 1, + GDB_ST_OFF = 2} ; + +//----------------- Costanti materiale oggetti del DB geometrico --------------- +enum GdbMaterial { GDB_MT_COLOR = -1, + GDB_MT_PARENT = 0} ; +// valori positivi indicano indici nella lista dei materiali (1 based) \ No newline at end of file diff --git a/EGkGdbFunct.h b/EGkGdbFunct.h new file mode 100644 index 0000000..a832a56 --- /dev/null +++ b/EGkGdbFunct.h @@ -0,0 +1,72 @@ +//---------------------------------------------------------------------------- +// EgalTech 2014-2014 +//---------------------------------------------------------------------------- +// File : EgkGdbFunct.h Data : 13.03.14 Versione : 1.5c6 +// Contenuto : Funzioni generali per DB geometrico. +// +// +// +// Modifiche : 13.03.14 DS Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkGdbConst.h" + +//----------------- Funzioni per livello di oggetti ---------------------------- +// per combinare il livello del padre con il proprio +inline int +CalcLevel( int nObjLevel, int nParentLevel) +{ + // se oggetto Temp tale rimane + if ( nObjLevel == GDB_LV_TEMP) + return GDB_LV_TEMP ; + + // altrimenti puņ dipendere dal padre + return (( nParentLevel == GDB_LV_USER) ? nObjLevel : nParentLevel) ; +} + +//----------------- Funzioni per modo di oggetti ------------------------------- +// per combinare il modo del padre con il proprio +inline int +CalcMode( int nObjMode, int nParentMode) +{ + // se oggetto HIDDEN tale rimane + if ( nObjMode == GDB_MD_HIDDEN) + return GDB_MD_HIDDEN ; + + // altrimenti puņ dipendere dal padre + return (( nParentMode == GDB_MD_STD) ? nObjMode : nParentMode) ; +} + +//----------------- Funzioni per stato di oggetti ------------------------------ +// per combinare lo stato del padre con il proprio +inline int +CalcStatus( int nObjStat, int nParentStat) +{ + // se oggetto OFF tale rimane + if ( nObjStat == GDB_ST_OFF) + return GDB_ST_OFF ; + + // altrimenti puņ dipendere dal padre + return (( nParentStat == GDB_ST_ON) ? nObjStat : nParentStat) ; +} + +//------------------------------------------------------------------------------ +// per combinare lo stato con il modo +inline int +AdjustStatusWithMode( int nObjStat, int nObjMode) +{ + // se oggetto OFF tale rimane + if ( nObjStat == GDB_ST_OFF) + return GDB_ST_OFF ; + + // altrimenti puņ dipendere dal modo + switch ( nObjMode) { + default : /* GDB_MD_STD */ return nObjStat ; + case GDB_MD_LOCKED : return GDB_ST_ON ; + case GDB_MD_HIDDEN : return GDB_ST_OFF ; + } +} diff --git a/EGkGdbIterator.h b/EGkGdbIterator.h index d0ca8df..265e1a1 100644 --- a/EGkGdbIterator.h +++ b/EGkGdbIterator.h @@ -38,7 +38,7 @@ class __declspec( novtable) IGdbIterator virtual bool GoToLastInGroup( const IGdbIterator& iIter) = 0 ; virtual bool GoToPrev( void) = 0 ; - virtual GdbType GetGdbType( void) const = 0 ; + virtual int GetGdbType( void) const = 0 ; virtual IGeoObj* GetGeoObj( void) = 0 ; virtual IGeoFrame3d* GetGeoFrame( void) = 0 ; virtual bool GetGroupFrame( Frame3d& frGlob) const = 0 ; @@ -46,8 +46,21 @@ class __declspec( novtable) IGdbIterator virtual int GetId( void) const = 0 ; virtual int GetParentId( void) const = 0 ; virtual bool GetGlobFrame( Frame3d& frGlob) const = 0 ; + virtual bool SetLevel( int nLevel) = 0 ; + virtual bool RevertLevel( void) = 0 ; + virtual bool GetLevel( int& nLevel) const = 0 ; + virtual bool GetCalcLevel( int& nLevel) const = 0 ; + virtual bool SetMode( int nMode) = 0 ; + virtual bool RevertMode( void) = 0 ; + virtual bool GetMode( int& nMode) const = 0 ; + virtual bool GetCalcMode( int& nMode) const = 0 ; + virtual bool SetStatus( int nStat) = 0 ; + virtual bool RevertStatus( void) = 0 ; + virtual bool GetStatus( int& nStat) const = 0 ; + virtual bool GetCalcStatus( int& nStat) const = 0 ; virtual bool SetColor( Color cCol) = 0 ; virtual bool GetColor( Color& cCol) const = 0 ; + virtual bool GetCalcColor( Color& cCol) const = 0 ; virtual bool SetName( const std::string& sName) = 0 ; virtual bool GetName( std::string& sName) const = 0 ; virtual bool RemoveName( void) = 0 ; diff --git a/EGkGeomDB.h b/EGkGeomDB.h index 0a462eb..66c2419 100644 --- a/EGkGeomDB.h +++ b/EGkGeomDB.h @@ -40,7 +40,7 @@ class __declspec( novtable) IGeomDB virtual bool ExistsObj( int nId) const = 0 ; virtual int AddGroup( int nId, int nParentId, const Frame3d& frFrame) = 0 ; virtual int AddGeoObj( int nId, int nParentId, IGeoObj* pGeoObj) = 0 ; - virtual GdbType GetGdbType( int nId) const = 0 ; + virtual int GetGdbType( int nId) const = 0 ; virtual IGeoObj* GetGeoObj( int nId) = 0 ; virtual IGeoFrame3d* GetGeoFrame( int nId) = 0 ; virtual bool GetGroupFrame( int nId, Frame3d& frGrp) const = 0 ; @@ -65,10 +65,23 @@ class __declspec( novtable) IGeomDB virtual bool Mirror( int nId, const Point3d& ptOn, const Vector3d& vtNorm) = 0 ; virtual bool MirrorGlob( int nId, const Point3d& ptOn, const Vector3d& vtNorm) = 0 ; virtual bool DumpAttributes( int nId, std::string& sOut, const char* szNewLine) const = 0 ; + virtual bool SetLevel( int nId, int nLevel) = 0 ; + virtual bool RevertLevel( int nId) = 0 ; + virtual bool GetLevel( int nId, int& nLevel) const = 0 ; + virtual bool GetCalcLevel( int nId, int& nLevel) const = 0 ; + virtual bool SetMode( int nId, int nMode) = 0 ; + virtual bool RevertMode( int nId) = 0 ; + virtual bool GetMode( int nId, int& nMode) const = 0 ; + virtual bool GetCalcMode( int nId, int& nMode) const = 0 ; + virtual bool SetStatus( int nId, int nStat) = 0 ; + virtual bool RevertStatus( int nId) = 0 ; + virtual bool GetStatus( int nId, int& nStat) const = 0 ; + virtual bool GetCalcStatus( int nId, int& nStat) const = 0 ; virtual bool SetDefaultColor( Color cCol) = 0 ; virtual bool GetDefaultColor( Color& cCol) const = 0 ; virtual bool SetColor( int nId, Color cCol) = 0 ; virtual bool GetColor( int nId, Color& cCol) const = 0 ; + virtual bool GetCalcColor( int nId, Color& cCol) const = 0 ; virtual bool SetName( int nId, const std::string& sName) = 0 ; virtual bool GetName( int nId, std::string& sName) const = 0 ; virtual bool RemoveName( int nId) = 0 ;