X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/655719367ac5e131d9642e5783f3ecf64d1a3385..900a87655f9a8533817c82fdac7deaedf345b246:/src/mac/carbon/icon.cpp?ds=sidebyside diff --git a/src/mac/carbon/icon.cpp b/src/mac/carbon/icon.cpp index bd1937bc2a..25543c1e95 100644 --- a/src/mac/carbon/icon.cpp +++ b/src/mac/carbon/icon.cpp @@ -9,16 +9,19 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "icon.h" #endif +#include "wx/wxprec.h" + #include "wx/icon.h" #if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) #endif +#include "wx/image.h" #include "wx/mac/private.h" @@ -61,14 +64,31 @@ bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type, { UnRef(); - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler((wxBitmapType)type); - + wxBitmapHandler *handler = FindHandler(type); + if ( handler ) - return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight); + { + m_refData = new wxBitmapRefData; + return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight ); + } else - return FALSE; + { + wxImage loadimage(filename, type); + if (loadimage.Ok()) + { + if ( desiredWidth == -1 ) + desiredWidth = loadimage.GetWidth() ; + if ( desiredHeight == -1 ) + desiredHeight = loadimage.GetHeight() ; + if ( desiredWidth != loadimage.GetWidth() || desiredHeight != loadimage.GetHeight() ) + loadimage.Rescale( desiredWidth , desiredHeight ) ; + wxBitmap bmp( loadimage ); + wxIcon *icon = (wxIcon*)(&bmp); + *this = *icon; + return true; + } + } + return false ; } void wxIcon::CopyFromBitmap(const wxBitmap& bmp)