fixed wxBitmap<->wxImage conversion to not exchange red and blue components

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2007-04-03 08:46:53 +00:00
parent 43147cef6c
commit b39fc8d7b1
3 changed files with 126 additions and 15 deletions

View File

@@ -207,6 +207,9 @@ struct wxIDirectFBSurface : public wxDfbWrapper<IDirectFBSurface>
bool GetPixelFormat(DFBSurfacePixelFormat *caps)
{ return Check(m_ptr->GetPixelFormat(m_ptr, caps)); }
// convenience version of GetPixelFormat, returns DSPF_UNKNOWN if fails
DFBSurfacePixelFormat GetPixelFormat();
bool SetClip(const DFBRegion *clip)
{ return Check(m_ptr->SetClip(m_ptr, clip)); }
@@ -285,7 +288,6 @@ struct wxIDirectFBSurface : public wxDfbWrapper<IDirectFBSurface>
source_rect, dest_rect));
}
/// Returns bit depth used by the surface or -1 on error
int GetDepth();
@@ -315,6 +317,36 @@ struct wxIDirectFBSurface : public wxDfbWrapper<IDirectFBSurface>
wxIDirectFBSurfacePtr CreateCompatible(const wxSize& size = wxDefaultSize,
int flags = 0);
bool Lock(DFBSurfaceLockFlags flags, void **ret_ptr, int *ret_pitch)
{ return Check(m_ptr->Lock(m_ptr, flags, ret_ptr, ret_pitch)); }
bool Unlock()
{ return Check(m_ptr->Unlock(m_ptr)); }
/// Helper struct for safe locking & unlocking of surfaces
struct Locked
{
Locked(const wxIDirectFBSurfacePtr& surface, DFBSurfaceLockFlags flags)
: m_surface(surface)
{
if ( !surface->Lock(flags, &ptr, &pitch) )
ptr = NULL;
}
~Locked()
{
if ( ptr )
m_surface->Unlock();
}
void *ptr;
int pitch;
private:
wxIDirectFBSurfacePtr m_surface;
};
private:
// this is private because we want user code to use FlipToFront()
bool Flip(const DFBRegion *region, int flags);