Use ImageBuilder for PNM files.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/sanselan/trunk@1293786 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/commons/sanselan/formats/pnm/FileInfo.java b/src/main/java/org/apache/commons/sanselan/formats/pnm/FileInfo.java
index d20eaaf..7a99726 100644
--- a/src/main/java/org/apache/commons/sanselan/formats/pnm/FileInfo.java
+++ b/src/main/java/org/apache/commons/sanselan/formats/pnm/FileInfo.java
@@ -16,12 +16,12 @@
*/
package org.apache.commons.sanselan.formats.pnm;
-import java.awt.image.BufferedImage;
import java.awt.image.DataBuffer;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.sanselan.ImageFormat;
+import org.apache.commons.sanselan.common.ImageBuilder;
public abstract class FileInfo
{
@@ -56,15 +56,14 @@
// do nothing by default.
}
- public void readImage(BufferedImage bi, InputStream is) throws IOException
+ public void readImage(ImageBuilder imageBuilder, InputStream is) throws IOException
{
// is = new BufferedInputStream(is);
// int count = 0;
//
// try
// {
- DataBuffer buffer = bi.getRaster().getDataBuffer();
-
+
if (!RAWBITS)
{
WhiteSpaceReader wsr = new WhiteSpaceReader(is);
@@ -75,7 +74,7 @@
{
int rgb = getRGB(wsr);
- buffer.setElem(y * width + x, rgb);
+ imageBuilder.setRGB(x, y, rgb);
// count++;
}
newline();
@@ -88,7 +87,7 @@
for (int x = 0; x < width; x++)
{
int rgb = getRGB(is);
- buffer.setElem(y * width + x, rgb);
+ imageBuilder.setRGB(x, y, rgb);
// count++;
}
newline();
diff --git a/src/main/java/org/apache/commons/sanselan/formats/pnm/PnmImageParser.java b/src/main/java/org/apache/commons/sanselan/formats/pnm/PnmImageParser.java
index 5b9430e..5839fe2 100644
--- a/src/main/java/org/apache/commons/sanselan/formats/pnm/PnmImageParser.java
+++ b/src/main/java/org/apache/commons/sanselan/formats/pnm/PnmImageParser.java
@@ -34,6 +34,7 @@
import org.apache.commons.sanselan.ImageReadException;
import org.apache.commons.sanselan.ImageWriteException;
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.util.Debug;
@@ -275,12 +276,10 @@
int height = info.height;
boolean hasAlpha = false;
- BufferedImage result = getBufferedImageFactory(params)
- .getColorBufferedImage(width, height, hasAlpha);
+ ImageBuilder imageBuilder = new ImageBuilder(width, height, hasAlpha);
+ info.readImage(imageBuilder, is);
- info.readImage(result, is);
-
- return result;
+ return imageBuilder.getBufferedImage();
} finally
{
try