+// ============================================================================
+// implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// wxPrinterDC construction
+// ----------------------------------------------------------------------------
+
+// This form is deprecated
+wxPrinterDC::wxPrinterDC(const wxString& driver_name,
+ const wxString& device_name,
+ const wxString& file,
+ bool interactive,
+ int orientation)
+{
+ m_isInteractive = interactive;
+
+ if ( !file.empty() )
+ m_printData.SetFilename(file);
+
+#if wxUSE_COMMON_DIALOGS
+ if ( interactive )
+ {
+ PRINTDLG pd;
+
+ pd.lStructSize = sizeof( PRINTDLG );
+ pd.hwndOwner = (HWND) NULL;
+ pd.hDevMode = (HANDLE)NULL;
+ pd.hDevNames = (HANDLE)NULL;
+ pd.Flags = PD_RETURNDC | PD_NOSELECTION | PD_NOPAGENUMS;
+ pd.nFromPage = 0;
+ pd.nToPage = 0;
+ pd.nMinPage = 0;
+ pd.nMaxPage = 0;
+ pd.nCopies = 1;
+ pd.hInstance = (HINSTANCE)NULL;
+
+ m_ok = PrintDlg( &pd ) != 0;
+ if ( m_ok )
+ {
+ m_hDC = (WXHDC) pd.hDC;
+ }
+ }
+ else
+#endif // wxUSE_COMMON_DIALOGS
+ {
+ if ( !driver_name.empty() && !device_name.empty() && !file.empty() )
+ {
+ m_hDC = (WXHDC) CreateDC(driver_name, device_name, file, NULL);
+ }
+ else // we don't have all parameters, ask the user
+ {
+ wxPrintData printData;
+ printData.SetOrientation(orientation);
+ m_hDC = wxGetPrinterDC(printData);
+ }
+
+ m_ok = m_hDC ? TRUE: FALSE;
+
+ // as we created it, we must delete it as well
+ m_bOwnsDC = TRUE;
+ }
+
+ Init();
+}
+
+wxPrinterDC::wxPrinterDC(const wxPrintData& printData)
+{
+ m_printData = printData;
+
+ m_isInteractive = FALSE;
+
+ m_hDC = wxGetPrinterDC(printData);
+ m_ok = m_hDC != 0;
+ m_bOwnsDC = TRUE;
+
+ Init();
+}
+
+
+wxPrinterDC::wxPrinterDC(WXHDC dc)
+{
+ m_isInteractive = FALSE;
+
+ m_hDC = dc;
+ m_bOwnsDC = TRUE;
+ m_ok = TRUE;
+}
+
+void wxPrinterDC::Init()
+{
+ if ( m_hDC )
+ {
+ // int width = GetDeviceCaps(m_hDC, VERTRES);
+ // int height = GetDeviceCaps(m_hDC, HORZRES);
+ SetMapMode(wxMM_TEXT);
+
+ SetBrush(*wxBLACK_BRUSH);
+ SetPen(*wxBLACK_PEN);
+ }
+}
+
+// ----------------------------------------------------------------------------
+// wxPrinterDC {Start/End}{Page/Doc} methods
+// ----------------------------------------------------------------------------
+
+bool wxPrinterDC::StartDoc(const wxString& message)
+{
+ DOCINFO docinfo;
+ docinfo.cbSize = sizeof(DOCINFO);
+ docinfo.lpszDocName = (const wxChar*)message;
+
+ wxString filename(m_printData.GetFilename());
+
+ if (filename.IsEmpty())
+ docinfo.lpszOutput = NULL;
+ else
+ docinfo.lpszOutput = (const wxChar *) filename;
+
+#if defined(__WIN95__)
+ docinfo.lpszDatatype = NULL;
+ docinfo.fwType = 0;