From b09a106880ae448a90e807832f753468f85a3dab Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Thu, 17 Nov 2022 15:42:12 +0000 Subject: [PATCH] Split gerbview diff and xor into two separate view modes. Fixes https://gitlab.com/kicad/code/kicad/issues/10122 --- common/bitmap_info.cpp | 2 + gerbview/files.cpp | 19 +-- gerbview/gbr_display_options.h | 2 + gerbview/gerbview_frame.cpp | 18 ++- gerbview/gerbview_frame.h | 6 +- gerbview/gerbview_painter.cpp | 13 +- gerbview/menubar.cpp | 1 + gerbview/toolbars_gerber.cpp | 2 + gerbview/tools/gerbview_actions.cpp | 9 +- gerbview/tools/gerbview_actions.h | 3 +- gerbview/tools/gerbview_control.cpp | 19 ++- resources/bitmaps_png/CMakeLists.txt | 1 + .../bitmaps_png/png/gbr_select_mode1_24.png | Bin 0 -> 545 bytes .../png/gbr_select_mode1_dark_24.png | Bin 0 -> 527 bytes .../bitmaps_png/png/gbr_select_mode2_24.png | Bin 603 -> 564 bytes .../png/gbr_select_mode2_dark_24.png | Bin 604 -> 593 bytes .../sources/dark/gbr_select_mode1.svg | 111 ++++++++++++++++++ .../sources/dark/gbr_select_mode2.svg | 41 ++++--- .../sources/light/gbr_select_mode1.svg | 111 ++++++++++++++++++ .../sources/light/gbr_select_mode2.svg | 41 ++++--- 20 files changed, 335 insertions(+), 64 deletions(-) create mode 100644 resources/bitmaps_png/png/gbr_select_mode1_24.png create mode 100644 resources/bitmaps_png/png/gbr_select_mode1_dark_24.png create mode 100644 resources/bitmaps_png/sources/dark/gbr_select_mode1.svg create mode 100644 resources/bitmaps_png/sources/light/gbr_select_mode1.svg diff --git a/common/bitmap_info.cpp b/common/bitmap_info.cpp index eb9825d2f0..bc98636835 100644 --- a/common/bitmap_info.cpp +++ b/common/bitmap_info.cpp @@ -303,6 +303,7 @@ void BuildBitmapInfo( std::unordered_map>& aBi aBitmapInfoCache[BITMAPS::find_replace].emplace_back( BITMAPS::find_replace, wxT( "find_replace_24.png" ), 24, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::flag].emplace_back( BITMAPS::flag, wxT( "flag_24.png" ), 24, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::flip_board].emplace_back( BITMAPS::flip_board, wxT( "flip_board_24.png" ), 24, wxT( "light" ) ); + aBitmapInfoCache[BITMAPS::gbr_select_mode1].emplace_back( BITMAPS::gbr_select_mode1, wxT( "gbr_select_mode1_24.png" ), 24, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::gbr_select_mode2].emplace_back( BITMAPS::gbr_select_mode2, wxT( "gbr_select_mode2_24.png" ), 24, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::gerbview_show_negative_objects].emplace_back( BITMAPS::gerbview_show_negative_objects, wxT( "gerbview_show_negative_objects_24.png" ), 24, wxT( "light" ) ); aBitmapInfoCache[BITMAPS::general_deletions].emplace_back( BITMAPS::general_deletions, wxT( "general_deletions_24.png" ), 24, wxT( "light" ) ); @@ -684,6 +685,7 @@ void BuildBitmapInfo( std::unordered_map>& aBi aBitmapInfoCache[BITMAPS::find_replace].emplace_back( BITMAPS::find_replace, wxT( "find_replace_dark_24.png" ), 24, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::flag].emplace_back( BITMAPS::flag, wxT( "flag_dark_24.png" ), 24, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::flip_board].emplace_back( BITMAPS::flip_board, wxT( "flip_board_dark_24.png" ), 24, wxT( "dark" ) ); + aBitmapInfoCache[BITMAPS::gbr_select_mode1].emplace_back( BITMAPS::gbr_select_mode1, wxT( "gbr_select_mode1_dark_24.png" ), 24, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::gbr_select_mode2].emplace_back( BITMAPS::gbr_select_mode2, wxT( "gbr_select_mode2_dark_24.png" ), 24, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::gerbview_show_negative_objects].emplace_back( BITMAPS::gerbview_show_negative_objects, wxT( "gerbview_show_negative_objects_dark_24.png" ), 24, wxT( "dark" ) ); aBitmapInfoCache[BITMAPS::general_deletions].emplace_back( BITMAPS::general_deletions, wxT( "general_deletions_dark_24.png" ), 24, wxT( "dark" ) ); diff --git a/gerbview/files.cpp b/gerbview/files.cpp index bead1e41b4..6592fe37da 100644 --- a/gerbview/files.cpp +++ b/gerbview/files.cpp @@ -428,7 +428,7 @@ bool GERBVIEW_FRAME::unarchiveFiles( const wxString& aFullFileName, REPORTER* aR // Extract the path of aFullFileName. We use it to store temporary files wxFileName fn( aFullFileName ); - wxString unzipDir = fn.GetPath(); + wxString unzipDir = fn.GetPath(); wxFFileInputStream zipFile( aFullFileName ); @@ -455,16 +455,17 @@ bool GERBVIEW_FRAME::unarchiveFiles( const wxString& aFullFileName, REPORTER* aR wxString unzipped_tempfile = temp_fn.GetFullPath(); - bool success = true; + bool success = true; wxZipInputStream zipArchive( zipFile ); - wxZipEntry* entry; - bool reported_no_more_layer = false; + wxZipEntry* entry; + bool reported_no_more_layer = false; + KIGFX::VIEW* view = GetCanvas()->GetView(); while( ( entry = zipArchive.GetNextEntry() ) ) { - wxString fname = entry->GetName(); + wxString fname = entry->GetName(); wxFileName uzfn = fname; - wxString curr_ext = uzfn.GetExt().Lower(); + wxString curr_ext = uzfn.GetExt().Lower(); // The archive contains Gerber and/or Excellon drill files. Use the right loader. // However it can contain a few other files (reports, pdf files...), @@ -560,8 +561,10 @@ bool GERBVIEW_FRAME::unarchiveFiles( const wxString& aFullFileName, REPORTER* aR read_ok = Read_GERBER_File( unzipped_tempfile ); if( read_ok ) - GetCanvas()->GetView()->SetLayerHasNegatives( - GERBER_DRAW_LAYER( layer ), GetGbrImage( layer )->HasNegativeItems() ); + { + view->SetLayerHasNegatives( GERBER_DRAW_LAYER( layer ), + GetGbrImage( layer )->HasNegativeItems() ); + } } // Select the first added layer by default when done loading diff --git a/gerbview/gbr_display_options.h b/gerbview/gbr_display_options.h index 5c492caab5..8cabe00a67 100644 --- a/gerbview/gbr_display_options.h +++ b/gerbview/gbr_display_options.h @@ -41,6 +41,7 @@ public: bool m_DisplayPageLimits; bool m_IsPrinting; ///< true when printing a page, false when drawing on screen bool m_DiffMode; ///< Display layers in diff mode + bool m_XORMode; ///< Display layers in exclusive-or mode bool m_HighContrastMode; ///< High contrast mode (dim un-highlighted objects) bool m_FlipGerberView; ///< Display as a mirror image COLOR4D m_NegativeDrawColor; ///< The color used to draw negative objects, usually the @@ -57,6 +58,7 @@ public: m_IsPrinting = false; m_NegativeDrawColor = COLOR4D( DARKGRAY ); m_DiffMode = false; + m_XORMode = false; m_HighContrastMode = false; m_FlipGerberView = false; } diff --git a/gerbview/gerbview_frame.cpp b/gerbview/gerbview_frame.cpp index 9418e3416a..89b4f9d7df 100644 --- a/gerbview/gerbview_frame.cpp +++ b/gerbview/gerbview_frame.cpp @@ -559,7 +559,7 @@ void GERBVIEW_FRAME::RemapLayers( std::unordered_map remapping ) } -void GERBVIEW_FRAME::UpdateDiffLayers() +void GERBVIEW_FRAME::UpdateXORLayers() { auto target = GetCanvas()->GetBackend() == GERBVIEW_DRAW_PANEL_GAL::GAL_TYPE_OPENGL ? KIGFX::TARGET_CACHED @@ -570,7 +570,7 @@ void GERBVIEW_FRAME::UpdateDiffLayers() for( int i = 0; i < GERBER_DRAWLAYERS_COUNT; i++ ) { - view->SetLayerDiff( GERBER_DRAW_LAYER( i ), gvconfig()->m_Display.m_DiffMode ); + view->SetLayerDiff( GERBER_DRAW_LAYER( i ), gvconfig()->m_Display.m_XORMode ); // Caching doesn't work with layered rendering of diff'd layers if( gvconfig()->m_Display.m_DiffMode ) @@ -799,8 +799,8 @@ void GERBVIEW_FRAME::SetActiveLayer( int aLayer, bool doLayerWidgetUpdate ) { m_activeLayer = aLayer; - if( gvconfig()->m_Display.m_DiffMode ) - UpdateDiffLayers(); + if( gvconfig()->m_Display.m_XORMode ) + UpdateXORLayers(); if( doLayerWidgetUpdate ) m_LayersManager->SelectLayer( aLayer ); @@ -1079,6 +1079,12 @@ void GERBVIEW_FRAME::setupUIConditions() return gvconfig()->m_Display.m_DiffMode; }; + auto xorModeCond = + [this] ( const SELECTION& ) + { + return gvconfig()->m_Display.m_XORMode; + }; + auto highContrastModeCond = [this] ( const SELECTION& ) { @@ -1103,6 +1109,7 @@ void GERBVIEW_FRAME::setupUIConditions() mgr->SetConditions( GERBVIEW_ACTIONS::negativeObjectDisplay, CHECK( negativeObjectsCond ) ); mgr->SetConditions( GERBVIEW_ACTIONS::dcodeDisplay, CHECK( dcodeCond ) ); mgr->SetConditions( GERBVIEW_ACTIONS::toggleDiffMode, CHECK( diffModeCond ) ); + mgr->SetConditions( GERBVIEW_ACTIONS::toggleXORMode, CHECK( xorModeCond ) ); mgr->SetConditions( GERBVIEW_ACTIONS::flipGerberView, CHECK( flipGerberCond ) ); mgr->SetConditions( ACTIONS::highContrastMode, CHECK( highContrastModeCond ) ); mgr->SetConditions( GERBVIEW_ACTIONS::toggleLayerManager, CHECK( layersManagerShownCondition ) ); @@ -1118,8 +1125,7 @@ void GERBVIEW_FRAME::CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVars SetPageSettings( PAGE_INFO( gvconfig()->m_Appearance.page_type ) ); - if( gvconfig()->m_Display.m_DiffMode ) - UpdateDiffLayers(); + UpdateXORLayers(); SetElementVisibility( LAYER_DCODES, gvconfig()->m_Appearance.show_dcodes ); diff --git a/gerbview/gerbview_frame.h b/gerbview/gerbview_frame.h index 290a80cb08..016fb23fc2 100644 --- a/gerbview/gerbview_frame.h +++ b/gerbview/gerbview_frame.h @@ -361,10 +361,10 @@ public: void RemapLayers( std::unordered_map remapping ); /** - * Update each layers' differential option. Needed when diff mode changes or the active layer - * changes (due to changing rendering order) which matters for diff mode but not otherwise. + * Update each layers' differential option. Needed when xor mode changes or the active layer + * changes (due to changing rendering order) which matters for xor mode but not otherwise. */ - void UpdateDiffLayers(); + void UpdateXORLayers(); /* * Do nothing in GerbView. diff --git a/gerbview/gerbview_painter.cpp b/gerbview/gerbview_painter.cpp index 56f3f90d0b..da8bf5bda3 100644 --- a/gerbview/gerbview_painter.cpp +++ b/gerbview/gerbview_painter.cpp @@ -60,10 +60,15 @@ void GERBVIEW_RENDER_SETTINGS::LoadColors( const COLOR_SETTINGS* aSettings ) for( int i = GERBVIEW_LAYER_ID_START; i < GERBVIEW_LAYER_ID_START + GERBER_DRAWLAYERS_COUNT; i++ ) { - m_layerColors[i] = aSettings->GetColor( i ); - m_layerColorsHi[i] = m_layerColors[i].Brightened( 0.5 ); - m_layerColorsSel[i] = m_layerColors[i].Brightened( 0.8 ); - m_layerColorsDark[i] = m_layerColors[i].Darkened( 0.25 ); + COLOR4D baseColor = aSettings->GetColor( i ); + + if( gvconfig()->m_Display.m_DiffMode ) + baseColor.a = 0.75; + + m_layerColors[i] = baseColor; + m_layerColorsHi[i] = baseColor.Brightened( 0.5 ); + m_layerColorsSel[i] = baseColor.Brightened( 0.8 ); + m_layerColorsDark[i] = baseColor.Darkened( 0.25 ); } // Draw layers specific to Gerbview: diff --git a/gerbview/menubar.cpp b/gerbview/menubar.cpp index 7af26ef4a9..26e2cc6ae6 100644 --- a/gerbview/menubar.cpp +++ b/gerbview/menubar.cpp @@ -200,6 +200,7 @@ void GERBVIEW_FRAME::ReCreateMenuBar() viewMenu->Add( GERBVIEW_ACTIONS::dcodeDisplay, ACTION_MENU::CHECK ); viewMenu->Add( GERBVIEW_ACTIONS::negativeObjectDisplay, ACTION_MENU::CHECK ); viewMenu->Add( GERBVIEW_ACTIONS::toggleDiffMode, ACTION_MENU::CHECK ); + viewMenu->Add( GERBVIEW_ACTIONS::toggleXORMode, ACTION_MENU::CHECK ); viewMenu->Add( ACTIONS::highContrastMode, ACTION_MENU::CHECK ); viewMenu->Add( GERBVIEW_ACTIONS::flipGerberView, ACTION_MENU::CHECK ); diff --git a/gerbview/toolbars_gerber.cpp b/gerbview/toolbars_gerber.cpp index e3c0d8de71..2f8511624e 100644 --- a/gerbview/toolbars_gerber.cpp +++ b/gerbview/toolbars_gerber.cpp @@ -255,7 +255,9 @@ void GERBVIEW_FRAME::ReCreateOptToolbar() m_optionsToolBar->Add( GERBVIEW_ACTIONS::polygonsDisplayOutlines, ACTION_TOOLBAR::TOGGLE ); m_optionsToolBar->Add( GERBVIEW_ACTIONS::negativeObjectDisplay, ACTION_TOOLBAR::TOGGLE ); m_optionsToolBar->Add( GERBVIEW_ACTIONS::dcodeDisplay, ACTION_TOOLBAR::TOGGLE ); + m_optionsToolBar->AddScaledSeparator( this ); m_optionsToolBar->Add( GERBVIEW_ACTIONS::toggleDiffMode, ACTION_TOOLBAR::TOGGLE ); + m_optionsToolBar->Add( GERBVIEW_ACTIONS::toggleXORMode, ACTION_TOOLBAR::TOGGLE ); m_optionsToolBar->Add( ACTIONS::highContrastMode, ACTION_TOOLBAR::TOGGLE ); m_optionsToolBar->Add( GERBVIEW_ACTIONS::flipGerberView, ACTION_TOOLBAR::TOGGLE ); diff --git a/gerbview/tools/gerbview_actions.cpp b/gerbview/tools/gerbview_actions.cpp index 0d46be4d3a..e5fadf923e 100644 --- a/gerbview/tools/gerbview_actions.cpp +++ b/gerbview/tools/gerbview_actions.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2017 Jon Evans - * Copyright (C) 2017-2019 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2017-2022 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -188,7 +188,12 @@ TOOL_ACTION GERBVIEW_ACTIONS::dcodeDisplay( "gerbview.Control.dcodeDisplay", TOOL_ACTION GERBVIEW_ACTIONS::toggleDiffMode( "gerbview.Control.toggleDiffMode", AS_GLOBAL, 0, "", - _( "Show in Differential Mode" ), _( "Show layers in diff (compare) mode" ), + _( "Show in Differential Mode" ), _( "Show layers in differential compare mode" ), + BITMAPS::gbr_select_mode1 ); + +TOOL_ACTION GERBVIEW_ACTIONS::toggleXORMode( "gerbview.Control.toggleXORMode", + AS_GLOBAL, 0, "", + _( "Show in XOR Mode" ), _( "Show layers in exclusive-or compare mode" ), BITMAPS::gbr_select_mode2 ); TOOL_ACTION GERBVIEW_ACTIONS::flipGerberView( "gerbview.Control.flipGerberView", diff --git a/gerbview/tools/gerbview_actions.h b/gerbview/tools/gerbview_actions.h index 6d1a17b12d..20c74d7aef 100644 --- a/gerbview/tools/gerbview_actions.h +++ b/gerbview/tools/gerbview_actions.h @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2017 Jon Evans - * Copyright (C) 2017-2021 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2017-2022 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -64,6 +64,7 @@ public: static TOOL_ACTION negativeObjectDisplay; static TOOL_ACTION dcodeDisplay; static TOOL_ACTION toggleDiffMode; + static TOOL_ACTION toggleXORMode; static TOOL_ACTION flipGerberView; // Layer control diff --git a/gerbview/tools/gerbview_control.cpp b/gerbview/tools/gerbview_control.cpp index 63231c49ca..1d001c2e13 100644 --- a/gerbview/tools/gerbview_control.cpp +++ b/gerbview/tools/gerbview_control.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2017 Jon Evans - * Copyright (C) 2017-2021 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2017-2022 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -307,7 +307,21 @@ int GERBVIEW_CONTROL::DisplayControl( const TOOL_EVENT& aEvent ) else if( aEvent.IsAction( &GERBVIEW_ACTIONS::toggleDiffMode ) ) { cfg->m_Display.m_DiffMode = !cfg->m_Display.m_DiffMode; - m_frame->UpdateDiffLayers(); + + if( cfg->m_Display.m_DiffMode && cfg->m_Display.m_XORMode ) + { + cfg->m_Display.m_XORMode = false; + m_frame->UpdateXORLayers(); + } + } + else if( aEvent.IsAction( &GERBVIEW_ACTIONS::toggleXORMode ) ) + { + cfg->m_Display.m_XORMode = !cfg->m_Display.m_XORMode; + + if( cfg->m_Display.m_XORMode && cfg->m_Display.m_DiffMode ) + cfg->m_Display.m_DiffMode = false; + + m_frame->UpdateXORLayers(); } else if( aEvent.IsAction( &GERBVIEW_ACTIONS::flipGerberView ) ) { @@ -533,6 +547,7 @@ void GERBVIEW_CONTROL::setTransitions() Go( &GERBVIEW_CONTROL::DisplayControl, ACTIONS::highContrastMode.MakeEvent() ); Go( &GERBVIEW_CONTROL::DisplayControl, ACTIONS::highContrastModeCycle.MakeEvent() ); Go( &GERBVIEW_CONTROL::DisplayControl, GERBVIEW_ACTIONS::toggleDiffMode.MakeEvent() ); + Go( &GERBVIEW_CONTROL::DisplayControl, GERBVIEW_ACTIONS::toggleXORMode.MakeEvent() ); Go( &GERBVIEW_CONTROL::DisplayControl, GERBVIEW_ACTIONS::flipGerberView.MakeEvent() ); Go( &GERBVIEW_CONTROL::UpdateMessagePanel, EVENTS::SelectedEvent ); diff --git a/resources/bitmaps_png/CMakeLists.txt b/resources/bitmaps_png/CMakeLists.txt index e06374a536..bee4ec7693 100644 --- a/resources/bitmaps_png/CMakeLists.txt +++ b/resources/bitmaps_png/CMakeLists.txt @@ -280,6 +280,7 @@ set( BMAPS_MID find_replace flag flip_board + gbr_select_mode1 gbr_select_mode2 gerbview_show_negative_objects general_deletions diff --git a/resources/bitmaps_png/png/gbr_select_mode1_24.png b/resources/bitmaps_png/png/gbr_select_mode1_24.png new file mode 100644 index 0000000000000000000000000000000000000000..c37769d6ac93cfbd3f6e9d8d20927c7d436d480c GIT binary patch literal 545 zcmV++0^a?JP)({Lc3mDqM4WO!TS zYSIkfqv$MtP~BlVE`#@LI&GVg+Wi=0a9aZe6K}YNvl`IrOK}_Sylr|~?-Q`WAlCzF zqJ!vwioN9lHHUS$4Bw~awtY(0#OJVJfzd<-(LQxYe_)tz#%1^(ZTB6M@}|BGG!wLFezk&k?FuZH=8NN&3d)I`bneUK;r5zgf zZTKuWtZO59P}QLypW!9TQ9LT}bjw_OPE4j!4T|N(=;oFV;L56>Z8GsV8 zXcnRPV4s?!{(d#bRd@|I3*OgVzThi7jIo71wm1M9?tDPiaU(v%w^)WB?5bMy9ocm# zDF=y<5=5Zf2}~^s2UMLBap9Rx8P(yn8{daCZvP+BuI`k&>?<}=y+n<00000NkvXXu0mjf{OtUK literal 0 HcmV?d00001 diff --git a/resources/bitmaps_png/png/gbr_select_mode1_dark_24.png b/resources/bitmaps_png/png/gbr_select_mode1_dark_24.png new file mode 100644 index 0000000000000000000000000000000000000000..d0baace62f018060ddf46db474f2bdc12f2458b4 GIT binary patch literal 527 zcmV+q0`UEbP)^)+u+V&Rjr-;j!J^Km*$G8NRJ;%6*XGBwO$$rAqvB zO6_!927gSg+qSV|>f@<1fQCac(T0CYtyKG%Qo9tN;TyW9Jpmg$6KVmmKKPVWYxyaq zZXGVeKcv-fU(+-FIV@O6vH)nXKhTiPxD0=r-mqgu?~K>ThEAC=p9l*Y8kjyO*QMi& z%(od0JC^s)d;<@2Bunr{^8JJcj?XDIwfGEwmDRXw>4aJDP=aM9nnlf*%*-sdep{2zq#R~-2dV`JkZV}kj>ap!AeryZ|f1Mz=yFkZu5w!g9g zD*8yS;dm`@+5XxAsNgdthU2uramQ@Af;U zlWzD$JvZ+CY7XuDpa#JVg=)41b?MtPc*T*jpY@b6AHQ z9LN^zQ+M7z$1?6YvcWKm2pYam-O(Qy=9^)L!GZ%8G<(#Ycg(bodkr@fjMIp)fT4kD zzp6tzw%`D>RUNnP(Qw%@!#d#&++bpTuwTJ}0~p@5s0KSBf&_^7Xu9s2Zj=h3-AXQUK$p)$HWU=jupj}^Aj7BH zCVhq*$Z&1}YR8OUi> ekb-G$0TlpS4^QlO=^9Z00000vj4r`>-0W<8lUUxLv~k2@dJRTab{Dz!4b~vN7E!@X1z9 zr(M_#-=yPwVS$O~pGkI!V8e;FATlyiBqAvIY>`L6-974#+kdeczCqXJGQ{vCxZy-u z5E>e)0yO+ly`#_deOL?z;q|&MSHXtcC!-in(1M_#AnWj;;J5wOUgr%;k`-gphiuz$e8!GQ(n>IF%DfiE`ey6nMb@P0LiZ7U4ip3XD#{WH-a6|dna7Wn!3 z@d6FspW_|yaF>ST4xEM?x;+OOK7k0s;T8Z>iZn2#+^lf*yR~24X&Y9m+f}mmvM#nK6S?(OAX!M&3`cuAjxpB1);$qk3&L2{?iKM z%?AMi0Rn;H(U+$cr5@%x&+YhdsZ3k z6d8`y0$}kV9~d6_)HHX(Z%Pfvupm4}N_1knVLB!3u5L_t(Y$7A^a|33rCxS@gNOKNS=r$aUQo$`2p4bbqKxnNAR;h$0~)qsX9{fISKK!!JLJ6AgO34hq&TBrrY`ruPit>veb zx^>8ge?$tBk0}k?&y-Dj4l#J%e>h!3gatr@{ecE^N0E{WaXx zKtuOIg9pD48XA~BC)cH;M<6WhLF^CdjXO?OOn=}mi%R?hqkH>eiP^~e?>NAj1XTK!L{wX2XL5j`os%52$pq-xezjaMkSZD1X6#o-9#ls0EAPq;aDwj-0><5DDjILhGSUZyz_N5Q1Cak3`em5$jJcWztl7w zZh_Aq9j`iQg&D|dRgi#bZUF#l_d^1EmS_n80000%;&Y~pSsQV^k8$-n0@3V2i|8ec+RDbJ(H=y?f>$<)RQrxJx zl&!5_z5mV>zvy3X<4YJPJwfLIgwP(CVqcWVq}(_^I&X%rUm8od@whi=;En?Tfc + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/bitmaps_png/sources/dark/gbr_select_mode2.svg b/resources/bitmaps_png/sources/dark/gbr_select_mode2.svg index 8838c0b5fb..1b43dfdae5 100644 --- a/resources/bitmaps_png/sources/dark/gbr_select_mode2.svg +++ b/resources/bitmaps_png/sources/dark/gbr_select_mode2.svg @@ -1,18 +1,18 @@ + inkscape:version="1.2.1 (9c6d41e, 2022-07-14)" + sodipodi:docname="gbr_select_mode2.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> @@ -21,7 +21,7 @@ image/svg+xml - + @@ -53,20 +53,23 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="3840" - inkscape:window-height="2099" + inkscape:window-width="1510" + inkscape:window-height="750" id="namedview38" showgrid="true" inkscape:snap-to-guides="false" inkscape:snap-grids="true" inkscape:zoom="16.236259" - inkscape:cx="18.442399" - inkscape:cy="18.96033" + inkscape:cx="22.66532" + inkscape:cy="15.397636" inkscape:window-x="0" - inkscape:window-y="37" - inkscape:window-maximized="1" + inkscape:window-y="38" + inkscape:window-maximized="0" inkscape:current-layer="svg2" - inkscape:document-rotation="0"> + inkscape:document-rotation="0" + inkscape:showpageshadow="2" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1"> + style="fill:#42B8EB;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/bitmaps_png/sources/light/gbr_select_mode2.svg b/resources/bitmaps_png/sources/light/gbr_select_mode2.svg index 52648c1562..ae2019c168 100644 --- a/resources/bitmaps_png/sources/light/gbr_select_mode2.svg +++ b/resources/bitmaps_png/sources/light/gbr_select_mode2.svg @@ -1,18 +1,18 @@ + inkscape:version="1.2.1 (9c6d41e, 2022-07-14)" + sodipodi:docname="gbr_select_mode2.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> @@ -21,7 +21,7 @@ image/svg+xml - + @@ -53,20 +53,23 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="3840" - inkscape:window-height="2099" + inkscape:window-width="1309" + inkscape:window-height="866" id="namedview38" showgrid="true" inkscape:snap-to-guides="false" inkscape:snap-grids="true" inkscape:zoom="16.236259" - inkscape:cx="18.442399" - inkscape:cy="18.96033" + inkscape:cx="12.164132" + inkscape:cy="-2.0324879" inkscape:window-x="0" - inkscape:window-y="37" - inkscape:window-maximized="1" + inkscape:window-y="38" + inkscape:window-maximized="0" inkscape:current-layer="svg2" - inkscape:document-rotation="0"> + inkscape:document-rotation="0" + inkscape:showpageshadow="2" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1"> + style="fill:#1a81c4;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />