diff options
Diffstat (limited to 'awt/java/awt/image/Raster.java')
-rw-r--r-- | awt/java/awt/image/Raster.java | 1515 |
1 files changed, 0 insertions, 1515 deletions
diff --git a/awt/java/awt/image/Raster.java b/awt/java/awt/image/Raster.java deleted file mode 100644 index 6749fde..0000000 --- a/awt/java/awt/image/Raster.java +++ /dev/null @@ -1,1515 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author Igor V. Stolyarov - * @version $Revision$ - */ - -package java.awt.image; - -import java.awt.Point; -import java.awt.Rectangle; - -import org.apache.harmony.awt.gl.image.OrdinaryWritableRaster; -import org.apache.harmony.awt.internal.nls.Messages; - -/** - * The Raster class represents a rectangular area of pixels. This class is - * defined by DataBuffer and SampleModel objects. The DataBuffer object stores - * sample values and DSampleModel defines the location of sample in this - * DataBuffer. - * - * @since Android 1.0 - */ -public class Raster { - - /** - * The DataBuffer of this Raster. - */ - protected DataBuffer dataBuffer; - - /** - * The height of this Raster. - */ - protected int height; - - /** - * The X coordinate of the upper left pixel in this Raster. - */ - protected int minX; - - /** - * The Y coordinate of the upper left pixel in this Raster. - */ - protected int minY; - - /** - * The number of bands in this Raster. - */ - protected int numBands; - - /** - * The number of data elements. - */ - protected int numDataElements; - - /** - * The parent of this Raster. - */ - protected Raster parent; - - /** - * The SampleModel of this Raster. - */ - protected SampleModel sampleModel; - - /** - * The X translation from the coordinate space of the SampleModel of this - * Raster. - */ - protected int sampleModelTranslateX; - - /** - * The Y translation from the coordinate space of the SampleModel of this - * Raster. - */ - protected int sampleModelTranslateY; - - /** - * The width of this Raster. - */ - protected int width; - - /** - * Creates a Raster object with a BandedSampleModel and the specified - * DataBuffer. The number of bands is defined by the length of bandOffsets - * or bankIndices arrays. - * - * @param dataBuffer - * the specified DataBuffer. - * @param w - * the width of the image data. - * @param h - * the height of the image data. - * @param scanlineStride - * the scanline stride of the image data. - * @param bankIndices - * the bank indices of bands. - * @param bandOffsets - * the band offsets of bands. - * @param location - * the location which defines the upper left corner of Raster. - * @return the WritableRaster object. - */ - public static WritableRaster createBandedRaster(DataBuffer dataBuffer, int w, int h, - int scanlineStride, int bankIndices[], int bandOffsets[], Point location) { - - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) { - // awt.276=location.x + w or location.y + h results in integer - // overflow - throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$ - } - - if (bankIndices == null || bandOffsets == null) { - // awt.277=bankIndices or bandOffsets is null - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.277")); //$NON-NLS-1$ - } - - if (dataBuffer == null) { - // awt.278=dataBuffer is null - throw new NullPointerException(Messages.getString("awt.278")); //$NON-NLS-1$ - } - - int dataType = dataBuffer.getDataType(); - - if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT - && dataType != DataBuffer.TYPE_INT) { - // awt.230=dataType is not one of the supported data types - throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$ - } - - BandedSampleModel sampleModel = new BandedSampleModel(dataType, w, h, scanlineStride, - bankIndices, bandOffsets); - - return new OrdinaryWritableRaster(sampleModel, dataBuffer, location); - } - - /** - * Creates a Raster object with a BandedSampleModel and the specified data - * type. The Data type can be one of the following values: TYPE_BYTE, - * TYPE_USHORT, or TYPE_INT. - * - * @param dataType - * the data type of the samples: TYPE_BYTE, TYPE_USHORT, or - * TYPE_INT. - * @param w - * the width of the image data. - * @param h - * the height of the image data. - * @param scanlineStride - * the scanline stride of the image data. - * @param bankIndices - * the bank indices of bands. - * @param bandOffsets - * the band offsets of bands. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the WritableRaster object. - */ - public static WritableRaster createBandedRaster(int dataType, int w, int h, int scanlineStride, - int bankIndices[], int bandOffsets[], Point location) { - - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) { - // awt.276=location.x + w or location.y + h results in integer - // overflow - throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$ - } - - if (bankIndices == null || bandOffsets == null) { - // awt.277=bankIndices or bandOffsets is null - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.277")); //$NON-NLS-1$ - } - - if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT - && dataType != DataBuffer.TYPE_INT) { - // awt.230=dataType is not one of the supported data types - throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$ - } - - int maxOffset = bandOffsets[0]; - int maxBank = bankIndices[0]; - - for (int i = 0; i < bankIndices.length; i++) { - if (bandOffsets[i] > maxOffset) { - maxOffset = bandOffsets[i]; - } - if (bankIndices[i] > maxBank) { - maxBank = bankIndices[i]; - } - } - - int numBanks = maxBank + 1; - int dataSize = scanlineStride * (h - 1) + w + maxOffset; - - DataBuffer data = null; - - switch (dataType) { - case DataBuffer.TYPE_BYTE: - data = new DataBufferByte(dataSize, numBanks); - break; - case DataBuffer.TYPE_USHORT: - data = new DataBufferUShort(dataSize, numBanks); - break; - case DataBuffer.TYPE_INT: - data = new DataBufferInt(dataSize, numBanks); - break; - } - return createBandedRaster(data, w, h, scanlineStride, bankIndices, bandOffsets, location); - } - - /** - * Creates a Raster object with a BandedSampleModel and the specified data - * type. The Data type can be one of the following values: TYPE_BYTE, - * TYPE_USHORT, or TYPE_INT. - * - * @param dataType - * the data type of the samples: TYPE_BYTE, TYPE_USHORT, or - * TYPE_INT. - * @param w - * the width of the image data. - * @param h - * the height of the image data. - * @param bands - * the number of bands. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the WritableRaster object. - */ - public static WritableRaster createBandedRaster(int dataType, int w, int h, int bands, - Point location) { - - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) { - // awt.276=location.x + w or location.y + h results in integer - // overflow - throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$ - } - - if (bands < 1) { - // awt.279=bands is less than 1 - throw new ArrayIndexOutOfBoundsException(Messages.getString("awt.279")); //$NON-NLS-1$ - } - - int bandOffsets[] = new int[bands]; - int bankIndices[] = new int[bands]; - - for (int i = 0; i < bands; i++) { - bandOffsets[i] = 0; - bankIndices[i] = i; - } - return createBandedRaster(dataType, w, h, w, bankIndices, bandOffsets, location); - } - - /** - * Creates a Raster object with a PixelInterleavedSampleModel and the - * specified DataBuffer. - * - * @param dataBuffer - * the DataBuffer. - * @param w - * the width of image data. - * @param h - * the height of image data. - * @param scanlineStride - * the scanline stride of the image data. - * @param pixelStride - * the pixel stride of image data. - * @param bandOffsets - * the band offsets of bands. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the WritableRaster object. - */ - public static WritableRaster createInterleavedRaster(DataBuffer dataBuffer, int w, int h, - int scanlineStride, int pixelStride, int bandOffsets[], Point location) { - - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) { - // awt.276=location.x + w or location.y + h results in integer - // overflow - throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$ - } - - if (dataBuffer == null) { - // awt.278=dataBuffer is null - throw new NullPointerException(Messages.getString("awt.278")); //$NON-NLS-1$ - } - - int dataType = dataBuffer.getDataType(); - if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT) { - // awt.230=dataType is not one of the supported data types - throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$ - } - - if (dataBuffer.getNumBanks() > 1) { - // awt.27A=dataBuffer has more than one bank - throw new RasterFormatException(Messages.getString("awt.27A")); //$NON-NLS-1$ - } - - if (bandOffsets == null) { - // awt.27B=bandOffsets is null - throw new NullPointerException(Messages.getString("awt.27B")); //$NON-NLS-1$ - } - - PixelInterleavedSampleModel sampleModel = new PixelInterleavedSampleModel(dataType, w, h, - pixelStride, scanlineStride, bandOffsets); - - return new OrdinaryWritableRaster(sampleModel, dataBuffer, location); - - } - - /** - * Creates a Raster object with a PixelInterleavedSampleModel and the - * specified data type. The Data type can be one of the following values: - * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. - * - * @param dataType - * the data type of the samples: TYPE_BYTE, TYPE_USHORT, or - * TYPE_INT. - * @param w - * the width of image data. - * @param h - * the height of image data. - * @param scanlineStride - * the scanline stride of the image data. - * @param pixelStride - * the pixel stride of image data. - * @param bandOffsets - * the band offsets of bands. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the WritableRaster object. - */ - public static WritableRaster createInterleavedRaster(int dataType, int w, int h, - int scanlineStride, int pixelStride, int bandOffsets[], Point location) { - - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) { - // awt.276=location.x + w or location.y + h results in integer - // overflow - throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$ - } - - if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT) { - // awt.230=dataType is not one of the supported data types - throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$ - } - - if (bandOffsets == null) { - // awt.27B=bandOffsets is null - throw new NullPointerException(Messages.getString("awt.27B")); //$NON-NLS-1$ - } - - int minOffset = bandOffsets[0]; - for (int i = 1; i < bandOffsets.length; i++) { - if (bandOffsets[i] < minOffset) { - minOffset = bandOffsets[i]; - } - } - int size = (h - 1) * scanlineStride + w * pixelStride + minOffset; - DataBuffer data = null; - - switch (dataType) { - case DataBuffer.TYPE_BYTE: - data = new DataBufferByte(size); - break; - case DataBuffer.TYPE_USHORT: - data = new DataBufferUShort(size); - break; - } - - return createInterleavedRaster(data, w, h, scanlineStride, pixelStride, bandOffsets, - location); - } - - /** - * Creates a Raster object with a PixelInterleavedSampleModel and the - * specified data type. The Data type can be one of the following values: - * TYPE_BYTE, TYPE_USHORT, or TYPE_INT. - * - * @param dataType - * the data type of samples: TYPE_BYTE, TYPE_USHORT, or TYPE_INT. - * @param w - * the width of image data. - * @param h - * the height of image data. - * @param bands - * the number of bands. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the WritableRaster. - */ - public static WritableRaster createInterleavedRaster(int dataType, int w, int h, int bands, - Point location) { - - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) { - // awt.276=location.x + w or location.y + h results in integer - // overflow - throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$ - } - - if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT) { - // awt.230=dataType is not one of the supported data types - throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$ - } - - int bandOffsets[] = new int[bands]; - for (int i = 0; i < bands; i++) { - bandOffsets[i] = i; - } - - return createInterleavedRaster(dataType, w, h, w * bands, bands, bandOffsets, location); - } - - /** - * Creates a Raster object with a SinglePixelPackedSampleModel and the - * specified DataBuffer. - * - * @param dataBuffer - * the DataBuffer. - * @param w - * the width of the image data. - * @param h - * the height of the image data. - * @param scanlineStride - * the scanline stride of the image data. - * @param bandMasks - * the band masks. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the WritableRaster. - */ - public static WritableRaster createPackedRaster(DataBuffer dataBuffer, int w, int h, - int scanlineStride, int bandMasks[], Point location) { - if (dataBuffer == null) { - // awt.278=dataBuffer is null - throw new NullPointerException(Messages.getString("awt.278")); //$NON-NLS-1$ - } - - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) { - // awt.276=location.x + w or location.y + h results in integer - // overflow - throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$ - } - - if (bandMasks == null) { - // awt.27C=bandMasks is null - throw new RasterFormatException(Messages.getString("awt.27C")); //$NON-NLS-1$ - } - - if (dataBuffer.getNumBanks() > 1) { - // awt.27A=dataBuffer has more than one bank - throw new RasterFormatException(Messages.getString("awt.27A")); //$NON-NLS-1$ - } - - int dataType = dataBuffer.getDataType(); - if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT - && dataType != DataBuffer.TYPE_INT) { - // awt.230=dataType is not one of the supported data types - throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$ - } - - SinglePixelPackedSampleModel sampleModel = new SinglePixelPackedSampleModel(dataType, w, h, - scanlineStride, bandMasks); - - return new OrdinaryWritableRaster(sampleModel, dataBuffer, location); - } - - /** - * Creates a Raster object with a MultiPixelPackedSampleModel and the - * specified DataBuffer. - * - * @param dataBuffer - * the DataBuffer. - * @param w - * the width of the image data. - * @param h - * the height of the image data. - * @param bitsPerPixel - * the number of bits per pixel. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the WritableRaster. - */ - public static WritableRaster createPackedRaster(DataBuffer dataBuffer, int w, int h, - int bitsPerPixel, Point location) { - - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) { - // awt.276=location.x + w or location.y + h results in integer - // overflow - throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$ - } - - if (dataBuffer == null) { - // awt.278=dataBuffer is null - throw new NullPointerException(Messages.getString("awt.278")); //$NON-NLS-1$ - } - - if (dataBuffer.getNumBanks() > 1) { - // awt.27A=dataBuffer has more than one bank - throw new RasterFormatException(Messages.getString("awt.27A")); //$NON-NLS-1$ - } - - int dataType = dataBuffer.getDataType(); - if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT - && dataType != DataBuffer.TYPE_INT) { - // awt.230=dataType is not one of the supported data types - throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$ - } - - MultiPixelPackedSampleModel sampleModel = new MultiPixelPackedSampleModel(dataType, w, h, - bitsPerPixel); - - return new OrdinaryWritableRaster(sampleModel, dataBuffer, location); - - } - - /** - * Creates a Raster object with a MultiPixelPackedSampleModel and the - * specified DataBuffer. - * - * @param dataType - * the data type of samples: TYPE_BYTE, TYPE_USHORT, or TYPE_INT. - * @param w - * the width of the image data. - * @param h - * the height of the image data. - * @param bands - * the number of bands. - * @param bitsPerBand - * the number of bits per band. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the WritableRaster. - */ - public static WritableRaster createPackedRaster(int dataType, int w, int h, int bands, - int bitsPerBand, Point location) { - - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) { - // awt.276=location.x + w or location.y + h results in integer - // overflow - throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$ - } - - if (bands < 1 || bitsPerBand < 1) { - // awt.27D=bitsPerBand or bands is not greater than zero - throw new IllegalArgumentException(Messages.getString("awt.27D")); //$NON-NLS-1$ - } - - if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT - && dataType != DataBuffer.TYPE_INT) { - // awt.230=dataType is not one of the supported data types - throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$ - } - - if (bitsPerBand * bands > DataBuffer.getDataTypeSize(dataType)) { - // awt.27E=The product of bitsPerBand and bands is greater than the - // number of bits held by dataType - throw new IllegalArgumentException(Messages.getString("awt.27E")); //$NON-NLS-1$ - } - - if (bands > 1) { - - int bandMasks[] = new int[bands]; - int mask = (1 << bitsPerBand) - 1; - - for (int i = 0; i < bands; i++) { - bandMasks[i] = mask << (bitsPerBand * (bands - 1 - i)); - } - - return createPackedRaster(dataType, w, h, bandMasks, location); - } - DataBuffer data = null; - int size = ((bitsPerBand * w + DataBuffer.getDataTypeSize(dataType) - 1) / DataBuffer - .getDataTypeSize(dataType)) - * h; - - switch (dataType) { - case DataBuffer.TYPE_BYTE: - data = new DataBufferByte(size); - break; - case DataBuffer.TYPE_USHORT: - data = new DataBufferUShort(size); - break; - case DataBuffer.TYPE_INT: - data = new DataBufferInt(size); - break; - } - return createPackedRaster(data, w, h, bitsPerBand, location); - } - - /** - * Creates a Raster object with a SinglePixelPackedSampleModel and the - * specified DataBuffer. - * - * @param dataType - * the data type of samples: TYPE_BYTE, TYPE_USHORT, or TYPE_INT. - * @param w - * the width of the image data. - * @param h - * the height of the image data. - * @param bandMasks - * the band masks. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the WritableRaster. - */ - public static WritableRaster createPackedRaster(int dataType, int w, int h, int bandMasks[], - Point location) { - - if (dataType != DataBuffer.TYPE_BYTE && dataType != DataBuffer.TYPE_USHORT - && dataType != DataBuffer.TYPE_INT) { - // awt.230=dataType is not one of the supported data types - throw new IllegalArgumentException(Messages.getString("awt.230")); //$NON-NLS-1$ - } - - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - if ((long)location.x + w > Integer.MAX_VALUE || (long)location.y + h > Integer.MAX_VALUE) { - // awt.276=location.x + w or location.y + h results in integer - // overflow - throw new RasterFormatException(Messages.getString("awt.276")); //$NON-NLS-1$ - } - - if (bandMasks == null) { - // awt.27C=bandMasks is null - throw new NullPointerException(Messages.getString("awt.27C")); //$NON-NLS-1$ - } - - DataBuffer data = null; - - switch (dataType) { - case DataBuffer.TYPE_BYTE: - data = new DataBufferByte(w * h); - break; - case DataBuffer.TYPE_USHORT: - data = new DataBufferUShort(w * h); - break; - case DataBuffer.TYPE_INT: - data = new DataBufferInt(w * h); - break; - } - - return createPackedRaster(data, w, h, w, bandMasks, location); - } - - /** - * Creates a Raster object with the specified DataBuffer and SampleModel. - * - * @param sm - * the specified SampleModel. - * @param db - * the specified DataBuffer. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the Raster. - */ - public static Raster createRaster(SampleModel sm, DataBuffer db, Point location) { - - if (sm == null || db == null) { - // awt.27F=SampleModel or DataBuffer is null - throw new NullPointerException(Messages.getString("awt.27F")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - return new Raster(sm, db, location); - } - - /** - * Creates a WritableRaster with the specified SampleModel and DataBuffer. - * - * @param sm - * the specified SampleModel. - * @param db - * the specified DataBuffer. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the WritableRaster. - */ - public static WritableRaster createWritableRaster(SampleModel sm, DataBuffer db, Point location) { - - if (sm == null || db == null) { - // awt.27F=SampleModel or DataBuffer is null - throw new NullPointerException(Messages.getString("awt.27F")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - return new OrdinaryWritableRaster(sm, db, location); - } - - /** - * Creates a WritableRaster with the specified SampleModel. - * - * @param sm - * the specified SampleModel. - * @param location - * the location which defines the upper left corner of the - * Raster. - * @return the WritableRaster. - */ - public static WritableRaster createWritableRaster(SampleModel sm, Point location) { - - if (sm == null) { - // awt.280=SampleModel is null - throw new NullPointerException(Messages.getString("awt.280")); //$NON-NLS-1$ - } - - if (location == null) { - location = new Point(0, 0); - } - - return createWritableRaster(sm, sm.createDataBuffer(), location); - } - - /** - * Instantiates a new Raster object with the specified SampleModel and - * DataBuffer. - * - * @param sampleModel - * the specified SampleModel. - * @param dataBuffer - * the specified DataBuffer. - * @param origin - * the specified origin. - */ - protected Raster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin) { - - this(sampleModel, dataBuffer, new Rectangle(origin.x, origin.y, sampleModel.getWidth(), - sampleModel.getHeight()), origin, null); - } - - /** - * Instantiates a new Raster object with the specified SampleModel, - * DataBuffer, rectangular region and parent Raster. - * - * @param sampleModel - * the specified SampleModel. - * @param dataBuffer - * the specified DataBuffer. - * @param aRegion - * the a rectangular region which defines the new image bounds. - * @param sampleModelTranslate - * this point defines the translation point from the SampleModel - * coordinates to the new Raster coordinates. - * @param parent - * the parent of this Raster. - */ - protected Raster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion, - Point sampleModelTranslate, Raster parent) { - - if (sampleModel == null || dataBuffer == null || aRegion == null - || sampleModelTranslate == null) { - // awt.281=sampleModel, dataBuffer, aRegion or sampleModelTranslate - // is null - throw new NullPointerException(Messages.getString("awt.281")); //$NON-NLS-1$ - } - - if (aRegion.width <= 0 || aRegion.height <= 0) { - // awt.282=aRegion has width or height less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.282")); //$NON-NLS-1$ - } - - if ((long)aRegion.x + (long)aRegion.width > Integer.MAX_VALUE) { - // awt.283=Overflow X coordinate of Raster - throw new RasterFormatException(Messages.getString("awt.283")); //$NON-NLS-1$ - } - - if ((long)aRegion.y + (long)aRegion.height > Integer.MAX_VALUE) { - // awt.284=Overflow Y coordinate of Raster - throw new RasterFormatException(Messages.getString("awt.284")); //$NON-NLS-1$ - } - - if (sampleModel instanceof ComponentSampleModel) { - validateDataBuffer(dataBuffer, aRegion.width, aRegion.height, - ((ComponentSampleModel)sampleModel).getScanlineStride()); - } else if (sampleModel instanceof MultiPixelPackedSampleModel) { - validateDataBuffer(dataBuffer, aRegion.width, aRegion.height, - ((MultiPixelPackedSampleModel)sampleModel).getScanlineStride()); - } else if (sampleModel instanceof SinglePixelPackedSampleModel) { - validateDataBuffer(dataBuffer, aRegion.width, aRegion.height, - ((SinglePixelPackedSampleModel)sampleModel).getScanlineStride()); - } - - this.sampleModel = sampleModel; - this.dataBuffer = dataBuffer; - this.minX = aRegion.x; - this.minY = aRegion.y; - this.width = aRegion.width; - this.height = aRegion.height; - this.sampleModelTranslateX = sampleModelTranslate.x; - this.sampleModelTranslateY = sampleModelTranslate.y; - this.parent = parent; - this.numBands = sampleModel.getNumBands(); - this.numDataElements = sampleModel.getNumDataElements(); - - } - - /** - * Instantiates a new Raster with the specified SampleModel. - * - * @param sampleModel - * the specified SampleModel. - * @param origin - * the origin. - */ - protected Raster(SampleModel sampleModel, Point origin) { - this(sampleModel, sampleModel.createDataBuffer(), new Rectangle(origin.x, origin.y, - sampleModel.getWidth(), sampleModel.getHeight()), origin, null); - } - - /** - * Creates the child of this Raster by sharing the specified rectangular - * area in this raster. The parentX, parentY, width and height parameters - * specify the rectangular area to be shared. - * - * @param parentX - * the X coordinate of the upper left corner of this Raster. - * @param parentY - * the Y coordinate of the upper left corner of this Raster. - * @param width - * the width of the child area. - * @param height - * the height of the child area. - * @param childMinX - * the X coordinate of child area mapped to the parentX - * coordinate. - * @param childMinY - * the Y coordinate of child area mapped to the parentY - * coordinate. - * @param bandList - * the array of band indices. - * @return the Raster. - */ - public Raster createChild(int parentX, int parentY, int width, int height, int childMinX, - int childMinY, int bandList[]) { - if (width <= 0 || height <= 0) { - // awt.285=Width or Height of child Raster is less than or equal to - // zero - throw new RasterFormatException(Messages.getString("awt.285")); //$NON-NLS-1$ - } - - if (parentX < this.minX || parentX + width > this.minX + this.width) { - // awt.286=parentX disposes outside Raster - throw new RasterFormatException(Messages.getString("awt.286")); //$NON-NLS-1$ - } - - if (parentY < this.minY || parentY + height > this.minY + this.height) { - // awt.287=parentY disposes outside Raster - throw new RasterFormatException(Messages.getString("awt.287")); //$NON-NLS-1$ - } - - if ((long)parentX + width > Integer.MAX_VALUE) { - // awt.288=parentX + width results in integer overflow - throw new RasterFormatException(Messages.getString("awt.288")); //$NON-NLS-1$ - } - - if ((long)parentY + height > Integer.MAX_VALUE) { - // awt.289=parentY + height results in integer overflow - throw new RasterFormatException(Messages.getString("awt.289")); //$NON-NLS-1$ - } - - if ((long)childMinX + width > Integer.MAX_VALUE) { - // awt.28A=childMinX + width results in integer overflow - throw new RasterFormatException(Messages.getString("awt.28A")); //$NON-NLS-1$ - } - - if ((long)childMinY + height > Integer.MAX_VALUE) { - // awt.28B=childMinY + height results in integer overflow - throw new RasterFormatException(Messages.getString("awt.28B")); //$NON-NLS-1$ - } - - SampleModel childModel; - - if (bandList == null) { - childModel = sampleModel; - } else { - childModel = sampleModel.createSubsetSampleModel(bandList); - } - - int childTranslateX = childMinX - parentX; - int childTranslateY = childMinY - parentY; - - return new Raster(childModel, dataBuffer, - new Rectangle(childMinX, childMinY, width, height), new Point(childTranslateX - + sampleModelTranslateX, childTranslateY + sampleModelTranslateY), this); - } - - /** - * Create a compatible WritableRaster with the same parameters as this - * Raster. - * - * @return the WritableRaster. - */ - public WritableRaster createCompatibleWritableRaster() { - return new OrdinaryWritableRaster(sampleModel, new Point(0, 0)); - } - - /** - * Create a compatible WritableRaster with the same parameters as this - * Raster and the specified size. - * - * @param w - * the width of the new WritableRaster. - * @param h - * the height of the new WritableRaster. - * @return the WritableRaster. - */ - public WritableRaster createCompatibleWritableRaster(int w, int h) { - if (w <= 0 || h <= 0) { - // awt.22E=w or h is less than or equal to zero - throw new RasterFormatException(Messages.getString("awt.22E")); //$NON-NLS-1$ - } - - SampleModel sm = sampleModel.createCompatibleSampleModel(w, h); - - return new OrdinaryWritableRaster(sm, new Point(0, 0)); - } - - /** - * Create a compatible WritableRaster with the same parameters as this - * Raster and the specified size and location. - * - * @param x - * the X coordinate of the new WritableRaster. - * @param y - * the Y coordinate of the new WritableRaster. - * @param w - * the width of the new WritableRaster. - * @param h - * the height of the new WritableRaster. - * @return the WritableRaster. - */ - public WritableRaster createCompatibleWritableRaster(int x, int y, int w, int h) { - - WritableRaster raster = createCompatibleWritableRaster(w, h); - - return raster.createWritableChild(0, 0, w, h, x, y, null); - } - - /** - * Create a compatible WritableRaster with the same parameters as this - * Raster and the specified rectangle which determines new WritableRaster's - * location and size. - * - * @param rect - * the specified Rectangle. - * @return the WritableRaster. - */ - public WritableRaster createCompatibleWritableRaster(Rectangle rect) { - if (rect == null) { - // awt.28C=Rect is null - throw new NullPointerException(Messages.getString("awt.28C")); //$NON-NLS-1$ - } - - return createCompatibleWritableRaster(rect.x, rect.y, rect.width, rect.height); - } - - /** - * Creates the translated child of this Raster. The New Raster object is a - * reference to the this Raster with a different location. - * - * @param childMinX - * the X coordinate of the new Raster. - * @param childMinY - * the Y coordinate of the new Raster. - * @return the Raster. - */ - public Raster createTranslatedChild(int childMinX, int childMinY) { - return createChild(minX, minY, width, height, childMinX, childMinY, null); - } - - /** - * Gets the bounds of this Raster as a rectangle. - * - * @return the bounds of this Raster. - */ - public Rectangle getBounds() { - return new Rectangle(minX, minY, width, height); - } - - /** - * Gets the DataBuffer associated with this Raster. - * - * @return the DataBuffer associated with this Raster. - */ - public DataBuffer getDataBuffer() { - return dataBuffer; - } - - /** - * Gets the data elements which represent the pixel data of the specified - * rectangle area as a primitive array. The following image data types are - * supported: DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, - * DataBuffer.TYPE_INT, DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or - * DataBuffer.TYPE_DOUBLE. - * - * @param x - * the X coordinate of the area of pixels. - * @param y - * the Y coordinate of the area of pixels. - * @param w - * the width of the area of pixels. - * @param h - * the height of the area of pixels. - * @param outData - * the resulting array. - * @return the data elements of the specified area of this Raster. - */ - public Object getDataElements(int x, int y, int w, int h, Object outData) { - return sampleModel.getDataElements(x - sampleModelTranslateX, y - sampleModelTranslateY, w, - h, outData, dataBuffer); - } - - /** - * Gets the data elements which represent the specified pixel of this Raster - * as a primitive array. The following image data types are supported: - * DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT, - * DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, or DataBuffer.TYPE_DOUBLE. - * - * @param x - * the X coordinate of the pixel. - * @param y - * the Y coordinate of the pixel. - * @param outData - * the resulting data. - * @return the data elements of the specified pixel of this Raster. - */ - public Object getDataElements(int x, int y, Object outData) { - return sampleModel.getDataElements(x - sampleModelTranslateX, y - sampleModelTranslateY, - outData, dataBuffer); - } - - /** - * Gets the height of this Raster. - * - * @return the height of this Raster. - */ - public final int getHeight() { - return height; - } - - /** - * Gets the minimum X coordinate of this Raster. - * - * @return the minimum X coordinate of this Raster. - */ - public final int getMinX() { - return minX; - } - - /** - * Gets the minimum Y coordinate of this Raster. - * - * @return the minimum Y coordinate of this Raster. - */ - public final int getMinY() { - return minY; - } - - /** - * Gets the number of bands in this Raster. - * - * @return the number of bands in this Raster. - */ - public final int getNumBands() { - return numBands; - } - - /** - * Gets the number of data elements for one pixel. - * - * @return the number of data elements for one pixel. - */ - public final int getNumDataElements() { - return numDataElements; - } - - /** - * Gets the parent Raster for this Raster object. - * - * @return the parent Raster for this Raster object. - */ - public Raster getParent() { - return parent; - } - - /** - * Gets a double array of samples for the specified pixel in this Raster. - * - * @param x - * the pixel's X coordinate. - * @param y - * the pixel's Y coordinate. - * @param dArray - * the double array where result array will be stored. - * @return the double array of samples for the specified pixel in this - * Raster. - */ - public double[] getPixel(int x, int y, double dArray[]) { - return sampleModel.getPixel(x - sampleModelTranslateX, y - sampleModelTranslateY, dArray, - dataBuffer); - } - - /** - * Gets a float array of samples for the specified pixel in this Raster. - * - * @param x - * the pixel's X coordinate. - * @param y - * the pixel's Y coordinate. - * @param fArray - * the float array where the result array will be stored. - * @return the float array of samples for the specified pixel in this - * Raster. - */ - public float[] getPixel(int x, int y, float fArray[]) { - return sampleModel.getPixel(x - sampleModelTranslateX, y - sampleModelTranslateY, fArray, - dataBuffer); - } - - /** - * Gets an integer array of samples for the specified pixel in this Raster. - * - * @param x - * the pixel's X coordinate. - * @param y - * the pixel's Y coordinate. - * @param iArray - * the integer array where the result array will be stored. - * @return the integer array of samples for the specified pixel in this - * Raster. - */ - public int[] getPixel(int x, int y, int iArray[]) { - return sampleModel.getPixel(x - sampleModelTranslateX, y - sampleModelTranslateY, iArray, - dataBuffer); - } - - /** - * Gets an double array of samples for the specified rectangular area of - * pixels in this Raster. - * - * @param x - * the X coordinate of the area of pixels. - * @param y - * the Y coordinate of the area of pixels. - * @param w - * the width of the area of pixels. - * @param h - * the height of the area of pixels. - * @param dArray - * the resulting array. - * @return the double array of samples for the specified rectangular area of - * pixels in this Raster. - */ - public double[] getPixels(int x, int y, int w, int h, double dArray[]) { - return sampleModel.getPixels(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, - dArray, dataBuffer); - } - - /** - * Gets an float array of samples for the specified rectangular area of - * pixels in this Raster. - * - * @param x - * the X coordinate of the area of pixels. - * @param y - * the Y coordinate of the area of pixels. - * @param w - * the width of the area of pixels. - * @param h - * the height of the area of pixels. - * @param fArray - * the resulting array. - * @return the float array of samples for the specified rectangular area of - * pixels in this Raster. - */ - public float[] getPixels(int x, int y, int w, int h, float fArray[]) { - return sampleModel.getPixels(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, - fArray, dataBuffer); - } - - /** - * Gets an integer array of samples for the specified rectangular area of - * pixels in this raster. - * - * @param x - * the X coordinate of the area of pixels. - * @param y - * the Y coordinate of the area of pixels. - * @param w - * the width of pixel's the area of pixels. - * @param h - * the height of pixel's the area of pixels. - * @param iArray - * the resulting array. - * @return the integer array of samples for the specified rectangular area - * of pixels in this Raster. - */ - public int[] getPixels(int x, int y, int w, int h, int iArray[]) { - return sampleModel.getPixels(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, - iArray, dataBuffer); - } - - /** - * Gets the sample for the specified band of the specified pixel as an - * integer. - * - * @param x - * the X coordinate of the pixel. - * @param y - * the Y coordinate of the pixel. - * @param b - * the band. - * @return the sample for the specified band of the specified pixel as an - * integer. - */ - public int getSample(int x, int y, int b) { - return sampleModel.getSample(x - sampleModelTranslateX, y - sampleModelTranslateY, b, - dataBuffer); - } - - /** - * Gets the sample for the specified band of the specified pixel as a - * double. - * - * @param x - * the X coordinate of the pixel. - * @param y - * the Y coordinate of the pixel. - * @param b - * the band. - * @return the sample for the specified band of the specified pixel as a - * double. - */ - public double getSampleDouble(int x, int y, int b) { - return sampleModel.getSampleDouble(x - sampleModelTranslateX, y - sampleModelTranslateY, b, - dataBuffer); - } - - /** - * Gets the sample for the specified band of the specified pixel as a float. - * - * @param x - * the X coordinate of the pixel. - * @param y - * the Y coordinate of the pixel. - * @param b - * the band. - * @return the sample for the specified band of the specified pixel as a - * float. - */ - public float getSampleFloat(int x, int y, int b) { - return sampleModel.getSampleFloat(x - sampleModelTranslateX, y - sampleModelTranslateY, b, - dataBuffer); - } - - /** - * Gets the SampleModel associated with this Raster. - * - * @return the SampleModel associated with this Raster. - */ - public SampleModel getSampleModel() { - return sampleModel; - } - - /** - * Gets the translation of the X coordinate from the SampleModel coordinate - * system to the Rasters's coordinate system. - * - * @return the value of the translation of the X coordinate from the - * SampleModel coordinate system to the Rasters's coordinate system. - */ - public final int getSampleModelTranslateX() { - return sampleModelTranslateX; - } - - /** - * Gets the translation of the Y coordinate from the SampleModel coordinate - * system to the Rasters's coordinate system. - * - * @return the value of the translation of the Y coordinate from the - * SampleModel coordinate system to the Rasters's coordinate system. - */ - public final int getSampleModelTranslateY() { - return sampleModelTranslateY; - } - - /** - * Gets the double array of samples for the specified band of the specified - * rectangular area of pixels in this Raster as a double array. - * - * @param x - * the X coordinate of the rectangular area of pixels. - * @param y - * the Y coordinate of the rectangular area of pixels. - * @param w - * the width of the rectangular area of pixels. - * @param h - * the height of the rectangular area of pixels. - * @param b - * the band. - * @param dArray - * the resulting double array. - * @return the double array of samples for the specified band of the - * specified rectangular area of pixels. - */ - public double[] getSamples(int x, int y, int w, int h, int b, double dArray[]) { - - return sampleModel.getSamples(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, - b, dArray, dataBuffer); - } - - /** - * Gets the float array of samples for the specified band of the specified - * rectangular area of pixels in this Raster as a float array. - * - * @param x - * the X coordinate of the rectangular area of pixels. - * @param y - * the Y coordinate of the rectangular area of pixels. - * @param w - * the width of the rectangular area of pixels. - * @param h - * the height of the rectangular area of pixels. - * @param b - * the band. - * @param fArray - * the resulting float array. - * @return the float array of samples for the specified band of the - * specified rectangular area of pixels. - */ - public float[] getSamples(int x, int y, int w, int h, int b, float fArray[]) { - - return sampleModel.getSamples(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, - b, fArray, dataBuffer); - } - - /** - * Gets the integer array of samples for the specified band of the specified - * rectangular area of pixels in this Raster as a integer array. - * - * @param x - * the X coordinate of the rectangular area of pixels. - * @param y - * the Y coordinate of the rectangular area of pixels. - * @param w - * the width of the rectangular area of pixels. - * @param h - * the height of the rectangular area of pixels. - * @param b - * the band. - * @param iArray - * the resulting integer array. - * @return the integer array of samples for the specified band of the - * specified rectangular area of pixels. - */ - public int[] getSamples(int x, int y, int w, int h, int b, int iArray[]) { - return sampleModel.getSamples(x - sampleModelTranslateX, y - sampleModelTranslateY, w, h, - b, iArray, dataBuffer); - } - - /** - * Gets the transfer type for pixels of this Raster. - * - * @see SampleModel#getTransferType() - * @return the transfer type for pixels of this Raster. - */ - public final int getTransferType() { - return sampleModel.getTransferType(); - } - - /** - * Gets the width of this Raster. - * - * @return the width of this Raster. - */ - public final int getWidth() { - return width; - } - - /** - * Validate data buffer. - * - * @param dataBuffer - * the data buffer. - * @param w - * the w. - * @param h - * the h. - * @param scanlineStride - * the scanline stride. - */ - private static void validateDataBuffer(final DataBuffer dataBuffer, final int w, final int h, - final int scanlineStride) { - if (dataBuffer.getSize() < (scanlineStride * (h - 1) + w - 1)) { - // awt.298=dataBuffer is too small - throw new RasterFormatException(Messages.getString("awt.298")); //$NON-NLS-1$ - } - } -} |