< prev index next >

src/java.desktop/share/native/libsplashscreen/splashscreen_gif.c

Print this page

        

@@ -80,12 +80,12 @@
     int bufferSize;
     byte_t *pBitmapBits, *pOldBitmapBits;
     int i, j;
     int imageIndex;
     int cx, cy, cw, ch; /* clamped coordinates */
-    const int interlacedOffset[] = { 0, 4, 2, 1, 0 };   /* The way Interlaced image should. */
-    const int interlacedJumps[] = { 8, 8, 4, 2, 1 };    /* be read - offsets and jumps... */
+    int numLines;
+    int numPassLines;
 
     if (DGifSlurp(gif) == GIF_ERROR) {
         return 0;
     }
 

@@ -211,49 +211,35 @@
         {
 
             byte_t *pSrc = image->RasterBits;
             ImageFormat srcFormat;
             ImageRect srcRect, dstRect;
-            int pass, npass;
-
-            if (desc->Interlace) {
-                pass = 0;
-                npass = 4;
-            }
-            else {
-                pass = 4;
-                npass = 5;
-            }
 
             srcFormat.colorMap = colorMapBuf;
             srcFormat.depthBytes = 1;
             srcFormat.byteOrder = BYTE_ORDER_NATIVE;
             srcFormat.transparentColor = transparentColor;
             srcFormat.fixedBits = QUAD_ALPHA_MASK;      // fixed 100% alpha
             srcFormat.premultiplied = 0;
 
-            for (; pass < npass; ++pass) {
-                int jump = interlacedJumps[pass];
-                int ofs = interlacedOffset[pass];
                 /* Number of source lines for current pass */
-                int numPassLines = (desc->Height + jump - ofs - 1) / jump;
+            numPassLines = desc->Height;
                 /* Number of lines that fits to dest buffer */
-                int numLines = (ch + jump - ofs - 1) / jump;
+            numLines = ch;
 
                 initRect(&srcRect, 0, 0, desc->Width, numLines, 1,
                     desc->Width, pSrc, &srcFormat);
 
                 if (numLines > 0) {
-                    initRect(&dstRect, cx, cy + ofs, cw,
-                             numLines , jump, stride, pBitmapBits, &splash->imageFormat);
+                initRect(&dstRect, cx, cy, cw,
+                         numLines , 1, stride, pBitmapBits, &splash->imageFormat);
 
                     pSrc += convertRect(&srcRect, &dstRect, CVT_ALPHATEST);
                 }
                 // skip extra source data
                 pSrc += (numPassLines - numLines) * srcRect.stride;
             }
-        }
 
         // now dispose of the previous frame correctly
 
         splash->frames[imageIndex].bitmapBits =
             (rgbquad_t *) malloc(bufferSize); // bufferSize is safe (checked above)

@@ -308,19 +294,19 @@
     }
 
     free(pBitmapBits);
     free(pOldBitmapBits);
 
-    DGifCloseFile(gif);
+    DGifCloseFile(gif, NULL);
 
     return 1;
 }
 
 int
 SplashDecodeGifStream(Splash * splash, SplashStream * stream)
 {
-    GifFileType *gif = DGifOpen((void *) stream, SplashStreamGifInputFunc);
+    GifFileType *gif = DGifOpen((void *) stream, SplashStreamGifInputFunc, NULL);
 
     if (!gif)
         return 0;
     return SplashDecodeGif(splash, gif);
 }
< prev index next >