]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/icon.cpp
FixMath fix
[wxWidgets.git] / src / mac / carbon / icon.cpp
index ef4526a6705916e0a4a04c720f8287c3701a074f..25543c1e9575bfbb6436302838d895d9fe0dfd66 100644 (file)
@@ -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)
@@ -83,19 +103,19 @@ bool  wxICONResourceHandler::LoadFile(wxBitmap *bitmap, const wxString& name, lo
                                       int desiredWidth, int desiredHeight)
 {
     short theId = -1 ;
-    if ( name == "wxICON_INFORMATION" )
+    if ( name == wxT("wxICON_INFORMATION") )
     {
         theId = kNoteIcon ;
     }
-    else if ( name == "wxICON_QUESTION" )
+    else if ( name == wxT("wxICON_QUESTION") )
     {
         theId = kCautionIcon ;
     }
-    else if ( name == "wxICON_WARNING" )
+    else if ( name == wxT("wxICON_WARNING") )
     {
         theId = kCautionIcon ;
     }
-    else if ( name == "wxICON_ERROR" )
+    else if ( name == wxT("wxICON_ERROR") )
     {
         theId = kStopIcon ;
     }
@@ -103,13 +123,7 @@ bool  wxICONResourceHandler::LoadFile(wxBitmap *bitmap, const wxString& name, lo
     {
         Str255 theName ;
         OSType theType ;
-        
-#if TARGET_CARBON
-        c2pstrcpy( (StringPtr) theName , name ) ;
-#else
-        strcpy( (char *) theName , name ) ;
-        c2pstr( (char *) theName ) ;
-#endif
+        wxMacStringToPascal( name , theName ) ;
         
         Handle resHandle = GetNamedResource( 'cicn' , theName ) ;
         if ( resHandle != 0L )