]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dcprint.cpp
fixed wxImage->wxBitmap conversion for images with alpha channel
[wxWidgets.git] / src / msw / dcprint.cpp
index 27ea98fe59c036bc0d104afbdf4e0b9fca91bbb9..819514bb60cd22b6b5681589547883c12d7673a4 100644 (file)
@@ -17,7 +17,7 @@
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "dcprint.h"
 #endif
 
 #if wxUSE_PRINTING_ARCHITECTURE
 
 #include "wx/msw/private.h"
+
+#if wxUSE_WXDIB
 #include "wx/msw/dib.h"
+#endif
+
 #include "wx/dcprint.h"
 #include "math.h"
 
@@ -191,13 +195,11 @@ bool wxPrinterDC::StartDoc(const wxString& message)
 
     int ret = ::StartDoc(GetHdc(), &docinfo);
 
-#ifndef __WIN16__
     if (ret <= 0)
     {
         DWORD lastError = GetLastError();
         wxLogDebug(wxT("wxDC::StartDoc failed with error: %ld\n"), lastError);
     }
-#endif
 
     return (ret > 0);
 }
@@ -225,7 +227,6 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName)
     deviceName.clear();
 
     LPDEVNAMES  lpDevNames;
-    LPTSTR      lpszDriverName;
     LPTSTR      lpszDeviceName;
     LPTSTR      lpszPortName;
 
@@ -259,7 +260,6 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName)
     if (pd.hDevNames)
     {
         lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames);
-        lpszDriverName = (LPTSTR)lpDevNames + lpDevNames->wDriverOffset;
         lpszDeviceName = (LPTSTR)lpDevNames + lpDevNames->wDeviceOffset;
         lpszPortName   = (LPTSTR)lpDevNames + lpDevNames->wOutputOffset;
 
@@ -276,7 +276,7 @@ static bool wxGetDefaultDeviceName(wxString& deviceName, wxString& portName)
         GlobalFree(pd.hDevMode);
         pd.hDevMode=NULL;
     }
-    return ( deviceName != wxT("") );
+    return ( deviceName != wxEmptyString );
 }
 
 // Gets an HDC for the specified printer configuration
@@ -307,15 +307,10 @@ WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst)
     {
         // Retrieve the default device name
         wxString portName;
-#ifdef  __WXDEBUG__
-        bool ret =
-#else   // !Debug
-        (void)
-#endif // Debug/Release
-        wxGetDefaultDeviceName(devNameStr, portName);
-
-        wxASSERT_MSG( ret, wxT("Could not get default device name.") );
-
+        if ( !wxGetDefaultDeviceName(devNameStr, portName) )
+        {
+            return 0; // Could not get default device name
+        }
         deviceName = devNameStr.c_str();
     }
 
@@ -341,8 +336,10 @@ bool DrawBitmapUsingStretchDIBits(HDC hdc,
                                   const wxBitmap& bmp,
                                   wxCoord x, wxCoord y)
 {
+#if wxUSE_WXDIB
     wxDIB dib(bmp);
-    if ( !dib.IsOk() )
+    bool ok = dib.IsOk();
+    if ( !ok )
         return FALSE;
 
     DIBSECTION ds;
@@ -373,6 +370,9 @@ bool DrawBitmapUsingStretchDIBits(HDC hdc,
     }
 
     return TRUE;
+#else
+    return FALSE;
+#endif
 }
 
 void wxPrinterDC::DoDrawBitmap(const wxBitmap& bmp,
@@ -400,7 +400,7 @@ void wxPrinterDC::DoDrawBitmap(const wxBitmap& bmp,
 bool wxPrinterDC::DoBlit(wxCoord xdest, wxCoord ydest,
                          wxCoord width, wxCoord height,
                          wxDC *source,
-                         wxCoord xsrc, wxCoord ysrc,
+                         wxCoord WXUNUSED(xsrc), wxCoord WXUNUSED(ysrc),
                          int WXUNUSED(rop), bool useMask,
                          wxCoord WXUNUSED(xsrcMask), wxCoord WXUNUSED(ysrcMask))
 {
@@ -436,7 +436,7 @@ bool wxPrinterDC::DoBlit(wxCoord xdest, wxCoord ydest,
     else // no mask
     {
         if ( !(::GetDeviceCaps(GetHdc(), RASTERCAPS) & RC_STRETCHDIB) ||
-                !DrawBitmapUsingStretchDIBits(GetHdc(), bmp, xsrc, ysrc) )
+                !DrawBitmapUsingStretchDIBits(GetHdc(), bmp, xdest, ydest) )
         {
             // no support for StretchDIBits