From 4133114e30f8a02dfbb462e701cb62b9aa1f69b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Sat, 28 Jun 2008 15:32:52 +0000 Subject: [PATCH] split wxPrintPreviewBase::RenderPage() into helper methods in the same way its done on the trunk git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@54404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/prntbase.h | 4 +++ src/common/prntbase.cpp | 72 ++++++++++++++++++++++++----------------- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/include/wx/prntbase.h b/include/wx/prntbase.h index fbeeca8090..605603e226 100644 --- a/include/wx/prntbase.h +++ b/include/wx/prntbase.h @@ -575,6 +575,10 @@ protected: private: void Init(wxPrintout *printout, wxPrintout *printoutForPrinting); + // helpers for RenderPage(): + bool RenderPageIntoDC(wxDC& dc, int pageNum); + bool RenderPageIntoBitmap(wxBitmap& bmp, int pageNum); + DECLARE_NO_COPY_CLASS(wxPrintPreviewBase) DECLARE_CLASS(wxPrintPreviewBase) }; diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index 43d3a361d2..7e367638e3 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -1469,6 +1469,47 @@ void wxPrintPreviewBase::AdjustScrollbars(wxPreviewCanvas *canvas) canvas->SetScrollbars(10, 10, scrollUnitsX, scrollUnitsY, 0, 0, true); } +bool wxPrintPreviewBase::RenderPageIntoDC(wxDC& dc, int pageNum) +{ + m_previewPrintout->SetDC(&dc); + m_previewPrintout->SetPageSizePixels(m_pageWidth, m_pageHeight); + + // Need to delay OnPreparePrinting() until here, so we have enough + // information. + if (!m_printingPrepared) + { + m_previewPrintout->OnPreparePrinting(); + int selFrom, selTo; + m_previewPrintout->GetPageInfo(&m_minPage, &m_maxPage, &selFrom, &selTo); + m_printingPrepared = true; + } + + m_previewPrintout->OnBeginPrinting(); + + if (!m_previewPrintout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage())) + { + wxMessageBox(_("Could not start document preview."), _("Print Preview Failure"), wxOK); + return false; + } + + m_previewPrintout->OnPrintPage(pageNum); + m_previewPrintout->OnEndDocument(); + m_previewPrintout->OnEndPrinting(); + + m_previewPrintout->SetDC(NULL); + + return true; +} + +bool wxPrintPreviewBase::RenderPageIntoBitmap(wxBitmap& bmp, int pageNum) +{ + wxMemoryDC memoryDC; + memoryDC.SelectObject(bmp); + memoryDC.Clear(); + + return RenderPageIntoDC(memoryDC, pageNum); +} + bool wxPrintPreviewBase::RenderPage(int pageNum) { wxBusyCursor busy; @@ -1497,44 +1538,15 @@ bool wxPrintPreviewBase::RenderPage(int pageNum) } } - wxMemoryDC memoryDC; - memoryDC.SelectObject(*m_previewBitmap); - - memoryDC.Clear(); - - m_previewPrintout->SetDC(&memoryDC); - m_previewPrintout->SetPageSizePixels(m_pageWidth, m_pageHeight); - - // Need to delay OnPreparePrinting until here, so we have enough information. - if (!m_printingPrepared) - { - m_previewPrintout->OnPreparePrinting(); - int selFrom, selTo; - m_previewPrintout->GetPageInfo(&m_minPage, &m_maxPage, &selFrom, &selTo); - m_printingPrepared = true; - } - - m_previewPrintout->OnBeginPrinting(); - - if (!m_previewPrintout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage())) + if ( !RenderPageIntoBitmap(*m_previewBitmap, pageNum) ) { wxMessageBox(_("Could not start document preview."), _("Print Preview Failure"), wxOK); - memoryDC.SelectObject(wxNullBitmap); - delete m_previewBitmap; m_previewBitmap = NULL; return false; } - m_previewPrintout->OnPrintPage(pageNum); - m_previewPrintout->OnEndDocument(); - m_previewPrintout->OnEndPrinting(); - - m_previewPrintout->SetDC(NULL); - - memoryDC.SelectObject(wxNullBitmap); - #if wxUSE_STATUSBAR wxString status; if (m_maxPage != 0)