#endif
#include "wx/msw/private.h"
+#include "wx/msw/dc.h"
#if wxUSE_WXDIB
#include "wx/msw/dib.h"
m_bitmapMask = new wxMask(*data.m_bitmapMask);
// FIXME: we don't copy m_hBitmap currently but we should, see wxBitmap::
- // CloneRefData()
+ // CloneGDIRefData()
wxASSERT_MSG( !data.m_isDIB,
_T("can't copy bitmap locked for raw access!") );
return new wxBitmapRefData;
}
-wxObjectRefData *wxBitmap::CloneRefData(const wxObjectRefData *dataOrig) const
+wxGDIRefData *wxBitmap::CloneGDIRefData(const wxGDIRefData *dataOrig) const
{
const wxBitmapRefData *
data = wx_static_cast(const wxBitmapRefData *, dataOrig);
self->m_refData = new wxBitmapRefData(*data);
}
+ wxBitmapRefData * const
+ selfdata = wx_static_cast(wxBitmapRefData *, m_refData);
+
// copy also the mask
wxMask * const maskSrc = data->GetMask();
if ( maskSrc )
{
- wxBitmapRefData *selfdata = wx_static_cast(wxBitmapRefData *, m_refData);
-
selfdata->SetMask(new wxMask(*maskSrc));
}
- return m_refData;
+ return selfdata;
}
bool wxBitmap::CopyFromIconOrCursor(const wxGDIImage& icon,
return true;
#else // __WXMICROWIN__ || __WXWINCE__
wxUnusedVar(icon);
+ wxUnusedVar(transp);
+
return false;
#endif // !__WXWINCE__/__WXWINCE__
}
(void)Create(w, h, dc);
}
-wxBitmap::wxBitmap(const void* data, long type, int width, int height, int depth)
+wxBitmap::wxBitmap(const void* data, wxBitmapType type, int width, int height, int depth)
{
(void)Create(data, type, width, height, depth);
}
wxBitmap::wxBitmap(const wxString& filename, wxBitmapType type)
{
- LoadFile(filename, (int)type);
+ LoadFile(filename, type);
}
bool wxBitmap::Create(int width, int height, int depth)
bool wxBitmap::Create(int width, int height, const wxDC& dc)
{
- wxCHECK_MSG( dc.Ok(), false, _T("invalid HDC in wxBitmap::Create()") );
+ wxCHECK_MSG( dc.IsOk(), false, _T("invalid HDC in wxBitmap::Create()") );
- return DoCreate(width, height, -1, dc.GetHDC());
+ const wxMSWDCImpl *impl = wxDynamicCast( dc.GetImpl(), wxMSWDCImpl );
+
+ if (impl)
+ return DoCreate(width, height, -1, impl->GetHDC());
+ else
+ return false;
}
bool wxBitmap::DoCreate(int w, int h, int d, WXHDC hdc)
bool wxBitmap::CreateFromImage(const wxImage& image, const wxDC& dc)
{
- wxCHECK_MSG( dc.Ok(), false,
+ wxCHECK_MSG( dc.IsOk(), false,
_T("invalid HDC in wxBitmap::CreateFromImage()") );
- return CreateFromImage(image, -1, dc.GetHDC());
+ const wxMSWDCImpl *impl = wxDynamicCast( dc.GetImpl(), wxMSWDCImpl );
+
+ if (impl)
+ return CreateFromImage(image, -1, impl->GetHDC());
+ else
+ return false;
}
#if wxUSE_WXDIB
// loading and saving bitmaps
// ----------------------------------------------------------------------------
-bool wxBitmap::LoadFile(const wxString& filename, long type)
+bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
{
UnRef();
return false;
}
-bool wxBitmap::Create(const void* data, long type, int width, int height, int depth)
+bool wxBitmap::Create(const void* data, wxBitmapType type, int width, int height, int depth)
{
UnRef();
}
bool wxBitmap::SaveFile(const wxString& filename,
- int type,
- const wxPalette *palette)
+ wxBitmapType type,
+ const wxPalette *palette) const
{
wxBitmapHandler *handler = wxDynamicCast(FindHandler(type), wxBitmapHandler);
// ----------------------------------------------------------------------------
// sub bitmap extraction
// ----------------------------------------------------------------------------
+wxBitmap wxBitmap::GetSubBitmap( const wxRect& rect ) const
+{
+ MemoryHDC dcSrc;
+ SelectInHDC selectSrc(dcSrc, GetHbitmap());
+ return GetSubBitmapOfHDC( rect, (WXHDC)dcSrc );
+}
-wxBitmap wxBitmap::GetSubBitmap( const wxRect& rect) const
+wxBitmap wxBitmap::GetSubBitmapOfHDC( const wxRect& rect, WXHDC hdc ) const
{
wxCHECK_MSG( Ok() &&
(rect.x >= 0) && (rect.y >= 0) &&
dcDst;
{
- SelectInHDC selectSrc(dcSrc, GetHbitmap()),
- selectDst(dcDst, GetHbitmapOf(ret));
-
- if ( !selectSrc || !selectDst )
+ SelectInHDC selectDst(dcDst, GetHbitmapOf(ret));
+
+ if ( !selectDst )
{
- wxLogLastError(_T("SelectObjct(hBitmap)"));
+ wxLogLastError(_T("SelectObject(destBitmap)"));
}
if ( !::BitBlt(dcDst, 0, 0, rect.width, rect.height,
- dcSrc, rect.x, rect.y, SRCCOPY) )
+ (HDC)hdc, rect.x, rect.y, SRCCOPY) )
{
wxLogLastError(_T("BitBlt"));
}
bool wxBitmapHandler::Create(wxGDIImage *image,
const void* data,
- long flags,
+ wxBitmapType type,
int width, int height, int depth)
{
wxBitmap *bitmap = wxDynamicCast(image, wxBitmap);
- return bitmap && Create(bitmap, data, flags, width, height, depth);
+ return bitmap && Create(bitmap, data, type, width, height, depth);
}
bool wxBitmapHandler::Load(wxGDIImage *image,
const wxString& name,
- long flags,
+ wxBitmapType type,
int width, int height)
{
wxBitmap *bitmap = wxDynamicCast(image, wxBitmap);
- return bitmap && LoadFile(bitmap, name, flags, width, height);
+ return bitmap && LoadFile(bitmap, name, type, width, height);
}
-bool wxBitmapHandler::Save(wxGDIImage *image,
+bool wxBitmapHandler::Save(const wxGDIImage *image,
const wxString& name,
- int type)
+ wxBitmapType type) const
{
wxBitmap *bitmap = wxDynamicCast(image, wxBitmap);
bool wxBitmapHandler::Create(wxBitmap *WXUNUSED(bitmap),
const void* WXUNUSED(data),
- long WXUNUSED(type),
+ wxBitmapType WXUNUSED(type),
int WXUNUSED(width),
int WXUNUSED(height),
int WXUNUSED(depth))
bool wxBitmapHandler::LoadFile(wxBitmap *WXUNUSED(bitmap),
const wxString& WXUNUSED(name),
- long WXUNUSED(type),
+ wxBitmapType WXUNUSED(type),
int WXUNUSED(desiredWidth),
int WXUNUSED(desiredHeight))
{
return false;
}
-bool wxBitmapHandler::SaveFile(wxBitmap *WXUNUSED(bitmap),
+bool wxBitmapHandler::SaveFile(const wxBitmap *WXUNUSED(bitmap),
const wxString& WXUNUSED(name),
- int WXUNUSED(type),
- const wxPalette *WXUNUSED(palette))
+ wxBitmapType WXUNUSED(type),
+ const wxPalette *WXUNUSED(palette)) const
{
return false;
}