Don't draw PCB bitmaps on layers not visible in high-contrast mode.
(cherry picked from commit e6cf5e5e01)
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
#include <pcb_draw_panel_gal.h>
|
||||
#include <plotters/plotter.h>
|
||||
#include <settings/color_settings.h>
|
||||
#include <pcb_painter.h>
|
||||
#include <bitmaps.h>
|
||||
#include <base_units.h>
|
||||
#include <common.h>
|
||||
@@ -42,6 +43,9 @@
|
||||
|
||||
#include <wx/mstream.h>
|
||||
|
||||
using KIGFX::PCB_PAINTER;
|
||||
using KIGFX::PCB_RENDER_SETTINGS;
|
||||
|
||||
|
||||
PCB_BITMAP::PCB_BITMAP( BOARD_ITEM* aParent, const VECTOR2I& pos, PCB_LAYER_ID aLayer ) :
|
||||
BOARD_ITEM( aParent, PCB_BITMAP_T, aLayer )
|
||||
@@ -130,11 +134,21 @@ double PCB_BITMAP::ViewGetLOD( int aLayer, KIGFX::VIEW* aView ) const
|
||||
{
|
||||
constexpr double HIDE = std::numeric_limits<double>::max();
|
||||
|
||||
PCB_PAINTER* painter = static_cast<PCB_PAINTER*>( aView->GetPainter() );
|
||||
PCB_RENDER_SETTINGS* renderSettings = painter->GetSettings();
|
||||
|
||||
// All bitmaps are drawn on LAYER_DRAW_BITMAPS, but their
|
||||
// associated board layer controls their visibility.
|
||||
if( !GetBoard()->IsLayerVisible( m_layer ) )
|
||||
return HIDE;
|
||||
|
||||
if( renderSettings->GetHighContrast()
|
||||
&& renderSettings->m_ContrastModeDisplay == HIGH_CONTRAST_MODE::HIDDEN
|
||||
&& !renderSettings->GetLayerIsHighContrast( m_layer ) )
|
||||
{
|
||||
return HIDE;
|
||||
}
|
||||
|
||||
return aView->IsLayerVisible( LAYER_DRAW_BITMAPS ) ? 0.0 : HIDE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user