summaryrefslogtreecommitdiffstats
path: root/awt/java/awt/image/Raster.java
diff options
context:
space:
mode:
Diffstat (limited to 'awt/java/awt/image/Raster.java')
-rw-r--r--awt/java/awt/image/Raster.java1515
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$
- }
- }
-}