home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / awt / image / SinglePixelPackedSampleModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.4 KB  |  343 lines

  1. package java.awt.image;
  2.  
  3. public class SinglePixelPackedSampleModel extends SampleModel {
  4.    private int[] bitMasks;
  5.    private int[] bitOffsets;
  6.    private int[] bitSizes;
  7.    private int maxBitSize;
  8.    private int scanlineStride;
  9.  
  10.    private static native void initIDs();
  11.  
  12.    public SinglePixelPackedSampleModel(int var1, int var2, int var3, int[] var4) {
  13.       this(var1, var2, var3, var2, var4);
  14.       if (var1 != 0 && var1 != 1 && var1 != 3) {
  15.          throw new IllegalArgumentException("Unsupported data type " + var1);
  16.       }
  17.    }
  18.  
  19.    public SinglePixelPackedSampleModel(int var1, int var2, int var3, int var4, int[] var5) {
  20.       super(var1, var2, var3, var5.length);
  21.       if (var1 != 0 && var1 != 1 && var1 != 3) {
  22.          throw new IllegalArgumentException("Unsupported data type " + var1);
  23.       } else {
  24.          super.dataType = var1;
  25.          this.bitMasks = (int[])var5.clone();
  26.          this.scanlineStride = var4;
  27.          this.bitOffsets = new int[super.numBands];
  28.          this.bitSizes = new int[super.numBands];
  29.          this.maxBitSize = 0;
  30.  
  31.          for(int var6 = 0; var6 < super.numBands; ++var6) {
  32.             int var7 = 0;
  33.             int var8 = 0;
  34.             int var9 = var5[var6];
  35.             if (var9 != 0) {
  36.                while((var9 & 1) == 0) {
  37.                   var9 >>>= 1;
  38.                   ++var7;
  39.                }
  40.  
  41.                while((var9 & 1) == 1) {
  42.                   var9 >>>= 1;
  43.                   ++var8;
  44.                }
  45.  
  46.                if (var9 != 0) {
  47.                   throw new IllegalArgumentException("Mask " + var5[var6] + " must be contiguous");
  48.                }
  49.             }
  50.  
  51.             this.bitOffsets[var6] = var7;
  52.             this.bitSizes[var6] = var8;
  53.             if (var8 > this.maxBitSize) {
  54.                this.maxBitSize = var8;
  55.             }
  56.          }
  57.  
  58.       }
  59.    }
  60.  
  61.    public int getNumDataElements() {
  62.       return 1;
  63.    }
  64.  
  65.    private long getBufferSize() {
  66.       long var1 = (long)(this.scanlineStride * (super.height - 1) + super.width);
  67.       return var1;
  68.    }
  69.  
  70.    public SampleModel createCompatibleSampleModel(int var1, int var2) {
  71.       SinglePixelPackedSampleModel var3 = new SinglePixelPackedSampleModel(super.dataType, var1, var2, this.bitMasks);
  72.       return var3;
  73.    }
  74.  
  75.    public DataBuffer createDataBuffer() {
  76.       Object var1 = null;
  77.       int var2 = (int)this.getBufferSize();
  78.       switch (super.dataType) {
  79.          case 0:
  80.             var1 = new DataBufferByte(var2);
  81.             break;
  82.          case 1:
  83.             var1 = new DataBufferUShort(var2);
  84.          case 2:
  85.          default:
  86.             break;
  87.          case 3:
  88.             var1 = new DataBufferInt(var2);
  89.       }
  90.  
  91.       return (DataBuffer)var1;
  92.    }
  93.  
  94.    public int[] getSampleSize() {
  95.       int[] var2 = new int[super.numBands];
  96.  
  97.       for(int var3 = 0; var3 < super.numBands; ++var3) {
  98.          var2[var3] = 0;
  99.  
  100.          for(int var1 = this.bitMasks[var3] >>> this.bitOffsets[var3]; (var1 & 1) != 0; var1 >>>= 1) {
  101.             int var10002 = var2[var3]++;
  102.          }
  103.       }
  104.  
  105.       return var2;
  106.    }
  107.  
  108.    public int getSampleSize(int var1) {
  109.       int var2 = 0;
  110.  
  111.       for(int var3 = this.bitMasks[var1] >>> this.bitOffsets[var1]; (var3 & 1) != 0; var3 >>>= 1) {
  112.          ++var2;
  113.       }
  114.  
  115.       return var2;
  116.    }
  117.  
  118.    public int getOffset(int var1, int var2) {
  119.       int var3 = var2 * this.scanlineStride + var1;
  120.       return var3;
  121.    }
  122.  
  123.    public int[] getBitOffsets() {
  124.       return (int[])this.bitOffsets.clone();
  125.    }
  126.  
  127.    public int[] getBitMasks() {
  128.       return (int[])this.bitMasks.clone();
  129.    }
  130.  
  131.    public int getScanlineStride() {
  132.       return this.scanlineStride;
  133.    }
  134.  
  135.    public SampleModel createSubsetSampleModel(int[] var1) {
  136.       if (var1.length > super.numBands) {
  137.          throw new RasterFormatException("There are only " + super.numBands + " bands");
  138.       } else {
  139.          int[] var2 = new int[var1.length];
  140.  
  141.          for(int var3 = 0; var3 < var1.length; ++var3) {
  142.             var2[var3] = this.bitMasks[var1[var3]];
  143.          }
  144.  
  145.          return new SinglePixelPackedSampleModel(super.dataType, super.width, super.height, this.scanlineStride, var2);
  146.       }
  147.    }
  148.  
  149.    public Object getDataElements(int var1, int var2, Object var3, DataBuffer var4) {
  150.       int var5 = ((SampleModel)this).getTransferType();
  151.       switch (var5) {
  152.          case 0:
  153.             byte[] var6;
  154.             if (var3 == null) {
  155.                var6 = new byte[1];
  156.             } else {
  157.                var6 = (byte[])var3;
  158.             }
  159.  
  160.             var6[0] = (byte)var4.getElem(var2 * this.scanlineStride + var1);
  161.             var3 = var6;
  162.             break;
  163.          case 1:
  164.             short[] var7;
  165.             if (var3 == null) {
  166.                var7 = new short[1];
  167.             } else {
  168.                var7 = (short[])var3;
  169.             }
  170.  
  171.             var7[0] = (short)var4.getElem(var2 * this.scanlineStride + var1);
  172.             var3 = var7;
  173.          case 2:
  174.          default:
  175.             break;
  176.          case 3:
  177.             int[] var8;
  178.             if (var3 == null) {
  179.                var8 = new int[1];
  180.             } else {
  181.                var8 = (int[])var3;
  182.             }
  183.  
  184.             var8[0] = var4.getElem(var2 * this.scanlineStride + var1);
  185.             var3 = var8;
  186.       }
  187.  
  188.       return var3;
  189.    }
  190.  
  191.    public int[] getPixel(int var1, int var2, int[] var3, DataBuffer var4) {
  192.       int[] var5;
  193.       if (var3 == null) {
  194.          var5 = new int[super.numBands];
  195.       } else {
  196.          var5 = var3;
  197.       }
  198.  
  199.       int var6 = var4.getElem(var2 * this.scanlineStride + var1);
  200.  
  201.       for(int var7 = 0; var7 < super.numBands; ++var7) {
  202.          var5[var7] = (var6 & this.bitMasks[var7]) >>> this.bitOffsets[var7];
  203.       }
  204.  
  205.       return var5;
  206.    }
  207.  
  208.    public int[] getPixels(int var1, int var2, int var3, int var4, int[] var5, DataBuffer var6) {
  209.       int[] var7;
  210.       if (var5 != null) {
  211.          var7 = var5;
  212.       } else {
  213.          var7 = new int[var3 * var4 * super.numBands];
  214.       }
  215.  
  216.       int var8 = var2 * this.scanlineStride + var1;
  217.       int var9 = 0;
  218.  
  219.       for(int var10 = 0; var10 < var4; ++var10) {
  220.          for(int var11 = 0; var11 < var3; ++var11) {
  221.             int var12 = var6.getElem(var8 + var11);
  222.  
  223.             for(int var13 = 0; var13 < super.numBands; ++var13) {
  224.                var7[var9++] = (var12 & this.bitMasks[var13]) >>> this.bitOffsets[var13];
  225.             }
  226.          }
  227.  
  228.          var8 += this.scanlineStride;
  229.       }
  230.  
  231.       return var7;
  232.    }
  233.  
  234.    public int getSample(int var1, int var2, int var3, DataBuffer var4) {
  235.       int var5 = var4.getElem(var2 * this.scanlineStride + var1);
  236.       return (var5 & this.bitMasks[var3]) >>> this.bitOffsets[var3];
  237.    }
  238.  
  239.    public int[] getSamples(int var1, int var2, int var3, int var4, int var5, int[] var6, DataBuffer var7) {
  240.       int[] var8;
  241.       if (var6 != null) {
  242.          var8 = var6;
  243.       } else {
  244.          var8 = new int[var3 * var4];
  245.       }
  246.  
  247.       int var9 = var2 * this.scanlineStride + var1;
  248.       int var10 = 0;
  249.  
  250.       for(int var11 = 0; var11 < var4; ++var11) {
  251.          for(int var12 = 0; var12 < var3; ++var12) {
  252.             int var13 = var7.getElem(var9 + var12);
  253.             var8[var10++] = (var13 & this.bitMasks[var5]) >>> this.bitOffsets[var5];
  254.          }
  255.  
  256.          var9 += this.scanlineStride;
  257.       }
  258.  
  259.       return var8;
  260.    }
  261.  
  262.    public void setDataElements(int var1, int var2, Object var3, DataBuffer var4) {
  263.       int var5 = ((SampleModel)this).getTransferType();
  264.       switch (var5) {
  265.          case 0:
  266.             byte[] var6 = (byte[])var3;
  267.             var4.setElem(var2 * this.scanlineStride + var1, var6[0] & 255);
  268.             break;
  269.          case 1:
  270.             short[] var7 = (short[])var3;
  271.             var4.setElem(var2 * this.scanlineStride + var1, var7[0] & '\uffff');
  272.          case 2:
  273.          default:
  274.             break;
  275.          case 3:
  276.             int[] var8 = (int[])var3;
  277.             var4.setElem(var2 * this.scanlineStride + var1, var8[0]);
  278.       }
  279.  
  280.    }
  281.  
  282.    public void setPixel(int var1, int var2, int[] var3, DataBuffer var4) {
  283.       int var5 = 0;
  284.  
  285.       for(int var6 = 0; var6 < super.numBands; ++var6) {
  286.          var5 |= var3[var6] << this.bitOffsets[var6] & this.bitMasks[var6];
  287.       }
  288.  
  289.       var4.setElem(var2 * this.scanlineStride + var1, var5);
  290.    }
  291.  
  292.    public void setPixels(int var1, int var2, int var3, int var4, int[] var5, DataBuffer var6) {
  293.       int var7 = var2 * this.scanlineStride + var1;
  294.       int var8 = 0;
  295.  
  296.       for(int var9 = 0; var9 < var4; ++var9) {
  297.          for(int var10 = 0; var10 < var3; ++var10) {
  298.             int var11 = 0;
  299.  
  300.             for(int var12 = 0; var12 < super.numBands; ++var12) {
  301.                int var13 = var5[var8++];
  302.                var11 |= var13 << this.bitOffsets[var12] & this.bitMasks[var12];
  303.             }
  304.  
  305.             var6.setElem(var7 + var10, var11);
  306.          }
  307.  
  308.          var7 += this.scanlineStride;
  309.       }
  310.  
  311.    }
  312.  
  313.    public void setSample(int var1, int var2, int var3, int var4, DataBuffer var5) {
  314.       int var6 = var5.getElem(var2 * this.scanlineStride + var1);
  315.       var6 &= ~this.bitMasks[var3];
  316.       var6 |= var4 << this.bitOffsets[var3] & this.bitMasks[var3];
  317.       var5.setElem(var2 * this.scanlineStride + var1, var6);
  318.    }
  319.  
  320.    public void setSamples(int var1, int var2, int var3, int var4, int var5, int[] var6, DataBuffer var7) {
  321.       int var8 = var2 * this.scanlineStride + var1;
  322.       int var9 = 0;
  323.  
  324.       for(int var10 = 0; var10 < var4; ++var10) {
  325.          for(int var11 = 0; var11 < var3; ++var11) {
  326.             int var12 = var7.getElem(var8 + var11);
  327.             var12 &= ~this.bitMasks[var5];
  328.             int var13 = var6[var9++];
  329.             var12 |= var13 << this.bitOffsets[var5] & this.bitMasks[var5];
  330.             var7.setElem(var8 + var11, var12);
  331.          }
  332.  
  333.          var8 += this.scanlineStride;
  334.       }
  335.  
  336.    }
  337.  
  338.    static {
  339.       ColorModel.loadLibraries();
  340.       initIDs();
  341.    }
  342. }
  343.