X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f415cab9ef1433413a1a68a982ee9b17c5a8deda..0514adaf75ac1df18d133807c79172c2361a1a6b:/include/wx/prntbase.h diff --git a/include/wx/prntbase.h b/include/wx/prntbase.h index d3de6928d3..81e32415b5 100644 --- a/include/wx/prntbase.h +++ b/include/wx/prntbase.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: prntbase.h +// Name: wx/prntbase.h // Purpose: Base classes for printing framework // Author: Julian Smart // Modified by: @@ -22,22 +22,23 @@ #include "wx/scrolwin.h" #include "wx/dialog.h" #include "wx/frame.h" - -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxButton; -class WXDLLEXPORT wxChoice; -class WXDLLEXPORT wxPrintout; -class WXDLLEXPORT wxPrinterBase; -class WXDLLEXPORT wxPrintDialogBase; -class WXDLLEXPORT wxPrintDialog; -class WXDLLEXPORT wxPageSetupDialogBase; -class WXDLLEXPORT wxPageSetupDialog; -class WXDLLEXPORT wxPrintPreviewBase; -class WXDLLEXPORT wxPreviewCanvas; -class WXDLLEXPORT wxPreviewControlBar; -class WXDLLEXPORT wxPreviewFrame; -class WXDLLEXPORT wxPrintFactory; -class WXDLLEXPORT wxPrintNativeDataBase; +#include "wx/dc.h" + +class WXDLLIMPEXP_FWD_CORE wxDC; +class WXDLLIMPEXP_FWD_CORE wxButton; +class WXDLLIMPEXP_FWD_CORE wxChoice; +class WXDLLIMPEXP_FWD_CORE wxPrintout; +class WXDLLIMPEXP_FWD_CORE wxPrinterBase; +class WXDLLIMPEXP_FWD_CORE wxPrintDialogBase; +class WXDLLIMPEXP_FWD_CORE wxPrintDialog; +class WXDLLIMPEXP_FWD_CORE wxPageSetupDialogBase; +class WXDLLIMPEXP_FWD_CORE wxPageSetupDialog; +class WXDLLIMPEXP_FWD_CORE wxPrintPreviewBase; +class WXDLLIMPEXP_FWD_CORE wxPreviewCanvas; +class WXDLLIMPEXP_FWD_CORE wxPreviewControlBar; +class WXDLLIMPEXP_FWD_CORE wxPreviewFrame; +class WXDLLIMPEXP_FWD_CORE wxPrintFactory; +class WXDLLIMPEXP_FWD_CORE wxPrintNativeDataBase; //---------------------------------------------------------------------------- // error consts @@ -54,7 +55,7 @@ enum wxPrinterError // wxPrintFactory //---------------------------------------------------------------------------- -class WXDLLEXPORT wxPrintFactory +class WXDLLIMPEXP_CORE wxPrintFactory { public: wxPrintFactory() {} @@ -77,7 +78,7 @@ public: virtual wxPageSetupDialogBase *CreatePageSetupDialog( wxWindow *parent, wxPageSetupDialogData * data = NULL ) = 0; - virtual wxDC* CreatePrinterDC( const wxPrintData& data ) = 0; + virtual wxDCImpl* CreatePrinterDCImpl( wxPrinterDC *owner, const wxPrintData& data ) = 0; // What to do and what to show in the wxPrintDialog // a) Use the generic print setup dialog or a native one? @@ -101,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 ); @@ -121,7 +122,7 @@ public: virtual wxPageSetupDialogBase *CreatePageSetupDialog( wxWindow *parent, wxPageSetupDialogData * data = NULL ); - virtual wxDC* CreatePrinterDC( const wxPrintData& data ); + virtual wxDCImpl* CreatePrinterDCImpl( wxPrinterDC *owner, const wxPrintData& data ); virtual bool HasPrintSetupDialog(); virtual wxDialog *CreatePrintSetupDialog( wxWindow *parent, wxPrintData *data ); @@ -138,7 +139,7 @@ public: // wxPrintNativeDataBase //---------------------------------------------------------------------------- -class WXDLLEXPORT wxPrintNativeDataBase: public wxObject +class WXDLLIMPEXP_CORE wxPrintNativeDataBase: public wxObject { public: wxPrintNativeDataBase(); @@ -165,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); @@ -205,7 +206,7 @@ private: // wxPrinter //---------------------------------------------------------------------------- -class WXDLLEXPORT wxPrinter: public wxPrinterBase +class WXDLLIMPEXP_CORE wxPrinter: public wxPrinterBase { public: wxPrinter(wxPrintDialogData *data = (wxPrintDialogData *) NULL); @@ -239,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")); @@ -326,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, @@ -337,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 @@ -346,6 +349,7 @@ private: #if wxUSE_MOUSEWHEEL void OnMouseWheel(wxMouseEvent& event); #endif // wxUSE_MOUSEWHEEL + void OnIdle(wxIdleEvent& event); wxPrintPreviewBase* m_printPreview; @@ -362,7 +366,7 @@ private: * Default frame for showing preview. */ -class WXDLLEXPORT wxPreviewFrame: public wxFrame +class WXDLLIMPEXP_CORE wxPreviewFrame: public wxFrame { public: wxPreviewFrame(wxPrintPreviewBase *preview, @@ -388,8 +392,10 @@ protected: wxWindowDisabler* m_windowDisabler; private: - DECLARE_CLASS(wxPreviewFrame) + void OnChar(wxKeyEvent& event); + DECLARE_EVENT_TABLE() + DECLARE_CLASS(wxPreviewFrame) DECLARE_NO_COPY_CLASS(wxPreviewFrame) }; @@ -424,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) @@ -485,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, @@ -516,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); @@ -551,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; @@ -583,7 +602,7 @@ private: // wxPrintPreview //---------------------------------------------------------------------------- -class WXDLLEXPORT wxPrintPreview: public wxPrintPreviewBase +class WXDLLIMPEXP_CORE wxPrintPreview: public wxPrintPreviewBase { public: wxPrintPreview(wxPrintout *printout, @@ -605,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); @@ -635,7 +655,7 @@ private: // wxPrintAbortDialog //---------------------------------------------------------------------------- -class WXDLLEXPORT wxPrintAbortDialog: public wxDialog +class WXDLLIMPEXP_CORE wxPrintAbortDialog: public wxDialog { public: wxPrintAbortDialog(wxWindow *parent,