bool wxHtmlPrintout::OnPrintPage(int page) { wxDC *dc = GetDC(); if (dc && dc->Ok()) { if (HasPage(page)) RenderPage(dc, page); return true; } else return false; }
bool wxRichTextPrintout::OnPrintPage(int page) { wxDC *dc = GetDC(); if (dc) { if (HasPage(page)) RenderPage(dc, page); return true; } else return false; }
//--------------------------------------------------------- bool CVIEW_Layout_Printout::OnPrintPage(int iPage) { wxDC *pDC; if( HasPage(iPage) && (pDC = GetDC()) != NULL ) { return( m_pInfo->Draw(*pDC) ); } return( false ); }
void EditPrint::GetPageInfo (int *minPage, int *maxPage, int *selPageFrom, int *selPageTo) { // initialize values *minPage = 0; *maxPage = 0; *selPageFrom = 0; *selPageTo = 0; // scale DC if possible wxDC *dc = GetDC(); if (!dc) return; PrintScaling (dc); // get print page informations and convert to printer pixels wxSize ppiScr; GetPPIScreen (&ppiScr.x, &ppiScr.y); wxSize page = g_pageSetupData->GetPaperSize(); page.x = static_cast<int> (page.x * ppiScr.x / 25.4); page.y = static_cast<int> (page.y * ppiScr.y / 25.4); m_pageRect = wxRect (0, 0, page.x, page.y); // get margins informations and convert to printer pixels wxPoint pt = g_pageSetupData->GetMarginTopLeft(); int left = pt.x; int top = pt.y; pt = g_pageSetupData->GetMarginBottomRight(); int right = pt.x; int bottom = pt.y; top = static_cast<int> (top * ppiScr.y / 25.4); bottom = static_cast<int> (bottom * ppiScr.y / 25.4); left = static_cast<int> (left * ppiScr.x / 25.4); right = static_cast<int> (right * ppiScr.x / 25.4); m_printRect = wxRect (left, top, page.x - (left + right), page.y - (top + bottom)); // count pages while (HasPage (*maxPage)) { m_printed = m_edit->FormatRange (0, m_printed, m_edit->GetLength(), dc, dc, m_printRect, m_pageRect); *maxPage += 1; } if (*maxPage > 0) *minPage = 1; *selPageFrom = *minPage; *selPageTo = *maxPage; }
bool TrussPrintout::OnPrintPage(int pageNum) { assert(HasPage(pageNum) && "this should only be called if HasPage returns true"); wxDC *dc = GetDC(); if (!dc || !dc->IsOk()) return false; int printer_x, printer_y, screen_x, screen_y; GetPPIPrinter(&printer_x, &printer_y); GetPPIScreen(&screen_x, &screen_y); float scale = printer_x / (float)screen_x; // wxFont is stupid apparently and uses "points" that don't actually match // up on the page. wxFont &f = *wxTheFontList->FindOrCreateFont(12 * scale, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL); dc->SetFont(f); pages[pageNum-1].print(*dc); return true; }
Page *Doc::SetDrawingPage( int pageIdx ) { // out of range if ( !HasPage( pageIdx ) ) { return NULL; } // nothing to do if ( m_drawingPage && m_drawingPage->GetIdx() == pageIdx ) { return m_drawingPage; } m_drawingPage = dynamic_cast<Page*>(this->GetChild( pageIdx ) ); assert( m_drawingPage ); // we use the page members only if set (!= -1) if ( m_drawingPage->m_pageHeight != -1 ) { m_drawingPageHeight = m_drawingPage->m_pageHeight; m_drawingPageWidth = m_drawingPage->m_pageWidth; m_drawingPageLeftMar = m_drawingPage->m_pageLeftMar; m_drawingPageRightMar = m_drawingPage->m_pageRightMar; m_drawingPageTopMar = m_drawingPage->m_pageTopMar; } else if ( this->m_pageHeight != -1 ) { m_drawingPageHeight = this->m_pageHeight; m_drawingPageWidth = this->m_pageWidth; m_drawingPageLeftMar = this->m_pageLeftMar; m_drawingPageRightMar = this->m_pageRightMar; m_drawingPageTopMar = this->m_pageTopMar; } else { m_drawingPageHeight = m_env.m_pageHeight; m_drawingPageWidth = m_env.m_pageWidth; m_drawingPageLeftMar = m_env.m_pageLeftMar; m_drawingPageRightMar = m_env.m_pageRightMar; m_drawingPageTopMar = m_env.m_pageTopMar; } if (this->m_env.m_landscape) { int pageHeight = m_drawingPageWidth; m_drawingPageWidth = m_drawingPageHeight; m_drawingPageHeight = pageHeight; int pageRightMar = m_drawingPageLeftMar; m_drawingPageLeftMar = m_drawingPageRightMar; m_drawingPageRightMar = pageRightMar; } // From here we could check if values have changed // Since m_env.m_interlDefin stays the same, it useless to do it // every time for now. m_drawingBeamMaxSlope = this->m_env.m_beamMaxSlope; m_drawingBeamMinSlope = this->m_env.m_beamMinSlope; m_drawingBeamMaxSlope /= 100; m_drawingBeamMinSlope /= 100; m_drawingSmallStaffRatio[0] = this->m_env.m_smallStaffNum; m_drawingSmallStaffRatio[1] = this->m_env.m_smallStaffDen; m_drawingGraceRatio[0] = this->m_env.m_graceNum; m_drawingGraceRatio[1] = this->m_env.m_graceDen; // half of the space between two lines m_drawingHalfInterl[0] = m_env.m_interlDefin/2; // same for small staves m_drawingHalfInterl[1] = (m_drawingHalfInterl[0] * m_drawingSmallStaffRatio[0]) / m_drawingSmallStaffRatio[1]; // space between two lines m_drawingInterl[0] = m_drawingHalfInterl[0] * 2; // same for small staves m_drawingInterl[1] = m_drawingHalfInterl[1] * 2; // staff (with five lines) m_drawingStaffSize[0] = m_drawingInterl[0] * 4; m_drawingStaffSize[1] = m_drawingInterl[1] * 4; // m_drawingOctaveSize[0] = m_drawingHalfInterl[0] * 7; m_drawingOctaveSize[1] = m_drawingHalfInterl[1] * 7; m_drawingStep1 = m_drawingHalfInterl[0]; m_drawingStep2 = m_drawingStep1 * 3; m_drawingStep3 = m_drawingStep1 * 6; // values for beams m_drawingBeamWidth[0] = this->m_env.m_interlDefin / 2; m_drawingBeamWhiteWidth[0] = this->m_env.m_interlDefin / 4; m_drawingBeamWidth[1] = (m_drawingBeamWidth[0] * m_drawingSmallStaffRatio[0]) / m_drawingSmallStaffRatio[1]; m_drawingBeamWhiteWidth[1] = (m_drawingBeamWhiteWidth[0] * m_drawingSmallStaffRatio[0]) / m_drawingSmallStaffRatio[1]; m_drawingFontHeight = CalcLeipzigFontSize(); m_drawingFontHeightAscent[0][0] = floor(LEIPZIG_ASCENT * (double)m_drawingFontHeight / LEIPZIG_UNITS_PER_EM); m_drawingFontHeightAscent[0][1] = (m_drawingFontHeightAscent[0][0] * m_drawingGraceRatio[0]) / m_drawingGraceRatio[1]; m_drawingFontHeightAscent[1][0] = (m_drawingFontHeightAscent[0][0] * m_drawingSmallStaffRatio[0]) / m_drawingSmallStaffRatio[1]; m_drawingFontHeightAscent[1][1] = (m_drawingFontHeightAscent[1][0] * m_drawingGraceRatio[0]) / m_drawingGraceRatio[1]; m_drawingFontSize[0][0] = m_drawingFontHeight; m_drawingFontSize[0][1] = (m_drawingFontSize[0][0] * m_drawingGraceRatio[0]) / m_drawingGraceRatio[1]; m_drawingFontSize[1][0] = (m_drawingFontSize[0][0] * m_drawingSmallStaffRatio[0]) / m_drawingSmallStaffRatio[1]; m_drawingFontSize[1][1]= (m_drawingFontSize[1][0] * m_drawingGraceRatio[0])/ m_drawingGraceRatio[1]; m_drawingFonts[0][0].SetPointSize( m_drawingFontSize[0][0] ); //160 m_drawingFonts[0][1].SetPointSize( m_drawingFontSize[0][1] ); //120 m_drawingFonts[1][0].SetPointSize( m_drawingFontSize[1][0] ); //128 m_drawingFonts[1][1].SetPointSize( m_drawingFontSize[1][1] ); //100 m_drawingLyricFonts[0].SetPointSize( m_drawingLyricFont.GetPointSize() ); m_drawingLyricFonts[1].SetPointSize( m_drawingLyricFont.GetPointSize() ); m_drawingVerticalUnit1[0] = (float)m_drawingInterl[0]/4; m_drawingVerticalUnit2[0] = (float)m_drawingInterl[0]/8; m_drawingVerticalUnit1[1] = (float)m_drawingInterl[1]/4; m_drawingVerticalUnit2[1] = (float)m_drawingInterl[1]/8; float glyph_size; glyph_size = (LEIPZIG_HALF_NOTE_HEAD_WIDTH * (float)m_drawingFontHeight / LEIPZIG_UNITS_PER_EM); m_drawingNoteRadius[0][0] = ceil(glyph_size / 2); m_drawingNoteRadius[0][1] = (m_drawingNoteRadius[0][0] * m_drawingGraceRatio[0])/m_drawingGraceRatio[1]; m_drawingNoteRadius[1][0] = (m_drawingNoteRadius[0][0] * m_drawingSmallStaffRatio[0])/m_drawingSmallStaffRatio[1]; m_drawingNoteRadius[1][1] = (m_drawingNoteRadius[1][0] * m_drawingGraceRatio[0])/m_drawingGraceRatio[1]; m_drawingLedgerLine[0][0] = (int)(glyph_size * .72); m_drawingLedgerLine[0][1] = (m_drawingLedgerLine[0][0] * m_drawingGraceRatio[0])/m_drawingGraceRatio[1]; m_drawingLedgerLine[1][0] = (m_drawingLedgerLine[0][0] * m_drawingSmallStaffRatio[0])/m_drawingSmallStaffRatio[1]; m_drawingLedgerLine[1][1] = (m_drawingLedgerLine[1][0] * m_drawingGraceRatio[0])/m_drawingGraceRatio[1]; glyph_size = round(LEIPZIG_WHOLE_NOTE_HEAD_WIDTH * (double)m_drawingFontHeight / LEIPZIG_UNITS_PER_EM); m_drawingLedgerLine[0][2] = (int)(glyph_size * .66); m_drawingLedgerLine[1][2] = (m_drawingLedgerLine[0][2] * m_drawingSmallStaffRatio[0]) /m_drawingSmallStaffRatio[1]; m_drawingBrevisWidth[0] = (int)((glyph_size * 0.8) / 2); m_drawingBrevisWidth[1] = (m_drawingBrevisWidth[0] * m_drawingSmallStaffRatio[0]) /m_drawingSmallStaffRatio[1]; glyph_size = round(LEIPZIG_SHARP_WIDTH * (double)m_drawingFontHeight / LEIPZIG_UNITS_PER_EM); m_drawingAccidWidth[0][0] = glyph_size; m_drawingAccidWidth[0][1] = (m_drawingAccidWidth[0][0] * m_drawingGraceRatio[0])/m_drawingGraceRatio[1]; m_drawingAccidWidth[1][0] = (m_drawingAccidWidth[0][0] * m_drawingSmallStaffRatio[0]) /m_drawingSmallStaffRatio[1]; m_drawingAccidWidth[1][1] = (m_drawingAccidWidth[1][0] * m_drawingGraceRatio[0])/m_drawingGraceRatio[1]; return m_drawingPage; }
//------------------------------------------------------------------------------ // void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo) //------------------------------------------------------------------------------ void EditorPrintout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo) { #ifdef DEBUG_PRINTOUT MessageInterface::ShowMessage("EditorPrintout::GetPageInfo() entered\n"); #endif // initialize values *minPage = 0; *maxPage = 0; *selPageFrom = 0; *selPageTo = 0; // scale DC if possible wxDC *dc = GetDC(); if(!dc) return; PrintScaling(dc); // get print page informations and convert to printer pixels wxSize ppiScr; GetPPIScreen(&ppiScr.x, &ppiScr.y); wxSize page = globalPageSetupData->GetPaperSize(); page.x = static_cast<int>(page.x * ppiScr.x / 25.4); page.y = static_cast<int>(page.y * ppiScr.y / 25.4); mPageRect = wxRect(0, 0, page.x, page.y); // get margins informations and convert to printer pixels wxPoint pt = globalPageSetupData->GetMarginTopLeft(); int left = pt.x; int top = pt.y; pt = globalPageSetupData->GetMarginBottomRight(); int right = pt.x; int bottom = pt.y; top = static_cast<int>(top * ppiScr.y / 25.4); bottom = static_cast<int>(bottom * ppiScr.y / 25.4); left = static_cast<int>(left * ppiScr.x / 25.4); right = static_cast<int>(right * ppiScr.x / 25.4); mPrintRect = wxRect(left, top, page.x -(left + right), page.y -(top + bottom)); // count pages //while (HasPage(*maxPage)) <== causing infinite loop (loj) if (HasPage(*maxPage)) { mPagePrinted = mEditor->FormatRange(0, mPagePrinted, mEditor->GetLength(), dc, dc, mPrintRect, mPageRect); #ifdef DEBUG_PRINTOUT MessageInterface::ShowMessage(" mPagePrinted=%d\n", mPagePrinted); #endif *maxPage += 1; } if(*maxPage > 0) *minPage = 1; *selPageFrom = *minPage; *selPageTo = *maxPage; #ifdef DEBUG_PRINTOUT MessageInterface::ShowMessage("EditorPrintout::GetPageInfo() exiting\n"); #endif }