Java 类sun.awt.image.ShortBandedRaster 实例源码

项目:Java8CN    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride,
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>,
 *         <code>DataBuffer.TYPE_USHORT</code>
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}
项目:jdk8u_jdk    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride,
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>,
 *         <code>DataBuffer.TYPE_USHORT</code>
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}
项目:lookaside_java-1.8.0-openjdk    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride,
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>,
 *         <code>DataBuffer.TYPE_USHORT</code>
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}
项目:VarJ    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride, 
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>, 
 *         <code>DataBuffer.TYPE_USHORT</code> 
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}
项目:jdk-1.7-annotated    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride,
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>,
 *         <code>DataBuffer.TYPE_USHORT</code>
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}
项目:infobip-open-jdk-8    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride,
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>,
 *         <code>DataBuffer.TYPE_USHORT</code>
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}
项目:jdk8u-dev-jdk    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride,
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>,
 *         <code>DataBuffer.TYPE_USHORT</code>
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}
项目:jdk7-jdk    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride,
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>,
 *         <code>DataBuffer.TYPE_USHORT</code>
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}
项目:openjdk-source-code-learn    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride,
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>,
 *         <code>DataBuffer.TYPE_USHORT</code>
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}
项目:OLD-OpenJDK8    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride,
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>,
 *         <code>DataBuffer.TYPE_USHORT</code>
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}
项目:openjdk-jdk7u-jdk    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride,
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>,
 *         <code>DataBuffer.TYPE_USHORT</code>
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}
项目:openjdk-icedtea7    文件:Raster.java   
/**
 * Creates a Raster based on a BandedSampleModel with the
 * specified DataBuffer, width, height, scanline stride, bank
 * indices, and band offsets.  The number of bands is inferred
 * from bankIndices.length and bandOffsets.length, which must be
 * the same.  The upper left corner of the Raster is given by the
 * location argument.  If location is null, (0, 0) will be used.
 * @param dataBuffer the <code>DataBuffer</code> that contains the
 *        image data
 * @param w         the width in pixels of the image data
 * @param h         the height in pixels of the image data
 * @param scanlineStride the line stride of the image data
 * @param bankIndices the bank indices for each band
 * @param bandOffsets the offsets of all bands
 * @param location  the upper-left corner of the <code>Raster</code>
 * @return a WritableRaster object with the specified
 *         <code>DataBuffer</code>, width, height, scanline stride,
 *         bank indices and band offsets.
 * @throws RasterFormatException if <code>w</code> or <code>h</code>
 *         is less than or equal to zero, or computing either
 *         <code>location.x + w</code> or
 *         <code>location.y + h</code> results in integer
 *         overflow
 * @throws IllegalArgumentException if <code>dataType</code> is not
 *         one of the supported data types, which are
 *         <code>DataBuffer.TYPE_BYTE</code>,
 *         <code>DataBuffer.TYPE_USHORT</code>
 *         or <code>DataBuffer.TYPE_INT</code>
 * @throws NullPointerException if <code>dataBuffer</code> is null
 */
public static WritableRaster createBandedRaster(DataBuffer dataBuffer,
                                                int w, int h,
                                                int scanlineStride,
                                                int bankIndices[],
                                                int bandOffsets[],
                                                Point location) {
    if (dataBuffer == null) {
        throw new NullPointerException("DataBuffer cannot be null");
    }
    if (location == null) {
       location = new Point(0,0);
    }
    int dataType = dataBuffer.getDataType();

    int bands = bankIndices.length;
    if (bandOffsets.length != bands) {
        throw new IllegalArgumentException(
                               "bankIndices.length != bandOffsets.length");
    }

    BandedSampleModel bsm =
        new BandedSampleModel(dataType, w, h,
                              scanlineStride,
                              bankIndices, bandOffsets);

    switch(dataType) {
    case DataBuffer.TYPE_BYTE:
        return new ByteBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_USHORT:
        return new ShortBandedRaster(bsm, dataBuffer, location);

    case DataBuffer.TYPE_INT:
        return new SunWritableRaster(bsm, dataBuffer, location);

    default:
        throw new IllegalArgumentException("Unsupported data type " +
                                            dataType);
    }
}