diff --git a/imageio/imageio-dds/src/main/java/com/twelvemonkeys/imageio/plugins/dds/DDSImageReader.java b/imageio/imageio-dds/src/main/java/com/twelvemonkeys/imageio/plugins/dds/DDSImageReader.java index ca2aea1c..824b43a9 100644 --- a/imageio/imageio-dds/src/main/java/com/twelvemonkeys/imageio/plugins/dds/DDSImageReader.java +++ b/imageio/imageio-dds/src/main/java/com/twelvemonkeys/imageio/plugins/dds/DDSImageReader.java @@ -67,13 +67,20 @@ public final class DDSImageReader extends ImageReaderBase { int width = getWidth(imageIndex); int height = getHeight(imageIndex); - BufferedImage destination = getDestination(param, getImageTypes(imageIndex), width, height); + processImageStarted(imageIndex); + DDSReader dds = new DDSReader(header); int[] pixels = dds.read(imageInput, 0); destination.setRGB(0, 0, width, height, pixels, 0, width); + // TODO: break read into raster line and add progress and abort checks + processImageProgress(100f); + if (abortRequested()) { + processReadAborted(); + } + processImageComplete(); return destination; diff --git a/imageio/imageio-dds/src/test/java/DDSImageTeaderTest.java b/imageio/imageio-dds/src/test/java/DDSImageTeaderTest.java index 3576e69e..bb60f6ee 100644 --- a/imageio/imageio-dds/src/test/java/DDSImageTeaderTest.java +++ b/imageio/imageio-dds/src/test/java/DDSImageTeaderTest.java @@ -4,6 +4,7 @@ import com.twelvemonkeys.imageio.util.ImageReaderAbstractTest; import javax.imageio.spi.ImageReaderSpi; import java.awt.Dimension; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -16,9 +17,41 @@ public class DDSImageTeaderTest extends ImageReaderAbstractTest @Override protected List getTestData() { - return Collections.singletonList( - new TestData(getClassLoaderResource("/dds/dxt5.dds"), new Dimension(512, 512)) - ); + Dimension dim = new Dimension(256, 256); + + List testData = new ArrayList<>(); + testData.add(new TestData(getClassLoaderResource("/dds/dds_A1R5G5B5.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_A1R5G5B5_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_A4R4G4B4.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_A4R4G4B4_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_A8B8G8R8.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_A8B8G8R8_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_A8R8G8B8.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_A8R8G8B8_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_DXT1.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_DXT1_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_DXT2.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_DXT2_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_DXT3.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_DXT3_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_DXT4.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_DXT4_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_DXT5.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_DXT5_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_R5G6B5.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_R5G6B5_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_R8G8B8.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_R8G8B8_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_X1R5G5B5.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_X1R5G5B5_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_X4R4G4B4.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_X4R4G4B4_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_X8B8G8R8.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_X8B8G8R8_mipmap.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_X8R8G8B8.dds"), dim)); + testData.add(new TestData(getClassLoaderResource("/dds/dds_X8R8G8B8_mipmap.dds"), dim)); + + return testData; } @Override