]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dcprint.cpp
VTK wrapper of vtkRenderWindow for wxPython. Tested on MSW so far.
[wxWidgets.git] / src / msw / dcprint.cpp
index 96a461eaaf127b255045b6d5ed9f51fecafc886e..4344e5977296f0c1fe0705104f110a3d0eb63b29 100644 (file)
 #ifndef WX_PRECOMP
 #endif
 
 #ifndef WX_PRECOMP
 #endif
 
-#include "wx/dcprint.h"
+#include "wx/string.h"
 #include "wx/log.h"
 #include "wx/log.h"
+#include "wx/window.h"
+#include "wx/msw/private.h"
+#include "wx/dcprint.h"
 #include "math.h"
 
 #include "math.h"
 
-#include <windows.h>
-
-#if wxUSE_COMMON_DIALOGS
+#if wxUSE_COMMON_DIALOGS || defined(__WXWINE__)
 #include <commdlg.h>
 #endif
 
 #include <commdlg.h>
 #endif
 
 #include <print.h>
 #endif
 
 #include <print.h>
 #endif
 
-#ifdef DrawText
-#undef DrawText
-#endif
-
-#ifdef GetCharWidth
-#undef GetCharWidth
-#endif
-
-#ifdef StartDoc
-#undef StartDoc
-#endif
-
 #if !USE_SHARED_LIBRARY
 IMPLEMENT_CLASS(wxPrinterDC, wxDC)
 #endif
 #if !USE_SHARED_LIBRARY
 IMPLEMENT_CLASS(wxPrinterDC, wxDC)
 #endif
@@ -57,15 +46,15 @@ IMPLEMENT_CLASS(wxPrinterDC, wxDC)
 wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_name, const wxString& file, bool interactive, int orientation)
 {
     m_isInteractive = interactive;
 wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_name, const wxString& file, bool interactive, int orientation)
 {
     m_isInteractive = interactive;
-    
-    if (!file.IsNull() && file != "")
+
+    if (!file.IsNull() && file != wxT(""))
         m_printData.SetFilename(file);
         m_printData.SetFilename(file);
-    
+
 #if wxUSE_COMMON_DIALOGS
     if (interactive)
     {
         PRINTDLG pd;
 #if wxUSE_COMMON_DIALOGS
     if (interactive)
     {
         PRINTDLG pd;
-        
+
         pd.lStructSize = sizeof( PRINTDLG );
         pd.hwndOwner=(HWND) NULL;
         pd.hDevMode=(HANDLE)NULL;
         pd.lStructSize = sizeof( PRINTDLG );
         pd.hwndOwner=(HWND) NULL;
         pd.hDevMode=(HANDLE)NULL;
@@ -77,7 +66,7 @@ wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_nam
         pd.nMaxPage=0;
         pd.nCopies=1;
         pd.hInstance=(HINSTANCE)NULL;
         pd.nMaxPage=0;
         pd.nCopies=1;
         pd.hInstance=(HINSTANCE)NULL;
-        
+
         if ( PrintDlg( &pd ) != 0 )
         {
             m_hDC = (WXHDC) pd.hDC;
         if ( PrintDlg( &pd ) != 0 )
         {
             m_hDC = (WXHDC) pd.hDC;
@@ -88,16 +77,16 @@ wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_nam
             m_ok = FALSE;
             return;
         }
             m_ok = FALSE;
             return;
         }
-        
+
         //     m_dontDelete = TRUE;
     }
     else
 #endif
         //     m_dontDelete = TRUE;
     }
     else
 #endif
-        if ((!driver_name.IsNull() && driver_name != "") &&
-            (!device_name.IsNull() && device_name != "") &&
-            (!file.IsNull() && file != ""))
+        if ((!driver_name.IsNull() && driver_name != wxT("")) &&
+            (!device_name.IsNull() && device_name != wxT("")) &&
+            (!file.IsNull() && file != wxT("")))
         {
         {
-            m_hDC = (WXHDC) CreateDC((char *) (const char *) driver_name, (char *) (const char *) device_name, (char *) (const char *) file, NULL);
+            m_hDC = (WXHDC) CreateDC(WXSTRINGCAST driver_name, WXSTRINGCAST device_name, WXSTRINGCAST file, NULL);
             m_ok = m_hDC ? TRUE: FALSE;
         }
         else
             m_ok = m_hDC ? TRUE: FALSE;
         }
         else
@@ -107,7 +96,7 @@ wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_nam
             m_hDC = wxGetPrinterDC(printData);
             m_ok = m_hDC ? TRUE: FALSE;
         }
             m_hDC = wxGetPrinterDC(printData);
             m_ok = m_hDC ? TRUE: FALSE;
         }
-        
+
         if (m_hDC)
         {
             //     int width = GetDeviceCaps(m_hDC, VERTRES);
         if (m_hDC)
         {
             //     int width = GetDeviceCaps(m_hDC, VERTRES);
@@ -126,10 +115,10 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printData)
 
     m_hDC = wxGetPrinterDC(printData);
     m_ok = (m_hDC != 0);
 
     m_hDC = wxGetPrinterDC(printData);
     m_ok = (m_hDC != 0);
-    
+
     if (m_hDC)
         SetMapMode(wxMM_TEXT);
     if (m_hDC)
         SetMapMode(wxMM_TEXT);
-    
+
     SetBrush(*wxBLACK_BRUSH);
     SetPen(*wxBLACK_PEN);
 }
     SetBrush(*wxBLACK_BRUSH);
     SetPen(*wxBLACK_PEN);
 }
@@ -138,7 +127,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printData)
 wxPrinterDC::wxPrinterDC(WXHDC theDC)
 {
     m_isInteractive = FALSE;
 wxPrinterDC::wxPrinterDC(WXHDC theDC)
 {
     m_isInteractive = FALSE;
-    
+
     m_hDC = theDC;
     m_ok = TRUE;
     if (m_hDC)
     m_hDC = theDC;
     m_ok = TRUE;
     if (m_hDC)
@@ -159,23 +148,23 @@ bool wxPrinterDC::StartDoc(const wxString& message)
 {
     DOCINFO docinfo;
     docinfo.cbSize = sizeof(DOCINFO);
 {
     DOCINFO docinfo;
     docinfo.cbSize = sizeof(DOCINFO);
-    docinfo.lpszDocName = (const char *)message;
+    docinfo.lpszDocName = (const wxChar*)message;
 
     wxString filename(m_printData.GetFilename());
 
     if (filename.IsEmpty())
         docinfo.lpszOutput = NULL;
     else
 
     wxString filename(m_printData.GetFilename());
 
     if (filename.IsEmpty())
         docinfo.lpszOutput = NULL;
     else
-        docinfo.lpszOutput = (const char *) filename;
+        docinfo.lpszOutput = (const wxChar *) filename;
 
 #if defined(__WIN95__)
     docinfo.lpszDatatype = NULL;
     docinfo.fwType = 0;
 #endif
 
 #if defined(__WIN95__)
     docinfo.lpszDatatype = NULL;
     docinfo.fwType = 0;
 #endif
-    
+
     if (!m_hDC)
         return FALSE;
     if (!m_hDC)
         return FALSE;
-    
+
     int ret =
 #ifndef __WIN32__
         ::StartDoc((HDC) m_hDC, &docinfo);
     int ret =
 #ifndef __WIN32__
         ::StartDoc((HDC) m_hDC, &docinfo);
@@ -190,15 +179,15 @@ bool wxPrinterDC::StartDoc(const wxString& message)
 #endif
 #endif
 #endif
 #endif
 #endif
 #endif
-    
+
 #ifndef __WIN16__
     if (ret <= 0)
     {
         DWORD lastError = GetLastError();
 #ifndef __WIN16__
     if (ret <= 0)
     {
         DWORD lastError = GetLastError();
-        wxLogDebug("wxDC::StartDoc failed with error: %d\n", lastError);
+        wxLogDebug(wxT("wxDC::StartDoc failed with error: %d\n"), lastError);
     }
 #endif
     }
 #endif
-    
+
     return (ret > 0);
 }
 
     return (ret > 0);
 }
 
@@ -228,7 +217,7 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName)
     LPSTR       lpszDriverName;
     LPSTR       lpszDeviceName;
     LPSTR       lpszPortName;
     LPSTR       lpszDriverName;
     LPSTR       lpszDeviceName;
     LPSTR       lpszPortName;
-    
+
     PRINTDLG    pd;
 
     // Cygwin has trouble believing PRINTDLG is 66 bytes - thinks it is 68
     PRINTDLG    pd;
 
     // Cygwin has trouble believing PRINTDLG is 66 bytes - thinks it is 68
@@ -243,17 +232,17 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName)
     pd.hDevNames      = NULL; // Ditto
     pd.Flags          = PD_RETURNDEFAULT;
     pd.nCopies        = 1;
     pd.hDevNames      = NULL; // Ditto
     pd.Flags          = PD_RETURNDEFAULT;
     pd.nCopies        = 1;
-    
+
     if (!PrintDlg((LPPRINTDLG)&pd))
     {
         if ( pd.hDevMode )
             GlobalFree(pd.hDevMode);
         if (pd.hDevNames)
             GlobalFree(pd.hDevNames);
     if (!PrintDlg((LPPRINTDLG)&pd))
     {
         if ( pd.hDevMode )
             GlobalFree(pd.hDevMode);
         if (pd.hDevNames)
             GlobalFree(pd.hDevNames);
-        
+
         return FALSE;
     }
         return FALSE;
     }
-    
+
     if (pd.hDevNames)
     {
         lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames);
     if (pd.hDevNames)
     {
         lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames);
@@ -267,13 +256,13 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName)
         deviceName = lpszDeviceName;
         portName = lpszPortName;
     }
         deviceName = lpszDeviceName;
         portName = lpszPortName;
     }
-    
+
     if (pd.hDevMode)
     {
         GlobalFree(pd.hDevMode);
         pd.hDevMode=NULL;
     }
     if (pd.hDevMode)
     {
         GlobalFree(pd.hDevMode);
         pd.hDevMode=NULL;
     }
-    return ( deviceName != "" );
+    return ( deviceName != wxT("") );
 }
 
 #if 0
 }
 
 #if 0
@@ -287,7 +276,7 @@ WXHDC wxGetPrinterDC(int orientation)
     LPSTR       lpszDriverName;
     LPSTR       lpszDeviceName;
     LPSTR       lpszPortName;
     LPSTR       lpszDriverName;
     LPSTR       lpszDeviceName;
     LPSTR       lpszPortName;
-    
+
     PRINTDLG    pd;
     // __GNUWIN32__ has trouble believing PRINTDLG is 66 bytes - thinks it is 68
 #ifdef __GNUWIN32__
     PRINTDLG    pd;
     // __GNUWIN32__ has trouble believing PRINTDLG is 66 bytes - thinks it is 68
 #ifdef __GNUWIN32__
@@ -300,45 +289,45 @@ WXHDC wxGetPrinterDC(int orientation)
     pd.hDevNames      = NULL; // Ditto
     pd.Flags          = PD_RETURNDEFAULT;
     pd.nCopies        = 1;
     pd.hDevNames      = NULL; // Ditto
     pd.Flags          = PD_RETURNDEFAULT;
     pd.nCopies        = 1;
-    
+
     if (!PrintDlg((LPPRINTDLG)&pd))
     {
         if ( pd.hDevMode )
             GlobalFree(pd.hDevMode);
         if (pd.hDevNames)
             GlobalFree(pd.hDevNames);
     if (!PrintDlg((LPPRINTDLG)&pd))
     {
         if ( pd.hDevMode )
             GlobalFree(pd.hDevMode);
         if (pd.hDevNames)
             GlobalFree(pd.hDevNames);
-        
+
         return(0);
     }
         return(0);
     }
-    
+
     if (!pd.hDevNames)
     {
         if ( pd.hDevMode )
             GlobalFree(pd.hDevMode);
     }
     if (!pd.hDevNames)
     {
         if ( pd.hDevMode )
             GlobalFree(pd.hDevMode);
     }
-    
+
     lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames);
     lpszDriverName = (LPSTR)lpDevNames + lpDevNames->wDriverOffset;
     lpszDeviceName = (LPSTR)lpDevNames + lpDevNames->wDeviceOffset;
     lpszPortName   = (LPSTR)lpDevNames + lpDevNames->wOutputOffset;
     GlobalUnlock(pd.hDevNames);
     lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames);
     lpszDriverName = (LPSTR)lpDevNames + lpDevNames->wDriverOffset;
     lpszDeviceName = (LPSTR)lpDevNames + lpDevNames->wDeviceOffset;
     lpszPortName   = (LPSTR)lpDevNames + lpDevNames->wOutputOffset;
     GlobalUnlock(pd.hDevNames);
-    
+
     if ( pd.hDevMode )
     {
         lpDevMode = (DEVMODE*) GlobalLock(pd.hDevMode);
         lpDevMode->dmOrientation = orientation;
         lpDevMode->dmFields |= DM_ORIENTATION;
     }
     if ( pd.hDevMode )
     {
         lpDevMode = (DEVMODE*) GlobalLock(pd.hDevMode);
         lpDevMode->dmOrientation = orientation;
         lpDevMode->dmFields |= DM_ORIENTATION;
     }
-    
+
 #ifdef __WIN32__
     hDC = CreateDC(lpszDriverName, lpszDeviceName, lpszPortName, (DEVMODE *)lpDevMode);
 #else
     hDC = CreateDC(lpszDriverName, lpszDeviceName, lpszPortName, (LPSTR)lpDevMode);
 #endif
 #ifdef __WIN32__
     hDC = CreateDC(lpszDriverName, lpszDeviceName, lpszPortName, (DEVMODE *)lpDevMode);
 #else
     hDC = CreateDC(lpszDriverName, lpszDeviceName, lpszPortName, (LPSTR)lpDevMode);
 #endif
-    
+
     if (pd.hDevMode && lpDevMode)
         GlobalUnlock(pd.hDevMode);
     if (pd.hDevMode && lpDevMode)
         GlobalUnlock(pd.hDevMode);
-    
+
     if (pd.hDevNames)
     {
         GlobalFree(pd.hDevNames);
     if (pd.hDevNames)
     {
         GlobalFree(pd.hDevNames);
@@ -358,45 +347,50 @@ WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst)
 {
     wxPrintData printData = printDataConst;
     printData.ConvertToNative();
 {
     wxPrintData printData = printDataConst;
     printData.ConvertToNative();
-    
-    char* driverName = (char*) NULL;
-    
+
+    wxChar* driverName = (wxChar*) NULL;
+
     wxString devNameStr = printData.GetPrinterName();
     wxString devNameStr = printData.GetPrinterName();
-    char* deviceName;
-    char* portName = (char*) NULL; // Obsolete in WIN32
-    
-    if (devNameStr == "")
-        deviceName = (char*) NULL;
+    wxChar* deviceName;
+    wxChar* portName = (wxChar*) NULL; // Obsolete in WIN32
+
+    if (devNameStr == wxT(""))
+        deviceName = (wxChar*) NULL;
     else
     else
-        deviceName = (char*) (const char*) devNameStr;
+        deviceName = WXSTRINGCAST devNameStr;
 
     LPDEVMODE lpDevMode = (LPDEVMODE) NULL;
 
 
     LPDEVMODE lpDevMode = (LPDEVMODE) NULL;
 
-    HGLOBAL hDevMode = (HGLOBAL) printData.GetNativeData();
+    HGLOBAL hDevMode = (HGLOBAL)(DWORD) printData.GetNativeData();
 
     if ( hDevMode )
         lpDevMode = (DEVMODE*) GlobalLock(hDevMode);
 
 
     if ( hDevMode )
         lpDevMode = (DEVMODE*) GlobalLock(hDevMode);
 
-    if (devNameStr == "")
+    if (devNameStr == wxT(""))
     {
         // Retrieve the default device name
         wxString portName;
     {
         // Retrieve the default device name
         wxString portName;
-        bool ret = wxGetDefaultDeviceName(devNameStr, portName);
+#ifdef  __WXDEBUG__
+        bool ret =
+#else   // !Debug
+        (void)
+#endif // Debug/Release
+        wxGetDefaultDeviceName(devNameStr, portName);
 
 
-        wxASSERT_MSG( ret, "Could not get default device name." );
+        wxASSERT_MSG( ret, wxT("Could not get default device name.") );
 
 
-        deviceName = (char*) (const char*) devNameStr;
+        deviceName = WXSTRINGCAST devNameStr;
     }
     }
-    
+
 #ifdef __WIN32__
     HDC hDC = CreateDC(driverName, deviceName, portName, (DEVMODE *) lpDevMode);
 #else
     HDC hDC = CreateDC(driverName, deviceName, portName, (LPSTR) lpDevMode);
 #endif
 #ifdef __WIN32__
     HDC hDC = CreateDC(driverName, deviceName, portName, (DEVMODE *) lpDevMode);
 #else
     HDC hDC = CreateDC(driverName, deviceName, portName, (LPSTR) lpDevMode);
 #endif
-    
+
     if (hDevMode && lpDevMode)
         GlobalUnlock(hDevMode);
     if (hDevMode && lpDevMode)
         GlobalUnlock(hDevMode);
-    
+
     return (WXHDC) hDC;
 }
 
     return (WXHDC) hDC;
 }