From ab2333bcf0f18b1e488cdb0451f1f7ae1fd8a37d Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Fri, 19 Jan 2018 19:26:48 +0100 Subject: [PATCH] Footprint Editor, GAL mode: make option tool "show footprint in outline mode" working. Fix also option tool "show footprint texts in outline mode" code, but because there is no code to show texts in outline mode in GAL canvas, this option still works only in legacy canvas --- pcbnew/tools/module_editor_tools.cpp | 41 +++++++++++----------------- pcbnew/tools/pcb_actions.cpp | 2 +- 2 files changed, 17 insertions(+), 26 deletions(-) diff --git a/pcbnew/tools/module_editor_tools.cpp b/pcbnew/tools/module_editor_tools.cpp index f90e292c83..50b2477b03 100644 --- a/pcbnew/tools/module_editor_tools.cpp +++ b/pcbnew/tools/module_editor_tools.cpp @@ -274,31 +274,26 @@ int MODULE_EDITOR_TOOLS::EnumeratePads( const TOOL_EVENT& aEvent ) int MODULE_EDITOR_TOOLS::ModuleTextOutlines( const TOOL_EVENT& aEvent ) { - KIGFX::VIEW* view = getView(); - KIGFX::PCB_RENDER_SETTINGS* settings = - static_cast( view->GetPainter()->GetSettings() ); + KIGFX::PCB_VIEW* pcbview = view(); - const LAYER_NUM layers[] = { LAYER_MOD_TEXT_BK, - LAYER_MOD_TEXT_FR, - LAYER_MOD_TEXT_INVISIBLE, - LAYER_MOD_REFERENCES, - LAYER_MOD_VALUES }; + auto displ_opts = (PCB_DISPLAY_OPTIONS*)frame()->GetDisplayOptions(); - bool enable = !settings->GetSketchMode( layers[0] ); + // Switch the render mode: + bool enable = !displ_opts->m_DisplayModTextFill == SKETCH; + displ_opts->m_DisplayModTextFill = enable ? SKETCH : FILLED; - for( LAYER_NUM layer : layers ) - settings->SetSketchMode( layer, enable ); + pcbview->UpdateDisplayOptions( displ_opts ); for( auto module : board()->Modules() ) { for( auto item : module->GraphicalItems() ) { if( item->Type() == PCB_MODULE_TEXT_T ) - view->Update( item, KIGFX::GEOMETRY ); + pcbview->Update( item, KIGFX::GEOMETRY ); } - view->Update( &module->Reference(), KIGFX::GEOMETRY ); - view->Update( &module->Value(), KIGFX::GEOMETRY ); + pcbview->Update( &module->Reference(), KIGFX::GEOMETRY ); + pcbview->Update( &module->Value(), KIGFX::GEOMETRY ); } frame()->GetGalCanvas()->Refresh(); @@ -309,25 +304,21 @@ int MODULE_EDITOR_TOOLS::ModuleTextOutlines( const TOOL_EVENT& aEvent ) int MODULE_EDITOR_TOOLS::ModuleEdgeOutlines( const TOOL_EVENT& aEvent ) { - KIGFX::VIEW* view = getView(); - KIGFX::PCB_RENDER_SETTINGS* settings = - static_cast( view->GetPainter()->GetSettings() ); + KIGFX::PCB_VIEW* pcbview = view(); - const PCB_LAYER_ID layers[] = { F_Adhes, B_Adhes, F_Paste, B_Paste, - F_SilkS, B_SilkS, F_Mask, B_Mask, - Dwgs_User, Cmts_User, Eco1_User, Eco2_User, Edge_Cuts }; + auto displ_opts = (PCB_DISPLAY_OPTIONS*)frame()->GetDisplayOptions(); + // switch the render mode: + bool enable_outline_mode = !displ_opts->m_DisplayModEdgeFill == SKETCH; + displ_opts->m_DisplayModEdgeFill = enable_outline_mode ? SKETCH : FILLED; - bool enable = !settings->GetSketchMode( layers[0] ); - - for( LAYER_NUM layer : layers ) - settings->SetSketchMode( layer, enable ); + pcbview->UpdateDisplayOptions( displ_opts ); for( auto module : board()->Modules() ) { for( auto item : module->GraphicalItems() ) { if( item->Type() == PCB_MODULE_EDGE_T ) - view->Update( item, KIGFX::GEOMETRY ); + pcbview->Update( item, KIGFX::GEOMETRY ); } } diff --git a/pcbnew/tools/pcb_actions.cpp b/pcbnew/tools/pcb_actions.cpp index 712c6c0d2b..bc10bc298b 100644 --- a/pcbnew/tools/pcb_actions.cpp +++ b/pcbnew/tools/pcb_actions.cpp @@ -136,7 +136,7 @@ OPT PCB_ACTIONS::TranslateLegacyId( int aId ) case ID_TB_OPTIONS_SHOW_MODULE_EDGE_SKETCH: return PCB_ACTIONS::moduleEdgeOutlines.MakeEvent(); - case ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH: + case ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH:; return PCB_ACTIONS::moduleTextOutlines.MakeEvent(); case ID_TB_OPTIONS_SHOW_HIGH_CONTRAST_MODE: