]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/core/bitmap.cpp
QuickTime is needed by wxBitmap
[wxWidgets.git] / src / osx / core / bitmap.cpp
index 96a26525f9b5b92b20b9c96a2bc79decace898cd..dc09e4a12ba684d5ff65e499c277895e56e57073 100644 (file)
@@ -21,8 +21,6 @@
 #endif
 
 #include "wx/metafile.h"
-#include "wx/xpmdecod.h"
-
 #include "wx/rawbmp.h"
 
 IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject)
@@ -67,9 +65,11 @@ public:
     void Free();
     void SetOk( bool isOk) { m_ok = isOk; }
 
+#if WXWIN_COMPATIBILITY_2_8
     void SetWidth( int width ) { m_width = width; }
     void SetHeight( int height ) { m_height = height; }
     void SetDepth( int depth ) { m_depth = depth; }
+#endif
 
     int GetWidth() const { return m_width; }
     int GetHeight() const { return m_height; }
@@ -109,7 +109,7 @@ public:
     CGContextRef  GetBitmapContext() const;
 
     int           GetBytesPerRow() const { return m_bytesPerRow; }
-    private :
+private:
     bool Create(int width , int height , int depth);
     void Init();
 
@@ -287,8 +287,8 @@ bool wxBitmapRefData::Create( int w , int h , int d )
     m_depth = d ;
     m_hBitmap = NULL ;
 
-    m_bytesPerRow = GetBestBytesPerRow( w * 4 ) ;
-    size_t size = m_bytesPerRow * h ;
+    m_bytesPerRow = GetBestBytesPerRow( m_width * 4 ) ;
+    size_t size = m_bytesPerRow * m_height ;
     void* data = m_memBuf.GetWriteBuf( size ) ;
     if ( data != NULL )
     {
@@ -496,8 +496,13 @@ IconRef wxBitmapRefData::GetIconRef()
                      }
                 }
                 HUnlock( data );
+
                 OSStatus err = SetIconFamilyData( iconFamily, dataType , data );
-                wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") );
+                if ( err != noErr )
+                {
+                    wxFAIL_MSG("Error when adding bitmap");
+                }
+
                 DisposeHandle( data );
             }
             else
@@ -505,10 +510,10 @@ IconRef wxBitmapRefData::GetIconRef()
             {
                 // setup the header properly
 
-                Handle data = NULL ;
-                Handle maskdata = NULL ;
-                unsigned char * maskptr = NULL ;
-                unsigned char * ptr = NULL ;
+                Handle data;
+                Handle maskdata;
+                unsigned char * maskptr;
+                unsigned char * ptr;
                 size_t datasize, masksize ;
 
                 datasize = sz * sz * 4 ;
@@ -608,13 +613,13 @@ PicHandle wxBitmapRefData::GetPictHandle()
                 err = GraphicsExportDoExport(exporter, NULL);
                 CGImageRelease( imageRef );
 
-                               size_t handleSize = GetHandleSize( (Handle) m_pictHandle );
-                               // the 512 bytes header is only needed for pict files, but not in memory
-                               if ( handleSize >= 512 )
-                               {
-                                       memmove( *m_pictHandle , (char*)(*m_pictHandle)+512, handleSize - 512 );
-                                       SetHandleSize( (Handle) m_pictHandle, handleSize - 512 );
-                               }
+                size_t handleSize = GetHandleSize( (Handle) m_pictHandle );
+                // the 512 bytes header is only needed for pict files, but not in memory
+                if ( handleSize >= 512 )
+                {
+                    memmove( *m_pictHandle , (char*)(*m_pictHandle)+512, handleSize - 512 );
+                    SetHandleSize( (Handle) m_pictHandle, handleSize - 512 );
+                }
             }
             CloseComponent( exporter );
         }
@@ -785,6 +790,12 @@ wxBitmapRefData::~wxBitmapRefData()
     Free() ;
 }
 
+
+
+// ----------------------------------------------------------------------------
+// wxBitmap
+// ----------------------------------------------------------------------------
+
 bool wxBitmap::CopyFromIcon(const wxIcon& icon)
 {
     bool created = false ;
@@ -890,14 +901,6 @@ bool wxBitmap::CopyFromIcon(const wxIcon& icon)
     return true;
 }
 
-wxBitmap::wxBitmap()
-{
-}
-
-wxBitmap::~wxBitmap()
-{
-}
-
 wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits)
 {
     wxBitmapRefData* bitmapRefData;
@@ -952,11 +955,6 @@ wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits
     } /* bitmapRefData->IsOk() */
 }
 
-wxBitmap::wxBitmap(int w, int h, int d)
-{
-    (void)Create(w, h, d);
-}
-
 wxBitmap::wxBitmap(const void* data, wxBitmapType type, int width, int height, int depth)
 {
     (void) Create(data, type, width, height, depth);
@@ -1021,7 +1019,7 @@ IconRef wxBitmap::CreateIconRef() const
 }
 #endif
 
-#if wxOSX_USE_COCOA_OR_IPHONE
+#if wxOSX_USE_COCOA
 
 WX_NSImage wxBitmap::GetNSImage() const
 {
@@ -1031,6 +1029,15 @@ WX_NSImage wxBitmap::GetNSImage() const
 
 #endif
 
+#if wxOSX_USE_IPHONE
+
+WX_UIImage wxBitmap::GetUIImage() const
+{
+    wxCFRef< CGImageRef > cgimage(CreateCGImage());
+    return wxOSXCreateUIImageFromCGImage( cgimage );
+}
+
+#endif
 wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
 {
     wxCHECK_MSG( Ok() &&
@@ -1164,7 +1171,7 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
     int height = image.GetHeight();
 
     wxBitmapRefData* bitmapRefData;
-    
+
     m_refData = bitmapRefData = new wxBitmapRefData( width , height , depth ) ;
 
     if ( bitmapRefData->IsOk())
@@ -1396,6 +1403,7 @@ bool wxBitmap::HasAlpha() const
    return M_BITMAPDATA->HasAlpha() ;
 }
 
+#if WXWIN_COMPATIBILITY_2_8
 void wxBitmap::SetWidth(int w)
 {
     AllocExclusive();
@@ -1413,6 +1421,7 @@ void wxBitmap::SetDepth(int d)
     AllocExclusive();
     M_BITMAPDATA->SetDepth(d);
 }
+#endif // WXWIN_COMPATIBILITY_2_8
 
 void wxBitmap::SetOk(bool isOk)
 {
@@ -1647,7 +1656,7 @@ WXHBITMAP wxMask::GetHBITMAP() const
 // Standard Handlers
 // ----------------------------------------------------------------------------
 
-#if !defined( __LP64__ ) && !defined(__WXOSX_IPHONE__) 
+#if !defined( __LP64__ ) && !defined(__WXOSX_IPHONE__)
 
 class WXDLLEXPORT wxPICTResourceHandler: public wxBitmapHandler
 {
@@ -1661,8 +1670,11 @@ public:
         SetType(wxBITMAP_TYPE_PICT_RESOURCE);
     };
 
-    virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
-          int desiredWidth, int desiredHeight);
+    virtual bool LoadFile(wxBitmap *bitmap,
+                          const wxString& name,
+                          wxBitmapType type,
+                          int desiredWidth,
+                          int desiredHeight);
 };
 
 IMPLEMENT_DYNAMIC_CLASS(wxPICTResourceHandler, wxBitmapHandler)
@@ -1670,7 +1682,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxPICTResourceHandler, wxBitmapHandler)
 
 bool wxPICTResourceHandler::LoadFile(wxBitmap *bitmap,
                                      const wxString& name,
-                                     long WXUNUSED(flags),
+                                     wxBitmapType WXUNUSED(type),
                                      int WXUNUSED(desiredWidth),
                                      int WXUNUSED(desiredHeight))
 {