EgtGeomKernel 1.5c1 :

- aggiunta prima gestione attributi.
This commit is contained in:
Dario Sassi
2014-03-06 08:17:26 +00:00
parent 76f1c1ceac
commit 2a2c0065ed
21 changed files with 1284 additions and 714 deletions
+70 -55
View File
@@ -13,8 +13,9 @@
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include <new>
#include "GdbIterator.h"
#include "Attribs.h"
#include <new>
using namespace std ;
@@ -31,7 +32,7 @@ CreateGdbIterator( void)
GdbIterator::GdbIterator( void)
{
m_pGDB = nullptr ;
m_pCurrNode = nullptr ;
m_pCurrObj = nullptr ;
}
//----------------------------------------------------------------------------
@@ -56,9 +57,9 @@ GdbIterator::GoTo( int nId)
if ( m_pGDB == nullptr)
return false ;
m_pCurrNode = m_pGDB->GetGdbNode( nId) ;
m_pCurrObj = m_pGDB->GetGdbObj( nId) ;
return ( m_pCurrNode != nullptr) ;
return ( m_pCurrObj != nullptr) ;
}
//----------------------------------------------------------------------------
@@ -74,75 +75,73 @@ GdbIterator::GoToFirstInGroup( int nIdGroup)
// recupero il gruppo
pGdbGroup = m_pGDB->GetGdbGroup( nIdGroup) ;
if ( pGdbGroup == nullptr) {
m_pCurrNode = nullptr ;
m_pCurrObj = nullptr ;
return false ;
}
// recupero il nodo
m_pCurrNode = pGdbGroup->GetFirstNode() ;
// recupero l'oggetto
m_pCurrObj = pGdbGroup->GetFirstObj() ;
return ( m_pCurrNode != nullptr) ;
return ( m_pCurrObj != nullptr) ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToNext( void)
{
if ( m_pGDB == nullptr || m_pCurrNode == nullptr)
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
m_pCurrNode = m_pCurrNode->GetNext() ;
m_pCurrObj = m_pCurrObj->GetNext() ;
return ( m_pCurrNode != nullptr) ;
return ( m_pCurrObj != nullptr) ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToLastInGroup( int nIdGroup)
{
GdbGroup* pGdbGroup ;
if ( m_pGDB == nullptr)
return false ;
// recupero il gruppo
GdbGroup* pGdbGroup ;
pGdbGroup = m_pGDB->GetGdbGroup( nIdGroup) ;
if ( pGdbGroup == nullptr) {
m_pCurrNode = nullptr ;
m_pCurrObj = nullptr ;
return false ;
}
// recupero il nodo
m_pCurrNode = pGdbGroup->GetLastNode() ;
// recupero l'oggetto
m_pCurrObj = pGdbGroup->GetLastObj() ;
return ( m_pCurrNode != nullptr) ;
return ( m_pCurrObj != nullptr) ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToPrev( void)
{
if ( m_pGDB == nullptr || m_pCurrNode == nullptr)
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
m_pCurrNode = m_pCurrNode->GetPrev() ;
m_pCurrObj = m_pCurrObj->GetPrev() ;
return ( m_pCurrNode != nullptr) ;
return ( m_pCurrObj != nullptr) ;
}
//----------------------------------------------------------------------------
GdbType
GdbIterator::GetGdbType( void) const
{
if ( m_pGDB == nullptr || m_pCurrNode == nullptr)
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return GDB_NONE ;
// se oggetto geometrico
if ( GetGdbObj( m_pCurrNode) != nullptr)
if ( GetGdbGeo( m_pCurrObj) != nullptr)
return GDB_GEO ;
// se gruppo
else if ( GetGdbGroup( m_pCurrNode) != nullptr)
else if ( GetGdbGroup( m_pCurrObj) != nullptr)
return GDB_GROUP ;
// altro
else
@@ -153,31 +152,27 @@ GdbIterator::GetGdbType( void) const
IGeoObj*
GdbIterator::GetGeoObj( void)
{
const GdbObj* pGdbObj ;
if ( m_pGDB == nullptr || m_pCurrNode == nullptr)
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// recupero l'oggetto Gdb
if ( ( pGdbObj = GetGdbObj( m_pCurrNode)) == nullptr)
const GdbGeo* pGdbGeo ;
if ( ( pGdbGeo = GetGdbGeo( m_pCurrObj)) == nullptr)
return nullptr ;
// restituisco il suo contenuto geometrico
return pGdbObj->m_pGeoObj ;
return pGdbGeo->m_pGeoObj ;
}
//----------------------------------------------------------------------------
IGeoFrame3d*
GdbIterator::GetGeoFrame( void)
{
GdbGroup* pGdbGroup ;
if ( m_pGDB == nullptr || m_pCurrNode == nullptr)
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return nullptr ;
if ( ( pGdbGroup = GetGdbGroup( m_pCurrNode)) == nullptr)
GdbGroup* pGdbGroup ;
if ( ( pGdbGroup = GetGdbGroup( m_pCurrObj)) == nullptr)
return nullptr ;
return &( pGdbGroup->m_gfrFrame) ;
@@ -185,15 +180,13 @@ GdbIterator::GetGeoFrame( void)
//----------------------------------------------------------------------------
bool
GdbIterator::GetGroupFrame( Frame3d& frGlob)
GdbIterator::GetGroupFrame( Frame3d& frGlob) const
{
GdbGroup* pGdbGroup ;
if ( m_pGDB == nullptr || m_pCurrNode == nullptr)
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
if ( ( pGdbGroup = GetGdbGroup( m_pCurrNode)) == nullptr)
GdbGroup* pGdbGroup ;
if ( ( pGdbGroup = GetGdbGroup( m_pCurrObj)) == nullptr)
return false ;
// copio il riferimento
@@ -203,15 +196,13 @@ GdbIterator::GetGroupFrame( Frame3d& frGlob)
//----------------------------------------------------------------------------
bool
GdbIterator::GetGroupGlobFrame( Frame3d& frGlob)
GdbIterator::GetGroupGlobFrame( Frame3d& frGlob) const
{
GdbGroup* pGdbGroup ;
if ( m_pGDB == nullptr || m_pCurrNode == nullptr)
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
if ( ( pGdbGroup = GetGdbGroup( m_pCurrNode)) == nullptr)
GdbGroup* pGdbGroup ;
if ( ( pGdbGroup = GetGdbGroup( m_pCurrObj)) == nullptr)
return false ;
return pGdbGroup->GetGlobFrame( frGlob) ;
@@ -219,20 +210,44 @@ GdbIterator::GetGroupGlobFrame( Frame3d& frGlob)
//----------------------------------------------------------------------------
int
GdbIterator::GetId( void)
GdbIterator::GetId( void) const
{
if ( m_pGDB == nullptr || m_pCurrNode == nullptr)
return - 1 ;
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return GDB_ID_NULL ;
return m_pCurrNode->m_nId ;
return m_pCurrObj->m_nId ;
}
//----------------------------------------------------------------------------
int
GdbIterator::GetParentId( void)
GdbIterator::GetParentId( void) const
{
if ( m_pGDB == nullptr || m_pCurrNode == nullptr)
return - 1 ;
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return GDB_ID_NULL ;
return m_pCurrNode->GetParentId() ;
return m_pCurrObj->GetParentId() ;
}
//----------------------------------------------------------------------------
// Attributes
//----------------------------------------------------------------------------
bool
GdbIterator::SetColor( Color cCol)
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// assegno il colore
return m_pCurrObj->SetColor( cCol) ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GetColor( Color& cCol) const
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// recupero il colore
return m_pCurrObj->GetColor( cCol) ;
}