Esempio n. 1
0
 public ImageRGB(Archive archive, String string, int archiveIndex) {
   Buffer dataBuffer = new Buffer(archive.getFile(string + ".dat"));
   Buffer indexBuffer = new Buffer(archive.getFile("index.dat"));
   indexBuffer.offset = dataBuffer.getUnsignedLEShort();
   maxWidth = indexBuffer.getUnsignedLEShort();
   maxHeight = indexBuffer.getUnsignedLEShort();
   int length = indexBuffer.getUnsignedByte();
   int[] pixels = new int[length];
   for (int pixel = 0; pixel < (length - 1); pixel++) {
     pixels[pixel + 1] = indexBuffer.get24BitInt();
     if (pixels[pixel + 1] == 0) {
       pixels[pixel + 1] = 1;
     }
   }
   for (int index = 0; index < archiveIndex; index++) {
     indexBuffer.offset += 2;
     dataBuffer.offset += indexBuffer.getUnsignedLEShort() * indexBuffer.getUnsignedLEShort();
     indexBuffer.offset++;
   }
   offsetX = indexBuffer.getUnsignedByte();
   offsetY = indexBuffer.getUnsignedByte();
   width = indexBuffer.getUnsignedLEShort();
   height = indexBuffer.getUnsignedLEShort();
   int type = indexBuffer.getUnsignedByte();
   int pixelCount = width * height;
   this.pixels = new int[pixelCount];
   if (type == 0) {
     for (int pixel = 0; pixel < pixelCount; pixel++) {
       this.pixels[pixel] = pixels[dataBuffer.getUnsignedByte()];
     }
   } else if (type == 1) {
     for (int x = 0; x < width; x++) {
       for (int y = 0; y < height; y++) {
         this.pixels[x + (y * width)] = pixels[dataBuffer.getUnsignedByte()];
       }
     }
   }
 }