X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/44d669c8806e956dd26f48acd46b792822511fe8..26c66bc6ac1d8be06635ab3bb6831f3de2afbdd3:/include/wx/rawbmp.h diff --git a/include/wx/rawbmp.h b/include/wx/rawbmp.h index d4e9b60d45..9de976c0ea 100644 --- a/include/wx/rawbmp.h +++ b/include/wx/rawbmp.h @@ -9,8 +9,8 @@ // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifndef _WX_RAWBMP_H_BASE_ -#define _WX_RAWBMP_H_BASE_ +#ifndef _WX_RAWBMP_H_ +#define _WX_RAWBMP_H_ #include "wx/image.h" @@ -72,7 +72,7 @@ */ /* - Note: we do not use WXDLLEXPORT with classes in this file because VC++ has + Note: we do not use WXDLLIMPEXP_CORE with classes in this file because VC++ has problems with exporting inner class defined inside a specialization of a template class from a DLL. Besides, as all the methods are inline it's not really necessary to put them in DLL at all. @@ -164,8 +164,13 @@ typedef wxPixelFormat wxImagePixelFormat; #define wxPIXEL_FORMAT_ALPHA 3 #elif defined(__WXGTK__) - // Under GTK+ 2.X we use GdkPixbuf, which should be RGBA - typedef wxPixelFormat wxNativePixelFormat; + // Under GTK+ 2.X we use GdkPixbuf, which is standard RGB or RGBA + typedef wxPixelFormat wxNativePixelFormat; + + #define wxPIXEL_FORMAT_ALPHA 3 +#elif defined(__WXDFB__) + // Under DirectFB, RGB components are reversed, they're in BGR order + typedef wxPixelFormat wxNativePixelFormat; #define wxPIXEL_FORMAT_ALPHA 3 #endif @@ -525,7 +530,7 @@ struct wxPixelDataOut { m_ptr = NULL; } - + // return true if this iterator is valid bool IsOk() const { return m_ptr != NULL; } @@ -631,11 +636,22 @@ struct wxPixelDataOut // dtor unlocks the bitmap ~wxPixelDataIn() { - m_bmp.UngetRawData(*this); + if ( m_pixels.IsOk() ) + { +#if defined(__WXMSW__) || defined(__WXMAC__) + // this is a hack to mark wxBitmap as using alpha channel + if ( Format::HasAlpha ) + m_bmp.UseAlpha(); +#endif + m_bmp.UngetRawData(*this); + } + // else: don't call UngetRawData() if GetRawData() failed } - // call this to indicate that we should use the alpha channel - void UseAlpha() { m_bmp.UseAlpha(); } +#if WXWIN_COMPATIBILITY_2_8 + // not needed anymore, calls to it should be simply removed + wxDEPRECATED_INLINE( void UseAlpha(), wxEMPTY_PARAMETER_VALUE ) +#endif // private: -- see comment in the beginning of the file @@ -656,6 +672,7 @@ struct wxPixelDataOut } }; }; + #endif //wxUSE_GUI template > @@ -677,7 +694,6 @@ public: } }; - // some "predefined" pixel data classes #if wxUSE_IMAGE typedef wxPixelData wxImagePixelData; @@ -709,5 +725,4 @@ struct wxPixelIterator : public wxPixelData::Iterator { }; -#endif // _WX_RAWBMP_H_BASE_ - +#endif // _WX_RAWBMP_H_