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
// 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;

View File

@ -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 )
{

View File

@ -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