From: Vadim Zeitlin Date: Wed, 4 Jun 2003 00:50:18 +0000 (+0000) Subject: made wxNativePixelFormat usable under Mac X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b6d5d4548c2c8b984314650dcb96522fedc51d86 made wxNativePixelFormat usable under Mac git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20917 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/rawbmp.h b/include/wx/rawbmp.h index dbdddcee3f..4edf2cd974 100644 --- a/include/wx/rawbmp.h +++ b/include/wx/rawbmp.h @@ -104,7 +104,7 @@ template - + struct WXDLLEXPORT wxPixelFormat { // iterator over pixels is usually of type "ChannelType *" @@ -120,7 +120,7 @@ struct WXDLLEXPORT wxPixelFormat enum { BitsPerPixel = Bpp }; // size of one pixel in ChannelType units (usually bytes) - enum { SizePixel = BitsPerPixel / (8 * sizeof(ChannelType)) }; + enum { SizePixel = Bpp / (8 * sizeof(Channel)) }; // the channels indices inside the pixel enum @@ -143,29 +143,27 @@ struct WXDLLEXPORT wxPixelFormat typedef wxPixelFormat wxImagePixelFormat; // the (most common) native bitmap format without alpha support -typedef wxPixelFormat wxNativePixelFormat; +#if defined(__WXMSW__) + // under MSW the RGB components are inversed, they're in BGR order + typedef wxPixelFormat wxNativePixelFormat; + + #define wxPIXEL_FORMAT_ALPHA 3 +#elif defined(__WXMAC__) + // under Mac, first component is unused but still present, hence we use + // 32bpp, not 24 + typedef wxPixelFormat wxNativePixelFormat; + + #define wxPIXEL_FORMAT_ALPHA 0 +#endif // the (most common) native format for bitmaps with alpha channel -typedef wxPixelFormat wxAlphaPixelFormat; +#ifdef wxPIXEL_FORMAT_ALPHA + typedef wxPixelFormat wxAlphaPixelFormat; +#endif // wxPIXEL_FORMAT_ALPHA // we also define the (default/best) pixel format for the given class: this is // used as default value for the pixel format in wxPixelIterator template diff --git a/src/mac/bitmap.cpp b/src/mac/bitmap.cpp index 8918a44ae6..be836afd23 100644 --- a/src/mac/bitmap.cpp +++ b/src/mac/bitmap.cpp @@ -1349,14 +1349,11 @@ void *wxBitmap::GetRawData(wxPixelDataBase& data, int bpp) GWorldPtr gworld = MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap); PixMapHandle hPixMap = GetGWorldPixMap(gworld); - wxCHECK_MSG( hPixMap, NULL, _T("failed to get PixMap from GWorld?") ); + wxCHECK_MSG( hPixMap && *hPixMap, NULL, + _T("GetRawData(): failed to get PixMap from GWorld?") ); - if ( (*hPixMap)->pixelSize != bpp ) - { - wxFAIL_MSG( _T("bpp mismatch in GetRawData()") ); - - return NULL; - } + wxCHECK_MSG( (*hPixMap)->pixelSize == bpp, NULL, + _T("GetRawData(): pixel format mismatch") ); if ( !LockPixels(hPixMap) ) { diff --git a/src/mac/carbon/bitmap.cpp b/src/mac/carbon/bitmap.cpp index 8918a44ae6..be836afd23 100644 --- a/src/mac/carbon/bitmap.cpp +++ b/src/mac/carbon/bitmap.cpp @@ -1349,14 +1349,11 @@ void *wxBitmap::GetRawData(wxPixelDataBase& data, int bpp) GWorldPtr gworld = MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap); PixMapHandle hPixMap = GetGWorldPixMap(gworld); - wxCHECK_MSG( hPixMap, NULL, _T("failed to get PixMap from GWorld?") ); + wxCHECK_MSG( hPixMap && *hPixMap, NULL, + _T("GetRawData(): failed to get PixMap from GWorld?") ); - if ( (*hPixMap)->pixelSize != bpp ) - { - wxFAIL_MSG( _T("bpp mismatch in GetRawData()") ); - - return NULL; - } + wxCHECK_MSG( (*hPixMap)->pixelSize == bpp, NULL, + _T("GetRawData(): pixel format mismatch") ); if ( !LockPixels(hPixMap) ) {