Beispiel #1
0
bool wxHtmlPrintout::OnPrintPage(int page)
{
    wxDC *dc = GetDC();
    if (dc && dc->Ok())
    {
        if (HasPage(page))
            RenderPage(dc, page);
        return true;
    }
    else return false;
}
Beispiel #2
0
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 );
}
Beispiel #4
0
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;
}
Beispiel #5
0
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;
}
Beispiel #6
0
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;
}
Beispiel #7
0
//------------------------------------------------------------------------------
// 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
}