]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 7 Jun 2014 22:12:02 +0000 (22:12 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 7 Jun 2014 22:12:02 +0000 (22:12 +0000)
coders/xcf.c

index f5266038e489c7aba401a3263b7367c3cb385cfb..511641148c4414b71691ecc4bcbb02529948c4ce 100644 (file)
@@ -461,123 +461,111 @@ static MagickBooleanType load_tile_rle(Image *image,Image *tile_image,
               length=(size_t) ((*xcfdata << 8) + xcfdata[1]);
               xcfdata+=2;
             }
-            size-=length;
-            if (size < 0)
-              goto bogus_rle;
-            if (&xcfdata[length-1] > xcfdatalimit)
-              goto bogus_rle;
-            while (length-- > 0)
+          size-=length;
+          if (size < 0)
+            goto bogus_rle;
+          if (&xcfdata[length-1] > xcfdatalimit)
+            goto bogus_rle;
+          while (length-- > 0)
+          {
+            data=(*xcfdata++);
+            switch (i)
             {
-              data=(*xcfdata++);
-              switch (i)
+              case 0:
               {
-                case 0:
-                {
-                  if (inDocInfo->image_type != GIMP_GRAY)
-                    {
-                      SetPixelRed(tile_image,ScaleCharToQuantum(data),q);
-                      SetPixelGreen(tile_image,ScaleCharToQuantum(data),q);
-                      SetPixelBlue(tile_image,ScaleCharToQuantum(data),q);
-                      SetPixelAlpha(tile_image,data == 255U ? alpha :
-                        ScaleCharToQuantum(data),q);
-                    }
-                  else
-                    {
-                      SetPixelGray(tile_image,ScaleCharToQuantum(data),q);
-                      SetPixelAlpha(tile_image,data == 255U ? alpha :
-                        ScaleCharToQuantum(data),q);
-                    }
-                  break;
-                }
-                case 1:
-                {
-                  if (inDocInfo->image_type == GIMP_GRAY)
-                    SetPixelGray(tile_image,ScaleCharToQuantum(data),q);
-                  else
+                if (inDocInfo->image_type == GIMP_GRAY)
+                  SetPixelGray(tile_image,ScaleCharToQuantum(data),q);
+                else
+                  {
+                    SetPixelRed(tile_image,ScaleCharToQuantum(data),q);
                     SetPixelGreen(tile_image,ScaleCharToQuantum(data),q);
-                  break;
-                }
-                case 2:
-                {
-                  SetPixelBlue(tile_image,ScaleCharToQuantum(data),q);
-                  break;
-                }
-                case 3:
-                {
-                  SetPixelAlpha(tile_image,data == 255U ? alpha :
-                    ScaleCharToQuantum(data),q);
-                  break;
-                }
+                    SetPixelBlue(tile_image,ScaleCharToQuantum(data),q);
+                  }
+                SetPixelAlpha(tile_image,alpha,q);
+                break;
+              }
+              case 1:
+              {
+                if (inDocInfo->image_type == GIMP_GRAY)
+                  SetPixelAlpha(tile_image,ScaleCharToQuantum(data),q);
+                else
+                  SetPixelGreen(tile_image,ScaleCharToQuantum(data),q);
+                break;
+              }
+              case 2:
+              {
+                SetPixelBlue(tile_image,ScaleCharToQuantum(data),q);
+                break;
+              }
+              case 3:
+              {
+                SetPixelAlpha(tile_image,ScaleCharToQuantum(data),q);
+                break;
               }
-              q+=GetPixelChannels(tile_image);
             }
+            q+=GetPixelChannels(tile_image);
           }
-        else
+        }
+      else
+        {
+          length+=1;
+          if (length == 128)
+            {
+              if (xcfdata >= xcfdatalimit)
+                goto bogus_rle;
+              length=(size_t) ((*xcfdata << 8) + xcfdata[1]);
+              xcfdata+=2;
+            }
+          size-=length;
+          if (size < 0)
+            goto bogus_rle;
+          if (xcfdata > xcfdatalimit)
+            goto bogus_rle;
+          pixel=(*xcfdata++);
+          for (j=0; j < (ssize_t) length; j++)
           {
-            length+=1;
-            if (length == 128)
-              {
-                if (xcfdata >= xcfdatalimit)
-                  goto bogus_rle;
-                length=(size_t) ((*xcfdata << 8) + xcfdata[1]);
-                xcfdata+=2;
-              }
-            size-=length;
-            if (size < 0)
-              goto bogus_rle;
-            if (xcfdata > xcfdatalimit)
-              goto bogus_rle;
-            pixel=(*xcfdata++);
-            for (j=0; j < (ssize_t) length; j++)
+            data=pixel;
+            switch (i)
             {
-              data=pixel;
-              switch (i)
+              case 0:
               {
-                case 0:
-                {
-                  if (inDocInfo->image_type != GIMP_GRAY)
-                    {
-                      SetPixelRed(tile_image,ScaleCharToQuantum(data),q);
-                      SetPixelGreen(tile_image,ScaleCharToQuantum(data),q);
-                      SetPixelBlue(tile_image,ScaleCharToQuantum(data),q);
-                      SetPixelAlpha(tile_image,data == 255U ? alpha :
-                        ScaleCharToQuantum(data),q);
-                    }
-                  else
-                    {
-                      SetPixelGray(tile_image,ScaleCharToQuantum(data),q);
-                      SetPixelAlpha(tile_image,data == 255U ? alpha :
-                        ScaleCharToQuantum(data),q);
-                    }
-                  break;
-                }
-                case 1:
-                {
-                  if (inDocInfo->image_type == GIMP_GRAY)
-                    SetPixelGray(tile_image,ScaleCharToQuantum(data),q);
-                  else
+                if (inDocInfo->image_type == GIMP_GRAY)
+                  SetPixelGray(tile_image,ScaleCharToQuantum(data),q);
+                else
+                  {
+                    SetPixelRed(tile_image,ScaleCharToQuantum(data),q);
                     SetPixelGreen(tile_image,ScaleCharToQuantum(data),q);
-                  break;
-                }
-                case 2:
-                {
-                  SetPixelBlue(tile_image,ScaleCharToQuantum(data),q);
-                  break;
-                }
-                case 3:
-                {
-                  SetPixelAlpha(tile_image,data == 255U ? alpha :
-                    ScaleCharToQuantum(data),q);
-                  break;
-                }
+                    SetPixelBlue(tile_image,ScaleCharToQuantum(data),q);
+                  }
+                SetPixelAlpha(tile_image,alpha,q);
+                break;
+              }
+              case 1:
+              {
+                if (inDocInfo->image_type == GIMP_GRAY)
+                  SetPixelAlpha(tile_image,ScaleCharToQuantum(data),q);
+                else
+                  SetPixelGreen(tile_image,ScaleCharToQuantum(data),q);
+                break;
+              }
+              case 2:
+              {
+                SetPixelBlue(tile_image,ScaleCharToQuantum(data),q);
+                break;
+              }
+              case 3:
+              {
+                SetPixelAlpha(tile_image,ScaleCharToQuantum(data),q);
+                break;
               }
-              q+=GetPixelChannels(tile_image);
             }
+            q+=GetPixelChannels(tile_image);
           }
-      }
-      if (SyncAuthenticPixels(tile_image,exception) == MagickFalse)
-        break;
+        }
     }
+    if (SyncAuthenticPixels(tile_image,exception) == MagickFalse)
+      break;
+  }
   xcfodata=(unsigned char *) RelinquishMagickMemory(xcfodata);
   return(MagickTrue);