]> git.saurik.com Git - wxWidgets.git/commitdiff
workaround for non-standard icon sizes under 64 bit
authorStefan Csomor <csomor@advancedconcepts.ch>
Wed, 19 Sep 2012 12:36:24 +0000 (12:36 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Wed, 19 Sep 2012 12:36:24 +0000 (12:36 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72511 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/osx/core/bitmap.cpp

index f6442aa30a68d620a8df2321aae0c1ddd49354df..387f5c6cf2f8ce03ebf12bab57af297be495efd0 100644 (file)
@@ -103,8 +103,10 @@ public:
     IconRef       GetIconRef();
 
 #ifndef __WXOSX_IPHONE__
     IconRef       GetIconRef();
 
 #ifndef __WXOSX_IPHONE__
+#ifndef __LP64__
     // returns a Pict from the bitmap content
     PicHandle     GetPictHandle();
     // returns a Pict from the bitmap content
     PicHandle     GetPictHandle();
+#endif
 #endif
 
     CGContextRef  GetBitmapContext() const;
 #endif
 
     CGContextRef  GetBitmapContext() const;
@@ -127,7 +129,9 @@ public:
 
     IconRef       m_iconRef;
 #ifndef __WXOSX_IPHONE__
 
     IconRef       m_iconRef;
 #ifndef __WXOSX_IPHONE__
+#ifndef __LP64__
     PicHandle     m_pictHandle;
     PicHandle     m_pictHandle;
+#endif
 #endif
     CGContextRef  m_hBitmap;
 };
 #endif
     CGContextRef  m_hBitmap;
 };
@@ -247,7 +251,9 @@ void wxBitmapRefData::Init()
 
 #ifndef __WXOSX_IPHONE__
     m_iconRef = NULL ;
 
 #ifndef __WXOSX_IPHONE__
     m_iconRef = NULL ;
+#ifndef __LP64__
     m_pictHandle = NULL ;
     m_pictHandle = NULL ;
+#endif
 #endif
     m_hBitmap = NULL ;
 
 #endif
     m_hBitmap = NULL ;
 
@@ -379,8 +385,12 @@ void *wxBitmapRefData::BeginRawAccess()
     wxCHECK_MSG( IsOk(), NULL, wxT("invalid bitmap") ) ;
     wxASSERT( m_rawAccessCount == 0 ) ;
 #ifndef __WXOSX_IPHONE__
     wxCHECK_MSG( IsOk(), NULL, wxT("invalid bitmap") ) ;
     wxASSERT( m_rawAccessCount == 0 ) ;
 #ifndef __WXOSX_IPHONE__
-    wxASSERT_MSG( m_pictHandle == NULL && m_iconRef == NULL ,
+#ifndef __LP64__
+    wxASSERT_MSG( m_pictHandle == NULL,
         wxT("Currently, modifing bitmaps that are used in controls already is not supported") ) ;
         wxT("Currently, modifing bitmaps that are used in controls already is not supported") ) ;
+#endif
+    wxASSERT_MSG( m_iconRef == NULL ,
+                 wxT("Currently, modifing bitmaps that are used in controls already is not supported") ) ;
 #endif
     ++m_rawAccessCount ;
 
 #endif
     ++m_rawAccessCount ;
 
@@ -428,8 +438,40 @@ IconRef wxBitmapRefData::GetIconRef()
         OSType dataType = 0 ;
         OSType maskType = 0 ;
 
         OSType dataType = 0 ;
         OSType maskType = 0 ;
 
+#ifdef __LP64__
+        // since we don't have PICT conversion available under 64 bit, use
+        // the next larger standard icon size
+        // TODO: Use NSImage
+        if (sz <= 16)
+            sz = 16;
+        else if ( sz <= 32)
+            sz = 32;
+        else if ( sz <= 48)
+            sz = 48;
+        else if ( sz <= 128)
+            sz = 128;
+        else if ( sz <= 256)
+            sz = 256;
+        else if ( sz <= 512)
+            sz = 512;
+        else if ( sz <= 1024)
+            sz = 1024;
+#endif
+        
         switch (sz)
         {
         switch (sz)
         {
+            case 1024:
+                dataType = kIconServices1024PixelDataARGB;
+                break;
+                
+            case 512:
+                dataType = kIconServices512PixelDataARGB;
+                break;
+                
+            case 256:
+                dataType = kIconServices256PixelDataARGB;
+                break;
             case 128:
                 dataType = kIconServices128PixelDataARGB ;
                 break;
             case 128:
                 dataType = kIconServices128PixelDataARGB ;
                 break;
@@ -583,8 +625,10 @@ IconRef wxBitmapRefData::GetIconRef()
         }
         else
         {
         }
         else
         {
+#ifndef __LP64__
             PicHandle pic = GetPictHandle() ;
             SetIconFamilyData( iconFamily, 'PICT' , (Handle) pic ) ;
             PicHandle pic = GetPictHandle() ;
             SetIconFamilyData( iconFamily, 'PICT' , (Handle) pic ) ;
+#endif
         }
         // transform into IconRef
 
         }
         // transform into IconRef
 
@@ -600,10 +644,15 @@ IconRef wxBitmapRefData::GetIconRef()
     return m_iconRef ;
 }
 
     return m_iconRef ;
 }
 
+#ifndef __WXOSX_IPHONE__
+#ifndef __LP64__
 PicHandle wxBitmapRefData::GetPictHandle()
 {
     return m_pictHandle ;
 }
 PicHandle wxBitmapRefData::GetPictHandle()
 {
     return m_pictHandle ;
 }
+#endif
+#endif
+
 #endif
 
 CGImageRef wxBitmapRefData::CreateCGImage() const
 #endif
 
 CGImageRef wxBitmapRefData::CreateCGImage() const