java.awt.image.DataBuffer

Here are the examples of the java api class java.awt.image.DataBuffer taken from open source projects.

1. GraphicsUtils#getBytePixels()

Project: LGame
File: GraphicsUtils.java
/**
	 * ??????BufferedImage????????
	 * 
	 * @param img
	 * @return
	 */
public static byte[] getBytePixels(final BufferedImage img) {
    if (img == null) {
        return null;
    }
    DataBuffer buffer = img.getRaster().getDataBuffer();
    switch(buffer.getDataType()) {
        case DataBuffer.TYPE_BYTE:
            DataBufferByte byteBuf = (DataBufferByte) buffer;
            return byteBuf.getData();
        default:
            BufferedImage tmp = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
            Graphics2D g = tmp.createGraphics();
            g.drawImage(img, 0, 0, null);
            g.dispose();
            buffer = img.getRaster().getDataBuffer();
            if (buffer.getDataType() == DataBuffer.TYPE_BYTE) {
                return ((DataBufferByte) buffer).getData();
            }
            return null;
    }
}

2. JavaSEGraphicsUtils#getBytePixels()

Project: LGame
File: JavaSEGraphicsUtils.java
/**
	 * ??????BufferedImage????????
	 * 
	 * @param img
	 * @return
	 */
public static byte[] getBytePixels(final BufferedImage img) {
    if (img == null) {
        return null;
    }
    DataBuffer buffer = img.getRaster().getDataBuffer();
    switch(buffer.getDataType()) {
        case DataBuffer.TYPE_BYTE:
            DataBufferByte byteBuf = (DataBufferByte) buffer;
            return byteBuf.getData();
        default:
            BufferedImage tmp = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
            Graphics2D g = tmp.createGraphics();
            g.drawImage(img, 0, 0, null);
            g.dispose();
            buffer = img.getRaster().getDataBuffer();
            if (buffer.getDataType() == DataBuffer.TYPE_BYTE) {
                return ((DataBufferByte) buffer).getData();
            }
            return null;
    }
}

3. GraphicsUtils#loadDoubleFilterImage()

Project: LGame
File: GraphicsUtils.java
/**
	 * ??????????
	 * 
	 * @param img
	 * @param width
	 * @param height
	 * @return
	 */
public static final BufferedImage loadDoubleFilterImage(final Image img, final int width, final int height) {
    BufferedImage img1 = GraphicsUtils.drawClipImage(img, width, height, 0, 0);
    BufferedImage img2 = GraphicsUtils.drawClipImage(img, width, height, width, 0);
    WritableRaster writableRaster1 = img1.getRaster();
    DataBuffer dataBuffer1 = writableRaster1.getDataBuffer();
    int[] basePixels1 = AWTDataBufferHelper.getDataInt(dataBuffer1);
    WritableRaster writableRaster2 = img2.getRaster();
    DataBuffer dataBuffer2 = writableRaster2.getDataBuffer();
    int[] basePixels2 = AWTDataBufferHelper.getDataInt(dataBuffer2);
    int length = basePixels2.length;
    for (int i = 0; i < length; i++) {
        if (basePixels2[i] >= LColor.getRGB(200, 200, 200)) {
            basePixels2[i] = 0xffffff;
        } else {
            basePixels2[i] = basePixels1[i];
        }
    }
    img1.flush();
    img1 = null;
    return img2;
}

4. ImageEncodingHelper#encodeAlpha()

Project: xml-graphics-commons
File: ImageEncodingHelper.java
/**
     * Encodes the image's alpha channel. If it doesn't have an alpha channel, an
     * {@link IllegalStateException} is thrown.
     * @param out the OutputStream
     * @throws IOException if an I/O error occurs
     */
public void encodeAlpha(OutputStream out) throws IOException {
    if (!hasAlpha()) {
        throw new IllegalStateException("Image doesn't have an alpha channel");
    }
    Raster alpha = GraphicsUtil.getAlphaRaster(image);
    DataBuffer buffer = alpha.getDataBuffer();
    if (buffer instanceof DataBufferByte) {
        out.write(((DataBufferByte) buffer).getData());
    } else {
        throw new UnsupportedOperationException("Alpha raster not supported: " + buffer.getClass().getName());
    }
}

5. MipmapHelper#getImageAsARGBIntBuffer()

Project: Spoutcraft
File: MipmapHelper.java
private static IntBuffer getImageAsARGBIntBuffer(BufferedImage image) {
    DataBuffer buffer = image.getRaster().getDataBuffer();
    if (buffer instanceof DataBufferInt) {
        return IntBuffer.wrap(((DataBufferInt) buffer).getData());
    } else if (buffer instanceof DataBufferByte) {
        return ByteBuffer.wrap(((DataBufferByte) buffer).getData()).order(ByteOrder.BIG_ENDIAN).asIntBuffer();
    } else {
        int width = image.getWidth();
        int height = image.getHeight();
        int[] pixels = new int[width * height];
        image.getRGB(0, 0, width, height, pixels, 0, width);
        return IntBuffer.wrap(pixels);
    }
}

6. DataParser#parseData()

Project: sanselan
File: DataParser.java
public final void parseData(int data[][][], BufferedImage bi, ImageContents imageContents) {
    DataBuffer buffer = bi.getRaster().getDataBuffer();
    PsdHeaderInfo header = imageContents.header;
    int width = header.Columns;
    int height = header.Rows;
    for (int y = 0; y < height; y++) for (int x = 0; x < width; x++) {
        int rgb = getRGB(data, x, y, imageContents);
        buffer.setElem(y * width + x, rgb);
    }
}

7. ImageFactory#createCCMImage()

Project: openjdk
File: ImageFactory.java
public static BufferedImage createCCMImage(int cs, int dataType) {
    ColorSpace cSpace = ColorSpace.getInstance(cs);
    ComponentColorModel ccm = null;
    if (dataType == DataBuffer.TYPE_INT) {
        ccm = new ComponentColorModel(cSpace, ((cs == ColorSpace.CS_GRAY) ? new int[] { 8 } : new int[] { 8, 8, 8 }), false, false, Transparency.OPAQUE, dataType);
    } else {
        ccm = new ComponentColorModel(cSpace, false, false, Transparency.OPAQUE, dataType);
    }
    SampleModel sm = ccm.createCompatibleSampleModel(WIDTH, HEIGHT);
    WritableRaster raster = ccm.createCompatibleWritableRaster(WIDTH, HEIGHT);
    DataBuffer data = raster.getDataBuffer();
    fillCCM(data, sm, cSpace);
    return new BufferedImage(ccm, raster, false, null);
}

8. GetDataElementsTest#main()

Project: openjdk
File: GetDataElementsTest.java
public static void main(String[] args) {
    SampleModel sm = new ComponentSampleModel(dataType, width, height, 4, width * 4, new int[] { 0, 1, 2, 3 });
    DataBuffer db = sm.createDataBuffer();
    Object o = null;
    boolean testPassed = false;
    try {
        o = sm.getDataElements(Integer.MAX_VALUE, 0, 1, 1, o, db);
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println(e.getMessage());
        testPassed = true;
    }
    if (!testPassed) {
        throw new RuntimeException("Excpected excprion was not thrown.");
    }
}

9. UnmanagedDrawImagePerformance#makeUnmanagedBI()

Project: openjdk
File: UnmanagedDrawImagePerformance.java
private static BufferedImage makeUnmanagedBI(final int type) {
    final BufferedImage img = new BufferedImage(SIZE, SIZE, type);
    final DataBuffer db = img.getRaster().getDataBuffer();
    if (db instanceof DataBufferInt) {
        ((DataBufferInt) db).getData();
    } else if (db instanceof DataBufferShort) {
        ((DataBufferShort) db).getData();
    } else if (db instanceof DataBufferByte) {
        ((DataBufferByte) db).getData();
    } else {
        try {
            img.setAccelerationPriority(0.0f);
        } catch (final Throwable ignored) {
        }
    }
    return img;
}

10. IncorrectUnmanagedImageSourceOffset#makeUnmanagedBI()

Project: openjdk
File: IncorrectUnmanagedImageSourceOffset.java
private static BufferedImage makeUnmanagedBI(final int type) {
    final BufferedImage bi = new BufferedImage(511, 255, type);
    final DataBuffer db = bi.getRaster().getDataBuffer();
    if (db instanceof DataBufferInt) {
        ((DataBufferInt) db).getData();
    } else if (db instanceof DataBufferShort) {
        ((DataBufferShort) db).getData();
    } else if (db instanceof DataBufferByte) {
        ((DataBufferByte) db).getData();
    } else {
        try {
            bi.setAccelerationPriority(0.0f);
        } catch (final Throwable ignored) {
        }
    }
    return bi;
}

11. IncorrectUnmanagedImageRotatedClip#makeUnmanagedBI()

Project: openjdk
File: IncorrectUnmanagedImageRotatedClip.java
private static BufferedImage makeUnmanagedBI() {
    final BufferedImage bi = new BufferedImage(500, 200, TYPE_INT_ARGB);
    final DataBuffer db = bi.getRaster().getDataBuffer();
    if (db instanceof DataBufferInt) {
        ((DataBufferInt) db).getData();
    } else if (db instanceof DataBufferShort) {
        ((DataBufferShort) db).getData();
    } else if (db instanceof DataBufferByte) {
        ((DataBufferByte) db).getData();
    } else {
        try {
            bi.setAccelerationPriority(0.0f);
        } catch (final Throwable ignored) {
        }
    }
    return bi;
}

12. IncorrectClipXorModeSW2Surface#getBufferedImage()

Project: openjdk
File: IncorrectClipXorModeSW2Surface.java
private static BufferedImage getBufferedImage(int sw) {
    final BufferedImage bi = new BufferedImage(sw, sw, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = bi.createGraphics();
    g2d.setColor(Color.RED);
    g2d.fillRect(0, 0, sw, sw);
    g2d.dispose();
    final DataBuffer db = bi.getRaster().getDataBuffer();
    if (db instanceof DataBufferInt) {
        ((DataBufferInt) db).getData();
    } else if (db instanceof DataBufferShort) {
        ((DataBufferShort) db).getData();
    } else if (db instanceof DataBufferByte) {
        ((DataBufferByte) db).getData();
    } else {
        try {
            bi.setAccelerationPriority(0.0f);
        } catch (final Throwable ignored) {
        }
    }
    return bi;
}

13. IncorrectAlphaConversionBicubic#makeUnmanagedBI()

Project: openjdk
File: IncorrectAlphaConversionBicubic.java
private static BufferedImage makeUnmanagedBI(GraphicsConfiguration gc, int type) {
    BufferedImage img = gc.createCompatibleImage(SIZE, SIZE, type);
    Graphics2D g2d = img.createGraphics();
    g2d.setColor(RGB);
    g2d.fillRect(0, 0, SIZE, SIZE);
    g2d.dispose();
    final DataBuffer db = img.getRaster().getDataBuffer();
    if (db instanceof DataBufferInt) {
        ((DataBufferInt) db).getData();
    } else if (db instanceof DataBufferShort) {
        ((DataBufferShort) db).getData();
    } else if (db instanceof DataBufferByte) {
        ((DataBufferByte) db).getData();
    } else {
        try {
            img.setAccelerationPriority(0.0f);
        } catch (final Throwable ignored) {
        }
    }
    return img;
}

14. ShaderUtils#getImageDataFromImage()

Project: jmonkeyengine
File: ShaderUtils.java
public static final ByteBuffer getImageDataFromImage(BufferedImage bufferedImage) {
    WritableRaster wr;
    DataBuffer db;
    BufferedImage bi = new BufferedImage(128, 64, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = bi.createGraphics();
    g.drawImage(bufferedImage, null, null);
    bufferedImage = bi;
    wr = bi.getRaster();
    db = wr.getDataBuffer();
    DataBufferInt dbi = (DataBufferInt) db;
    int[] data = dbi.getData();
    ByteBuffer byteBuffer = ByteBuffer.allocateDirect(data.length * 4);
    byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
    byteBuffer.asIntBuffer().put(data);
    byteBuffer.flip();
    return byteBuffer;
}

15. ImageFactory#createCCMImage()

Project: jdk7u-jdk
File: ImageFactory.java
public static BufferedImage createCCMImage(int cs, int dataType) {
    ColorSpace cSpace = ColorSpace.getInstance(cs);
    ComponentColorModel ccm = null;
    if (dataType == DataBuffer.TYPE_INT) {
        ccm = new ComponentColorModel(cSpace, ((cs == ColorSpace.CS_GRAY) ? new int[] { 8 } : new int[] { 8, 8, 8 }), false, false, Transparency.OPAQUE, dataType);
    } else {
        ccm = new ComponentColorModel(cSpace, false, false, Transparency.OPAQUE, dataType);
    }
    SampleModel sm = ccm.createCompatibleSampleModel(WIDTH, HEIGHT);
    WritableRaster raster = ccm.createCompatibleWritableRaster(WIDTH, HEIGHT);
    DataBuffer data = raster.getDataBuffer();
    fillCCM(data, sm, cSpace);
    return new BufferedImage(ccm, raster, false, null);
}

16. GetDataElementsTest#main()

Project: jdk7u-jdk
File: GetDataElementsTest.java
public static void main(String[] args) {
    SampleModel sm = new ComponentSampleModel(dataType, width, height, 4, width * 4, new int[] { 0, 1, 2, 3 });
    DataBuffer db = sm.createDataBuffer();
    Object o = null;
    boolean testPassed = false;
    try {
        o = sm.getDataElements(Integer.MAX_VALUE, 0, 1, 1, o, db);
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println(e.getMessage());
        testPassed = true;
    }
    if (!testPassed) {
        throw new RuntimeException("Excpected excprion was not thrown.");
    }
}

17. DataParser#parseData()

Project: commons-imaging
File: DataParser.java
public final void parseData(final int[][][] data, final BufferedImage bi, final ImageContents imageContents) {
    final DataBuffer buffer = bi.getRaster().getDataBuffer();
    final PsdHeaderInfo header = imageContents.header;
    final int width = header.columns;
    final int height = header.rows;
    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++) {
            final int rgb = getRGB(data, x, y, imageContents);
            buffer.setElem(y * width + x, rgb);
        }
    }
}

18. JAIIIOServiceTest#testWriteFloatingPointLossy()

Project: bioformats
File: JAIIIOServiceTest.java
@Test(expectedExceptions = { IllegalArgumentException.class })
public void testWriteFloatingPointLossy() throws Exception {
    // The JAI ImageIO JPEG-2000 codec does not support floating point data.
    JPEG2000CodecOptions options = JPEG2000CodecOptions.getDefaultOptions();
    options.lossless = false;
    options.codeBlockSize = CODE_BLOCK;
    options.quality = 1.0f;
    SampleModel sm = new ComponentSampleModel(DataBuffer.TYPE_FLOAT, SIZE_X, SIZE_Y, 1, SIZE_X, new int[] { 0 });
    DataBuffer db = new DataBufferFloat(SIZE_X * SIZE_Y);
    WritableRaster wr = Raster.createWritableRaster(sm, db, null);
    ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
    ColorModel cm = new ComponentColorModel(cs, false, true, Transparency.OPAQUE, DataBuffer.TYPE_FLOAT);
    BufferedImage image = new BufferedImage(cm, wr, true, null);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    service.writeImage(stream, image, options);
}

19. AWTImageTools#makeRGBImage()

Project: bioformats
File: AWTImageTools.java
public static BufferedImage makeRGBImage(byte[][] data, int w, int h) {
    int[] buf = new int[data[0].length];
    int nBits = (data.length - 1) * 8;
    for (int i = 0; i < buf.length; i++) {
        for (int q = 0; q < data.length; q++) {
            buf[i] |= ((data[q][i] & 0xff) << (nBits - q * 8));
        }
    }
    DataBuffer buffer = new DataBufferInt(buf, buf.length);
    return constructImage(data.length, DataBuffer.TYPE_INT, w, h, false, false, buffer);
}

20. AWTImageTools#makeRGBImage()

Project: bioformats
File: AWTImageTools.java
public static BufferedImage makeRGBImage(byte[] data, int c, int w, int h, boolean interleaved) {
    // throw away channels beyond 4
    int cc = Math.min(c, 4);
    int[] buf = new int[data.length / c];
    int nBits = (cc - 1) * 8;
    for (int i = 0; i < buf.length; i++) {
        for (int q = 0; q < cc; q++) {
            if (interleaved) {
                buf[i] |= ((data[i * c + q] & 0xff) << (nBits - q * 8));
            } else {
                buf[i] |= ((data[q * buf.length + i] & 0xff) << (nBits - q * 8));
            }
        }
    }
    DataBuffer buffer = new DataBufferInt(buf, buf.length);
    return constructImage(cc, DataBuffer.TYPE_INT, w, h, false, false, buffer);
}

21. AWTImageTools#makeImage()

Project: bioformats
File: AWTImageTools.java
/**
   * Creates an image from the given int data.
   *
   * @param data Array containing image data.
   *   It is assumed that each channel corresponds to one element of the array.
   *   For example, for RGB data, data[0] is R, data[1] is G, and data[2] is B.
   * @param w Width of image plane.
   * @param h Height of image plane.
   * @param signed Whether the int values should be treated as signed
   *   (-2^31 to 2^31-1) instead of unsigned (0 to 2^32-1).
   */
public static BufferedImage makeImage(int[][] data, int w, int h, boolean signed) {
    int dataType = DataBuffer.TYPE_INT;
    DataBuffer buffer;
    if (signed) {
        buffer = new DataBufferInt(data, data[0].length);
    } else {
        buffer = new UnsignedIntBuffer(data, data[0].length);
    }
    return constructImage(data.length, dataType, w, h, false, true, buffer);
}

22. AWTImageTools#makeImage()

Project: bioformats
File: AWTImageTools.java
/**
   * Creates an image from the given short data.
   *
   * @param data Array containing image data.
   *   It is assumed that each channel corresponds to one element of the array.
   *   For example, for RGB data, data[0] is R, data[1] is G, and data[2] is B.
   * @param w Width of image plane.
   * @param h Height of image plane.
   * @param signed Whether the short values should be treated as signed
   *   (-32768 to 32767) instead of unsigned (0 to 65535).
   */
public static BufferedImage makeImage(short[][] data, int w, int h, boolean signed) {
    int dataType;
    DataBuffer buffer;
    if (signed) {
        dataType = DataBuffer.TYPE_SHORT;
        buffer = new SignedShortBuffer(data, data[0].length);
    } else {
        dataType = DataBuffer.TYPE_USHORT;
        buffer = new DataBufferUShort(data, data[0].length);
    }
    return constructImage(data.length, dataType, w, h, false, true, buffer);
}

23. AWTImageTools#makeImage()

Project: bioformats
File: AWTImageTools.java
// -- Image construction - from 2D (banded) data arrays --
/**
   * Creates an image from the given byte data.
   *
   * @param data Array containing image data.
   *   It is assumed that each channel corresponds to one element of the array.
   *   For example, for RGB data, data[0] is R, data[1] is G, and data[2] is B.
   * @param w Width of image plane.
   * @param h Height of image plane.
   * @param signed Whether the byte values should be treated as signed
   *   (-128 to 127) instead of unsigned (0 to 255).
   */
public static BufferedImage makeImage(byte[][] data, int w, int h, boolean signed) {
    if (data.length > 2)
        return makeRGBImage(data, w, h);
    int dataType;
    DataBuffer buffer;
    dataType = DataBuffer.TYPE_BYTE;
    if (signed) {
        buffer = new SignedByteBuffer(data, data[0].length);
    } else {
        buffer = new DataBufferByte(data, data[0].length);
    }
    return constructImage(data.length, dataType, w, h, false, true, buffer);
}

24. AWTImageTools#makeImage()

Project: bioformats
File: AWTImageTools.java
/**
   * Creates an image from the given int data.
   *
   * @param data Array containing image data.
   * @param w Width of image plane.
   * @param h Height of image plane.
   * @param c Number of channels.
   * @param interleaved If set, the channels are assumed to be interleaved;
   *   otherwise they are assumed to be sequential.
   *   For example, for RGB data, the pattern "RGBRGBRGB..." is interleaved,
   *   while "RRR...GGG...BBB..." is sequential.
   * @param signed Whether the int values should be treated as signed
   *   (-2^31 to 2^31-1) instead of unsigned (0 to 2^32-1).
   */
public static BufferedImage makeImage(int[] data, int w, int h, int c, boolean interleaved, boolean signed) {
    if (c == 1)
        return makeImage(data, w, h, signed);
    int dataType = DataBuffer.TYPE_INT;
    DataBuffer buffer;
    if (signed) {
        buffer = new DataBufferInt(data, c * w * h);
    } else {
        buffer = new UnsignedIntBuffer(data, c * w * h);
    }
    return constructImage(c, dataType, w, h, interleaved, false, buffer);
}

25. AWTImageTools#makeImage()

Project: bioformats
File: AWTImageTools.java
/**
   * Creates an image from the given short data.
   *
   * @param data Array containing image data.
   * @param w Width of image plane.
   * @param h Height of image plane.
   * @param c Number of channels.
   * @param interleaved If set, the channels are assumed to be interleaved;
   *   otherwise they are assumed to be sequential.
   *   For example, for RGB data, the pattern "RGBRGBRGB..." is interleaved,
   *   while "RRR...GGG...BBB..." is sequential.
   * @param signed Whether the short values should be treated as signed
   *   (-32768 to 32767) instead of unsigned (0 to 65535).
   */
public static BufferedImage makeImage(short[] data, int w, int h, int c, boolean interleaved, boolean signed) {
    if (c == 1)
        return makeImage(data, w, h, signed);
    int dataType;
    DataBuffer buffer;
    if (signed) {
        dataType = DataBuffer.TYPE_SHORT;
        buffer = new SignedShortBuffer(data, c * w * h);
    } else {
        dataType = DataBuffer.TYPE_USHORT;
        buffer = new DataBufferUShort(data, c * w * h);
    }
    return constructImage(c, dataType, w, h, interleaved, false, buffer);
}

26. AWTImageTools#makeImage()

Project: bioformats
File: AWTImageTools.java
// -- Image construction - from 1D (interleaved or banded) data arrays --
/**
   * Creates an image from the given byte data.
   *
   * @param data Array containing image data.
   * @param w Width of image plane.
   * @param h Height of image plane.
   * @param c Number of channels.
   * @param interleaved If set, the channels are assumed to be interleaved;
   *   otherwise they are assumed to be sequential.
   *   For example, for RGB data, the pattern "RGBRGBRGB..." is interleaved,
   *   while "RRR...GGG...BBB..." is sequential.
   * @param signed Whether the byte values should be treated as signed
   *   (-128 to 127) instead of unsigned (0 to 255).
   */
public static BufferedImage makeImage(byte[] data, int w, int h, int c, boolean interleaved, boolean signed) {
    if (c == 1)
        return makeImage(data, w, h, signed);
    if (c > 2)
        return makeRGBImage(data, c, w, h, interleaved);
    int dataType;
    DataBuffer buffer;
    dataType = DataBuffer.TYPE_BYTE;
    if (signed) {
        buffer = new SignedByteBuffer(data, c * w * h);
    } else {
        buffer = new DataBufferByte(data, c * w * h);
    }
    return constructImage(c, dataType, w, h, interleaved, false, buffer);
}

27. GraphicsUtil#copyRaster()

Project: batik
File: GraphicsUtil.java
/**
     * Creates a new raster that has a <b>copy</b> of the data in
     * <code>ras</code>.  This is highly optimized for speed.  There is
     * no provision for changing any aspect of the SampleModel.
     * However you can specify a new location for the returned raster.
     *
     * This method should be used when you need to change the contents
     * of a Raster that you do not "own" (ie the result of a
     * <code>getData</code> call).
     *
     * @param ras The Raster to copy.
     *
     * @param minX The x location for the upper left corner of the
     *             returned WritableRaster.
     *
     * @param minY The y location for the upper left corner of the
     *             returned WritableRaster.
     *
     * @return    A writable copy of <code>ras</code>
     */
public static WritableRaster copyRaster(Raster ras, int minX, int minY) {
    WritableRaster ret = Raster.createWritableRaster(ras.getSampleModel(), new Point(0, 0));
    ret = ret.createWritableChild(ras.getMinX() - ras.getSampleModelTranslateX(), ras.getMinY() - ras.getSampleModelTranslateY(), ras.getWidth(), ras.getHeight(), minX, minY, null);
    // Use System.arraycopy to copy the data between the two...
    DataBuffer srcDB = ras.getDataBuffer();
    DataBuffer retDB = ret.getDataBuffer();
    if (srcDB.getDataType() != retDB.getDataType()) {
        throw new IllegalArgumentException("New DataBuffer doesn't match original");
    }
    int len = srcDB.getSize();
    int banks = srcDB.getNumBanks();
    int[] offsets = srcDB.getOffsets();
    for (int b = 0; b < banks; b++) {
        switch(srcDB.getDataType()) {
            case DataBuffer.TYPE_BYTE:
                {
                    DataBufferByte srcDBT = (DataBufferByte) srcDB;
                    DataBufferByte retDBT = (DataBufferByte) retDB;
                    System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len);
                    break;
                }
            case DataBuffer.TYPE_INT:
                {
                    DataBufferInt srcDBT = (DataBufferInt) srcDB;
                    DataBufferInt retDBT = (DataBufferInt) retDB;
                    System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len);
                    break;
                }
            case DataBuffer.TYPE_SHORT:
                {
                    DataBufferShort srcDBT = (DataBufferShort) srcDB;
                    DataBufferShort retDBT = (DataBufferShort) retDB;
                    System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len);
                    break;
                }
            case DataBuffer.TYPE_USHORT:
                {
                    DataBufferUShort srcDBT = (DataBufferUShort) srcDB;
                    DataBufferUShort retDBT = (DataBufferUShort) retDB;
                    System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len);
                    break;
                }
        }
    }
    return ret;
}

28. GraphicsUtil#copyRaster()

Project: xml-graphics-commons
File: GraphicsUtil.java
/**
     * Creates a new raster that has a <b>copy</b> of the data in
     * <tt>ras</tt>.  This is highly optimized for speed.  There is
     * no provision for changing any aspect of the SampleModel.
     * However you can specify a new location for the returned raster.
     *
     * This method should be used when you need to change the contents
     * of a Raster that you do not "own" (ie the result of a
     * <tt>getData</tt> call).
     *
     * @param ras The Raster to copy.
     *
     * @param minX The x location for the upper left corner of the
     *             returned WritableRaster.
     *
     * @param minY The y location for the upper left corner of the
     *             returned WritableRaster.
     *
     * @return    A writable copy of <tt>ras</tt>
     */
public static WritableRaster copyRaster(Raster ras, int minX, int minY) {
    WritableRaster ret = Raster.createWritableRaster(ras.getSampleModel(), new Point(0, 0));
    ret = ret.createWritableChild(ras.getMinX() - ras.getSampleModelTranslateX(), ras.getMinY() - ras.getSampleModelTranslateY(), ras.getWidth(), ras.getHeight(), minX, minY, null);
    // Use System.arraycopy to copy the data between the two...
    DataBuffer srcDB = ras.getDataBuffer();
    DataBuffer retDB = ret.getDataBuffer();
    if (srcDB.getDataType() != retDB.getDataType()) {
        throw new IllegalArgumentException("New DataBuffer doesn't match original");
    }
    int len = srcDB.getSize();
    int banks = srcDB.getNumBanks();
    int[] offsets = srcDB.getOffsets();
    for (int b = 0; b < banks; b++) {
        switch(srcDB.getDataType()) {
            case DataBuffer.TYPE_BYTE:
                {
                    DataBufferByte srcDBT = (DataBufferByte) srcDB;
                    DataBufferByte retDBT = (DataBufferByte) retDB;
                    System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len);
                    break;
                }
            case DataBuffer.TYPE_INT:
                {
                    DataBufferInt srcDBT = (DataBufferInt) srcDB;
                    DataBufferInt retDBT = (DataBufferInt) retDB;
                    System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len);
                    break;
                }
            case DataBuffer.TYPE_SHORT:
                {
                    DataBufferShort srcDBT = (DataBufferShort) srcDB;
                    DataBufferShort retDBT = (DataBufferShort) retDB;
                    System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len);
                    break;
                }
            case DataBuffer.TYPE_USHORT:
                {
                    DataBufferUShort srcDBT = (DataBufferUShort) srcDB;
                    DataBufferUShort retDBT = (DataBufferUShort) retDB;
                    System.arraycopy(srcDBT.getData(b), offsets[b], retDBT.getData(b), offsets[b], len);
                    break;
                }
            default:
                throw new UnsupportedOperationException("unsupported data type: " + srcDB.getDataType());
        }
    }
    return ret;
}

29. RasterCreationTest#main()

Project: openjdk
File: RasterCreationTest.java
public static void main(String[] args) {
    final int width = 10;
    final int height = 5;
    final int imageSize = width * height;
    Point location = new Point(0, 0);
    int[] bandOffsets = { 0 };
    int[] bitMask = { 0x00ff0000, 0x0000ff00, 0xff, 0x0 };
    SampleModel[] inputSampleModels = { new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE, 1, 1, 1, 1, bandOffsets), new PixelInterleavedSampleModel(DataBuffer.TYPE_USHORT, 1, 1, 1, 1, bandOffsets), new PixelInterleavedSampleModel(DataBuffer.TYPE_INT, 1, 1, 1, 1, bandOffsets), new SinglePixelPackedSampleModel(DataBuffer.TYPE_BYTE, width, height, bitMask), new SinglePixelPackedSampleModel(DataBuffer.TYPE_USHORT, width, height, bitMask), new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT, width, height, bitMask), new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, width, height, 4), new MultiPixelPackedSampleModel(DataBuffer.TYPE_USHORT, width, height, 2), new MultiPixelPackedSampleModel(DataBuffer.TYPE_INT, width, height, 2) };
    // ---------------------------------------------------------------------
    // Test ability to create Raster & WritableRaster with DataBuffer
    // classes
    // ---------------------------------------------------------------------
    DataBuffer[] inputDataBuffer = { new DataBufferByte(imageSize), new DataBufferUShort(imageSize), new DataBufferInt(imageSize, 1), new DataBufferShort(imageSize), new DataBufferFloat(imageSize), new DataBufferDouble(imageSize) };
    for (SampleModel sm : inputSampleModels) {
        for (DataBuffer db : inputDataBuffer) {
            // Test Raster creation
            Raster.createRaster(sm, db, location);
            // Test writableRaster creation
            Raster.createWritableRaster(sm, db, location);
            Raster.createWritableRaster(sm, location);
        }
    }
    // ---------------------------------------------------------------------
    // Test ability to create Raster & WritableRaster with custom DataBuffer
    // classes
    // ---------------------------------------------------------------------
    DataBuffer[] myDataBuffer = { new MyDataBufferByte(imageSize), new MyDataBufferUShort(imageSize), new MyDataBufferInt(imageSize), new MyDataBufferShort(imageSize), new MyDataBufferDouble(imageSize), new MyDataBufferFloat(imageSize) };
    for (SampleModel sm : inputSampleModels) {
        for (DataBuffer db : myDataBuffer) {
            // Test Raster creation
            Raster.createRaster(sm, db, location);
            // Test writableRaster creation
            Raster.createWritableRaster(sm, db, location);
            Raster.createWritableRaster(sm, location);
        }
    }
    // ---------------------------------------------------------------------
    // Test ability to create InterleavedRaster
    // ---------------------------------------------------------------------
    int[] interleavedInputDataTypes = { DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT };
    int numBands = 1;
    for (int i : interleavedInputDataTypes) {
        Raster.createInterleavedRaster(i, width, height, 1, location);
        Raster.createInterleavedRaster(i, width, height, width * numBands, numBands, bandOffsets, location);
    }
    for (int i = 0; i < interleavedInputDataTypes.length; i++) {
        DataBuffer d1 = inputDataBuffer[i];
        DataBuffer d2 = myDataBuffer[i];
        Raster.createInterleavedRaster(d1, width, height, width * numBands, numBands, bandOffsets, location);
        Raster.createInterleavedRaster(d2, width, height, width * numBands, numBands, bandOffsets, location);
    }
    // ---------------------------------------------------------------------
    // Test ability to create BandedRaster
    // ---------------------------------------------------------------------
    int[] bankIndices = new int[numBands];
    bankIndices[0] = 0;
    int[] bandedInputDataTypes = { DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT };
    for (int i : bandedInputDataTypes) {
        Raster.createBandedRaster(i, width, height, 1, location);
        Raster.createBandedRaster(i, width, height, width, bankIndices, bandOffsets, location);
    }
    for (int i = 0; i < bandedInputDataTypes.length; i++) {
        DataBuffer d1 = inputDataBuffer[i];
        DataBuffer d2 = myDataBuffer[i];
        Raster.createBandedRaster(d1, width, height, width, bankIndices, bandOffsets, location);
        Raster.createBandedRaster(d2, width, height, width, bankIndices, bandOffsets, location);
    }
    // ---------------------------------------------------------------------
    // Test ability to create PackedRaster
    // ---------------------------------------------------------------------
    int[] bandMasks = new int[numBands];
    bandMasks[0] = 0;
    int packedInputDataTypes[] = { DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT };
    for (int i : packedInputDataTypes) {
        Raster.createPackedRaster(i, width, height, bandMasks, location);
        for (int bits = 1; bits < 5; bits *= 2) {
            Raster.createPackedRaster(i, width, height, 1, bits, location);
        }
    }
    for (int i = 0; i < packedInputDataTypes.length; i++) {
        DataBuffer d1 = inputDataBuffer[i];
        DataBuffer d2 = myDataBuffer[i];
        for (int bits = 1; bits < 5; bits *= 2) {
            Raster.createPackedRaster(d1, width, height, bits, location);
            Raster.createPackedRaster(d2, width, height, bits, location);
        }
        Raster.createPackedRaster(d1, width, height, 1, bandMasks, location);
        Raster.createPackedRaster(d2, width, height, 1, bandMasks, location);
    }
}

30. ImageEncodingHelperTestCase#testMockedEncodeRenderedImageWithDirectColorModelAsRGB()

Project: xml-graphics-commons
File: ImageEncodingHelperTestCase.java
/**
     * Tests encodeRenderedImageWithDirectColorModeAsRGB(). Uses mocking to test the method
     * implementation.
     * @throws IOException if an I/O error occurs.
     */
@Test
public void testMockedEncodeRenderedImageWithDirectColorModelAsRGB() throws IOException {
    BufferedImage image = mock(BufferedImage.class);
    final int[] templateMasks = new int[] { 0x00ff0000, /*R*/
    0x0000ff00, /*G*/
    0x000000ff, /*B*/
    0xff000000 };
    DirectColorModel dcm = new DirectColorModel(255, templateMasks[0], templateMasks[1], templateMasks[2], templateMasks[3]);
    WritableRaster raster = mock(WritableRaster.class);
    DataBuffer buffer = mock(DataBuffer.class);
    when(image.getColorModel()).thenReturn(dcm);
    when(image.getRaster()).thenReturn(raster);
    when(raster.getDataBuffer()).thenReturn(buffer);
    when(buffer.getDataType()).thenReturn(DataBuffer.TYPE_INT);
    when(image.getWidth()).thenReturn(3);
    when(image.getHeight()).thenReturn(3);
    final int expectedValue = 1 + 2 << 8 + 3 << 16;
    Answer<Object> ans = new Answer<Object>() {

        public Object answer(InvocationOnMock invocation) throws Throwable {
            Object[] args = invocation.getArguments();
            int[] data = (int[]) args[4];
            Arrays.fill(data, expectedValue);
            return null;
        }
    };
    when(raster.getDataElements(anyInt(), anyInt(), anyInt(), anyInt(), anyObject())).thenAnswer(ans);
    ByteArrayOutputStream optimized = new ByteArrayOutputStream();
    ImageEncodingHelper.encodeRenderedImageWithDirectColorModelAsRGB(image, optimized);
    byte[] expectedByteArray = new byte[27];
    Arrays.fill(expectedByteArray, (byte) expectedValue);
    assertTrue(Arrays.equals(expectedByteArray, optimized.toByteArray()));
}

31. PNGRed#decodePass()

Project: xml-graphics-commons
File: PNGRed.java
/**
     * Reads in an image of a given size and returns it as a
     * WritableRaster.
     */
private void decodePass(WritableRaster imRas, int xOffset, int yOffset, int xStep, int yStep, int passWidth, int passHeight) {
    if ((passWidth == 0) || (passHeight == 0)) {
        return;
    }
    int bytesPerRow = (inputBands * passWidth * bitDepth + 7) / 8;
    int eltsPerRow = (bitDepth == 16) ? bytesPerRow / 2 : bytesPerRow;
    byte[] curr = new byte[bytesPerRow];
    byte[] prior = new byte[bytesPerRow];
    // Create a 1-row tall Raster to hold the data
    WritableRaster passRow = createRaster(passWidth, 1, inputBands, eltsPerRow, bitDepth);
    DataBuffer dataBuffer = passRow.getDataBuffer();
    int type = dataBuffer.getDataType();
    byte[] byteData = null;
    short[] shortData = null;
    if (type == DataBuffer.TYPE_BYTE) {
        byteData = ((DataBufferByte) dataBuffer).getData();
    } else {
        shortData = ((DataBufferUShort) dataBuffer).getData();
    }
    // Decode the (sub)image row-by-row
    int srcY;
    int dstY;
    for (srcY = 0, dstY = yOffset; srcY < passHeight; srcY++, dstY += yStep) {
        // Read the filter type byte and a row of data
        int filter = 0;
        try {
            filter = dataStream.read();
            dataStream.readFully(curr, 0, bytesPerRow);
        } catch (Exception e) {
            e.printStackTrace();
        }
        switch(filter) {
            case PNG_FILTER_NONE:
                break;
            case PNG_FILTER_SUB:
                decodeSubFilter(curr, bytesPerRow, bytesPerPixel);
                break;
            case PNG_FILTER_UP:
                decodeUpFilter(curr, prior, bytesPerRow);
                break;
            case PNG_FILTER_AVERAGE:
                decodeAverageFilter(curr, prior, bytesPerRow, bytesPerPixel);
                break;
            case PNG_FILTER_PAETH:
                decodePaethFilter(curr, prior, bytesPerRow, bytesPerPixel);
                break;
            default:
                // Error -- unknown filter type
                String msg = PropertyUtil.getString("PNGImageDecoder16");
                throw new RuntimeException(msg);
        }
        // Copy data into passRow byte by byte
        if (bitDepth < 16) {
            System.arraycopy(curr, 0, byteData, 0, bytesPerRow);
        } else {
            int idx = 0;
            for (int j = 0; j < eltsPerRow; j++) {
                shortData[j] = (short) ((curr[idx] << 8) | (curr[idx + 1] & 0xff));
                idx += 2;
            }
        }
        processPixels(postProcess, passRow, imRas, xOffset, xStep, dstY, passWidth);
        // Swap curr and prior
        byte[] tmp = prior;
        prior = curr;
        curr = tmp;
    }
}

32. PNGRed#createRaster()

Project: xml-graphics-commons
File: PNGRed.java
private WritableRaster createRaster(int width, int height, int bands, int scanlineStride, int bitDepth) {
    DataBuffer dataBuffer;
    WritableRaster ras = null;
    Point origin = new Point(0, 0);
    if ((bitDepth < 8) && (bands == 1)) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createPackedRaster(dataBuffer, width, height, bitDepth, origin);
    } else if (bitDepth <= 8) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    } else {
        dataBuffer = new DataBufferUShort(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    }
    return ras;
}

33. PNGImageDecoder#decodePass()

Project: xml-graphics-commons
File: PNGImageDecoder.java
/**
     * Reads in an image of a given size and returns it as a
     * WritableRaster.
     */
private void decodePass(WritableRaster imRas, int xOffset, int yOffset, int xStep, int yStep, int passWidth, int passHeight) {
    if ((passWidth == 0) || (passHeight == 0)) {
        return;
    }
    int bytesPerRow = (inputBands * passWidth * bitDepth + 7) / 8;
    int eltsPerRow = (bitDepth == 16) ? bytesPerRow / 2 : bytesPerRow;
    byte[] curr = new byte[bytesPerRow];
    byte[] prior = new byte[bytesPerRow];
    // Create a 1-row tall Raster to hold the data
    WritableRaster passRow = createRaster(passWidth, 1, inputBands, eltsPerRow, bitDepth);
    DataBuffer dataBuffer = passRow.getDataBuffer();
    int type = dataBuffer.getDataType();
    byte[] byteData = null;
    short[] shortData = null;
    if (type == DataBuffer.TYPE_BYTE) {
        byteData = ((DataBufferByte) dataBuffer).getData();
    } else {
        shortData = ((DataBufferUShort) dataBuffer).getData();
    }
    // Decode the (sub)image row-by-row
    int srcY;
    int dstY;
    for (srcY = 0, dstY = yOffset; srcY < passHeight; srcY++, dstY += yStep) {
        // Read the filter type byte and a row of data
        int filter = 0;
        try {
            filter = dataStream.read();
            dataStream.readFully(curr, 0, bytesPerRow);
        } catch (Exception e) {
            e.printStackTrace();
        }
        switch(filter) {
            case PNG_FILTER_NONE:
                break;
            case PNG_FILTER_SUB:
                decodeSubFilter(curr, bytesPerRow, bytesPerPixel);
                break;
            case PNG_FILTER_UP:
                decodeUpFilter(curr, prior, bytesPerRow);
                break;
            case PNG_FILTER_AVERAGE:
                decodeAverageFilter(curr, prior, bytesPerRow, bytesPerPixel);
                break;
            case PNG_FILTER_PAETH:
                decodePaethFilter(curr, prior, bytesPerRow, bytesPerPixel);
                break;
            default:
                // Error -- uknown filter type
                String msg = PropertyUtil.getString("PNGImageDecoder16");
                throw new RuntimeException(msg);
        }
        // Copy data into passRow byte by byte
        if (bitDepth < 16) {
            System.arraycopy(curr, 0, byteData, 0, bytesPerRow);
        } else {
            int idx = 0;
            for (int j = 0; j < eltsPerRow; j++) {
                shortData[j] = (short) ((curr[idx] << 8) | (curr[idx + 1] & 0xff));
                idx += 2;
            }
        }
        processPixels(postProcess, passRow, imRas, xOffset, xStep, dstY, passWidth);
        // Swap curr and prior
        byte[] tmp = prior;
        prior = curr;
        curr = tmp;
    }
}

34. PNGImageDecoder#createRaster()

Project: xml-graphics-commons
File: PNGImageDecoder.java
private WritableRaster createRaster(int width, int height, int bands, int scanlineStride, int bitDepth) {
    DataBuffer dataBuffer;
    WritableRaster ras = null;
    Point origin = new Point(0, 0);
    if ((bitDepth < 8) && (bands == 1)) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createPackedRaster(dataBuffer, width, height, bitDepth, origin);
    } else if (bitDepth <= 8) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    } else {
        dataBuffer = new DataBufferUShort(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    }
    return ras;
}

35. XpmImageParser#readXpmImage()

Project: sanselan
File: XpmImageParser.java
private BufferedImage readXpmImage(XpmHeader xpmHeader, BasicCParser cParser) throws ImageReadException, IOException {
    ColorModel colorModel;
    WritableRaster raster;
    int bpp;
    if (xpmHeader.palette.size() <= (1 << 8)) {
        int[] palette = new int[xpmHeader.palette.size()];
        for (Iterator<Map.Entry<Object, PaletteEntry>> it = xpmHeader.palette.entrySet().iterator(); it.hasNext(); ) {
            Map.Entry<Object, PaletteEntry> entry = it.next();
            PaletteEntry paletteEntry = entry.getValue();
            palette[paletteEntry.index] = paletteEntry.getBestARGB();
        }
        colorModel = new IndexColorModel(8, xpmHeader.palette.size(), palette, 0, true, -1, DataBuffer.TYPE_BYTE);
        raster = WritableRaster.createInterleavedRaster(DataBuffer.TYPE_BYTE, xpmHeader.width, xpmHeader.height, 1, null);
        bpp = 8;
    } else if (xpmHeader.palette.size() <= (1 << 16)) {
        int[] palette = new int[xpmHeader.palette.size()];
        for (Iterator<Map.Entry<Object, PaletteEntry>> it = xpmHeader.palette.entrySet().iterator(); it.hasNext(); ) {
            Map.Entry<Object, PaletteEntry> entry = it.next();
            PaletteEntry paletteEntry = entry.getValue();
            palette[paletteEntry.index] = paletteEntry.getBestARGB();
        }
        colorModel = new IndexColorModel(16, xpmHeader.palette.size(), palette, 0, true, -1, DataBuffer.TYPE_USHORT);
        raster = WritableRaster.createInterleavedRaster(DataBuffer.TYPE_USHORT, xpmHeader.width, xpmHeader.height, 1, null);
        bpp = 16;
    } else {
        colorModel = new DirectColorModel(32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000);
        raster = WritableRaster.createPackedRaster(DataBuffer.TYPE_INT, xpmHeader.width, xpmHeader.height, new int[] { 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 }, null);
        bpp = 32;
    }
    BufferedImage image = new BufferedImage(colorModel, raster, colorModel.isAlphaPremultiplied(), new Properties());
    DataBuffer dataBuffer = raster.getDataBuffer();
    StringBuilder row = new StringBuilder();
    boolean hasMore = true;
    for (int y = 0; y < xpmHeader.height; y++) {
        row.setLength(0);
        hasMore = parseNextString(cParser, row);
        if (y < (xpmHeader.height - 1) && !hasMore)
            throw new ImageReadException("Parsing XPM file failed, " + "insufficient image rows in file");
        int rowOffset = y * xpmHeader.width;
        for (int x = 0; x < xpmHeader.width; x++) {
            String index = row.substring(x * xpmHeader.numCharsPerPixel, (x + 1) * xpmHeader.numCharsPerPixel);
            PaletteEntry paletteEntry = xpmHeader.palette.get(index);
            if (paletteEntry == null) {
                throw new ImageReadException("No palette entry was defined " + "for " + index);
            }
            if (bpp <= 16)
                dataBuffer.setElem(rowOffset + x, paletteEntry.index);
            else
                dataBuffer.setElem(rowOffset + x, paletteEntry.getBestARGB());
        }
    }
    while (hasMore) {
        row.setLength(0);
        hasMore = parseNextString(cParser, row);
    }
    String token = cParser.nextToken();
    if (!token.equals(";"))
        throw new ImageReadException("Last token wasn't ';'");
    return image;
}

36. LWJGLGraphics#upload()

Project: playn
File: LWJGLGraphics.java
@Override
protected void upload(BufferedImage img, Texture tex) {
    // Convert the bitmap into a format for quick uploading (NOOPs if already optimized)
    BufferedImage bitmap = convertImage(img);
    DataBuffer dbuf = bitmap.getRaster().getDataBuffer();
    ByteBuffer bbuf;
    int format, type;
    if (bitmap.getType() == BufferedImage.TYPE_INT_ARGB_PRE) {
        DataBufferInt ibuf = (DataBufferInt) dbuf;
        int iSize = ibuf.getSize() * 4;
        bbuf = checkGetImageBuffer(iSize);
        bbuf.asIntBuffer().put(ibuf.getData());
        bbuf.position(bbuf.position() + iSize);
        bbuf.flip();
        format = GL12.GL_BGRA;
        type = GL12.GL_UNSIGNED_INT_8_8_8_8_REV;
    } else if (bitmap.getType() == BufferedImage.TYPE_4BYTE_ABGR) {
        DataBufferByte dbbuf = (DataBufferByte) dbuf;
        bbuf = checkGetImageBuffer(dbbuf.getSize());
        bbuf.put(dbbuf.getData());
        bbuf.flip();
        format = GL11.GL_RGBA;
        type = GL12.GL_UNSIGNED_INT_8_8_8_8;
    } else {
        // except we don't know how to deal with it
        throw new RuntimeException("Image type wasn't converted to usable: " + bitmap.getType());
    }
    gl.glBindTexture(GL11.GL_TEXTURE_2D, tex.id);
    GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, bitmap.getWidth(), bitmap.getHeight(), 0, format, type, bbuf);
    gl.checkError("updateTexture");
}

37. LWJGLGraphics#upload()

Project: playn
File: LWJGLGraphics.java
@Override
void upload(BufferedImage img, Texture tex) {
    // Convert the bitmap into a format for quick uploading (NOOPs if already optimized)
    BufferedImage bitmap = convertImage(img);
    DataBuffer dbuf = bitmap.getRaster().getDataBuffer();
    ByteBuffer bbuf;
    int format, type;
    if (bitmap.getType() == BufferedImage.TYPE_INT_ARGB_PRE) {
        DataBufferInt ibuf = (DataBufferInt) dbuf;
        int iSize = ibuf.getSize() * 4;
        bbuf = checkGetImageBuffer(iSize);
        bbuf.asIntBuffer().put(ibuf.getData());
        bbuf.position(bbuf.position() + iSize);
        bbuf.flip();
        format = GL12.GL_BGRA;
        type = GL12.GL_UNSIGNED_INT_8_8_8_8_REV;
    } else if (bitmap.getType() == BufferedImage.TYPE_4BYTE_ABGR) {
        DataBufferByte dbbuf = (DataBufferByte) dbuf;
        bbuf = checkGetImageBuffer(dbbuf.getSize());
        bbuf.put(dbbuf.getData());
        bbuf.flip();
        format = GL11.GL_RGBA;
        type = GL12.GL_UNSIGNED_INT_8_8_8_8;
    } else {
        // except we don't know how to deal with it
        throw new RuntimeException("Image type wasn't converted to usable: " + bitmap.getType());
    }
    gl.glBindTexture(GL11.GL_TEXTURE_2D, tex.id);
    GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, bitmap.getWidth(), bitmap.getHeight(), 0, format, type, bbuf);
    gl.checkError("updateTexture");
}

38. IncorrectSampleMaskTest#doTest()

Project: openjdk
File: IncorrectSampleMaskTest.java
private static void doTest(int dataType) {
    int maxSize = DataBuffer.getDataTypeSize(dataType);
    System.out.println("Type size: " + maxSize);
    int theMask = (int) (1L << (maxSize + 2)) - 1;
    System.out.printf("theMask=%x\n", theMask);
    SinglePixelPackedSampleModel sm = new SinglePixelPackedSampleModel(dataType, w, h, new int[] { theMask });
    int[] sampleSize = sm.getSampleSize();
    for (int s : sampleSize) {
        if (s > maxSize) {
            throw new RuntimeException("Test failed: sample size is too big:" + s);
        }
    }
    System.out.println("Test medialib...");
    DataBuffer buf = createDataBuffer(dataType);
    WritableRaster wr = Raster.createWritableRaster(sm, buf, null);
    op.filter(wr, null);
    System.out.println("Test PASSED.");
}

39. GetSamplesTest#doTest()

Project: openjdk
File: GetSamplesTest.java
private static void doTest(Class<? extends SampleModel> c) {
    System.out.println("Test for: " + c.getName());
    SampleModel sm = createSampleModel(c);
    DataBuffer db = sm.createDataBuffer();
    int[] iArray = new int[width * height + numBands];
    float[] fArray = new float[width * height + numBands];
    double[] dArray = new double[width * height + numBands];
    boolean iOk = false;
    boolean fOk = false;
    boolean dOk = false;
    try {
        sm.getSamples(Integer.MAX_VALUE, 0, 1, 1, 0, iArray, db);
        sm.setSamples(Integer.MAX_VALUE, 0, 1, 1, 0, iArray, db);
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println(e.getMessage());
        iOk = true;
    }
    try {
        sm.getSamples(Integer.MAX_VALUE, 0, 1, 1, 0, fArray, db);
        sm.setSamples(Integer.MAX_VALUE, 0, 1, 1, 0, fArray, db);
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println(e.getMessage());
        fOk = true;
    }
    try {
        sm.getSamples(0, Integer.MAX_VALUE, 1, 1, 0, dArray, db);
        sm.setSamples(0, Integer.MAX_VALUE, 1, 1, 0, dArray, db);
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println(e.getMessage());
        dOk = true;
    }
    if (!iOk || !fOk || !dOk) {
        throw new RuntimeException("Test for " + c.getSimpleName() + " failed: iOk=" + iOk + "; fOk=" + fOk + "; dOk=" + dOk);
    }
}

40. SunToolkit#getScaledIconData()

Project: openjdk
File: SunToolkit.java
public static DataBufferInt getScaledIconData(java.util.List<Image> imageList, int width, int height) {
    BufferedImage bimage = getScaledIconImage(imageList, width, height);
    if (bimage == null) {
        return null;
    }
    Raster raster = bimage.getRaster();
    DataBuffer buffer = raster.getDataBuffer();
    return (DataBufferInt) buffer;
}

41. WritableRasterNative#createNativeRaster()

Project: openjdk
File: WritableRasterNative.java
public static WritableRasterNative createNativeRaster(ColorModel cm, SurfaceData sd, int width, int height) {
    SampleModel smHw = null;
    int dataType = 0;
    int scanStride = width;
    switch(cm.getPixelSize()) {
        case 8:
        case 12:
            // 8-bits uses PixelInterleavedSampleModel
            if (cm.getPixelSize() == 8) {
                dataType = DataBuffer.TYPE_BYTE;
            } else {
                dataType = DataBuffer.TYPE_USHORT;
            }
            int[] bandOffsets = new int[1];
            bandOffsets[0] = 0;
            smHw = new PixelInterleavedSampleModel(dataType, width, height, 1, scanStride, bandOffsets);
            break;
        // all others use SinglePixelPackedSampleModel
        case 15:
        case 16:
            dataType = DataBuffer.TYPE_USHORT;
            int[] bitMasks = new int[3];
            DirectColorModel dcm = (DirectColorModel) cm;
            bitMasks[0] = dcm.getRedMask();
            bitMasks[1] = dcm.getGreenMask();
            bitMasks[2] = dcm.getBlueMask();
            smHw = new SinglePixelPackedSampleModel(dataType, width, height, scanStride, bitMasks);
            break;
        case 24:
        case 32:
            dataType = DataBuffer.TYPE_INT;
            bitMasks = new int[3];
            dcm = (DirectColorModel) cm;
            bitMasks[0] = dcm.getRedMask();
            bitMasks[1] = dcm.getGreenMask();
            bitMasks[2] = dcm.getBlueMask();
            smHw = new SinglePixelPackedSampleModel(dataType, width, height, scanStride, bitMasks);
            break;
        default:
            throw new InternalError("Unsupported depth " + cm.getPixelSize());
    }
    DataBuffer dbn = new DataBufferNative(sd, dataType, width, height);
    return new WritableRasterNative(smHw, dbn);
}

42. RenderableImageProducer#run()

Project: openjdk
File: RenderableImageProducer.java
/**
     * The runnable method for this class. This will produce an image using
     * the current RenderableImage and RenderContext and send it to all the
     * ImageConsumer currently registered with this class.
     */
public void run() {
    // First get the rendered image
    RenderedImage rdrdImage;
    if (rc != null) {
        rdrdImage = rdblImage.createRendering(rc);
    } else {
        rdrdImage = rdblImage.createDefaultRendering();
    }
    // And its ColorModel
    ColorModel colorModel = rdrdImage.getColorModel();
    Raster raster = rdrdImage.getData();
    SampleModel sampleModel = raster.getSampleModel();
    DataBuffer dataBuffer = raster.getDataBuffer();
    if (colorModel == null) {
        colorModel = ColorModel.getRGBdefault();
    }
    int minX = raster.getMinX();
    int minY = raster.getMinY();
    int width = raster.getWidth();
    int height = raster.getHeight();
    Enumeration<ImageConsumer> icList;
    ImageConsumer ic;
    // Set up the ImageConsumers
    icList = ics.elements();
    while (icList.hasMoreElements()) {
        ic = icList.nextElement();
        ic.setDimensions(width, height);
        ic.setHints(ImageConsumer.TOPDOWNLEFTRIGHT | ImageConsumer.COMPLETESCANLINES | ImageConsumer.SINGLEPASS | ImageConsumer.SINGLEFRAME);
    }
    // Get RGB pixels from the raster scanline by scanline and
    // send to consumers.
    int pix[] = new int[width];
    int i, j;
    int numBands = sampleModel.getNumBands();
    int tmpPixel[] = new int[numBands];
    for (j = 0; j < height; j++) {
        for (i = 0; i < width; i++) {
            sampleModel.getPixel(i, j, tmpPixel, dataBuffer);
            pix[i] = colorModel.getDataElement(tmpPixel, 0);
        }
        // Now send the scanline to the Consumers
        icList = ics.elements();
        while (icList.hasMoreElements()) {
            ic = icList.nextElement();
            ic.setPixels(0, j, width, 1, colorModel, pix, 0, width);
        }
    }
    // Now tell the consumers we're done.
    icList = ics.elements();
    while (icList.hasMoreElements()) {
        ic = icList.nextElement();
        ic.imageComplete(ImageConsumer.STATICIMAGEDONE);
    }
}

43. PNGImageReader#createRaster()

Project: openjdk
File: PNGImageReader.java
private WritableRaster createRaster(int width, int height, int bands, int scanlineStride, int bitDepth) {
    DataBuffer dataBuffer;
    WritableRaster ras = null;
    Point origin = new Point(0, 0);
    if ((bitDepth < 8) && (bands == 1)) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createPackedRaster(dataBuffer, width, height, bitDepth, origin);
    } else if (bitDepth <= 8) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    } else {
        dataBuffer = new DataBufferUShort(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    }
    return ras;
}

44. ImageUtil#setUnpackedBinaryData()

Project: openjdk
File: ImageUtil.java
/**
     * Copies data into the packed array of the {@code Raster}
     * from an array of unpacked data of the form returned by
     * {@code getUnpackedBinaryData()}.
     *
     * <p> If the data are binary, then the target bit will be set if
     * and only if the corresponding byte is non-zero.
     *
     * @throws IllegalArgumentException if {@code isBinary()} returns
     * {@code false} with the {@code SampleModel} of the
     * supplied {@code Raster} as argument.
     */
public static void setUnpackedBinaryData(byte[] bdata, WritableRaster raster, Rectangle rect) {
    SampleModel sm = raster.getSampleModel();
    if (!isBinary(sm)) {
        throw new IllegalArgumentException(I18N.getString("ImageUtil0"));
    }
    int rectX = rect.x;
    int rectY = rect.y;
    int rectWidth = rect.width;
    int rectHeight = rect.height;
    DataBuffer dataBuffer = raster.getDataBuffer();
    int dx = rectX - raster.getSampleModelTranslateX();
    int dy = rectY - raster.getSampleModelTranslateY();
    MultiPixelPackedSampleModel mpp = (MultiPixelPackedSampleModel) sm;
    int lineStride = mpp.getScanlineStride();
    int eltOffset = dataBuffer.getOffset() + mpp.getOffset(dx, dy);
    int bitOffset = mpp.getBitOffset(dx);
    int k = 0;
    if (dataBuffer instanceof DataBufferByte) {
        byte[] data = ((DataBufferByte) dataBuffer).getData();
        for (int y = 0; y < rectHeight; y++) {
            int bOffset = eltOffset * 8 + bitOffset;
            for (int x = 0; x < rectWidth; x++) {
                if (bdata[k++] != (byte) 0) {
                    data[bOffset / 8] |= (byte) (0x00000001 << (7 - bOffset & 7));
                }
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferShort || dataBuffer instanceof DataBufferUShort) {
        short[] data = dataBuffer instanceof DataBufferShort ? ((DataBufferShort) dataBuffer).getData() : ((DataBufferUShort) dataBuffer).getData();
        for (int y = 0; y < rectHeight; y++) {
            int bOffset = eltOffset * 16 + bitOffset;
            for (int x = 0; x < rectWidth; x++) {
                if (bdata[k++] != (byte) 0) {
                    data[bOffset / 16] |= (short) (0x00000001 << (15 - bOffset % 16));
                }
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferInt) {
        int[] data = ((DataBufferInt) dataBuffer).getData();
        for (int y = 0; y < rectHeight; y++) {
            int bOffset = eltOffset * 32 + bitOffset;
            for (int x = 0; x < rectWidth; x++) {
                if (bdata[k++] != (byte) 0) {
                    data[bOffset / 32] |= (0x00000001 << (31 - bOffset % 32));
                }
                bOffset++;
            }
            eltOffset += lineStride;
        }
    }
}

45. ImageUtil#getUnpackedBinaryData()

Project: openjdk
File: ImageUtil.java
/**
     * Returns the binary data unpacked into an array of bytes.
     * The line stride will be the width of the {@code Raster}.
     *
     * @throws IllegalArgumentException if {@code isBinary()} returns
     * {@code false} with the {@code SampleModel} of the
     * supplied {@code Raster} as argument.
     */
public static byte[] getUnpackedBinaryData(Raster raster, Rectangle rect) {
    SampleModel sm = raster.getSampleModel();
    if (!isBinary(sm)) {
        throw new IllegalArgumentException(I18N.getString("ImageUtil0"));
    }
    int rectX = rect.x;
    int rectY = rect.y;
    int rectWidth = rect.width;
    int rectHeight = rect.height;
    DataBuffer dataBuffer = raster.getDataBuffer();
    int dx = rectX - raster.getSampleModelTranslateX();
    int dy = rectY - raster.getSampleModelTranslateY();
    MultiPixelPackedSampleModel mpp = (MultiPixelPackedSampleModel) sm;
    int lineStride = mpp.getScanlineStride();
    int eltOffset = dataBuffer.getOffset() + mpp.getOffset(dx, dy);
    int bitOffset = mpp.getBitOffset(dx);
    byte[] bdata = new byte[rectWidth * rectHeight];
    int maxY = rectY + rectHeight;
    int maxX = rectX + rectWidth;
    int k = 0;
    if (dataBuffer instanceof DataBufferByte) {
        byte[] data = ((DataBufferByte) dataBuffer).getData();
        for (int y = rectY; y < maxY; y++) {
            int bOffset = eltOffset * 8 + bitOffset;
            for (int x = rectX; x < maxX; x++) {
                byte b = data[bOffset / 8];
                bdata[k++] = (byte) ((b >>> (7 - bOffset & 7)) & 0x0000001);
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferShort || dataBuffer instanceof DataBufferUShort) {
        short[] data = dataBuffer instanceof DataBufferShort ? ((DataBufferShort) dataBuffer).getData() : ((DataBufferUShort) dataBuffer).getData();
        for (int y = rectY; y < maxY; y++) {
            int bOffset = eltOffset * 16 + bitOffset;
            for (int x = rectX; x < maxX; x++) {
                short s = data[bOffset / 16];
                bdata[k++] = (byte) ((s >>> (15 - bOffset % 16)) & 0x0000001);
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferInt) {
        int[] data = ((DataBufferInt) dataBuffer).getData();
        for (int y = rectY; y < maxY; y++) {
            int bOffset = eltOffset * 32 + bitOffset;
            for (int x = rectX; x < maxX; x++) {
                int i = data[bOffset / 32];
                bdata[k++] = (byte) ((i >>> (31 - bOffset % 32)) & 0x0000001);
                bOffset++;
            }
            eltOffset += lineStride;
        }
    }
    return bdata;
}

46. GraphicsUtils#newAwtARGBImage()

Project: LGame
File: GraphicsUtils.java
/**
	 * ?????????ARGB??BufferedImage
	 * 
	 * @param pixels
	 * @param w
	 * @param h
	 * @param pixelSize
	 * @return
	 */
public static BufferedImage newAwtARGBImage(int[] pixels, int w, int h, int pixelSize) {
    DataBuffer dataBuffer = new DataBufferInt(pixels, pixelSize);
    SampleModel sample = new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT, w, h, new int[] { 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 });
    WritableRaster raster = Raster.createWritableRaster(sample, dataBuffer, new Point(0, 0));
    return new BufferedImage(COLOR_MODEL_ARGB, raster, true, null);
}

47. JavaSEGraphicsUtils#newAwtARGBImage()

Project: LGame
File: JavaSEGraphicsUtils.java
/**
	 * ?????????ARGB??BufferedImage
	 * 
	 * @param pixels
	 * @param w
	 * @param h
	 * @param pixelSize
	 * @return
	 */
public static BufferedImage newAwtARGBImage(int[] pixels, int w, int h, int pixelSize) {
    DataBuffer dataBuffer = new DataBufferInt(pixels, pixelSize);
    SampleModel sample = new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT, w, h, new int[] { 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 });
    WritableRaster raster = Raster.createWritableRaster(sample, dataBuffer, new Point(0, 0));
    return new BufferedImage(COLOR_MODEL_ARGB, raster, true, null);
}

48. JavaSELwjglGraphics#upload()

Project: LGame
File: JavaSELwjglGraphics.java
@Override
protected void upload(BufferedImage img, LTexture tex) {
    if (img == null) {
        return;
    }
    BufferedImage bitmap = convertImage(img);
    DataBuffer dbuf = bitmap.getRaster().getDataBuffer();
    ByteBuffer bbuf;
    int format, type;
    if (bitmap.getType() == BufferedImage.TYPE_INT_ARGB_PRE) {
        DataBufferInt ibuf = (DataBufferInt) dbuf;
        int iSize = ibuf.getSize() * 4;
        bbuf = checkGetImageBuffer(iSize);
        bbuf.asIntBuffer().put(ibuf.getData());
        bbuf.position(bbuf.position() + iSize);
        bbuf.flip();
        format = GL12.GL_BGRA;
        type = GL12.GL_UNSIGNED_INT_8_8_8_8_REV;
    } else if (bitmap.getType() == BufferedImage.TYPE_4BYTE_ABGR) {
        DataBufferByte dbbuf = (DataBufferByte) dbuf;
        bbuf = checkGetImageBuffer(dbbuf.getSize());
        bbuf.put(dbbuf.getData());
        bbuf.flip();
        format = GL11.GL_RGBA;
        type = GL12.GL_UNSIGNED_INT_8_8_8_8;
    } else {
        int srcWidth = img.getWidth();
        int srcHeight = img.getHeight();
        int texWidth = GLUtils.powerOfTwo(srcWidth);
        int texHeight = GLUtils.powerOfTwo(srcHeight);
        int width = srcWidth;
        int height = srcHeight;
        boolean hasAlpha = img.getColorModel().hasAlpha();
        if (isPowerOfTwo(srcWidth) && isPowerOfTwo(srcHeight)) {
            width = srcWidth;
            height = srcHeight;
            texHeight = srcHeight;
            texWidth = srcWidth;
            ByteBuffer source = NativeSupport.getByteBuffer((byte[]) img.getRaster().getDataElements(0, 0, img.getWidth(), img.getHeight(), null));
            int srcPixelFormat = hasAlpha ? GL20.GL_RGBA : GL20.GL_RGB;
            gl.glBindTexture(GL11.GL_TEXTURE_2D, tex.getID());
            gl.glTexImage2D(GL20.GL_TEXTURE_2D, 0, srcPixelFormat, texWidth, texHeight, 0, srcPixelFormat, GL20.GL_UNSIGNED_BYTE, source);
            gl.checkError("updateTexture");
            return;
        }
        BufferedImage texImage = new BufferedImage(texWidth, texHeight, hasAlpha ? BufferedImage.TYPE_4BYTE_ABGR : BufferedImage.TYPE_3BYTE_BGR);
        Graphics2D g = texImage.createGraphics();
        g.drawImage(img, 0, 0, null);
        if (height < texHeight - 1) {
            copyArea(texImage, g, 0, 0, width, 1, 0, texHeight - 1);
            copyArea(texImage, g, 0, height - 1, width, 1, 0, 1);
        }
        if (width < texWidth - 1) {
            copyArea(texImage, g, 0, 0, 1, height, texWidth - 1, 0);
            copyArea(texImage, g, width - 1, 0, 1, height, 1, 0);
        }
        ByteBuffer source = NativeSupport.getByteBuffer((byte[]) texImage.getRaster().getDataElements(0, 0, texImage.getWidth(), texImage.getHeight(), null));
        if (texImage != null) {
            texImage.flush();
            texImage = null;
        }
        int srcPixelFormat = hasAlpha ? GL20.GL_RGBA : GL20.GL_RGB;
        gl.glBindTexture(GL11.GL_TEXTURE_2D, tex.getID());
        gl.glTexImage2D(GL20.GL_TEXTURE_2D, 0, srcPixelFormat, texWidth, texHeight, 0, srcPixelFormat, GL20.GL_UNSIGNED_BYTE, source);
        gl.checkError("updateTexture");
        return;
    }
    gl.glBindTexture(GL11.GL_TEXTURE_2D, tex.getID());
    GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, bitmap.getWidth(), bitmap.getHeight(), 0, format, type, bbuf);
    gl.checkError("updateTexture");
}

49. GraphicsUtils#transparencyColor()

Project: LGame
File: GraphicsUtils.java
/**
	 * ????????
	 * 
	 * @param img
	 * @param color
	 */
public static final void transparencyColor(BufferedImage img, int color) {
    WritableRaster writableRaster = img.getRaster();
    DataBuffer dataBuffer = writableRaster.getDataBuffer();
    int[] basePixels = AWTDataBufferHelper.getDataInt(dataBuffer);
    int length = basePixels.length;
    for (int i = 0; i < length; i++) {
        if (basePixels[i] == color) {
            basePixels[i] = 0xffffff;
        }
    }
}

50. GraphicsUtils#newAwtARGBImage()

Project: LGame
File: GraphicsUtils.java
/**
	 * ?????????ARGB??BufferedImage
	 * 
	 * @param pixels
	 * @param w
	 * @param h
	 * @param pixelSize
	 * @return
	 */
public static BufferedImage newAwtARGBImage(int[] pixels, int w, int h, int pixelSize) {
    DataBuffer dataBuffer = new DataBufferInt(pixels, pixelSize);
    SampleModel sample = new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT, w, h, new int[] { 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 });
    WritableRaster raster = Raster.createWritableRaster(sample, dataBuffer, new Point(0, 0));
    return new BufferedImage(COLOR_MODEL_ARGB, raster, true, null);
}

51. IncorrectSampleMaskTest#doTest()

Project: jdk7u-jdk
File: IncorrectSampleMaskTest.java
private static void doTest(int dataType) {
    int maxSize = DataBuffer.getDataTypeSize(dataType);
    System.out.println("Type size: " + maxSize);
    int theMask = (int) (1L << (maxSize + 2)) - 1;
    System.out.printf("theMask=%x\n", theMask);
    SinglePixelPackedSampleModel sm = new SinglePixelPackedSampleModel(dataType, w, h, new int[] { theMask });
    int[] sampleSize = sm.getSampleSize();
    for (int s : sampleSize) {
        if (s > maxSize) {
            throw new RuntimeException("Test failed: sample size is too big:" + s);
        }
    }
    System.out.println("Test medialib...");
    DataBuffer buf = createDataBuffer(dataType);
    WritableRaster wr = Raster.createWritableRaster(sm, buf, null);
    op.filter(wr, null);
    System.out.println("Test PASSED.");
}

52. GetSamplesTest#doTest()

Project: jdk7u-jdk
File: GetSamplesTest.java
private static void doTest(Class<? extends SampleModel> c) {
    System.out.println("Test for: " + c.getName());
    SampleModel sm = createSampleModel(c);
    DataBuffer db = sm.createDataBuffer();
    int[] iArray = new int[width * height + numBands];
    float[] fArray = new float[width * height + numBands];
    double[] dArray = new double[width * height + numBands];
    boolean iOk = false;
    boolean fOk = false;
    boolean dOk = false;
    try {
        sm.getSamples(Integer.MAX_VALUE, 0, 1, 1, 0, iArray, db);
        sm.setSamples(Integer.MAX_VALUE, 0, 1, 1, 0, iArray, db);
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println(e.getMessage());
        iOk = true;
    }
    try {
        sm.getSamples(Integer.MAX_VALUE, 0, 1, 1, 0, fArray, db);
        sm.setSamples(Integer.MAX_VALUE, 0, 1, 1, 0, fArray, db);
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println(e.getMessage());
        fOk = true;
    }
    try {
        sm.getSamples(0, Integer.MAX_VALUE, 1, 1, 0, dArray, db);
        sm.setSamples(0, Integer.MAX_VALUE, 1, 1, 0, dArray, db);
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.println(e.getMessage());
        dOk = true;
    }
    if (!iOk || !fOk || !dOk) {
        throw new RuntimeException("Test for " + c.getSimpleName() + " failed: iOk=" + iOk + "; fOk=" + fOk + "; dOk=" + dOk);
    }
}

53. WritableRasterNative#createNativeRaster()

Project: jdk7u-jdk
File: WritableRasterNative.java
public static WritableRasterNative createNativeRaster(ColorModel cm, SurfaceData sd, int width, int height) {
    SampleModel smHw = null;
    int dataType = 0;
    int scanStride = width;
    switch(cm.getPixelSize()) {
        case 8:
        case 12:
            // 8-bits uses PixelInterleavedSampleModel
            if (cm.getPixelSize() == 8) {
                dataType = DataBuffer.TYPE_BYTE;
            } else {
                dataType = DataBuffer.TYPE_USHORT;
            }
            int[] bandOffsets = new int[1];
            bandOffsets[0] = 0;
            smHw = new PixelInterleavedSampleModel(dataType, width, height, 1, scanStride, bandOffsets);
            break;
        // all others use SinglePixelPackedSampleModel
        case 15:
        case 16:
            dataType = DataBuffer.TYPE_USHORT;
            int[] bitMasks = new int[3];
            DirectColorModel dcm = (DirectColorModel) cm;
            bitMasks[0] = dcm.getRedMask();
            bitMasks[1] = dcm.getGreenMask();
            bitMasks[2] = dcm.getBlueMask();
            smHw = new SinglePixelPackedSampleModel(dataType, width, height, scanStride, bitMasks);
            break;
        case 24:
        case 32:
            dataType = DataBuffer.TYPE_INT;
            bitMasks = new int[3];
            dcm = (DirectColorModel) cm;
            bitMasks[0] = dcm.getRedMask();
            bitMasks[1] = dcm.getGreenMask();
            bitMasks[2] = dcm.getBlueMask();
            smHw = new SinglePixelPackedSampleModel(dataType, width, height, scanStride, bitMasks);
            break;
        default:
            throw new InternalError("Unsupported depth " + cm.getPixelSize());
    }
    DataBuffer dbn = new DataBufferNative(sd, dataType, width, height);
    return new WritableRasterNative(smHw, dbn);
}

54. RenderableImageProducer#run()

Project: jdk7u-jdk
File: RenderableImageProducer.java
/**
     * The runnable method for this class. This will produce an image using
     * the current RenderableImage and RenderContext and send it to all the
     * ImageConsumer currently registered with this class.
     */
public void run() {
    // First get the rendered image
    RenderedImage rdrdImage;
    if (rc != null) {
        rdrdImage = rdblImage.createRendering(rc);
    } else {
        rdrdImage = rdblImage.createDefaultRendering();
    }
    // And its ColorModel
    ColorModel colorModel = rdrdImage.getColorModel();
    Raster raster = rdrdImage.getData();
    SampleModel sampleModel = raster.getSampleModel();
    DataBuffer dataBuffer = raster.getDataBuffer();
    if (colorModel == null) {
        colorModel = ColorModel.getRGBdefault();
    }
    int minX = raster.getMinX();
    int minY = raster.getMinY();
    int width = raster.getWidth();
    int height = raster.getHeight();
    Enumeration icList;
    ImageConsumer ic;
    // Set up the ImageConsumers
    icList = ics.elements();
    while (icList.hasMoreElements()) {
        ic = (ImageConsumer) icList.nextElement();
        ic.setDimensions(width, height);
        ic.setHints(ImageConsumer.TOPDOWNLEFTRIGHT | ImageConsumer.COMPLETESCANLINES | ImageConsumer.SINGLEPASS | ImageConsumer.SINGLEFRAME);
    }
    // Get RGB pixels from the raster scanline by scanline and
    // send to consumers.
    int pix[] = new int[width];
    int i, j;
    int numBands = sampleModel.getNumBands();
    int tmpPixel[] = new int[numBands];
    for (j = 0; j < height; j++) {
        for (i = 0; i < width; i++) {
            sampleModel.getPixel(i, j, tmpPixel, dataBuffer);
            pix[i] = colorModel.getDataElement(tmpPixel, 0);
        }
        // Now send the scanline to the Consumers
        icList = ics.elements();
        while (icList.hasMoreElements()) {
            ic = (ImageConsumer) icList.nextElement();
            ic.setPixels(0, j, width, 1, colorModel, pix, 0, width);
        }
    }
    // Now tell the consumers we're done.
    icList = ics.elements();
    while (icList.hasMoreElements()) {
        ic = (ImageConsumer) icList.nextElement();
        ic.imageComplete(ImageConsumer.STATICIMAGEDONE);
    }
}

55. PNGImageReader#createRaster()

Project: jdk7u-jdk
File: PNGImageReader.java
private WritableRaster createRaster(int width, int height, int bands, int scanlineStride, int bitDepth) {
    DataBuffer dataBuffer;
    WritableRaster ras = null;
    Point origin = new Point(0, 0);
    if ((bitDepth < 8) && (bands == 1)) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createPackedRaster(dataBuffer, width, height, bitDepth, origin);
    } else if (bitDepth <= 8) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    } else {
        dataBuffer = new DataBufferUShort(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    }
    return ras;
}

56. ImageUtil#setUnpackedBinaryData()

Project: jdk7u-jdk
File: ImageUtil.java
/**
     * Copies data into the packed array of the <code>Raster</code>
     * from an array of unpacked data of the form returned by
     * <code>getUnpackedBinaryData()</code>.
     *
     * <p> If the data are binary, then the target bit will be set if
     * and only if the corresponding byte is non-zero.
     *
     * @throws IllegalArgumentException if <code>isBinary()</code> returns
     * <code>false</code> with the <code>SampleModel</code> of the
     * supplied <code>Raster</code> as argument.
     */
public static void setUnpackedBinaryData(byte[] bdata, WritableRaster raster, Rectangle rect) {
    SampleModel sm = raster.getSampleModel();
    if (!isBinary(sm)) {
        throw new IllegalArgumentException(I18N.getString("ImageUtil0"));
    }
    int rectX = rect.x;
    int rectY = rect.y;
    int rectWidth = rect.width;
    int rectHeight = rect.height;
    DataBuffer dataBuffer = raster.getDataBuffer();
    int dx = rectX - raster.getSampleModelTranslateX();
    int dy = rectY - raster.getSampleModelTranslateY();
    MultiPixelPackedSampleModel mpp = (MultiPixelPackedSampleModel) sm;
    int lineStride = mpp.getScanlineStride();
    int eltOffset = dataBuffer.getOffset() + mpp.getOffset(dx, dy);
    int bitOffset = mpp.getBitOffset(dx);
    int k = 0;
    if (dataBuffer instanceof DataBufferByte) {
        byte[] data = ((DataBufferByte) dataBuffer).getData();
        for (int y = 0; y < rectHeight; y++) {
            int bOffset = eltOffset * 8 + bitOffset;
            for (int x = 0; x < rectWidth; x++) {
                if (bdata[k++] != (byte) 0) {
                    data[bOffset / 8] |= (byte) (0x00000001 << (7 - bOffset & 7));
                }
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferShort || dataBuffer instanceof DataBufferUShort) {
        short[] data = dataBuffer instanceof DataBufferShort ? ((DataBufferShort) dataBuffer).getData() : ((DataBufferUShort) dataBuffer).getData();
        for (int y = 0; y < rectHeight; y++) {
            int bOffset = eltOffset * 16 + bitOffset;
            for (int x = 0; x < rectWidth; x++) {
                if (bdata[k++] != (byte) 0) {
                    data[bOffset / 16] |= (short) (0x00000001 << (15 - bOffset % 16));
                }
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferInt) {
        int[] data = ((DataBufferInt) dataBuffer).getData();
        for (int y = 0; y < rectHeight; y++) {
            int bOffset = eltOffset * 32 + bitOffset;
            for (int x = 0; x < rectWidth; x++) {
                if (bdata[k++] != (byte) 0) {
                    data[bOffset / 32] |= (int) (0x00000001 << (31 - bOffset % 32));
                }
                bOffset++;
            }
            eltOffset += lineStride;
        }
    }
}

57. ImageUtil#getUnpackedBinaryData()

Project: jdk7u-jdk
File: ImageUtil.java
/**
     * Returns the binary data unpacked into an array of bytes.
     * The line stride will be the width of the <code>Raster</code>.
     *
     * @throws IllegalArgumentException if <code>isBinary()</code> returns
     * <code>false</code> with the <code>SampleModel</code> of the
     * supplied <code>Raster</code> as argument.
     */
public static byte[] getUnpackedBinaryData(Raster raster, Rectangle rect) {
    SampleModel sm = raster.getSampleModel();
    if (!isBinary(sm)) {
        throw new IllegalArgumentException(I18N.getString("ImageUtil0"));
    }
    int rectX = rect.x;
    int rectY = rect.y;
    int rectWidth = rect.width;
    int rectHeight = rect.height;
    DataBuffer dataBuffer = raster.getDataBuffer();
    int dx = rectX - raster.getSampleModelTranslateX();
    int dy = rectY - raster.getSampleModelTranslateY();
    MultiPixelPackedSampleModel mpp = (MultiPixelPackedSampleModel) sm;
    int lineStride = mpp.getScanlineStride();
    int eltOffset = dataBuffer.getOffset() + mpp.getOffset(dx, dy);
    int bitOffset = mpp.getBitOffset(dx);
    byte[] bdata = new byte[rectWidth * rectHeight];
    int maxY = rectY + rectHeight;
    int maxX = rectX + rectWidth;
    int k = 0;
    if (dataBuffer instanceof DataBufferByte) {
        byte[] data = ((DataBufferByte) dataBuffer).getData();
        for (int y = rectY; y < maxY; y++) {
            int bOffset = eltOffset * 8 + bitOffset;
            for (int x = rectX; x < maxX; x++) {
                byte b = data[bOffset / 8];
                bdata[k++] = (byte) ((b >>> (7 - bOffset & 7)) & 0x0000001);
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferShort || dataBuffer instanceof DataBufferUShort) {
        short[] data = dataBuffer instanceof DataBufferShort ? ((DataBufferShort) dataBuffer).getData() : ((DataBufferUShort) dataBuffer).getData();
        for (int y = rectY; y < maxY; y++) {
            int bOffset = eltOffset * 16 + bitOffset;
            for (int x = rectX; x < maxX; x++) {
                short s = data[bOffset / 16];
                bdata[k++] = (byte) ((s >>> (15 - bOffset % 16)) & 0x0000001);
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferInt) {
        int[] data = ((DataBufferInt) dataBuffer).getData();
        for (int y = rectY; y < maxY; y++) {
            int bOffset = eltOffset * 32 + bitOffset;
            for (int x = rectX; x < maxX; x++) {
                int i = data[bOffset / 32];
                bdata[k++] = (byte) ((i >>> (31 - bOffset % 32)) & 0x0000001);
                bOffset++;
            }
            eltOffset += lineStride;
        }
    }
    return bdata;
}

58. XpmImageParser#readXpmImage()

Project: commons-imaging
File: XpmImageParser.java
private BufferedImage readXpmImage(final XpmHeader xpmHeader, final BasicCParser cParser) throws ImageReadException, IOException {
    ColorModel colorModel;
    WritableRaster raster;
    int bpp;
    if (xpmHeader.palette.size() <= (1 << 8)) {
        final int[] palette = new int[xpmHeader.palette.size()];
        for (final Entry<Object, PaletteEntry> entry : xpmHeader.palette.entrySet()) {
            final PaletteEntry paletteEntry = entry.getValue();
            palette[paletteEntry.index] = paletteEntry.getBestARGB();
        }
        colorModel = new IndexColorModel(8, xpmHeader.palette.size(), palette, 0, true, -1, DataBuffer.TYPE_BYTE);
        raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, xpmHeader.width, xpmHeader.height, 1, null);
        bpp = 8;
    } else if (xpmHeader.palette.size() <= (1 << 16)) {
        final int[] palette = new int[xpmHeader.palette.size()];
        for (final Entry<Object, PaletteEntry> entry : xpmHeader.palette.entrySet()) {
            final PaletteEntry paletteEntry = entry.getValue();
            palette[paletteEntry.index] = paletteEntry.getBestARGB();
        }
        colorModel = new IndexColorModel(16, xpmHeader.palette.size(), palette, 0, true, -1, DataBuffer.TYPE_USHORT);
        raster = Raster.createInterleavedRaster(DataBuffer.TYPE_USHORT, xpmHeader.width, xpmHeader.height, 1, null);
        bpp = 16;
    } else {
        colorModel = new DirectColorModel(32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000);
        raster = Raster.createPackedRaster(DataBuffer.TYPE_INT, xpmHeader.width, xpmHeader.height, new int[] { 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 }, null);
        bpp = 32;
    }
    final BufferedImage image = new BufferedImage(colorModel, raster, colorModel.isAlphaPremultiplied(), new Properties());
    final DataBuffer dataBuffer = raster.getDataBuffer();
    final StringBuilder row = new StringBuilder();
    boolean hasMore = true;
    for (int y = 0; y < xpmHeader.height; y++) {
        row.setLength(0);
        hasMore = parseNextString(cParser, row);
        if (y < (xpmHeader.height - 1) && !hasMore) {
            throw new ImageReadException("Parsing XPM file failed, " + "insufficient image rows in file");
        }
        final int rowOffset = y * xpmHeader.width;
        for (int x = 0; x < xpmHeader.width; x++) {
            final String index = row.substring(x * xpmHeader.numCharsPerPixel, (x + 1) * xpmHeader.numCharsPerPixel);
            final PaletteEntry paletteEntry = xpmHeader.palette.get(index);
            if (paletteEntry == null) {
                throw new ImageReadException("No palette entry was defined " + "for " + index);
            }
            if (bpp <= 16) {
                dataBuffer.setElem(rowOffset + x, paletteEntry.index);
            } else {
                dataBuffer.setElem(rowOffset + x, paletteEntry.getBestARGB());
            }
        }
    }
    while (hasMore) {
        row.setLength(0);
        hasMore = parseNextString(cParser, row);
    }
    final String token = cParser.nextToken();
    if (!";".equals(token)) {
        throw new ImageReadException("Last token wasn't ';'");
    }
    return image;
}

59. UnsignedIntColorModel#createCompatibleWritableRaster()

Project: bioformats
File: UnsignedIntColorModel.java
/* @see java.awt.image.ColorModel#createCompatibleWritableRaster(int, int) */
@Override
public WritableRaster createCompatibleWritableRaster(int w, int h) {
    int[] bandOffsets = new int[nChannels];
    for (int i = 0; i < nChannels; i++) bandOffsets[i] = i;
    SampleModel m = new ComponentSampleModel(DataBuffer.TYPE_INT, w, h, nChannels, w * nChannels, bandOffsets);
    DataBuffer db = new DataBufferInt(w * h, nChannels);
    return Raster.createWritableRaster(m, db, null);
}

60. AWTImageTools#getPixelType()

Project: bioformats
File: AWTImageTools.java
/**
   * Gets the pixel type of the given image.
   * @return One of the following types:<ul>
   *   <li>FormatReader.INT8</li>
   *   <li>FormatReader.UINT8</li>
   *   <li>FormatReader.INT16</li>
   *   <li>FormatReader.UINT16</li>
   *   <li>FormatReader.INT32</li>
   *   <li>FormatReader.UINT32</li>
   *   <li>FormatReader.FLOAT</li>
   *   <li>FormatReader.DOUBLE</li>
   *   <li>-1 (unknown type)</li>
   * </ul>
   */
public static int getPixelType(BufferedImage image) {
    final Raster raster = image.getRaster();
    if (raster == null)
        return -1;
    final DataBuffer buffer = raster.getDataBuffer();
    if (buffer == null)
        return -1;
    if (buffer instanceof SignedByteBuffer) {
        return FormatTools.INT8;
    } else if (buffer instanceof SignedShortBuffer) {
        return FormatTools.INT16;
    } else if (buffer instanceof UnsignedIntBuffer) {
        return FormatTools.UINT32;
    }
    int type = buffer.getDataType();
    int imageType = image.getType();
    switch(type) {
        case DataBuffer.TYPE_BYTE:
            return FormatTools.UINT8;
        case DataBuffer.TYPE_DOUBLE:
            return FormatTools.DOUBLE;
        case DataBuffer.TYPE_FLOAT:
            return FormatTools.FLOAT;
        case DataBuffer.TYPE_INT:
            if (imageType == BufferedImage.TYPE_INT_RGB || imageType == BufferedImage.TYPE_INT_BGR || imageType == BufferedImage.TYPE_INT_ARGB) {
                return FormatTools.UINT8;
            }
            if (buffer instanceof UnsignedIntBuffer) {
                return FormatTools.UINT32;
            }
            return FormatTools.INT32;
        case DataBuffer.TYPE_SHORT:
            return FormatTools.INT16;
        case DataBuffer.TYPE_USHORT:
            if (imageType == BufferedImage.TYPE_USHORT_555_RGB || imageType == BufferedImage.TYPE_USHORT_565_RGB) {
                return FormatTools.UINT8;
            }
            return FormatTools.UINT16;
        default:
            return -1;
    }
}

61. AWTImageTools#canUseBankDataDirectly()

Project: bioformats
File: AWTImageTools.java
/**
   * Whether we can return the data buffer's bank data
   * without performing any copy or conversion operations.
   */
private static boolean canUseBankDataDirectly(WritableRaster r, int transferType, Class<? extends DataBuffer> dataBufferClass) {
    int tt = r.getTransferType();
    if (tt != transferType)
        return false;
    DataBuffer buffer = r.getDataBuffer();
    if (!dataBufferClass.isInstance(buffer))
        return false;
    SampleModel model = r.getSampleModel();
    if (!(model instanceof ComponentSampleModel))
        return false;
    ComponentSampleModel csm = (ComponentSampleModel) model;
    int pixelStride = csm.getPixelStride();
    if (pixelStride != 1)
        return false;
    int w = r.getWidth();
    int scanlineStride = csm.getScanlineStride();
    if (scanlineStride != w)
        return false;
    int c = r.getNumBands();
    int[] bandOffsets = csm.getBandOffsets();
    if (bandOffsets.length != c)
        return false;
    for (int i = 0; i < bandOffsets.length; i++) {
        if (bandOffsets[i] != 0)
            return false;
    }
    for (int i = 0; i < bandOffsets.length; i++) {
        if (bandOffsets[i] != i)
            return false;
    }
    return true;
}

62. AWTImageTools#makeImage()

Project: bioformats
File: AWTImageTools.java
/**
   * Creates an image from the given double-precision floating point data.
   *
   * @param data Array containing image data.
   *   It is assumed that each channel corresponds to one element of the array.
   *   For example, for RGB data, data[0] is R, data[1] is G, and data[2] is B.
   * @param w Width of image plane.
   * @param h Height of image plane.
   */
public static BufferedImage makeImage(double[][] data, int w, int h) {
    int dataType = DataBuffer.TYPE_DOUBLE;
    DataBuffer buffer = new DataBufferDouble(data, data[0].length);
    return constructImage(data.length, dataType, w, h, false, true, buffer);
}

63. AWTImageTools#makeImage()

Project: bioformats
File: AWTImageTools.java
/**
   * Creates an image from the given single-precision floating point data.
   *
   * @param data Array containing image data.
   *   It is assumed that each channel corresponds to one element of the array.
   *   For example, for RGB data, data[0] is R, data[1] is G, and data[2] is B.
   * @param w Width of image plane.
   * @param h Height of image plane.
   */
public static BufferedImage makeImage(float[][] data, int w, int h) {
    int dataType = DataBuffer.TYPE_FLOAT;
    DataBuffer buffer = new DataBufferFloat(data, data[0].length);
    return constructImage(data.length, dataType, w, h, false, true, buffer);
}

64. AWTImageTools#makeImage()

Project: bioformats
File: AWTImageTools.java
/**
   * Creates an image from the given double data.
   *
   * @param data Array containing image data.
   * @param w Width of image plane.
   * @param h Height of image plane.
   * @param c Number of channels.
   * @param interleaved If set, the channels are assumed to be interleaved;
   *   otherwise they are assumed to be sequential.
   *   For example, for RGB data, the pattern "RGBRGBRGB..." is interleaved,
   *   while "RRR...GGG...BBB..." is sequential.
   */
public static BufferedImage makeImage(double[] data, int w, int h, int c, boolean interleaved) {
    if (c == 1)
        return makeImage(data, w, h);
    int dataType = DataBuffer.TYPE_DOUBLE;
    DataBuffer buffer = new DataBufferDouble(data, c * w * h);
    return constructImage(c, dataType, w, h, interleaved, false, buffer);
}

65. AWTImageTools#makeImage()

Project: bioformats
File: AWTImageTools.java
/**
   * Creates an image from the given float data.
   *
   * @param data Array containing image data.
   * @param w Width of image plane.
   * @param h Height of image plane.
   * @param c Number of channels.
   * @param interleaved If set, the channels are assumed to be interleaved;
   *   otherwise they are assumed to be sequential.
   *   For example, for RGB data, the pattern "RGBRGBRGB..." is interleaved,
   *   while "RRR...GGG...BBB..." is sequential.
   */
public static BufferedImage makeImage(float[] data, int w, int h, int c, boolean interleaved) {
    if (c == 1)
        return makeImage(data, w, h);
    int dataType = DataBuffer.TYPE_FLOAT;
    DataBuffer buffer = new DataBufferFloat(data, c * w * h);
    return constructImage(c, dataType, w, h, interleaved, false, buffer);
}

66. ImageUtil#setUnpackedBinaryData()

Project: bioformats
File: ImageUtil.java
/**
     * Copies data into the packed array of the <code>Raster</code>
     * from an array of unpacked data of the form returned by
     * <code>getUnpackedBinaryData()</code>.
     *
     * <p> If the data are binary, then the target bit will be set if
     * and only if the corresponding byte is non-zero.
     *
     * @throws IllegalArgumentException if <code>isBinary()</code> returns
     * <code>false</code> with the <code>SampleModel</code> of the
     * supplied <code>Raster</code> as argument.
     */
public static void setUnpackedBinaryData(byte[] bdata, WritableRaster raster, Rectangle rect) {
    SampleModel sm = raster.getSampleModel();
    if (!isBinary(sm)) {
        throw new IllegalArgumentException(I18N.getString("ImageUtil0"));
    }
    int rectX = rect.x;
    int rectY = rect.y;
    int rectWidth = rect.width;
    int rectHeight = rect.height;
    DataBuffer dataBuffer = raster.getDataBuffer();
    int dx = rectX - raster.getSampleModelTranslateX();
    int dy = rectY - raster.getSampleModelTranslateY();
    MultiPixelPackedSampleModel mpp = (MultiPixelPackedSampleModel) sm;
    int lineStride = mpp.getScanlineStride();
    int eltOffset = dataBuffer.getOffset() + mpp.getOffset(dx, dy);
    int bitOffset = mpp.getBitOffset(dx);
    int k = 0;
    if (dataBuffer instanceof DataBufferByte) {
        byte[] data = ((DataBufferByte) dataBuffer).getData();
        for (int y = 0; y < rectHeight; y++) {
            int bOffset = eltOffset * 8 + bitOffset;
            for (int x = 0; x < rectWidth; x++) {
                if (bdata[k++] != (byte) 0) {
                    data[bOffset / 8] |= (byte) (0x00000001 << (7 - bOffset & 7));
                }
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferShort || dataBuffer instanceof DataBufferUShort) {
        short[] data = dataBuffer instanceof DataBufferShort ? ((DataBufferShort) dataBuffer).getData() : ((DataBufferUShort) dataBuffer).getData();
        for (int y = 0; y < rectHeight; y++) {
            int bOffset = eltOffset * 16 + bitOffset;
            for (int x = 0; x < rectWidth; x++) {
                if (bdata[k++] != (byte) 0) {
                    data[bOffset / 16] |= (short) (0x00000001 << (15 - bOffset % 16));
                }
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferInt) {
        int[] data = ((DataBufferInt) dataBuffer).getData();
        for (int y = 0; y < rectHeight; y++) {
            int bOffset = eltOffset * 32 + bitOffset;
            for (int x = 0; x < rectWidth; x++) {
                if (bdata[k++] != (byte) 0) {
                    data[bOffset / 32] |= (int) (0x00000001 << (31 - bOffset % 32));
                }
                bOffset++;
            }
            eltOffset += lineStride;
        }
    }
}

67. ImageUtil#getUnpackedBinaryData()

Project: bioformats
File: ImageUtil.java
/**
     * Returns the binary data unpacked into an array of bytes.
     * The line stride will be the width of the <code>Raster</code>.
     *
     * @throws IllegalArgumentException if <code>isBinary()</code> returns
     * <code>false</code> with the <code>SampleModel</code> of the
     * supplied <code>Raster</code> as argument.
     */
public static byte[] getUnpackedBinaryData(Raster raster, Rectangle rect) {
    SampleModel sm = raster.getSampleModel();
    if (!isBinary(sm)) {
        throw new IllegalArgumentException(I18N.getString("ImageUtil0"));
    }
    int rectX = rect.x;
    int rectY = rect.y;
    int rectWidth = rect.width;
    int rectHeight = rect.height;
    DataBuffer dataBuffer = raster.getDataBuffer();
    int dx = rectX - raster.getSampleModelTranslateX();
    int dy = rectY - raster.getSampleModelTranslateY();
    MultiPixelPackedSampleModel mpp = (MultiPixelPackedSampleModel) sm;
    int lineStride = mpp.getScanlineStride();
    int eltOffset = dataBuffer.getOffset() + mpp.getOffset(dx, dy);
    int bitOffset = mpp.getBitOffset(dx);
    byte[] bdata = new byte[rectWidth * rectHeight];
    int maxY = rectY + rectHeight;
    int maxX = rectX + rectWidth;
    int k = 0;
    if (dataBuffer instanceof DataBufferByte) {
        byte[] data = ((DataBufferByte) dataBuffer).getData();
        for (int y = rectY; y < maxY; y++) {
            int bOffset = eltOffset * 8 + bitOffset;
            for (int x = rectX; x < maxX; x++) {
                byte b = data[bOffset / 8];
                bdata[k++] = (byte) ((b >>> (7 - bOffset & 7)) & 0x0000001);
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferShort || dataBuffer instanceof DataBufferUShort) {
        short[] data = dataBuffer instanceof DataBufferShort ? ((DataBufferShort) dataBuffer).getData() : ((DataBufferUShort) dataBuffer).getData();
        for (int y = rectY; y < maxY; y++) {
            int bOffset = eltOffset * 16 + bitOffset;
            for (int x = rectX; x < maxX; x++) {
                short s = data[bOffset / 16];
                bdata[k++] = (byte) ((s >>> (15 - bOffset % 16)) & 0x0000001);
                bOffset++;
            }
            eltOffset += lineStride;
        }
    } else if (dataBuffer instanceof DataBufferInt) {
        int[] data = ((DataBufferInt) dataBuffer).getData();
        for (int y = rectY; y < maxY; y++) {
            int bOffset = eltOffset * 32 + bitOffset;
            for (int x = rectX; x < maxX; x++) {
                int i = data[bOffset / 32];
                bdata[k++] = (byte) ((i >>> (31 - bOffset % 32)) & 0x0000001);
                bOffset++;
            }
            eltOffset += lineStride;
        }
    }
    return bdata;
}

68. PNGRed#decodePass()

Project: batik
File: PNGRed.java
/**
     * Reads in an image of a given size and returns it as a
     * WritableRaster.
     */
private void decodePass(WritableRaster imRas, int xOffset, int yOffset, int xStep, int yStep, int passWidth, int passHeight) {
    if ((passWidth == 0) || (passHeight == 0)) {
        return;
    }
    int bytesPerRow = (inputBands * passWidth * bitDepth + 7) / 8;
    int eltsPerRow = (bitDepth == 16) ? bytesPerRow / 2 : bytesPerRow;
    byte[] curr = new byte[bytesPerRow];
    byte[] prior = new byte[bytesPerRow];
    // Create a 1-row tall Raster to hold the data
    WritableRaster passRow = createRaster(passWidth, 1, inputBands, eltsPerRow, bitDepth);
    DataBuffer dataBuffer = passRow.getDataBuffer();
    int type = dataBuffer.getDataType();
    byte[] byteData = null;
    short[] shortData = null;
    if (type == DataBuffer.TYPE_BYTE) {
        byteData = ((DataBufferByte) dataBuffer).getData();
    } else {
        shortData = ((DataBufferUShort) dataBuffer).getData();
    }
    // Decode the (sub)image row-by-row
    int srcY, dstY;
    for (srcY = 0, dstY = yOffset; srcY < passHeight; srcY++, dstY += yStep) {
        // Read the filter type byte and a row of data
        int filter = 0;
        try {
            filter = dataStream.read();
            dataStream.readFully(curr, 0, bytesPerRow);
        } catch (Exception e) {
            e.printStackTrace();
        }
        switch(filter) {
            case PNG_FILTER_NONE:
                break;
            case PNG_FILTER_SUB:
                decodeSubFilter(curr, bytesPerRow, bytesPerPixel);
                break;
            case PNG_FILTER_UP:
                decodeUpFilter(curr, prior, bytesPerRow);
                break;
            case PNG_FILTER_AVERAGE:
                decodeAverageFilter(curr, prior, bytesPerRow, bytesPerPixel);
                break;
            case PNG_FILTER_PAETH:
                decodePaethFilter(curr, prior, bytesPerRow, bytesPerPixel);
                break;
            default:
                // Error -- unknown filter type
                String msg = PropertyUtil.getString("PNGImageDecoder16");
                throw new RuntimeException(msg);
        }
        // Copy data into passRow byte by byte
        if (bitDepth < 16) {
            System.arraycopy(curr, 0, byteData, 0, bytesPerRow);
        } else {
            int idx = 0;
            for (int j = 0; j < eltsPerRow; j++) {
                shortData[j] = (short) ((curr[idx] << 8) | (curr[idx + 1] & 0xff));
                idx += 2;
            }
        }
        processPixels(postProcess, passRow, imRas, xOffset, xStep, dstY, passWidth);
        // Swap curr and prior
        byte[] tmp = prior;
        prior = curr;
        curr = tmp;
    }
}

69. PNGRed#createRaster()

Project: batik
File: PNGRed.java
private WritableRaster createRaster(int width, int height, int bands, int scanlineStride, int bitDepth) {
    DataBuffer dataBuffer;
    WritableRaster ras = null;
    Point origin = new Point(0, 0);
    if ((bitDepth < 8) && (bands == 1)) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createPackedRaster(dataBuffer, width, height, bitDepth, origin);
    } else if (bitDepth <= 8) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    } else {
        dataBuffer = new DataBufferUShort(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    }
    return ras;
}

70. PNGImageDecoder#decodePass()

Project: batik
File: PNGImageDecoder.java
/**
     * Reads in an image of a given size and returns it as a
     * WritableRaster.
     */
private void decodePass(WritableRaster imRas, int xOffset, int yOffset, int xStep, int yStep, int passWidth, int passHeight) {
    if ((passWidth == 0) || (passHeight == 0)) {
        return;
    }
    int bytesPerRow = (inputBands * passWidth * bitDepth + 7) / 8;
    int eltsPerRow = (bitDepth == 16) ? bytesPerRow / 2 : bytesPerRow;
    byte[] curr = new byte[bytesPerRow];
    byte[] prior = new byte[bytesPerRow];
    // Create a 1-row tall Raster to hold the data
    WritableRaster passRow = createRaster(passWidth, 1, inputBands, eltsPerRow, bitDepth);
    DataBuffer dataBuffer = passRow.getDataBuffer();
    int type = dataBuffer.getDataType();
    byte[] byteData = null;
    short[] shortData = null;
    if (type == DataBuffer.TYPE_BYTE) {
        byteData = ((DataBufferByte) dataBuffer).getData();
    } else {
        shortData = ((DataBufferUShort) dataBuffer).getData();
    }
    // Decode the (sub)image row-by-row
    int srcY, dstY;
    for (srcY = 0, dstY = yOffset; srcY < passHeight; srcY++, dstY += yStep) {
        // Read the filter type byte and a row of data
        int filter = 0;
        try {
            filter = dataStream.read();
            dataStream.readFully(curr, 0, bytesPerRow);
        } catch (Exception e) {
            e.printStackTrace();
        }
        switch(filter) {
            case PNG_FILTER_NONE:
                break;
            case PNG_FILTER_SUB:
                decodeSubFilter(curr, bytesPerRow, bytesPerPixel);
                break;
            case PNG_FILTER_UP:
                decodeUpFilter(curr, prior, bytesPerRow);
                break;
            case PNG_FILTER_AVERAGE:
                decodeAverageFilter(curr, prior, bytesPerRow, bytesPerPixel);
                break;
            case PNG_FILTER_PAETH:
                decodePaethFilter(curr, prior, bytesPerRow, bytesPerPixel);
                break;
            default:
                // Error -- uknown filter type
                String msg = PropertyUtil.getString("PNGImageDecoder16");
                throw new RuntimeException(msg);
        }
        // Copy data into passRow byte by byte
        if (bitDepth < 16) {
            System.arraycopy(curr, 0, byteData, 0, bytesPerRow);
        } else {
            int idx = 0;
            for (int j = 0; j < eltsPerRow; j++) {
                shortData[j] = (short) ((curr[idx] << 8) | (curr[idx + 1] & 0xff));
                idx += 2;
            }
        }
        processPixels(postProcess, passRow, imRas, xOffset, xStep, dstY, passWidth);
        // Swap curr and prior
        byte[] tmp = prior;
        prior = curr;
        curr = tmp;
    }
}

71. PNGImageDecoder#createRaster()

Project: batik
File: PNGImageDecoder.java
private WritableRaster createRaster(int width, int height, int bands, int scanlineStride, int bitDepth) {
    DataBuffer dataBuffer;
    WritableRaster ras = null;
    Point origin = new Point(0, 0);
    if ((bitDepth < 8) && (bands == 1)) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createPackedRaster(dataBuffer, width, height, bitDepth, origin);
    } else if (bitDepth <= 8) {
        dataBuffer = new DataBufferByte(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    } else {
        dataBuffer = new DataBufferUShort(height * scanlineStride);
        ras = Raster.createInterleavedRaster(dataBuffer, width, height, scanlineStride, bands, bandOffsets[bands], origin);
    }
    return ras;
}