]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/bitmap.cpp
Add wxDataViewCtrl::ExpandAncestors() and call it from both EnsureVisible() and Select()
[wxWidgets.git] / src / msw / bitmap.cpp
index 0dd6a215caa8310be7274538c25e9299a5ec9e20..1e8ff645c6a280c778a80dfcef5d0c836055f76e 100644 (file)
@@ -46,7 +46,7 @@
     #include "wx/msw/dib.h"
 #endif
 
-#ifdef wxHAVE_RAW_BITMAP
+#ifdef wxHAS_RAW_BITMAP
     #include "wx/rawbmp.h"
 #endif
 
@@ -254,7 +254,7 @@ wxGDIImageRefData *wxBitmap::CreateData() const
 wxGDIRefData *wxBitmap::CloneGDIRefData(const wxGDIRefData *dataOrig) const
 {
     const wxBitmapRefData *
-        data = wx_static_cast(const wxBitmapRefData *, dataOrig);
+        data = static_cast<const wxBitmapRefData *>(dataOrig);
     if ( !data )
         return NULL;
 
@@ -262,25 +262,27 @@ wxGDIRefData *wxBitmap::CloneGDIRefData(const wxGDIRefData *dataOrig) const
     //        wxBitmapRefData using its copy ctor but instead it modifies this
     //        bitmap itself and then returns its m_refData -- which works, of
     //        course (except in !wxUSE_WXDIB), but is completely illogical
-    wxBitmap *self = wx_const_cast(wxBitmap *, this);
+    wxBitmap *self = const_cast<wxBitmap *>(this);
 
+    wxBitmapRefData *selfdata;
 #if wxUSE_WXDIB
     // copy the other bitmap
     if ( data->m_hBitmap )
     {
         wxDIB dib((HBITMAP)(data->m_hBitmap));
         self->CopyFromDIB(dib);
+
+        selfdata = static_cast<wxBitmapRefData *>(m_refData);
+        selfdata->m_hasAlpha = data->m_hasAlpha;
     }
     else
 #endif // wxUSE_WXDIB
     {
         // copy the bitmap data
-        self->m_refData = new wxBitmapRefData(*data);
+        selfdata = new wxBitmapRefData(*data);
+        self->m_refData = selfdata;
     }
 
-    wxBitmapRefData * const
-        selfdata = wx_static_cast(wxBitmapRefData *, m_refData);
-
     // copy also the mask
     wxMask * const maskSrc = data->GetMask();
     if ( maskSrc )
@@ -540,7 +542,7 @@ bool wxBitmap::Create(int width, int height, const wxDC& dc)
     wxCHECK_MSG( dc.IsOk(), false, _T("invalid HDC in wxBitmap::Create()") );
 
     const wxMSWDCImpl *impl = wxDynamicCast( dc.GetImpl(), wxMSWDCImpl );
-    
+
     if (impl)
         return DoCreate(width, height, -1, impl->GetHDC());
     else
@@ -816,7 +818,7 @@ bool wxBitmap::CreateFromImage(const wxImage& image, const wxDC& dc)
                     _T("invalid HDC in wxBitmap::CreateFromImage()") );
 
     const wxMSWDCImpl *impl = wxDynamicCast( dc.GetImpl(), wxMSWDCImpl );
-    
+
     if (impl)
         return CreateFromImage(image, -1, impl->GetHDC());
     else
@@ -839,14 +841,17 @@ bool wxBitmap::CreateFromImage(const wxImage& image, int depth, WXHDC hdc)
     if ( !dib.IsOk() )
         return false;
 
-    if ( depth == -1 )
-        depth = dib.GetDepth(); // Get depth from image if none specified
+    const bool hasAlpha = image.HasAlpha();
+    
+    if (depth == -1)
+      depth = dib.GetDepth();
 
     // store the bitmap parameters
-    wxBitmapRefData *refData = new wxBitmapRefData;
+    wxBitmapRefData * const refData = new wxBitmapRefData;
     refData->m_width = w;
     refData->m_height = h;
-    refData->m_hasAlpha = image.HasAlpha();
+    refData->m_hasAlpha = hasAlpha;
+    refData->m_depth = depth;
 
     m_refData = refData;
 
@@ -857,20 +862,17 @@ bool wxBitmap::CreateFromImage(const wxImage& image, int depth, WXHDC hdc)
     // are we going to use DIB?
     //
     // NB: DDBs don't support alpha so if we have alpha channel we must use DIB
-    if ( image.HasAlpha() || wxShouldCreateDIB(w, h, depth, hdc) )
+    if ( hasAlpha || wxShouldCreateDIB(w, h, depth, hdc) )
     {
         // don't delete the DIB section in dib object dtor
         hbitmap = dib.Detach();
 
         refData->m_isDIB = true;
-        refData->m_depth = depth;
     }
 #ifndef ALWAYS_USE_DIB
     else // we need to convert DIB to DDB
     {
         hbitmap = dib.CreateDDB((HDC)hdc);
-
-        refData->m_depth = depth;
     }
 #endif // !ALWAYS_USE_DIB
 
@@ -1130,7 +1132,7 @@ wxBitmap wxBitmap::GetSubBitmapOfHDC( const wxRect& rect, WXHDC hdc ) const
 
     {
         SelectInHDC selectDst(dcDst, GetHbitmapOf(ret));
-               
+
         if ( !selectDst )
         {
             wxLogLastError(_T("SelectObject(destBitmap)"));
@@ -1247,7 +1249,8 @@ void wxBitmap::SetMask(wxMask *mask)
 // raw bitmap access support
 // ----------------------------------------------------------------------------
 
-#ifdef wxHAVE_RAW_BITMAP
+#ifdef wxHAS_RAW_BITMAP
+
 void *wxBitmap::GetRawData(wxPixelDataBase& data, int bpp)
 {
 #if wxUSE_WXDIB
@@ -1353,7 +1356,7 @@ void wxBitmap::UngetRawData(wxPixelDataBase& dataBase)
     }
 #endif // wxUSE_WXDIB
 }
-#endif // #ifdef wxHAVE_RAW_BITMAP
+#endif // wxHAS_RAW_BITMAP
 
 // ----------------------------------------------------------------------------
 // wxMask