You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2010/06/28 16:29:25 UTC
svn commit: r958590 - in
/harmony/enhanced/java/trunk/classlib/modules/imageio: META-INF/MANIFEST.MF
src/main/java/javax/imageio/ImageTypeSpecifier.java
src/test/java/javax/imageio/ImageTypeSpecifierTest.java
Author: tellison
Date: Mon Jun 28 14:29:25 2010
New Revision: 958590
URL: http://svn.apache.org/viewvc?rev=958590&view=rev
Log:
Apply patch for HARMONY-6562 (Implement ImageTypeSpecifier.createIndexed())
Add new dependency on BigInteger (via IndexColorModel constructor)
Modified:
harmony/enhanced/java/trunk/classlib/modules/imageio/META-INF/MANIFEST.MF
harmony/enhanced/java/trunk/classlib/modules/imageio/src/main/java/javax/imageio/ImageTypeSpecifier.java
harmony/enhanced/java/trunk/classlib/modules/imageio/src/test/java/javax/imageio/ImageTypeSpecifierTest.java
Modified: harmony/enhanced/java/trunk/classlib/modules/imageio/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/classlib/modules/imageio/META-INF/MANIFEST.MF?rev=958590&r1=958589&r2=958590&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/classlib/modules/imageio/META-INF/MANIFEST.MF (original)
+++ harmony/enhanced/java/trunk/classlib/modules/imageio/META-INF/MANIFEST.MF Mon Jun 28 14:29:25 2010
@@ -18,6 +18,7 @@ Import-Package: java.awt,
java.io,
java.lang,
java.lang.reflect,
+ java.math,
java.net,
java.nio,
java.security,
Modified: harmony/enhanced/java/trunk/classlib/modules/imageio/src/main/java/javax/imageio/ImageTypeSpecifier.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/classlib/modules/imageio/src/main/java/javax/imageio/ImageTypeSpecifier.java?rev=958590&r1=958589&r2=958590&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/classlib/modules/imageio/src/main/java/javax/imageio/ImageTypeSpecifier.java (original)
+++ harmony/enhanced/java/trunk/classlib/modules/imageio/src/main/java/javax/imageio/ImageTypeSpecifier.java Mon Jun 28 14:29:25 2010
@@ -18,13 +18,15 @@
package javax.imageio;
import java.awt.Transparency;
+import java.awt.color.ColorSpace;
+import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.ComponentColorModel;
+import java.awt.image.DataBuffer;
import java.awt.image.DirectColorModel;
-import java.awt.image.SampleModel;
-import java.awt.image.BufferedImage;
+import java.awt.image.IndexColorModel;
import java.awt.image.RenderedImage;
-import java.awt.color.ColorSpace;
+import java.awt.image.SampleModel;
import org.apache.harmony.luni.util.NotImplementedException;
import org.apache.harmony.x.imageio.internal.nls.Messages;
@@ -131,9 +133,40 @@ public class ImageTypeSpecifier {
byte[] blueLUT,
byte[] alphaLUT,
int bits,
- int dataType) throws NotImplementedException {
- // TODO: implement
- throw new NotImplementedException();
+ int dataType) {
+ if ((redLUT == null) || (greenLUT == null) || blueLUT == null) {
+ throw new IllegalArgumentException();
+ }
+
+ if ((bits != 1) && (bits != 2) && (bits != 4) && (bits != 8) && (bits != 16)) {
+ throw new IllegalArgumentException();
+ }
+
+ int length = 1 << bits;
+ if ((redLUT.length != length) || (greenLUT.length != length) || (blueLUT.length != length) ||
+ (alphaLUT != null && alphaLUT.length != length)) {
+ throw new IllegalArgumentException();
+ }
+
+ if ((dataType != DataBuffer.TYPE_BYTE) && (dataType != DataBuffer.TYPE_SHORT) &&
+ (dataType != DataBuffer.TYPE_USHORT) && (dataType != DataBuffer.TYPE_INT)) {
+ throw new IllegalArgumentException();
+ }
+
+ if ((bits > 8 && dataType == DataBuffer.TYPE_BYTE) ||
+ (bits > 16 && dataType == DataBuffer.TYPE_INT)) {
+ throw new IllegalArgumentException();
+ }
+
+ ColorModel model = null;
+ int size = redLUT.length;
+ if (alphaLUT == null) {
+ model = new IndexColorModel(bits, size, redLUT, greenLUT, blueLUT);
+ } else {
+ model = new IndexColorModel(bits, size, redLUT, greenLUT, blueLUT, alphaLUT);
+ }
+
+ return new ImageTypeSpecifier(model, model.createCompatibleSampleModel(1, 1));
}
public static ImageTypeSpecifier createFromBufferedImageType(int bufferedImageType) throws NotImplementedException {
Modified: harmony/enhanced/java/trunk/classlib/modules/imageio/src/test/java/javax/imageio/ImageTypeSpecifierTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/classlib/modules/imageio/src/test/java/javax/imageio/ImageTypeSpecifierTest.java?rev=958590&r1=958589&r2=958590&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/classlib/modules/imageio/src/test/java/javax/imageio/ImageTypeSpecifierTest.java (original)
+++ harmony/enhanced/java/trunk/classlib/modules/imageio/src/test/java/javax/imageio/ImageTypeSpecifierTest.java Mon Jun 28 14:29:25 2010
@@ -44,4 +44,26 @@ public class ImageTypeSpecifierTest exte
assertEquals("Failed to return the transfer type", model.getTransferType(), DataBuffer.TYPE_USHORT);
assertEquals("Failed to return the pixel size", model.getPixelSize(), 32);
}
+
+ public void testCreateIndexed() {
+ byte[] redLUT = new byte[]{1, 10};
+ byte[] greenLUT = new byte[]{2,20};
+ byte[] blueLUT = new byte[]{3,30};
+ byte[] alphaLUT = new byte[]{4,40};
+
+ ImageTypeSpecifier type = ImageTypeSpecifier.createIndexed(redLUT, greenLUT, blueLUT, alphaLUT, 1, DataBuffer.TYPE_BYTE);
+ ColorModel model = type.getColorModel();
+
+ assertEquals("Failed to return the colorspace", model.getColorSpace().getType(), ColorSpace.TYPE_RGB);
+ assertEquals("Failed to return the transparency", model.getTransparency(), Transparency.TRANSLUCENT);
+ assertEquals("Failed to return the tranfer type", model.getTransferType(), DataBuffer.TYPE_BYTE);
+ assertEquals("Failed to return the red color component", model.getRed(0), 1);
+ assertEquals("Failed to return the red color component", model.getRed(1), 10);
+ assertEquals("Failed to return the green color component", model.getGreen(0), 2);
+ assertEquals("Failed to return the green color component", model.getGreen(1), 20);
+ assertEquals("Failed to return the blue color component", model.getBlue(0), 3);
+ assertEquals("Failed to return the blue color component", model.getBlue(1), 30);
+ assertEquals("Failed to return the alpha color component", model.getAlpha(0), 4);
+ assertEquals("Failed to return the alpha color component", model.getAlpha(1), 40);
+ }
}