X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/025f7d775c8366dec72258e0d9d83848203c4871..eecf97a5ee1df46b19ca85a00229cd81d185bd6f:/src/msw/bitmap.cpp diff --git a/src/msw/bitmap.cpp b/src/msw/bitmap.cpp index 725d5fd0cb..570c673c49 100644 --- a/src/msw/bitmap.cpp +++ b/src/msw/bitmap.cpp @@ -46,7 +46,7 @@ #include "wx/msw/dib.h" #endif -#ifdef wxHAVE_RAW_BITMAP +#ifdef wxHAS_RAW_BITMAP #include "wx/rawbmp.h" #endif @@ -520,14 +520,14 @@ wxBitmap::wxBitmap(int w, int h, const wxDC& dc) (void)Create(w, h, dc); } -wxBitmap::wxBitmap(const void* data, long type, int width, int height, int depth) +wxBitmap::wxBitmap(const void* data, wxBitmapType type, int width, int height, int depth) { (void)Create(data, type, width, height, depth); } wxBitmap::wxBitmap(const wxString& filename, wxBitmapType type) { - LoadFile(filename, (int)type); + LoadFile(filename, type); } bool wxBitmap::Create(int width, int height, int depth) @@ -540,7 +540,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 +816,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 +839,15 @@ 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(); // 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 == -1 ? (hasAlpha ? 32 : 24) + : depth; m_refData = refData; @@ -857,20 +858,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 @@ -1027,7 +1025,7 @@ wxImage wxBitmap::ConvertToImage() const // loading and saving bitmaps // ---------------------------------------------------------------------------- -bool wxBitmap::LoadFile(const wxString& filename, long type) +bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type) { UnRef(); @@ -1055,7 +1053,7 @@ bool wxBitmap::LoadFile(const wxString& filename, long type) return false; } -bool wxBitmap::Create(const void* data, long type, int width, int height, int depth) +bool wxBitmap::Create(const void* data, wxBitmapType type, int width, int height, int depth) { UnRef(); @@ -1074,8 +1072,8 @@ bool wxBitmap::Create(const void* data, long type, int width, int height, int de } bool wxBitmap::SaveFile(const wxString& filename, - int type, - const wxPalette *palette) + wxBitmapType type, + const wxPalette *palette) const { wxBitmapHandler *handler = wxDynamicCast(FindHandler(type), wxBitmapHandler); @@ -1130,7 +1128,7 @@ wxBitmap wxBitmap::GetSubBitmapOfHDC( const wxRect& rect, WXHDC hdc ) const { SelectInHDC selectDst(dcDst, GetHbitmapOf(ret)); - + if ( !selectDst ) { wxLogLastError(_T("SelectObject(destBitmap)")); @@ -1247,7 +1245,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 +1352,7 @@ void wxBitmap::UngetRawData(wxPixelDataBase& dataBase) } #endif // wxUSE_WXDIB } -#endif // #ifdef wxHAVE_RAW_BITMAP +#endif // wxHAS_RAW_BITMAP // ---------------------------------------------------------------------------- // wxMask @@ -1563,27 +1562,27 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour) bool wxBitmapHandler::Create(wxGDIImage *image, const void* data, - long flags, + wxBitmapType type, int width, int height, int depth) { wxBitmap *bitmap = wxDynamicCast(image, wxBitmap); - return bitmap && Create(bitmap, data, flags, width, height, depth); + return bitmap && Create(bitmap, data, type, width, height, depth); } bool wxBitmapHandler::Load(wxGDIImage *image, const wxString& name, - long flags, + wxBitmapType type, int width, int height) { wxBitmap *bitmap = wxDynamicCast(image, wxBitmap); - return bitmap && LoadFile(bitmap, name, flags, width, height); + return bitmap && LoadFile(bitmap, name, type, width, height); } -bool wxBitmapHandler::Save(wxGDIImage *image, +bool wxBitmapHandler::Save(const wxGDIImage *image, const wxString& name, - int type) + wxBitmapType type) const { wxBitmap *bitmap = wxDynamicCast(image, wxBitmap); @@ -1592,7 +1591,7 @@ bool wxBitmapHandler::Save(wxGDIImage *image, bool wxBitmapHandler::Create(wxBitmap *WXUNUSED(bitmap), const void* WXUNUSED(data), - long WXUNUSED(type), + wxBitmapType WXUNUSED(type), int WXUNUSED(width), int WXUNUSED(height), int WXUNUSED(depth)) @@ -1602,17 +1601,17 @@ bool wxBitmapHandler::Create(wxBitmap *WXUNUSED(bitmap), bool wxBitmapHandler::LoadFile(wxBitmap *WXUNUSED(bitmap), const wxString& WXUNUSED(name), - long WXUNUSED(type), + wxBitmapType WXUNUSED(type), int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight)) { return false; } -bool wxBitmapHandler::SaveFile(wxBitmap *WXUNUSED(bitmap), +bool wxBitmapHandler::SaveFile(const wxBitmap *WXUNUSED(bitmap), const wxString& WXUNUSED(name), - int WXUNUSED(type), - const wxPalette *WXUNUSED(palette)) + wxBitmapType WXUNUSED(type), + const wxPalette *WXUNUSED(palette)) const { return false; }