+void wxPrintFactory::SetPrintFactory( wxPrintFactory *factory )
+{
+ if (wxPrintFactory::m_factory)
+ delete wxPrintFactory::m_factory;
+
+ wxPrintFactory::m_factory = factory;
+}
+
+wxPrintFactory *wxPrintFactory::GetFactory()
+{
+ if (!wxPrintFactory::m_factory)
+ wxPrintFactory::m_factory = new wxNativePrintFactory;
+
+ return wxPrintFactory::m_factory;
+}
+
+//----------------------------------------------------------------------------
+// wxNativePrintFactory
+//----------------------------------------------------------------------------
+
+wxPrinterBase *wxNativePrintFactory::CreatePrinter( wxPrintDialogData *data )
+{
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+ return new wxWindowsPrinter( data );
+#elif defined(__WXMAC__)
+ return new wxMacPrinter( data );
+#elif defined(__WXPM__)
+ return new wxOS2Printer( data );
+#else
+ return new wxPostScriptPrinter( data );
+#endif
+};
+
+wxPrintPreviewBase *wxNativePrintFactory::CreatePrintPreview( wxPrintout *preview,
+ wxPrintout *printout, wxPrintDialogData *data )
+{
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+ return new wxWindowsPrintPreview( preview, printout, data );
+#elif defined(__WXMAC__)
+ return new wxMacPrintPreview( preview, printout, data );
+#elif defined(__WXPM__)
+ return new wxOS2PrintPreview( preview, printout, data );
+#else
+ return new wxPostScriptPrintPreview( preview, printout, data );
+#endif
+}
+
+wxPrintPreviewBase *wxNativePrintFactory::CreatePrintPreview( wxPrintout *preview,
+ wxPrintout *printout, wxPrintData *data )
+{
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+ return new wxWindowsPrintPreview( preview, printout, data );
+#elif defined(__WXMAC__)
+ return new wxMacPrintPreview( preview, printout, data );
+#elif defined(__WXPM__)
+ return new wxOS2PrintPreview( preview, printout, data );
+#else
+ return new wxPostScriptPrintPreview( preview, printout, data );
+#endif
+}
+
+wxPrintDialogBase *wxNativePrintFactory::CreatePrintDialog( wxWindow *parent,
+ wxPrintDialogData *data )
+{
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+ return new wxWindowsPrintDialog( parent, data );
+#elif defined(__WXMAC__)
+ return new wxMacPrintDialog( parent, data );
+#else
+ return new wxGenericPrintDialog( parent, data );
+#endif
+}
+
+wxPrintDialogBase *wxNativePrintFactory::CreatePrintDialog( wxWindow *parent,
+ wxPrintData *data )
+{
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+ return new wxWindowsPrintDialog( parent, data );
+#elif defined(__WXMAC__)
+ return new wxMacPrintDialog( parent, data );
+#else
+ return new wxGenericPrintDialog( parent, data );
+#endif
+}
+
+wxPrintNativeDataBase *wxNativePrintFactory::CreatePrintNativeData()
+{
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
+ return new wxWindowsPrintNativeData;
+#elif defined(__WXMAC__)
+ return new wxMacPrintNativeData;
+#else
+ return new wxPostScriptPrintNativeData;
+#endif
+}
+
+//----------------------------------------------------------------------------
+// wxPrintNativeDataBase
+//----------------------------------------------------------------------------
+
+IMPLEMENT_ABSTRACT_CLASS(wxPrintNativeDataBase, wxObject)
+
+wxPrintNativeDataBase::wxPrintNativeDataBase()
+{
+ m_ref = 1;
+}
+
+//----------------------------------------------------------------------------
+// wxPrinterBase
+//----------------------------------------------------------------------------
+
+IMPLEMENT_CLASS(wxPrinterBase, wxObject)