]> git.saurik.com Git - wxWidgets.git/commitdiff
mask access row bytes fixed
authorStefan Csomor <csomor@advancedconcepts.ch>
Mon, 28 Feb 2005 17:28:43 +0000 (17:28 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Mon, 28 Feb 2005 17:28:43 +0000 (17:28 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32472 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/bitmap.cpp

index bd373e6ef1c99797ec310d4abe13dd4b045c2f1e..b661b95f8f5ce58ded89e5deaaf22b146498f96e 100644 (file)
@@ -1016,6 +1016,7 @@ wxImage wxBitmap::ConvertToImage() const
 
     bool hasAlpha = false ;
     bool hasMask = false ;
 
     bool hasAlpha = false ;
     bool hasMask = false ;
+    int maskBytesPerRow = 0 ;
     unsigned char *alpha = NULL ;
     unsigned char *mask = NULL ;
     if ( HasAlpha() )
     unsigned char *alpha = NULL ;
     unsigned char *mask = NULL ;
     if ( HasAlpha() )
@@ -1027,6 +1028,7 @@ wxImage wxBitmap::ConvertToImage() const
     {
         hasMask = true ;
         mask = (unsigned char*) GetMask()->GetRawAccess() ;
     {
         hasMask = true ;
         mask = (unsigned char*) GetMask()->GetRawAccess() ;
+        maskBytesPerRow = GetMask()->GetBytesPerRow() ;
     }
 
     if ( hasAlpha )
     }
 
     if ( hasAlpha )
@@ -1044,8 +1046,9 @@ wxImage wxBitmap::ConvertToImage() const
     static const int MASK_BLUE = 3;
     static const int MASK_BLUE_REPLACEMENT = 2;
 
     static const int MASK_BLUE = 3;
     static const int MASK_BLUE_REPLACEMENT = 2;
 
-    for (int yy = 0; yy < height; yy++)
+    for (int yy = 0; yy < height; yy++ , mask += maskBytesPerRow )
     {
     {
+        unsigned char * maskp = mask ;
         for (int xx = 0; xx < width; xx++)
         {
             long color = *((long*) source) ;
         for (int xx = 0; xx < width; xx++)
         {
             long color = *((long*) source) ;
@@ -1055,7 +1058,7 @@ wxImage wxBitmap::ConvertToImage() const
             unsigned char b = (color&0x000000FF);
             if ( hasMask )
             {
             unsigned char b = (color&0x000000FF);
             if ( hasMask )
             {
-                if ( *mask++ == 0 )
+                if ( *maskp++ == 0 )
                 {
                     if ( r == MASK_RED && g == MASK_GREEN && b == MASK_BLUE )
                         b = MASK_BLUE_REPLACEMENT ;
                 {
                     if ( r == MASK_RED && g == MASK_GREEN && b == MASK_BLUE )
                         b = MASK_BLUE_REPLACEMENT ;