From ec3109472a6a5556587f58132606156fb56e2b43 Mon Sep 17 00:00:00 2001 From: Ian Roth Date: Wed, 21 Sep 2016 09:04:05 +0200 Subject: [PATCH] Correct page numbers on pcbnew multipage print --- gerbview/printout_control.cpp | 4 ++-- pcbnew/printout_controler.cpp | 15 +++++++++++++-- pcbnew/printout_controler.h | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/gerbview/printout_control.cpp b/gerbview/printout_control.cpp index cc0da57224..0773f7e6e4 100644 --- a/gerbview/printout_control.cpp +++ b/gerbview/printout_control.cpp @@ -77,7 +77,7 @@ bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage ) // in gerbview, draw layers are always printed on separate pages // because handling negative objects when using only one page is tricky m_PrintParams.m_Flags = aPage; - DrawPage( wxEmptyString ); + DrawPage(); return true; } @@ -99,7 +99,7 @@ void BOARD_PRINTOUT_CONTROLLER::GetPageInfo( int* minPage, int* maxPage, } -void BOARD_PRINTOUT_CONTROLLER::DrawPage( wxString layer = wxEmptyString ) +void BOARD_PRINTOUT_CONTROLLER::DrawPage( wxString layer, int aPageNum, int aPageCount) { wxPoint offset; double userscale; diff --git a/pcbnew/printout_controler.cpp b/pcbnew/printout_controler.cpp index aec6957303..a1d0bd4878 100644 --- a/pcbnew/printout_controler.cpp +++ b/pcbnew/printout_controler.cpp @@ -84,6 +84,7 @@ BOARD_PRINTOUT_CONTROLLER::BOARD_PRINTOUT_CONTROLLER( const PRINT_PARAMETERS& aP bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage ) { LSET lset = m_PrintParams.m_PrintMaskLayer; + int aPageCount = lset.count(); wxString layer; LAYER_ID extractLayer; @@ -113,7 +114,7 @@ bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage ) if( m_PrintParams.m_Flags == 1 ) m_PrintParams.m_PrintMaskLayer.set( Edge_Cuts ); - DrawPage( layer ); + DrawPage( layer, aPage, aPageCount ); m_PrintParams.m_PrintMaskLayer = lset; @@ -137,7 +138,7 @@ void BOARD_PRINTOUT_CONTROLLER::GetPageInfo( int* minPage, int* maxPage, } -void BOARD_PRINTOUT_CONTROLLER::DrawPage( wxString layer = wxEmptyString ) +void BOARD_PRINTOUT_CONTROLLER::DrawPage( wxString layer, int aPageNum, int aPageCount ) { wxPoint offset; double userscale; @@ -147,6 +148,8 @@ void BOARD_PRINTOUT_CONTROLLER::DrawPage( wxString layer = wxEmptyString ) BASE_SCREEN* screen = m_Parent->GetScreen(); bool printMirror = m_PrintParams.m_PrintMirror; wxSize pageSizeIU = m_Parent->GetPageSizeIU(); + int tempScreenNumber; + int tempNumberOfScreens; wxBusyCursor dummy; @@ -286,8 +289,16 @@ void BOARD_PRINTOUT_CONTROLLER::DrawPage( wxString layer = wxEmptyString ) GRForceBlackPen( true ); if( m_PrintParams.PrintBorderAndTitleBlock() ) + { + tempScreenNumber = screen->m_ScreenNumber; + tempNumberOfScreens = screen->m_NumberOfScreens; + screen->m_ScreenNumber = aPageNum; + screen->m_NumberOfScreens = aPageCount; m_Parent->DrawWorkSheet( dc, screen, m_PrintParams.m_PenDefaultSize, IU_PER_MILS, titleblockFilename, layer ); + screen->m_ScreenNumber = tempScreenNumber; + screen->m_NumberOfScreens = tempNumberOfScreens; + } if( printMirror ) { diff --git a/pcbnew/printout_controler.h b/pcbnew/printout_controler.h index 8527bcf951..df48b88107 100644 --- a/pcbnew/printout_controler.h +++ b/pcbnew/printout_controler.h @@ -123,7 +123,7 @@ public: void GetPageInfo( int* minPage, int* maxPage, int* selPageFrom, int* selPageTo ); - void DrawPage( wxString layer ); + void DrawPage( wxString layer = wxEmptyString, int aPageNum = 1, int aPageCount = 1 ); }; #endif // PRINTOUT_CONTROLLER_H