X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/03e11df5470fd64d9d9a669d0b50b84c2d714736..5eac771d0949d4696c7c29f2ead81a2d0b0b73c8:/src/mac/carbon/icon.cpp diff --git a/src/mac/carbon/icon.cpp b/src/mac/carbon/icon.cpp index 7f666da534..5ec5f3ec80 100644 --- a/src/mac/carbon/icon.cpp +++ b/src/mac/carbon/icon.cpp @@ -19,74 +19,51 @@ IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) #endif +#include "wx/mac/private.h" + + /* * Icons */ - -wxIconRefData::wxIconRefData() -{ - m_ok = FALSE; - m_width = 0; - m_height = 0; - m_depth = 0; - m_quality = 0; - m_numColors = 0; - m_bitmapMask = NULL; - m_hBitmap = NULL ; - m_hIcon = NULL ; -} - -wxIconRefData::~wxIconRefData() -{ - if ( m_hIcon ) - { - DisposeCIcon( m_hIcon ) ; - m_hIcon = NULL ; - } - - if (m_bitmapMask) - { - delete m_bitmapMask; - m_bitmapMask = NULL; - } -} - wxIcon::wxIcon() { } -wxIcon::wxIcon(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height)) +wxIcon::wxIcon(const char bits[], int width, int height) : + wxBitmap(bits, width, height) { + } -wxIcon::wxIcon( const char **bits, int width, int height ) +wxIcon::wxIcon( const char **bits ) : + wxBitmap(bits) { } -wxIcon::wxIcon( char **bits, int width, int height ) +wxIcon::wxIcon( char **bits ) : + wxBitmap(bits) { } -wxIcon::wxIcon(const wxString& icon_file, long flags, +wxIcon::wxIcon(const wxString& icon_file, int flags, int desiredWidth, int desiredHeight) - { - LoadFile(icon_file, flags, desiredWidth, desiredHeight); + LoadFile(icon_file, (wxBitmapType) flags, desiredWidth, desiredHeight); } wxIcon::~wxIcon() { } -bool wxIcon::LoadFile(const wxString& filename, long type, +bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type, int desiredWidth, int desiredHeight) { UnRef(); - m_refData = new wxIconRefData; + m_refData = new wxBitmapRefData; - wxBitmapHandler *handler = FindHandler(type); + wxBitmapHandler *handler = FindHandler((wxBitmapType)type); if ( handler ) return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight); @@ -94,38 +71,66 @@ bool wxIcon::LoadFile(const wxString& filename, long type, return FALSE; } +void wxIcon::CopyFromBitmap(const wxBitmap& bmp) +{ + wxIcon *icon = (wxIcon*)(&bmp); + *this = *icon; +} + IMPLEMENT_DYNAMIC_CLASS(wxICONResourceHandler, wxBitmapHandler) bool wxICONResourceHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags, int desiredWidth, int desiredHeight) { - Str255 theName ; - short theId ; - OSType theType ; - -#if TARGET_CARBON - c2pstrcpy( (StringPtr) theName , name ) ; -#else - strcpy( (char *) theName , name ) ; - c2pstr( (char *) theName ) ; -#endif - - Handle resHandle = GetNamedResource( 'cicn' , theName ) ; - if ( resHandle != 0L ) + short theId = -1 ; + if ( name == "wxICON_INFORMATION" ) + { + theId = kNoteIcon ; + } + else if ( name == "wxICON_QUESTION" ) + { + theId = kCautionIcon ; + } + else if ( name == "wxICON_WARNING" ) + { + theId = kCautionIcon ; + } + else if ( name == "wxICON_ERROR" ) + { + theId = kStopIcon ; + } + else + { + Str255 theName ; + OSType theType ; + + #if TARGET_CARBON + c2pstrcpy( (StringPtr) theName , name ) ; + #else + strcpy( (char *) theName , name ) ; + c2pstr( (char *) theName ) ; + #endif + + Handle resHandle = GetNamedResource( 'cicn' , theName ) ; + if ( resHandle != 0L ) + { + GetResInfo( resHandle , &theId , &theType , theName ) ; + ReleaseResource( resHandle ) ; + } + } + if ( theId != -1 ) { - GetResInfo( resHandle , &theId , &theType , theName ) ; - ReleaseResource( resHandle ) ; - CIconHandle theIcon = (CIconHandle ) GetCIcon( theId ) ; if ( theIcon ) { - M_ICONHANDLERDATA->m_hIcon = theIcon ; - M_ICONHANDLERDATA->m_width = 32 ; - M_ICONHANDLERDATA->m_height = 32 ; + M_BITMAPHANDLERDATA->m_hIcon = theIcon ; + M_BITMAPHANDLERDATA->m_width = 32 ; + M_BITMAPHANDLERDATA->m_height = 32 ; - M_ICONHANDLERDATA->m_depth = 8 ; - M_ICONHANDLERDATA->m_ok = true ; - M_ICONHANDLERDATA->m_numColors = 256 ; + M_BITMAPHANDLERDATA->m_depth = 8 ; + M_BITMAPHANDLERDATA->m_ok = true ; + M_BITMAPHANDLERDATA->m_numColors = 256 ; + M_BITMAPHANDLERDATA->m_bitmapType = kMacBitmapTypeIcon ; return TRUE ; } }