Beispiel #1
0
 /** Main file parser. Reads GIF content blocks. */
 protected void readContents() {
   // read GIF file content blocks
   boolean done = false;
   while (!(done || err())) {
     int code = read();
     switch (code) {
       case 0x2C: // image separator
         readBitmap();
         break;
       case 0x21: // extension
         code = read();
         switch (code) {
           case 0xf9: // graphics control extension
             // Start a new frame
             currentFrame = new GifFrame();
             readGraphicControlExt();
             break;
           case 0xff: // application extension
             readBlock();
             String app = "";
             for (int i = 0; i < 11; i++) {
               app += (char) block[i];
             }
             if (app.equals("NETSCAPE2.0")) {
               readNetscapeExt();
             } else {
               skip(); // don't care
             }
             break;
           case 0xfe: // comment extension
             skip();
             break;
           case 0x01: // plain text extension
             skip();
             break;
           default: // uninteresting extension
             skip();
         }
         break;
       case 0x3b: // terminator
         done = true;
         break;
       case 0x00: // bad byte, but keep going and see what happens break;
       default:
         status = STATUS_FORMAT_ERROR;
     }
   }
 }
Beispiel #2
0
 private void skipBitmapData() {
   read(); // code size
   skip();
 }