]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/bitmap.cpp
cleanup - reformatting
[wxWidgets.git] / src / mac / carbon / bitmap.cpp
index ef1de44f2013c5f72dda897ca502bcfbd7d68cd8..5abc83eb77d8704a28aa31a21159cc36228d64eb 100644 (file)
@@ -367,6 +367,7 @@ IconRef wxBitmapRefData::GetIconRef()
                         *maskdest++ = 0xFF - *masksource++ ;
                         masksource++ ;
                         masksource++ ;
+                        masksource++ ;
                     }
                     else if ( hasAlpha )
                         *maskdest++ = a ;
@@ -522,7 +523,7 @@ CGImageRef wxBitmapRefData::CGImageCreate() const
             for ( int y = 0 ; y < h ; ++y , sourcemaskstart += maskrowbytes)
             {
                 unsigned char *sourcemask = sourcemaskstart ;
-                for ( int x = 0 ; x < w ; ++x , sourcemask+=3 , destalpha += 4 )
+                for ( int x = 0 ; x < w ; ++x , sourcemask += 4 , destalpha += 4 )
                 {
                     *destalpha = 0xFF - *sourcemask ;
                 }
@@ -801,7 +802,7 @@ wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits
                 bit = x % 8 ;
                 mask = 1 << bit ;
 
-                if ( linestart[index] & mask )
+                if ( !(linestart[index] & mask ) )
                 {
                     *destination++ = 0xFF ;
                     *destination++ = 0 ;
@@ -935,7 +936,7 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
     if ( M_BITMAPDATA->m_bitmapMask )
     {
         wxMemoryBuffer maskbuf ;
-        int rowBytes = ( destwidth + 3 ) & 0xFFFFFFC ;
+        int rowBytes = ( destwidth * 4 + 3 ) & 0xFFFFFFC ;
         size_t maskbufsize = rowBytes * destheight ;
 
         int sourcelinesize = M_BITMAPDATA->m_bitmapMask->GetBytesPerRow() ;
@@ -945,13 +946,12 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
         unsigned char *destdata = (unsigned char * ) maskbuf.GetWriteBuf( maskbufsize ) ;
         wxASSERT( (source != NULL) && (destdata != NULL) ) ;
 
-        source += rect.x + rect.y * sourcelinesize ;
+        source += rect.x * 4 + rect.y * sourcelinesize ;
         unsigned char *dest = destdata ;
 
         for (int yy = 0; yy < destheight; ++yy, source += sourcelinesize , dest += destlinesize)
         {
-            for (int xx = 0; xx < destlinesize; xx++ )
-                *(dest+xx) = 0xFF - *(source+xx*3) ;
+            memcpy( dest , source , destlinesize ) ;
         }
 
         maskbuf.UngetWriteBuf( maskbufsize ) ;
@@ -1146,11 +1146,17 @@ wxImage wxBitmap::ConvertToImage() const
         for (int xx = 0; xx < width; xx++)
         {
             color = *((long*) source) ;
+#ifdef WORDS_BIGENDIAN
             a = ((color&0xFF000000) >> 24) ;
             r = ((color&0x00FF0000) >> 16) ;
             g = ((color&0x0000FF00) >> 8) ;
             b = (color&0x000000FF);
-
+#else
+            b = ((color&0xFF000000) >> 24) ;
+            g = ((color&0x00FF0000) >> 16) ;
+            r = ((color&0x0000FF00) >> 8) ;
+            a = (color&0x000000FF);
+#endif
             if ( hasMask )
             {
                 if ( *maskp++ == 0xFF )
@@ -1164,6 +1170,7 @@ wxImage wxBitmap::ConvertToImage() const
 
                 maskp++ ;
                 maskp++ ;
+                maskp++ ;
             }
             else if ( hasAlpha )
                 *alpha++ = a ;
@@ -1349,6 +1356,7 @@ wxMask::wxMask( const wxBitmap& bitmap )
 }
 
 // Construct a mask from a mono bitmap (copies the bitmap).
+
 wxMask::wxMask( const wxMemoryBuffer& data, int width , int height , int bytesPerRow )
 {
     Init() ;
@@ -1389,12 +1397,13 @@ void wxMask::RealizeNative()
     Rect rect = { 0 , 0 , m_height , m_width } ;
 
     OSStatus err = NewGWorldFromPtr(
-        (GWorldPtr*) &m_maskBitmap , k24RGBPixelFormat , &rect , NULL , NULL , 0 ,
+        (GWorldPtr*) &m_maskBitmap , k32ARGBPixelFormat , &rect , NULL , NULL , 0 ,
         (char*) m_memBuf.GetData() , m_bytesPerRow ) ;
     verify_noerr( err ) ;
 }
 
 // Create a mask from a mono bitmap (copies the bitmap).
+
 bool wxMask::Create(const wxMemoryBuffer& data,int width , int height , int bytesPerRow)
 {
     m_memBuf = data ;
@@ -1414,7 +1423,7 @@ bool wxMask::Create(const wxBitmap& bitmap)
 {
     m_width = bitmap.GetWidth() ;
     m_height = bitmap.GetHeight() ;
-    m_bytesPerRow = ( m_width * 3 + 3 ) & 0xFFFFFFC ;
+    m_bytesPerRow = ( m_width * 4 + 3 ) & 0xFFFFFFC ;
 
     size_t size = m_bytesPerRow * m_height ;
     unsigned char * destdatabase = (unsigned char*) m_memBuf.GetWriteBuf( size ) ;
@@ -1440,12 +1449,14 @@ bool wxMask::Create(const wxBitmap& bitmap)
                 *destdata++ = 0xFF ;
                 *destdata++ = 0xFF ;
                 *destdata++ = 0xFF ;
+                *destdata++ = 0xFF ;
             }
             else
             {
                 *destdata++ = 0x00 ;
                 *destdata++ = 0x00 ;
                 *destdata++ = 0x00 ;
+                *destdata++ = 0x00 ;
             }
         }
     }
@@ -1462,7 +1473,7 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
 {
     m_width = bitmap.GetWidth() ;
     m_height = bitmap.GetHeight() ;
-    m_bytesPerRow = ( m_width * 3 + 3 ) & 0xFFFFFFC ;
+    m_bytesPerRow = ( m_width * 4 + 3 ) & 0xFFFFFFC ;
 
     size_t size = m_bytesPerRow * m_height ;
     unsigned char * destdatabase = (unsigned char*) m_memBuf.GetWriteBuf( size ) ;
@@ -1488,12 +1499,14 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
                 *destdata++ = 0xFF ;
                 *destdata++ = 0xFF ;
                 *destdata++ = 0xFF ;
+                *destdata++ = 0xFF ;
             }
             else
             {
                 *destdata++ = 0x00 ;
                 *destdata++ = 0x00 ;
                 *destdata++ = 0x00 ;
+                *destdata++ = 0x00 ;
             }
         }
     }