summaryrefslogtreecommitdiff
path: root/libjava/classpath/gnu/javax/imageio/bmp/BMPDecoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/gnu/javax/imageio/bmp/BMPDecoder.java')
-rw-r--r--libjava/classpath/gnu/javax/imageio/bmp/BMPDecoder.java148
1 files changed, 74 insertions, 74 deletions
diff --git a/libjava/classpath/gnu/javax/imageio/bmp/BMPDecoder.java b/libjava/classpath/gnu/javax/imageio/bmp/BMPDecoder.java
index df53f2e3dee..10846193189 100644
--- a/libjava/classpath/gnu/javax/imageio/bmp/BMPDecoder.java
+++ b/libjava/classpath/gnu/javax/imageio/bmp/BMPDecoder.java
@@ -49,11 +49,11 @@ public abstract class BMPDecoder {
protected BMPInfoHeader infoHeader;
protected BMPFileHeader fileHeader;
protected long offset;
-
+
public BMPDecoder(BMPFileHeader fh, BMPInfoHeader ih){
- fileHeader = fh;
- infoHeader = ih;
- offset = BMPFileHeader.SIZE + BMPInfoHeader.SIZE;
+ fileHeader = fh;
+ infoHeader = ih;
+ offset = BMPFileHeader.SIZE + BMPInfoHeader.SIZE;
}
/**
@@ -61,108 +61,108 @@ public abstract class BMPDecoder {
* decoder.
*/
public static BMPDecoder getDecoder(BMPFileHeader fh, BMPInfoHeader ih){
- switch(ih.getCompression()){
- case BMPInfoHeader.BI_RGB: // uncompressed RGB
- switch(ih.getBitCount()){
- case 32:
- return new DecodeBF32(fh, ih, true);
+ switch(ih.getCompression()){
+ case BMPInfoHeader.BI_RGB: // uncompressed RGB
+ switch(ih.getBitCount()){
+ case 32:
+ return new DecodeBF32(fh, ih, true);
+
+ case 24:
+ return new DecodeRGB24(fh, ih);
- case 24:
- return new DecodeRGB24(fh, ih);
+ case 16:
+ return new DecodeBF16(fh, ih, true);
- case 16:
- return new DecodeBF16(fh, ih, true);
+ case 8:
+ return new DecodeRGB8(fh, ih);
- case 8:
- return new DecodeRGB8(fh, ih);
+ case 4:
+ return new DecodeRGB4(fh, ih);
- case 4:
- return new DecodeRGB4(fh, ih);
+ case 1:
+ return new DecodeRGB1(fh, ih);
- case 1:
- return new DecodeRGB1(fh, ih);
+ default:
+ return null;
+ }
- default:
- return null;
- }
+ case BMPInfoHeader.BI_RLE8:
+ return new DecodeRLE8(fh, ih);
- case BMPInfoHeader.BI_RLE8:
- return new DecodeRLE8(fh, ih);
+ case BMPInfoHeader.BI_RLE4:
+ return new DecodeRLE4(fh, ih);
- case BMPInfoHeader.BI_RLE4:
- return new DecodeRLE4(fh, ih);
+ case BMPInfoHeader.BI_BITFIELDS:
+ switch(ih.getBitCount()){
+ case 16:
+ return new DecodeBF16(fh, ih, false);
- case BMPInfoHeader.BI_BITFIELDS:
- switch(ih.getBitCount()){
- case 16:
- return new DecodeBF16(fh, ih, false);
+ case 32:
+ return new DecodeBF32(fh, ih, false);
- case 32:
- return new DecodeBF32(fh, ih, false);
+ default:
+ return null;
+ }
- default:
- return null;
- }
-
- default:
- return null;
- }
+ default:
+ return null;
+ }
}
/**
* The image decoder.
*/
- public abstract BufferedImage decode(ImageInputStream in)
- throws IOException, BMPException;
+ public abstract BufferedImage decode(ImageInputStream in)
+ throws IOException, BMPException;
/**
* Reads r,g,b bit masks from an inputstream
*/
protected int[] readBitMasks(ImageInputStream in) throws IOException {
- int[] bitmasks = new int[3];
- byte[] temp = new byte[12];
- if(in.read(temp) != 12)
- throw new IOException("Couldn't read bit masks.");
- offset += 12;
-
- ByteBuffer buf = ByteBuffer.wrap(temp);
- buf.order(ByteOrder.LITTLE_ENDIAN);
- bitmasks[0] = buf.getInt();
- bitmasks[1] = buf.getInt();
- bitmasks[2] = buf.getInt();
- return bitmasks;
+ int[] bitmasks = new int[3];
+ byte[] temp = new byte[12];
+ if(in.read(temp) != 12)
+ throw new IOException("Couldn't read bit masks.");
+ offset += 12;
+
+ ByteBuffer buf = ByteBuffer.wrap(temp);
+ buf.order(ByteOrder.LITTLE_ENDIAN);
+ bitmasks[0] = buf.getInt();
+ bitmasks[1] = buf.getInt();
+ bitmasks[2] = buf.getInt();
+ return bitmasks;
}
/**
- * Reads an N-color palette from an inputstream in RGBQUAD format and
+ * Reads an N-color palette from an inputstream in RGBQUAD format and
* returns an equivalent ColorModel object
*/
protected IndexColorModel readPalette(ImageInputStream in) throws IOException {
- int N = infoHeader.getNumberOfPaletteEntries();
- byte[] r = new byte[N];
- byte[] g = new byte[N];
- byte[] b = new byte[N];
- for(int i=0;i<N;i++){
- byte[] RGBquad = new byte[4];
- if(in.read(RGBquad) != 4)
- throw new IOException("Error reading palette information.");
- // RGBQUAD structure is b,g,r,0
- r[i] = RGBquad[2];
- g[i] = RGBquad[1];
- b[i] = RGBquad[0];
- }
-
- offset += 4*N;
- return new IndexColorModel(8, N, r, g, b);
+ int N = infoHeader.getNumberOfPaletteEntries();
+ byte[] r = new byte[N];
+ byte[] g = new byte[N];
+ byte[] b = new byte[N];
+ for(int i=0;i<N;i++){
+ byte[] RGBquad = new byte[4];
+ if(in.read(RGBquad) != 4)
+ throw new IOException("Error reading palette information.");
+ // RGBQUAD structure is b,g,r,0
+ r[i] = RGBquad[2];
+ g[i] = RGBquad[1];
+ b[i] = RGBquad[0];
+ }
+
+ offset += 4*N;
+ return new IndexColorModel(8, N, r, g, b);
}
/**
* Read bytes to the start of the image data
*/
protected void skipToImage(ImageInputStream in) throws IOException {
- byte[] d = new byte[1];
- long n = fileHeader.getOffset() - offset;
- for(int i=0;i<n;i++)
- in.read(d);
+ byte[] d = new byte[1];
+ long n = fileHeader.getOffset() - offset;
+ for(int i=0;i<n;i++)
+ in.read(d);
}
}