diff --git a/eeschema/dialogs/dialog_plot_schematic.cpp b/eeschema/dialogs/dialog_plot_schematic.cpp index 6e4d6771e8..6bdd03fce5 100644 --- a/eeschema/dialogs/dialog_plot_schematic.cpp +++ b/eeschema/dialogs/dialog_plot_schematic.cpp @@ -262,23 +262,30 @@ void DIALOG_PLOT_SCHEMATIC::getPlotOptions( RENDER_SETTINGS* aSettings ) EESCHEMA_SETTINGS* cfg = dynamic_cast( Kiface().KifaceSettings() ); wxASSERT( cfg ); + COLOR_SETTINGS* colors = getColorSettings(); + if( cfg ) { cfg->m_PlotPanel.background_color = m_plotBackgroundColor->GetValue(); - cfg->m_PlotPanel.color = getModeColor(); - cfg->m_PlotPanel.color_theme = getColorSettings()->GetFilename(); - cfg->m_PlotPanel.frame_reference = getPlotFrameRef(); - cfg->m_PlotPanel.format = static_cast( GetPlotFileFormat() ); - cfg->m_PlotPanel.hpgl_origin = GetPlotOriginCenter(); - cfg->m_PlotPanel.hpgl_paper_size = m_HPGLPaperSizeSelect; + cfg->m_PlotPanel.color = getModeColor(); + cfg->m_PlotPanel.color_theme = colors->GetFilename(); + cfg->m_PlotPanel.frame_reference = getPlotFrameRef(); + cfg->m_PlotPanel.format = static_cast( GetPlotFileFormat() ); + cfg->m_PlotPanel.hpgl_origin = GetPlotOriginCenter(); + cfg->m_PlotPanel.hpgl_paper_size = m_HPGLPaperSizeSelect; // HPGL Pen Size is stored in mm in config cfg->m_PlotPanel.hpgl_pen_size = m_HPGLPenSize / IU_PER_MM; } - aSettings->LoadColors( getColorSettings() ); + aSettings->LoadColors( colors ); aSettings->SetDefaultPenWidth( (int) m_defaultLineWidth.GetValue() ); + if( m_plotBackgroundColor->GetValue() ) + aSettings->SetBackgroundColor( colors->GetColor( LAYER_SCHEMATIC_BACKGROUND ) ); + else + aSettings->SetBackgroundColor( COLOR4D::UNSPECIFIED ); + // Plot directory wxString path = m_outputDirectoryName->GetValue(); path.Replace( '\\', '/' ); diff --git a/eeschema/plot_schematic_PDF.cpp b/eeschema/plot_schematic_PDF.cpp index 7c1c1ba1ad..760f42e917 100644 --- a/eeschema/plot_schematic_PDF.cpp +++ b/eeschema/plot_schematic_PDF.cpp @@ -151,7 +151,7 @@ void DIALOG_PLOT_SCHEMATIC::plotOneSheetPDF( PLOTTER* aPlotter, { if( m_plotBackgroundColor->GetValue() ) { - aPlotter->SetColor( aPlotter->RenderSettings()->GetLayerColor( LAYER_SCHEMATIC_BACKGROUND ) ); + aPlotter->SetColor( aPlotter->RenderSettings()->GetBackgroundColor() ); wxPoint end( aPlotter->PageSettings().GetWidthIU(), aPlotter->PageSettings().GetHeightIU() ); aPlotter->Rect( wxPoint( 0, 0 ), end, FILLED_SHAPE, 1.0 ); diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp index bec4e0b3f9..1317836e26 100644 --- a/eeschema/sch_sheet.cpp +++ b/eeschema/sch_sheet.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -963,11 +964,24 @@ void SCH_SHEET::Plot( PLOTTER* aPlotter ) wxString Text; wxPoint pos; - COLOR4D borderColor = GetBorderColor(); + bool override = false; - if( borderColor == COLOR4D::UNSPECIFIED ) + if( KIGFX::SCH_RENDER_SETTINGS* settings = + dynamic_cast( aPlotter->RenderSettings() ) ) + override = settings->m_OverrideItemColors; + + COLOR4D borderColor = GetBorderColor(); + COLOR4D backgroundColor = GetBackgroundColor(); + + if( override || borderColor == COLOR4D::UNSPECIFIED ) borderColor = aPlotter->RenderSettings()->GetLayerColor( LAYER_SHEET ); + if( override || backgroundColor == COLOR4D::UNSPECIFIED ) + backgroundColor = aPlotter->RenderSettings()->GetLayerColor( LAYER_SHEET_BACKGROUND ); + + aPlotter->SetColor( backgroundColor ); + aPlotter->Rect( m_pos, m_pos + m_size, FILLED_SHAPE, 1.0 ); + aPlotter->SetColor( borderColor ); int penWidth = std::max( GetPenWidth(), aPlotter->RenderSettings()->GetDefaultPenWidth() );