home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / awt / image / IntegerInterleavedRaster.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.8 KB  |  209 lines

  1. package sun.awt.image;
  2.  
  3. import java.awt.Point;
  4. import java.awt.Rectangle;
  5. import java.awt.image.DataBuffer;
  6. import java.awt.image.DataBufferInt;
  7. import java.awt.image.Raster;
  8. import java.awt.image.RasterFormatException;
  9. import java.awt.image.SampleModel;
  10. import java.awt.image.SinglePixelPackedSampleModel;
  11. import java.awt.image.WritableRaster;
  12.  
  13. public class IntegerInterleavedRaster extends IntegerComponentRaster {
  14.    public IntegerInterleavedRaster(SampleModel var1, Point var2) {
  15.       this(var1, var1.createDataBuffer(), new Rectangle(var2.x, var2.y, var1.getWidth(), var1.getHeight()), var2, (IntegerInterleavedRaster)null);
  16.    }
  17.  
  18.    public IntegerInterleavedRaster(SampleModel var1, DataBuffer var2, Point var3) {
  19.       this(var1, var2, new Rectangle(var3.x, var3.y, var1.getWidth(), var1.getHeight()), var3, (IntegerInterleavedRaster)null);
  20.    }
  21.  
  22.    public IntegerInterleavedRaster(SampleModel var1, DataBuffer var2, Rectangle var3, Point var4, IntegerInterleavedRaster var5) {
  23.       super(var1, var2, var3, var4, var5);
  24.       if (!(var2 instanceof DataBufferInt)) {
  25.          throw new RasterFormatException("IntegerInterleavedRasters must haveinteger DataBuffers");
  26.       } else {
  27.          DataBufferInt var6 = (DataBufferInt)var2;
  28.          super.data = var6.getData();
  29.          if (var1 instanceof SinglePixelPackedSampleModel) {
  30.             SinglePixelPackedSampleModel var7 = (SinglePixelPackedSampleModel)var1;
  31.             super.scanlineStride = var7.getScanlineStride();
  32.             super.pixelStride = 1;
  33.             super.dataOffsets = new int[1];
  34.             super.dataOffsets[0] = ((DataBuffer)var6).getOffset();
  35.             super.bandOffset = super.dataOffsets[0];
  36.             int var8 = var3.x - var4.x;
  37.             int var9 = var3.y - var4.y;
  38.             int[] var10000 = super.dataOffsets;
  39.             var10000[0] += var8 + var9 * super.scanlineStride;
  40.             super.numDataElems = var7.getNumDataElements();
  41.             this.verify(false);
  42.          } else {
  43.             throw new RasterFormatException("IntegerInterleavedRasters must have SinglePixelPackedSampleModel");
  44.          }
  45.       }
  46.    }
  47.  
  48.    public int[] getDataOffsets() {
  49.       return (int[])super.dataOffsets.clone();
  50.    }
  51.  
  52.    public int getDataOffset(int var1) {
  53.       return super.dataOffsets[var1];
  54.    }
  55.  
  56.    public int getScanlineStride() {
  57.       return super.scanlineStride;
  58.    }
  59.  
  60.    public int getPixelStride() {
  61.       return super.pixelStride;
  62.    }
  63.  
  64.    public int[] getDataStorage() {
  65.       return super.data;
  66.    }
  67.  
  68.    public Object getDataElements(int var1, int var2, Object var3) {
  69.       int[] var4;
  70.       if (var3 == null) {
  71.          var4 = new int[1];
  72.       } else {
  73.          var4 = (int[])var3;
  74.       }
  75.  
  76.       int var5 = (var2 - super.minY) * super.scanlineStride + (var1 - super.minX) + super.dataOffsets[0];
  77.       var4[0] = super.data[var5];
  78.       return var4;
  79.    }
  80.  
  81.    public Object getDataElements(int var1, int var2, int var3, int var4, Object var5) {
  82.       int[] var6;
  83.       if (var5 instanceof int[]) {
  84.          var6 = (int[])var5;
  85.       } else {
  86.          var6 = new int[var3 * var4];
  87.       }
  88.  
  89.       int var7 = (var2 - super.minY) * super.scanlineStride + (var1 - super.minX) + super.dataOffsets[0];
  90.       int var8 = 0;
  91.  
  92.       for(int var9 = 0; var9 < var4; ++var9) {
  93.          System.arraycopy(super.data, var7, var6, var8, var3);
  94.          var8 += var3;
  95.          var7 += super.scanlineStride;
  96.       }
  97.  
  98.       return var6;
  99.    }
  100.  
  101.    public void setDataElements(int var1, int var2, Object var3) {
  102.       int[] var4 = (int[])var3;
  103.       int var5 = (var2 - super.minY) * super.scanlineStride + (var1 - super.minX) + super.dataOffsets[0];
  104.       super.data[var5] = var4[0];
  105.    }
  106.  
  107.    public void setDataElements(int var1, int var2, Raster var3) {
  108.       int var4 = var3.getWidth();
  109.       int var5 = var3.getHeight();
  110.       int var6 = var3.getMinX();
  111.       int var7 = var3.getMinY();
  112.       Object var8 = null;
  113.       if (var3 instanceof IntegerInterleavedRaster) {
  114.          IntegerInterleavedRaster var19 = (IntegerInterleavedRaster)var3;
  115.          int[] var16 = var19.getDataStorage();
  116.          int var12 = var19.getScanlineStride();
  117.          int var13 = var19.getDataOffset(0);
  118.          int var14 = var13;
  119.          int var15 = super.dataOffsets[0] + (var2 - super.minY) * super.scanlineStride + (var1 - super.minX);
  120.  
  121.          for(int var18 = 0; var18 < var5; ++var18) {
  122.             System.arraycopy(var16, var14, super.data, var15, var4);
  123.             var14 += var12;
  124.             var15 += super.scanlineStride;
  125.          }
  126.  
  127.       } else {
  128.          boolean var9 = false;
  129.          boolean var10 = false;
  130.          Object var11 = null;
  131.  
  132.          for(int var17 = 0; var17 < var5; ++var17) {
  133.             var11 = var3.getDataElements(var6, var7 + var17, var4, 1, var11);
  134.             this.setDataElements(var1, var2 + var17, var4, 1, var11);
  135.          }
  136.  
  137.       }
  138.    }
  139.  
  140.    public void setDataElements(int var1, int var2, int var3, int var4, Object var5) {
  141.       int[] var6 = (int[])var5;
  142.       int var7 = (var2 - super.minY) * super.scanlineStride + (var1 - super.minX) + super.dataOffsets[0];
  143.       int var8 = 0;
  144.  
  145.       for(int var9 = 0; var9 < var4; ++var9) {
  146.          System.arraycopy(var6, var8, super.data, var7, var3);
  147.          var8 += var3;
  148.          var7 += super.scanlineStride;
  149.       }
  150.  
  151.    }
  152.  
  153.    public WritableRaster createWritableChild(int var1, int var2, int var3, int var4, int var5, int var6, int[] var7) {
  154.       if (var1 < super.minX) {
  155.          throw new RasterFormatException("x lies outside raster");
  156.       } else if (var2 < super.minY) {
  157.          throw new RasterFormatException("y lies outside raster");
  158.       } else if (var1 + var3 > super.width + super.minX) {
  159.          throw new RasterFormatException("(x + width) is outside raster");
  160.       } else if (var2 + var4 > super.height + super.minY) {
  161.          throw new RasterFormatException("(y + height) is outside raster");
  162.       } else {
  163.          SampleModel var8;
  164.          if (var7 != null) {
  165.             var8 = super.sampleModel.createSubsetSampleModel(var7);
  166.          } else {
  167.             var8 = super.sampleModel;
  168.          }
  169.  
  170.          int var9 = var5 - var1;
  171.          int var10 = var6 - var2;
  172.          return new IntegerInterleavedRaster(var8, super.dataBuffer, new Rectangle(var5, var6, var3, var4), new Point(super.sampleModelTranslateX + var9, super.sampleModelTranslateY + var10), this);
  173.       }
  174.    }
  175.  
  176.    public Raster createChild(int var1, int var2, int var3, int var4, int var5, int var6, int[] var7) {
  177.       return this.createWritableChild(var1, var2, var3, var4, var5, var6, var7);
  178.    }
  179.  
  180.    public WritableRaster createCompatibleWritableRaster(int var1, int var2) {
  181.       if (var1 > 0 && var2 > 0) {
  182.          SampleModel var3 = super.sampleModel.createCompatibleSampleModel(var1, var2);
  183.          return new IntegerInterleavedRaster(var3, new Point(0, 0));
  184.       } else {
  185.          throw new RasterFormatException("negative " + (var1 <= 0 ? "width" : "height"));
  186.       }
  187.    }
  188.  
  189.    public WritableRaster createCompatibleWritableRaster() {
  190.       return this.createCompatibleWritableRaster(super.width, super.height);
  191.    }
  192.  
  193.    private void verify(boolean var1) {
  194.       int var2 = 0;
  195.       int var3 = (super.height - 1) * super.scanlineStride + (super.width - 1) + super.dataOffsets[0];
  196.       if (var3 > var2) {
  197.          var2 = var3;
  198.       }
  199.  
  200.       if (super.data.length < var2) {
  201.          throw new RasterFormatException("Data array too small (should be " + var2 + " but is " + super.data.length + " )");
  202.       }
  203.    }
  204.  
  205.    public String toString() {
  206.       return new String("IntegerInterleavedRaster: width = " + super.width + " height = " + super.height + " #Bands = " + super.numBands + " xOff = " + super.sampleModelTranslateX + " yOff = " + super.sampleModelTranslateY + " dataOffset[0] " + super.dataOffsets[0]);
  207.    }
  208. }
  209.