Correct page numbers on pcbnew multipage print

This commit is contained in:
Ian Roth 2016-09-21 09:04:05 +02:00 committed by jean-pierre charras
parent 1edaa773d3
commit ec3109472a
3 changed files with 16 additions and 5 deletions

View File

@ -77,7 +77,7 @@ bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage )
// in gerbview, draw layers are always printed on separate pages // in gerbview, draw layers are always printed on separate pages
// because handling negative objects when using only one page is tricky // because handling negative objects when using only one page is tricky
m_PrintParams.m_Flags = aPage; m_PrintParams.m_Flags = aPage;
DrawPage( wxEmptyString ); DrawPage();
return true; 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; wxPoint offset;
double userscale; double userscale;

View File

@ -84,6 +84,7 @@ BOARD_PRINTOUT_CONTROLLER::BOARD_PRINTOUT_CONTROLLER( const PRINT_PARAMETERS& aP
bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage ) bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage )
{ {
LSET lset = m_PrintParams.m_PrintMaskLayer; LSET lset = m_PrintParams.m_PrintMaskLayer;
int aPageCount = lset.count();
wxString layer; wxString layer;
LAYER_ID extractLayer; LAYER_ID extractLayer;
@ -113,7 +114,7 @@ bool BOARD_PRINTOUT_CONTROLLER::OnPrintPage( int aPage )
if( m_PrintParams.m_Flags == 1 ) if( m_PrintParams.m_Flags == 1 )
m_PrintParams.m_PrintMaskLayer.set( Edge_Cuts ); m_PrintParams.m_PrintMaskLayer.set( Edge_Cuts );
DrawPage( layer ); DrawPage( layer, aPage, aPageCount );
m_PrintParams.m_PrintMaskLayer = lset; 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; wxPoint offset;
double userscale; double userscale;
@ -147,6 +148,8 @@ void BOARD_PRINTOUT_CONTROLLER::DrawPage( wxString layer = wxEmptyString )
BASE_SCREEN* screen = m_Parent->GetScreen(); BASE_SCREEN* screen = m_Parent->GetScreen();
bool printMirror = m_PrintParams.m_PrintMirror; bool printMirror = m_PrintParams.m_PrintMirror;
wxSize pageSizeIU = m_Parent->GetPageSizeIU(); wxSize pageSizeIU = m_Parent->GetPageSizeIU();
int tempScreenNumber;
int tempNumberOfScreens;
wxBusyCursor dummy; wxBusyCursor dummy;
@ -286,8 +289,16 @@ void BOARD_PRINTOUT_CONTROLLER::DrawPage( wxString layer = wxEmptyString )
GRForceBlackPen( true ); GRForceBlackPen( true );
if( m_PrintParams.PrintBorderAndTitleBlock() ) 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, m_Parent->DrawWorkSheet( dc, screen, m_PrintParams.m_PenDefaultSize,
IU_PER_MILS, titleblockFilename, layer ); IU_PER_MILS, titleblockFilename, layer );
screen->m_ScreenNumber = tempScreenNumber;
screen->m_NumberOfScreens = tempNumberOfScreens;
}
if( printMirror ) if( printMirror )
{ {

View File

@ -123,7 +123,7 @@ public:
void GetPageInfo( int* minPage, int* maxPage, int* selPageFrom, int* selPageTo ); 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 #endif // PRINTOUT_CONTROLLER_H