diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java index ea4b6ec2..92bc7025 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageReaderAbstractTest.java @@ -553,10 +553,10 @@ public abstract class ImageReaderAbstractTest { int actualRGB = actual.getRGB(x, y); try { - assertEquals(String.format("%s alpha at (%d, %d)", message, x, y), (expectedRGB >>> 24) & 0xff, (actualRGB >>> 24) & 0xff, 5); - assertEquals(String.format("%s red at (%d, %d)", message, x, y), (expectedRGB >> 16) & 0xff, (actualRGB >> 16) & 0xff, 5); - assertEquals(String.format("%s green at (%d, %d)", message, x, y), (expectedRGB >> 8) & 0xff, (actualRGB >> 8) & 0xff, 5); - assertEquals(String.format("%s blue at (%d, %d)", message, x, y), expectedRGB & 0xff, actualRGB & 0xff, 5); + assertEquals((expectedRGB >>> 24) & 0xff, (actualRGB >>> 24) & 0xff, 5); + assertEquals((expectedRGB >> 16) & 0xff, (actualRGB >> 16) & 0xff, 5); + assertEquals((expectedRGB >> 8) & 0xff, (actualRGB >> 8) & 0xff, 5); + assertEquals(expectedRGB & 0xff, actualRGB & 0xff, 5); } catch (AssertionError e) { File tempExpected = File.createTempFile("junit-expected-", ".png"); @@ -566,7 +566,6 @@ public abstract class ImageReaderAbstractTest { System.err.println("tempActual.getAbsolutePath(): " + tempActual.getAbsolutePath()); ImageIO.write(actual, "PNG", tempActual); - assertEquals(String.format("%s ARGB at (%d, %d)", message, x, y), String.format("#%08x", expectedRGB), String.format("#%08x", actualRGB)); } } diff --git a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java index afddeedf..0a99f961 100755 --- a/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java +++ b/imageio/imageio-pcx/src/test/java/com/twelvemonkeys/imageio/plugins/pcx/PCXImageReaderTest.java @@ -64,7 +64,7 @@ public class PCXImageReaderTest extends ImageReaderAbstractTest @Override protected List getTestData() { return Arrays.asList( - new TestData(getClassLoaderResource("/pcx/MARBLES.PCX"), new Dimension(1419, 1001)), // RLE encoded RGB + new TestData(getClassLoaderResource("/pcx/input.pcx"), new Dimension(70, 46)), // RLE encoded RGB new TestData(getClassLoaderResource("/pcx/lena.pcx"), new Dimension(512, 512)), // RLE encoded RGB new TestData(getClassLoaderResource("/pcx/lena2.pcx"), new Dimension(512, 512)), // RLE encoded, 256 color indexed (8 bps/1 channel) new TestData(getClassLoaderResource("/pcx/lena3.pcx"), new Dimension(512, 512)), // RLE encoded, 16 color indexed (4 bps/1 channel) @@ -76,6 +76,7 @@ public class PCXImageReaderTest extends ImageReaderAbstractTest new TestData(getClassLoaderResource("/pcx/lena9.pcx"), new Dimension(512, 512)), // RLE encoded, 2 color indexed (1 bps/1 channel) new TestData(getClassLoaderResource("/pcx/lena10.pcx"), new Dimension(512, 512)), // RLE encoded, 16 color indexed (4 bps/1 channel) (uses only 8 colors) new TestData(getClassLoaderResource("/pcx/DARKSTAR.PCX"), new Dimension(88, 52)), // RLE encoded monochrome (1 bps/1 channel) + new TestData(getClassLoaderResource("/pcx/MARBLES.PCX"), new Dimension(1419, 1001)), // RLE encoded RGB new TestData(getClassLoaderResource("/pcx/no-palette-monochrome.pcx"), new Dimension(128, 152)), // RLE encoded monochrome (1 bps/1 channel) // See cga-pcx.txt, however, the text seems to be in error, the bits can not not as described new TestData(getClassLoaderResource("/pcx/CGA_BW.PCX"), new Dimension(640, 200)), // RLE encoded indexed (CGA mode) diff --git a/imageio/imageio-pcx/src/test/resources/pcx/input.pcx b/imageio/imageio-pcx/src/test/resources/pcx/input.pcx new file mode 100644 index 00000000..c9c0092b Binary files /dev/null and b/imageio/imageio-pcx/src/test/resources/pcx/input.pcx differ diff --git a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReader.java b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReader.java index ab47bd89..bbc291db 100755 --- a/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReader.java +++ b/imageio/imageio-sgi/src/main/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReader.java @@ -218,7 +218,8 @@ public final class SGIImageReader extends ImageReaderBase { private void readRowByte(int height, Rectangle srcRegion, int[] scanlineOffsets, int[] scanlineLengths, int compression, int xSub, int ySub, int c, byte[] rowDataByte, WritableRaster destChannel, Raster srcChannel, int y) throws IOException { // If subsampled or outside source region, skip entire row - if (y % ySub != 0 || height - 1 - y < srcRegion.y || height - 1 - y >= srcRegion.y + srcRegion.height) { + int destY = height - 1 - y; + if (destY % ySub != 0 || destY < srcRegion.y || destY >= srcRegion.y + srcRegion.height) { if (compression == SGI.COMPRESSION_NONE) { imageInput.skipBytes(rowDataByte.length); } @@ -245,16 +246,17 @@ public final class SGIImageReader extends ImageReaderBase { } } - normalize(rowDataByte, 9, srcRegion.width / xSub); + normalize(rowDataByte, 0, srcRegion.width / xSub); // Flip into position (SGI images are stored bottom/up) - int dstY = (height - 1 - y - srcRegion.y) / ySub; + int dstY = (destY - srcRegion.y) / ySub; destChannel.setDataElements(0, dstY, srcChannel); } private void readRowUShort(int height, Rectangle srcRegion, int[] scanlineOffsets, int[] scanlineLengths, int compression, int xSub, int ySub, int c, short[] rowDataUShort, WritableRaster destChannel, Raster srcChannel, int y) throws IOException { // If subsampled or outside source region, skip entire row - if (y % ySub != 0 || height - 1 - y < srcRegion.y || height - 1 - y >= srcRegion.y + srcRegion.height) { + int destY = height - 1 - y; + if (destY % ySub != 0 || destY < srcRegion.y || destY >= srcRegion.y + srcRegion.height) { if (compression == SGI.COMPRESSION_NONE) { imageInput.skipBytes(rowDataUShort.length * 2); } @@ -281,10 +283,10 @@ public final class SGIImageReader extends ImageReaderBase { } } - normalize(rowDataUShort, 9, srcRegion.width / xSub); + normalize(rowDataUShort, 0, srcRegion.width / xSub); // Flip into position (SGI images are stored bottom/up) - int dstY = (height - 1 - y - srcRegion.y) / ySub; + int dstY = (destY - srcRegion.y) / ySub; destChannel.setDataElements(0, dstY, srcChannel); } diff --git a/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java b/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java index aea3f3b4..df3132b2 100755 --- a/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java +++ b/imageio/imageio-sgi/src/test/java/com/twelvemonkeys/imageio/plugins/sgi/SGIImageReaderTest.java @@ -53,7 +53,8 @@ public class SGIImageReaderTest extends ImageReaderAbstractTest @Override protected List getTestData() { - return Collections.singletonList( + return Arrays.asList( + new TestData(getClassLoaderResource("/sgi/input.sgi"), new Dimension(70, 46)), // RLE encoded RGB new TestData(getClassLoaderResource("/sgi/MARBLES.SGI"), new Dimension(1419, 1001)) // RLE encoded RGB ); } diff --git a/imageio/imageio-sgi/src/test/resources/sgi/input.sgi b/imageio/imageio-sgi/src/test/resources/sgi/input.sgi new file mode 100644 index 00000000..6a651808 Binary files /dev/null and b/imageio/imageio-sgi/src/test/resources/sgi/input.sgi differ