// Created: 2003/08/11
// RCS-ID: $Id$
// Copyright: (c) 2003 David Elliott
-// Licence: wxWindows licence
+// Licence: wxWidgets licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
+
+#include "wx/icon.h"
+
#ifndef WX_PRECOMP
- #include "wx/icon.h"
+ #include "wx/bitmap.h"
#endif //WX_PRECOMP
-#include "wx/bitmap.h"
+
+#include "wx/cocoa/autorelease.h"
#import <AppKit/NSImage.h>
wxIconRefData( const wxIconRefData& data );
virtual ~wxIconRefData();
+ virtual bool IsOk() const { return m_ok; }
+
protected:
int m_width;
int m_height;
wxIconRefData::wxIconRefData()
{
- m_ok = FALSE;
+ m_ok = false;
m_width = 0;
m_height = 0;
m_depth = 0;
wxIconRefData::~wxIconRefData()
{
+ wxAutoNSAutoreleasePool pool;
[m_cocoaNSImage release];
m_cocoaNSImage = NULL;
}
{
}
+wxGDIRefData *wxIcon::CreateGDIRefData() const
+{
+ return new wxIconRefData;
+}
+
+wxGDIRefData *wxIcon::CloneGDIRefData(const wxGDIRefData *data) const
+{
+ return new wxIconRefData(*wx_static_cast(const wxIconRefData *, data));
+}
+
bool wxIcon::CreateFromXpm(const char **xpm)
{
wxBitmap bitmap(xpm);
bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type,
int desiredWidth, int desiredHeight)
{
- UnRef();
-
- m_refData = new wxIconRefData;
- M_ICONDATA->m_width = 5;
- M_ICONDATA->m_height = 5;
- M_ICONDATA->m_cocoaNSImage = [[NSImage alloc] initWithSize:NSMakeSize(5,5)];
- M_ICONDATA->m_ok = true;
- M_ICONDATA->m_numColors = 0;
- M_ICONDATA->m_quality = 0;
-
- return FALSE;
+ wxBitmap bitmap(filename, type);
+ CopyFromBitmap(bitmap);
+ return bitmap.Ok();
}
void wxIcon::CopyFromBitmap(const wxBitmap& bitmap)
m_refData = new wxIconRefData;
M_ICONDATA->m_width = bitmap.GetWidth();
M_ICONDATA->m_height = bitmap.GetHeight();
- M_ICONDATA->m_cocoaNSImage = bitmap.GetNSImage(true);
+ wxAutoNSAutoreleasePool pool;
+ M_ICONDATA->m_cocoaNSImage = [bitmap.GetNSImage(true) retain];
M_ICONDATA->m_ok = bitmap.Ok();
M_ICONDATA->m_numColors = 0;
M_ICONDATA->m_quality = 0;
}
-bool wxIcon::Ok() const
-{
- return m_refData && M_ICONDATA->m_ok;
-}
-
int wxIcon::GetWidth() const
{
if(!m_refData)
return nil;
return M_ICONDATA->m_cocoaNSImage;
}
-