- m_isInteractive = interactive;
-
- if (!file.IsNull() && file != "")
- m_filename = file;
-
-#if USE_COMMON_DIALOGS
- if (interactive)
- {
- PRINTDLG pd;
-
- pd.lStructSize = sizeof( PRINTDLG );
- pd.hwndOwner=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;
-
- if ( PrintDlg( &pd ) != 0 )
- {
- m_hDC = (WXHDC) pd.hDC;
- m_ok = TRUE;
- }
- else
- {
- m_ok = FALSE;
- return;
- }
-
-// m_dontDelete = TRUE;
- }
- else
-#endif
- if ((!driver_name.IsNull() && driver_name != "") &&
- (!device_name.IsNull() && device_name != "") &&
- (!file.IsNull() && file != ""))
- {
- m_hDC = (WXHDC) CreateDC((char *) (const char *) driver_name, (char *) (const char *) device_name, (char *) (const char *) file, NULL);
- m_ok = m_hDC ? TRUE: FALSE;
- }
- else
- {
- m_hDC = wxGetPrinterDC(orientation);
- m_ok = m_hDC ? TRUE: FALSE;
- }
-
- if (m_hDC)
- {
-// int width = GetDeviceCaps(m_hDC, VERTRES);
-// int height = GetDeviceCaps(m_hDC, HORZRES);
- SetMapMode(MM_TEXT);
- }
- SetBrush(*wxBLACK_BRUSH);
- SetPen(*wxBLACK_PEN);
+ 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.wx_str(),
+ device_name.wx_str(),
+ file.fn_str(),
+ 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;