]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/bitmap.cpp
Added some tentative wxMotif clipboard code; did some file formatting
[wxWidgets.git] / src / msw / bitmap.cpp
index 5847586476d82d4b22690562f1106c118e491e20..e935db2c76130189a146f2786bc5b3319efa07e6 100644 (file)
@@ -27,6 +27,7 @@
 #include "wx/utils.h"
 #include "wx/app.h"
 #include "wx/palette.h"
+#include "wx/dcmemory.h"
 #include "wx/bitmap.h"
 #include "wx/icon.h"
 #endif
@@ -78,6 +79,7 @@ wxBitmapRefData::~wxBitmapRefData(void)
   if (m_bitmapMask)
     delete m_bitmapMask;
   m_bitmapMask = NULL;
+
 }
 
 wxList wxBitmap::sm_handlers;
@@ -394,6 +396,7 @@ wxBitmap wxBitmap::GetBitmapForDC(wxDC& dc) const
     LPBITMAPINFO    lpDib;
     void            *lpBits = NULL;
 
+/*
     wxASSERT( this->GetPalette() && this->GetPalette()->Ok() && (this->GetPalette()->GetHPALETTE() != 0) );
 
     tmpBitmap.SetPalette(this->GetPalette());
@@ -401,6 +404,23 @@ wxBitmap wxBitmap::GetBitmapForDC(wxDC& dc) const
     memDC.SetPalette(this->GetPalette());
 
     hPal = (HPALETTE) this->GetPalette()->GetHPALETTE();
+*/
+    if( this->GetPalette() && this->GetPalette()->Ok() && (this->GetPalette()->GetHPALETTE() != 0) )
+    {
+        tmpBitmap.SetPalette(* this->GetPalette());
+        memDC.SelectObject(tmpBitmap);
+        memDC.SetPalette(* this->GetPalette());
+        hPal = (HPALETTE) this->GetPalette()->GetHPALETTE();
+    }
+    else
+    {
+        hPal = (HPALETTE) ::GetStockObject(DEFAULT_PALETTE);
+        wxPalette palette;
+        palette.SetHPALETTE( (WXHPALETTE)hPal );
+        tmpBitmap.SetPalette( palette );
+        memDC.SelectObject(tmpBitmap);
+        memDC.SetPalette( palette );
+    }
 
     // set the height negative because in a DIB the order of the lines is reversed
     createDIB(this->GetWidth(), -this->GetHeight(), this->GetDepth(), hPal, &lpDib);