home *** CD-ROM | disk | FTP | other *** search
- package java.awt.image;
-
- public class SinglePixelPackedSampleModel extends SampleModel {
- private int[] bitMasks;
- private int[] bitOffsets;
- private int[] bitSizes;
- private int maxBitSize;
- private int scanlineStride;
-
- private static native void initIDs();
-
- public SinglePixelPackedSampleModel(int var1, int var2, int var3, int[] var4) {
- this(var1, var2, var3, var2, var4);
- if (var1 != 0 && var1 != 1 && var1 != 3) {
- throw new IllegalArgumentException("Unsupported data type " + var1);
- }
- }
-
- public SinglePixelPackedSampleModel(int var1, int var2, int var3, int var4, int[] var5) {
- super(var1, var2, var3, var5.length);
- if (var1 != 0 && var1 != 1 && var1 != 3) {
- throw new IllegalArgumentException("Unsupported data type " + var1);
- } else {
- super.dataType = var1;
- this.bitMasks = (int[])var5.clone();
- this.scanlineStride = var4;
- this.bitOffsets = new int[super.numBands];
- this.bitSizes = new int[super.numBands];
- this.maxBitSize = 0;
-
- for(int var6 = 0; var6 < super.numBands; ++var6) {
- int var7 = 0;
- int var8 = 0;
- int var9 = var5[var6];
- if (var9 != 0) {
- while((var9 & 1) == 0) {
- var9 >>>= 1;
- ++var7;
- }
-
- while((var9 & 1) == 1) {
- var9 >>>= 1;
- ++var8;
- }
-
- if (var9 != 0) {
- throw new IllegalArgumentException("Mask " + var5[var6] + " must be contiguous");
- }
- }
-
- this.bitOffsets[var6] = var7;
- this.bitSizes[var6] = var8;
- if (var8 > this.maxBitSize) {
- this.maxBitSize = var8;
- }
- }
-
- }
- }
-
- public int getNumDataElements() {
- return 1;
- }
-
- private long getBufferSize() {
- long var1 = (long)(this.scanlineStride * (super.height - 1) + super.width);
- return var1;
- }
-
- public SampleModel createCompatibleSampleModel(int var1, int var2) {
- SinglePixelPackedSampleModel var3 = new SinglePixelPackedSampleModel(super.dataType, var1, var2, this.bitMasks);
- return var3;
- }
-
- public DataBuffer createDataBuffer() {
- Object var1 = null;
- int var2 = (int)this.getBufferSize();
- switch (super.dataType) {
- case 0:
- var1 = new DataBufferByte(var2);
- break;
- case 1:
- var1 = new DataBufferUShort(var2);
- case 2:
- default:
- break;
- case 3:
- var1 = new DataBufferInt(var2);
- }
-
- return (DataBuffer)var1;
- }
-
- public int[] getSampleSize() {
- int[] var2 = new int[super.numBands];
-
- for(int var3 = 0; var3 < super.numBands; ++var3) {
- var2[var3] = 0;
-
- for(int var1 = this.bitMasks[var3] >>> this.bitOffsets[var3]; (var1 & 1) != 0; var1 >>>= 1) {
- int var10002 = var2[var3]++;
- }
- }
-
- return var2;
- }
-
- public int getSampleSize(int var1) {
- int var2 = 0;
-
- for(int var3 = this.bitMasks[var1] >>> this.bitOffsets[var1]; (var3 & 1) != 0; var3 >>>= 1) {
- ++var2;
- }
-
- return var2;
- }
-
- public int getOffset(int var1, int var2) {
- int var3 = var2 * this.scanlineStride + var1;
- return var3;
- }
-
- public int[] getBitOffsets() {
- return (int[])this.bitOffsets.clone();
- }
-
- public int[] getBitMasks() {
- return (int[])this.bitMasks.clone();
- }
-
- public int getScanlineStride() {
- return this.scanlineStride;
- }
-
- public SampleModel createSubsetSampleModel(int[] var1) {
- if (var1.length > super.numBands) {
- throw new RasterFormatException("There are only " + super.numBands + " bands");
- } else {
- int[] var2 = new int[var1.length];
-
- for(int var3 = 0; var3 < var1.length; ++var3) {
- var2[var3] = this.bitMasks[var1[var3]];
- }
-
- return new SinglePixelPackedSampleModel(super.dataType, super.width, super.height, this.scanlineStride, var2);
- }
- }
-
- public Object getDataElements(int var1, int var2, Object var3, DataBuffer var4) {
- int var5 = ((SampleModel)this).getTransferType();
- switch (var5) {
- case 0:
- byte[] var6;
- if (var3 == null) {
- var6 = new byte[1];
- } else {
- var6 = (byte[])var3;
- }
-
- var6[0] = (byte)var4.getElem(var2 * this.scanlineStride + var1);
- var3 = var6;
- break;
- case 1:
- short[] var7;
- if (var3 == null) {
- var7 = new short[1];
- } else {
- var7 = (short[])var3;
- }
-
- var7[0] = (short)var4.getElem(var2 * this.scanlineStride + var1);
- var3 = var7;
- case 2:
- default:
- break;
- case 3:
- int[] var8;
- if (var3 == null) {
- var8 = new int[1];
- } else {
- var8 = (int[])var3;
- }
-
- var8[0] = var4.getElem(var2 * this.scanlineStride + var1);
- var3 = var8;
- }
-
- return var3;
- }
-
- public int[] getPixel(int var1, int var2, int[] var3, DataBuffer var4) {
- int[] var5;
- if (var3 == null) {
- var5 = new int[super.numBands];
- } else {
- var5 = var3;
- }
-
- int var6 = var4.getElem(var2 * this.scanlineStride + var1);
-
- for(int var7 = 0; var7 < super.numBands; ++var7) {
- var5[var7] = (var6 & this.bitMasks[var7]) >>> this.bitOffsets[var7];
- }
-
- return var5;
- }
-
- public int[] getPixels(int var1, int var2, int var3, int var4, int[] var5, DataBuffer var6) {
- int[] var7;
- if (var5 != null) {
- var7 = var5;
- } else {
- var7 = new int[var3 * var4 * super.numBands];
- }
-
- int var8 = var2 * this.scanlineStride + var1;
- int var9 = 0;
-
- for(int var10 = 0; var10 < var4; ++var10) {
- for(int var11 = 0; var11 < var3; ++var11) {
- int var12 = var6.getElem(var8 + var11);
-
- for(int var13 = 0; var13 < super.numBands; ++var13) {
- var7[var9++] = (var12 & this.bitMasks[var13]) >>> this.bitOffsets[var13];
- }
- }
-
- var8 += this.scanlineStride;
- }
-
- return var7;
- }
-
- public int getSample(int var1, int var2, int var3, DataBuffer var4) {
- int var5 = var4.getElem(var2 * this.scanlineStride + var1);
- return (var5 & this.bitMasks[var3]) >>> this.bitOffsets[var3];
- }
-
- public int[] getSamples(int var1, int var2, int var3, int var4, int var5, int[] var6, DataBuffer var7) {
- int[] var8;
- if (var6 != null) {
- var8 = var6;
- } else {
- var8 = new int[var3 * var4];
- }
-
- int var9 = var2 * this.scanlineStride + var1;
- int var10 = 0;
-
- for(int var11 = 0; var11 < var4; ++var11) {
- for(int var12 = 0; var12 < var3; ++var12) {
- int var13 = var7.getElem(var9 + var12);
- var8[var10++] = (var13 & this.bitMasks[var5]) >>> this.bitOffsets[var5];
- }
-
- var9 += this.scanlineStride;
- }
-
- return var8;
- }
-
- public void setDataElements(int var1, int var2, Object var3, DataBuffer var4) {
- int var5 = ((SampleModel)this).getTransferType();
- switch (var5) {
- case 0:
- byte[] var6 = (byte[])var3;
- var4.setElem(var2 * this.scanlineStride + var1, var6[0] & 255);
- break;
- case 1:
- short[] var7 = (short[])var3;
- var4.setElem(var2 * this.scanlineStride + var1, var7[0] & '\uffff');
- case 2:
- default:
- break;
- case 3:
- int[] var8 = (int[])var3;
- var4.setElem(var2 * this.scanlineStride + var1, var8[0]);
- }
-
- }
-
- public void setPixel(int var1, int var2, int[] var3, DataBuffer var4) {
- int var5 = 0;
-
- for(int var6 = 0; var6 < super.numBands; ++var6) {
- var5 |= var3[var6] << this.bitOffsets[var6] & this.bitMasks[var6];
- }
-
- var4.setElem(var2 * this.scanlineStride + var1, var5);
- }
-
- public void setPixels(int var1, int var2, int var3, int var4, int[] var5, DataBuffer var6) {
- int var7 = var2 * this.scanlineStride + var1;
- int var8 = 0;
-
- for(int var9 = 0; var9 < var4; ++var9) {
- for(int var10 = 0; var10 < var3; ++var10) {
- int var11 = 0;
-
- for(int var12 = 0; var12 < super.numBands; ++var12) {
- int var13 = var5[var8++];
- var11 |= var13 << this.bitOffsets[var12] & this.bitMasks[var12];
- }
-
- var6.setElem(var7 + var10, var11);
- }
-
- var7 += this.scanlineStride;
- }
-
- }
-
- public void setSample(int var1, int var2, int var3, int var4, DataBuffer var5) {
- int var6 = var5.getElem(var2 * this.scanlineStride + var1);
- var6 &= ~this.bitMasks[var3];
- var6 |= var4 << this.bitOffsets[var3] & this.bitMasks[var3];
- var5.setElem(var2 * this.scanlineStride + var1, var6);
- }
-
- public void setSamples(int var1, int var2, int var3, int var4, int var5, int[] var6, DataBuffer var7) {
- int var8 = var2 * this.scanlineStride + var1;
- int var9 = 0;
-
- for(int var10 = 0; var10 < var4; ++var10) {
- for(int var11 = 0; var11 < var3; ++var11) {
- int var12 = var7.getElem(var8 + var11);
- var12 &= ~this.bitMasks[var5];
- int var13 = var6[var9++];
- var12 |= var13 << this.bitOffsets[var5] & this.bitMasks[var5];
- var7.setElem(var8 + var11, var12);
- }
-
- var8 += this.scanlineStride;
- }
-
- }
-
- static {
- ColorModel.loadLibraries();
- initIDs();
- }
- }
-