git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11955
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
m_bitmapType = kMacBitmapTypeUnknownType ;
}
m_bitmapType = kMacBitmapTypeUnknownType ;
}
-wxBitmapRefData::~wxBitmapRefData()
+// TODO move this do a public function of Bitmap Ref
+static void DisposeBitmapRefData(wxBitmapRefData *data)
+ switch (data->m_bitmapType)
{
case kMacBitmapTypePict :
{
{
case kMacBitmapTypePict :
{
- KillPicture( m_hPict ) ;
- m_hPict = NULL ;
+ KillPicture( data->m_hPict ) ;
+ data->m_hPict = NULL ;
}
}
break ;
case kMacBitmapTypeGrafWorld :
{
}
}
break ;
case kMacBitmapTypeGrafWorld :
{
- wxMacDestroyGWorld( m_hBitmap ) ;
- m_hBitmap = NULL ;
+ wxMacDestroyGWorld( data->m_hBitmap ) ;
+ data->m_hBitmap = NULL ;
}
}
break ;
case kMacBitmapTypeIcon :
}
}
break ;
case kMacBitmapTypeIcon :
- DisposeCIcon( m_hIcon ) ;
- m_hIcon = NULL ;
+ DisposeCIcon( data->m_hIcon ) ;
+ data->m_hIcon = NULL ;
+ if (data->m_bitmapMask)
- delete m_bitmapMask;
- m_bitmapMask = NULL;
+ delete data->m_bitmapMask;
+ data->m_bitmapMask = NULL;
+wxBitmapRefData::~wxBitmapRefData()
+{
+ DisposeBitmapRefData( this ) ;
+}
+
wxList wxBitmapBase::sm_handlers;
wxList wxBitmapBase::sm_handlers;
RGBColor color;
bitmap = GetHBITMAP();
RGBColor color;
bitmap = GetHBITMAP();
- subbitmap = wxMacCreateGWorld(rect.width, rect.height, GetDepth());
+ subbitmap = ref->m_hBitmap ;
LockPixels(GetGWorldPixMap(bitmap));
LockPixels(GetGWorldPixMap(subbitmap));
LockPixels(GetGWorldPixMap(bitmap));
LockPixels(GetGWorldPixMap(subbitmap));
}
UnlockPixels(GetGWorldPixMap(bitmap));
UnlockPixels(GetGWorldPixMap(subbitmap));
}
UnlockPixels(GetGWorldPixMap(bitmap));
UnlockPixels(GetGWorldPixMap(subbitmap));
- ret.SetHBITMAP(subbitmap);
}
}
SetGWorld( origPort, origDevice );
}
}
SetGWorld( origPort, origDevice );
void wxBitmap::SetHBITMAP(WXHBITMAP bmp)
{
void wxBitmap::SetHBITMAP(WXHBITMAP bmp)
{
+ DisposeBitmapRefData( M_BITMAPDATA ) ;
+
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = bmp ;
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = bmp ;
- M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ;
+ M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ;
}
bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
}
bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
m_bitmapType = kMacBitmapTypeUnknownType ;
}
m_bitmapType = kMacBitmapTypeUnknownType ;
}
-wxBitmapRefData::~wxBitmapRefData()
+// TODO move this do a public function of Bitmap Ref
+static void DisposeBitmapRefData(wxBitmapRefData *data)
+ switch (data->m_bitmapType)
{
case kMacBitmapTypePict :
{
{
case kMacBitmapTypePict :
{
- KillPicture( m_hPict ) ;
- m_hPict = NULL ;
+ KillPicture( data->m_hPict ) ;
+ data->m_hPict = NULL ;
}
}
break ;
case kMacBitmapTypeGrafWorld :
{
}
}
break ;
case kMacBitmapTypeGrafWorld :
{
- wxMacDestroyGWorld( m_hBitmap ) ;
- m_hBitmap = NULL ;
+ wxMacDestroyGWorld( data->m_hBitmap ) ;
+ data->m_hBitmap = NULL ;
}
}
break ;
case kMacBitmapTypeIcon :
}
}
break ;
case kMacBitmapTypeIcon :
- DisposeCIcon( m_hIcon ) ;
- m_hIcon = NULL ;
+ DisposeCIcon( data->m_hIcon ) ;
+ data->m_hIcon = NULL ;
+ if (data->m_bitmapMask)
- delete m_bitmapMask;
- m_bitmapMask = NULL;
+ delete data->m_bitmapMask;
+ data->m_bitmapMask = NULL;
+wxBitmapRefData::~wxBitmapRefData()
+{
+ DisposeBitmapRefData( this ) ;
+}
+
wxList wxBitmapBase::sm_handlers;
wxList wxBitmapBase::sm_handlers;
RGBColor color;
bitmap = GetHBITMAP();
RGBColor color;
bitmap = GetHBITMAP();
- subbitmap = wxMacCreateGWorld(rect.width, rect.height, GetDepth());
+ subbitmap = ref->m_hBitmap ;
LockPixels(GetGWorldPixMap(bitmap));
LockPixels(GetGWorldPixMap(subbitmap));
LockPixels(GetGWorldPixMap(bitmap));
LockPixels(GetGWorldPixMap(subbitmap));
}
UnlockPixels(GetGWorldPixMap(bitmap));
UnlockPixels(GetGWorldPixMap(subbitmap));
}
UnlockPixels(GetGWorldPixMap(bitmap));
UnlockPixels(GetGWorldPixMap(subbitmap));
- ret.SetHBITMAP(subbitmap);
}
}
SetGWorld( origPort, origDevice );
}
}
SetGWorld( origPort, origDevice );
void wxBitmap::SetHBITMAP(WXHBITMAP bmp)
{
void wxBitmap::SetHBITMAP(WXHBITMAP bmp)
{
+ DisposeBitmapRefData( M_BITMAPDATA ) ;
+
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = bmp ;
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = bmp ;
- M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ;
+ M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ;
}
bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
}
bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)