]> git.saurik.com Git - wxWidgets.git/commitdiff
falling back to wxImage handler
authorStefan Csomor <csomor@advancedconcepts.ch>
Tue, 4 Jan 2005 06:22:37 +0000 (06:22 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Tue, 4 Jan 2005 06:22:37 +0000 (06:22 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31225 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/icon.cpp

index bd1937bc2a45dba54274849335887c399a7832f3..ab1dffe712704289a251700b36e47673760da401 100644 (file)
@@ -19,6 +19,7 @@
 IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap)
 #endif
 
+#include "wx/image.h"
 #include "wx/mac/private.h"
 
 
@@ -61,14 +62,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)