X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d0ee33f5c6908b4ac5e1364381f0ef00942e3936..0b822969a677939811d9fb966177031fb5fc625b:/include/wx/rawbmp.h diff --git a/include/wx/rawbmp.h b/include/wx/rawbmp.h index 1595183e51..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" @@ -71,14 +71,8 @@ } */ -#ifdef __VISUALC__ - // VC++ gives an absolutely harmless warning for wxPixelData ctor - #pragma warning(push) - #pragma warning(disable: 4355) // 'this' used in initializer list -#endif - /* - 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. @@ -170,9 +164,14 @@ typedef wxPixelFormat wxImagePixelFormat; #define wxPIXEL_FORMAT_ALPHA 3 #elif defined(__WXGTK__) - // Under GTK+ 2.X we use GdkPixbuf, which should be RGBA + // 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 @@ -526,6 +525,12 @@ struct wxPixelDataOut bmp.GetRawData(data, PixelFormat::BitsPerPixel); } + // default constructor + Iterator() + { + 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,15 +672,8 @@ struct wxPixelDataOut } }; }; -#endif //wxUSE_GUI -#ifdef __VISUALC__ - // typedef-name 'foo' used as synonym for class-name 'bar' - // (VC++ gives this warning each time wxPixelData::Base is used but it - // doesn't make any sense here -- what's wrong with using typedef instead - // of class, this is what it is here for!) - #pragma warning(disable: 4097) -#endif // __VISUALC__ +#endif //wxUSE_GUI template > class wxPixelData : @@ -685,7 +694,6 @@ public: } }; - // some "predefined" pixel data classes #if wxUSE_IMAGE typedef wxPixelData wxImagePixelData; @@ -717,9 +725,4 @@ struct wxPixelIterator : public wxPixelData::Iterator { }; -#ifdef __VISUALC__ - #pragma warning(pop) -#endif - -#endif // _WX_RAWBMP_H_BASE_ - +#endif // _WX_RAWBMP_H_