+class WXDLLEXPORT wxPrintFactory;
+class WXDLLEXPORT wxPrintNativeDataBase;
+
+//----------------------------------------------------------------------------
+// error consts
+//----------------------------------------------------------------------------
+
+enum wxPrinterError
+{
+ wxPRINTER_NO_ERROR = 0,
+ wxPRINTER_CANCELLED,
+ wxPRINTER_ERROR
+};
+
+//----------------------------------------------------------------------------
+// wxPrintFactory
+//----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxPrintFactory
+{
+public:
+ wxPrintFactory() {}
+ virtual ~wxPrintFactory() {}
+
+ virtual bool HasPageSetupDialog() = 0;
+ virtual bool HasPrintSetupDialog() = 0;
+
+ virtual wxPrinterBase *CreatePrinter( wxPrintDialogData* data ) = 0;
+
+ virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
+ wxPrintout *printout = NULL,
+ wxPrintDialogData *data = NULL ) = 0;
+ virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
+ wxPrintout *printout,
+ wxPrintData *data ) = 0;
+
+ virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
+ wxPrintDialogData *data = NULL ) = 0;
+ virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
+ wxPrintData *data ) = 0;
+
+ virtual wxPrintNativeDataBase *CreatePrintNativeData() = 0;
+
+ static void SetPrintFactory( wxPrintFactory *factory );
+ static wxPrintFactory *GetFactory();
+ static wxPrintFactory *m_factory;
+};
+
+class WXDLLEXPORT wxNativePrintFactory: public wxPrintFactory
+{
+public:
+ virtual bool HasPageSetupDialog()
+ { return true; }
+ virtual bool HasPrintSetupDialog()
+ { return true; }
+
+ virtual wxPrinterBase *CreatePrinter( wxPrintDialogData *data );
+
+ virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
+ wxPrintout *printout = NULL,
+ wxPrintDialogData *data = NULL );
+ virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
+ wxPrintout *printout,
+ wxPrintData *data );
+
+ virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
+ wxPrintDialogData *data = NULL );
+ virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
+ wxPrintData *data );
+
+ virtual wxPrintNativeDataBase *CreatePrintNativeData();
+};
+
+//----------------------------------------------------------------------------
+// wxPrintNativeDataBase
+//----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxPrintNativeDataBase: public wxObject
+{
+public:
+ wxPrintNativeDataBase();
+ virtual ~wxPrintNativeDataBase() {}
+
+ virtual bool TransferTo( wxPrintData &data ) = 0;
+ virtual bool TransferFrom( const wxPrintData &data ) = 0;
+
+ virtual bool Ok() const = 0;
+
+ int m_ref;
+
+private:
+ DECLARE_CLASS(wxPrintNativeDataBase)
+ DECLARE_NO_COPY_CLASS(wxPrintNativeDataBase)
+};
+
+//----------------------------------------------------------------------------
+// wxPrinterBase
+//----------------------------------------------------------------------------