EgtGeomKernel 1.5c6 :

- aggiunta gestione attributi Level, Mode e Status
- aggiunti comandi per assegnarli.
This commit is contained in:
Dario Sassi
2014-03-14 18:38:48 +00:00
parent 01ce6ea4a4
commit e2c8e72e22
13 changed files with 770 additions and 80 deletions
+186 -10
View File
@@ -37,7 +37,7 @@ CreateGeomDB( void)
GeomDB::GeomDB( void)
{
m_GrpRadix.m_nId = GDB_ID_ROOT ;
m_GrpRadix.SetColor( Color( 0, 0, 0)) ;
m_GrpRadix.SetColor( Color()) ;
}
//----------------------------------------------------------------------------
@@ -53,7 +53,7 @@ GeomDB::Init( void)
// imposto numero minimo buckets del map degli Id
m_IdManager.Init( 1024) ;
// imposto colore di default
m_GrpRadix.SetColor( Color( 0, 0, 0)) ;
m_GrpRadix.SetColor( Color()) ;
return true ;
}
@@ -221,9 +221,16 @@ GeomDB::Save( const std::string& sFileOut) const
// ciclo di scrittura degli oggetti
const GdbObj* pGdbObj = m_GrpRadix.GetFirstObj() ;
while ( pGdbObj != nullptr) {
// oggetto geometrico
if ( ! pGdbObj->Save( ofSave))
bOk = false ;
// recupero il livello dell'oggetto
int nLevel = GDB_LV_USER ;
pGdbObj->GetLevel( nLevel) ;
// se non temporaneo
if ( nLevel != GDB_LV_TEMP) {
// salvo l'oggetto
if ( ! pGdbObj->Save( ofSave))
bOk = false ;
}
// passo al successivo
pGdbObj = pGdbObj->GetNext() ;
}
ofSave << "END" << endl ;
@@ -370,7 +377,7 @@ GeomDB::AddGeoObj( int nId, int nParentId, IGeoObj* pGeoObj)
}
//----------------------------------------------------------------------------
GdbType
int
GeomDB::GetGdbType( int nId) const
{
const GdbObj* pGdbObj ;
@@ -378,17 +385,17 @@ GeomDB::GetGdbType( int nId) const
// recupero l'oggetto
if ( ( pGdbObj = (const_cast<GeomDB*> (this))->GetGdbObj( nId)) == nullptr)
return GDB_NONE ;
return GDB_TY_NONE ;
// se oggetto geometrico
if ( ::GetGdbGeo( pGdbObj) != nullptr)
return GDB_GEO ;
return GDB_TY_GEO ;
// se gruppo
else if ( ::GetGdbGroup( pGdbObj) != nullptr)
return GDB_GROUP ;
return GDB_TY_GROUP ;
// altro
else
return GDB_NONE ;
return GDB_TY_NONE ;
}
//----------------------------------------------------------------------------
@@ -781,6 +788,162 @@ GeomDB::DumpAttributes( int nId, string& sOut, const char* szNewLine) const
}
}
//----------------------------------------------------------------------------
bool
GeomDB::SetLevel( int nId, int nLevel)
{
// recupero l'oggetto
GdbObj* pGdbObj ;
if ( ( pGdbObj = GetGdbObj( nId)) == nullptr)
return false ;
// assegno il livello
return pGdbObj->SetLevel( nLevel) ;
}
//----------------------------------------------------------------------------
bool
GeomDB::RevertLevel( int nId)
{
// recupero l'oggetto
GdbObj* pGdbObj ;
if ( ( pGdbObj = GetGdbObj( nId)) == nullptr)
return false ;
// ripristino il livello precedente
return pGdbObj->RevertLevel() ;
}
//----------------------------------------------------------------------------
bool
GeomDB::GetLevel( int nId, int& nLevel) const
{
// recupero l'oggetto
const GdbObj* pGdbObj ;
if ( ( pGdbObj = (const_cast<GeomDB*>(this))->GetGdbObj( nId)) == nullptr)
return false ;
// recupero il livello
return pGdbObj->GetLevel( nLevel) ;
}
//----------------------------------------------------------------------------
bool
GeomDB::GetCalcLevel( int nId, int& nLevel) const
{
// recupero l'oggetto
const GdbObj* pGdbObj ;
if ( ( pGdbObj = (const_cast<GeomDB*>(this))->GetGdbObj( nId)) == nullptr)
return false ;
// recupero il livello calcolato
return pGdbObj->GetCalcLevel( nLevel) ;
}
//----------------------------------------------------------------------------
bool
GeomDB::SetMode( int nId, int nMode)
{
// recupero l'oggetto
GdbObj* pGdbObj ;
if ( ( pGdbObj = GetGdbObj( nId)) == nullptr)
return false ;
// assegno il modo
return pGdbObj->SetMode( nMode) ;
}
//----------------------------------------------------------------------------
bool
GeomDB::RevertMode( int nId)
{
// recupero l'oggetto
GdbObj* pGdbObj ;
if ( ( pGdbObj = GetGdbObj( nId)) == nullptr)
return false ;
// ripristino il modo precedente
return pGdbObj->RevertMode() ;
}
//----------------------------------------------------------------------------
bool
GeomDB::GetMode( int nId, int& nMode) const
{
// recupero l'oggetto
const GdbObj* pGdbObj ;
if ( ( pGdbObj = (const_cast<GeomDB*>(this))->GetGdbObj( nId)) == nullptr)
return false ;
// recupero il modo
return pGdbObj->GetMode( nMode) ;
}
//----------------------------------------------------------------------------
bool
GeomDB::GetCalcMode( int nId, int& nMode) const
{
// recupero l'oggetto
const GdbObj* pGdbObj ;
if ( ( pGdbObj = (const_cast<GeomDB*>(this))->GetGdbObj( nId)) == nullptr)
return false ;
// recupero il modo calcolato
return pGdbObj->GetCalcMode( nMode) ;
}
//----------------------------------------------------------------------------
bool
GeomDB::SetStatus( int nId, int nStat)
{
// recupero l'oggetto
GdbObj* pGdbObj ;
if ( ( pGdbObj = GetGdbObj( nId)) == nullptr)
return false ;
// assegno lo stato
return pGdbObj->SetStatus( nStat) ;
}
//----------------------------------------------------------------------------
bool
GeomDB::RevertStatus( int nId)
{
// recupero l'oggetto
GdbObj* pGdbObj ;
if ( ( pGdbObj = GetGdbObj( nId)) == nullptr)
return false ;
// ripristino lo stato precedente
return pGdbObj->RevertStatus() ;
}
//----------------------------------------------------------------------------
bool
GeomDB::GetStatus( int nId, int& nStat) const
{
// recupero l'oggetto
const GdbObj* pGdbObj ;
if ( ( pGdbObj = (const_cast<GeomDB*>(this))->GetGdbObj( nId)) == nullptr)
return false ;
// recupero lo stato
return pGdbObj->GetStatus( nStat) ;
}
//----------------------------------------------------------------------------
bool
GeomDB::GetCalcStatus( int nId, int& nStat) const
{
// recupero l'oggetto
const GdbObj* pGdbObj ;
if ( ( pGdbObj = (const_cast<GeomDB*>(this))->GetGdbObj( nId)) == nullptr)
return false ;
// recupero lo stato calcolato
return pGdbObj->GetCalcStatus( nStat) ;
}
//----------------------------------------------------------------------------
bool
GeomDB::SetDefaultColor( Color cCol)
@@ -833,6 +996,19 @@ GeomDB::GetColor( int nId, Color& cCol) const
return pGdbObj->GetColor( cCol) ;
}
//----------------------------------------------------------------------------
bool
GeomDB::GetCalcColor( int nId, Color& cCol) const
{
// recupero l'oggetto
const GdbObj* pGdbObj ;
if ( ( pGdbObj = (const_cast<GeomDB*>(this))->GetGdbObj( nId)) == nullptr)
return false ;
// recupero il colore calcolato
return pGdbObj->GetCalcColor( cCol) ;
}
//----------------------------------------------------------------------------
bool
GeomDB::SetName( int nId, const string& sName)