From 28774e41c393af8281c03a401c9758e211bb8574 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Sat, 12 Mar 2011 12:30:43 +0100 Subject: [PATCH] Gerbview: tweaking code: Now the active layer is drawn on top of other layers. This is an enhancement in stacked draw modes. --- gerbview/draw_gerber_screen.cpp | 13 ++++++++++++- gerbview/edit.cpp | 6 +++--- gerbview/gerberframe.cpp | 1 - gerbview/toolbars_gerber.cpp | 12 ++++-------- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/gerbview/draw_gerber_screen.cpp b/gerbview/draw_gerber_screen.cpp index d741148c8c..2910348719 100644 --- a/gerbview/draw_gerber_screen.cpp +++ b/gerbview/draw_gerber_screen.cpp @@ -150,8 +150,19 @@ void BOARD::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, int aDrawMode, const wxPoin bool doBlit = false; // this flag requests an image transfert to actual screen when true. - for( int layer = 0; layer < 32; layer++ ) + bool end = false; + for( int layer = 0; !end; layer++ ) { + int active_layer = ((GERBVIEW_FRAME*)m_PcbFrame)->getActiveLayer(); + if( layer == active_layer ) // active layer will be drawn after other layers + continue; + + if( layer == 32 ) // last loop: draw active layer + { + end = true; + layer = active_layer; + } + if( !GetBoard()->IsLayerVisible( layer ) ) continue; diff --git a/gerbview/edit.cpp b/gerbview/edit.cpp index 19a8e5b096..fe30c89c21 100644 --- a/gerbview/edit.cpp +++ b/gerbview/edit.cpp @@ -113,7 +113,7 @@ void GERBVIEW_FRAME::Process_Special_Functions( wxCommandEvent& event ) break; } - INSTALL_DC( dc, DrawPanel ); + INSTALL_UNBUFFERED_DC( dc, DrawPanel ); switch( id ) { @@ -139,7 +139,7 @@ void GERBVIEW_FRAME::Process_Special_Functions( wxCommandEvent& event ) case ID_TOOLBARH_GERBVIEW_SELECT_LAYER: setActiveLayer(m_SelLayerBox->GetChoice()); - DrawPanel->Refresh(); + DrawPanel->ReDraw( &dc, false ); break; case ID_TOOLBARH_GERBER_SELECT_TOOL: @@ -149,7 +149,7 @@ void GERBVIEW_FRAME::Process_Special_Functions( wxCommandEvent& event ) if( tool != gerber_layer->m_Selected_Tool ) { gerber_layer->m_Selected_Tool = tool; - DrawPanel->Refresh(); + DrawPanel->ReDraw( &dc, false ); } } break; diff --git a/gerbview/gerberframe.cpp b/gerbview/gerberframe.cpp index 96a7b55a96..35438c736b 100644 --- a/gerbview/gerberframe.cpp +++ b/gerbview/gerberframe.cpp @@ -51,7 +51,6 @@ BEGIN_EVENT_TABLE( GERBVIEW_FRAME, PCB_BASE_FRAME ) EVT_MENU( ID_EXIT, GERBVIEW_FRAME::Process_Special_Functions ) // menu Preferences - EVT_MENU( ID_CONFIG_REQ, GERBVIEW_FRAME::Process_Config ) EVT_MENU_RANGE( ID_PREFERENCES_HOTKEY_START, ID_PREFERENCES_HOTKEY_END, GERBVIEW_FRAME::Process_Config ) diff --git a/gerbview/toolbars_gerber.cpp b/gerbview/toolbars_gerber.cpp index d178c3f65e..0438fadaa4 100644 --- a/gerbview/toolbars_gerber.cpp +++ b/gerbview/toolbars_gerber.cpp @@ -66,8 +66,7 @@ void GERBVIEW_FRAME::ReCreateHToolbar( void ) for( ii = 0; ii < 32; ii++ ) { - wxString msg; - msg = _( "Layer " ); msg << ii + 1; + msg.Printf( _( "Layer %d" ), ii + 1); choices.Add( msg ); } @@ -80,14 +79,11 @@ void GERBVIEW_FRAME::ReCreateHToolbar( void ) m_DCodesList.Alloc(TOOLS_MAX_COUNT+1); m_DCodesList.Add( _( "No tool" ) ); - msg = _( "Tool " ); - wxString text; - for( ii = FIRST_DCODE; ii < TOOLS_MAX_COUNT; ii++ ) { - text = msg; - text << ii; - m_DCodesList.Add( text ); + msg = _( "Tool " ); + msg << ii; + m_DCodesList.Add( msg ); } m_DCodeSelector = new DCODE_SELECTION_BOX( m_HToolBar, ID_TOOLBARH_GERBER_SELECT_TOOL,