From d2a2dea9c40b50f6bc5f5a8430b73936fe32c32c Mon Sep 17 00:00:00 2001 From: Jon Evans Date: Sun, 26 May 2019 14:25:21 -0400 Subject: [PATCH] Eeschema: fix worksheet and background color for printing Fixes: lp:1820611 * https://bugs.launchpad.net/kicad/+bug/1820611 (cherry picked from commit 720b26d11e4431978e9070b98d0198679a2ccb3b) --- common/legacy_gal/eda_draw_frame.cpp | 4 ++-- common/legacy_wx/eda_draw_frame.cpp | 4 ++-- eeschema/dialogs/dialog_print_using_printer.cpp | 15 +++++++++++---- include/draw_frame.h | 3 ++- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/common/legacy_gal/eda_draw_frame.cpp b/common/legacy_gal/eda_draw_frame.cpp index a08aaaf5cf..2d196d788c 100644 --- a/common/legacy_gal/eda_draw_frame.cpp +++ b/common/legacy_gal/eda_draw_frame.cpp @@ -1223,7 +1223,7 @@ void DrawPageLayout( wxDC* aDC, void EDA_DRAW_FRAME::DrawWorkSheet( wxDC* aDC, BASE_SCREEN* aScreen, int aLineWidth, double aScalar, const wxString &aFilename, - const wxString &aSheetLayer ) + const wxString &aSheetLayer, COLOR4D aColor ) { if( !m_showBorderAndTitleBlock ) return; @@ -1240,7 +1240,7 @@ void EDA_DRAW_FRAME::DrawWorkSheet( wxDC* aDC, BASE_SCREEN* aScreen, int aLineWi } TITLE_BLOCK t_block = GetTitleBlock(); - COLOR4D color = COLOR4D( RED ); + COLOR4D color = ( aColor != COLOR4D::UNSPECIFIED ) ? aColor : COLOR4D( RED ); wxPoint origin = aDC->GetDeviceOrigin(); diff --git a/common/legacy_wx/eda_draw_frame.cpp b/common/legacy_wx/eda_draw_frame.cpp index 23528d11de..5746b27a89 100644 --- a/common/legacy_wx/eda_draw_frame.cpp +++ b/common/legacy_wx/eda_draw_frame.cpp @@ -2055,7 +2055,7 @@ void DrawPageLayout( wxDC* aDC, void EDA_DRAW_FRAME::DrawWorkSheet( wxDC* aDC, BASE_SCREEN* aScreen, int aLineWidth, double aScalar, const wxString &aFilename, - const wxString &aSheetLayer ) + const wxString &aSheetLayer, COLOR4D aColor ) { if( !m_showBorderAndTitleBlock ) return; @@ -2073,7 +2073,7 @@ void EDA_DRAW_FRAME::DrawWorkSheet( wxDC* aDC, BASE_SCREEN* aScreen, int aLineWi } TITLE_BLOCK t_block = GetTitleBlock(); - COLOR4D color = COLOR4D( RED ); + COLOR4D color = ( aColor != COLOR4D::UNSPECIFIED ) ? aColor : COLOR4D( RED ); wxPoint origin = aDC->GetDeviceOrigin(); diff --git a/eeschema/dialogs/dialog_print_using_printer.cpp b/eeschema/dialogs/dialog_print_using_printer.cpp index c3d9c0e1b0..7d945faf33 100644 --- a/eeschema/dialogs/dialog_print_using_printer.cpp +++ b/eeschema/dialogs/dialog_print_using_printer.cpp @@ -431,18 +431,25 @@ void SCH_PRINTOUT::DrawPage( SCH_SCREEN* aScreen ) GRSetDrawMode( dc, GR_DEFAULT_DRAWMODE ); GRResetPenAndBrush( dc ); - if( m_parent->GetPrintMonochrome() ) - GRForceBlackPen( true ); - aScreen->m_IsPrinting = true; COLOR4D bgColor = m_parent->GetDrawBgColor(); + m_parent->SetDrawBgColor( COLOR4D::WHITE ); + + GRSetDrawMode( dc, GR_COPY ); + GRSFilledRect( nullptr, dc, fitRect.GetX(), fitRect.GetY(), + fitRect.GetRight(), fitRect.GetBottom(), + 0, COLOR4D::WHITE, COLOR4D::WHITE ); + + if( m_parent->GetPrintMonochrome() ) + GRForceBlackPen( true ); aScreen->Draw( panel, dc ); if( printReference ) m_parent->DrawWorkSheet( dc, aScreen, GetDefaultLineThickness(), - IU_PER_MILS, aScreen->GetFileName() ); + IU_PER_MILS, aScreen->GetFileName(), wxEmptyString, + GetLayerColor( ( SCH_LAYER_ID )LAYER_WORKSHEET ) ); m_parent->SetDrawBgColor( bgColor ); aScreen->m_IsPrinting = false; diff --git a/include/draw_frame.h b/include/draw_frame.h index 4196c28df2..d7cdda7e4d 100644 --- a/include/draw_frame.h +++ b/include/draw_frame.h @@ -745,7 +745,8 @@ public: */ void DrawWorkSheet( wxDC* aDC, BASE_SCREEN* aScreen, int aLineWidth, double aScale, const wxString &aFilename, - const wxString &aSheetLayer = wxEmptyString ); + const wxString &aSheetLayer = wxEmptyString, + COLOR4D aColor = COLOR4D::UNSPECIFIED ); void DisplayToolMsg( const wxString& msg ); wxString GetToolMsg() { return m_toolMsg; }