made wxNativePixelFormat usable under Mac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20917 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -104,7 +104,7 @@
|
|||||||
template <class Channel,
|
template <class Channel,
|
||||||
size_t Bpp, int R, int G, int B, int A = -1,
|
size_t Bpp, int R, int G, int B, int A = -1,
|
||||||
class Pixel = wxUint32>
|
class Pixel = wxUint32>
|
||||||
|
|
||||||
struct WXDLLEXPORT wxPixelFormat
|
struct WXDLLEXPORT wxPixelFormat
|
||||||
{
|
{
|
||||||
// iterator over pixels is usually of type "ChannelType *"
|
// iterator over pixels is usually of type "ChannelType *"
|
||||||
@@ -120,7 +120,7 @@ struct WXDLLEXPORT wxPixelFormat
|
|||||||
enum { BitsPerPixel = Bpp };
|
enum { BitsPerPixel = Bpp };
|
||||||
|
|
||||||
// size of one pixel in ChannelType units (usually bytes)
|
// 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
|
// the channels indices inside the pixel
|
||||||
enum
|
enum
|
||||||
@@ -143,29 +143,27 @@ struct WXDLLEXPORT wxPixelFormat
|
|||||||
typedef wxPixelFormat<unsigned char, 24, 0, 1, 2> wxImagePixelFormat;
|
typedef wxPixelFormat<unsigned char, 24, 0, 1, 2> wxImagePixelFormat;
|
||||||
|
|
||||||
// the (most common) native bitmap format without alpha support
|
// the (most common) native bitmap format without alpha support
|
||||||
typedef wxPixelFormat<unsigned char, 24,
|
#if defined(__WXMSW__)
|
||||||
#if defined(__WXMSW__)
|
// under MSW the RGB components are inversed, they're in BGR order
|
||||||
2, 1, 0
|
typedef wxPixelFormat<unsigned char, 24, 2, 1, 0> wxNativePixelFormat;
|
||||||
#elif defined(__WXMAC__)
|
|
||||||
1, 2, 3
|
#define wxPIXEL_FORMAT_ALPHA 3
|
||||||
#else // default for the others (not supported anyhow)
|
#elif defined(__WXMAC__)
|
||||||
0, 1, 2
|
// under Mac, first component is unused but still present, hence we use
|
||||||
#endif // platform
|
// 32bpp, not 24
|
||||||
> wxNativePixelFormat;
|
typedef wxPixelFormat<unsigned char, 32, 1, 2, 3> wxNativePixelFormat;
|
||||||
|
|
||||||
|
#define wxPIXEL_FORMAT_ALPHA 0
|
||||||
|
#endif
|
||||||
|
|
||||||
// the (most common) native format for bitmaps with alpha channel
|
// the (most common) native format for bitmaps with alpha channel
|
||||||
typedef wxPixelFormat<unsigned char, 32,
|
#ifdef wxPIXEL_FORMAT_ALPHA
|
||||||
wxNativePixelFormat::RED,
|
typedef wxPixelFormat<unsigned char, 32,
|
||||||
wxNativePixelFormat::GREEN,
|
wxNativePixelFormat::RED,
|
||||||
wxNativePixelFormat::BLUE,
|
wxNativePixelFormat::GREEN,
|
||||||
#if defined(__WXMSW__)
|
wxNativePixelFormat::BLUE,
|
||||||
3
|
wxPIXEL_FORMAT_ALPHA> wxAlphaPixelFormat;
|
||||||
#elif defined(__WXMAC__)
|
#endif // wxPIXEL_FORMAT_ALPHA
|
||||||
0
|
|
||||||
#else // default for the others (not supported anyhow)
|
|
||||||
3
|
|
||||||
#endif // platform
|
|
||||||
> wxAlphaPixelFormat;
|
|
||||||
|
|
||||||
// we also define the (default/best) pixel format for the given class: this is
|
// 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
|
// used as default value for the pixel format in wxPixelIterator template
|
||||||
|
@@ -1349,14 +1349,11 @@ void *wxBitmap::GetRawData(wxPixelDataBase& data, int bpp)
|
|||||||
|
|
||||||
GWorldPtr gworld = MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap);
|
GWorldPtr gworld = MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap);
|
||||||
PixMapHandle hPixMap = GetGWorldPixMap(gworld);
|
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 )
|
wxCHECK_MSG( (*hPixMap)->pixelSize == bpp, NULL,
|
||||||
{
|
_T("GetRawData(): pixel format mismatch") );
|
||||||
wxFAIL_MSG( _T("bpp mismatch in GetRawData()") );
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !LockPixels(hPixMap) )
|
if ( !LockPixels(hPixMap) )
|
||||||
{
|
{
|
||||||
|
@@ -1349,14 +1349,11 @@ void *wxBitmap::GetRawData(wxPixelDataBase& data, int bpp)
|
|||||||
|
|
||||||
GWorldPtr gworld = MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap);
|
GWorldPtr gworld = MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap);
|
||||||
PixMapHandle hPixMap = GetGWorldPixMap(gworld);
|
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 )
|
wxCHECK_MSG( (*hPixMap)->pixelSize == bpp, NULL,
|
||||||
{
|
_T("GetRawData(): pixel format mismatch") );
|
||||||
wxFAIL_MSG( _T("bpp mismatch in GetRawData()") );
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !LockPixels(hPixMap) )
|
if ( !LockPixels(hPixMap) )
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user