X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/888dde65f43d5f57e8fb2028b27191cca1741403..87c7fc6733c9fa1314b328836b51da5f12853802:/include/wx/prntbase.h diff --git a/include/wx/prntbase.h b/include/wx/prntbase.h index 1dd8637927..81e32415b5 100644 --- a/include/wx/prntbase.h +++ b/include/wx/prntbase.h @@ -55,7 +55,7 @@ enum wxPrinterError // wxPrintFactory //---------------------------------------------------------------------------- -class WXDLLEXPORT wxPrintFactory +class WXDLLIMPEXP_CORE wxPrintFactory { public: wxPrintFactory() {} @@ -102,7 +102,7 @@ private: static wxPrintFactory *m_factory; }; -class WXDLLEXPORT wxNativePrintFactory: public wxPrintFactory +class WXDLLIMPEXP_CORE wxNativePrintFactory: public wxPrintFactory { public: virtual wxPrinterBase *CreatePrinter( wxPrintDialogData *data ); @@ -139,7 +139,7 @@ public: // wxPrintNativeDataBase //---------------------------------------------------------------------------- -class WXDLLEXPORT wxPrintNativeDataBase: public wxObject +class WXDLLIMPEXP_CORE wxPrintNativeDataBase: public wxObject { public: wxPrintNativeDataBase(); @@ -166,7 +166,7 @@ private: * Represents the printer: manages printing a wxPrintout object */ -class WXDLLEXPORT wxPrinterBase: public wxObject +class WXDLLIMPEXP_CORE wxPrinterBase: public wxObject { public: wxPrinterBase(wxPrintDialogData *data = (wxPrintDialogData *) NULL); @@ -206,7 +206,7 @@ private: // wxPrinter //---------------------------------------------------------------------------- -class WXDLLEXPORT wxPrinter: public wxPrinterBase +class WXDLLIMPEXP_CORE wxPrinter: public wxPrinterBase { public: wxPrinter(wxPrintDialogData *data = (wxPrintDialogData *) NULL); @@ -240,7 +240,7 @@ private: * object for previewing. */ -class WXDLLEXPORT wxPrintout: public wxObject +class WXDLLIMPEXP_CORE wxPrintout: public wxObject { public: wxPrintout(const wxString& title = wxT("Printout")); @@ -327,7 +327,7 @@ private: * Canvas upon which a preview is drawn. */ -class WXDLLEXPORT wxPreviewCanvas: public wxScrolledWindow +class WXDLLIMPEXP_CORE wxPreviewCanvas: public wxScrolledWindow { public: wxPreviewCanvas(wxPrintPreviewBase *preview, @@ -338,6 +338,8 @@ public: const wxString& name = wxT("canvas")); virtual ~wxPreviewCanvas(); + void SetPreview(wxPrintPreviewBase *preview) { m_printPreview = preview; } + void OnPaint(wxPaintEvent& event); void OnChar(wxKeyEvent &event); // Responds to colour changes @@ -347,6 +349,7 @@ private: #if wxUSE_MOUSEWHEEL void OnMouseWheel(wxMouseEvent& event); #endif // wxUSE_MOUSEWHEEL + void OnIdle(wxIdleEvent& event); wxPrintPreviewBase* m_printPreview; @@ -363,7 +366,7 @@ private: * Default frame for showing preview. */ -class WXDLLEXPORT wxPreviewFrame: public wxFrame +class WXDLLIMPEXP_CORE wxPreviewFrame: public wxFrame { public: wxPreviewFrame(wxPrintPreviewBase *preview, @@ -427,7 +430,7 @@ private: #define wxID_PREVIEW_LAST 7 #define wxID_PREVIEW_GOTO 8 -class WXDLLEXPORT wxPreviewControlBar: public wxPanel +class WXDLLIMPEXP_CORE wxPreviewControlBar: public wxPanel { DECLARE_CLASS(wxPreviewControlBar) @@ -488,7 +491,7 @@ private: * Programmer creates an object of this class to preview a wxPrintout. */ -class WXDLLEXPORT wxPrintPreviewBase: public wxObject +class WXDLLIMPEXP_CORE wxPrintPreviewBase: public wxObject { public: wxPrintPreviewBase(wxPrintout *printout, @@ -519,6 +522,10 @@ public: // The preview canvas should call this from OnPaint virtual bool PaintPage(wxPreviewCanvas *canvas, wxDC& dc); + // Updates rendered page by calling RenderPage() if needed, returns true + // if there was some change. Preview canvas should call it at idle time + virtual bool UpdatePageRendering(); + // This draws a blank page onto the preview canvas virtual bool DrawBlankPage(wxPreviewCanvas *canvas, wxDC& dc); @@ -554,11 +561,20 @@ public: // the currently selected printer. virtual void DetermineScaling() = 0; +protected: + // helpers for RenderPage(): + virtual bool RenderPageIntoDC(wxDC& dc, int pageNum); + // renders preview into m_previewBitmap + virtual bool RenderPageIntoBitmap(wxBitmap& bmp, int pageNum); + + void InvalidatePreviewBitmap(); + protected: wxPrintDialogData m_printDialogData; wxPreviewCanvas* m_previewCanvas; wxFrame* m_previewFrame; wxBitmap* m_previewBitmap; + bool m_previewFailed; wxPrintout* m_previewPrintout; wxPrintout* m_printPrintout; int m_currentPage; @@ -586,7 +602,7 @@ private: // wxPrintPreview //---------------------------------------------------------------------------- -class WXDLLEXPORT wxPrintPreview: public wxPrintPreviewBase +class WXDLLIMPEXP_CORE wxPrintPreview: public wxPrintPreviewBase { public: wxPrintPreview(wxPrintout *printout, @@ -608,6 +624,7 @@ public: virtual wxFrame *GetFrame() const; virtual wxPreviewCanvas *GetCanvas() const; virtual bool PaintPage(wxPreviewCanvas *canvas, wxDC& dc); + virtual bool UpdatePageRendering(); virtual bool DrawBlankPage(wxPreviewCanvas *canvas, wxDC& dc); virtual void AdjustScrollbars(wxPreviewCanvas *canvas); virtual bool RenderPage(int pageNum); @@ -638,7 +655,7 @@ private: // wxPrintAbortDialog //---------------------------------------------------------------------------- -class WXDLLEXPORT wxPrintAbortDialog: public wxDialog +class WXDLLIMPEXP_CORE wxPrintAbortDialog: public wxDialog { public: wxPrintAbortDialog(wxWindow *parent,