home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.image;
-
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.awt.image.DataBuffer;
- import java.awt.image.DataBufferInt;
- import java.awt.image.Raster;
- import java.awt.image.RasterFormatException;
- import java.awt.image.SampleModel;
- import java.awt.image.SinglePixelPackedSampleModel;
- import java.awt.image.WritableRaster;
-
- public class IntegerInterleavedRaster extends IntegerComponentRaster {
- public IntegerInterleavedRaster(SampleModel var1, Point var2) {
- this(var1, var1.createDataBuffer(), new Rectangle(var2.x, var2.y, var1.getWidth(), var1.getHeight()), var2, (IntegerInterleavedRaster)null);
- }
-
- public IntegerInterleavedRaster(SampleModel var1, DataBuffer var2, Point var3) {
- this(var1, var2, new Rectangle(var3.x, var3.y, var1.getWidth(), var1.getHeight()), var3, (IntegerInterleavedRaster)null);
- }
-
- public IntegerInterleavedRaster(SampleModel var1, DataBuffer var2, Rectangle var3, Point var4, IntegerInterleavedRaster var5) {
- super(var1, var2, var3, var4, var5);
- if (!(var2 instanceof DataBufferInt)) {
- throw new RasterFormatException("IntegerInterleavedRasters must haveinteger DataBuffers");
- } else {
- DataBufferInt var6 = (DataBufferInt)var2;
- super.data = var6.getData();
- if (var1 instanceof SinglePixelPackedSampleModel) {
- SinglePixelPackedSampleModel var7 = (SinglePixelPackedSampleModel)var1;
- super.scanlineStride = var7.getScanlineStride();
- super.pixelStride = 1;
- super.dataOffsets = new int[1];
- super.dataOffsets[0] = ((DataBuffer)var6).getOffset();
- super.bandOffset = super.dataOffsets[0];
- int var8 = var3.x - var4.x;
- int var9 = var3.y - var4.y;
- int[] var10000 = super.dataOffsets;
- var10000[0] += var8 + var9 * super.scanlineStride;
- super.numDataElems = var7.getNumDataElements();
- this.verify(false);
- } else {
- throw new RasterFormatException("IntegerInterleavedRasters must have SinglePixelPackedSampleModel");
- }
- }
- }
-
- public int[] getDataOffsets() {
- return (int[])super.dataOffsets.clone();
- }
-
- public int getDataOffset(int var1) {
- return super.dataOffsets[var1];
- }
-
- public int getScanlineStride() {
- return super.scanlineStride;
- }
-
- public int getPixelStride() {
- return super.pixelStride;
- }
-
- public int[] getDataStorage() {
- return super.data;
- }
-
- public Object getDataElements(int var1, int var2, Object var3) {
- int[] var4;
- if (var3 == null) {
- var4 = new int[1];
- } else {
- var4 = (int[])var3;
- }
-
- int var5 = (var2 - super.minY) * super.scanlineStride + (var1 - super.minX) + super.dataOffsets[0];
- var4[0] = super.data[var5];
- return var4;
- }
-
- public Object getDataElements(int var1, int var2, int var3, int var4, Object var5) {
- int[] var6;
- if (var5 instanceof int[]) {
- var6 = (int[])var5;
- } else {
- var6 = new int[var3 * var4];
- }
-
- int var7 = (var2 - super.minY) * super.scanlineStride + (var1 - super.minX) + super.dataOffsets[0];
- int var8 = 0;
-
- for(int var9 = 0; var9 < var4; ++var9) {
- System.arraycopy(super.data, var7, var6, var8, var3);
- var8 += var3;
- var7 += super.scanlineStride;
- }
-
- return var6;
- }
-
- public void setDataElements(int var1, int var2, Object var3) {
- int[] var4 = (int[])var3;
- int var5 = (var2 - super.minY) * super.scanlineStride + (var1 - super.minX) + super.dataOffsets[0];
- super.data[var5] = var4[0];
- }
-
- public void setDataElements(int var1, int var2, Raster var3) {
- int var4 = var3.getWidth();
- int var5 = var3.getHeight();
- int var6 = var3.getMinX();
- int var7 = var3.getMinY();
- Object var8 = null;
- if (var3 instanceof IntegerInterleavedRaster) {
- IntegerInterleavedRaster var19 = (IntegerInterleavedRaster)var3;
- int[] var16 = var19.getDataStorage();
- int var12 = var19.getScanlineStride();
- int var13 = var19.getDataOffset(0);
- int var14 = var13;
- int var15 = super.dataOffsets[0] + (var2 - super.minY) * super.scanlineStride + (var1 - super.minX);
-
- for(int var18 = 0; var18 < var5; ++var18) {
- System.arraycopy(var16, var14, super.data, var15, var4);
- var14 += var12;
- var15 += super.scanlineStride;
- }
-
- } else {
- boolean var9 = false;
- boolean var10 = false;
- Object var11 = null;
-
- for(int var17 = 0; var17 < var5; ++var17) {
- var11 = var3.getDataElements(var6, var7 + var17, var4, 1, var11);
- this.setDataElements(var1, var2 + var17, var4, 1, var11);
- }
-
- }
- }
-
- public void setDataElements(int var1, int var2, int var3, int var4, Object var5) {
- int[] var6 = (int[])var5;
- int var7 = (var2 - super.minY) * super.scanlineStride + (var1 - super.minX) + super.dataOffsets[0];
- int var8 = 0;
-
- for(int var9 = 0; var9 < var4; ++var9) {
- System.arraycopy(var6, var8, super.data, var7, var3);
- var8 += var3;
- var7 += super.scanlineStride;
- }
-
- }
-
- public WritableRaster createWritableChild(int var1, int var2, int var3, int var4, int var5, int var6, int[] var7) {
- if (var1 < super.minX) {
- throw new RasterFormatException("x lies outside raster");
- } else if (var2 < super.minY) {
- throw new RasterFormatException("y lies outside raster");
- } else if (var1 + var3 > super.width + super.minX) {
- throw new RasterFormatException("(x + width) is outside raster");
- } else if (var2 + var4 > super.height + super.minY) {
- throw new RasterFormatException("(y + height) is outside raster");
- } else {
- SampleModel var8;
- if (var7 != null) {
- var8 = super.sampleModel.createSubsetSampleModel(var7);
- } else {
- var8 = super.sampleModel;
- }
-
- int var9 = var5 - var1;
- int var10 = var6 - var2;
- return new IntegerInterleavedRaster(var8, super.dataBuffer, new Rectangle(var5, var6, var3, var4), new Point(super.sampleModelTranslateX + var9, super.sampleModelTranslateY + var10), this);
- }
- }
-
- public Raster createChild(int var1, int var2, int var3, int var4, int var5, int var6, int[] var7) {
- return this.createWritableChild(var1, var2, var3, var4, var5, var6, var7);
- }
-
- public WritableRaster createCompatibleWritableRaster(int var1, int var2) {
- if (var1 > 0 && var2 > 0) {
- SampleModel var3 = super.sampleModel.createCompatibleSampleModel(var1, var2);
- return new IntegerInterleavedRaster(var3, new Point(0, 0));
- } else {
- throw new RasterFormatException("negative " + (var1 <= 0 ? "width" : "height"));
- }
- }
-
- public WritableRaster createCompatibleWritableRaster() {
- return this.createCompatibleWritableRaster(super.width, super.height);
- }
-
- private void verify(boolean var1) {
- int var2 = 0;
- int var3 = (super.height - 1) * super.scanlineStride + (super.width - 1) + super.dataOffsets[0];
- if (var3 > var2) {
- var2 = var3;
- }
-
- if (super.data.length < var2) {
- throw new RasterFormatException("Data array too small (should be " + var2 + " but is " + super.data.length + " )");
- }
- }
-
- public String toString() {
- return new String("IntegerInterleavedRaster: width = " + super.width + " height = " + super.height + " #Bands = " + super.numBands + " xOff = " + super.sampleModelTranslateX + " yOff = " + super.sampleModelTranslateY + " dataOffset[0] " + super.dataOffsets[0]);
- }
- }
-