mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2026-04-30 00:00:01 -04:00
#651: Fix ExtraSamplesColorModel equals + hashcode to behave nicely with ImageTypeSpecifier comparison.
This commit is contained in:
+21
-3
@@ -40,15 +40,14 @@ import java.awt.color.ColorSpace;
|
||||
import java.awt.image.*;
|
||||
import java.util.Hashtable;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class ExtraSamplesColorModelTest {
|
||||
|
||||
private BufferedImage createExtraSamplesImage(int w, int h, ColorSpace cs, boolean hasAlpha, int extraComponents) {
|
||||
int samplesPerPixel = cs.getNumComponents() + (hasAlpha ? 1 : 0) + extraComponents;
|
||||
|
||||
ExtraSamplesColorModel colorModel = new ExtraSamplesColorModel(cs, hasAlpha, true, DataBuffer.TYPE_BYTE, extraComponents);
|
||||
ExtraSamplesColorModel colorModel = createExtraSamplesColorModel(cs, hasAlpha, extraComponents);
|
||||
SampleModel sampleModel = new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE, w, h, samplesPerPixel, samplesPerPixel * w, createOffsets(samplesPerPixel));
|
||||
|
||||
WritableRaster raster = Raster.createWritableRaster(sampleModel, new Point(0, 0));
|
||||
@@ -56,6 +55,10 @@ public class ExtraSamplesColorModelTest {
|
||||
return new BufferedImage(colorModel, raster, colorModel.isAlphaPremultiplied(), new Hashtable<>());
|
||||
}
|
||||
|
||||
private ExtraSamplesColorModel createExtraSamplesColorModel(ColorSpace cs, boolean hasAlpha, int extraComponents) {
|
||||
return new ExtraSamplesColorModel(cs, hasAlpha, true, DataBuffer.TYPE_BYTE, extraComponents);
|
||||
}
|
||||
|
||||
private static int[] createOffsets(int samplesPerPixel) {
|
||||
int[] offsets = new int[samplesPerPixel];
|
||||
for (int i = 0; i < samplesPerPixel; i++) {
|
||||
@@ -151,4 +154,19 @@ public class ExtraSamplesColorModelTest {
|
||||
assertEquals(Color.BLACK.getRGB(), image.getRGB(0, 0));
|
||||
assertEquals(Color.WHITE.getRGB(), image.getRGB(1, 0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEquals() {
|
||||
ExtraSamplesColorModel original = createExtraSamplesColorModel(ColorSpaces.getColorSpace(ColorSpace.CS_sRGB), true, 1);
|
||||
ExtraSamplesColorModel equal = createExtraSamplesColorModel(ColorSpaces.getColorSpace(ColorSpace.CS_sRGB), true, 1);
|
||||
|
||||
assertEquals(original, equal);
|
||||
assertEquals(equal, original);
|
||||
|
||||
ExtraSamplesColorModel different = createExtraSamplesColorModel(ColorSpaces.getColorSpace(ColorSpace.CS_sRGB), true, 2);
|
||||
ExtraSamplesColorModel differentToo = createExtraSamplesColorModel(ColorSpaces.getColorSpace(ColorSpace.CS_sRGB), false, 1);
|
||||
|
||||
assertNotEquals(original, different);
|
||||
assertNotEquals(original, differentToo);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user