]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/dc.cpp
Only create wxBuffer on wxMSW and wxMac platforms
[wxWidgets.git] / src / os2 / dc.cpp
index 0fa3c05f7add093296744d6502620b44ca807d0a..cb5f93929421b86d5edd382c5d4cda0d329dd900 100644 (file)
@@ -1200,16 +1200,48 @@ void wxDC::DoDrawBitmap(
 , bool                              bUseMask
 )
 {
-    POINTL                          vPoint = {vX, vY};
-
-    ::WinDrawBitmap( GetHPS()
-                    ,(HBITMAP)GetHbitmapOf(rBmp)
-                    ,NULL
-                    ,&vPoint
-                    ,0L
-                    ,0L
-                    ,DBM_NORMAL
-                   );
+    if (!bUseMask && !IsKindOf(CLASSINFO(wxPrinterDC)))
+    {
+        HBITMAP                         hBitmap =  (HBITMAP)rBmp.GetHBITMAP();
+        wxBitmap                        vNewBitmap( rBmp.GetWidth()
+                                                   ,rBmp.GetHeight()
+                                                   ,rBmp.GetDepth()
+                                                  );
+        HBITMAP                         hBitmapOld = ::GpiSetBitmap((HPS)GetHPS(), vNewBitmap.GetHBITMAP());
+        LONG                            lOldTextground = ::GpiQueryColor((HPS)GetHPS());
+        LONG                            lOldBackground = ::GpiQueryBackColor((HPS)GetHPS());
+
+        if (m_textForegroundColour.Ok())
+        {
+            ::GpiSetColor( (HPS)GetHPS()
+                           ,m_textForegroundColour.GetPixel()
+                          );
+        }
+        if (m_textBackgroundColour.Ok())
+        {
+            ::GpiSetBackColor( (HPS)GetHPS()
+                              ,m_textBackgroundColour.GetPixel()
+                             );
+        }
+
+        vY = OS2Y(vY,rBmp.GetHeight());
+
+        POINTL                      vPoint[4] = { vX, vY + rBmp.GetHeight()
+                                                 ,vX + rBmp.GetWidth(), vY
+                                                 ,0, 0
+                                                 ,rBmp.GetWidth(), rBmp.GetHeight()
+                                                };
+        ::GpiWCBitBlt( (HPS)GetHPS()
+                      ,hBitmap
+                      ,4
+                      ,vPoint
+                      ,ROP_SRCCOPY
+                      ,BBO_IGNORE
+                     );
+        ::GpiSetBitmap((HPS)GetHPS(), hBitmapOld);
+        ::GpiSetColor((HPS)GetHPS(), lOldTextground);
+        ::GpiSetBackColor((HPS)GetHPS(), lOldBackground);
+    }
 } // end of wxDC::DoDrawBitmap
 
 void wxDC::DoDrawText(