diff options
Diffstat (limited to 'libjava/classpath/java/awt/image')
-rw-r--r-- | libjava/classpath/java/awt/image/BufferedImage.java | 2 | ||||
-rw-r--r-- | libjava/classpath/java/awt/image/ColorModel.java | 61 |
2 files changed, 60 insertions, 3 deletions
diff --git a/libjava/classpath/java/awt/image/BufferedImage.java b/libjava/classpath/java/awt/image/BufferedImage.java index 3cabfbde692..16b0143850c 100644 --- a/libjava/classpath/java/awt/image/BufferedImage.java +++ b/libjava/classpath/java/awt/image/BufferedImage.java @@ -80,7 +80,7 @@ public class BufferedImage extends Image TYPE_BYTE_INDEXED = 13; static final int[] bits3 = { 8, 8, 8 }; - static final int[] bits4 = { 8, 8, 8 }; + static final int[] bits4 = { 8, 8, 8, 8 }; static final int[] bits1byte = { 8 }; static final int[] bits1ushort = { 16 }; diff --git a/libjava/classpath/java/awt/image/ColorModel.java b/libjava/classpath/java/awt/image/ColorModel.java index 40307f2b95d..e2f5378b4da 100644 --- a/libjava/classpath/java/awt/image/ColorModel.java +++ b/libjava/classpath/java/awt/image/ColorModel.java @@ -92,7 +92,12 @@ public abstract class ColorModel implements Transparency int transparency; boolean hasAlpha; boolean isAlphaPremultiplied; - + + /** + * The standard color model for the common sRGB. + */ + private static final ColorModel S_RGB_MODEL = new SRGBColorModel(); + static int[] nArray(int value, int times) { int[] array = new int[times]; @@ -196,7 +201,7 @@ public abstract class ColorModel implements Transparency */ public static ColorModel getRGBdefault() { - return new DirectColorModel(32, 0xff0000, 0xff00, 0xff, 0xff000000); + return S_RGB_MODEL; } public final boolean hasAlpha() @@ -761,4 +766,56 @@ public abstract class ColorModel implements Transparency { return getClass().getName() + "[" + stringParam() + "]"; } + + /** + * A color model optimized for standard sRGB. + */ + private static class SRGBColorModel + extends DirectColorModel + { + + SRGBColorModel() + { + super(32,0x00FF0000,0x0000FF00,0x000000FF,0xFF000000); + } + + public int getAlpha(Object inData) + { + return ((((int[]) inData)[0]) >> 24) & 0xFF; + } + + public int getBlue(Object inData) + { + return ((((int[]) inData)[0])) & 0xFF; + } + + public int getGreen(Object inData) + { + return ((((int[]) inData)[0]) >> 8) & 0xFF; + } + + public int getRed(Object inData) + { + return ((((int[]) inData)[0]) >> 16) & 0xFF; + } + + public int getRGB(Object inData) + { + return ((int[]) inData)[0]; + } + + public Object getDataElements(int rgb, Object pixel) + { + if(pixel == null) + { + pixel = new int[]{rgb}; + } + else + { + ((int[]) pixel)[0] = rgb; + } + + return pixel; + } + } } |