GAL ratsnest code cleanup

This commit is contained in:
Maciej Suminski 2016-09-05 15:28:53 +02:00
parent 0cc2c87ef8
commit 3bcbe0dfbd
3 changed files with 13 additions and 46 deletions

View File

@ -481,7 +481,7 @@ void PCB_EDIT_FRAME::SetBoard( BOARD* aBoard )
if( IsGalCanvasActive() ) if( IsGalCanvasActive() )
{ {
aBoard->GetRatsnest()->Recalculate(); aBoard->GetRatsnest()->ProcessBoard();
// reload the worksheet // reload the worksheet
SetPageSettings( aBoard->GetPageSettings() ); SetPageSettings( aBoard->GetPageSettings() );
@ -673,17 +673,8 @@ void PCB_EDIT_FRAME::Show3D_Frame( wxCommandEvent& event )
void PCB_EDIT_FRAME::UseGalCanvas( bool aEnable ) void PCB_EDIT_FRAME::UseGalCanvas( bool aEnable )
{ {
if( aEnable ) if( !aEnable )
{
BOARD* board = GetBoard();
if( board )
board->GetRatsnest()->ProcessBoard();
}
else
{
Compile_Ratsnest( NULL, true ); Compile_Ratsnest( NULL, true );
}
PCB_BASE_EDIT_FRAME::UseGalCanvas( aEnable ); PCB_BASE_EDIT_FRAME::UseGalCanvas( aEnable );

View File

@ -1044,10 +1044,8 @@ bool RN_DATA::Add( const BOARD_ITEM* aItem )
if( net < 1 ) // do not process unconnected items if( net < 1 ) // do not process unconnected items
return false; return false;
wxASSERT( (unsigned) net < m_nets.size() ); // Autoresize is necessary e.g. for module editor
/// @todo if the assert above has not been triggered for a long time, if( net >= (int) m_nets.size() )
/// then removed the autoresize code below
if( net >= (int) m_nets.size() ) // Autoresize
m_nets.resize( net + 1 ); m_nets.resize( net + 1 );
} }
else if( aItem->Type() == PCB_MODULE_T ) else if( aItem->Type() == PCB_MODULE_T )
@ -1061,10 +1059,8 @@ bool RN_DATA::Add( const BOARD_ITEM* aItem )
if( net < 1 ) // do not process unconnected items if( net < 1 ) // do not process unconnected items
continue; continue;
wxASSERT( (unsigned) net < m_nets.size() ); // Autoresize is necessary e.g. for module editor
/// @todo if the assert above has not been triggered for a long time, if( net >= (int) m_nets.size() )
/// then removed the autoresize code below
if( net >= (int) m_nets.size() ) // Autoresize
m_nets.resize( net + 1 ); m_nets.resize( net + 1 );
m_nets[net].AddItem( pad ); m_nets[net].AddItem( pad );
@ -1120,16 +1116,12 @@ bool RN_DATA::Remove( const BOARD_ITEM* aItem )
if( net < 1 ) // do not process unconnected items if( net < 1 ) // do not process unconnected items
return false; return false;
wxASSERT( (unsigned) net < m_nets.size() ); // Autoresize is necessary e.g. for module editor
/// @todo if the assert above has not been triggered for a long time, if( net >= (int) m_nets.size() )
/// then removed the autoresize code below
#ifdef NDEBUG
if( net >= (int) m_nets.size() ) // Autoresize
{ {
m_nets.resize( net + 1 ); m_nets.resize( net + 1 );
return false; // if it was resized, then surely the item had not been added before return false; // if it was resized, then surely the item had not been added before
} }
#endif
} }
else if( aItem->Type() == PCB_MODULE_T ) else if( aItem->Type() == PCB_MODULE_T )
{ {
@ -1142,16 +1134,12 @@ bool RN_DATA::Remove( const BOARD_ITEM* aItem )
if( net < 1 ) // do not process unconnected items if( net < 1 ) // do not process unconnected items
continue; continue;
wxASSERT( (unsigned) net < m_nets.size() ); // Autoresize is necessary e.g. for module editor
/// @todo if the assert above has not been triggered for a long time, if( net >= (int) m_nets.size() )
/// then removed the autoresize code below
#ifdef NDEBUG
if( net >= (int) m_nets.size() ) // Autoresize
{ {
m_nets.resize( net + 1 ); m_nets.resize( net + 1 );
return false; // if it was resized, then surely the item had not been added before return false; // if it was resized, then surely the item had not been added before
} }
#endif
m_nets[net].RemoveItem( pad ); m_nets[net].RemoveItem( pad );
} }
@ -1259,9 +1247,6 @@ void RN_DATA::Recalculate( int aNet )
{ {
unsigned int netCount = m_board->GetNetCount(); unsigned int netCount = m_board->GetNetCount();
if( netCount > m_nets.size() )
m_nets.resize( netCount );
if( aNet < 0 && netCount > 1 ) // Recompute everything if( aNet < 0 && netCount > 1 ) // Recompute everything
{ {
#ifdef PROFILE #ifdef PROFILE

View File

@ -501,8 +501,8 @@ void PCB_BASE_EDIT_FRAME::PutDataInPreviousState( PICKED_ITEMS_LIST* aList, bool
MODULE* module = static_cast<MODULE*>( item ); MODULE* module = static_cast<MODULE*>( item );
module->RunOnChildren( std::bind( &KIGFX::VIEW::Add, view, _1) ); module->RunOnChildren( std::bind( &KIGFX::VIEW::Add, view, _1) );
} }
view->Add( item );
view->Add( item );
item->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY ); item->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY );
build_item_list = true; build_item_list = true;
break; break;
@ -552,17 +552,8 @@ void PCB_BASE_EDIT_FRAME::PutDataInPreviousState( PICKED_ITEMS_LIST* aList, bool
{ {
// Compile ratsnest propagates nets from pads to tracks // Compile ratsnest propagates nets from pads to tracks
/// @todo LEGACY Compile_Ratsnest() has to be rewritten and moved to RN_DATA /// @todo LEGACY Compile_Ratsnest() has to be rewritten and moved to RN_DATA
Compile_Ratsnest( NULL, true ); if( deep_reBuild_ratsnest )
Compile_Ratsnest( NULL, false );
if( GetModel()->Type() == PCB_T )
{
/// @todo LEGACY Compile_Ratsnest() might have changed nets for tracks,
//so we need to refresh them
BOARD* board = static_cast<BOARD*>( GetModel() );
for( TRACK* track = board->m_Track; track; track = track->Next() )
track->ViewUpdate();
}
if( IsGalCanvasActive() ) if( IsGalCanvasActive() )
{ {