// raw bitmap access support functions
void *GetRawData(wxPixelDataBase& data, int bpp);
void UngetRawData(wxPixelDataBase& data);
- void UseAlpha();
wxPalette* GetPalette() const;
void SetPalette(const wxPalette& palette);
void UngetRawData(wxPixelDataBase& data);
bool HasAlpha() const;
- void UseAlpha();
protected:
bool CreateFromImage(const wxImage& image, int depth);
void UngetRawData(wxPixelDataBase& data);
bool HasAlpha() const;
- void UseAlpha();
protected:
bool CreateFromImage(const wxImage& image, int depth);
// these functions are internal and shouldn't be used, they risk to
// disappear in the future
bool HasAlpha() const;
- void UseAlpha();
// implementation only from now on
// -------------------------------
// 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"
{
m_ptr = NULL;
}
-
+
// return true if this iterator is valid
bool IsOk() const { return m_ptr != NULL; }
// 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() {} );
+#endif
// private: -- see comment in the beginning of the file
}
};
};
+
#endif //wxUSE_GUI
template <class Image, class PixelFormat = wxPixelFormatFor<Image> >
{
};
-#endif // _WX_RAWBMP_H_BASE_
-
+#endif // _WX_RAWBMP_H_
wxLogError(_T("Failed to gain raw access to bitmap data"));
return;
}
- data.UseAlpha();
wxAlphaPixelData::Iterator p(data);
for ( int y = 0; y < SIZE; ++y )
{
return;
}
- data.UseAlpha();
wxAlphaPixelData::Iterator p(data);
for ( int y = 0; y < REAL_SIZE; ++y )
{ // TODO
}
-void wxBitmap::UseAlpha()
-{ // TODO
-}
-
// ========================================================================
// wxMask
// ========================================================================
gdk_pixbuf_get_has_alpha(M_BMPDATA->m_pixbuf);
}
-void wxBitmap::UseAlpha()
-{
- GdkPixbuf* pixbuf = GetPixbuf();
- // add alpha if necessary
- if (!gdk_pixbuf_get_has_alpha(pixbuf))
- {
- M_BMPDATA->m_pixbuf = NULL;
- AllocExclusive();
- M_BMPDATA->m_pixbuf = gdk_pixbuf_add_alpha(pixbuf, false, 0, 0, 0);
- g_object_unref(pixbuf);
- }
-}
-
wxObjectRefData* wxBitmap::CreateRefData() const
{
return new wxBitmapRefData;
return false;
}
-void wxBitmap::UseAlpha()
-{
-}
-
//-----------------------------------------------------------------------------
// wxBitmapHandler
//-----------------------------------------------------------------------------
#endif
-void wxBitmap::UseAlpha()
-{
-}
-
bool wxBitmap::HasAlpha() const
{
return false;