X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4eecf1150d4954e389f49c402756f2381915dd10..2f64c3bb2348ecd31a2f3973a6a10d1abff34e55:/src/html/htmprint.cpp diff --git a/src/html/htmprint.cpp b/src/html/htmprint.cpp index 62ff13af35..121503447e 100644 --- a/src/html/htmprint.cpp +++ b/src/html/htmprint.cpp @@ -100,24 +100,29 @@ void wxHtmlDCRenderer::SetFonts(wxString normal_face, wxString fixed_face, } -int wxHtmlDCRenderer::Render(int x, int y, int from, int dont_render) +int wxHtmlDCRenderer::Render(int x, int y, int from, int dont_render, int to, int *known_pagebreaks, int number_of_pages) { int pbreak, hght; if (m_Cells == NULL || m_DC == NULL) return 0; pbreak = (int)(from + m_Height); - while (m_Cells->AdjustPagebreak(&pbreak)) {} + while (m_Cells->AdjustPagebreak(&pbreak, known_pagebreaks, number_of_pages)) {} hght = pbreak - from; + if(to < hght) + hght = to; if (!dont_render) { + wxHtmlRenderingInfo rinfo; + wxDefaultHtmlRenderingStyle rstyle; + rinfo.SetStyle(&rstyle); m_DC->SetBrush(*wxWHITE_BRUSH); - m_DC->SetClippingRegion(x, y, m_Width, hght); m_Cells->Draw(*m_DC, - x, (y - from), - y, pbreak + (y /*- from*/)); + x, (y - from), + y, pbreak + (y /*- from*/), + rinfo); m_DC->DestroyClippingRegion(); } @@ -335,7 +340,7 @@ void wxHtmlPrintout::CountPages() { pos = m_Renderer->Render((int)( ppmm_h * m_MarginLeft), (int) (ppmm_v * (m_MarginTop + (m_HeaderHeight == 0 ? 0 : m_MarginSpace)) + m_HeaderHeight), - pos, TRUE); + pos, TRUE, INT_MAX, m_PageBreaks, m_NumPages); m_PageBreaks[++m_NumPages] = pos; } while (pos < m_Renderer->GetTotalHeight()); } @@ -369,7 +374,7 @@ void wxHtmlPrintout::RenderPage(wxDC *dc, int page) m_Renderer->Render((int) (ppmm_h * m_MarginLeft), (int) (ppmm_v * (m_MarginTop + (m_HeaderHeight == 0 ? 0 : m_MarginSpace)) + m_HeaderHeight), - m_PageBreaks[page-1]); + m_PageBreaks[page-1], FALSE, m_PageBreaks[page]-m_PageBreaks[page-1]); m_RendererHdr->SetDC(dc, (double)ppiPrinterY / (double)ppiScreenY); if (m_Headers[page % 2] != wxEmptyString) @@ -428,9 +433,9 @@ void wxHtmlPrintout::SetFonts(wxString normal_face, wxString fixed_face, //---------------------------------------------------------------------------- -wxHtmlEasyPrinting::wxHtmlEasyPrinting(const wxString& name, wxFrame *parent_frame) +wxHtmlEasyPrinting::wxHtmlEasyPrinting(const wxString& name, wxWindow *parentWindow) { - m_Frame = parent_frame; + m_ParentWindow = parentWindow; m_Name = name; m_PrintData = new wxPrintData; m_PageSetupData = new wxPageSetupDialogData; @@ -508,7 +513,7 @@ bool wxHtmlEasyPrinting::DoPreview(wxHtmlPrintout *printout1, wxHtmlPrintout *pr return FALSE; } - wxPreviewFrame *frame = new wxPreviewFrame(preview, m_Frame, + wxPreviewFrame *frame = new wxPreviewFrame(preview, m_ParentWindow, m_Name + _(" Preview"), wxPoint(100, 100), wxSize(650, 500)); frame->Centre(wxBOTH); @@ -524,7 +529,7 @@ bool wxHtmlEasyPrinting::DoPrint(wxHtmlPrintout *printout) wxPrintDialogData printDialogData(*m_PrintData); wxPrinter printer(&printDialogData); - if (!printer.Print(m_Frame, printout, TRUE)) + if (!printer.Print(m_ParentWindow, printout, TRUE)) { return FALSE; } @@ -538,7 +543,7 @@ bool wxHtmlEasyPrinting::DoPrint(wxHtmlPrintout *printout) void wxHtmlEasyPrinting::PrinterSetup() { wxPrintDialogData printDialogData(*m_PrintData); - wxPrintDialog printerDialog(m_Frame, &printDialogData); + wxPrintDialog printerDialog(m_ParentWindow, &printDialogData); printerDialog.GetPrintDialogData().SetSetupDialog(TRUE); @@ -557,7 +562,7 @@ void wxHtmlEasyPrinting::PageSetup() } m_PageSetupData->SetPrintData(*m_PrintData); - wxPageSetupDialog pageSetupDialog(m_Frame, m_PageSetupData); + wxPageSetupDialog pageSetupDialog(m_ParentWindow, m_PageSetupData); if (pageSetupDialog.ShowModal() == wxID_OK) {