Use ImageBuilder for BMP files.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/sanselan/trunk@1293771 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/commons/sanselan/formats/bmp/BmpImageParser.java b/src/main/java/org/apache/commons/sanselan/formats/bmp/BmpImageParser.java
index b6980b4..71d69dd 100644
--- a/src/main/java/org/apache/commons/sanselan/formats/bmp/BmpImageParser.java
+++ b/src/main/java/org/apache/commons/sanselan/formats/bmp/BmpImageParser.java
@@ -37,6 +37,7 @@
import org.apache.commons.sanselan.ImageWriteException;
import org.apache.commons.sanselan.common.BinaryOutputStream;
import org.apache.commons.sanselan.common.IImageMetadata;
+import org.apache.commons.sanselan.common.ImageBuilder;
import org.apache.commons.sanselan.common.bytesource.ByteSource;
import org.apache.commons.sanselan.formats.bmp.pixelparsers.PixelParser;
import org.apache.commons.sanselan.formats.bmp.pixelparsers.PixelParserBitFields;
@@ -713,9 +714,6 @@
int width = bhi.width;
int height = bhi.height;
- BufferedImage result = getBufferedImageFactory(params)
- .getColorBufferedImage(width, height, true);
-
if (verbose)
{
System.out.println("width: " + width);
@@ -725,10 +723,10 @@
}
PixelParser pixelParser = ic.pixelParser;
+ ImageBuilder imageBuilder = new ImageBuilder(width, height, true);
+ pixelParser.processImage(imageBuilder);
- pixelParser.processImage(result);
-
- return result;
+ return imageBuilder.getBufferedImage();
}
diff --git a/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParser.java b/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParser.java
index 09ab1ac..c937462 100644
--- a/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParser.java
+++ b/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParser.java
@@ -16,12 +16,12 @@
*/
package org.apache.commons.sanselan.formats.bmp.pixelparsers;
-import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import org.apache.commons.sanselan.ImageReadException;
import org.apache.commons.sanselan.common.BinaryFileParser;
+import org.apache.commons.sanselan.common.ImageBuilder;
import org.apache.commons.sanselan.formats.bmp.BmpHeaderInfo;
public abstract class PixelParser
@@ -43,7 +43,7 @@
is = new ByteArrayInputStream(ImageData);
}
- public abstract void processImage(BufferedImage bi)
+ public abstract void processImage(ImageBuilder imageBuilder)
throws ImageReadException, IOException;
protected int getColorTableRGB(int index)
diff --git a/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParserRle.java b/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParserRle.java
index 23c7a41..7d65ea2 100644
--- a/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParserRle.java
+++ b/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParserRle.java
@@ -21,6 +21,7 @@
import java.io.IOException;
import org.apache.commons.sanselan.ImageReadException;
+import org.apache.commons.sanselan.common.ImageBuilder;
import org.apache.commons.sanselan.formats.bmp.BmpHeaderInfo;
public class PixelParserRle extends PixelParser
@@ -70,7 +71,7 @@
}
private int processByteOfData(int rgbs[], int repeat, int x, int y,
- int width, int height, DataBuffer db, BufferedImage bi)
+ int width, int height, ImageBuilder imageBuilder)
{
// int rbg
int pixels_written = 0;
@@ -83,7 +84,7 @@
// rgb = getNextRGB();
int rgb = rgbs[i % rgbs.length];
// bi.setRGB(x, y, rgb);
- db.setElem(y * bhi.width + x, rgb);
+ imageBuilder.setRGB(x, y, rgb);
// bi.setRGB(x, y, 0xff00ff00);
}
else
@@ -98,11 +99,9 @@
return pixels_written;
}
- public void processImage(BufferedImage bi) throws ImageReadException,
+ public void processImage(ImageBuilder imageBuilder) throws ImageReadException,
IOException
{
- DataBuffer db = bi.getRaster().getDataBuffer();
-
int count = 0;
int width = bhi.width;
int height = bhi.height;
@@ -183,7 +182,7 @@
// + SamplesPerByte);
// System.out.println("towrite: " + towrite);
int written = processByteOfData(samples, towrite,
- x, y, width, height, db, bi);
+ x, y, width, height, imageBuilder);
// System.out.println("written: " + written);
// System.out.println("");
x += written;
@@ -198,7 +197,7 @@
{
int rgbs[] = convertDataToSamples(b);
- x += processByteOfData(rgbs, a, x, y, width, height, db, bi);
+ x += processByteOfData(rgbs, a, x, y, width, height, imageBuilder);
// x += processByteOfData(b, a, x, y, width, height, bi);
}
diff --git a/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParserSimple.java b/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParserSimple.java
index adc6a22..4f3a650 100644
--- a/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParserSimple.java
+++ b/src/main/java/org/apache/commons/sanselan/formats/bmp/pixelparsers/PixelParserSimple.java
@@ -16,10 +16,10 @@
*/
package org.apache.commons.sanselan.formats.bmp.pixelparsers;
-import java.awt.image.BufferedImage;
import java.io.IOException;
import org.apache.commons.sanselan.ImageReadException;
+import org.apache.commons.sanselan.common.ImageBuilder;
import org.apache.commons.sanselan.formats.bmp.BmpHeaderInfo;
public abstract class PixelParserSimple extends PixelParser
@@ -34,7 +34,7 @@
public abstract void newline() throws ImageReadException, IOException;
- public void processImage(BufferedImage bi) throws ImageReadException,
+ public void processImage(ImageBuilder imageBuilder) throws ImageReadException,
IOException
{
// DataBuffer db = bi.getRaster().getDataBuffer();
@@ -45,7 +45,7 @@
{
int rgb = getNextRGB();
- bi.setRGB(x, y, rgb);
+ imageBuilder.setRGB(x, y, rgb);
// db.setElem(y * bhi.width + x, rgb);
}
newline();